blob: 2b0a32ea3e48a6c154af66ce84bc7b3be64e698f [file] [log] [blame]
Jeff Johnson295189b2012-06-20 16:38:30 -07001/*
Kiet Lam1ed83fc2014-02-19 01:15:45 -08002 * Copyright (c) 2012-2014 The Linux Foundation. All rights reserved.
3 *
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
Kiet Lamaa8e15a2014-02-11 23:30:06 -080048 Copyright (c) 2008 QUALCOMM Incorporated.
49 All Rights Reserved.
50 Qualcomm Confidential and Proprietary
Jeff Johnson295189b2012-06-20 16:38:30 -070051===========================================================================*/
52
53/*===========================================================================
54
55 EDIT HISTORY FOR FILE
56
57
58 This section contains comments describing changes made to the module.
59 Notice that changes are listed in reverse chronological order.
60
61
62 $Header$$DateTime$$Author$
63
64
65 when who what, where, why
66---------- --- --------------------------------------------------------
6710/05/11 hap Adding support for Keep Alive
682010-08-09 lti Created module
69
70===========================================================================*/
71
72/*----------------------------------------------------------------------------
73 * Include Files
74 * -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070075#include "wlan_qct_wdi.h"
76#include "wlan_qct_wdi_i.h"
77#include "wlan_qct_wdi_sta.h"
78#include "wlan_qct_wdi_dp.h"
Jeff Johnson295189b2012-06-20 16:38:30 -070079
Jeff Johnsone7245742012-09-05 17:12:55 -070080#include "wlan_qct_wdi_cts.h"
Jeff Johnson295189b2012-06-20 16:38:30 -070081
82#include "wlan_qct_pal_api.h"
83#include "wlan_qct_pal_type.h"
84#include "wlan_qct_pal_status.h"
85#include "wlan_qct_pal_sync.h"
86#include "wlan_qct_pal_msg.h"
87#include "wlan_qct_pal_trace.h"
88#include "wlan_qct_pal_packet.h"
89
Jeff Johnsone7245742012-09-05 17:12:55 -070090#include "wlan_qct_wdi_dts.h"
Jeff Johnson295189b2012-06-20 16:38:30 -070091
92#include "wlan_hal_msg.h"
93
Jeff Johnson295189b2012-06-20 16:38:30 -070094#include "pttMsgApi.h"
Srikant Kuppa64eae792013-08-29 15:27:56 -070095#include "vos_trace.h"
Jeff Johnson295189b2012-06-20 16:38:30 -070096
97/*===========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070098 WLAN DAL Control Path Internal Data Definitions and Declarations
Jeff Johnson295189b2012-06-20 16:38:30 -070099 ===========================================================================*/
100#define WDI_WCTS_ACTION_TIMEOUT 2000 /* in msec a very high upper limit */
101
Jeff Johnsone7245742012-09-05 17:12:55 -0700102#define MAC_ADDR_ARRAY(a) (a)[0], (a)[1], (a)[2], (a)[3], (a)[4], (a)[5]
103#define MAC_ADDRESS_STR "%02x:%02x:%02x:%02x:%02x:%02x"
104
Yue Mad8cac142013-03-28 11:33:46 -0700105#define FEATURE_NOT_SUPPORTED 127
Jeff Johnson295189b2012-06-20 16:38:30 -0700106
107#ifdef FEATURE_WLAN_SCAN_PNO
108#define WDI_PNO_VERSION_MASK 0x8000
109#endif
110
111/* host capability bitmap global */
Madan Mohan Koyyalamudidfd6aa82012-10-18 20:18:43 -0700112static tWlanFeatCaps *gpHostWlanFeatCaps;
Jeff Johnson295189b2012-06-20 16:38:30 -0700113/* FW capability bitmap global */
Madan Mohan Koyyalamudidfd6aa82012-10-18 20:18:43 -0700114static tWlanFeatCaps *gpFwWlanFeatCaps;
Jeff Johnson295189b2012-06-20 16:38:30 -0700115/* array of features supported. Need to add a new feature
116 * and other two places - wlan_hal_msg.h and halMsg.c (FW file)
117 */
118static placeHolderInCapBitmap supportEnabledFeatures[] =
Mohit Khanna698ba2a2012-12-04 15:08:18 -0800119 {MCC, P2P, DOT11AC, SLM_SESSIONIZATION, DOT11AC_OPMODE
Yathish9f22e662012-12-10 14:21:35 -0800120#ifdef WLAN_SOFTAP_VSTA_FEATURE
Ravi Joshid2ca7c42013-07-23 08:37:49 -0700121 ,SAP32STA //5
Yathish9f22e662012-12-10 14:21:35 -0800122#else
123 ,FEATURE_NOT_SUPPORTED
124#endif
Mohit Khanna698ba2a2012-12-04 15:08:18 -0800125#ifdef FEATURE_WLAN_TDLS
Ravi Joshid2ca7c42013-07-23 08:37:49 -0700126 ,TDLS //6
Yathish9f22e662012-12-10 14:21:35 -0800127#else
128 ,FEATURE_NOT_SUPPORTED
Mohit Khanna698ba2a2012-12-04 15:08:18 -0800129#endif
Ravi Joshid2ca7c42013-07-23 08:37:49 -0700130 ,P2P_GO_NOA_DECOUPLE_INIT_SCAN //7
Yathish9f22e662012-12-10 14:21:35 -0800131#ifdef WLAN_ACTIVEMODE_OFFLOAD_FEATURE
Ravi Joshid2ca7c42013-07-23 08:37:49 -0700132 ,WLANACTIVE_OFFLOAD //8
Yathish9f22e662012-12-10 14:21:35 -0800133#else
134 ,FEATURE_NOT_SUPPORTED
135#endif
Ravi Joshid2ca7c42013-07-23 08:37:49 -0700136 ,FEATURE_NOT_SUPPORTED //9
137 ,FEATURE_NOT_SUPPORTED //10
138 ,FEATURE_NOT_SUPPORTED //11
139 ,FEATURE_NOT_SUPPORTED //12
140 ,FEATURE_NOT_SUPPORTED //13
141 ,FEATURE_NOT_SUPPORTED //14
142 ,FEATURE_NOT_SUPPORTED //15
143 ,FEATURE_NOT_SUPPORTED //16
144 ,FEATURE_NOT_SUPPORTED //17
145 ,FEATURE_NOT_SUPPORTED //18
146 ,FEATURE_NOT_SUPPORTED //19
147 ,FEATURE_NOT_SUPPORTED //20
148 ,FEATURE_NOT_SUPPORTED //21
Yue Ma55855df2013-08-26 10:59:03 -0700149 ,WOW //22
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -0700150#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
Yue Ma55855df2013-08-26 10:59:03 -0700151 ,WLAN_ROAM_SCAN_OFFLOAD //23
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -0700152#else
153 ,FEATURE_NOT_SUPPORTED
154#endif
Ravi Joshid2ca7c42013-07-23 08:37:49 -0700155 ,FEATURE_NOT_SUPPORTED //24
156 ,FEATURE_NOT_SUPPORTED //25
157 ,IBSS_HEARTBEAT_OFFLOAD //26
Yue Ma55855df2013-08-26 10:59:03 -0700158 ,FEATURE_NOT_SUPPORTED //27
159 ,WLAN_PERIODIC_TX_PTRN //28
Madan Mohan Koyyalamudice419872013-09-13 19:36:52 +0530160#ifdef FEATURE_WLAN_TDLS
161 ,ADVANCE_TDLS //29
162#else
163 ,FEATURE_NOT_SUPPORTED //29
164#endif
Kanchanapally, Vidyullathaf9426e52013-12-24 17:28:54 +0530165 ,FEATURE_NOT_SUPPORTED //30
166 ,FW_IN_TX_PATH //31
Sandeep Puligilla60342762014-01-30 21:05:37 +0530167 ,EXTENDED_NSOFFLOAD_SLOT //32
168 ,CH_SWITCH_V1 //33
169 ,HT40_OBSS_SCAN //34
170 ,UPDATE_CHANNEL_LIST //35
Pradeep Reddy POTTETIedaeb5f2014-05-22 23:34:41 +0530171 ,FEATURE_NOT_SUPPORTED //36
172 ,FEATURE_NOT_SUPPORTED //37
173 ,FEATURE_NOT_SUPPORTED //38
174#ifdef FEATURE_WLAN_TDLS
175 ,TDLS_SCAN_COEXISTENCE //39
176#else
177 ,FEATURE_NOT_SUPPORTED //39
178#endif
Dino Mycledf0a5d92014-07-04 09:41:55 +0530179#ifdef WLAN_FEATURE_LINK_LAYER_STATS
180 ,LINK_LAYER_STATS_MEAS //40
181#else
182 ,FEATURE_NOT_SUPPORTED //40
183#endif
Abhishek Singh6927fa02014-06-27 17:19:55 +0530184 ,MU_MIMO //41
Dino Myclee8843b32014-07-04 14:21:45 +0530185#ifdef WLAN_FEATURE_EXTSCAN
186 ,EXTENDED_SCAN //42
187#else
188 ,FEATURE_NOT_SUPPORTED //42
189#endif
Mihir Shetec34258c2014-07-30 17:50:27 +0530190 ,DYNAMIC_WMM_PS //43
Kalikinkar dhara1e83b772014-02-06 12:59:22 -0800191
Siddharth Bhal171788a2014-09-29 21:02:40 +0530192 ,MAC_SPOOFED_SCAN //44
Sachin Ahuja825082e2014-11-25 17:34:36 +0530193 ,FEATURE_NOT_SUPPORTED //45
Srinivas Dasari4dae48f2014-11-26 21:14:16 +0530194 ,DISA //46
Abhishek Singh85b74712014-10-08 11:38:19 +0530195 ,FW_STATS //47
Sachin Ahuja825082e2014-11-25 17:34:36 +0530196 ,WPS_PRBRSP_TMPL //48
Abhishek Singh5fef4042014-11-25 18:33:00 +0530197 ,BCN_IE_FLT_DELTA //49
Kanchanapally, Vidyullathaf9426e52013-12-24 17:28:54 +0530198};
Jeff Johnson295189b2012-06-20 16:38:30 -0700199
200/*--------------------------------------------------------------------------
201 WLAN DAL State Machine
202 --------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700203WPT_STATIC const WDI_MainFsmEntryType wdiMainFSM[WDI_MAX_ST] =
Jeff Johnson295189b2012-06-20 16:38:30 -0700204{
205 /*WDI_INIT_ST*/
206 {{
207 WDI_MainStart, /*WDI_START_EVENT*/
208 NULL, /*WDI_STOP_EVENT*/
209 WDI_MainReqBusy, /*WDI_REQUEST_EVENT*/
210 WDI_MainRspInit, /*WDI_RESPONSE_EVENT*/
211 WDI_MainClose, /*WDI_CLOSE_EVENT*/
212 WDI_MainShutdown /*WDI_SHUTDOWN_EVENT*/
213 }},
214
215 /*WDI_STARTED_ST*/
216 {{
217 WDI_MainStartStarted, /*WDI_START_EVENT*/
218 WDI_MainStopStarted, /*WDI_STOP_EVENT*/
219 WDI_MainReqStarted, /*WDI_REQUEST_EVENT*/
220 WDI_MainRsp, /*WDI_RESPONSE_EVENT*/
221 NULL, /*WDI_CLOSE_EVENT*/
222 WDI_MainShutdown /*WDI_SHUTDOWN_EVENT*/
223 }},
224
225 /*WDI_STOPPED_ST*/
226 {{
227 WDI_MainStart, /*WDI_START_EVENT*/
228 WDI_MainStopStopped, /*WDI_STOP_EVENT*/
229 NULL, /*WDI_REQUEST_EVENT*/
230 WDI_MainRsp, /*WDI_RESPONSE_EVENT*/
231 WDI_MainClose, /*WDI_CLOSE_EVENT*/
Madan Mohan Koyyalamudia2fc6412012-10-21 12:06:12 -0700232 WDI_MainShutdown /*WDI_SHUTDOWN_EVENT*/
Jeff Johnson295189b2012-06-20 16:38:30 -0700233 }},
234
235 /*WDI_BUSY_ST*/
236 {{
237 WDI_MainStartBusy, /*WDI_START_EVENT*/
238 WDI_MainStopBusy, /*WDI_STOP_EVENT*/
239 WDI_MainReqBusy, /*WDI_REQUEST_EVENT*/
240 WDI_MainRsp, /*WDI_RESPONSE_EVENT*/
241 WDI_MainCloseBusy, /*WDI_CLOSE_EVENT*/
242 WDI_MainShutdownBusy /*WDI_SHUTDOWN_EVENT*/
243 }}
244};
245
Jeff Johnsone7245742012-09-05 17:12:55 -0700246/*---------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -0700247 DAL Request Processing Array - the functions in this table will only be
248 called when the processing of the specific request is allowed by the
Jeff Johnsone7245742012-09-05 17:12:55 -0700249 Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -0700250 ---------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700251WDI_ReqProcFuncType pfnReqProcTbl[WDI_MAX_UMAC_IND] =
Jeff Johnson295189b2012-06-20 16:38:30 -0700252{
253 /*INIT*/
254 WDI_ProcessStartReq, /* WDI_START_REQ */
255 WDI_ProcessStopReq, /* WDI_STOP_REQ */
256 WDI_ProcessCloseReq, /* WDI_CLOSE_REQ */
257
258 /*SCAN*/
259 WDI_ProcessInitScanReq, /* WDI_INIT_SCAN_REQ */
260 WDI_ProcessStartScanReq, /* WDI_START_SCAN_REQ */
261 WDI_ProcessEndScanReq, /* WDI_END_SCAN_REQ */
262 WDI_ProcessFinishScanReq, /* WDI_FINISH_SCAN_REQ */
263
264 /*ASSOCIATION*/
265 WDI_ProcessJoinReq, /* WDI_JOIN_REQ */
266 WDI_ProcessConfigBSSReq, /* WDI_CONFIG_BSS_REQ */
267 WDI_ProcessDelBSSReq, /* WDI_DEL_BSS_REQ */
268 WDI_ProcessPostAssocReq, /* WDI_POST_ASSOC_REQ */
269 WDI_ProcessDelSTAReq, /* WDI_DEL_STA_REQ */
270
271 /* Security */
272 WDI_ProcessSetBssKeyReq, /* WDI_SET_BSS_KEY_REQ */
273 WDI_ProcessRemoveBssKeyReq, /* WDI_RMV_BSS_KEY_REQ */
274 WDI_ProcessSetStaKeyReq, /* WDI_SET_STA_KEY_REQ */
275 WDI_ProcessRemoveStaKeyReq, /* WDI_RMV_BSS_KEY_REQ */
276
277 /* QoS and BA APIs */
278 WDI_ProcessAddTSpecReq, /* WDI_ADD_TS_REQ */
279 WDI_ProcessDelTSpecReq, /* WDI_DEL_TS_REQ */
280 WDI_ProcessUpdateEDCAParamsReq, /* WDI_UPD_EDCA_PRMS_REQ */
281 WDI_ProcessAddBASessionReq, /* WDI_ADD_BA_SESSION_REQ */
282 WDI_ProcessDelBAReq, /* WDI_DEL_BA_REQ */
283
284 /* Miscellaneous Control APIs */
285 WDI_ProcessChannelSwitchReq, /* WDI_CH_SWITCH_REQ */
286 WDI_ProcessConfigStaReq, /* WDI_CONFIG_STA_REQ */
287 WDI_ProcessSetLinkStateReq, /* WDI_SET_LINK_ST_REQ */
288 WDI_ProcessGetStatsReq, /* WDI_GET_STATS_REQ */
289 WDI_ProcessUpdateCfgReq, /* WDI_UPDATE_CFG_REQ */
290
291 /*BA APIs*/
292 WDI_ProcessAddBAReq, /* WDI_ADD_BA_REQ */
293 WDI_ProcessTriggerBAReq, /* WDI_TRIGGER_BA_REQ */
294
295 /*Beacon processing APIs*/
296 WDI_ProcessUpdateBeaconParamsReq, /* WDI_UPD_BCON_PRMS_REQ */
297 WDI_ProcessSendBeaconParamsReq, /* WDI_SND_BCON_REQ */
298
299 WDI_ProcessUpdateProbeRspTemplateReq, /* WDI_UPD_PROBE_RSP_TEMPLATE_REQ */
300 WDI_ProcessSetStaBcastKeyReq, /* WDI_SET_STA_BCAST_KEY_REQ */
301 WDI_ProcessRemoveStaBcastKeyReq, /* WDI_RMV_STA_BCAST_KEY_REQ */
302 WDI_ProcessSetMaxTxPowerReq, /*WDI_SET_MAX_TX_POWER_REQ*/
Jeff Johnson295189b2012-06-20 16:38:30 -0700303 WDI_ProcessP2PGONOAReq, /* WDI_P2P_GO_NOTICE_OF_ABSENCE_REQ */
Jeff Johnson295189b2012-06-20 16:38:30 -0700304 /* PowerSave APIs */
305 WDI_ProcessEnterImpsReq, /* WDI_ENTER_IMPS_REQ */
306 WDI_ProcessExitImpsReq, /* WDI_EXIT_IMPS_REQ */
307 WDI_ProcessEnterBmpsReq, /* WDI_ENTER_BMPS_REQ */
308 WDI_ProcessExitBmpsReq, /* WDI_EXIT_BMPS_REQ */
309 WDI_ProcessEnterUapsdReq, /* WDI_ENTER_UAPSD_REQ */
310 WDI_ProcessExitUapsdReq, /* WDI_EXIT_UAPSD_REQ */
311 WDI_ProcessSetUapsdAcParamsReq, /* WDI_SET_UAPSD_PARAM_REQ */
312 WDI_ProcessUpdateUapsdParamsReq, /* WDI_UPDATE_UAPSD_PARAM_REQ */
313 WDI_ProcessConfigureRxpFilterReq, /* WDI_CONFIGURE_RXP_FILTER_REQ */
314 WDI_ProcessSetBeaconFilterReq, /* WDI_SET_BEACON_FILTER_REQ */
315 WDI_ProcessRemBeaconFilterReq, /* WDI_REM_BEACON_FILTER_REQ */
316 WDI_ProcessSetRSSIThresholdsReq, /* WDI_SET_RSSI_THRESHOLDS_REQ */
317 WDI_ProcessHostOffloadReq, /* WDI_HOST_OFFLOAD_REQ */
318 WDI_ProcessWowlAddBcPtrnReq, /* WDI_WOWL_ADD_BC_PTRN_REQ */
319 WDI_ProcessWowlDelBcPtrnReq, /* WDI_WOWL_DEL_BC_PTRN_REQ */
320 WDI_ProcessWowlEnterReq, /* WDI_WOWL_ENTER_REQ */
321 WDI_ProcessWowlExitReq, /* WDI_WOWL_EXIT_REQ */
322 WDI_ProcessConfigureAppsCpuWakeupStateReq, /* WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ */
323 /*NV Download APIs*/
324 WDI_ProcessNvDownloadReq, /* WDI_NV_DOWNLOAD_REQ*/
325 WDI_ProcessFlushAcReq, /* WDI_FLUSH_AC_REQ */
326 WDI_ProcessBtAmpEventReq, /* WDI_BTAMP_EVENT_REQ */
327#ifdef WLAN_FEATURE_VOWIFI_11R
328 WDI_ProcessAggrAddTSpecReq, /* WDI_AGGR_ADD_TS_REQ */
329#else
330 NULL,
331#endif /* WLAN_FEATURE_VOWIFI_11R */
332 WDI_ProcessAddSTASelfReq, /* WDI_ADD_STA_SELF_REQ */
333 WDI_ProcessDelSTASelfReq, /* WDI DEL STA SELF REQ */
Jeff Johnson295189b2012-06-20 16:38:30 -0700334 WDI_ProcessFTMCommandReq, /* WDI_FTM_CMD_REQ */
Jeff Johnsone7245742012-09-05 17:12:55 -0700335
336#ifdef FEATURE_OEM_DATA_SUPPORT
337 WDI_ProcessStartOemDataReq, /*WDI_START_OEM_DATA_REQ*/
338#else
Jeff Johnson295189b2012-06-20 16:38:30 -0700339 NULL,
Jeff Johnsone7245742012-09-05 17:12:55 -0700340#endif /*FEATURE_OEM_DATA_SUPPORT*/
Jeff Johnson295189b2012-06-20 16:38:30 -0700341 WDI_ProcessHostResumeReq, /*WDI_HOST_RESUME_REQ*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700342
343 WDI_ProcessKeepAliveReq, /* WDI_KEEP_ALIVE_REQ */
Jeff Johnson295189b2012-06-20 16:38:30 -0700344
345#ifdef FEATURE_WLAN_SCAN_PNO
346 WDI_ProcessSetPreferredNetworkReq, /* WDI_SET_PREF_NETWORK_REQ */
347 WDI_ProcessSetRssiFilterReq, /* WDI_SET_RSSI_FILTER_REQ */
348 WDI_ProcessUpdateScanParamsReq, /* WDI_UPDATE_SCAN_PARAMS_REQ */
349#else
350 NULL,
351 NULL,
352 NULL,
353#endif /* FEATURE_WLAN_SCAN_PNO */
354
355 WDI_ProcessSetTxPerTrackingReq, /* WDI_SET_TX_PER_TRACKING_REQ */
Jeff Johnsone7245742012-09-05 17:12:55 -0700356
Jeff Johnson295189b2012-06-20 16:38:30 -0700357#ifdef WLAN_FEATURE_PACKET_FILTERING
358 /* WDI_8023_MULTICAST_LIST_REQ */
Jeff Johnsone7245742012-09-05 17:12:55 -0700359 WDI_Process8023MulticastListReq,
Jeff Johnson295189b2012-06-20 16:38:30 -0700360 /* WDI_RECEIVE_FILTER_SET_FILTER_REQ */
Jeff Johnsone7245742012-09-05 17:12:55 -0700361 WDI_ProcessReceiveFilterSetFilterReq,
Jeff Johnson295189b2012-06-20 16:38:30 -0700362 /* WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ */
Jeff Johnsone7245742012-09-05 17:12:55 -0700363 WDI_ProcessFilterMatchCountReq,
Jeff Johnson295189b2012-06-20 16:38:30 -0700364 /* WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ */
Jeff Johnsone7245742012-09-05 17:12:55 -0700365 WDI_ProcessReceiveFilterClearFilterReq,
Jeff Johnson295189b2012-06-20 16:38:30 -0700366#else
367 NULL,
368 NULL,
369 NULL,
370 NULL,
371#endif // WLAN_FEATURE_PACKET_FILTERING
Jeff Johnsone7245742012-09-05 17:12:55 -0700372 WDI_ProcessInitScanReq, /* WDI_INIT_SCAN_CON_REQ */
Jeff Johnson295189b2012-06-20 16:38:30 -0700373 WDI_ProcessHALDumpCmdReq, /*WDI_HAL_DUMP_CMD_REQ */
374 WDI_ProcessShutdownReq, /* WDI_SHUTDOWN_REQ */
375
376 WDI_ProcessSetPowerParamsReq, /*WDI_SET_POWER_PARAMS_REQ*/
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -0800377#ifdef FEATURE_WLAN_ESE
Jeff Johnson295189b2012-06-20 16:38:30 -0700378 WDI_ProcessTSMStatsReq, /* WDI_TSM_STATS_REQ */
379#else
380 NULL,
381#endif
382
383#ifdef WLAN_FEATURE_GTK_OFFLOAD
384 WDI_ProcessGTKOffloadReq, /* WDI_GTK_OFFLOAD_REQ */
385 WDI_ProcessGTKOffloadGetInfoReq, /* WDI_GTK_OFFLOAD_GETINFO_REQ */
386#else
387 NULL,
388 NULL,
389#endif // WLAN_FEATURE_GTK_OFFLOAD
390
391 WDI_ProcessSetTmLevelReq, /*WDI_SET_TM_LEVEL_REQ*/
392 WDI_ProcessFeatureCapsExchangeReq, /* WDI_FEATURE_CAPS_EXCHANGE_REQ */
Mohit Khanna4a70d262012-09-11 16:30:12 -0700393#ifdef WLAN_FEATURE_11AC
394 WDI_ProcessUpdateVHTOpModeReq, /* WDI_UPDATE_VHT_OP_MODE_REQ */
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -0800395#else
396 NULL,
Mohit Khanna4a70d262012-09-11 16:30:12 -0700397#endif
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -0800398#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_ESE || defined(FEATURE_WLAN_LFR)
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -0800399 WDI_ProcessGetRoamRssiReq, /* WDI_GET_ROAM_RSSI_REQ */
400#else
schang86c22c42013-03-13 18:41:24 -0700401 NULL,
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -0800402#endif
schang86c22c42013-03-13 18:41:24 -0700403 WDI_ProcessSetTxPowerReq, /* WDI_SET_TX_POWER_REQ*/
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -0700404#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
Varun Reddy Yeturu920df212013-05-22 08:07:23 -0700405 WDI_ProcessRoamScanOffloadReq, /* WDI_ROAM_SCAN_OFFLOAD_REQ */
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -0700406#else
407 NULL,
408#endif /* WLAN_FEATURE_ROAM_SCAN_OFFLOAD */
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +0530409#ifdef FEATURE_WLAN_TDLS
410 WDI_ProcessTdlsLinkEstablishReq, /* WDI_TDLS_LINK_ESTABLISH_REQ */
411#else
412 NULL,
413#endif
Leo Chang9056f462013-08-01 19:21:11 -0700414#ifdef FEATURE_WLAN_LPHB
415 WDI_ProcessLPHBConfReq, /* WDI_LPHB_CFG_REQ */
416#else
417 NULL,
418#endif /* FEATURE_WLAN_LPHB */
Rajeev79dbe4c2013-10-05 11:03:42 +0530419
420#ifdef FEATURE_WLAN_BATCH_SCAN
421 WDI_ProcessSetBatchScanReq, /* WDI_SET_BATCH_SCAN_REQ */
422#else
423 NULL,
424#endif /* FEATURE_WLAN_BATCH_SCAN */
425
Arif Hussaina5ebce02013-08-09 15:09:58 -0700426 WDI_ProcessSetMaxTxPowerPerBandReq, /* WDI_SET_MAX_TX_POWER_PER_BAND_REQ*/
Manjunathappa Prakash86f78ca2014-02-10 18:09:15 -0800427
428 WDI_ProcessUpdateChannelParamsReq, /* WDI_UPDATE_CHAN_REQ */
c_hpothu92367912014-05-01 15:18:17 +0530429
430 WDI_ProcessGetBcnMissRateReq, /* WDI_GET_BCN_MISS_RATE_REQ */
Sunil Duttbd736ed2014-05-26 21:19:41 +0530431
432#ifdef WLAN_FEATURE_LINK_LAYER_STATS
433 WDI_ProcessLLStatsSetReq, /* WDI_LL_STATS_SET_REQ */
434 WDI_ProcessLLStatsGetReq, /* WDI_LL_STATS_GET_REQ */
435 WDI_ProcessLLStatsClearReq, /* WDI_LL_STATS_CLEAR_REQ */
436#else
437 NULL,
438 NULL,
439 NULL,
440#endif
Dino Mycle41bdc942014-06-10 11:30:24 +0530441#ifdef WLAN_FEATURE_EXTSCAN
442 WDI_ProcessEXTScanStartReq, /* WDI_EXTSCAN_START_REQ */
443 WDI_ProcessEXTScanStopReq, /* WDI_EXTSCAN_STOP_REQ */
444 WDI_ProcessEXTScanGetCachedResultsReq, /* WDI_EXTSCAN_GET_CACHED_RESULTS_REQ */
445 WDI_ProcessEXTScanGetCapabilitiesReq, /* WDI_EXTSCAN_GET_CAPABILITIES_REQ */
446 WDI_ProcessEXTScanSetBSSIDHotlistReq, /* WDI_EXTSCAN_SET_BSSID_HOTLIST_REQ */
447 WDI_ProcessEXTScanResetBSSIDHotlistReq, /* WDI_EXTSCAN_RESET_BSSID_HOTLIST_REQ */
448 WDI_ProcessEXTScanSetSignifRSSIChangeReq, /* WDI_EXTSCAN_SET_SIGNF_RSSI_CHANGE_REQ */
449 WDI_ProcessEXTScanResetSignfRSSIChangeReq, /* WDI_EXTSCAN_RESET_SIGNF_RSSI_CHANGE_REQ */
450#else
451 NULL,
452 NULL,
453 NULL,
454 NULL,
455 NULL,
456 NULL,
457 NULL,
458 NULL,
459#endif /* WLAN_FEATURE_EXTSCAN */
Siddharth Bhal171788a2014-09-29 21:02:40 +0530460 WDI_ProcessSpoofMacAddrReq, /* WDI_SPOOF_MAC_ADDR_REQ */
Abhishek Singh85b74712014-10-08 11:38:19 +0530461
462 WDI_ProcessGetFwStatsReq, /*WDI_GET_FW_STATS_REQ*/
Srinivas Dasari4dae48f2014-11-26 21:14:16 +0530463
464 WDI_ProcessEncryptMsgReq, /* WDI_ENCRYPT_MSG_REQ*/
schang86c22c42013-03-13 18:41:24 -0700465 /*-------------------------------------------------------------------------
466 Indications
467 -------------------------------------------------------------------------*/
Jeff Johnson295189b2012-06-20 16:38:30 -0700468 WDI_ProcessHostSuspendInd, /* WDI_HOST_SUSPEND_IND*/
Madan Mohan Koyyalamudi01cba042013-01-10 21:56:05 -0800469 WDI_ProcessTrafficStatsInd, /* WDI_TRAFFIC_STATS_IND*/
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +0530470 WDI_ProcessDHCPStartInd, /* WDI_DHCP_START_IND*/
471 WDI_ProcessDHCPStopInd, /* WDI_DHCP_STOP_IND*/
Chet Lanctot186b5732013-03-18 10:26:30 -0700472#ifdef WLAN_FEATURE_11W
473 WDI_ProcessExcludeUnencryptInd, /* WDI_EXCLUDE_UNENCRYPTED_IND */
474#else
475 NULL,
476#endif
Yue Mab9c86f42013-08-14 15:59:08 -0700477 WDI_ProcessAddPeriodicTxPtrnInd, /* WDI_ADD_PERIODIC_TX_PATTERN_IND */
478 WDI_ProcessDelPeriodicTxPtrnInd, /* WDI_DEL_PERIODIC_TX_PATTERN_IND */
Rajeev79dbe4c2013-10-05 11:03:42 +0530479#ifdef FEATURE_WLAN_BATCH_SCAN
480 WDI_ProcessStopBatchScanInd, /* WDI_STOP_BATCH_SCAN_IND */
481 WDI_ProcessTriggerBatchScanResultInd, /* WDI_TRIGGER_BATCH_SCAN_RESULT_IND */
482#else
483 NULL,
484 NULL,
485#endif /* FEATURE_WLAN_BATCH_SCAN */
Chittajit Mitraf5413a42013-10-18 14:20:08 -0700486 WDI_ProcessRateUpdateInd, /* WDI_RATE_UPDATE_IND */
Kalikinkar dhara1e83b772014-02-06 12:59:22 -0800487
Sandeep Puligilla8b8b74b2014-02-10 16:39:05 +0530488 WDI_ProcessHT40OBSSScanInd, /*WDI_START_HT40_OBSS_SCAN_IND */
Kalikinkar dhara1e83b772014-02-06 12:59:22 -0800489 WDI_ProcessHT40OBSSStopScanInd, /*WDI_STOP_HT40_OBSS_SCAN_IND */
490
491 WDI_ProcessChannelSwitchReq_V1, /* WDI_CH_SWITCH_REQ_V1*/
Atul Mittalc0f739f2014-07-31 13:47:47 +0530492#ifdef FEATURE_WLAN_TDLS
493 WDI_ProcessTdlsChanSwitchReq, /* WDI_TDLS_CHAN_SWITCH_REQ */
494#else
495 NULL,
496#endif
Sandeep Puligilla8b8b74b2014-02-10 16:39:05 +0530497
Jeff Johnson295189b2012-06-20 16:38:30 -0700498};
499
500
Jeff Johnsone7245742012-09-05 17:12:55 -0700501/*---------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -0700502 DAL Request Processing Array - the functions in this table will only be
503 called when the processing of the specific request is allowed by the
Jeff Johnsone7245742012-09-05 17:12:55 -0700504 Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -0700505 ---------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700506WDI_RspProcFuncType pfnRspProcTbl[WDI_MAX_RESP] =
Jeff Johnson295189b2012-06-20 16:38:30 -0700507{
508 /*INIT*/
509 WDI_ProcessStartRsp, /* WDI_START_RESP */
510 WDI_ProcessStopRsp, /* WDI_STOP_RESP */
511 WDI_ProcessCloseRsp, /* WDI_CLOSE_RESP */
512
513 /*SCAN*/
514 WDI_ProcessInitScanRsp, /* WDI_INIT_SCAN_RESP */
515 WDI_ProcessStartScanRsp, /* WDI_START_SCAN_RESP */
516 WDI_ProcessEndScanRsp, /* WDI_END_SCAN_RESP */
517 WDI_ProcessFinishScanRsp, /* WDI_FINISH_SCAN_RESP */
518
519 /* ASSOCIATION*/
520 WDI_ProcessJoinRsp, /* WDI_JOIN_RESP */
521 WDI_ProcessConfigBSSRsp, /* WDI_CONFIG_BSS_RESP */
522 WDI_ProcessDelBSSRsp, /* WDI_DEL_BSS_RESP */
523 WDI_ProcessPostAssocRsp, /* WDI_POST_ASSOC_RESP */
524 WDI_ProcessDelSTARsp, /* WDI_DEL_STA_RESP */
525
526 /* Security */
527 WDI_ProcessSetBssKeyRsp, /* WDI_SET_BSS_KEY_RESP */
528 WDI_ProcessRemoveBssKeyRsp, /* WDI_RMV_BSS_KEY_RESP */
529 WDI_ProcessSetStaKeyRsp, /* WDI_SET_STA_KEY_RESP */
530 WDI_ProcessRemoveStaKeyRsp, /* WDI_RMV_BSS_KEY_RESP */
531
532 /* QoS and BA APIs */
533 WDI_ProcessAddTSpecRsp, /* WDI_ADD_TS_RESP */
534 WDI_ProcessDelTSpecRsp, /* WDI_DEL_TS_RESP */
535 WDI_ProcessUpdateEDCAParamsRsp, /* WDI_UPD_EDCA_PRMS_RESP */
536 WDI_ProcessAddBASessionRsp, /* WDI_ADD_BA_SESSION_RESP */
537 WDI_ProcessDelBARsp, /* WDI_DEL_BA_RESP */
538
539 /* Miscellaneous Control APIs */
540 WDI_ProcessChannelSwitchRsp, /* WDI_CH_SWITCH_RESP */
541 WDI_ProcessConfigStaRsp, /* WDI_CONFIG_STA_RESP */
542 WDI_ProcessSetLinkStateRsp, /* WDI_SET_LINK_ST_RESP */
543 WDI_ProcessGetStatsRsp, /* WDI_GET_STATS_RESP */
544 WDI_ProcessUpdateCfgRsp, /* WDI_UPDATE_CFG_RESP */
545
546 /* BA APIs*/
547 WDI_ProcessAddBARsp, /* WDI_ADD_BA_RESP */
548 WDI_ProcessTriggerBARsp, /* WDI_TRIGGER_BA_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700549
Jeff Johnson295189b2012-06-20 16:38:30 -0700550 /* IBSS APIs*/
551 WDI_ProcessUpdateBeaconParamsRsp, /* WDI_UPD_BCON_PRMS_RSP */
552 WDI_ProcessSendBeaconParamsRsp, /* WDI_SND_BCON_RSP */
553
554 /*Soft AP APIs*/
555 WDI_ProcessUpdateProbeRspTemplateRsp,/*WDI_UPD_PROBE_RSP_TEMPLATE_RESP */
556 WDI_ProcessSetStaBcastKeyRsp, /*WDI_SET_STA_BCAST_KEY_RESP */
557 WDI_ProcessRemoveStaBcastKeyRsp, /*WDI_RMV_STA_BCAST_KEY_RESP */
558 WDI_ProcessSetMaxTxPowerRsp, /*WDI_SET_MAX_TX_POWER_RESP */
559
560 /* PowerSave APIs */
561 WDI_ProcessEnterImpsRsp, /* WDI_ENTER_IMPS_RESP */
562 WDI_ProcessExitImpsRsp, /* WDI_EXIT_IMPS_RESP */
563 WDI_ProcessEnterBmpsRsp, /* WDI_ENTER_BMPS_RESP */
564 WDI_ProcessExitBmpsRsp, /* WDI_EXIT_BMPS_RESP */
565 WDI_ProcessEnterUapsdRsp, /* WDI_ENTER_UAPSD_RESP */
566 WDI_ProcessExitUapsdRsp, /* WDI_EXIT_UAPSD_RESP */
567 WDI_ProcessSetUapsdAcParamsRsp, /* WDI_SET_UAPSD_PARAM_RESP */
568 WDI_ProcessUpdateUapsdParamsRsp, /* WDI_UPDATE_UAPSD_PARAM_RESP */
569 WDI_ProcessConfigureRxpFilterRsp,/* WDI_CONFIGURE_RXP_FILTER_RESP */
570 WDI_ProcessSetBeaconFilterRsp, /* WDI_SET_BEACON_FILTER_RESP */
571 WDI_ProcessRemBeaconFilterRsp, /* WDI_REM_BEACON_FILTER_RESP */
572 WDI_ProcessSetRSSIThresoldsRsp, /* WDI_SET_RSSI_THRESHOLDS_RESP */
573 WDI_ProcessHostOffloadRsp, /* WDI_HOST_OFFLOAD_RESP */
574 WDI_ProcessWowlAddBcPtrnRsp, /* WDI_WOWL_ADD_BC_PTRN_RESP */
575 WDI_ProcessWowlDelBcPtrnRsp, /* WDI_WOWL_DEL_BC_PTRN_RESP */
576 WDI_ProcessWowlEnterRsp, /* WDI_WOWL_ENTER_RESP */
577 WDI_ProcessWowlExitRsp, /* WDI_WOWL_EXIT_RESP */
578 WDI_ProcessConfigureAppsCpuWakeupStateRsp, /* WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700579
Jeff Johnson295189b2012-06-20 16:38:30 -0700580
581 WDI_ProcessNvDownloadRsp, /* WDI_NV_DOWNLOAD_RESP*/
582
583 WDI_ProcessFlushAcRsp, /* WDI_FLUSH_AC_RESP */
584 WDI_ProcessBtAmpEventRsp, /* WDI_BTAMP_EVENT_RESP */
585#ifdef WLAN_FEATURE_VOWIFI_11R
586 WDI_ProcessAggrAddTSpecRsp, /* WDI_AGGR_ADD_TS_RESP */
587#else
588 NULL,
589#endif /* WLAN_FEATURE_VOWIFI_11R */
590 WDI_ProcessAddSTASelfRsp, /* WDI_ADD_STA_SELF_RESP */
591 WDI_ProcessDelSTASelfRsp, /* WDI_DEL_STA_SELF_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700592#ifdef FEATURE_OEM_DATA_SUPPORT
593 WDI_ProcessStartOemDataRsp, /*WDI_START_OEM_DATA_RESP*/
594#else
Jeff Johnson295189b2012-06-20 16:38:30 -0700595 NULL,
Jeff Johnsone7245742012-09-05 17:12:55 -0700596#endif /*FEATURE_OEM_DATA_SUPPORT*/
Jeff Johnson295189b2012-06-20 16:38:30 -0700597 WDI_ProcessHostResumeRsp, /*WDI_HOST_RESUME_RESP*/
598
Jeff Johnson295189b2012-06-20 16:38:30 -0700599 WDI_ProcessP2PGONOARsp, /*WDI_P2P_GO_NOTICE_OF_ABSENCE_RESP */
Jeff Johnson295189b2012-06-20 16:38:30 -0700600
Jeff Johnson295189b2012-06-20 16:38:30 -0700601 WDI_ProcessFTMCommandRsp, /* WDI_FTM_CMD_RESP */
Jeff Johnson295189b2012-06-20 16:38:30 -0700602
Jeff Johnsone7245742012-09-05 17:12:55 -0700603 WDI_ProcessKeepAliveRsp, /* WDI_KEEP_ALIVE_RESP */
604
Jeff Johnson295189b2012-06-20 16:38:30 -0700605#ifdef FEATURE_WLAN_SCAN_PNO
606 WDI_ProcessSetPreferredNetworkRsp, /* WDI_SET_PREF_NETWORK_RESP */
607 WDI_ProcessSetRssiFilterRsp, /* WDI_SET_RSSI_FILTER_RESP */
608 WDI_ProcessUpdateScanParamsRsp, /* WDI_UPDATE_SCAN_PARAMS_RESP */
609#else
610 NULL,
611 NULL,
612 NULL,
613#endif // FEATURE_WLAN_SCAN_PNO
614
615 WDI_ProcessSetTxPerTrackingRsp, /* WDI_SET_TX_PER_TRACKING_RESP */
Jeff Johnson295189b2012-06-20 16:38:30 -0700616 /*---------------------------------------------------------------------
617 Indications
618 ---------------------------------------------------------------------*/
619#ifdef WLAN_FEATURE_PACKET_FILTERING
620 /* WDI_8023_MULTICAST_LIST_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700621 WDI_Process8023MulticastListRsp,
Jeff Johnson295189b2012-06-20 16:38:30 -0700622 /* WDI_RECEIVE_FILTER_SET_FILTER_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700623 WDI_ProcessReceiveFilterSetFilterRsp,
Jeff Johnson295189b2012-06-20 16:38:30 -0700624 /* WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700625 WDI_ProcessFilterMatchCountRsp,
Jeff Johnson295189b2012-06-20 16:38:30 -0700626 /* WDI_RECEIVE_FILTER_CLEAR_FILTER_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700627 WDI_ProcessReceiveFilterClearFilterRsp,
Jeff Johnson295189b2012-06-20 16:38:30 -0700628#else
629 NULL,
630 NULL,
631 NULL,
632 NULL,
633#endif // WLAN_FEATURE_PACKET_FILTERING
634
635 WDI_ProcessHALDumpCmdRsp, /* WDI_HAL_DUMP_CMD_RESP */
636 WDI_ProcessShutdownRsp, /* WDI_SHUTDOWN_RESP */
637
638 WDI_ProcessSetPowerParamsRsp, /*WDI_SET_POWER_PARAMS_RESP*/
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -0800639#ifdef FEATURE_WLAN_ESE
Jeff Johnson295189b2012-06-20 16:38:30 -0700640 WDI_ProcessTsmStatsRsp, /* WDI_TSM_STATS_RESP */
641#else
642 NULL,
643#endif
644
645#ifdef WLAN_FEATURE_GTK_OFFLOAD
Jeff Johnsone7245742012-09-05 17:12:55 -0700646 WDI_ProcessGtkOffloadRsp, /* WDI_GTK_OFFLOAD_RESP */
647 WDI_ProcessGTKOffloadGetInfoRsp, /* WDI_GTK_OFFLOAD_GETINFO_RESP */
Jeff Johnson295189b2012-06-20 16:38:30 -0700648#else
649 NULL,
650 NULL,
651#endif // WLAN_FEATURE_GTK_OFFLOAD
Jeff Johnsone7245742012-09-05 17:12:55 -0700652 WDI_ProcessSetTmLevelRsp, /* WDI_SET_TM_LEVEL_RESP */
653 WDI_ProcessFeatureCapsExchangeRsp, /* WDI_FEATURE_CAPS_EXCHANGE_RESP */
Mohit Khanna4a70d262012-09-11 16:30:12 -0700654#ifdef WLAN_FEATURE_11AC
655 WDI_ProcessUpdateVHTOpModeRsp, /* WDI_UPDATE_VHT_OP_MODE_RESP */
schang86c22c42013-03-13 18:41:24 -0700656#else
657 NULL,
Mohit Khanna4a70d262012-09-11 16:30:12 -0700658#endif
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -0800659#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_ESE || defined(FEATURE_WLAN_LFR)
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -0800660 WDI_ProcessGetRoamRssiRsp, /* WDI_GET_ROAM_RSSI_RESP */
661#else
662 NULL,
663#endif
schang86c22c42013-03-13 18:41:24 -0700664 WDI_ProcessSetTxPowerRsp, /* WDI_SET_TX_POWER_RESP */
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -0700665#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
Varun Reddy Yeturu920df212013-05-22 08:07:23 -0700666 WDI_ProcessRoamScanOffloadRsp, /* WDI_ROAM_SCAN_OFFLOAD_RESP */
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -0700667#else
668 NULL,
669#endif
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +0530670#ifdef FEATURE_WLAN_TDLS
671 WDI_ProcessLinkEstablishReqRsp, /*WDI_TDLS_LINK_ESTABLISH_REQ_RESP*/
672#else
673 NULL,
674#endif
Leo Chang9056f462013-08-01 19:21:11 -0700675#ifdef FEATURE_WLAN_LPHB
676 WDI_ProcessLphbCfgRsp, /* WDI_LPHB_CFG_RESP */
677#else
678 NULL,
679#endif /* FEATURE_WLAN_LPHB */
Rajeev79dbe4c2013-10-05 11:03:42 +0530680
681#ifdef FEATURE_WLAN_BATCH_SCAN
682 WDI_ProcessSetBatchScanRsp, /* WDI_SET_BATCH_SCAN_RESP */
683#else
684 NULL,
685#endif /*FEATURE_WLAN_BATCH_SCAN*/
Arif Hussain935a8fb2014-01-31 12:12:28 -0800686 WDI_ProcessSetMaxTxPowerPerBandRsp, /* WDI_SET_MAX_TX_POWER_PER_BAND_RSP */
Rajeev79dbe4c2013-10-05 11:03:42 +0530687
c_hpothu92367912014-05-01 15:18:17 +0530688 WDI_ProcessUpdateChanRsp, /* WDI_UPDATE_CHAN_RESP */
Manjunathappa Prakash86f78ca2014-02-10 18:09:15 -0800689
c_hpothu92367912014-05-01 15:18:17 +0530690 WDI_ProcessChannelSwitchRsp_V1, /* WDI_CH_SWITCH_RESP_V1 */
691
692 WDI_ProcessGetBcnMissRateRsp, /*WDI_GET_BCN_MISS_RATE_RSP*/
Kalikinkar dhara1e83b772014-02-06 12:59:22 -0800693
Sunil Duttbd736ed2014-05-26 21:19:41 +0530694
695#ifdef WLAN_FEATURE_LINK_LAYER_STATS
696 WDI_ProcessLLStatsSetRsp, /* WDI_LL_STATS_SET_RSP */
697 WDI_ProcessLLStatsGetRsp, /* WDI_LL_STATS_GET_RSP */
698 WDI_ProcessLLStatsClearRsp, /* WDI_LL_STATS_CLEAR_RSP */
699#else
700 NULL,
701 NULL,
702 NULL,
703#endif
Dino Mycle41bdc942014-06-10 11:30:24 +0530704#ifdef WLAN_FEATURE_EXTSCAN
705 WDI_ProcessEXTScanStartRsp, /* WDI_EXTSCAN_START_RSP */
706 WDI_ProcessEXTScanStopRsp, /* WDI_EXTSCAN_STOP_RSP */
707 WDI_ProcessEXTScanGetCachedResultsRsp, /* WDI_EXTSCAN_GET_CACHED_RESULTS_RSP */
708 WDI_ProcessEXTScanGetCapabilitiesRsp, /* WDI_EXTSCAN_GET_CAPABILITIES_RSP */
709 WDI_ProcessEXTScanSetHotlistBSSIDRsp, /* WDI_EXTSCAN_SET_HOTLIST_BSSID_RSP */
710 WDI_ProcessEXTScanResetHotlistBSSIDRsp, /* WDI_EXTSCAN_RESET_HOTLIST_BSSID_RSP */
711 WDI_ProcessEXTScanSetSignfRSSIChangeRsp, /* WDI_EXTSCAN_SET_SIGNF_RSSI_CHANGE_RSP */
712 WDI_ProcessEXTScanResetSignfRSSIChangeRsp, /* WDI_EXTSCAN_RESET_SIGNF_RSSI_CHANGE_RSP */
713#else
714 NULL,
715 NULL,
716 NULL,
717 NULL,
718 NULL,
719 NULL,
720 NULL,
721 NULL,
722#endif /* WLAN_FEATURE_EXTSCAN */
Siddharth Bhal171788a2014-09-29 21:02:40 +0530723 WDI_ProcessSpoofMacAddrRsp, /* WDI_SPOOF_MAC_ADDR_RSP */
Abhishek Singh85b74712014-10-08 11:38:19 +0530724
725 WDI_ProcessGetFwStatsRsp, /*WDI_GET_FW_STATS_RSP*/
Srinivas Dasari4dae48f2014-11-26 21:14:16 +0530726
727 WDI_ProcessEncryptMsgRsp, /* WDI_ENCRYPT_MSG_RSP*/
Jeff Johnson295189b2012-06-20 16:38:30 -0700728 /*---------------------------------------------------------------------
729 Indications
730 ---------------------------------------------------------------------*/
731 WDI_ProcessLowRSSIInd, /* Just threshold crossing not really low WDI_HAL_RSSI_NOTIFICATION_IND */
732 WDI_ProcessMissedBeaconInd, /* WDI_HAL_MISSED_BEACON_IND */
733 WDI_ProcessUnkAddrFrameInd, /* WDI_HAL_UNKNOWN_ADDR2_FRAME_RX_IND */
734 WDI_ProcessMicFailureInd, /* WDI_HAL_MIC_FAILURE_IND */
735 WDI_ProcessFatalErrorInd, /* WDI_HAL_FATAL_ERROR_IND */
736 WDI_ProcessDelSTAInd, /* WDI_HAL_DEL_STA_IND */
737
738 WDI_ProcessCoexInd, /* WDI_HAL_COEX_IND */
739
740 WDI_ProcessTxCompleteInd, /* WDI_HAL_TX_COMPLETE_IND */
741
Jeff Johnson295189b2012-06-20 16:38:30 -0700742 WDI_ProcessP2pNoaAttrInd, /*WDI_HOST_NOA_ATTR_IND*/
Jeff Johnson295189b2012-06-20 16:38:30 -0700743
744#ifdef FEATURE_WLAN_SCAN_PNO
745 WDI_ProcessPrefNetworkFoundInd, /* WDI_HAL_PREF_NETWORK_FOUND_IND */
746#else
747 NULL,
748#endif // FEATURE_WLAN_SCAN_PNO
749
750#ifdef WLAN_WAKEUP_EVENTS
751 WDI_ProcessWakeReasonInd, /* WDI_WAKE_REASON_IND */
752#else // WLAN_WAKEUP_EVENTS
753 NULL,
754#endif // WLAN_WAKEUP_EVENTS
755
756 WDI_ProcessTxPerHitInd, /* WDI_HAL_TX_PER_HIT_IND */
Viral Modid86bde22012-12-10 13:09:21 -0800757
Viral Modid86bde22012-12-10 13:09:21 -0800758 WDI_ProcessP2pNoaStartInd, /* WDI_NOA_START_IND */
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +0530759#ifdef FEATURE_WLAN_TDLS
760 WDI_ProcessTdlsInd, /* WDI_HAL_TDLS_IND */
761#else
762 NULL,
763#endif
Leo Chang9056f462013-08-01 19:21:11 -0700764
765#ifdef FEATURE_WLAN_LPHB
Leo Changd9df8aa2013-09-26 13:32:26 -0700766 WDI_ProcessLphbInd, /* WDI_HAL_LPHB_IND */
Leo Chang9056f462013-08-01 19:21:11 -0700767#else
768 NULL,
769#endif /* FEATURE_WLAN_LPHB */
Ravi Joshid2ca7c42013-07-23 08:37:49 -0700770
771 WDI_ProcessIbssPeerInactivityInd, /* WDI_HAL_IBSS_PEER_INACTIVITY_IND */
Yue Mab9c86f42013-08-14 15:59:08 -0700772
773 WDI_ProcessPeriodicTxPtrnFwInd, /* WDI_HAL_PERIODIC_TX_PTRN_FW_IND */
Rajeev79dbe4c2013-10-05 11:03:42 +0530774
775#ifdef FEATURE_WLAN_BATCH_SCAN
776 WDI_ProcessBatchScanResultInd, /* WDI_BATCHSCAN_RESULT_IND */
777#else
778 NULL,
779#endif
780
Leo Chang0b0e45a2013-12-15 15:18:55 -0800781#ifdef FEATURE_WLAN_CH_AVOID
782 WDI_ProcessChAvoidInd, /* WDI_LBP_UPDATE_IND_TO_HOST */
783#else
784 NULL,
785#endif /* FEATURE_WLAN_CH_AVOID */
786
Sunil Duttbd736ed2014-05-26 21:19:41 +0530787 WDI_printRegInfo, /* WDI_PRINT_REG_INFO_IND */
788#ifdef WLAN_FEATURE_LINK_LAYER_STATS
789 WDI_ProcessLinkLayerStatsResultsInd, /* WDI_HAL_LL_STATS_RESULTS_IND */
790#else
791 NULL,
792#endif
Dino Mycle41bdc942014-06-10 11:30:24 +0530793#ifdef WLAN_FEATURE_EXTSCAN
794 WDI_ProcessEXTScanProgressInd, /* WDI_HAL_EXTSCAN_PROGRESS_IND */
795 WDI_ProcessEXTScanScanAvailableInd, /* WDI_HAL_EXTSCAN_SCAN_AVAILABLE_IND */
796 WDI_ProcessEXTScanResultInd, /* WDI_HAL_EXTSCAN_RESULT_IND */
797 WDI_ProcessEXTScanBssidHotListResultInd, /* WDI_HAL_EXTSCAN_BSSID_HOTLIST_RESULT_IND */
798 WDI_ProcessEXTScanSignfRssiResultInd, /* WDI_HAL_EXTSCAN_SIG_RSSI_RESULT_IND */
799#else
800 NULL,
801 NULL,
802 NULL,
803 NULL,
804 NULL,
805#endif /* WLAN_FEATURE_EXTSCAN */
Atul Mittalc0f739f2014-07-31 13:47:47 +0530806#ifdef FEATURE_WLAN_TDLS
807 WDI_ProcessChanSwitchReqRsp, /*WDI_TDLS_CHAN_SWITCH_REQ_RESP*/
808#else
809 NULL,
810#endif
Abhishek Singh66c16762014-08-14 19:13:19 +0530811 WDI_delBaInd, /* WDI_HAL_DEL_BA_IND*/
Jeff Johnson295189b2012-06-20 16:38:30 -0700812};
813
814
Jeff Johnsone7245742012-09-05 17:12:55 -0700815/*---------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -0700816 WLAN DAL Global Control Block
817 ---------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700818WDI_ControlBlockType gWDICb;
Jeff Johnson295189b2012-06-20 16:38:30 -0700819static wpt_uint8 gWDIInitialized = eWLAN_PAL_FALSE;
820
Jeff Johnsone7245742012-09-05 17:12:55 -0700821const wpt_uint8 szTransportChName[] = "WLAN_CTRL";
Jeff Johnson295189b2012-06-20 16:38:30 -0700822
823/*Helper routine for retrieving the PAL Context from WDI*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700824WPT_INLINE
Jeff Johnson295189b2012-06-20 16:38:30 -0700825void* WDI_GET_PAL_CTX( void )
826{
Jeff Johnsone7245742012-09-05 17:12:55 -0700827 return gWDICb.pPALContext;
Jeff Johnson295189b2012-06-20 16:38:30 -0700828}/*WDI_GET_PAL_CTX*/
829
Jeff Johnsone7245742012-09-05 17:12:55 -0700830/*============================================================================
Jeff Johnson295189b2012-06-20 16:38:30 -0700831 Helper inline converters
832 ============================================================================*/
833/*Convert WDI driver type into HAL driver type*/
834WPT_STATIC WPT_INLINE WDI_Status
835WDI_HAL_2_WDI_STATUS
836(
837 eHalStatus halStatus
838);
839
840/*Convert WDI request type into HAL request type*/
841WPT_STATIC WPT_INLINE tHalHostMsgType
842WDI_2_HAL_REQ_TYPE
843(
844 WDI_RequestEnumType wdiReqType
845);
846
847/*Convert WDI response type into HAL response type*/
848WPT_STATIC WPT_INLINE WDI_ResponseEnumType
849HAL_2_WDI_RSP_TYPE
850(
851 tHalHostMsgType halMsg
852);
853
854/*Convert WDI driver type into HAL driver type*/
855WPT_STATIC WPT_INLINE tDriverType
856WDI_2_HAL_DRV_TYPE
857(
858 WDI_DriverType wdiDriverType
859);
860
861/*Convert WDI stop reason into HAL stop reason*/
862WPT_STATIC WPT_INLINE tHalStopType
863WDI_2_HAL_STOP_REASON
864(
865 WDI_StopType wdiStopType
866);
867
868/*Convert WDI scan mode type into HAL scan mode type*/
869WPT_STATIC WPT_INLINE eHalSysMode
870WDI_2_HAL_SCAN_MODE
871(
872 WDI_ScanMode wdiScanMode
873);
874
875/*Convert WDI sec ch offset into HAL sec ch offset type*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700876WPT_STATIC WPT_INLINE ePhyChanBondState
Jeff Johnson295189b2012-06-20 16:38:30 -0700877WDI_2_HAL_SEC_CH_OFFSET
878(
879 WDI_HTSecondaryChannelOffset wdiSecChOffset
880);
881
882/*Convert WDI BSS type into HAL BSS type*/
883WPT_STATIC WPT_INLINE tSirBssType
884WDI_2_HAL_BSS_TYPE
885(
886 WDI_BssType wdiBSSType
887);
888
889/*Convert WDI NW type into HAL NW type*/
890WPT_STATIC WPT_INLINE tSirNwType
891WDI_2_HAL_NW_TYPE
892(
893 WDI_NwType wdiNWType
894);
895
896/*Convert WDI chanel bonding type into HAL cb type*/
897WPT_STATIC WPT_INLINE ePhyChanBondState
898WDI_2_HAL_CB_STATE
899(
900 WDI_PhyChanBondState wdiCbState
901);
902
903/*Convert WDI chanel bonding type into HAL cb type*/
904WPT_STATIC WPT_INLINE tSirMacHTOperatingMode
905WDI_2_HAL_HT_OPER_MODE
906(
907 WDI_HTOperatingMode wdiHTOperMode
908);
909
910/*Convert WDI mimo PS type into HAL mimo PS type*/
911WPT_STATIC WPT_INLINE tSirMacHTMIMOPowerSaveState
912WDI_2_HAL_MIMO_PS
913(
914 WDI_HTMIMOPowerSaveState wdiHTOperMode
915);
916
917/*Convert WDI ENC type into HAL ENC type*/
918WPT_STATIC WPT_INLINE tAniEdType
919WDI_2_HAL_ENC_TYPE
920(
921 WDI_EncryptType wdiEncType
922);
923
924/*Convert WDI WEP type into HAL WEP type*/
925WPT_STATIC WPT_INLINE tAniWepType
926WDI_2_HAL_WEP_TYPE
927(
928 WDI_WepType wdiWEPType
929);
930
931/*Convert WDI Link State into HAL Link State*/
932WPT_STATIC WPT_INLINE tSirLinkState
933WDI_2_HAL_LINK_STATE
934(
935 WDI_LinkStateType wdiLinkState
936);
937
Jeff Johnsone7245742012-09-05 17:12:55 -0700938/*Translate a STA Context from WDI into HAL*/
939WPT_STATIC WPT_INLINE
Jeff Johnson295189b2012-06-20 16:38:30 -0700940void
941WDI_CopyWDIStaCtxToHALStaCtx
Jeff Johnsone7245742012-09-05 17:12:55 -0700942(
Jeff Johnson295189b2012-06-20 16:38:30 -0700943 tConfigStaParams* phalConfigSta,
944 WDI_ConfigStaReqInfoType* pwdiConfigSta
945);
Jeff Johnsone7245742012-09-05 17:12:55 -0700946
947/*Translate a Rate set info from WDI into HAL*/
948WPT_STATIC WPT_INLINE void
Jeff Johnson295189b2012-06-20 16:38:30 -0700949WDI_CopyWDIRateSetToHALRateSet
Jeff Johnsone7245742012-09-05 17:12:55 -0700950(
Jeff Johnson295189b2012-06-20 16:38:30 -0700951 tSirMacRateSet* pHalRateSet,
952 WDI_RateSet* pwdiRateSet
953);
954
955/*Translate an EDCA Parameter Record from WDI into HAL*/
956WPT_STATIC WPT_INLINE void
957WDI_CopyWDIEDCAParamsToHALEDCAParams
Jeff Johnsone7245742012-09-05 17:12:55 -0700958(
Jeff Johnson295189b2012-06-20 16:38:30 -0700959 tSirMacEdcaParamRecord* phalEdcaParam,
960 WDI_EdcaParamRecord* pWDIEdcaParam
961);
962
963/*Copy a management frame header from WDI fmt into HAL fmt*/
964WPT_STATIC WPT_INLINE void
965WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr
966(
967 tSirMacMgmtHdr* pmacMgmtHdr,
968 WDI_MacMgmtHdr* pwdiMacMgmtHdr
969);
970
971/*Copy config bss parameters from WDI fmt into HAL fmt*/
972WPT_STATIC WPT_INLINE void
973WDI_CopyWDIConfigBSSToHALConfigBSS
974(
975 tConfigBssParams* phalConfigBSS,
976 WDI_ConfigBSSReqInfoType* pwdiConfigBSS
977);
978
Jeff Johnsone7245742012-09-05 17:12:55 -0700979/*Extract the request CB function and user data from a request structure
Jeff Johnson295189b2012-06-20 16:38:30 -0700980 pointed to by user data */
981WPT_STATIC WPT_INLINE void
982WDI_ExtractRequestCBFromEvent
983(
984 WDI_EventInfoType* pEvent,
Jeff Johnsone7245742012-09-05 17:12:55 -0700985 WDI_ReqStatusCb* ppfnReqCB,
Jeff Johnson295189b2012-06-20 16:38:30 -0700986 void** ppUserData
987);
988
989wpt_uint8
990WDI_FindEmptySession
Jeff Johnsone7245742012-09-05 17:12:55 -0700991(
Jeff Johnson295189b2012-06-20 16:38:30 -0700992 WDI_ControlBlockType* pWDICtx,
993 WDI_BSSSessionType** ppSession
994);
995
996void
997WDI_AddBcastSTAtoSTATable
998(
999 WDI_ControlBlockType* pWDICtx,
1000 WDI_AddStaParams * staParams,
1001 wpt_uint16 usBcastStaIdx
1002);
1003
1004WDI_Status WDI_SendNvBlobReq
Jeff Johnsone7245742012-09-05 17:12:55 -07001005(
Jeff Johnson295189b2012-06-20 16:38:30 -07001006 WDI_ControlBlockType* pWDICtx,
1007 WDI_EventInfoType* pEventData
1008);
1009
1010void
1011WDI_SetPowerStateCb
1012(
1013 wpt_status status,
1014 unsigned int dxePhyAddr,
1015 void *pContext
1016);
1017
Jeff Johnson295189b2012-06-20 16:38:30 -07001018/**
1019 @brief WDI_getReqMsgString prints the WDI request message in string.
Jeff Johnsone7245742012-09-05 17:12:55 -07001020
1021 @param wdiReqMsgId: WDI Message request Id
1022
1023 @see
Jeff Johnson295189b2012-06-20 16:38:30 -07001024 @return Result of the function call
1025*/
1026static char *WDI_getReqMsgString(wpt_uint16 wdiReqMsgId)
1027{
1028 switch (wdiReqMsgId)
1029 {
1030 CASE_RETURN_STRING( WDI_START_REQ );
1031 CASE_RETURN_STRING( WDI_STOP_REQ );
1032 CASE_RETURN_STRING( WDI_CLOSE_REQ );
1033 CASE_RETURN_STRING( WDI_INIT_SCAN_REQ );
1034 CASE_RETURN_STRING( WDI_START_SCAN_REQ );
1035 CASE_RETURN_STRING( WDI_END_SCAN_REQ );
1036 CASE_RETURN_STRING( WDI_FINISH_SCAN_REQ );
1037 CASE_RETURN_STRING( WDI_JOIN_REQ );
1038 CASE_RETURN_STRING( WDI_CONFIG_BSS_REQ );
1039 CASE_RETURN_STRING( WDI_DEL_BSS_REQ );
1040 CASE_RETURN_STRING( WDI_POST_ASSOC_REQ );
1041 CASE_RETURN_STRING( WDI_DEL_STA_REQ );
1042 CASE_RETURN_STRING( WDI_SET_BSS_KEY_REQ );
1043 CASE_RETURN_STRING( WDI_RMV_BSS_KEY_REQ );
1044 CASE_RETURN_STRING( WDI_SET_STA_KEY_REQ );
1045 CASE_RETURN_STRING( WDI_RMV_STA_KEY_REQ );
1046 CASE_RETURN_STRING( WDI_ADD_TS_REQ );
1047 CASE_RETURN_STRING( WDI_DEL_TS_REQ );
1048 CASE_RETURN_STRING( WDI_UPD_EDCA_PRMS_REQ );
1049 CASE_RETURN_STRING( WDI_ADD_BA_SESSION_REQ );
1050 CASE_RETURN_STRING( WDI_DEL_BA_REQ );
1051 CASE_RETURN_STRING( WDI_CH_SWITCH_REQ );
Kalikinkar dhara1e83b772014-02-06 12:59:22 -08001052 CASE_RETURN_STRING( WDI_CH_SWITCH_REQ_V1);
Jeff Johnson295189b2012-06-20 16:38:30 -07001053 CASE_RETURN_STRING( WDI_CONFIG_STA_REQ );
1054 CASE_RETURN_STRING( WDI_SET_LINK_ST_REQ );
1055 CASE_RETURN_STRING( WDI_GET_STATS_REQ );
1056 CASE_RETURN_STRING( WDI_UPDATE_CFG_REQ );
1057 CASE_RETURN_STRING( WDI_ADD_BA_REQ );
1058 CASE_RETURN_STRING( WDI_TRIGGER_BA_REQ );
1059 CASE_RETURN_STRING( WDI_UPD_BCON_PRMS_REQ );
1060 CASE_RETURN_STRING( WDI_SND_BCON_REQ );
1061 CASE_RETURN_STRING( WDI_UPD_PROBE_RSP_TEMPLATE_REQ );
1062 CASE_RETURN_STRING( WDI_SET_STA_BCAST_KEY_REQ );
1063 CASE_RETURN_STRING( WDI_RMV_STA_BCAST_KEY_REQ );
1064 CASE_RETURN_STRING( WDI_SET_MAX_TX_POWER_REQ );
Arif Hussaina5ebce02013-08-09 15:09:58 -07001065 CASE_RETURN_STRING( WDI_SET_MAX_TX_POWER_PER_BAND_REQ );
Jeff Johnson295189b2012-06-20 16:38:30 -07001066 CASE_RETURN_STRING( WDI_P2P_GO_NOTICE_OF_ABSENCE_REQ );
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +05301067#ifdef FEATURE_WLAN_TDLS
1068 CASE_RETURN_STRING( WDI_TDLS_LINK_ESTABLISH_REQ );
Atul Mittalc0f739f2014-07-31 13:47:47 +05301069 CASE_RETURN_STRING( WDI_TDLS_CHAN_SWITCH_REQ );
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +05301070#endif
Jeff Johnson295189b2012-06-20 16:38:30 -07001071 CASE_RETURN_STRING( WDI_ENTER_IMPS_REQ );
1072 CASE_RETURN_STRING( WDI_EXIT_IMPS_REQ );
1073 CASE_RETURN_STRING( WDI_ENTER_BMPS_REQ );
1074 CASE_RETURN_STRING( WDI_EXIT_BMPS_REQ );
1075 CASE_RETURN_STRING( WDI_ENTER_UAPSD_REQ );
1076 CASE_RETURN_STRING( WDI_EXIT_UAPSD_REQ );
1077 CASE_RETURN_STRING( WDI_SET_UAPSD_PARAM_REQ );
1078 CASE_RETURN_STRING( WDI_UPDATE_UAPSD_PARAM_REQ );
1079 CASE_RETURN_STRING( WDI_CONFIGURE_RXP_FILTER_REQ );
1080 CASE_RETURN_STRING( WDI_SET_BEACON_FILTER_REQ);
1081 CASE_RETURN_STRING( WDI_REM_BEACON_FILTER_REQ );
1082 CASE_RETURN_STRING( WDI_SET_RSSI_THRESHOLDS_REQ );
1083 CASE_RETURN_STRING( WDI_HOST_OFFLOAD_REQ );
1084 CASE_RETURN_STRING( WDI_WOWL_ADD_BC_PTRN_REQ );
1085 CASE_RETURN_STRING( WDI_WOWL_DEL_BC_PTRN_REQ );
1086 CASE_RETURN_STRING( WDI_WOWL_ENTER_REQ );
1087 CASE_RETURN_STRING( WDI_WOWL_EXIT_REQ );
1088 CASE_RETURN_STRING( WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ );
1089 CASE_RETURN_STRING( WDI_NV_DOWNLOAD_REQ );
1090 CASE_RETURN_STRING( WDI_FLUSH_AC_REQ );
1091 CASE_RETURN_STRING( WDI_BTAMP_EVENT_REQ );
1092 CASE_RETURN_STRING( WDI_AGGR_ADD_TS_REQ );
1093 CASE_RETURN_STRING( WDI_ADD_STA_SELF_REQ );
1094 CASE_RETURN_STRING( WDI_DEL_STA_SELF_REQ );
1095 CASE_RETURN_STRING( WDI_FTM_CMD_REQ );
Jeff Johnsone7245742012-09-05 17:12:55 -07001096 CASE_RETURN_STRING( WDI_START_OEM_DATA_REQ );
Jeff Johnson295189b2012-06-20 16:38:30 -07001097 CASE_RETURN_STRING( WDI_HOST_RESUME_REQ );
1098 CASE_RETURN_STRING( WDI_KEEP_ALIVE_REQ);
1099 #ifdef FEATURE_WLAN_SCAN_PNO
1100 CASE_RETURN_STRING( WDI_SET_PREF_NETWORK_REQ );
1101 CASE_RETURN_STRING( WDI_SET_RSSI_FILTER_REQ );
1102 CASE_RETURN_STRING( WDI_UPDATE_SCAN_PARAMS_REQ );
1103 #endif
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -07001104#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
Varun Reddy Yeturu920df212013-05-22 08:07:23 -07001105 CASE_RETURN_STRING( WDI_ROAM_SCAN_OFFLOAD_REQ );
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -07001106#endif
Jeff Johnson295189b2012-06-20 16:38:30 -07001107 CASE_RETURN_STRING( WDI_SET_TX_PER_TRACKING_REQ );
1108 CASE_RETURN_STRING( WDI_8023_MULTICAST_LIST_REQ );
1109 CASE_RETURN_STRING( WDI_RECEIVE_FILTER_SET_FILTER_REQ );
1110 CASE_RETURN_STRING( WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ );
1111 CASE_RETURN_STRING( WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ );
1112 CASE_RETURN_STRING( WDI_INIT_SCAN_CON_REQ );
1113 CASE_RETURN_STRING( WDI_HAL_DUMP_CMD_REQ );
1114 CASE_RETURN_STRING( WDI_SHUTDOWN_REQ );
1115 CASE_RETURN_STRING( WDI_SET_POWER_PARAMS_REQ );
c_hpothu92367912014-05-01 15:18:17 +05301116 CASE_RETURN_STRING( WDI_GET_BCN_MISS_RATE_REQ );
Madan Mohan Koyyalamudi01cba042013-01-10 21:56:05 -08001117 CASE_RETURN_STRING( WDI_TRAFFIC_STATS_IND );
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -08001118 CASE_RETURN_STRING( WDI_GET_ROAM_RSSI_REQ );
Chet Lanctot186b5732013-03-18 10:26:30 -07001119#ifdef WLAN_FEATURE_11W
1120 CASE_RETURN_STRING( WDI_EXCLUDE_UNENCRYPTED_IND );
1121#endif
Rajeev79dbe4c2013-10-05 11:03:42 +05301122#ifdef FEATURE_WLAN_BATCH_SCAN
1123 CASE_RETURN_STRING( WDI_SET_BATCH_SCAN_REQ);
1124 CASE_RETURN_STRING( WDI_STOP_BATCH_SCAN_IND );
1125 CASE_RETURN_STRING( WDI_TRIGGER_BATCH_SCAN_RESULT_IND);
1126#endif
Sandeep Puligilla8b8b74b2014-02-10 16:39:05 +05301127 CASE_RETURN_STRING(WDI_START_HT40_OBSS_SCAN_IND);
1128 CASE_RETURN_STRING(WDI_STOP_HT40_OBSS_SCAN_IND);
Manjunathappa Prakash86f78ca2014-02-10 18:09:15 -08001129 CASE_RETURN_STRING(WDI_UPDATE_CHAN_REQ);
Sunil Duttbd736ed2014-05-26 21:19:41 +05301130#ifdef WLAN_FEATURE_LINK_LAYER_STATS
1131 CASE_RETURN_STRING( WDI_LL_STATS_SET_REQ);
1132 CASE_RETURN_STRING( WDI_LL_STATS_GET_REQ);
1133 CASE_RETURN_STRING( WDI_LL_STATS_CLEAR_REQ);
1134#endif
Dino Mycle41bdc942014-06-10 11:30:24 +05301135#ifdef WLAN_FEATURE_EXTSCAN
1136 CASE_RETURN_STRING( WDI_EXTSCAN_START_REQ);
1137 CASE_RETURN_STRING( WDI_EXTSCAN_STOP_REQ);
1138 CASE_RETURN_STRING( WDI_EXTSCAN_GET_CACHED_RESULTS_REQ);
1139 CASE_RETURN_STRING( WDI_EXTSCAN_GET_CAPABILITIES_REQ);
1140 CASE_RETURN_STRING( WDI_EXTSCAN_SET_BSSID_HOTLIST_REQ);
1141 CASE_RETURN_STRING( WDI_EXTSCAN_RESET_BSSID_HOTLIST_REQ);
1142 CASE_RETURN_STRING( WDI_EXTSCAN_SET_SIGNF_RSSI_CHANGE_REQ);
1143 CASE_RETURN_STRING( WDI_EXTSCAN_RESET_SIGNF_RSSI_CHANGE_REQ);
1144#endif /* WLAN_FEATURE_EXTSCAN */
Siddharth Bhal171788a2014-09-29 21:02:40 +05301145 CASE_RETURN_STRING( WDI_SPOOF_MAC_ADDR_REQ);
Abhishek Singh85b74712014-10-08 11:38:19 +05301146 CASE_RETURN_STRING( WDI_GET_FW_STATS_REQ);
Srinivas Dasari4dae48f2014-11-26 21:14:16 +05301147 CASE_RETURN_STRING( WDI_ENCRYPT_MSG_REQ);
Jeff Johnson295189b2012-06-20 16:38:30 -07001148 default:
1149 return "Unknown WDI MessageId";
1150 }
1151}
1152
1153
1154
1155/**
1156 @brief WDI_getRespMsgString prints the WDI resonse message in string.
Jeff Johnsone7245742012-09-05 17:12:55 -07001157
1158 @param wdiRespMsgId: WDI Message response Id
1159
1160 @see
Jeff Johnson295189b2012-06-20 16:38:30 -07001161 @return Result of the function call
1162*/
1163static char *WDI_getRespMsgString(wpt_uint16 wdiRespMsgId)
1164{
1165 switch (wdiRespMsgId)
1166 {
1167 CASE_RETURN_STRING( WDI_START_RESP );
1168 CASE_RETURN_STRING( WDI_STOP_RESP );
1169 CASE_RETURN_STRING( WDI_CLOSE_RESP );
1170 CASE_RETURN_STRING( WDI_INIT_SCAN_RESP );
1171 CASE_RETURN_STRING( WDI_START_SCAN_RESP );
1172 CASE_RETURN_STRING( WDI_END_SCAN_RESP );
1173 CASE_RETURN_STRING( WDI_FINISH_SCAN_RESP );
1174 CASE_RETURN_STRING( WDI_JOIN_RESP );
1175 CASE_RETURN_STRING( WDI_CONFIG_BSS_RESP );
1176 CASE_RETURN_STRING( WDI_DEL_BSS_RESP );
1177 CASE_RETURN_STRING( WDI_POST_ASSOC_RESP );
1178 CASE_RETURN_STRING( WDI_DEL_STA_RESP );
1179 CASE_RETURN_STRING( WDI_SET_BSS_KEY_RESP );
1180 CASE_RETURN_STRING( WDI_RMV_BSS_KEY_RESP );
1181 CASE_RETURN_STRING( WDI_SET_STA_KEY_RESP );
1182 CASE_RETURN_STRING( WDI_RMV_STA_KEY_RESP );
1183 CASE_RETURN_STRING( WDI_ADD_TS_RESP );
1184 CASE_RETURN_STRING( WDI_DEL_TS_RESP );
1185 CASE_RETURN_STRING( WDI_UPD_EDCA_PRMS_RESP );
1186 CASE_RETURN_STRING( WDI_ADD_BA_SESSION_RESP );
1187 CASE_RETURN_STRING( WDI_DEL_BA_RESP );
1188 CASE_RETURN_STRING( WDI_CH_SWITCH_RESP );
1189 CASE_RETURN_STRING( WDI_CONFIG_STA_RESP );
1190 CASE_RETURN_STRING( WDI_SET_LINK_ST_RESP );
1191 CASE_RETURN_STRING( WDI_GET_STATS_RESP );
1192 CASE_RETURN_STRING( WDI_UPDATE_CFG_RESP );
1193 CASE_RETURN_STRING( WDI_ADD_BA_RESP );
1194 CASE_RETURN_STRING( WDI_TRIGGER_BA_RESP );
1195 CASE_RETURN_STRING( WDI_UPD_BCON_PRMS_RESP );
1196 CASE_RETURN_STRING( WDI_SND_BCON_RESP );
1197 CASE_RETURN_STRING( WDI_UPD_PROBE_RSP_TEMPLATE_RESP );
1198 CASE_RETURN_STRING( WDI_SET_STA_BCAST_KEY_RESP );
1199 CASE_RETURN_STRING( WDI_RMV_STA_BCAST_KEY_RESP );
1200 CASE_RETURN_STRING( WDI_SET_MAX_TX_POWER_RESP );
1201 CASE_RETURN_STRING( WDI_P2P_GO_NOTICE_OF_ABSENCE_RESP );
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +05301202#ifdef FEATURE_WLAN_TDLS
1203 CASE_RETURN_STRING( WDI_TDLS_LINK_ESTABLISH_REQ_RESP );
Atul Mittalc0f739f2014-07-31 13:47:47 +05301204 CASE_RETURN_STRING( WDI_TDLS_CHAN_SWITCH_REQ_RESP);
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +05301205 CASE_RETURN_STRING( WDI_HAL_TDLS_IND );
1206#endif
Jeff Johnson295189b2012-06-20 16:38:30 -07001207 CASE_RETURN_STRING( WDI_ENTER_IMPS_RESP );
1208 CASE_RETURN_STRING( WDI_EXIT_IMPS_RESP );
1209 CASE_RETURN_STRING( WDI_ENTER_BMPS_RESP );
1210 CASE_RETURN_STRING( WDI_EXIT_BMPS_RESP );
1211 CASE_RETURN_STRING( WDI_ENTER_UAPSD_RESP );
1212 CASE_RETURN_STRING( WDI_EXIT_UAPSD_RESP );
1213 CASE_RETURN_STRING( WDI_SET_UAPSD_PARAM_RESP );
1214 CASE_RETURN_STRING( WDI_UPDATE_UAPSD_PARAM_RESP );
1215 CASE_RETURN_STRING( WDI_CONFIGURE_RXP_FILTER_RESP );
1216 CASE_RETURN_STRING( WDI_SET_BEACON_FILTER_RESP);
1217 CASE_RETURN_STRING( WDI_REM_BEACON_FILTER_RESP );
1218 CASE_RETURN_STRING( WDI_SET_RSSI_THRESHOLDS_RESP );
1219 CASE_RETURN_STRING( WDI_HOST_OFFLOAD_RESP );
1220 CASE_RETURN_STRING( WDI_WOWL_ADD_BC_PTRN_RESP );
1221 CASE_RETURN_STRING( WDI_WOWL_DEL_BC_PTRN_RESP );
1222 CASE_RETURN_STRING( WDI_WOWL_ENTER_RESP );
1223 CASE_RETURN_STRING( WDI_WOWL_EXIT_RESP );
1224 CASE_RETURN_STRING( WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_RESP );
1225 CASE_RETURN_STRING( WDI_NV_DOWNLOAD_RESP );
1226 CASE_RETURN_STRING( WDI_FLUSH_AC_RESP );
1227 CASE_RETURN_STRING( WDI_BTAMP_EVENT_RESP );
1228 CASE_RETURN_STRING( WDI_AGGR_ADD_TS_RESP );
1229 CASE_RETURN_STRING( WDI_ADD_STA_SELF_RESP );
1230 CASE_RETURN_STRING( WDI_DEL_STA_SELF_RESP );
1231 CASE_RETURN_STRING( WDI_FTM_CMD_RESP );
Jeff Johnsone7245742012-09-05 17:12:55 -07001232 CASE_RETURN_STRING( WDI_START_OEM_DATA_RESP );
Jeff Johnson295189b2012-06-20 16:38:30 -07001233 CASE_RETURN_STRING( WDI_HOST_RESUME_RESP );
1234 CASE_RETURN_STRING( WDI_KEEP_ALIVE_RESP);
1235 #ifdef FEATURE_WLAN_SCAN_PNO
1236 CASE_RETURN_STRING( WDI_SET_PREF_NETWORK_RESP );
1237 CASE_RETURN_STRING( WDI_SET_RSSI_FILTER_RESP );
1238 CASE_RETURN_STRING( WDI_UPDATE_SCAN_PARAMS_RESP );
1239 #endif
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -07001240#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
Varun Reddy Yeturu920df212013-05-22 08:07:23 -07001241 CASE_RETURN_STRING( WDI_ROAM_SCAN_OFFLOAD_RESP );
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -07001242#endif
Jeff Johnson295189b2012-06-20 16:38:30 -07001243 CASE_RETURN_STRING( WDI_SET_TX_PER_TRACKING_RESP );
1244 CASE_RETURN_STRING( WDI_8023_MULTICAST_LIST_RESP );
1245 CASE_RETURN_STRING( WDI_RECEIVE_FILTER_SET_FILTER_RESP );
1246 CASE_RETURN_STRING( WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_RESP );
1247 CASE_RETURN_STRING( WDI_RECEIVE_FILTER_CLEAR_FILTER_RESP );
1248 CASE_RETURN_STRING( WDI_HAL_DUMP_CMD_RESP );
1249 CASE_RETURN_STRING( WDI_SHUTDOWN_RESP );
1250 CASE_RETURN_STRING( WDI_SET_POWER_PARAMS_RESP );
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -08001251 CASE_RETURN_STRING( WDI_GET_ROAM_RSSI_RESP );
Rajeev79dbe4c2013-10-05 11:03:42 +05301252#ifdef FEATURE_WLAN_BATCH_SCAN
1253 CASE_RETURN_STRING( WDI_SET_BATCH_SCAN_RESP);
1254#endif
Manjunathappa Prakash86f78ca2014-02-10 18:09:15 -08001255 CASE_RETURN_STRING( WDI_UPDATE_CHAN_RESP);
Abhishek Singhbe7f93d2014-06-04 10:47:11 +05301256 CASE_RETURN_STRING( WDI_CH_SWITCH_RESP_V1 );
c_hpothu92367912014-05-01 15:18:17 +05301257 CASE_RETURN_STRING( WDI_GET_BCN_MISS_RATE_RSP );
Sunil Duttbd736ed2014-05-26 21:19:41 +05301258#ifdef WLAN_FEATURE_LINK_LAYER_STATS
1259 CASE_RETURN_STRING( WDI_LL_STATS_SET_RSP);
1260 CASE_RETURN_STRING( WDI_LL_STATS_GET_RSP);
1261 CASE_RETURN_STRING( WDI_LL_STATS_CLEAR_RSP);
1262#endif
Dino Mycle41bdc942014-06-10 11:30:24 +05301263#ifdef WLAN_FEATURE_EXTSCAN
1264 CASE_RETURN_STRING( WDI_EXTSCAN_START_RSP);
1265 CASE_RETURN_STRING( WDI_EXTSCAN_STOP_RSP);
1266 CASE_RETURN_STRING( WDI_EXTSCAN_GET_CACHED_RESULTS_RSP);
1267 CASE_RETURN_STRING( WDI_EXTSCAN_GET_CAPABILITIES_RSP);
1268 CASE_RETURN_STRING( WDI_EXTSCAN_SET_HOTLIST_BSSID_RSP);
1269 CASE_RETURN_STRING( WDI_EXTSCAN_RESET_HOTLIST_BSSID_RSP);
1270 CASE_RETURN_STRING( WDI_EXTSCAN_SET_SIGNF_RSSI_CHANGE_RSP);
1271 CASE_RETURN_STRING( WDI_EXTSCAN_RESET_SIGNF_RSSI_CHANGE_RSP);
1272 CASE_RETURN_STRING( WDI_HAL_EXTSCAN_PROGRESS_IND);
1273 CASE_RETURN_STRING( WDI_HAL_EXTSCAN_SCAN_AVAILABLE_IND);
1274 CASE_RETURN_STRING( WDI_HAL_EXTSCAN_RESULT_IND);
1275 CASE_RETURN_STRING( WDI_HAL_EXTSCAN_BSSID_HOTLIST_RESULT_IND);
1276 CASE_RETURN_STRING( WDI_HAL_EXTSCAN_SIG_RSSI_RESULT_IND);
1277
1278#endif /* WLAN_FEATURE_EXTSCAN */
Abhishek Singh85b74712014-10-08 11:38:19 +05301279 CASE_RETURN_STRING( WDI_GET_FW_STATS_RSP);
Srinivas Dasari4dae48f2014-11-26 21:14:16 +05301280 CASE_RETURN_STRING( WDI_ENCRYPT_MSG_RSP);
Jeff Johnson295189b2012-06-20 16:38:30 -07001281 default:
1282 return "Unknown WDI MessageId";
1283 }
1284}
1285
1286/**
Madan Mohan Koyyalamudif8d3b3f2013-07-30 19:10:54 +05301287 @brief WDI_TraceHostFWCapabilities - Parses both host and Firmware
1288 Capability bitmap array.
Abhishek Singh08b60122014-02-04 18:05:23 +05301289 @param capabilityBitmap - Base address of a 4 element Bitmap array
1290 of type tANI_U32.
Madan Mohan Koyyalamudif8d3b3f2013-07-30 19:10:54 +05301291 @see
1292 @returns None
1293 */
1294void WDI_TraceHostFWCapabilities(tANI_U32 *capabilityBitmap)
1295{
Abhishek Singh08b60122014-02-04 18:05:23 +05301296 int i,j;
Madan Mohan Koyyalamudif8d3b3f2013-07-30 19:10:54 +05301297 char capStr[512];
1298 char *pCapStr = capStr;
Abhishek Singh08b60122014-02-04 18:05:23 +05301299 for (j = 0; j < 4; j++) {
1300 for (i = 0; i < 32; i++) {
1301 if ((*(capabilityBitmap + j) & (1 << i))) {
1302 switch(i + (j * 32)) {
Madan Mohan Koyyalamudif8d3b3f2013-07-30 19:10:54 +05301303 case MCC: snprintf(pCapStr, sizeof("MCC"), "%s", "MCC");
1304 pCapStr += strlen("MCC");
1305 break;
1306 case P2P: snprintf(pCapStr, sizeof("P2P"), "%s", "P2P");
1307 pCapStr += strlen("P2P");
1308 break;
1309 case DOT11AC: snprintf(pCapStr, sizeof("DOT11AC") , "%s", "DOT11AC");
1310 pCapStr += strlen("DOT11AC");
1311 break;
1312 case SLM_SESSIONIZATION: snprintf(pCapStr, sizeof("SLM_SESSIONIZATION"), "%s", "SLM_SESSIONIZATION");
1313 pCapStr += strlen("SLM_SESSIONIZATION");
1314 break;
1315 case DOT11AC_OPMODE: snprintf(pCapStr, sizeof("DOT11AC_OPMODE"), "%s", "DOT11AC_OPMODE");
1316 pCapStr += strlen("DOT11AC_OPMODE");
1317 break;
1318 case SAP32STA: snprintf(pCapStr, sizeof("SAP32STA"), "%s", "SAP32STA");
1319 pCapStr += strlen("SAP32STA");
1320 break;
1321 case TDLS: snprintf(pCapStr, sizeof("TDLS"), "%s", "TDLS");
1322 pCapStr += strlen("TDLS");
1323 break;
1324 case P2P_GO_NOA_DECOUPLE_INIT_SCAN: snprintf(pCapStr, sizeof("P2P_GO_NOA_DECOUPLE_INIT_SCAN"), "%s", "P2P_GO_NOA_DECOUPLE_INIT_SCAN");
1325 pCapStr += strlen("P2P_GO_NOA_DECOUPLE_INIT_SCAN");
1326 break;
1327 case WLANACTIVE_OFFLOAD: snprintf(pCapStr, sizeof("WLANACTIVE_OFFLOAD"), "%s", "WLANACTIVE_OFFLOAD");
1328 pCapStr += strlen("WLANACTIVE_OFFLOAD");
1329 break;
1330 case BEACON_OFFLOAD: snprintf(pCapStr, sizeof("BEACON_OFFLOAD"), "%s","BEACON_OFFLOAD");
1331 pCapStr += strlen("BEACON_OFFLOAD");
1332 break;
1333 case SCAN_OFFLOAD: snprintf(pCapStr, sizeof("SCAN_OFFLOAD"), "%s", "SCAN_OFFLOAD");
1334 pCapStr += strlen("SCAN_OFFLOAD");
1335 break;
1336 case ROAM_OFFLOAD: snprintf(pCapStr, sizeof("ROAM_OFFLOAD"), "%s", "ROAM_OFFLOAD");
1337 pCapStr += strlen("ROAM_OFFLOAD");
1338 break;
1339 case BCN_MISS_OFFLOAD: snprintf(pCapStr, sizeof("BCN_MISS_OFFLOAD"), "%s", "BCN_MISS_OFFLOAD");
1340 pCapStr += strlen("BCN_MISS_OFFLOAD");
1341 break;
1342 case STA_POWERSAVE: snprintf(pCapStr, sizeof("STA_POWERSAVE"), "%s", "STA_POWERSAVE");
1343 pCapStr += strlen("STA_POWERSAVE");
1344 break;
1345 case AP_UAPSD: snprintf(pCapStr, sizeof("AP_UAPSD"), "%s", "AP_UAPSD");
1346 pCapStr += strlen("AP_UAPSD");
1347 break;
1348 case AP_DFS: snprintf(pCapStr, sizeof("AP_DFS"), "%s", "AP_DFS");
1349 pCapStr += strlen("AP_DFS");
1350 break;
1351 case BLOCKACK: snprintf(pCapStr, sizeof("BLOCKACK"), "%s", "BLOCKACK");
1352 pCapStr += strlen("BLOCKACK");
1353 break;
1354 case PHY_ERR: snprintf(pCapStr, sizeof("PHY_ERR"), "%s", "PHY_ERR");
1355 pCapStr += strlen("PHY_ERR");
1356 break;
1357 case BCN_FILTER: snprintf(pCapStr, sizeof("BCN_FILTER"), "%s", "BCN_FILTER");
1358 pCapStr += strlen("BCN_FILTER");
1359 break;
1360 case RTT: snprintf(pCapStr, sizeof("RTT"), "%s", "RTT");
1361 pCapStr += strlen("RTT");
1362 break;
1363 case RATECTRL: snprintf(pCapStr, sizeof("RATECTRL"), "%s", "RATECTRL");
1364 pCapStr += strlen("RATECTRL");
1365 break;
1366 case WOW: snprintf(pCapStr, sizeof("WOW"), "%s", "WOW");
1367 pCapStr += strlen("WOW");
1368 break;
1369 case WLAN_ROAM_SCAN_OFFLOAD: snprintf(pCapStr, sizeof("WLAN_ROAM_SCAN_OFFLOAD"), "%s", "WLAN_ROAM_SCAN_OFFLOAD");
1370 pCapStr += strlen("WLAN_ROAM_SCAN_OFFLOAD");
1371 break;
Kanchanapally, Vidyullathaf9426e52013-12-24 17:28:54 +05301372 case FW_IN_TX_PATH: snprintf(pCapStr, sizeof("FW_IN_TX_PATH"), "%s", "FW_IN_TX_PATH");
1373 pCapStr += strlen("FW_IN_TX_PATH");
1374 break;
Sandeep Puligilla60342762014-01-30 21:05:37 +05301375 case HT40_OBSS_SCAN:
1376 snprintf(pCapStr, sizeof("HT40_OBSS_SCAN"),
1377 "%s", "HT40_OBSS_SCAN");
1378 pCapStr += strlen("HT40_OBSS_SCAN");
1379 break;
Hardik Kantilal Patele1760e12014-01-21 15:57:21 +05301380 case EXTENDED_NSOFFLOAD_SLOT: snprintf(pCapStr,
1381 sizeof("EXTENDED_NSOFFLOAD_SLOT"),
1382 "%s", "EXTENDED_NSOFFLOAD_SLOT");
1383 pCapStr += strlen("EXTENDED_NSOFFLOAD_SLOT");
1384 break;
Pradeep Reddy POTTETIedaeb5f2014-05-22 23:34:41 +05301385 case TDLS_SCAN_COEXISTENCE: snprintf(pCapStr, sizeof("TDLS_SCAN_COEXISTENCE"), "%s", "TDLS_SCAN_COEXISTENCE");
1386 pCapStr += strlen("TDLS_SCAN_COEXISTENCE");
1387 break;
Abhishek Singhbe7f93d2014-06-04 10:47:11 +05301388 case CH_SWITCH_V1: snprintf(pCapStr, sizeof("CH_SWITCH_V1"), "%s", "CH_SWITCH_V1");
1389 pCapStr += strlen("CH_SWITCH_V1");
1390 break;
Dino Mycledf0a5d92014-07-04 09:41:55 +05301391#ifdef WLAN_FEATURE_LINK_LAYER_STATS
1392 case LINK_LAYER_STATS_MEAS: snprintf(pCapStr, sizeof("LINK_LAYER_STATS_MEAS"), "%s", "LINK_LAYER_STATS_MEAS");
1393 pCapStr += strlen("LINK_LAYER_STATS_MEAS");
1394 break;
1395#endif
Dino Myclee8843b32014-07-04 14:21:45 +05301396#ifdef WLAN_FEATURE_EXTSCAN
1397 case EXTENDED_SCAN: snprintf(pCapStr, sizeof("EXTENDED_SCAN"), "%s", "EXTENDED_SCAN");
1398 pCapStr += strlen("EXTENDED_SCAN");
1399 break;
1400#endif
Abhishek Singh6927fa02014-06-27 17:19:55 +05301401 case MU_MIMO: snprintf(pCapStr, sizeof("MU_MIMO"), "%s", "MU_MIMO");
1402 pCapStr += strlen("MU_MIMO");
1403 break;
Hardik Kantilal Patele1760e12014-01-21 15:57:21 +05301404
Mihir Shetec34258c2014-07-30 17:50:27 +05301405 case DYNAMIC_WMM_PS: snprintf(pCapStr, sizeof("DYNAMIC_WMM_PS"), "%s", "DYNAMIC_WMM_PS");
1406 pCapStr += strlen("DYNAMIC_WMM_PS");
1407 break;
Abhishek Singh85b74712014-10-08 11:38:19 +05301408 case FW_STATS: snprintf(pCapStr, sizeof("FW_STATS"), "%s", "FW_STATS");
1409 pCapStr += strlen("FW_STATS");
1410 break;
Siddharth Bhal171788a2014-09-29 21:02:40 +05301411 case MAC_SPOOFED_SCAN: snprintf(pCapStr, sizeof("MAC_SPOOFED_SCAN"), "%s", "MAC_SPOOFED_SCAN");
1412 pCapStr += strlen("MAC_SPOOFED_SCAN");
1413 break;
Sachin Ahuja825082e2014-11-25 17:34:36 +05301414 case WPS_PRBRSP_TMPL: snprintf(pCapStr, sizeof("WPS_PRBRSP_TMPL"), "%s", "WPS_PRBRSP_TMPL");
1415 pCapStr += strlen("WPS_PRBRSP_TMPL");
1416 break;
Abhishek Singh5fef4042014-11-25 18:33:00 +05301417 case BCN_IE_FLT_DELTA: snprintf(pCapStr, sizeof("BCN_IE_FLT_DELTA"), "%s", "BCN_IE_FLT_DELTA");
1418 pCapStr += strlen("BCN_IE_FLT_DELTA");
1419 break;
1420
Siddharth Bhal171788a2014-09-29 21:02:40 +05301421
Mihir Shetebf8897b2014-11-26 14:54:39 +05301422 case BMU_ERROR_GENERIC_RECOVERY: snprintf(pCapStr, sizeof("BMU_ERROR_GENERIC_RECOVERY"), "%s", "BMU_ERROR_GENERIC_RECOVERY");
1423 pCapStr += strlen("BMU_ERROR_GENERIC_RECOVERY");
1424 break;
1425
Srinivas Dasari4dae48f2014-11-26 21:14:16 +05301426 case DISA: snprintf(pCapStr, sizeof("DISA"), "%s", "DISA");
1427 pCapStr += strlen("DISA");
1428 break;
1429
Abhishek Singh08b60122014-02-04 18:05:23 +05301430 }
1431 *pCapStr++ = ',';
1432 *pCapStr++ = ' ';
1433 }
Madan Mohan Koyyalamudif8d3b3f2013-07-30 19:10:54 +05301434 }
1435 }
Madan Mohan Koyyalamudic2bf6172013-08-07 14:19:18 +05301436 pCapStr -= 2;
1437 *pCapStr = '\0';
Madan Mohan Koyyalamudif8d3b3f2013-07-30 19:10:54 +05301438 pCapStr = capStr;
Madan Mohan Koyyalamudic2bf6172013-08-07 14:19:18 +05301439 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR, "\t\t%s", pCapStr);
Madan Mohan Koyyalamudif8d3b3f2013-07-30 19:10:54 +05301440}
1441
1442/**
Jeff Johnson295189b2012-06-20 16:38:30 -07001443 @brief WDI_getHALStatusMsgString prints the HAL status in string.
Jeff Johnsone7245742012-09-05 17:12:55 -07001444
1445 @param halStatusId: HAL status Id
1446
1447 @see
Jeff Johnson295189b2012-06-20 16:38:30 -07001448 @return Result of the function call
1449*/
1450static char *WDI_getHALStatusMsgString(wpt_uint16 halStatusId)
1451{
1452 switch (halStatusId)
1453 {
1454 CASE_RETURN_STRING( eHAL_STATUS_SUCCESS );
1455 CASE_RETURN_STRING( PAL_STATUS_INVAL );
1456 CASE_RETURN_STRING( PAL_STATUS_ALREADY );
1457 CASE_RETURN_STRING( PAL_STATUS_EMPTY );
1458 CASE_RETURN_STRING( PAL_STATUS_FAILURE );
1459 CASE_RETURN_STRING( eHAL_STATUS_FAILURE );
1460 CASE_RETURN_STRING( eHAL_STATUS_INVALID_PARAMETER );
1461 CASE_RETURN_STRING( eHAL_STATUS_INVALID_STAIDX );
1462 CASE_RETURN_STRING( eHAL_STATUS_DPU_DESCRIPTOR_TABLE_FULL );
1463 CASE_RETURN_STRING( eHAL_STATUS_NO_INTERRUPTS );
1464 CASE_RETURN_STRING( eHAL_STATUS_INTERRUPT_PRESENT );
1465 CASE_RETURN_STRING( eHAL_STATUS_STA_TABLE_FULL );
1466 CASE_RETURN_STRING( eHAL_STATUS_DUPLICATE_STA );
1467 CASE_RETURN_STRING( eHAL_STATUS_BSSID_INVALID );
1468 CASE_RETURN_STRING( eHAL_STATUS_STA_INVALID );
1469 CASE_RETURN_STRING( eHAL_STATUS_DUPLICATE_BSSID );
1470 CASE_RETURN_STRING( eHAL_STATUS_INVALID_BSSIDX );
1471 CASE_RETURN_STRING( eHAL_STATUS_BSSID_TABLE_FULL );
1472 CASE_RETURN_STRING( eHAL_STATUS_INVALID_SIGNATURE );
1473 CASE_RETURN_STRING( eHAL_STATUS_INVALID_KEYID );
1474 CASE_RETURN_STRING( eHAL_STATUS_SET_CHAN_ALREADY_ON_REQUESTED_CHAN );
1475 CASE_RETURN_STRING( eHAL_STATUS_UMA_DESCRIPTOR_TABLE_FULL );
1476 CASE_RETURN_STRING( eHAL_STATUS_DPU_MICKEY_TABLE_FULL );
1477 CASE_RETURN_STRING( eHAL_STATUS_BA_RX_BUFFERS_FULL );
1478 CASE_RETURN_STRING( eHAL_STATUS_BA_RX_MAX_SESSIONS_REACHED );
1479 CASE_RETURN_STRING( eHAL_STATUS_BA_RX_INVALID_SESSION_ID );
1480 CASE_RETURN_STRING( eHAL_STATUS_TIMER_START_FAILED );
1481 CASE_RETURN_STRING( eHAL_STATUS_TIMER_STOP_FAILED );
1482 CASE_RETURN_STRING( eHAL_STATUS_FAILED_ALLOC );
1483 CASE_RETURN_STRING( eHAL_STATUS_NOTIFY_BSS_FAIL );
1484 CASE_RETURN_STRING( eHAL_STATUS_DEL_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO );
1485 CASE_RETURN_STRING( eHAL_STATUS_ADD_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO );
1486 CASE_RETURN_STRING( eHAL_STATUS_FW_SEND_MSG_FAILED );
1487 default:
1488 return "Unknown HAL status";
1489 }
1490}
1491
Jeff Johnsone7245742012-09-05 17:12:55 -07001492/*========================================================================
1493
Jeff Johnson295189b2012-06-20 16:38:30 -07001494 INITIALIZATION APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07001495
Jeff Johnson295189b2012-06-20 16:38:30 -07001496==========================================================================*/
1497
1498/**
1499 @brief WDI_Init is used to initialize the DAL.
Jeff Johnsone7245742012-09-05 17:12:55 -07001500
Jeff Johnson295189b2012-06-20 16:38:30 -07001501 DAL will allocate all the resources it needs. It will open PAL, it will also
1502 open both the data and the control transport which in their turn will open
Jeff Johnsone7245742012-09-05 17:12:55 -07001503 DXE/SMD or any other drivers that they need.
1504
Arun Kumar Khandavalliebb19482014-03-25 13:56:53 +05301505 @param devHandle: pointer to the OS specific device handle
Jeff Johnson295189b2012-06-20 16:38:30 -07001506 ppWDIGlobalCtx: output pointer of Global Context
1507 pWdiDevCapability: output pointer of device capability
1508
1509 @return Result of the function call
1510*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001511WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07001512WDI_Init
Jeff Johnsone7245742012-09-05 17:12:55 -07001513(
Arun Kumar Khandavalliebb19482014-03-25 13:56:53 +05301514 void* devHandle,
Jeff Johnson295189b2012-06-20 16:38:30 -07001515 void** ppWDIGlobalCtx,
1516 WDI_DeviceCapabilityType* pWdiDevCapability,
1517 unsigned int driverType
1518)
1519{
1520 wpt_uint8 i;
Jeff Johnsone7245742012-09-05 17:12:55 -07001521 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07001522 WDI_Status wdiStatus;
Jeff Johnsone7245742012-09-05 17:12:55 -07001523 WCTS_TransportCBsType wctsCBs;
Jeff Johnson295189b2012-06-20 16:38:30 -07001524 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
1525
1526 /*---------------------------------------------------------------------
1527 Sanity check
1528 ---------------------------------------------------------------------*/
1529 if (( NULL == ppWDIGlobalCtx ) || ( NULL == pWdiDevCapability ))
1530 {
1531 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1532 "Invalid input parameters in WDI_Init");
1533
Jeff Johnsone7245742012-09-05 17:12:55 -07001534 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07001535 }
1536
1537 /*---------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001538 Check to see if the module has already been initialized or not
Jeff Johnson295189b2012-06-20 16:38:30 -07001539 ---------------------------------------------------------------------*/
1540 if ( eWLAN_PAL_FALSE != gWDIInitialized )
1541 {
1542 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
1543 "WDI module already initialized - return");
1544
Jeff Johnsone7245742012-09-05 17:12:55 -07001545 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07001546 }
1547
1548 /*Module is now initialized - this flag is to ensure the fact that multiple
1549 init will not happen on WDI
1550 !! - potential race does exist because read and set are not atomic,
1551 however an atomic operation would be closely here - reanalyze if necessary*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001552 gWDIInitialized = eWLAN_PAL_TRUE;
Jeff Johnson295189b2012-06-20 16:38:30 -07001553
1554 /*Setup the control block */
1555 WDI_CleanCB(&gWDICb);
Arun Kumar Khandavalliebb19482014-03-25 13:56:53 +05301556 gWDICb.pOSContext = devHandle ;
Jeff Johnson295189b2012-06-20 16:38:30 -07001557
1558 /*Setup the STA Table*/
1559 wdiStatus = WDI_STATableInit(&gWDICb);
1560 if ( WDI_STATUS_SUCCESS != wdiStatus )
1561 {
1562 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1563 "%s: Failure while initializing STA Table, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001564 __func__, wdiStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001565 goto fail_STATableInit;
1566 }
1567
1568 /*------------------------------------------------------------------------
1569 Open the PAL
1570 ------------------------------------------------------------------------*/
Arun Kumar Khandavalliebb19482014-03-25 13:56:53 +05301571 wptStatus = wpalOpen(&gWDICb.pPALContext, devHandle);
Jeff Johnson295189b2012-06-20 16:38:30 -07001572 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1573 {
1574 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1575 "%s: Failed to open PAL, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001576 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001577 goto fail_wpalOpen;
1578 }
1579
1580 /*Initialize main synchro mutex - it will be used to ensure integrity of
1581 the main WDI Control Block*/
1582 wptStatus = wpalMutexInit(&gWDICb.wptMutex);
1583 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1584 {
1585 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1586 "%s: Failed to init mutex, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001587 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001588 goto fail_mutex;
1589 }
1590
1591 /*Initialize the response timer - it will be used to time all messages
1592 expected as response from device*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001593 wptStatus = wpalTimerInit( &gWDICb.wptResponseTimer,
1594 WDI_ResponseTimerCB,
Jeff Johnson295189b2012-06-20 16:38:30 -07001595 &gWDICb);
1596 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1597 {
1598 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1599 "%s: Failed to init response timer, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001600 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001601 goto fail_timer;
1602 }
1603
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -07001604 wptStatus = wpalTimerInit( &gWDICb.ssrTimer,
1605 WDI_SsrTimerCB,
1606 &gWDICb);
1607 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1608 {
1609 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1610 "%s: Failed to init SSR timer, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001611 __func__, wptStatus);
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -07001612 goto fail_timer2;
1613 }
Jeff Johnson295189b2012-06-20 16:38:30 -07001614 /* Initialize the WDI Pending Request Queue*/
1615 wptStatus = wpal_list_init(&(gWDICb.wptPendingQueue));
1616 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1617 {
1618 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1619 "%s: Failed to init pending request queue, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001620 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001621 goto fail_pend_queue;
1622 }
1623
1624 /*Init WDI Pending Assoc Id Queue */
1625 wptStatus = wpal_list_init(&(gWDICb.wptPendingAssocSessionIdQueue));
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 assoc session queue, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001630 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001631 goto fail_assoc_queue;
1632 }
1633
1634 /*Initialize the BSS sessions pending Queue */
1635 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
1636 {
1637 wptStatus = wpal_list_init(&(gWDICb.aBSSSessions[i].wptPendingQueue));
1638 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1639 {
1640 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1641 "%s: Failed to init BSS %d pending queue, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001642 __func__, i, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001643 goto fail_bss_queue;
1644 }
1645 }
1646
1647 /*Indicate the control block is sufficiently initialized for callbacks*/
1648 gWDICb.magic = WDI_CONTROL_BLOCK_MAGIC;
1649
1650 /*------------------------------------------------------------------------
1651 Initialize the Data Path Utility Module
1652 ------------------------------------------------------------------------*/
1653 wdiStatus = WDI_DP_UtilsInit(&gWDICb);
1654 if ( WDI_STATUS_SUCCESS != wdiStatus )
1655 {
1656 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1657 "%s: Failed to initialize the DP Util Module, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001658 __func__, wdiStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001659 goto fail_dp_util_init;
1660 }
1661
1662 /* Init Set power state event */
1663 wptStatus = wpalEventInit(&gWDICb.setPowerStateEvent);
Jeff Johnsone7245742012-09-05 17:12:55 -07001664 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -07001665 {
1666 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1667 "%s: Failed to initialize power state event, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001668 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001669 goto fail_power_event;
1670 }
1671
1672 /* Init WCTS action event */
1673 wptStatus = wpalEventInit(&gWDICb.wctsActionEvent);
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 WCTS action event, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001678 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001679 goto fail_wcts_event;
1680 }
1681
1682 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001683 Open the Transport Services for Control and Data
Jeff Johnson295189b2012-06-20 16:38:30 -07001684 ------------------------------------------------------------------------*/
1685 wctsCBs.wctsNotifyCB = WDI_NotifyMsgCTSCB;
1686 wctsCBs.wctsNotifyCBData = &gWDICb;
Jeff Johnsone7245742012-09-05 17:12:55 -07001687 wctsCBs.wctsRxMsgCB = WDI_RXMsgCTSCB;
Jeff Johnson295189b2012-06-20 16:38:30 -07001688 wctsCBs.wctsRxMsgCBData = &gWDICb;
1689
Jeff Johnsone7245742012-09-05 17:12:55 -07001690 gWDICb.bCTOpened = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -07001691 gWDICb.wctsHandle = WCTS_OpenTransport( szTransportChName ,
Jeff Johnsone7245742012-09-05 17:12:55 -07001692 WDI_CT_CHANNEL_SIZE,
1693 &wctsCBs );
Jeff Johnson295189b2012-06-20 16:38:30 -07001694
1695 if ( NULL == gWDICb.wctsHandle )
1696 {
1697 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001698 "%s: Failed to open WCTS transport", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001699 goto fail_wcts_open;
1700 }
1701
1702 gWDICb.driverMode = (tDriverType)driverType;
1703 /* FTM mode not need to open Transport Driver */
1704 if(eDRIVER_TYPE_MFG != (tDriverType)driverType)
Jeff Johnsone7245742012-09-05 17:12:55 -07001705 {
Jeff Johnson295189b2012-06-20 16:38:30 -07001706 /*------------------------------------------------------------------------
1707 Open the Data Transport
1708 ------------------------------------------------------------------------*/
1709 if(eWLAN_PAL_STATUS_SUCCESS != WDTS_openTransport(&gWDICb))
1710 {
1711 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001712 "%s: Failed to open the DT Transport", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001713 goto fail_wdts_open;
1714 }
1715 }
1716
1717 /*The WDI is initialized - set state to init */
Jeff Johnsone7245742012-09-05 17:12:55 -07001718 gWDICb.uGlobalState = WDI_INIT_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07001719
1720 /*Send the context as a ptr to the global WDI Control Block*/
1721 *ppWDIGlobalCtx = &gWDICb;
1722
1723 /*Fill in the device capabilities*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001724 pWdiDevCapability->bFrameXtlSupported = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -07001725 pWdiDevCapability->ucMaxSTASupported = gWDICb.ucMaxStations;
1726 pWdiDevCapability->ucMaxBSSSupported = gWDICb.ucMaxBssids;
1727 return WDI_STATUS_SUCCESS;
1728
1729 /* ERROR handlers
1730 Undo everything that completed successfully */
1731
1732 fail_wdts_open:
1733 {
1734 wpt_status eventStatus;
1735
1736 /* Closing WCTS in this scenario is tricky since it has to close
1737 the SMD channel and then we get notified asynchronously when
1738 the channel has been closed. So we take some of the logic from
1739 the "normal" close procedure in WDI_Close()
1740 */
1741
1742 eventStatus = wpalEventReset(&gWDICb.wctsActionEvent);
Jeff Johnsone7245742012-09-05 17:12:55 -07001743 if ( eWLAN_PAL_STATUS_SUCCESS != eventStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -07001744 {
1745 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001746 "%s: Failed to reset WCTS action event", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001747 }
1748
1749 WCTS_CloseTransport(gWDICb.wctsHandle);
1750
1751 /* Wait for WCTS to close the control transport. If we were able
1752 to reset the event flag, then we'll wait for the event,
1753 otherwise we'll wait for a maximum amount of time required for
1754 the channel to be closed */
1755 if ( eWLAN_PAL_STATUS_SUCCESS == eventStatus )
1756 {
Jeff Johnsone7245742012-09-05 17:12:55 -07001757 eventStatus = wpalEventWait(&gWDICb.wctsActionEvent,
Jeff Johnson295189b2012-06-20 16:38:30 -07001758 WDI_WCTS_ACTION_TIMEOUT);
1759 if ( eWLAN_PAL_STATUS_SUCCESS != eventStatus )
1760 {
1761 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001762 "%s: Failed to wait on WCTS action event", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001763 }
1764 }
1765 else
1766 {
1767 wpalSleep(WDI_WCTS_ACTION_TIMEOUT);
1768 }
1769 }
1770 fail_wcts_open:
1771 wpalEventDelete(&gWDICb.wctsActionEvent);
1772 fail_wcts_event:
1773 wpalEventDelete(&gWDICb.setPowerStateEvent);
1774 fail_power_event:
1775 WDI_DP_UtilsExit(&gWDICb);
1776 fail_dp_util_init:
1777 gWDICb.magic = 0;
1778 fail_bss_queue:
1779 /* entries 0 thru i-1 were successfully initialized */
1780 while (0 < i)
1781 {
1782 i--;
1783 wpal_list_destroy(&(gWDICb.aBSSSessions[i].wptPendingQueue));
1784 }
1785 wpal_list_destroy(&(gWDICb.wptPendingAssocSessionIdQueue));
1786 fail_assoc_queue:
1787 wpal_list_destroy(&(gWDICb.wptPendingQueue));
1788 fail_pend_queue:
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -07001789 wpalTimerDelete(&gWDICb.ssrTimer);
1790 fail_timer2:
Jeff Johnson295189b2012-06-20 16:38:30 -07001791 wpalTimerDelete(&gWDICb.wptResponseTimer);
1792 fail_timer:
1793 wpalMutexDelete(&gWDICb.wptMutex);
1794 fail_mutex:
1795 wpalClose(gWDICb.pPALContext);
1796 fail_wpalOpen:
1797 WDI_STATableClose(&gWDICb);
1798 fail_STATableInit:
1799 gWDIInitialized = eWLAN_PAL_FALSE;
1800
1801 return WDI_STATUS_E_FAILURE;
1802
1803}/*WDI_Init*/;
1804
1805/**
1806 @brief WDI_Start will be called when the upper MAC is ready to
1807 commence operation with the WLAN Device. Upon the call
1808 of this API the WLAN DAL will pack and send a HAL Start
1809 message to the lower RIVA sub-system if the SMD channel
1810 has been fully opened and the RIVA subsystem is up.
1811
1812 If the RIVA sub-system is not yet up and running DAL
1813 will queue the request for Open and will wait for the
1814 SMD notification before attempting to send down the
Jeff Johnsone7245742012-09-05 17:12:55 -07001815 message to HAL.
Jeff Johnson295189b2012-06-20 16:38:30 -07001816
1817 WDI_Init must have been called.
1818
Jeff Johnsone7245742012-09-05 17:12:55 -07001819 @param wdiStartParams: the start parameters as specified by
Jeff Johnson295189b2012-06-20 16:38:30 -07001820 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07001821
Jeff Johnson295189b2012-06-20 16:38:30 -07001822 wdiStartRspCb: callback for passing back the response of
1823 the start operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07001824
Jeff Johnson295189b2012-06-20 16:38:30 -07001825 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07001826 callback
1827
Jeff Johnson295189b2012-06-20 16:38:30 -07001828 @see WDI_Start
1829 @return Result of the function call
1830*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001831WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07001832WDI_Start
1833(
1834 WDI_StartReqParamsType* pwdiStartParams,
1835 WDI_StartRspCb wdiStartRspCb,
1836 void* pUserData
1837)
1838{
1839 WDI_EventInfoType wdiEventData;
1840 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
1841
1842 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001843 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07001844 ------------------------------------------------------------------------*/
1845 if ( eWLAN_PAL_FALSE == gWDIInitialized )
1846 {
1847 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1848 "WDI API call before module is initialized - Fail request");
1849
Jeff Johnsone7245742012-09-05 17:12:55 -07001850 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07001851 }
1852
1853 /*------------------------------------------------------------------------
1854 Fill in Event data and post to the Main FSM
1855 ------------------------------------------------------------------------*/
1856 wdiEventData.wdiRequest = WDI_START_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07001857 wdiEventData.pEventData = pwdiStartParams;
1858 wdiEventData.uEventDataSize = sizeof(*pwdiStartParams);
1859 wdiEventData.pCBfnc = wdiStartRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07001860 wdiEventData.pUserData = pUserData;
1861
1862 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
1863
1864}/*WDI_Start*/
1865
1866/**
1867 @brief WDI_Stop will be called when the upper MAC is ready to
1868 stop any operation with the WLAN Device. Upon the call
1869 of this API the WLAN DAL will pack and send a HAL Stop
1870 message to the lower RIVA sub-system if the DAL Core is
1871 in started state.
1872
1873 In state BUSY this request will be queued.
Jeff Johnsone7245742012-09-05 17:12:55 -07001874
1875 Request will not be accepted in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07001876
1877 WDI_Start must have been called.
1878
Jeff Johnsone7245742012-09-05 17:12:55 -07001879 @param wdiStopParams: the stop parameters as specified by
Jeff Johnson295189b2012-06-20 16:38:30 -07001880 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07001881
Jeff Johnson295189b2012-06-20 16:38:30 -07001882 wdiStopRspCb: callback for passing back the response of
1883 the stop operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07001884
Jeff Johnson295189b2012-06-20 16:38:30 -07001885 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07001886 callback
1887
Jeff Johnson295189b2012-06-20 16:38:30 -07001888 @see WDI_Start
1889 @return Result of the function call
1890*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001891WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07001892WDI_Stop
1893(
1894 WDI_StopReqParamsType* pwdiStopParams,
1895 WDI_StopRspCb wdiStopRspCb,
1896 void* pUserData
1897)
1898{
1899 WDI_EventInfoType wdiEventData;
Jeff Johnson43971f52012-07-17 12:26:56 -07001900 WDI_ControlBlockType* pWDICtx = &gWDICb;
Jeff Johnson295189b2012-06-20 16:38:30 -07001901 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
1902
1903 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001904 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07001905 ------------------------------------------------------------------------*/
1906 if ( eWLAN_PAL_FALSE == gWDIInitialized )
1907 {
1908 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1909 "WDI API call before module is initialized - Fail request");
1910
Jeff Johnsone7245742012-09-05 17:12:55 -07001911 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07001912 }
1913
Jeff Johnson43971f52012-07-17 12:26:56 -07001914 /*Access to the global state must be locked before cleaning */
1915 wpalMutexAcquire(&pWDICtx->wptMutex);
1916
1917 /*Clear all pending request*/
1918 WDI_ClearPendingRequests(pWDICtx);
1919
1920 /*We have completed cleaning unlock now*/
1921 wpalMutexRelease(&pWDICtx->wptMutex);
1922
Jeff Johnson295189b2012-06-20 16:38:30 -07001923 /* Free the global variables */
1924 wpalMemoryFree(gpHostWlanFeatCaps);
1925 wpalMemoryFree(gpFwWlanFeatCaps);
Madan Mohan Koyyalamudi3352adb2012-09-28 14:57:24 -07001926 gpHostWlanFeatCaps = NULL;
1927 gpFwWlanFeatCaps = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07001928
1929 /*------------------------------------------------------------------------
1930 Fill in Event data and post to the Main FSM
1931 ------------------------------------------------------------------------*/
1932 wdiEventData.wdiRequest = WDI_STOP_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07001933 wdiEventData.pEventData = pwdiStopParams;
1934 wdiEventData.uEventDataSize = sizeof(*pwdiStopParams);
1935 wdiEventData.pCBfnc = wdiStopRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07001936 wdiEventData.pUserData = pUserData;
1937
1938 return WDI_PostMainEvent(&gWDICb, WDI_STOP_EVENT, &wdiEventData);
1939
1940}/*WDI_Stop*/
1941
1942
1943
1944/**
Jeff Johnsone7245742012-09-05 17:12:55 -07001945 @brief WDI_Close will be called when the upper MAC no longer
Jeff Johnson295189b2012-06-20 16:38:30 -07001946 needs to interact with DAL. DAL will free its control
1947 block.
Jeff Johnsone7245742012-09-05 17:12:55 -07001948
1949 It is only accepted in state STOPPED.
Jeff Johnson295189b2012-06-20 16:38:30 -07001950
1951 WDI_Stop must have been called.
1952
1953 @param none
Jeff Johnsone7245742012-09-05 17:12:55 -07001954
Jeff Johnson295189b2012-06-20 16:38:30 -07001955 @see WDI_Stop
1956 @return Result of the function call
1957*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001958WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07001959WDI_Close
1960(
1961 void
1962)
1963{
1964 wpt_uint8 i;
1965 WDI_EventInfoType wdiEventData;
1966 wpt_status wptStatus;
1967 wpt_status eventStatus;
1968 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
1969
1970 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001971 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07001972 ------------------------------------------------------------------------*/
1973 if ( eWLAN_PAL_FALSE == gWDIInitialized )
1974 {
1975 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1976 "WDI API call before module is initialized - Fail request");
1977
Jeff Johnsone7245742012-09-05 17:12:55 -07001978 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07001979 }
1980
1981 /*Reset WCTS action event prior to posting the WDI_CLOSE_REQ
1982 (the control transport will be closed by the FSM and we'll want
1983 to wait until that completes)*/
1984 eventStatus = wpalEventReset(&gWDICb.wctsActionEvent);
Jeff Johnsone7245742012-09-05 17:12:55 -07001985 if ( eWLAN_PAL_STATUS_SUCCESS != eventStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -07001986 {
1987 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001988 "%s: Failed to reset WCTS action event", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001989 /* fall through and try to finish closing via the FSM */
1990 }
1991
1992 /*------------------------------------------------------------------------
1993 Fill in Event data and post to the Main FSM
1994 ------------------------------------------------------------------------*/
1995 wdiEventData.wdiRequest = WDI_CLOSE_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07001996 wdiEventData.pEventData = NULL;
1997 wdiEventData.uEventDataSize = 0;
1998 wdiEventData.pCBfnc = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07001999 wdiEventData.pUserData = NULL;
2000
2001 gWDIInitialized = eWLAN_PAL_FALSE;
2002
2003 wptStatus = WDI_PostMainEvent(&gWDICb, WDI_CLOSE_EVENT, &wdiEventData);
2004
2005 /*Wait for WCTS to close the control transport
2006 (but only if we were able to reset the event flag*/
2007 if ( eWLAN_PAL_STATUS_SUCCESS == eventStatus )
2008 {
Jeff Johnsone7245742012-09-05 17:12:55 -07002009 eventStatus = wpalEventWait(&gWDICb.wctsActionEvent,
Jeff Johnson295189b2012-06-20 16:38:30 -07002010 WDI_WCTS_ACTION_TIMEOUT);
2011 if ( eWLAN_PAL_STATUS_SUCCESS != eventStatus )
2012 {
2013 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07002014 "%s: Failed to wait on WCTS action event", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07002015 }
2016 }
2017
2018 /* Destroy the WCTS action event */
2019 wptStatus = wpalEventDelete(&gWDICb.wctsActionEvent);
2020 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
2021 {
2022 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
2023 "WDI Close failed to destroy an event");
Jeff Johnsone7245742012-09-05 17:12:55 -07002024 WDI_ASSERT(0);
Jeff Johnson295189b2012-06-20 16:38:30 -07002025 }
2026
2027 /* Destroy the Set Power State event */
2028 wptStatus = wpalEventDelete(&gWDICb.setPowerStateEvent);
2029 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
2030 {
2031 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
2032 "WDI Close failed to destroy an event");
2033
Jeff Johnsone7245742012-09-05 17:12:55 -07002034 WDI_ASSERT(0);
Jeff Johnson295189b2012-06-20 16:38:30 -07002035 }
2036
2037 /*------------------------------------------------------------------------
2038 Closes the Data Path Utility Module
2039 ------------------------------------------------------------------------*/
2040 if ( WDI_STATUS_SUCCESS != WDI_DP_UtilsExit(&gWDICb))
2041 {
2042 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
2043 "WDI Init failed to close the DP Util Module");
2044
Jeff Johnsone7245742012-09-05 17:12:55 -07002045 WDI_ASSERT(0);
Jeff Johnson295189b2012-06-20 16:38:30 -07002046 }
2047
2048 /*destroy the BSS sessions pending Queue */
2049 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
2050 {
2051 wpal_list_destroy(&(gWDICb.aBSSSessions[i].wptPendingQueue));
2052 }
2053
2054 /* destroy the WDI Pending Assoc Id Request Queue*/
2055 wpal_list_destroy(&(gWDICb.wptPendingAssocSessionIdQueue));
2056
2057 /* destroy the WDI Pending Request Queue*/
2058 wpal_list_destroy(&(gWDICb.wptPendingQueue));
Jeff Johnsone7245742012-09-05 17:12:55 -07002059
Jeff Johnson295189b2012-06-20 16:38:30 -07002060 /*destroy the response timer */
2061 wptStatus = wpalTimerDelete( &gWDICb.wptResponseTimer);
2062
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -07002063 /*destroy the SSR timer */
2064 wptStatus = wpalTimerDelete( &gWDICb.ssrTimer);
2065
Jeff Johnson295189b2012-06-20 16:38:30 -07002066 /*invalidate the main synchro mutex */
2067 wptStatus = wpalMutexDelete(&gWDICb.wptMutex);
2068 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
2069 {
2070 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2071 "Failed to delete mutex %d", wptStatus);
2072 WDI_ASSERT(0);
2073 }
2074
2075 /*Clear control block. note that this will clear the "magic"
2076 which will inhibit all asynchronous callbacks*/
2077 WDI_CleanCB(&gWDICb);
2078
2079 return wptStatus;
2080
2081}/*WDI_Close*/
2082
2083/**
2084 @brief WDI_Shutdown will be called during 'SSR shutdown' operation.
2085 This will do most of the WDI stop & close
2086 operations without doing any handshake with Riva
2087
2088 This will also make sure that the control transport
2089 will NOT be closed.
2090
2091 This request will not be queued.
2092
2093
2094 WDI_Start must have been called.
2095
2096 @param closeTransport: Close control channel if this is set
2097
2098 @return Result of the function call
2099*/
2100WDI_Status
2101WDI_Shutdown
2102(
2103 wpt_boolean closeTransport
2104)
2105{
2106 WDI_EventInfoType wdiEventData;
2107 wpt_status wptStatus;
2108 int i = 0;
2109 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2110
2111 /*------------------------------------------------------------------------
2112 Sanity Check
2113 ------------------------------------------------------------------------*/
2114 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2115 {
2116 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2117 "WDI API call before module is initialized - Fail request");
2118
2119 return WDI_STATUS_E_NOT_ALLOWED;
2120 }
2121
2122 /*------------------------------------------------------------------------
2123 Fill in Event data and post to the Main FSM
2124 ------------------------------------------------------------------------*/
2125 wdiEventData.wdiRequest = WDI_SHUTDOWN_REQ;
2126 wdiEventData.pEventData = NULL;
2127 wdiEventData.uEventDataSize = 0;
2128
2129 /* Shutdown will not be queued, if the state is busy timer will be
2130 * stopped & this message will be processed.*/
2131 wptStatus = WDI_PostMainEvent(&gWDICb, WDI_SHUTDOWN_EVENT, &wdiEventData);
2132 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
2133 {
2134 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07002135 "%s: Failed to process shutdown event", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07002136 }
2137 /* Destroy the Set Power State event */
2138 wptStatus = wpalEventDelete(&gWDICb.setPowerStateEvent);
2139 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
2140 {
2141 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
2142 "WDI Close failed to destroy an event");
2143
2144 WDI_ASSERT(0);
2145 }
2146 /*------------------------------------------------------------------------
2147 Closes the Data Path Utility Module
2148 ------------------------------------------------------------------------*/
2149 if ( WDI_STATUS_SUCCESS != WDI_DP_UtilsExit(&gWDICb))
2150 {
2151 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
2152 "WDI Init failed to close the DP Util Module");
2153
2154 WDI_ASSERT(0);
2155 }
2156 if ( closeTransport )
2157 {
2158 /* Close control transport, called from module unload */
2159 WCTS_CloseTransport(gWDICb.wctsHandle);
2160 }
Madan Mohan Koyyalamudifab2a7e2012-09-28 15:20:00 -07002161 else
2162 {
Madan Mohan Koyyalamudi8b7f1e62012-10-05 14:56:51 -07002163 /* Riva is crashed then SMD is already closed so cleaning all
Madan Mohan Koyyalamudifab2a7e2012-09-28 15:20:00 -07002164 the pending messages in the transport queue */
2165 WCTS_ClearPendingQueue(gWDICb.wctsHandle);
2166 }
Jeff Johnson295189b2012-06-20 16:38:30 -07002167 /*destroy the BSS sessions pending Queue */
2168 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
2169 {
2170 wpal_list_destroy(&(gWDICb.aBSSSessions[i].wptPendingQueue));
2171 }
2172
2173 /* destroy the WDI Pending Assoc Id Request Queue*/
2174 wpal_list_destroy(&(gWDICb.wptPendingAssocSessionIdQueue));
2175 /* destroy the WDI Pending Request Queue*/
2176 wpal_list_destroy(&(gWDICb.wptPendingQueue));
2177 /*destroy the response timer */
2178 wptStatus = wpalTimerDelete( &gWDICb.wptResponseTimer);
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -07002179 /*destroy the SSR timer */
2180 wptStatus = wpalTimerDelete( &gWDICb.ssrTimer);
Jeff Johnson295189b2012-06-20 16:38:30 -07002181
2182 /*invalidate the main synchro mutex */
2183 wptStatus = wpalMutexDelete(&gWDICb.wptMutex);
2184 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
2185 {
2186 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07002187 "%s: Failed to delete mutex %d", __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07002188 WDI_ASSERT(0);
2189 }
Madan Mohan Koyyalamudi3513bf52012-09-18 17:35:53 -07002190 /* Free the global variables */
2191 wpalMemoryFree(gpHostWlanFeatCaps);
2192 wpalMemoryFree(gpFwWlanFeatCaps);
Madan Mohan Koyyalamudi3352adb2012-09-28 14:57:24 -07002193 gpHostWlanFeatCaps = NULL;
2194 gpFwWlanFeatCaps = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07002195 /*Clear control block. note that this will clear the "magic"
2196 which will inhibit all asynchronous callbacks*/
2197 WDI_CleanCB(&gWDICb);
2198 return wptStatus;
2199
2200}/*WDI_Shutdown*/
2201
2202
Jeff Johnsone7245742012-09-05 17:12:55 -07002203/*========================================================================
2204
Jeff Johnson295189b2012-06-20 16:38:30 -07002205 SCAN APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07002206
Jeff Johnson295189b2012-06-20 16:38:30 -07002207==========================================================================*/
2208
2209/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002210 @brief WDI_InitScanReq will be called when the upper MAC wants
Jeff Johnson295189b2012-06-20 16:38:30 -07002211 the WLAN Device to get ready for a scan procedure. Upon
2212 the call of this API the WLAN DAL will pack and send a
2213 HAL Init Scan request message to the lower RIVA
2214 sub-system if DAL is in state STARTED.
2215
2216 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002217 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002218
2219 WDI_Start must have been called.
2220
2221 @param wdiInitScanParams: the init scan parameters as specified
2222 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002223
Jeff Johnson295189b2012-06-20 16:38:30 -07002224 wdiInitScanRspCb: callback for passing back the response
2225 of the init scan operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002226
Jeff Johnson295189b2012-06-20 16:38:30 -07002227 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002228 callback
2229
Jeff Johnson295189b2012-06-20 16:38:30 -07002230 @see WDI_Start
2231 @return Result of the function call
2232*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002233WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002234WDI_InitScanReq
2235(
2236 WDI_InitScanReqParamsType* pwdiInitScanParams,
2237 WDI_InitScanRspCb wdiInitScanRspCb,
2238 void* pUserData
2239)
2240{
2241 WDI_EventInfoType wdiEventData;
2242 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2243
2244 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002245 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002246 ------------------------------------------------------------------------*/
2247 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2248 {
2249 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2250 "WDI API call before module is initialized - Fail request");
2251
Jeff Johnsone7245742012-09-05 17:12:55 -07002252 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002253 }
2254
2255 /*------------------------------------------------------------------------
2256 Fill in Event data and post to the Main FSM
2257 ------------------------------------------------------------------------*/
2258 wdiEventData.wdiRequest = WDI_INIT_SCAN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002259 wdiEventData.pEventData = pwdiInitScanParams;
2260 wdiEventData.uEventDataSize = sizeof(*pwdiInitScanParams);
2261 wdiEventData.pCBfnc = wdiInitScanRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002262 wdiEventData.pUserData = pUserData;
2263
2264 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2265
2266}/*WDI_InitScanReq*/
2267
2268/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002269 @brief WDI_StartScanReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07002270 wishes to change the Scan channel on the WLAN Device.
2271 Upon the call of this API the WLAN DAL will pack and
2272 send a HAL Start Scan request message to the lower RIVA
2273 sub-system if DAL is in state STARTED.
2274
2275 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002276 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002277
2278 WDI_InitScanReq must have been called.
2279
Jeff Johnsone7245742012-09-05 17:12:55 -07002280 @param wdiStartScanParams: the start scan parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002281 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002282
Jeff Johnson295189b2012-06-20 16:38:30 -07002283 wdiStartScanRspCb: callback for passing back the
2284 response of the start scan operation received from the
2285 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002286
Jeff Johnson295189b2012-06-20 16:38:30 -07002287 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002288 callback
2289
Jeff Johnson295189b2012-06-20 16:38:30 -07002290 @see WDI_InitScanReq
2291 @return Result of the function call
2292*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002293WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002294WDI_StartScanReq
2295(
2296 WDI_StartScanReqParamsType* pwdiStartScanParams,
2297 WDI_StartScanRspCb wdiStartScanRspCb,
2298 void* pUserData
2299)
2300{
2301 WDI_EventInfoType wdiEventData;
2302 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2303
2304 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002305 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002306 ------------------------------------------------------------------------*/
2307 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2308 {
2309 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2310 "WDI API call before module is initialized - Fail request");
2311
Jeff Johnsone7245742012-09-05 17:12:55 -07002312 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002313 }
2314
2315 /*------------------------------------------------------------------------
2316 Fill in Event data and post to the Main FSM
2317 ------------------------------------------------------------------------*/
2318 wdiEventData.wdiRequest = WDI_START_SCAN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002319 wdiEventData.pEventData = pwdiStartScanParams;
2320 wdiEventData.uEventDataSize = sizeof(*pwdiStartScanParams);
2321 wdiEventData.pCBfnc = wdiStartScanRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002322 wdiEventData.pUserData = pUserData;
2323
2324 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2325
2326}/*WDI_StartScanReq*/
2327
2328
2329/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002330 @brief WDI_EndScanReq will be called when the upper MAC is
Jeff Johnson295189b2012-06-20 16:38:30 -07002331 wants to end scanning for a particular channel that it
2332 had set before by calling Scan Start on the WLAN Device.
2333 Upon the call of this API the WLAN DAL will pack and
2334 send a HAL End Scan request message to the lower RIVA
2335 sub-system if DAL is in state STARTED.
2336
2337 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002338 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002339
2340 WDI_StartScanReq must have been called.
2341
Jeff Johnsone7245742012-09-05 17:12:55 -07002342 @param wdiEndScanParams: the end scan parameters as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07002343 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002344
Jeff Johnson295189b2012-06-20 16:38:30 -07002345 wdiEndScanRspCb: callback for passing back the response
2346 of the end scan operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002347
Jeff Johnson295189b2012-06-20 16:38:30 -07002348 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002349 callback
2350
Jeff Johnson295189b2012-06-20 16:38:30 -07002351 @see WDI_StartScanReq
2352 @return Result of the function call
2353*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002354WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002355WDI_EndScanReq
2356(
2357 WDI_EndScanReqParamsType* pwdiEndScanParams,
2358 WDI_EndScanRspCb wdiEndScanRspCb,
2359 void* pUserData
2360)
2361{
2362 WDI_EventInfoType wdiEventData;
2363 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2364
2365 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002366 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002367 ------------------------------------------------------------------------*/
2368 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2369 {
2370 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2371 "WDI API call before module is initialized - Fail request");
2372
Jeff Johnsone7245742012-09-05 17:12:55 -07002373 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002374 }
2375
2376 /*------------------------------------------------------------------------
2377 Fill in Event data and post to the Main FSM
2378 ------------------------------------------------------------------------*/
2379 wdiEventData.wdiRequest = WDI_END_SCAN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002380 wdiEventData.pEventData = pwdiEndScanParams;
2381 wdiEventData.uEventDataSize = sizeof(*pwdiEndScanParams);
2382 wdiEventData.pCBfnc = wdiEndScanRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002383 wdiEventData.pUserData = pUserData;
2384
2385 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2386
2387}/*WDI_EndScanReq*/
2388
2389
2390/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002391 @brief WDI_FinishScanReq will be called when the upper MAC has
Jeff Johnson295189b2012-06-20 16:38:30 -07002392 completed the scan process on the WLAN Device. Upon the
2393 call of this API the WLAN DAL will pack and send a HAL
2394 Finish Scan Request request message to the lower RIVA
2395 sub-system if DAL is in state STARTED.
2396
2397 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002398 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002399
2400 WDI_InitScanReq must have been called.
2401
Jeff Johnsone7245742012-09-05 17:12:55 -07002402 @param wdiFinishScanParams: the finish scan parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002403 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002404
Jeff Johnson295189b2012-06-20 16:38:30 -07002405 wdiFinishScanRspCb: callback for passing back the
2406 response of the finish scan operation received from the
2407 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002408
Jeff Johnson295189b2012-06-20 16:38:30 -07002409 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002410 callback
2411
Jeff Johnson295189b2012-06-20 16:38:30 -07002412 @see WDI_InitScanReq
2413 @return Result of the function call
2414*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002415WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002416WDI_FinishScanReq
2417(
2418 WDI_FinishScanReqParamsType* pwdiFinishScanParams,
2419 WDI_FinishScanRspCb wdiFinishScanRspCb,
2420 void* pUserData
2421)
2422{
2423 WDI_EventInfoType wdiEventData;
2424 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2425
2426 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002427 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002428 ------------------------------------------------------------------------*/
2429 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2430 {
2431 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2432 "WDI API call before module is initialized - Fail request");
2433
Jeff Johnsone7245742012-09-05 17:12:55 -07002434 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002435 }
2436
2437 /*------------------------------------------------------------------------
2438 Fill in Event data and post to the Main FSM
2439 ------------------------------------------------------------------------*/
2440 wdiEventData.wdiRequest = WDI_FINISH_SCAN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002441 wdiEventData.pEventData = pwdiFinishScanParams;
2442 wdiEventData.uEventDataSize = sizeof(*pwdiFinishScanParams);
2443 wdiEventData.pCBfnc = wdiFinishScanRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002444 wdiEventData.pUserData = pUserData;
2445
2446 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2447
2448}/*WDI_FinishScanReq*/
2449
Jeff Johnsone7245742012-09-05 17:12:55 -07002450/*========================================================================
2451
Jeff Johnson295189b2012-06-20 16:38:30 -07002452 ASSOCIATION APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07002453
Jeff Johnson295189b2012-06-20 16:38:30 -07002454==========================================================================*/
2455
2456/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002457 @brief WDI_JoinReq will be called when the upper MAC is ready
Jeff Johnson295189b2012-06-20 16:38:30 -07002458 to start an association procedure to a BSS. Upon the
2459 call of this API the WLAN DAL will pack and send a HAL
2460 Join request message to the lower RIVA sub-system if
2461 DAL is in state STARTED.
2462
2463 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002464 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002465
2466 WDI_Start must have been called.
2467
Jeff Johnsone7245742012-09-05 17:12:55 -07002468 @param wdiJoinParams: the join parameters as specified by
Jeff Johnson295189b2012-06-20 16:38:30 -07002469 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002470
Jeff Johnson295189b2012-06-20 16:38:30 -07002471 wdiJoinRspCb: callback for passing back the response of
2472 the join operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002473
Jeff Johnson295189b2012-06-20 16:38:30 -07002474 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002475 callback
2476
Jeff Johnson295189b2012-06-20 16:38:30 -07002477 @see WDI_Start
2478 @return Result of the function call
2479*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002480WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002481WDI_JoinReq
2482(
2483 WDI_JoinReqParamsType* pwdiJoinParams,
2484 WDI_JoinRspCb wdiJoinRspCb,
2485 void* pUserData
2486)
2487{
2488 WDI_EventInfoType wdiEventData;
2489 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2490
2491 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002492 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002493 ------------------------------------------------------------------------*/
2494 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2495 {
2496 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2497 "WDI API call before module is initialized - Fail request");
2498
Jeff Johnsone7245742012-09-05 17:12:55 -07002499 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002500 }
2501
2502 /*------------------------------------------------------------------------
2503 Fill in Event data and post to the Main FSM
2504 ------------------------------------------------------------------------*/
2505 wdiEventData.wdiRequest = WDI_JOIN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002506 wdiEventData.pEventData = pwdiJoinParams;
2507 wdiEventData.uEventDataSize = sizeof(*pwdiJoinParams);
2508 wdiEventData.pCBfnc = wdiJoinRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002509 wdiEventData.pUserData = pUserData;
2510
2511 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2512
2513}/*WDI_JoinReq*/
2514
2515/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002516 @brief WDI_ConfigBSSReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07002517 wishes to configure the newly acquired or in process of
2518 being acquired BSS to the HW . Upon the call of this API
2519 the WLAN DAL will pack and send a HAL Config BSS request
2520 message to the lower RIVA sub-system if DAL is in state
2521 STARTED.
2522
2523 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002524 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002525
2526 WDI_JoinReq must have been called.
2527
Jeff Johnsone7245742012-09-05 17:12:55 -07002528 @param wdiConfigBSSParams: the config BSS parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002529 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002530
Jeff Johnson295189b2012-06-20 16:38:30 -07002531 wdiConfigBSSRspCb: callback for passing back the
2532 response of the config BSS operation received from the
2533 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002534
Jeff Johnson295189b2012-06-20 16:38:30 -07002535 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002536 callback
2537
Jeff Johnson295189b2012-06-20 16:38:30 -07002538 @see WDI_JoinReq
2539 @return Result of the function call
2540*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002541WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002542WDI_ConfigBSSReq
2543(
2544 WDI_ConfigBSSReqParamsType* pwdiConfigBSSParams,
2545 WDI_ConfigBSSRspCb wdiConfigBSSRspCb,
2546 void* pUserData
2547)
2548{
2549 WDI_EventInfoType wdiEventData;
2550 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2551
2552 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002553 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002554 ------------------------------------------------------------------------*/
2555 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2556 {
2557 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2558 "WDI API call before module is initialized - Fail request");
2559
Jeff Johnsone7245742012-09-05 17:12:55 -07002560 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002561 }
2562
2563 /*------------------------------------------------------------------------
2564 Fill in Event data and post to the Main FSM
2565 ------------------------------------------------------------------------*/
2566 wdiEventData.wdiRequest = WDI_CONFIG_BSS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002567 wdiEventData.pEventData = pwdiConfigBSSParams;
2568 wdiEventData.uEventDataSize = sizeof(*pwdiConfigBSSParams);
2569 wdiEventData.pCBfnc = wdiConfigBSSRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002570 wdiEventData.pUserData = pUserData;
2571
2572 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2573
2574}/*WDI_ConfigBSSReq*/
2575
2576/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002577 @brief WDI_DelBSSReq will be called when the upper MAC is
Jeff Johnson295189b2012-06-20 16:38:30 -07002578 disassociating from the BSS and wishes to notify HW.
2579 Upon the call of this API the WLAN DAL will pack and
2580 send a HAL Del BSS request message to the lower RIVA
2581 sub-system if DAL is in state STARTED.
2582
2583 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002584 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002585
2586 WDI_ConfigBSSReq or WDI_PostAssocReq must have been called.
2587
Jeff Johnsone7245742012-09-05 17:12:55 -07002588 @param wdiDelBSSParams: the del BSS parameters as specified by
Jeff Johnson295189b2012-06-20 16:38:30 -07002589 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002590
Jeff Johnson295189b2012-06-20 16:38:30 -07002591 wdiDelBSSRspCb: callback for passing back the response
2592 of the del bss operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002593
Jeff Johnson295189b2012-06-20 16:38:30 -07002594 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002595 callback
2596
2597 @see WDI_ConfigBSSReq, WDI_PostAssocReq
Jeff Johnson295189b2012-06-20 16:38:30 -07002598 @return Result of the function call
2599*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002600WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002601WDI_DelBSSReq
2602(
2603 WDI_DelBSSReqParamsType* pwdiDelBSSParams,
2604 WDI_DelBSSRspCb wdiDelBSSRspCb,
2605 void* pUserData
2606)
2607{
2608 WDI_EventInfoType wdiEventData;
2609 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2610
2611 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002612 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002613 ------------------------------------------------------------------------*/
2614 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2615 {
2616 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2617 "WDI API call before module is initialized - Fail request");
2618
Jeff Johnsone7245742012-09-05 17:12:55 -07002619 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002620 }
2621
2622 /*------------------------------------------------------------------------
2623 Fill in Event data and post to the Main FSM
2624 ------------------------------------------------------------------------*/
2625 wdiEventData.wdiRequest = WDI_DEL_BSS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002626 wdiEventData.pEventData = pwdiDelBSSParams;
2627 wdiEventData.uEventDataSize = sizeof(*pwdiDelBSSParams);
2628 wdiEventData.pCBfnc = wdiDelBSSRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002629 wdiEventData.pUserData = pUserData;
2630
2631 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2632
2633}/*WDI_DelBSSReq*/
2634
2635/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002636 @brief WDI_PostAssocReq will be called when the upper MAC has
Jeff Johnson295189b2012-06-20 16:38:30 -07002637 associated to a BSS and wishes to configure HW for
2638 associated state. Upon the call of this API the WLAN DAL
2639 will pack and send a HAL Post Assoc request message to
2640 the lower RIVA sub-system if DAL is in state STARTED.
2641
2642 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002643 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002644
2645 WDI_JoinReq must have been called.
2646
2647 @param wdiPostAssocReqParams: the assoc parameters as specified
2648 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002649
Jeff Johnson295189b2012-06-20 16:38:30 -07002650 wdiPostAssocRspCb: callback for passing back the
2651 response of the post assoc operation received from the
2652 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002653
Jeff Johnson295189b2012-06-20 16:38:30 -07002654 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002655 callback
2656
Jeff Johnson295189b2012-06-20 16:38:30 -07002657 @see WDI_JoinReq
2658 @return Result of the function call
2659*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002660WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002661WDI_PostAssocReq
2662(
2663 WDI_PostAssocReqParamsType* pwdiPostAssocReqParams,
2664 WDI_PostAssocRspCb wdiPostAssocRspCb,
2665 void* pUserData
2666)
2667{
2668 WDI_EventInfoType wdiEventData;
2669 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2670
2671 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002672 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002673 ------------------------------------------------------------------------*/
2674 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2675 {
2676 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2677 "WDI API call before module is initialized - Fail request");
2678
Jeff Johnsone7245742012-09-05 17:12:55 -07002679 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002680 }
2681
2682 /*------------------------------------------------------------------------
2683 Fill in Event data and post to the Main FSM
2684 ------------------------------------------------------------------------*/
2685 wdiEventData.wdiRequest = WDI_POST_ASSOC_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002686 wdiEventData.pEventData = pwdiPostAssocReqParams;
2687 wdiEventData.uEventDataSize = sizeof(*pwdiPostAssocReqParams);
2688 wdiEventData.pCBfnc = wdiPostAssocRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002689 wdiEventData.pUserData = pUserData;
2690
2691 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2692
2693}/*WDI_PostAssocReq*/
2694
2695/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002696 @brief WDI_DelSTAReq will be called when the upper MAC when an
Jeff Johnson295189b2012-06-20 16:38:30 -07002697 association with another STA has ended and the station
2698 must be deleted from HW. Upon the call of this API the
2699 WLAN DAL will pack and send a HAL Del STA request
2700 message to the lower RIVA sub-system if DAL is in state
2701 STARTED.
2702
2703 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002704 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002705
2706 WDI_PostAssocReq must have been called.
2707
Jeff Johnsone7245742012-09-05 17:12:55 -07002708 @param wdiDelSTAParams: the Del STA parameters as specified by
Jeff Johnson295189b2012-06-20 16:38:30 -07002709 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002710
Jeff Johnson295189b2012-06-20 16:38:30 -07002711 wdiDelSTARspCb: callback for passing back the response
2712 of the del STA operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002713
Jeff Johnson295189b2012-06-20 16:38:30 -07002714 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002715 callback
2716
Jeff Johnson295189b2012-06-20 16:38:30 -07002717 @see WDI_PostAssocReq
2718 @return Result of the function call
2719*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002720WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002721WDI_DelSTAReq
2722(
2723 WDI_DelSTAReqParamsType* pwdiDelSTAParams,
2724 WDI_DelSTARspCb wdiDelSTARspCb,
2725 void* pUserData
2726)
2727{
2728 WDI_EventInfoType wdiEventData;
2729 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2730
2731 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002732 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002733 ------------------------------------------------------------------------*/
2734 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2735 {
2736 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2737 "WDI API call before module is initialized - Fail request");
2738
Jeff Johnsone7245742012-09-05 17:12:55 -07002739 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002740 }
2741
2742 /*------------------------------------------------------------------------
2743 Fill in Event data and post to the Main FSM
2744 ------------------------------------------------------------------------*/
2745 wdiEventData.wdiRequest = WDI_DEL_STA_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002746 wdiEventData.pEventData = pwdiDelSTAParams;
2747 wdiEventData.uEventDataSize = sizeof(*pwdiDelSTAParams);
2748 wdiEventData.pCBfnc = wdiDelSTARspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002749 wdiEventData.pUserData = pUserData;
2750
2751 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2752
2753}/*WDI_DelSTAReq*/
2754
Jeff Johnsone7245742012-09-05 17:12:55 -07002755/*========================================================================
2756
Jeff Johnson295189b2012-06-20 16:38:30 -07002757 SECURITY APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07002758
Jeff Johnson295189b2012-06-20 16:38:30 -07002759==========================================================================*/
2760
2761/**
2762 @brief WDI_SetBSSKeyReq will be called when the upper MAC wants to
2763 install a BSS encryption key on the HW. Upon the call of this
2764 API the WLAN DAL will pack and send a Set BSS Key request
2765 message to the lower RIVA sub-system if DAL is in state
2766 STARTED.
2767
2768 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002769 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002770
2771 WDI_PostAssocReq must have been called.
2772
Jeff Johnsone7245742012-09-05 17:12:55 -07002773 @param wdiSetBSSKeyParams: the BSS Key set parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002774 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002775
Jeff Johnson295189b2012-06-20 16:38:30 -07002776 wdiSetBSSKeyRspCb: callback for passing back the
2777 response of the set BSS Key operation received from the
2778 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002779
Jeff Johnson295189b2012-06-20 16:38:30 -07002780 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002781 callback
2782
Jeff Johnson295189b2012-06-20 16:38:30 -07002783 @see WDI_PostAssocReq
2784 @return Result of the function call
2785*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002786WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002787WDI_SetBSSKeyReq
2788(
2789 WDI_SetBSSKeyReqParamsType* pwdiSetBSSKeyParams,
2790 WDI_SetBSSKeyRspCb wdiSetBSSKeyRspCb,
2791 void* pUserData
2792)
2793{
2794 WDI_EventInfoType wdiEventData;
2795 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2796
2797 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002798 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002799 ------------------------------------------------------------------------*/
2800 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2801 {
2802 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2803 "WDI API call before module is initialized - Fail request");
2804
Jeff Johnsone7245742012-09-05 17:12:55 -07002805 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002806 }
2807
2808 /*------------------------------------------------------------------------
2809 Fill in Event data and post to the Main FSM
2810 ------------------------------------------------------------------------*/
2811 wdiEventData.wdiRequest = WDI_SET_BSS_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002812 wdiEventData.pEventData = pwdiSetBSSKeyParams;
2813 wdiEventData.uEventDataSize = sizeof(*pwdiSetBSSKeyParams);
2814 wdiEventData.pCBfnc = wdiSetBSSKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002815 wdiEventData.pUserData = pUserData;
2816
2817 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2818
2819}/*WDI_SetBSSKeyReq*/
2820
2821/**
2822 @brief WDI_RemoveBSSKeyReq will be called when the upper MAC wants to
2823 uninstall a BSS key from HW. Upon the call of this API the
2824 WLAN DAL will pack and send a HAL Remove BSS Key request
2825 message to the lower RIVA sub-system if DAL is in state
2826 STARTED.
2827
2828 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002829 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002830
2831 WDI_SetBSSKeyReq must have been called.
2832
Jeff Johnsone7245742012-09-05 17:12:55 -07002833 @param wdiRemoveBSSKeyParams: the remove BSS key parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002834 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002835
Jeff Johnson295189b2012-06-20 16:38:30 -07002836 wdiRemoveBSSKeyRspCb: callback for passing back the
2837 response of the remove BSS key operation received from
2838 the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002839
Jeff Johnson295189b2012-06-20 16:38:30 -07002840 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002841 callback
2842
Jeff Johnson295189b2012-06-20 16:38:30 -07002843 @see WDI_SetBSSKeyReq
2844 @return Result of the function call
2845*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002846WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002847WDI_RemoveBSSKeyReq
2848(
2849 WDI_RemoveBSSKeyReqParamsType* pwdiRemoveBSSKeyParams,
2850 WDI_RemoveBSSKeyRspCb wdiRemoveBSSKeyRspCb,
2851 void* pUserData
2852)
2853{
2854 WDI_EventInfoType wdiEventData;
2855 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2856
2857 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002858 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002859 ------------------------------------------------------------------------*/
2860 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2861 {
2862 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2863 "WDI API call before module is initialized - Fail request");
2864
Jeff Johnsone7245742012-09-05 17:12:55 -07002865 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002866 }
2867
2868 /*------------------------------------------------------------------------
2869 Fill in Event data and post to the Main FSM
2870 ------------------------------------------------------------------------*/
2871 wdiEventData.wdiRequest = WDI_RMV_BSS_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002872 wdiEventData.pEventData = pwdiRemoveBSSKeyParams;
2873 wdiEventData.uEventDataSize = sizeof(*pwdiRemoveBSSKeyParams);
2874 wdiEventData.pCBfnc = wdiRemoveBSSKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002875 wdiEventData.pUserData = pUserData;
2876
2877 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2878
2879}/*WDI_RemoveBSSKeyReq*/
2880
2881
2882/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002883 @brief WDI_SetSTAKeyReq will be called when the upper MAC is
Jeff Johnson295189b2012-06-20 16:38:30 -07002884 ready to install a STA(ast) encryption key in HW. Upon
2885 the call of this API the WLAN DAL will pack and send a
2886 HAL Set STA Key request message to the lower RIVA
2887 sub-system if DAL is in state STARTED.
2888
2889 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002890 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002891
2892 WDI_PostAssocReq must have been called.
2893
Jeff Johnsone7245742012-09-05 17:12:55 -07002894 @param wdiSetSTAKeyParams: the set STA key parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002895 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002896
Jeff Johnson295189b2012-06-20 16:38:30 -07002897 wdiSetSTAKeyRspCb: callback for passing back the
2898 response of the set STA key operation received from the
2899 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002900
Jeff Johnson295189b2012-06-20 16:38:30 -07002901 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002902 callback
2903
Jeff Johnson295189b2012-06-20 16:38:30 -07002904 @see WDI_PostAssocReq
2905 @return Result of the function call
2906*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002907WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002908WDI_SetSTAKeyReq
2909(
2910 WDI_SetSTAKeyReqParamsType* pwdiSetSTAKeyParams,
2911 WDI_SetSTAKeyRspCb wdiSetSTAKeyRspCb,
2912 void* pUserData
2913)
2914{
2915 WDI_EventInfoType wdiEventData;
2916 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2917
2918 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002919 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002920 ------------------------------------------------------------------------*/
2921 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2922 {
2923 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2924 "WDI API call before module is initialized - Fail request");
2925
Jeff Johnsone7245742012-09-05 17:12:55 -07002926 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002927 }
2928
2929 /*------------------------------------------------------------------------
2930 Fill in Event data and post to the Main FSM
2931 ------------------------------------------------------------------------*/
2932 wdiEventData.wdiRequest = WDI_SET_STA_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002933 wdiEventData.pEventData = pwdiSetSTAKeyParams;
2934 wdiEventData.uEventDataSize = sizeof(*pwdiSetSTAKeyParams);
2935 wdiEventData.pCBfnc = wdiSetSTAKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002936 wdiEventData.pUserData = pUserData;
2937
2938 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2939
2940}/*WDI_SetSTAKeyReq*/
2941
2942
2943/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002944 @brief WDI_RemoveSTAKeyReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07002945 wants to uninstall a previously set STA key in HW. Upon
2946 the call of this API the WLAN DAL will pack and send a
2947 HAL Remove STA Key request message to the lower RIVA
2948 sub-system if DAL is in state STARTED.
2949
2950 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002951 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002952
2953 WDI_SetSTAKeyReq must have been called.
2954
Jeff Johnsone7245742012-09-05 17:12:55 -07002955 @param wdiRemoveSTAKeyParams: the remove STA key parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002956 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002957
Jeff Johnson295189b2012-06-20 16:38:30 -07002958 wdiRemoveSTAKeyRspCb: callback for passing back the
2959 response of the remove STA key operation received from
2960 the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002961
Jeff Johnson295189b2012-06-20 16:38:30 -07002962 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002963 callback
2964
Jeff Johnson295189b2012-06-20 16:38:30 -07002965 @see WDI_SetSTAKeyReq
2966 @return Result of the function call
2967*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002968WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002969WDI_RemoveSTAKeyReq
2970(
2971 WDI_RemoveSTAKeyReqParamsType* pwdiRemoveSTAKeyParams,
2972 WDI_RemoveSTAKeyRspCb wdiRemoveSTAKeyRspCb,
2973 void* pUserData
2974)
2975{
2976 WDI_EventInfoType wdiEventData;
2977 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2978
2979 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002980 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002981 ------------------------------------------------------------------------*/
2982 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2983 {
2984 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2985 "WDI API call before module is initialized - Fail request");
2986
Jeff Johnsone7245742012-09-05 17:12:55 -07002987 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002988 }
2989
2990 /*------------------------------------------------------------------------
2991 Fill in Event data and post to the Main FSM
2992 ------------------------------------------------------------------------*/
2993 wdiEventData.wdiRequest = WDI_RMV_STA_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002994 wdiEventData.pEventData = pwdiRemoveSTAKeyParams;
2995 wdiEventData.uEventDataSize = sizeof(*pwdiRemoveSTAKeyParams);
2996 wdiEventData.pCBfnc = wdiRemoveSTAKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002997 wdiEventData.pUserData = pUserData;
2998
2999 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3000
3001}/*WDI_RemoveSTAKeyReq*/
3002
3003
3004/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003005 @brief WDI_SetSTABcastKeyReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07003006 wants to install a STA Bcast encryption key on the HW.
3007 Upon the call of this API the WLAN DAL will pack and
3008 send a HAL Start request message to the lower RIVA
3009 sub-system if DAL is in state STARTED.
3010
3011 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003012 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003013
3014 WDI_PostAssocReq must have been called.
3015
Jeff Johnsone7245742012-09-05 17:12:55 -07003016 @param pwdiSetSTABcastKeyParams: the BSS Key set parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07003017 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003018
Jeff Johnson295189b2012-06-20 16:38:30 -07003019 wdiSetSTABcastKeyRspCb: callback for passing back the
3020 response of the set BSS Key operation received from the
3021 device
Jeff Johnsone7245742012-09-05 17:12:55 -07003022
Jeff Johnson295189b2012-06-20 16:38:30 -07003023 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003024 callback
3025
Jeff Johnson295189b2012-06-20 16:38:30 -07003026 @see WDI_PostAssocReq
3027 @return Result of the function call
3028*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003029WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003030WDI_SetSTABcastKeyReq
3031(
3032 WDI_SetSTAKeyReqParamsType* pwdiSetSTABcastKeyParams,
3033 WDI_SetSTAKeyRspCb wdiSetSTABcastKeyRspCb,
3034 void* pUserData
3035)
3036
3037{
3038 WDI_EventInfoType wdiEventData;
3039 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3040
3041 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003042 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003043 ------------------------------------------------------------------------*/
3044 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3045 {
3046 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3047 "WDI API call before module is initialized - Fail request");
3048
Jeff Johnsone7245742012-09-05 17:12:55 -07003049 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003050 }
3051
3052 /*------------------------------------------------------------------------
3053 Fill in Event data and post to the Main FSM
3054 ------------------------------------------------------------------------*/
3055 wdiEventData.wdiRequest = WDI_SET_STA_BCAST_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003056 wdiEventData.pEventData = pwdiSetSTABcastKeyParams;
3057 wdiEventData.uEventDataSize = sizeof(*pwdiSetSTABcastKeyParams);
3058 wdiEventData.pCBfnc = wdiSetSTABcastKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003059 wdiEventData.pUserData = pUserData;
3060
3061 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3062
3063}/*WDI_SetSTABcastKeyReq*/
3064
3065/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003066 @brief WDI_RemoveSTABcastKeyReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07003067 MAC wants to uninstall a STA Bcast key from HW. Upon the
3068 call of this API the WLAN DAL will pack and send a HAL
3069 Remove STA Bcast Key request message to the lower RIVA
3070 sub-system if DAL is in state STARTED.
3071
3072 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003073 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003074
3075 WDI_SetSTABcastKeyReq must have been called.
3076
Jeff Johnsone7245742012-09-05 17:12:55 -07003077 @param pwdiRemoveSTABcastKeyParams: the remove BSS key
Jeff Johnson295189b2012-06-20 16:38:30 -07003078 parameters as specified by the Device
3079 Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003080
Jeff Johnson295189b2012-06-20 16:38:30 -07003081 wdiRemoveSTABcastKeyRspCb: callback for passing back the
3082 response of the remove STA Bcast key operation received
3083 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003084
Jeff Johnson295189b2012-06-20 16:38:30 -07003085 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003086 callback
3087
Jeff Johnson295189b2012-06-20 16:38:30 -07003088 @see WDI_SetSTABcastKeyReq
3089 @return Result of the function call
3090*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003091WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003092WDI_RemoveSTABcastKeyReq
3093(
3094 WDI_RemoveSTAKeyReqParamsType* pwdiRemoveSTABcastKeyParams,
3095 WDI_RemoveSTAKeyRspCb wdiRemoveSTABcastKeyRspCb,
3096 void* pUserData
3097)
3098{
3099 WDI_EventInfoType wdiEventData;
3100 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3101
3102 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003103 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003104 ------------------------------------------------------------------------*/
3105 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3106 {
3107 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3108 "WDI API call before module is initialized - Fail request");
3109
Jeff Johnsone7245742012-09-05 17:12:55 -07003110 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003111 }
3112
3113 /*------------------------------------------------------------------------
3114 Fill in Event data and post to the Main FSM
3115 ------------------------------------------------------------------------*/
3116 wdiEventData.wdiRequest = WDI_RMV_STA_BCAST_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003117 wdiEventData.pEventData = pwdiRemoveSTABcastKeyParams;
3118 wdiEventData.uEventDataSize = sizeof(*pwdiRemoveSTABcastKeyParams);
3119 wdiEventData.pCBfnc = wdiRemoveSTABcastKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003120 wdiEventData.pUserData = pUserData;
3121
3122 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3123
3124}/*WDI_RemoveSTABcastKeyReq*/
3125
3126/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003127 @brief WDI_SetMaxTxPowerReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07003128 MAC wants to set Max Tx Power to HW. Upon the
3129 call of this API the WLAN DAL will pack and send a HAL
3130 Remove STA Bcast Key request message to the lower RIVA
3131 sub-system if DAL is in state STARTED.
3132
3133 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003134 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003135
3136 WDI_SetSTABcastKeyReq must have been called.
3137
Jeff Johnsone7245742012-09-05 17:12:55 -07003138 @param pwdiRemoveSTABcastKeyParams: the remove BSS key
Jeff Johnson295189b2012-06-20 16:38:30 -07003139 parameters as specified by the Device
3140 Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003141
Jeff Johnson295189b2012-06-20 16:38:30 -07003142 wdiRemoveSTABcastKeyRspCb: callback for passing back the
3143 response of the remove STA Bcast key operation received
3144 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003145
Jeff Johnson295189b2012-06-20 16:38:30 -07003146 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003147 callback
3148
Jeff Johnson295189b2012-06-20 16:38:30 -07003149 @see WDI_SetMaxTxPowerReq
3150 @return Result of the function call
3151*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003152WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003153WDI_SetMaxTxPowerReq
3154(
3155 WDI_SetMaxTxPowerParamsType* pwdiSetMaxTxPowerParams,
3156 WDA_SetMaxTxPowerRspCb wdiReqStatusCb,
3157 void* pUserData
3158)
3159{
3160 WDI_EventInfoType wdiEventData;
3161 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3162
3163 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003164 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003165 ------------------------------------------------------------------------*/
3166 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3167 {
3168 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3169 "WDI API call before module is initialized - Fail request");
3170
Jeff Johnsone7245742012-09-05 17:12:55 -07003171 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003172 }
3173
3174 /*------------------------------------------------------------------------
3175 Fill in Event data and post to the Main FSM
3176 ------------------------------------------------------------------------*/
3177 wdiEventData.wdiRequest = WDI_SET_MAX_TX_POWER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003178 wdiEventData.pEventData = pwdiSetMaxTxPowerParams;
3179 wdiEventData.uEventDataSize = sizeof(*pwdiSetMaxTxPowerParams);
3180 wdiEventData.pCBfnc = wdiReqStatusCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003181 wdiEventData.pUserData = pUserData;
3182
3183 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3184}
3185
schang86c22c42013-03-13 18:41:24 -07003186/**
Arif Hussaina5ebce02013-08-09 15:09:58 -07003187 @brief WDI_SetMaxTxPowerPerBandReq will be called when the upper
3188 MAC wants to set Max Tx Power to HW for specific band.
3189
3190 @param pwdiSetMaxTxPowerPerBandParams: Tx Power Information
3191
3192 wdiReqStatusCb: callback for passing back the
3193 response msg from the device
3194
3195 pUserData: user data will be passed back with the
3196 callback
3197
3198 @see WDI_SetMaxTxPowerPerBandReq
3199 @return Result of the function call
3200*/
3201WDI_Status
3202WDI_SetMaxTxPowerPerBandReq
3203(
3204 WDI_SetMaxTxPowerPerBandParamsType* pwdiSetMaxTxPowerPerBandParams,
3205 WDA_SetMaxTxPowerPerBandRspCb wdiReqStatusCb,
3206 void* pUserData
3207)
3208{
3209 WDI_EventInfoType wdiEventData;
3210 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3211
3212 /*------------------------------------------------------------------------
3213 Sanity Check
3214 ------------------------------------------------------------------------*/
3215 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3216 {
3217 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3218 "WDI API call before module is initialized - Fail request");
3219
3220 return WDI_STATUS_E_NOT_ALLOWED;
3221 }
3222
3223 /*------------------------------------------------------------------------
3224 Fill in Event data and post to the Main FSM
3225 ------------------------------------------------------------------------*/
3226 wdiEventData.wdiRequest = WDI_SET_MAX_TX_POWER_PER_BAND_REQ;
3227 wdiEventData.pEventData = pwdiSetMaxTxPowerPerBandParams;
3228 wdiEventData.uEventDataSize = sizeof(*pwdiSetMaxTxPowerPerBandParams);
3229 wdiEventData.pCBfnc = wdiReqStatusCb;
3230 wdiEventData.pUserData = pUserData;
3231
3232 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3233}
3234
3235/**
schang86c22c42013-03-13 18:41:24 -07003236 @brief WDI_SetTxPowerReq will be called when the upper
3237 MAC wants to set Tx Power to HW.
3238 In state BUSY this request will be queued. Request won't
3239 be allowed in any other state.
3240
3241
3242 @param pwdiSetTxPowerParams: set TS Power parameters
3243 BSSID and target TX Power with dbm included
3244
3245 wdiReqStatusCb: callback for passing back the response
3246
3247 pUserData: user data will be passed back with the
3248 callback
3249
3250 @return Result of the function call
3251*/
3252WDI_Status
3253WDI_SetTxPowerReq
3254(
3255 WDI_SetTxPowerParamsType* pwdiSetTxPowerParams,
3256 WDA_SetTxPowerRspCb wdiReqStatusCb,
3257 void* pUserData
3258)
3259{
3260 WDI_EventInfoType wdiEventData;
3261 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3262
3263 /*------------------------------------------------------------------------
3264 Sanity Check
3265 ------------------------------------------------------------------------*/
3266 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3267 {
3268 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3269 "WDI API call before module is initialized - Fail request");
3270
3271 return WDI_STATUS_E_NOT_ALLOWED;
3272 }
3273
3274 /*------------------------------------------------------------------------
3275 Fill in Event data and post to the Main FSM
3276 ------------------------------------------------------------------------*/
3277 wdiEventData.wdiRequest = WDI_SET_TX_POWER_REQ;
3278 wdiEventData.pEventData = pwdiSetTxPowerParams;
3279 wdiEventData.uEventDataSize = sizeof(*pwdiSetTxPowerParams);
3280 wdiEventData.pCBfnc = wdiReqStatusCb;
3281 wdiEventData.pUserData = pUserData;
3282
3283 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3284}
3285
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -08003286#ifdef FEATURE_WLAN_ESE
Jeff Johnson295189b2012-06-20 16:38:30 -07003287WDI_Status
3288WDI_TSMStatsReq
3289(
3290 WDI_TSMStatsReqParamsType* pwdiTsmReqParams,
3291 WDI_TsmRspCb wdiReqStatusCb,
3292 void* pUserData
3293)
3294{
3295 WDI_EventInfoType wdiEventData;
3296 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Jeff Johnson295189b2012-06-20 16:38:30 -07003297 /*------------------------------------------------------------------------
3298 Sanity Check
3299 ------------------------------------------------------------------------*/
3300 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3301 {
3302 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3303 "WDI API call before module is initialized - Fail request");
3304
3305 return WDI_STATUS_E_NOT_ALLOWED;
3306 }
3307
3308 /*------------------------------------------------------------------------
3309 Fill in Event data and post to the Main FSM
3310 ------------------------------------------------------------------------*/
3311 wdiEventData.wdiRequest = WDI_TSM_STATS_REQ;
3312 wdiEventData.pEventData = pwdiTsmReqParams;
3313 wdiEventData.uEventDataSize = sizeof(*pwdiTsmReqParams);
3314 wdiEventData.pCBfnc = wdiReqStatusCb;
3315 wdiEventData.pUserData = pUserData;
3316
3317 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3318
3319}
3320#endif
3321
3322/*========================================================================
3323
3324 QoS and BA APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07003325
Jeff Johnson295189b2012-06-20 16:38:30 -07003326==========================================================================*/
3327
3328/**
3329 @brief WDI_AddTSReq will be called when the upper MAC to inform
3330 the device of a successful add TSpec negotiation. HW
3331 needs to receive the TSpec Info from the UMAC in order
3332 to configure properly the QoS data traffic. Upon the
3333 call of this API the WLAN DAL will pack and send a HAL
3334 Add TS request message to the lower RIVA sub-system if
3335 DAL is in state STARTED.
3336
3337 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003338 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003339
3340 WDI_PostAssocReq must have been called.
3341
3342 @param wdiAddTsReqParams: the add TS parameters as specified by
3343 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003344
Jeff Johnson295189b2012-06-20 16:38:30 -07003345 wdiAddTsRspCb: callback for passing back the response of
3346 the add TS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003347
Jeff Johnson295189b2012-06-20 16:38:30 -07003348 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003349 callback
3350
Jeff Johnson295189b2012-06-20 16:38:30 -07003351 @see WDI_PostAssocReq
3352 @return Result of the function call
3353*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003354WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003355WDI_AddTSReq
3356(
3357 WDI_AddTSReqParamsType* pwdiAddTsReqParams,
3358 WDI_AddTsRspCb wdiAddTsRspCb,
3359 void* pUserData
3360)
3361{
3362 WDI_EventInfoType wdiEventData;
3363 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3364
3365 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003366 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003367 ------------------------------------------------------------------------*/
3368 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3369 {
3370 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3371 "WDI API call before module is initialized - Fail request");
3372
Jeff Johnsone7245742012-09-05 17:12:55 -07003373 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003374 }
3375
3376 /*------------------------------------------------------------------------
3377 Fill in Event data and post to the Main FSM
3378 ------------------------------------------------------------------------*/
3379 wdiEventData.wdiRequest = WDI_ADD_TS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003380 wdiEventData.pEventData = pwdiAddTsReqParams;
3381 wdiEventData.uEventDataSize = sizeof(*pwdiAddTsReqParams);
3382 wdiEventData.pCBfnc = wdiAddTsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003383 wdiEventData.pUserData = pUserData;
3384
3385 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3386
3387}/*WDI_AddTSReq*/
3388
3389
3390
3391/**
3392 @brief WDI_DelTSReq will be called when the upper MAC has ended
3393 admission on a specific AC. This is to inform HW that
3394 QoS traffic parameters must be rest. Upon the call of
3395 this API the WLAN DAL will pack and send a HAL Del TS
3396 request message to the lower RIVA sub-system if DAL is
3397 in state STARTED.
3398
3399 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003400 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003401
3402 WDI_AddTSReq must have been called.
3403
3404 @param wdiDelTsReqParams: the del TS parameters as specified by
3405 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003406
Jeff Johnson295189b2012-06-20 16:38:30 -07003407 wdiDelTsRspCb: callback for passing back the response of
3408 the del TS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003409
Jeff Johnson295189b2012-06-20 16:38:30 -07003410 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003411 callback
3412
Jeff Johnson295189b2012-06-20 16:38:30 -07003413 @see WDI_AddTSReq
3414 @return Result of the function call
3415*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003416WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003417WDI_DelTSReq
3418(
3419 WDI_DelTSReqParamsType* pwdiDelTsReqParams,
3420 WDI_DelTsRspCb wdiDelTsRspCb,
3421 void* pUserData
3422)
3423{
3424 WDI_EventInfoType wdiEventData;
3425 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3426
3427 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003428 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003429 ------------------------------------------------------------------------*/
3430 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3431 {
3432 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3433 "WDI API call before module is initialized - Fail request");
3434
Jeff Johnsone7245742012-09-05 17:12:55 -07003435 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003436 }
3437
3438 /*------------------------------------------------------------------------
3439 Fill in Event data and post to the Main FSM
3440 ------------------------------------------------------------------------*/
3441 wdiEventData.wdiRequest = WDI_DEL_TS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003442 wdiEventData.pEventData = pwdiDelTsReqParams;
3443 wdiEventData.uEventDataSize = sizeof(*pwdiDelTsReqParams);
3444 wdiEventData.pCBfnc = wdiDelTsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003445 wdiEventData.pUserData = pUserData;
3446
3447 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3448
3449}/*WDI_DelTSReq*/
3450
3451
3452
3453/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003454 @brief WDI_UpdateEDCAParams will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07003455 wishes to update the EDCA parameters used by HW for QoS
3456 data traffic. Upon the call of this API the WLAN DAL
3457 will pack and send a HAL Update EDCA Params request
3458 message to the lower RIVA sub-system if DAL is in state
3459 STARTED.
3460
3461 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003462 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003463
3464 WDI_PostAssocReq must have been called.
3465
Jeff Johnsone7245742012-09-05 17:12:55 -07003466 @param wdiUpdateEDCAParams: the start parameters as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07003467 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003468
Jeff Johnson295189b2012-06-20 16:38:30 -07003469 wdiUpdateEDCAParamsRspCb: callback for passing back the
3470 response of the start operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003471
Jeff Johnson295189b2012-06-20 16:38:30 -07003472 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003473 callback
3474
Jeff Johnson295189b2012-06-20 16:38:30 -07003475 @see WDI_PostAssocReq
3476 @return Result of the function call
3477*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003478WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003479WDI_UpdateEDCAParams
3480(
3481 WDI_UpdateEDCAParamsType* pwdiUpdateEDCAParams,
3482 WDI_UpdateEDCAParamsRspCb wdiUpdateEDCAParamsRspCb,
3483 void* pUserData
3484)
3485{
3486 WDI_EventInfoType wdiEventData;
3487 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3488
3489 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003490 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003491 ------------------------------------------------------------------------*/
3492 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3493 {
3494 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3495 "WDI API call before module is initialized - Fail request");
3496
Jeff Johnsone7245742012-09-05 17:12:55 -07003497 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003498 }
3499
3500 /*------------------------------------------------------------------------
3501 Fill in Event data and post to the Main FSM
3502 ------------------------------------------------------------------------*/
3503 wdiEventData.wdiRequest = WDI_UPD_EDCA_PRMS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003504 wdiEventData.pEventData = pwdiUpdateEDCAParams;
3505 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateEDCAParams);
3506 wdiEventData.pCBfnc = wdiUpdateEDCAParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003507 wdiEventData.pUserData = pUserData;
3508
3509 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3510
3511}/*WDI_UpdateEDCAParams*/
3512
3513
3514/**
3515 @brief WDI_AddBASessionReq will be called when the upper MAC has setup
3516 successfully a BA session and needs to notify the HW for
3517 the appropriate settings to take place. Upon the call of
3518 this API the WLAN DAL will pack and send a HAL Add BA
3519 request message to the lower RIVA sub-system if DAL is
3520 in state STARTED.
3521
3522 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003523 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003524
3525 WDI_PostAssocReq must have been called.
3526
3527 @param wdiAddBAReqParams: the add BA parameters as specified by
3528 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003529
Jeff Johnson295189b2012-06-20 16:38:30 -07003530 wdiAddBARspCb: callback for passing back the response of
3531 the add BA operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003532
Jeff Johnson295189b2012-06-20 16:38:30 -07003533 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003534 callback
3535
Jeff Johnson295189b2012-06-20 16:38:30 -07003536 @see WDI_PostAssocReq
3537 @return Result of the function call
3538*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003539WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003540WDI_AddBASessionReq
3541(
3542 WDI_AddBASessionReqParamsType* pwdiAddBASessionReqParams,
3543 WDI_AddBASessionRspCb wdiAddBASessionRspCb,
3544 void* pUserData
3545)
3546{
3547 WDI_EventInfoType wdiEventData;
3548 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3549
3550 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003551 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003552 ------------------------------------------------------------------------*/
3553 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3554 {
3555 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3556 "WDI API call before module is initialized - Fail request");
3557
Jeff Johnsone7245742012-09-05 17:12:55 -07003558 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003559 }
3560
3561 /*------------------------------------------------------------------------
3562 Fill in Event data and post to the Main FSM
3563 ------------------------------------------------------------------------*/
3564 wdiEventData.wdiRequest = WDI_ADD_BA_SESSION_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003565 wdiEventData.pEventData = pwdiAddBASessionReqParams;
3566 wdiEventData.uEventDataSize = sizeof(*pwdiAddBASessionReqParams);
3567 wdiEventData.pCBfnc = wdiAddBASessionRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003568 wdiEventData.pUserData = pUserData;
3569
3570 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3571
3572}/*WDI_AddBASessionReq*/
3573
3574/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003575 @brief WDI_DelBAReq will be called when the upper MAC wants to
Jeff Johnson295189b2012-06-20 16:38:30 -07003576 inform HW that it has deleted a previously created BA
3577 session. Upon the call of this API the WLAN DAL will
3578 pack and send a HAL Del BA request message to the lower
3579 RIVA sub-system if DAL is in state STARTED.
3580
3581 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003582 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003583
3584 WDI_AddBAReq must have been called.
3585
3586 @param wdiDelBAReqParams: the del BA parameters as specified by
3587 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003588
Jeff Johnson295189b2012-06-20 16:38:30 -07003589 wdiDelBARspCb: callback for passing back the response of
3590 the del BA operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003591
Jeff Johnson295189b2012-06-20 16:38:30 -07003592 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003593 callback
3594
Jeff Johnson295189b2012-06-20 16:38:30 -07003595 @see WDI_AddBAReq
3596 @return Result of the function call
3597*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003598WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003599WDI_DelBAReq
3600(
3601 WDI_DelBAReqParamsType* pwdiDelBAReqParams,
3602 WDI_DelBARspCb wdiDelBARspCb,
3603 void* pUserData
3604)
3605{
3606 WDI_EventInfoType wdiEventData;
3607 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3608
3609 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003610 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003611 ------------------------------------------------------------------------*/
3612 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3613 {
3614 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3615 "WDI API call before module is initialized - Fail request");
3616
Jeff Johnsone7245742012-09-05 17:12:55 -07003617 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003618 }
3619
3620 /*------------------------------------------------------------------------
3621 Fill in Event data and post to the Main FSM
3622 ------------------------------------------------------------------------*/
3623 wdiEventData.wdiRequest = WDI_DEL_BA_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003624 wdiEventData.pEventData = pwdiDelBAReqParams;
3625 wdiEventData.uEventDataSize = sizeof(*pwdiDelBAReqParams);
3626 wdiEventData.pCBfnc = wdiDelBARspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003627 wdiEventData.pUserData = pUserData;
3628
3629 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3630
3631}/*WDI_DelBAReq*/
3632
Jeff Johnsone7245742012-09-05 17:12:55 -07003633/*========================================================================
3634
Jeff Johnson295189b2012-06-20 16:38:30 -07003635 Power Save APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07003636
Jeff Johnson295189b2012-06-20 16:38:30 -07003637==========================================================================*/
3638
3639/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003640 @brief WDI_SetPwrSaveCfgReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07003641 wants to set the power save related configurations of
3642 the WLAN Device. Upon the call of this API the WLAN DAL
3643 will pack and send a HAL Update CFG request message to
3644 the lower RIVA sub-system if DAL is in state STARTED.
3645
3646 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003647 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003648
3649 WDI_Start must have been called.
3650
Jeff Johnsone7245742012-09-05 17:12:55 -07003651 @param pwdiPowerSaveCfg: the power save cfg parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07003652 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003653
Jeff Johnson295189b2012-06-20 16:38:30 -07003654 wdiSetPwrSaveCfgCb: callback for passing back the
3655 response of the set power save cfg operation received
3656 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003657
Jeff Johnson295189b2012-06-20 16:38:30 -07003658 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003659 callback
3660
Jeff Johnson295189b2012-06-20 16:38:30 -07003661 @see WDI_Start
Jeff Johnsone7245742012-09-05 17:12:55 -07003662 @return Result of the function call
3663*/
3664WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003665WDI_SetPwrSaveCfgReq
3666(
3667 WDI_UpdateCfgReqParamsType* pwdiPowerSaveCfg,
3668 WDI_SetPwrSaveCfgCb wdiSetPwrSaveCfgCb,
3669 void* pUserData
3670)
3671{
3672 WDI_EventInfoType wdiEventData;
3673 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3674
3675 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003676 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003677 ------------------------------------------------------------------------*/
3678 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3679 {
3680 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3681 "WDI API call before module is initialized - Fail request");
3682
Jeff Johnsone7245742012-09-05 17:12:55 -07003683 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003684 }
3685
3686 /*------------------------------------------------------------------------
3687 Fill in Event data and post to the Main FSM
3688 ------------------------------------------------------------------------*/
3689 wdiEventData.wdiRequest = WDI_UPDATE_CFG_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003690 wdiEventData.pEventData = pwdiPowerSaveCfg;
3691 wdiEventData.uEventDataSize = sizeof(*pwdiPowerSaveCfg);
3692 wdiEventData.pCBfnc = wdiSetPwrSaveCfgCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003693 wdiEventData.pUserData = pUserData;
3694
3695 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3696
3697}/*WDI_SetPwrSaveCfgReq*/
3698
3699/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003700 @brief WDI_EnterImpsReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07003701 request the device to get into IMPS power state. Upon
3702 the call of this API the WLAN DAL will send a HAL Enter
3703 IMPS request message to the lower RIVA sub-system if DAL
3704 is in state STARTED.
3705
3706 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003707 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003708
Jeff Johnsone7245742012-09-05 17:12:55 -07003709
3710 @param wdiEnterImpsRspCb: callback for passing back the
Jeff Johnson295189b2012-06-20 16:38:30 -07003711 response of the Enter IMPS operation received from the
3712 device
Jeff Johnsone7245742012-09-05 17:12:55 -07003713
Jeff Johnson295189b2012-06-20 16:38:30 -07003714 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003715 callback
3716
Jeff Johnson295189b2012-06-20 16:38:30 -07003717 @see WDI_Start
3718 @return Result of the function call
3719*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003720WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003721WDI_EnterImpsReq
3722(
Mihir Shetea4306052014-03-25 00:02:54 +05303723 WDI_EnterImpsReqParamsType *pwdiEnterImpsReqParams,
Jeff Johnson295189b2012-06-20 16:38:30 -07003724 WDI_EnterImpsRspCb wdiEnterImpsRspCb,
3725 void* pUserData
3726)
3727{
3728 WDI_EventInfoType wdiEventData;
3729 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3730
3731 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003732 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003733 ------------------------------------------------------------------------*/
3734 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3735 {
3736 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3737 "WDI API call before module is initialized - Fail request");
3738
Jeff Johnsone7245742012-09-05 17:12:55 -07003739 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003740 }
3741
3742 /*------------------------------------------------------------------------
3743 Fill in Event data and post to the Main FSM
3744 ------------------------------------------------------------------------*/
3745 wdiEventData.wdiRequest = WDI_ENTER_IMPS_REQ;
Mihir Shetea4306052014-03-25 00:02:54 +05303746 wdiEventData.pEventData = pwdiEnterImpsReqParams;
3747 wdiEventData.uEventDataSize = sizeof(*pwdiEnterImpsReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07003748 wdiEventData.pCBfnc = wdiEnterImpsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003749 wdiEventData.pUserData = pUserData;
3750
3751 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3752
3753}/*WDI_EnterImpsReq*/
3754
3755/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003756 @brief WDI_ExitImpsReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07003757 request the device to get out of IMPS power state. Upon
3758 the call of this API the WLAN DAL will send a HAL Exit
3759 IMPS request message to the lower RIVA sub-system if DAL
3760 is in state STARTED.
3761
3762 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003763 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003764
Jeff Johnson295189b2012-06-20 16:38:30 -07003765
Jeff Johnsone7245742012-09-05 17:12:55 -07003766
3767 @param wdiExitImpsRspCb: callback for passing back the response
Jeff Johnson295189b2012-06-20 16:38:30 -07003768 of the Exit IMPS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003769
Jeff Johnson295189b2012-06-20 16:38:30 -07003770 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003771 callback
3772
Jeff Johnson295189b2012-06-20 16:38:30 -07003773 @see WDI_Start
3774 @return Result of the function call
3775*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003776WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003777WDI_ExitImpsReq
3778(
3779 WDI_ExitImpsRspCb wdiExitImpsRspCb,
3780 void* pUserData
3781)
3782{
3783 WDI_EventInfoType wdiEventData;
3784 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3785
3786 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003787 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003788 ------------------------------------------------------------------------*/
3789 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3790 {
3791 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3792 "WDI API call before module is initialized - Fail request");
3793
Jeff Johnsone7245742012-09-05 17:12:55 -07003794 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003795 }
3796
3797 /*------------------------------------------------------------------------
3798 Fill in Event data and post to the Main FSM
3799 ------------------------------------------------------------------------*/
3800 wdiEventData.wdiRequest = WDI_EXIT_IMPS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003801 wdiEventData.pEventData = NULL;
3802 wdiEventData.uEventDataSize = 0;
3803 wdiEventData.pCBfnc = wdiExitImpsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003804 wdiEventData.pUserData = pUserData;
3805
3806 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3807
3808}/*WDI_ExitImpsReq*/
3809
3810/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003811 @brief WDI_EnterBmpsReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07003812 request the device to get into BMPS power state. Upon
3813 the call of this API the WLAN DAL will pack and send a
3814 HAL Enter BMPS request message to the lower RIVA
3815 sub-system if DAL is in state STARTED.
3816
3817 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003818 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003819
3820 WDI_PostAssocReq must have been called.
3821
Jeff Johnsone7245742012-09-05 17:12:55 -07003822 @param pwdiEnterBmpsReqParams: the Enter BMPS parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07003823 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003824
Jeff Johnson295189b2012-06-20 16:38:30 -07003825 wdiEnterBmpsRspCb: callback for passing back the
3826 response of the Enter BMPS operation received from the
3827 device
Jeff Johnsone7245742012-09-05 17:12:55 -07003828
Jeff Johnson295189b2012-06-20 16:38:30 -07003829 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003830 callback
3831
Jeff Johnson295189b2012-06-20 16:38:30 -07003832 @see WDI_PostAssocReq
3833 @return Result of the function call
3834*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003835WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003836WDI_EnterBmpsReq
3837(
3838 WDI_EnterBmpsReqParamsType *pwdiEnterBmpsReqParams,
3839 WDI_EnterBmpsRspCb wdiEnterBmpsRspCb,
3840 void* pUserData
3841)
3842{
3843 WDI_EventInfoType wdiEventData;
3844 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3845
3846 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003847 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003848 ------------------------------------------------------------------------*/
3849 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3850 {
3851 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3852 "WDI API call before module is initialized - Fail request");
3853
Jeff Johnsone7245742012-09-05 17:12:55 -07003854 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003855 }
3856
3857 /*------------------------------------------------------------------------
3858 Fill in Event data and post to the Main FSM
3859 ------------------------------------------------------------------------*/
3860 wdiEventData.wdiRequest = WDI_ENTER_BMPS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003861 wdiEventData.pEventData = pwdiEnterBmpsReqParams;
3862 wdiEventData.uEventDataSize = sizeof(*pwdiEnterBmpsReqParams);
3863 wdiEventData.pCBfnc = wdiEnterBmpsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003864 wdiEventData.pUserData = pUserData;
3865
3866 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3867
3868}/*WDI_EnterBmpsReq*/
3869
3870/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003871 @brief WDI_ExitBmpsReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07003872 request the device to get out of BMPS power state. Upon
3873 the call of this API the WLAN DAL will pack and send a
3874 HAL Exit BMPS request message to the lower RIVA
3875 sub-system if DAL is in state STARTED.
3876
3877 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003878 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003879
3880 WDI_PostAssocReq must have been called.
3881
Jeff Johnsone7245742012-09-05 17:12:55 -07003882 @param pwdiExitBmpsReqParams: the Exit BMPS parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07003883 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003884
Jeff Johnson295189b2012-06-20 16:38:30 -07003885 wdiExitBmpsRspCb: callback for passing back the response
3886 of the Exit BMPS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003887
Jeff Johnson295189b2012-06-20 16:38:30 -07003888 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003889 callback
3890
Jeff Johnson295189b2012-06-20 16:38:30 -07003891 @see WDI_PostAssocReq
3892 @return Result of the function call
3893*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003894WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003895WDI_ExitBmpsReq
3896(
3897 WDI_ExitBmpsReqParamsType *pwdiExitBmpsReqParams,
3898 WDI_ExitBmpsRspCb wdiExitBmpsRspCb,
3899 void* pUserData
3900)
3901{
3902 WDI_EventInfoType wdiEventData;
3903 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3904
3905 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003906 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003907 ------------------------------------------------------------------------*/
3908 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3909 {
3910 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3911 "WDI API call before module is initialized - Fail request");
3912
Jeff Johnsone7245742012-09-05 17:12:55 -07003913 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003914 }
3915
3916 /*------------------------------------------------------------------------
3917 Fill in Event data and post to the Main FSM
3918 ------------------------------------------------------------------------*/
3919 wdiEventData.wdiRequest = WDI_EXIT_BMPS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003920 wdiEventData.pEventData = pwdiExitBmpsReqParams;
3921 wdiEventData.uEventDataSize = sizeof(*pwdiExitBmpsReqParams);
3922 wdiEventData.pCBfnc = wdiExitBmpsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003923 wdiEventData.pUserData = pUserData;
3924
3925 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3926
3927}/*WDI_ExitBmpsReq*/
3928
3929/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003930 @brief WDI_EnterUapsdReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07003931 request the device to get into UAPSD power state. Upon
3932 the call of this API the WLAN DAL will pack and send a
3933 HAL Enter UAPSD request message to the lower RIVA
3934 sub-system if DAL is in state STARTED.
3935
3936 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003937 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003938
3939 WDI_PostAssocReq must have been called.
3940 WDI_SetUapsdAcParamsReq must have been called.
Jeff Johnsone7245742012-09-05 17:12:55 -07003941
3942 @param pwdiEnterUapsdReqParams: the Enter UAPSD parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07003943 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003944
Jeff Johnson295189b2012-06-20 16:38:30 -07003945 wdiEnterUapsdRspCb: callback for passing back the
3946 response of the Enter UAPSD operation received from the
3947 device
Jeff Johnsone7245742012-09-05 17:12:55 -07003948
Jeff Johnson295189b2012-06-20 16:38:30 -07003949 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003950 callback
3951
Jeff Johnson295189b2012-06-20 16:38:30 -07003952 @see WDI_PostAssocReq, WDI_SetUapsdAcParamsReq
3953 @return Result of the function call
3954*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003955WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003956WDI_EnterUapsdReq
3957(
3958 WDI_EnterUapsdReqParamsType *pwdiEnterUapsdReqParams,
3959 WDI_EnterUapsdRspCb wdiEnterUapsdRspCb,
3960 void* pUserData
3961)
3962{
3963 WDI_EventInfoType wdiEventData;
3964 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3965
3966 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003967 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003968 ------------------------------------------------------------------------*/
3969 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3970 {
3971 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3972 "WDI API call before module is initialized - Fail request");
3973
Jeff Johnsone7245742012-09-05 17:12:55 -07003974 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003975 }
3976
3977 /*------------------------------------------------------------------------
3978 Fill in Event data and post to the Main FSM
3979 ------------------------------------------------------------------------*/
3980 wdiEventData.wdiRequest = WDI_ENTER_UAPSD_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003981 wdiEventData.pEventData = pwdiEnterUapsdReqParams;
3982 wdiEventData.uEventDataSize = sizeof(*pwdiEnterUapsdReqParams);
3983 wdiEventData.pCBfnc = wdiEnterUapsdRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003984 wdiEventData.pUserData = pUserData;
3985
3986 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3987
3988}/*WDI_EnterUapsdReq*/
3989
3990/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003991 @brief WDI_ExitUapsdReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07003992 request the device to get out of UAPSD power state. Upon
3993 the call of this API the WLAN DAL will send a HAL Exit
3994 UAPSD request message to the lower RIVA sub-system if
3995 DAL is in state STARTED.
3996
3997 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003998 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003999
4000 WDI_PostAssocReq must have been called.
4001
Jeff Johnsone7245742012-09-05 17:12:55 -07004002 @param wdiExitUapsdRspCb: callback for passing back the
Jeff Johnson295189b2012-06-20 16:38:30 -07004003 response of the Exit UAPSD operation received from the
4004 device
Jeff Johnsone7245742012-09-05 17:12:55 -07004005
Jeff Johnson295189b2012-06-20 16:38:30 -07004006 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004007 callback
4008
Jeff Johnson295189b2012-06-20 16:38:30 -07004009 @see WDI_PostAssocReq
4010 @return Result of the function call
4011*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004012WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004013WDI_ExitUapsdReq
4014(
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -07004015 WDI_ExitUapsdReqParamsType *pwdiExitUapsdReqParams,
Jeff Johnson295189b2012-06-20 16:38:30 -07004016 WDI_ExitUapsdRspCb wdiExitUapsdRspCb,
4017 void* pUserData
4018)
4019{
4020 WDI_EventInfoType wdiEventData;
4021 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4022
4023 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004024 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004025 ------------------------------------------------------------------------*/
4026 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4027 {
4028 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4029 "WDI API call before module is initialized - Fail request");
4030
Jeff Johnsone7245742012-09-05 17:12:55 -07004031 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004032 }
4033
4034 /*------------------------------------------------------------------------
4035 Fill in Event data and post to the Main FSM
4036 ------------------------------------------------------------------------*/
4037 wdiEventData.wdiRequest = WDI_EXIT_UAPSD_REQ;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -07004038 wdiEventData.pEventData = pwdiExitUapsdReqParams;
4039 wdiEventData.uEventDataSize = sizeof(*pwdiExitUapsdReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004040 wdiEventData.pCBfnc = wdiExitUapsdRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004041 wdiEventData.pUserData = pUserData;
4042
4043 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4044
4045}/*WDI_ExitUapsdReq*/
4046
4047/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004048 @brief WDI_UpdateUapsdParamsReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07004049 MAC wants to set the UAPSD related configurations
4050 of an associated STA (while acting as an AP) to the WLAN
4051 Device. Upon the call of this API the WLAN DAL will pack
4052 and send a HAL Update UAPSD params request message to
4053 the lower RIVA sub-system if DAL is in state STARTED.
4054
4055 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004056 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004057
4058 WDI_ConfigBSSReq must have been called.
4059
Jeff Johnsone7245742012-09-05 17:12:55 -07004060 @param pwdiUpdateUapsdReqParams: the UAPSD parameters
Jeff Johnson295189b2012-06-20 16:38:30 -07004061 as specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004062
Jeff Johnson295189b2012-06-20 16:38:30 -07004063 wdiUpdateUapsdParamsCb: callback for passing back the
4064 response of the update UAPSD params operation received
4065 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004066
Jeff Johnson295189b2012-06-20 16:38:30 -07004067 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004068 callback
4069
Jeff Johnson295189b2012-06-20 16:38:30 -07004070 @see WDI_ConfigBSSReq
4071 @return Result of the function call
4072*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004073WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004074WDI_UpdateUapsdParamsReq
4075(
4076 WDI_UpdateUapsdReqParamsType *pwdiUpdateUapsdReqParams,
4077 WDI_UpdateUapsdParamsCb wdiUpdateUapsdParamsCb,
4078 void* pUserData
4079)
4080{
4081 WDI_EventInfoType wdiEventData;
4082 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4083
4084 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004085 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004086 ------------------------------------------------------------------------*/
4087 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4088 {
4089 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4090 "WDI API call before module is initialized - Fail request");
4091
Jeff Johnsone7245742012-09-05 17:12:55 -07004092 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004093 }
4094
4095 /*------------------------------------------------------------------------
4096 Fill in Event data and post to the Main FSM
4097 ------------------------------------------------------------------------*/
4098 wdiEventData.wdiRequest = WDI_UPDATE_UAPSD_PARAM_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004099 wdiEventData.pEventData = pwdiUpdateUapsdReqParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07004100 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateUapsdReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004101 wdiEventData.pCBfnc = wdiUpdateUapsdParamsCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004102 wdiEventData.pUserData = pUserData;
4103
4104 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4105
4106}/*WDI_UpdateUapsdParamsReq*/
4107
4108/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004109 @brief WDI_SetUapsdAcParamsReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07004110 MAC wants to set the UAPSD related configurations before
4111 requesting for enter UAPSD power state to the WLAN
4112 Device. Upon the call of this API the WLAN DAL will pack
4113 and send a HAL Set UAPSD params request message to
4114 the lower RIVA sub-system if DAL is in state STARTED.
4115
4116 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004117 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004118
4119 WDI_PostAssocReq must have been called.
4120
4121 @param pwdiUapsdInfo: the UAPSD parameters as specified by
4122 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004123
Jeff Johnson295189b2012-06-20 16:38:30 -07004124 wdiSetUapsdAcParamsCb: callback for passing back the
4125 response of the set UAPSD params operation received from
4126 the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004127
Jeff Johnson295189b2012-06-20 16:38:30 -07004128 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004129 callback
4130
Jeff Johnson295189b2012-06-20 16:38:30 -07004131 @see WDI_PostAssocReq
4132 @return Result of the function call
4133*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004134WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004135WDI_SetUapsdAcParamsReq
4136(
4137 WDI_SetUapsdAcParamsReqParamsType* pwdiUapsdInfo,
4138 WDI_SetUapsdAcParamsCb wdiSetUapsdAcParamsCb,
4139 void* pUserData
4140)
4141{
4142 WDI_EventInfoType wdiEventData;
4143 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4144
4145 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004146 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004147 ------------------------------------------------------------------------*/
4148 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4149 {
4150 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4151 "WDI API call before module is initialized - Fail request");
4152
Jeff Johnsone7245742012-09-05 17:12:55 -07004153 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004154 }
4155
4156 /*------------------------------------------------------------------------
4157 Fill in Event data and post to the Main FSM
4158 ------------------------------------------------------------------------*/
4159 wdiEventData.wdiRequest = WDI_SET_UAPSD_PARAM_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004160 wdiEventData.pEventData = pwdiUapsdInfo;
4161 wdiEventData.uEventDataSize = sizeof(*pwdiUapsdInfo);
4162 wdiEventData.pCBfnc = wdiSetUapsdAcParamsCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004163 wdiEventData.pUserData = pUserData;
4164
4165 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4166
4167}/*WDI_SetUapsdAcParamsReq*/
4168
4169/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004170 @brief WDI_ConfigureRxpFilterReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07004171 MAC wants to set/reset the RXP filters for received pkts
4172 (MC, BC etc.). Upon the call of this API the WLAN DAL will pack
4173 and send a HAL configure RXP filter request message to
4174 the lower RIVA sub-system.
4175
4176 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004177 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004178
Jeff Johnsone7245742012-09-05 17:12:55 -07004179
4180 @param pwdiConfigureRxpFilterReqParams: the RXP
Jeff Johnson295189b2012-06-20 16:38:30 -07004181 filter as specified by the Device
4182 Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004183
Jeff Johnson295189b2012-06-20 16:38:30 -07004184 wdiConfigureRxpFilterCb: callback for passing back the
4185 response of the configure RXP filter operation received
4186 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004187
Jeff Johnson295189b2012-06-20 16:38:30 -07004188 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004189 callback
4190
Jeff Johnson295189b2012-06-20 16:38:30 -07004191 @return Result of the function call
4192*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004193WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004194WDI_ConfigureRxpFilterReq
4195(
4196 WDI_ConfigureRxpFilterReqParamsType *pwdiConfigureRxpFilterReqParams,
4197 WDI_ConfigureRxpFilterCb wdiConfigureRxpFilterCb,
4198 void* pUserData
4199)
4200{
4201 WDI_EventInfoType wdiEventData;
4202 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4203
4204 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004205 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004206 ------------------------------------------------------------------------*/
4207 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4208 {
4209 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4210 "WDI API call before module is initialized - Fail request");
4211
Jeff Johnsone7245742012-09-05 17:12:55 -07004212 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004213 }
4214
4215 /*------------------------------------------------------------------------
4216 Fill in Event data and post to the Main FSM
4217 ------------------------------------------------------------------------*/
4218 wdiEventData.wdiRequest = WDI_CONFIGURE_RXP_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004219 wdiEventData.pEventData = pwdiConfigureRxpFilterReqParams;
4220 wdiEventData.uEventDataSize = sizeof(*pwdiConfigureRxpFilterReqParams);
4221 wdiEventData.pCBfnc = wdiConfigureRxpFilterCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004222 wdiEventData.pUserData = pUserData;
4223
4224 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4225}/*WDI_ConfigureRxpFilterReq*/
4226
4227/**
4228 @brief WDI_SetBeaconFilterReq will be called when the upper MAC
4229 wants to set the beacon filters while in power save.
4230 Upon the call of this API the WLAN DAL will pack and
4231 send a Beacon filter request message to the
4232 lower RIVA sub-system.
4233
4234 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004235 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004236
Jeff Johnsone7245742012-09-05 17:12:55 -07004237
4238 @param pwdiBeaconFilterReqParams: the beacon
Jeff Johnson295189b2012-06-20 16:38:30 -07004239 filter as specified by the Device
4240 Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004241
Jeff Johnson295189b2012-06-20 16:38:30 -07004242 wdiBeaconFilterCb: callback for passing back the
4243 response of the set beacon filter operation received
4244 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004245
Jeff Johnson295189b2012-06-20 16:38:30 -07004246 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004247 callback
4248
Jeff Johnson295189b2012-06-20 16:38:30 -07004249 @return Result of the function call
4250*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004251WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004252WDI_SetBeaconFilterReq
4253(
4254 WDI_BeaconFilterReqParamsType *pwdiBeaconFilterReqParams,
4255 WDI_SetBeaconFilterCb wdiBeaconFilterCb,
4256 void* pUserData
4257)
4258{
4259 WDI_EventInfoType wdiEventData;
4260 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4261
4262 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004263 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004264 ------------------------------------------------------------------------*/
4265 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4266 {
4267 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4268 "WDI API call before module is initialized - Fail request");
4269
Jeff Johnsone7245742012-09-05 17:12:55 -07004270 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004271 }
4272
4273 /*------------------------------------------------------------------------
4274 Fill in Event data and post to the Main FSM
4275 ------------------------------------------------------------------------*/
4276 wdiEventData.wdiRequest = WDI_SET_BEACON_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004277 wdiEventData.pEventData = pwdiBeaconFilterReqParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07004278 wdiEventData.uEventDataSize = sizeof(*pwdiBeaconFilterReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004279 wdiEventData.pCBfnc = wdiBeaconFilterCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004280 wdiEventData.pUserData = pUserData;
4281
4282 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4283}/*WDI_SetBeaconFilterReq*/
4284
4285/**
4286 @brief WDI_RemBeaconFilterReq will be called when the upper MAC
4287 wants to remove the beacon filter for particular IE
4288 while in power save. Upon the call of this API the WLAN
4289 DAL will pack and send a remove Beacon filter request
4290 message to the lower RIVA sub-system.
4291
4292 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004293 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004294
Jeff Johnsone7245742012-09-05 17:12:55 -07004295
4296 @param pwdiBeaconFilterReqParams: the beacon
Jeff Johnson295189b2012-06-20 16:38:30 -07004297 filter as specified by the Device
4298 Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004299
Jeff Johnson295189b2012-06-20 16:38:30 -07004300 wdiBeaconFilterCb: callback for passing back the
4301 response of the remove beacon filter operation received
4302 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004303
Jeff Johnson295189b2012-06-20 16:38:30 -07004304 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004305 callback
4306
Jeff Johnson295189b2012-06-20 16:38:30 -07004307 @return Result of the function call
4308*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004309WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004310WDI_RemBeaconFilterReq
4311(
4312 WDI_RemBeaconFilterReqParamsType *pwdiBeaconFilterReqParams,
4313 WDI_RemBeaconFilterCb wdiBeaconFilterCb,
4314 void* pUserData
4315)
4316{
4317 WDI_EventInfoType wdiEventData;
4318 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4319
4320 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004321 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004322 ------------------------------------------------------------------------*/
4323 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4324 {
4325 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4326 "WDI API call before module is initialized - Fail request");
4327
Jeff Johnsone7245742012-09-05 17:12:55 -07004328 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004329 }
4330
4331 /*------------------------------------------------------------------------
4332 Fill in Event data and post to the Main FSM
4333 ------------------------------------------------------------------------*/
4334 wdiEventData.wdiRequest = WDI_REM_BEACON_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004335 wdiEventData.pEventData = pwdiBeaconFilterReqParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07004336 wdiEventData.uEventDataSize = sizeof(*pwdiBeaconFilterReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004337 wdiEventData.pCBfnc = wdiBeaconFilterCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004338 wdiEventData.pUserData = pUserData;
4339
4340 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4341}/*WDI_RemBeaconFilterReq*/
4342
4343/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004344 @brief WDI_SetRSSIThresholdsReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07004345 MAC wants to set the RSSI thresholds related
4346 configurations while in power save. Upon the call of
4347 this API the WLAN DAL will pack and send a HAL Set RSSI
4348 thresholds request message to the lower RIVA
4349 sub-system if DAL is in state STARTED.
4350
4351 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004352 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004353
4354 WDI_PostAssocReq must have been called.
4355
4356 @param pwdiUapsdInfo: the UAPSD parameters as specified by
4357 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004358
Jeff Johnson295189b2012-06-20 16:38:30 -07004359 wdiSetUapsdAcParamsCb: callback for passing back the
4360 response of the set UAPSD params operation received from
4361 the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004362
Jeff Johnson295189b2012-06-20 16:38:30 -07004363 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004364 callback
4365
Jeff Johnson295189b2012-06-20 16:38:30 -07004366 @see WDI_PostAssocReq
4367 @return Result of the function call
4368*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004369WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004370WDI_SetRSSIThresholdsReq
4371(
4372 WDI_SetRSSIThresholdsReqParamsType* pwdiRSSIThresholdsParams,
4373 WDI_SetRSSIThresholdsCb wdiSetRSSIThresholdsCb,
4374 void* pUserData
4375)
4376{
4377 WDI_EventInfoType wdiEventData;
4378 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4379
4380 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004381 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004382 ------------------------------------------------------------------------*/
4383 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4384 {
4385 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4386 "WDI API call before module is initialized - Fail request");
4387
Jeff Johnsone7245742012-09-05 17:12:55 -07004388 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004389 }
4390
4391 /*------------------------------------------------------------------------
4392 Fill in Event data and post to the Main FSM
4393 ------------------------------------------------------------------------*/
4394 wdiEventData.wdiRequest = WDI_SET_RSSI_THRESHOLDS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004395 wdiEventData.pEventData = pwdiRSSIThresholdsParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07004396 wdiEventData.uEventDataSize = sizeof(*pwdiRSSIThresholdsParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004397 wdiEventData.pCBfnc = wdiSetRSSIThresholdsCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004398 wdiEventData.pUserData = pUserData;
4399
4400 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4401}/* WDI_SetRSSIThresholdsReq*/
4402
4403/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004404 @brief WDI_HostOffloadReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004405 wants to set the filter to minimize unnecessary host
4406 wakeup due to broadcast traffic while in power save.
4407 Upon the call of this API the WLAN DAL will pack and
4408 send a HAL host offload request message to the
4409 lower RIVA sub-system if DAL is in state STARTED.
4410
4411 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004412 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004413
4414 WDI_PostAssocReq must have been called.
4415
Jeff Johnsone7245742012-09-05 17:12:55 -07004416 @param pwdiHostOffloadParams: the host offload as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07004417 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004418
Jeff Johnson295189b2012-06-20 16:38:30 -07004419 wdiHostOffloadCb: callback for passing back the response
4420 of the host offload operation received from the
4421 device
Jeff Johnsone7245742012-09-05 17:12:55 -07004422
Jeff Johnson295189b2012-06-20 16:38:30 -07004423 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004424 callback
4425
Jeff Johnson295189b2012-06-20 16:38:30 -07004426 @see WDI_PostAssocReq
4427 @return Result of the function call
4428*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004429WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004430WDI_HostOffloadReq
4431(
4432 WDI_HostOffloadReqParamsType* pwdiHostOffloadParams,
4433 WDI_HostOffloadCb wdiHostOffloadCb,
4434 void* pUserData
4435)
4436{
4437 WDI_EventInfoType wdiEventData;
4438 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4439
4440 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004441 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004442 ------------------------------------------------------------------------*/
4443 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4444 {
4445 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4446 "WDI API call before module is initialized - Fail request");
4447
Jeff Johnsone7245742012-09-05 17:12:55 -07004448 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004449 }
4450
4451 /*------------------------------------------------------------------------
4452 Fill in Event data and post to the Main FSM
4453 ------------------------------------------------------------------------*/
4454 wdiEventData.wdiRequest = WDI_HOST_OFFLOAD_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004455 wdiEventData.pEventData = pwdiHostOffloadParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07004456 wdiEventData.uEventDataSize = sizeof(*pwdiHostOffloadParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004457 wdiEventData.pCBfnc = wdiHostOffloadCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004458 wdiEventData.pUserData = pUserData;
4459
4460 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4461}/*WDI_HostOffloadReq*/
4462
4463/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004464 @brief WDI_KeepAliveReq will be called when the upper MAC
4465 wants to set the filter to send NULL or unsolicited ARP responses
Jeff Johnson295189b2012-06-20 16:38:30 -07004466 and minimize unnecessary host wakeups due to while in power save.
4467 Upon the call of this API the WLAN DAL will pack and
4468 send a HAL Keep Alive request message to the
4469 lower RIVA sub-system if DAL is in state STARTED.
4470
4471 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004472 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004473
4474 WDI_PostAssocReq must have been called.
4475
Jeff Johnsone7245742012-09-05 17:12:55 -07004476 @param pwdiKeepAliveParams: the Keep Alive as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07004477 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004478
Jeff Johnson295189b2012-06-20 16:38:30 -07004479 wdiKeepAliveCb: callback for passing back the response
4480 of the Keep Alive operation received from the
4481 device
Jeff Johnsone7245742012-09-05 17:12:55 -07004482
Jeff Johnson295189b2012-06-20 16:38:30 -07004483 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004484 callback
4485
Jeff Johnson295189b2012-06-20 16:38:30 -07004486 @see WDI_PostAssocReq
4487 @return Result of the function call
4488*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004489WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004490WDI_KeepAliveReq
4491(
4492 WDI_KeepAliveReqParamsType* pwdiKeepAliveParams,
4493 WDI_KeepAliveCb wdiKeepAliveCb,
4494 void* pUserData
4495)
4496{
4497 WDI_EventInfoType wdiEventData;
4498 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4499
4500 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004501 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004502 ------------------------------------------------------------------------*/
4503 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4504 {
4505 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4506 "WDI_KeepAliveReq: WDI API call before module "
4507 "is initialized - Fail request");
4508
Jeff Johnsone7245742012-09-05 17:12:55 -07004509 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004510 }
4511
4512 /*------------------------------------------------------------------------
4513 Fill in Event data and post to the Main FSM
4514 ------------------------------------------------------------------------*/
4515 wdiEventData.wdiRequest = WDI_KEEP_ALIVE_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004516 wdiEventData.pEventData = pwdiKeepAliveParams;
4517 wdiEventData.uEventDataSize = sizeof(*pwdiKeepAliveParams);
4518 wdiEventData.pCBfnc = wdiKeepAliveCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004519 wdiEventData.pUserData = pUserData;
4520
4521 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4522}/*WDI_KeepAliveReq*/
4523
4524/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004525 @brief WDI_WowlAddBcPtrnReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004526 wants to set the Wowl Bcast ptrn to minimize unnecessary
4527 host wakeup due to broadcast traffic while in power
4528 save. Upon the call of this API the WLAN DAL will pack
4529 and send a HAL Wowl Bcast ptrn request message to the
4530 lower RIVA sub-system if DAL is in state STARTED.
4531
4532 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004533 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004534
4535 WDI_PostAssocReq must have been called.
4536
Jeff Johnsone7245742012-09-05 17:12:55 -07004537 @param pwdiWowlAddBcPtrnParams: the Wowl bcast ptrn as
Jeff Johnson295189b2012-06-20 16:38:30 -07004538 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004539
Jeff Johnson295189b2012-06-20 16:38:30 -07004540 wdiWowlAddBcPtrnCb: callback for passing back the
4541 response of the add Wowl bcast ptrn operation received
4542 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004543
Jeff Johnson295189b2012-06-20 16:38:30 -07004544 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004545 callback
4546
Jeff Johnson295189b2012-06-20 16:38:30 -07004547 @see WDI_PostAssocReq
4548 @return Result of the function call
4549*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004550WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004551WDI_WowlAddBcPtrnReq
4552(
4553 WDI_WowlAddBcPtrnReqParamsType* pwdiWowlAddBcPtrnParams,
4554 WDI_WowlAddBcPtrnCb wdiWowlAddBcPtrnCb,
4555 void* pUserData
4556)
4557{
4558 WDI_EventInfoType wdiEventData;
4559 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4560
4561 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004562 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004563 ------------------------------------------------------------------------*/
4564 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4565 {
4566 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4567 "WDI API call before module is initialized - Fail request");
4568
Jeff Johnsone7245742012-09-05 17:12:55 -07004569 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004570 }
4571
4572 /*------------------------------------------------------------------------
4573 Fill in Event data and post to the Main FSM
4574 ------------------------------------------------------------------------*/
4575 wdiEventData.wdiRequest = WDI_WOWL_ADD_BC_PTRN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004576 wdiEventData.pEventData = pwdiWowlAddBcPtrnParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07004577 wdiEventData.uEventDataSize = sizeof(*pwdiWowlAddBcPtrnParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004578 wdiEventData.pCBfnc = wdiWowlAddBcPtrnCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004579 wdiEventData.pUserData = pUserData;
4580
4581 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4582}/*WDI_WowlAddBcPtrnReq*/
4583
4584/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004585 @brief WDI_WowlDelBcPtrnReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004586 wants to clear the Wowl Bcast ptrn. Upon the call of
4587 this API the WLAN DAL will pack and send a HAL delete
4588 Wowl Bcast ptrn request message to the lower RIVA
4589 sub-system if DAL is in state STARTED.
4590
4591 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004592 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004593
4594 WDI_WowlAddBcPtrnReq must have been called.
4595
Jeff Johnsone7245742012-09-05 17:12:55 -07004596 @param pwdiWowlDelBcPtrnParams: the Wowl bcast ptrn as
Jeff Johnson295189b2012-06-20 16:38:30 -07004597 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004598
Jeff Johnson295189b2012-06-20 16:38:30 -07004599 wdiWowlDelBcPtrnCb: callback for passing back the
4600 response of the del Wowl bcast ptrn operation received
4601 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004602
Jeff Johnson295189b2012-06-20 16:38:30 -07004603 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004604 callback
4605
Jeff Johnson295189b2012-06-20 16:38:30 -07004606 @see WDI_WowlAddBcPtrnReq
4607 @return Result of the function call
4608*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004609WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004610WDI_WowlDelBcPtrnReq
4611(
4612 WDI_WowlDelBcPtrnReqParamsType* pwdiWowlDelBcPtrnParams,
4613 WDI_WowlDelBcPtrnCb wdiWowlDelBcPtrnCb,
4614 void* pUserData
4615)
4616{
4617 WDI_EventInfoType wdiEventData;
4618 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4619
4620 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004621 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004622 ------------------------------------------------------------------------*/
4623 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4624 {
4625 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4626 "WDI API call before module is initialized - Fail request");
4627
Jeff Johnsone7245742012-09-05 17:12:55 -07004628 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004629 }
4630
4631 /*------------------------------------------------------------------------
4632 Fill in Event data and post to the Main FSM
4633 ------------------------------------------------------------------------*/
4634 wdiEventData.wdiRequest = WDI_WOWL_DEL_BC_PTRN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004635 wdiEventData.pEventData = pwdiWowlDelBcPtrnParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07004636 wdiEventData.uEventDataSize = sizeof(*pwdiWowlDelBcPtrnParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004637 wdiEventData.pCBfnc = wdiWowlDelBcPtrnCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004638 wdiEventData.pUserData = pUserData;
4639
4640 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4641}/*WDI_WowlDelBcPtrnReq*/
4642
4643/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004644 @brief WDI_WowlEnterReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004645 wants to enter the Wowl state to minimize unnecessary
4646 host wakeup while in power save. Upon the call of this
4647 API the WLAN DAL will pack and send a HAL Wowl enter
4648 request message to the lower RIVA sub-system if DAL is
4649 in state STARTED.
4650
4651 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004652 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004653
4654 WDI_PostAssocReq must have been called.
4655
Jeff Johnsone7245742012-09-05 17:12:55 -07004656 @param pwdiWowlEnterReqParams: the Wowl enter info as
Jeff Johnson295189b2012-06-20 16:38:30 -07004657 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004658
Jeff Johnson295189b2012-06-20 16:38:30 -07004659 wdiWowlEnterReqCb: callback for passing back the
4660 response of the enter Wowl operation received from the
4661 device
Jeff Johnsone7245742012-09-05 17:12:55 -07004662
Jeff Johnson295189b2012-06-20 16:38:30 -07004663 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004664 callback
4665
Jeff Johnson295189b2012-06-20 16:38:30 -07004666 @see WDI_PostAssocReq
4667 @return Result of the function call
4668*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004669WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004670WDI_WowlEnterReq
4671(
4672 WDI_WowlEnterReqParamsType* pwdiWowlEnterParams,
4673 WDI_WowlEnterReqCb wdiWowlEnterCb,
4674 void* pUserData
4675)
4676{
4677 WDI_EventInfoType wdiEventData;
4678 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4679
4680 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004681 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004682 ------------------------------------------------------------------------*/
4683 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4684 {
4685 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4686 "WDI API call before module is initialized - Fail request");
4687
Jeff Johnsone7245742012-09-05 17:12:55 -07004688 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004689 }
4690
4691 /*------------------------------------------------------------------------
4692 Fill in Event data and post to the Main FSM
4693 ------------------------------------------------------------------------*/
4694 wdiEventData.wdiRequest = WDI_WOWL_ENTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004695 wdiEventData.pEventData = pwdiWowlEnterParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07004696 wdiEventData.uEventDataSize = sizeof(*pwdiWowlEnterParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004697 wdiEventData.pCBfnc = wdiWowlEnterCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004698 wdiEventData.pUserData = pUserData;
4699
4700 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4701}/*WDI_WowlEnterReq*/
4702
4703/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004704 @brief WDI_WowlExitReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004705 wants to exit the Wowl state. Upon the call of this API
4706 the WLAN DAL will pack and send a HAL Wowl exit request
4707 message to the lower RIVA sub-system if DAL is in state
4708 STARTED.
4709
4710 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004711 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004712
4713 WDI_WowlEnterReq must have been called.
4714
Jeff Johnsone7245742012-09-05 17:12:55 -07004715 @param pwdiWowlExitReqParams: the Wowl exit info as
Jeff Johnson295189b2012-06-20 16:38:30 -07004716 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004717
Jeff Johnson295189b2012-06-20 16:38:30 -07004718 wdiWowlExitReqCb: callback for passing back the response
4719 of the exit Wowl operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004720
Jeff Johnson295189b2012-06-20 16:38:30 -07004721 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004722 callback
4723
Jeff Johnson295189b2012-06-20 16:38:30 -07004724 @see WDI_WowlEnterReq
4725 @return Result of the function call
4726*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004727WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004728WDI_WowlExitReq
4729(
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -07004730 WDI_WowlExitReqParamsType* pwdiWowlExitParams,
Jeff Johnson295189b2012-06-20 16:38:30 -07004731 WDI_WowlExitReqCb wdiWowlExitCb,
4732 void* pUserData
4733)
4734{
4735 WDI_EventInfoType wdiEventData;
4736 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4737
4738 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004739 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004740 ------------------------------------------------------------------------*/
4741 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4742 {
4743 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4744 "WDI API call before module is initialized - Fail request");
4745
Jeff Johnsone7245742012-09-05 17:12:55 -07004746 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004747 }
4748
4749 /*------------------------------------------------------------------------
4750 Fill in Event data and post to the Main FSM
4751 ------------------------------------------------------------------------*/
4752 wdiEventData.wdiRequest = WDI_WOWL_EXIT_REQ;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -07004753 wdiEventData.pEventData = pwdiWowlExitParams;
4754 wdiEventData.uEventDataSize = sizeof(*pwdiWowlExitParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004755 wdiEventData.pCBfnc = wdiWowlExitCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004756 wdiEventData.pUserData = pUserData;
4757
4758 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4759}/*WDI_WowlExitReq*/
4760
4761/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004762 @brief WDI_ConfigureAppsCpuWakeupStateReq will be called when
Jeff Johnson295189b2012-06-20 16:38:30 -07004763 the upper MAC wants to dynamically adjusts the listen
4764 interval based on the WLAN/MSM activity. Upon the call
4765 of this API the WLAN DAL will pack and send a HAL
4766 configure Apps Cpu Wakeup State request message to the
4767 lower RIVA sub-system.
4768
4769 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004770 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004771
Jeff Johnsone7245742012-09-05 17:12:55 -07004772
4773 @param pwdiConfigureAppsCpuWakeupStateReqParams: the
Jeff Johnson295189b2012-06-20 16:38:30 -07004774 Apps Cpu Wakeup State as specified by the
4775 Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004776
Jeff Johnson295189b2012-06-20 16:38:30 -07004777 wdiConfigureAppsCpuWakeupStateCb: callback for passing
4778 back the response of the configure Apps Cpu Wakeup State
4779 operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004780
Jeff Johnson295189b2012-06-20 16:38:30 -07004781 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004782 callback
4783
Jeff Johnson295189b2012-06-20 16:38:30 -07004784 @return Result of the function call
4785*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004786WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004787WDI_ConfigureAppsCpuWakeupStateReq
4788(
4789 WDI_ConfigureAppsCpuWakeupStateReqParamsType *pwdiConfigureAppsCpuWakeupStateReqParams,
4790 WDI_ConfigureAppsCpuWakeupStateCb wdiConfigureAppsCpuWakeupStateCb,
4791 void* pUserData
4792)
4793{
4794 WDI_EventInfoType wdiEventData;
4795 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4796
4797 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004798 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004799 ------------------------------------------------------------------------*/
4800 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4801 {
4802 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4803 "WDI API call before module is initialized - Fail request");
4804
Jeff Johnsone7245742012-09-05 17:12:55 -07004805 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004806 }
4807
4808 /*------------------------------------------------------------------------
4809 Fill in Event data and post to the Main FSM
4810 ------------------------------------------------------------------------*/
4811 wdiEventData.wdiRequest = WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004812 wdiEventData.pEventData = pwdiConfigureAppsCpuWakeupStateReqParams;
4813 wdiEventData.uEventDataSize = sizeof(*pwdiConfigureAppsCpuWakeupStateReqParams);
4814 wdiEventData.pCBfnc = wdiConfigureAppsCpuWakeupStateCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004815 wdiEventData.pUserData = pUserData;
4816
4817 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4818}/*WDI_ConfigureAppsCpuWakeupStateReq*/
4819/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004820 @brief WDI_FlushAcReq will be called when the upper MAC wants
Jeff Johnson295189b2012-06-20 16:38:30 -07004821 to to perform a flush operation on a given AC. Upon the
4822 call of this API the WLAN DAL will pack and send a HAL
4823 Flush AC request message to the lower RIVA sub-system if
4824 DAL is in state STARTED.
4825
4826 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004827 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004828
4829 WDI_AddBAReq must have been called.
4830
Jeff Johnsone7245742012-09-05 17:12:55 -07004831 @param pwdiFlushAcReqParams: the Flush AC parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07004832 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004833
Jeff Johnson295189b2012-06-20 16:38:30 -07004834 wdiFlushAcRspCb: callback for passing back the response
4835 of the Flush AC operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004836
Jeff Johnson295189b2012-06-20 16:38:30 -07004837 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004838 callback
4839
Jeff Johnson295189b2012-06-20 16:38:30 -07004840 @see WDI_AddBAReq
4841 @return Result of the function call
4842*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004843WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004844WDI_FlushAcReq
4845(
4846 WDI_FlushAcReqParamsType* pwdiFlushAcReqParams,
4847 WDI_FlushAcRspCb wdiFlushAcRspCb,
4848 void* pUserData
4849)
4850{
4851 WDI_EventInfoType wdiEventData;
4852 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4853
4854 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004855 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004856 ------------------------------------------------------------------------*/
4857 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4858 {
4859 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4860 "WDI API call before module is initialized - Fail request");
4861
Jeff Johnsone7245742012-09-05 17:12:55 -07004862 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004863 }
4864
4865 /*------------------------------------------------------------------------
4866 Fill in Event data and post to the Main FSM
4867 ------------------------------------------------------------------------*/
4868 wdiEventData.wdiRequest = WDI_FLUSH_AC_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004869 wdiEventData.pEventData = pwdiFlushAcReqParams;
4870 wdiEventData.uEventDataSize = sizeof(*pwdiFlushAcReqParams);
4871 wdiEventData.pCBfnc = wdiFlushAcRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004872 wdiEventData.pUserData = pUserData;
4873
4874 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4875
4876}/*WDI_FlushAcReq*/
4877
4878/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004879 @brief WDI_BtAmpEventReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004880 wants to notify the lower mac on a BT AMP event. This is
4881 to inform BTC-SLM that some BT AMP event occurred. Upon
4882 the call of this API the WLAN DAL will pack and send a
4883 HAL BT AMP event request message to the lower RIVA
4884 sub-system if DAL is in state STARTED.
4885
4886 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004887 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004888
Jeff Johnsone7245742012-09-05 17:12:55 -07004889
4890 @param wdiBtAmpEventReqParams: the BT AMP event parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07004891 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004892
Jeff Johnson295189b2012-06-20 16:38:30 -07004893 wdiBtAmpEventRspCb: callback for passing back the
4894 response of the BT AMP event operation received from the
4895 device
Jeff Johnsone7245742012-09-05 17:12:55 -07004896
Jeff Johnson295189b2012-06-20 16:38:30 -07004897 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004898 callback
4899
Jeff Johnson295189b2012-06-20 16:38:30 -07004900 @return Result of the function call
4901*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004902WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004903WDI_BtAmpEventReq
4904(
4905 WDI_BtAmpEventParamsType* pwdiBtAmpEventReqParams,
4906 WDI_BtAmpEventRspCb wdiBtAmpEventRspCb,
4907 void* pUserData
4908)
4909{
4910 WDI_EventInfoType wdiEventData;
4911 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4912
4913 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004914 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004915 ------------------------------------------------------------------------*/
4916 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4917 {
4918 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4919 "WDI API call before module is initialized - Fail request");
4920
Jeff Johnsone7245742012-09-05 17:12:55 -07004921 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004922 }
4923
4924 /*------------------------------------------------------------------------
4925 Fill in Event data and post to the Main FSM
4926 ------------------------------------------------------------------------*/
4927 wdiEventData.wdiRequest = WDI_BTAMP_EVENT_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004928 wdiEventData.pEventData = pwdiBtAmpEventReqParams;
4929 wdiEventData.uEventDataSize = sizeof(*pwdiBtAmpEventReqParams);
4930 wdiEventData.pCBfnc = wdiBtAmpEventRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004931 wdiEventData.pUserData = pUserData;
4932
4933 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4934
4935}/*WDI_BtAmpEventReq*/
4936
Jeff Johnsone7245742012-09-05 17:12:55 -07004937#ifdef FEATURE_OEM_DATA_SUPPORT
4938/**
4939 @brief WDI_Start Oem Data Req will be called when the upper MAC
4940 wants to notify the lower mac on a oem data Req event.Upon
4941 the call of this API the WLAN DAL will pack and send a
4942 HAL OEM Data Req event request message to the lower RIVA
4943 sub-system if DAL is in state STARTED.
4944
4945 In state BUSY this request will be queued. Request won't
4946 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004947
4948
Jeff Johnsone7245742012-09-05 17:12:55 -07004949
4950 @param pwdiOemDataReqParams: the Oem Data Req as
4951 specified by the Device Interface
4952
4953 wdiStartOemDataRspCb: callback for passing back the
4954 response of the Oem Data Req received from the
4955 device
4956
4957 pUserData: user data will be passed back with the
4958 callback
4959
4960 @return Result of the function call
4961*/
4962WDI_Status
4963WDI_StartOemDataReq
4964(
4965 WDI_oemDataReqParamsType* pwdiOemDataReqParams,
4966 WDI_oemDataRspCb wdiOemDataRspCb,
4967 void* pUserData
4968)
4969{
4970 WDI_EventInfoType wdiEventData;
4971 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4972
4973 /*------------------------------------------------------------------------
4974 Sanity Check
4975 ------------------------------------------------------------------------*/
4976 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4977 {
4978 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4979 "WDI API call before module is initialized - Fail request");
4980
4981 return WDI_STATUS_E_NOT_ALLOWED;
4982 }
4983
4984 /*------------------------------------------------------------------------
4985 Fill in Event data and post to the Main FSM
4986 ------------------------------------------------------------------------*/
4987 wdiEventData.wdiRequest = WDI_START_OEM_DATA_REQ;
4988 wdiEventData.pEventData = pwdiOemDataReqParams;
4989 wdiEventData.uEventDataSize = sizeof(*pwdiOemDataReqParams);
4990 wdiEventData.pCBfnc = wdiOemDataRspCb;
4991 wdiEventData.pUserData = pUserData;
4992
4993 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4994
4995
4996}
4997
4998#endif
4999
5000
5001/*========================================================================
5002
Jeff Johnson295189b2012-06-20 16:38:30 -07005003 CONTROL APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07005004
Jeff Johnson295189b2012-06-20 16:38:30 -07005005==========================================================================*/
5006/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005007 @brief WDI_SwitchChReq will be called when the upper MAC wants
Jeff Johnson295189b2012-06-20 16:38:30 -07005008 the WLAN HW to change the current channel of operation.
5009 Upon the call of this API the WLAN DAL will pack and
5010 send a HAL Start request message to the lower RIVA
5011 sub-system if DAL is in state STARTED.
5012
5013 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005014 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005015
5016 WDI_Start must have been called.
5017
Jeff Johnsone7245742012-09-05 17:12:55 -07005018 @param wdiSwitchChReqParams: the switch ch parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07005019 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005020
Jeff Johnson295189b2012-06-20 16:38:30 -07005021 wdiSwitchChRspCb: callback for passing back the response
5022 of the switch ch operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005023
Jeff Johnson295189b2012-06-20 16:38:30 -07005024 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005025 callback
5026
Jeff Johnson295189b2012-06-20 16:38:30 -07005027 @see WDI_Start
5028 @return Result of the function call
5029*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005030WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005031WDI_SwitchChReq
5032(
5033 WDI_SwitchChReqParamsType* pwdiSwitchChReqParams,
5034 WDI_SwitchChRspCb wdiSwitchChRspCb,
5035 void* pUserData
5036)
5037{
5038 WDI_EventInfoType wdiEventData;
5039 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5040
5041 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005042 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005043 ------------------------------------------------------------------------*/
5044 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5045 {
5046 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5047 "WDI API call before module is initialized - Fail request");
5048
Jeff Johnsone7245742012-09-05 17:12:55 -07005049 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005050 }
5051
5052 /*------------------------------------------------------------------------
5053 Fill in Event data and post to the Main FSM
5054 ------------------------------------------------------------------------*/
5055 wdiEventData.wdiRequest = WDI_CH_SWITCH_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005056 wdiEventData.pEventData = pwdiSwitchChReqParams;
5057 wdiEventData.uEventDataSize = sizeof(*pwdiSwitchChReqParams);
5058 wdiEventData.pCBfnc = wdiSwitchChRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005059 wdiEventData.pUserData = pUserData;
5060
5061 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5062
5063}/*WDI_SwitchChReq*/
5064
Kalikinkar dhara1e83b772014-02-06 12:59:22 -08005065/**
5066 @brief WDI_SwitchChReq_V1 will be called when the upper MAC wants
5067 the WLAN HW to change the current channel of operation.
5068 Upon the call of this API the WLAN DAL will pack and
5069 send a HAL Start request message to the lower RIVA
5070 sub-system if DAL is in state STARTED.
5071 This request message also includes source of channel switch,
5072 like CSA,
5073
5074 In state BUSY this request will be queued. Request won't
5075 be allowed in any other state.
5076
5077 WDI_Start must have been called.
5078
5079 @param wdiSwitchChReqParams: the switch ch parameters as
5080 specified by the Device Interface
5081
5082 wdiSwitchChRspCb: callback for passing back the response
5083 of the switch ch operation received from the device
5084
5085 pUserData: user data will be passed back with the
5086 callback
5087
5088 @see WDI_Start
5089 @return Result of the function call
5090*/
5091WDI_Status
5092WDI_SwitchChReq_V1
5093(
5094 WDI_SwitchChReqParamsType_V1* pwdiSwitchChReqParams,
5095 WDI_SwitchChRspCb_V1 wdiSwitchChRspCb,
5096 void* pUserData
5097)
5098{
5099 WDI_EventInfoType wdiEventData;
5100 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5101 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
5102 "WDI API call WDI_SwitchChReq_V1");
5103 /*------------------------------------------------------------------------
5104 Sanity Check
5105 ------------------------------------------------------------------------*/
5106 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5107 {
5108 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5109 "WDI API call before module is initialized - Fail request");
5110
5111 return WDI_STATUS_E_NOT_ALLOWED;
5112 }
5113
5114 /*------------------------------------------------------------------------
5115 Fill in Event data and post to the Main FSM
5116 ------------------------------------------------------------------------*/
5117 wdiEventData.wdiRequest = WDI_CH_SWITCH_REQ_V1;
5118 wdiEventData.pEventData = pwdiSwitchChReqParams;
5119 wdiEventData.uEventDataSize = sizeof(*pwdiSwitchChReqParams);
5120 wdiEventData.pCBfnc = wdiSwitchChRspCb;
5121 wdiEventData.pUserData = pUserData;
5122
5123 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5124
5125}/*WDI_SwitchChReq_V1*/
5126
Jeff Johnson295189b2012-06-20 16:38:30 -07005127
5128/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005129 @brief WDI_ConfigSTAReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07005130 wishes to add or update a STA in HW. Upon the call of
5131 this API the WLAN DAL will pack and send a HAL Start
5132 message request message to the lower RIVA sub-system if
5133 DAL is in state STARTED.
5134
5135 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005136 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005137
5138 WDI_Start must have been called.
5139
Jeff Johnsone7245742012-09-05 17:12:55 -07005140 @param wdiConfigSTAReqParams: the config STA parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07005141 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005142
Jeff Johnson295189b2012-06-20 16:38:30 -07005143 wdiConfigSTARspCb: callback for passing back the
5144 response of the config STA operation received from the
5145 device
Jeff Johnsone7245742012-09-05 17:12:55 -07005146
Jeff Johnson295189b2012-06-20 16:38:30 -07005147 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005148 callback
5149
Jeff Johnson295189b2012-06-20 16:38:30 -07005150 @see WDI_Start
5151 @return Result of the function call
5152*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005153WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005154WDI_ConfigSTAReq
5155(
5156 WDI_ConfigSTAReqParamsType* pwdiConfigSTAReqParams,
5157 WDI_ConfigSTARspCb wdiConfigSTARspCb,
5158 void* pUserData
5159)
5160{
5161 WDI_EventInfoType wdiEventData;
5162 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5163
5164 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005165 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005166 ------------------------------------------------------------------------*/
5167 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5168 {
5169 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5170 "WDI API call before module is initialized - Fail request");
5171
Jeff Johnsone7245742012-09-05 17:12:55 -07005172 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005173 }
5174
5175 /*------------------------------------------------------------------------
5176 Fill in Event data and post to the Main FSM
5177 ------------------------------------------------------------------------*/
5178 wdiEventData.wdiRequest = WDI_CONFIG_STA_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005179 wdiEventData.pEventData = pwdiConfigSTAReqParams;
5180 wdiEventData.uEventDataSize = sizeof(*pwdiConfigSTAReqParams);
5181 wdiEventData.pCBfnc = wdiConfigSTARspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005182 wdiEventData.pUserData = pUserData;
5183
5184 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5185
5186}/*WDI_ConfigSTAReq*/
5187
Manjunathappa Prakash86f78ca2014-02-10 18:09:15 -08005188 /**
5189 @brief WDI_UpdateChannelReq will be called when the upper MAC
5190 wants to update the channel list on change in country code.
5191
5192 In state BUSY this request will be queued. Request won't
5193 be allowed in any other state.
5194
5195 WDI_UpdateChannelReq must have been called.
5196
5197 @param wdiUpdateChannelReqParams: the updated channel parameters
5198 as specified by the Device Interface
5199
5200 wdiUpdateChannelRspCb: callback for passing back the
5201 response of the update channel operation received from
5202 the device
5203
5204 pUserData: user data will be passed back with the
5205 callback
5206
5207 @return Result of the function call
5208*/
5209WDI_Status
5210WDI_UpdateChannelReq
5211(
5212 WDI_UpdateChReqParamsType *pwdiUpdateChannelReqParams,
5213 WDI_UpdateChannelRspCb wdiUpdateChannelRspCb,
5214 void* pUserData
5215)
5216{
5217 WDI_EventInfoType wdiEventData = {{0}};
5218 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5219
5220 /*------------------------------------------------------------------------
5221 Sanity Check
5222 ------------------------------------------------------------------------*/
5223 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5224 {
5225 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5226 "WDI API call before module is initialized - Fail request");
5227
5228 return WDI_STATUS_E_NOT_ALLOWED;
5229 }
5230
5231 /*------------------------------------------------------------------------
5232 Fill in Event data and post to the Main FSM
5233 ------------------------------------------------------------------------*/
5234 wdiEventData.wdiRequest = WDI_UPDATE_CHAN_REQ;
5235 wdiEventData.pEventData = pwdiUpdateChannelReqParams;
5236 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateChannelReqParams);
5237 wdiEventData.pCBfnc = wdiUpdateChannelRspCb;
5238 wdiEventData.pUserData = pUserData;
5239
5240 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5241
5242}/*WDI_UpdateChannelReq*/
5243
Jeff Johnson295189b2012-06-20 16:38:30 -07005244/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005245 @brief WDI_SetLinkStateReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07005246 wants to change the state of an ongoing link. Upon the
5247 call of this API the WLAN DAL will pack and send a HAL
5248 Start message request message to the lower RIVA
5249 sub-system if DAL is in state STARTED.
5250
5251 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005252 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005253
5254 WDI_JoinStartReq must have been called.
5255
Jeff Johnsone7245742012-09-05 17:12:55 -07005256 @param wdiSetLinkStateReqParams: the set link state parameters
Jeff Johnson295189b2012-06-20 16:38:30 -07005257 as specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005258
Jeff Johnson295189b2012-06-20 16:38:30 -07005259 wdiSetLinkStateRspCb: callback for passing back the
5260 response of the set link state operation received from
5261 the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005262
Jeff Johnson295189b2012-06-20 16:38:30 -07005263 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005264 callback
5265
Jeff Johnson295189b2012-06-20 16:38:30 -07005266 @see WDI_JoinStartReq
5267 @return Result of the function call
5268*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005269WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005270WDI_SetLinkStateReq
5271(
5272 WDI_SetLinkReqParamsType* pwdiSetLinkStateReqParams,
5273 WDI_SetLinkStateRspCb wdiSetLinkStateRspCb,
5274 void* pUserData
5275)
5276{
5277 WDI_EventInfoType wdiEventData;
5278 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5279
5280 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005281 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005282 ------------------------------------------------------------------------*/
5283 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5284 {
5285 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5286 "WDI API call before module is initialized - Fail request");
5287
Jeff Johnsone7245742012-09-05 17:12:55 -07005288 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005289 }
5290
5291 /*------------------------------------------------------------------------
5292 Fill in Event data and post to the Main FSM
5293 ------------------------------------------------------------------------*/
5294 wdiEventData.wdiRequest = WDI_SET_LINK_ST_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005295 wdiEventData.pEventData = pwdiSetLinkStateReqParams;
5296 wdiEventData.uEventDataSize = sizeof(*pwdiSetLinkStateReqParams);
5297 wdiEventData.pCBfnc = wdiSetLinkStateRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005298 wdiEventData.pUserData = pUserData;
5299
5300 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5301
5302}/*WDI_SetLinkStateReq*/
5303
5304
5305/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005306 @brief WDI_GetStatsReq will be called when the upper MAC wants
Jeff Johnson295189b2012-06-20 16:38:30 -07005307 to get statistics (MIB counters) from the device. Upon
5308 the call of this API the WLAN DAL will pack and send a
5309 HAL Start request message to the lower RIVA sub-system
5310 if DAL is in state STARTED.
5311
5312 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005313 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005314
5315 WDI_Start must have been called.
5316
Jeff Johnsone7245742012-09-05 17:12:55 -07005317 @param wdiGetStatsReqParams: the stats parameters to get as
Jeff Johnson295189b2012-06-20 16:38:30 -07005318 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005319
Jeff Johnson295189b2012-06-20 16:38:30 -07005320 wdiGetStatsRspCb: callback for passing back the response
5321 of the get stats operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005322
Jeff Johnson295189b2012-06-20 16:38:30 -07005323 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005324 callback
5325
Jeff Johnson295189b2012-06-20 16:38:30 -07005326 @see WDI_Start
5327 @return Result of the function call
5328*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005329WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005330WDI_GetStatsReq
5331(
5332 WDI_GetStatsReqParamsType* pwdiGetStatsReqParams,
5333 WDI_GetStatsRspCb wdiGetStatsRspCb,
5334 void* pUserData
5335)
5336{
5337 WDI_EventInfoType wdiEventData;
5338 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5339
5340 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005341 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005342 ------------------------------------------------------------------------*/
5343 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5344 {
5345 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5346 "WDI API call before module is initialized - Fail request");
5347
Jeff Johnsone7245742012-09-05 17:12:55 -07005348 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005349 }
5350
5351 /*------------------------------------------------------------------------
5352 Fill in Event data and post to the Main FSM
5353 ------------------------------------------------------------------------*/
5354 wdiEventData.wdiRequest = WDI_GET_STATS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005355 wdiEventData.pEventData = pwdiGetStatsReqParams;
5356 wdiEventData.uEventDataSize = sizeof(*pwdiGetStatsReqParams);
5357 wdiEventData.pCBfnc = wdiGetStatsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005358 wdiEventData.pUserData = pUserData;
5359
5360 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5361
5362}/*WDI_GetStatsReq*/
5363
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -08005364#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_ESE || defined(FEATURE_WLAN_LFR)
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -08005365/**
5366 @brief WDI_GetRoamRssiReq will be called when the upper MAC wants
5367 to get roam rssi from the device. Upon
5368 the call of this API the WLAN DAL will pack and send a
5369 HAL Start request message to the lower RIVA sub-system
5370 if DAL is in state STARTED.
5371
5372 In state BUSY this request will be queued. Request won't
5373 be allowed in any other state.
5374
5375 WDI_Start must have been called.
5376
5377 @param wdiGetRoamRssiReqParams: the stats parameters to get as
5378 specified by the Device Interface
5379
5380 wdiGetRoamRssiRspCb: callback for passing back the response
5381 of the get stats operation received from the device
5382
5383 pUserData: user data will be passed back with the
5384 callback
5385
5386 @see WDI_Start
5387 @return Result of the function call
5388*/
5389WDI_Status
5390WDI_GetRoamRssiReq
5391(
5392 WDI_GetRoamRssiReqParamsType* pwdiGetRoamRssiReqParams,
5393 WDI_GetRoamRssiRspCb wdiGetRoamRssiRspCb,
5394 void* pUserData
5395)
5396{
5397 WDI_EventInfoType wdiEventData;
5398 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5399
5400 /*------------------------------------------------------------------------
5401 Sanity Check
5402 ------------------------------------------------------------------------*/
5403 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5404 {
5405 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5406 "WDI API call before module is initialized - Fail request");
5407
5408 return WDI_STATUS_E_NOT_ALLOWED;
5409 }
5410 /*------------------------------------------------------------------------
5411 Fill in Event data and post to the Main FSM
5412 ------------------------------------------------------------------------*/
5413 wdiEventData.wdiRequest = WDI_GET_ROAM_RSSI_REQ;
5414 wdiEventData.pEventData = pwdiGetRoamRssiReqParams;
5415 wdiEventData.uEventDataSize = sizeof(*pwdiGetRoamRssiReqParams);
5416 wdiEventData.pCBfnc = wdiGetRoamRssiRspCb;
5417 wdiEventData.pUserData = pUserData;
5418
5419 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5420
5421}/*WDI_GetRoamRssiReq*/
5422#endif
5423
Jeff Johnson295189b2012-06-20 16:38:30 -07005424
5425/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005426 @brief WDI_UpdateCfgReq will be called when the upper MAC when
Jeff Johnson295189b2012-06-20 16:38:30 -07005427 it wishes to change the configuration of the WLAN
5428 Device. Upon the call of this API the WLAN DAL will pack
5429 and send a HAL Update CFG request message to the lower
5430 RIVA sub-system if DAL is in state STARTED.
5431
5432 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005433 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005434
5435 WDI_Start must have been called.
5436
Jeff Johnsone7245742012-09-05 17:12:55 -07005437 @param wdiUpdateCfgReqParams: the update cfg parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07005438 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005439
Jeff Johnson295189b2012-06-20 16:38:30 -07005440 wdiUpdateCfgsRspCb: callback for passing back the
5441 response of the update cfg operation received from the
5442 device
Jeff Johnsone7245742012-09-05 17:12:55 -07005443
Jeff Johnson295189b2012-06-20 16:38:30 -07005444 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005445 callback
5446
Jeff Johnson295189b2012-06-20 16:38:30 -07005447 @see WDI_Start
5448 @return Result of the function call
5449*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005450WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005451WDI_UpdateCfgReq
5452(
5453 WDI_UpdateCfgReqParamsType* pwdiUpdateCfgReqParams,
5454 WDI_UpdateCfgRspCb wdiUpdateCfgsRspCb,
5455 void* pUserData
5456)
5457{
5458 WDI_EventInfoType wdiEventData;
5459 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5460
5461 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005462 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005463 ------------------------------------------------------------------------*/
5464 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5465 {
5466 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5467 "WDI API call before module is initialized - Fail request");
5468
Jeff Johnsone7245742012-09-05 17:12:55 -07005469 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005470 }
5471
5472 /*------------------------------------------------------------------------
5473 Fill in Event data and post to the Main FSM
5474 ------------------------------------------------------------------------*/
5475 wdiEventData.wdiRequest = WDI_UPDATE_CFG_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005476 wdiEventData.pEventData = pwdiUpdateCfgReqParams;
5477 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateCfgReqParams);
5478 wdiEventData.pCBfnc = wdiUpdateCfgsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005479 wdiEventData.pUserData = pUserData;
5480
5481 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5482
5483}/*WDI_UpdateCfgReq*/
5484
5485
5486
5487/**
5488 @brief WDI_AddBAReq will be called when the upper MAC has setup
5489 successfully a BA session and needs to notify the HW for
5490 the appropriate settings to take place. Upon the call of
5491 this API the WLAN DAL will pack and send a HAL Add BA
5492 request message to the lower RIVA sub-system if DAL is
5493 in state STARTED.
5494
5495 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005496 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005497
5498 WDI_PostAssocReq must have been called.
5499
5500 @param wdiAddBAReqParams: the add BA parameters as specified by
5501 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005502
Jeff Johnson295189b2012-06-20 16:38:30 -07005503 wdiAddBARspCb: callback for passing back the response of
5504 the add BA operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005505
Jeff Johnson295189b2012-06-20 16:38:30 -07005506 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005507 callback
5508
Jeff Johnson295189b2012-06-20 16:38:30 -07005509 @see WDI_PostAssocReq
5510 @return Result of the function call
5511*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005512WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005513WDI_AddBAReq
5514(
5515 WDI_AddBAReqParamsType* pwdiAddBAReqParams,
5516 WDI_AddBARspCb wdiAddBARspCb,
5517 void* pUserData
5518)
5519{
5520 WDI_EventInfoType wdiEventData;
5521 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5522
5523 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005524 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005525 ------------------------------------------------------------------------*/
5526 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5527 {
5528 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5529 "WDI API call before module is initialized - Fail request");
5530
Jeff Johnsone7245742012-09-05 17:12:55 -07005531 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005532 }
5533
5534 /*------------------------------------------------------------------------
5535 Fill in Event data and post to the Main FSM
5536 ------------------------------------------------------------------------*/
5537 wdiEventData.wdiRequest = WDI_ADD_BA_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005538 wdiEventData.pEventData = pwdiAddBAReqParams;
5539 wdiEventData.uEventDataSize = sizeof(*pwdiAddBAReqParams);
5540 wdiEventData.pCBfnc = wdiAddBARspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005541 wdiEventData.pUserData = pUserData;
5542
5543 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5544
5545}/*WDI_AddBAReq*/
5546
5547
5548/**
5549 @brief WDI_TriggerBAReq will be called when the upper MAC has setup
5550 successfully a BA session and needs to notify the HW for
5551 the appropriate settings to take place. Upon the call of
5552 this API the WLAN DAL will pack and send a HAL Add BA
5553 request message to the lower RIVA sub-system if DAL is
5554 in state STARTED.
5555
5556 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005557 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005558
5559 WDI_PostAssocReq must have been called.
5560
5561 @param wdiAddBAReqParams: the add BA parameters as specified by
5562 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005563
Jeff Johnson295189b2012-06-20 16:38:30 -07005564 wdiAddBARspCb: callback for passing back the response of
5565 the add BA operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005566
Jeff Johnson295189b2012-06-20 16:38:30 -07005567 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005568 callback
5569
Jeff Johnson295189b2012-06-20 16:38:30 -07005570 @see WDI_PostAssocReq
5571 @return Result of the function call
5572*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005573WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005574WDI_TriggerBAReq
5575(
5576 WDI_TriggerBAReqParamsType* pwdiTriggerBAReqParams,
5577 WDI_TriggerBARspCb wdiTriggerBARspCb,
5578 void* pUserData
5579)
5580{
5581 WDI_EventInfoType wdiEventData;
5582 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5583
5584 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005585 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005586 ------------------------------------------------------------------------*/
5587 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5588 {
5589 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5590 "WDI API call before module is initialized - Fail request");
5591
Jeff Johnsone7245742012-09-05 17:12:55 -07005592 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005593 }
5594
5595 /*------------------------------------------------------------------------
5596 Fill in Event data and post to the Main FSM
5597 ------------------------------------------------------------------------*/
5598 wdiEventData.wdiRequest = WDI_TRIGGER_BA_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005599 wdiEventData.pEventData = pwdiTriggerBAReqParams;
5600 wdiEventData.uEventDataSize = sizeof(*pwdiTriggerBAReqParams);
5601 wdiEventData.pCBfnc = wdiTriggerBARspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005602 wdiEventData.pUserData = pUserData;
5603
5604 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5605
5606}/*WDI_AddBAReq*/
5607
5608/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005609 @brief WDI_UpdateBeaconParamsReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07005610 wishes to update any of the Beacon parameters used by HW.
5611 Upon the call of this API the WLAN DAL will pack and send a HAL Update Beacon Params request
5612 message to the lower RIVA sub-system if DAL is in state
5613 STARTED.
5614
5615 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005616 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005617
5618 WDI_PostAssocReq must have been called.
5619
Jeff Johnsone7245742012-09-05 17:12:55 -07005620 @param wdiUpdateBeaconParams: the Beacon parameters as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07005621 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005622
Jeff Johnson295189b2012-06-20 16:38:30 -07005623 wdiUpdateBeaconParamsRspCb: callback for passing back the
5624 response of the start operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005625
Jeff Johnson295189b2012-06-20 16:38:30 -07005626 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005627 callback
5628
Jeff Johnson295189b2012-06-20 16:38:30 -07005629 @see WDI_PostAssocReq
5630 @return Result of the function call
5631*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005632WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005633WDI_UpdateBeaconParamsReq
5634(
5635 WDI_UpdateBeaconParamsType* pwdiUpdateBeaconParams,
5636 WDI_UpdateBeaconParamsRspCb wdiUpdateBeaconParamsRspCb,
5637 void* pUserData
5638)
5639{
5640 WDI_EventInfoType wdiEventData;
5641 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5642
5643 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005644 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005645 ------------------------------------------------------------------------*/
5646 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5647 {
5648 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5649 "WDI API call before module is initialized - Fail request");
5650
Jeff Johnsone7245742012-09-05 17:12:55 -07005651 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005652 }
5653
5654 /*------------------------------------------------------------------------
5655 Fill in Event data and post to the Main FSM
5656 ------------------------------------------------------------------------*/
5657 wdiEventData.wdiRequest = WDI_UPD_BCON_PRMS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005658 wdiEventData.pEventData = pwdiUpdateBeaconParams;
5659 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateBeaconParams);
5660 wdiEventData.pCBfnc = wdiUpdateBeaconParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005661 wdiEventData.pUserData = pUserData;
5662
5663 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5664
5665}/*WDI_UpdateBeaconParamsReq*/
5666
5667/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005668 @brief WDI_SendBeaconParamsReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07005669 wishes to update the Beacon template used by HW.
5670 Upon the call of this API the WLAN DAL will pack and send a HAL Update Beacon template request
5671 message to the lower RIVA sub-system if DAL is in state
5672 STARTED.
5673
5674 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005675 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005676
5677 WDI_PostAssocReq must have been called.
5678
Jeff Johnsone7245742012-09-05 17:12:55 -07005679 @param wdiSendBeaconParams: the Beacon parameters as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07005680 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005681
Jeff Johnson295189b2012-06-20 16:38:30 -07005682 wdiSendBeaconParamsRspCb: callback for passing back the
5683 response of the start operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005684
Jeff Johnson295189b2012-06-20 16:38:30 -07005685 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005686 callback
5687
Jeff Johnson295189b2012-06-20 16:38:30 -07005688 @see WDI_PostAssocReq
5689 @return Result of the function call
5690*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005691WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005692WDI_SendBeaconParamsReq
5693(
5694 WDI_SendBeaconParamsType* pwdiSendBeaconParams,
5695 WDI_SendBeaconParamsRspCb wdiSendBeaconParamsRspCb,
5696 void* pUserData
5697)
5698{
5699 WDI_EventInfoType wdiEventData;
5700 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5701
5702 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005703 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005704 ------------------------------------------------------------------------*/
5705 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5706 {
5707 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5708 "WDI API call before module is initialized - Fail request");
5709
Jeff Johnsone7245742012-09-05 17:12:55 -07005710 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005711 }
5712
5713 /*------------------------------------------------------------------------
5714 Fill in Event data and post to the Main FSM
5715 ------------------------------------------------------------------------*/
5716 wdiEventData.wdiRequest = WDI_SND_BCON_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005717 wdiEventData.pEventData = pwdiSendBeaconParams;
5718 wdiEventData.uEventDataSize = sizeof(*pwdiSendBeaconParams);
5719 wdiEventData.pCBfnc = wdiSendBeaconParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005720 wdiEventData.pUserData = pUserData;
5721
5722 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5723
5724}/*WDI_SendBeaconParamsReq*/
5725
5726/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005727 @brief WDI_UpdateProbeRspTemplateReq will be called when the
Jeff Johnson295189b2012-06-20 16:38:30 -07005728 upper MAC wants to update the probe response template to
5729 be transmitted as Soft AP
5730 Upon the call of this API the WLAN DAL will
5731 pack and send the probe rsp template message to the
5732 lower RIVA sub-system if DAL is in state STARTED.
5733
5734 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005735 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005736
5737
Jeff Johnsone7245742012-09-05 17:12:55 -07005738 @param pwdiUpdateProbeRspParams: the Update Beacon parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07005739 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005740
Jeff Johnson295189b2012-06-20 16:38:30 -07005741 wdiSendBeaconParamsRspCb: callback for passing back the
5742 response of the Send Beacon Params operation received
5743 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005744
Jeff Johnson295189b2012-06-20 16:38:30 -07005745 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005746 callback
5747
Jeff Johnson295189b2012-06-20 16:38:30 -07005748 @see WDI_AddBAReq
5749 @return Result of the function call
5750*/
5751
Jeff Johnsone7245742012-09-05 17:12:55 -07005752WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005753WDI_UpdateProbeRspTemplateReq
5754(
5755 WDI_UpdateProbeRspTemplateParamsType* pwdiUpdateProbeRspParams,
5756 WDI_UpdateProbeRspTemplateRspCb wdiUpdateProbeRspParamsRspCb,
5757 void* pUserData
5758)
5759{
5760 WDI_EventInfoType wdiEventData;
5761 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5762
5763 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005764 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005765 ------------------------------------------------------------------------*/
5766 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5767 {
5768 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5769 "WDI API call before module is initialized - Fail request");
5770
Jeff Johnsone7245742012-09-05 17:12:55 -07005771 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005772 }
5773
5774 /*------------------------------------------------------------------------
5775 Fill in Event data and post to the Main FSM
5776 ------------------------------------------------------------------------*/
5777 wdiEventData.wdiRequest = WDI_UPD_PROBE_RSP_TEMPLATE_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005778 wdiEventData.pEventData = pwdiUpdateProbeRspParams;
5779 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateProbeRspParams);
5780 wdiEventData.pCBfnc = wdiUpdateProbeRspParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005781 wdiEventData.pUserData = pUserData;
5782
5783 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5784
5785}/*WDI_UpdateProbeRspTemplateReq*/
5786
5787/**
5788 @brief WDI_NvDownloadReq will be called by the UMAC to download the NV blob
5789 to the NV memory.
5790
5791
5792 @param wdiNvDownloadReqParams: the NV Download parameters as specified by
5793 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005794
Jeff Johnson295189b2012-06-20 16:38:30 -07005795 wdiNvDownloadRspCb: callback for passing back the response of
5796 the NV Download operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005797
Jeff Johnson295189b2012-06-20 16:38:30 -07005798 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005799 callback
5800
Jeff Johnson295189b2012-06-20 16:38:30 -07005801 @see WDI_PostAssocReq
5802 @return Result of the function call
5803*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005804WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005805WDI_NvDownloadReq
5806(
5807 WDI_NvDownloadReqParamsType* pwdiNvDownloadReqParams,
5808 WDI_NvDownloadRspCb wdiNvDownloadRspCb,
5809 void* pUserData
5810)
5811{
5812 WDI_EventInfoType wdiEventData;
5813
5814 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005815 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005816 ------------------------------------------------------------------------*/
5817 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5818 {
5819 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5820 "WDI API call before module is initialized - Fail request");
5821
Jeff Johnsone7245742012-09-05 17:12:55 -07005822 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005823 }
5824
5825 /*------------------------------------------------------------------------
5826 Fill in Event data and post to the Main FSM
5827 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005828 wdiEventData.wdiRequest = WDI_NV_DOWNLOAD_REQ;
5829 wdiEventData.pEventData = (void *)pwdiNvDownloadReqParams;
5830 wdiEventData.uEventDataSize = sizeof(*pwdiNvDownloadReqParams);
5831 wdiEventData.pCBfnc = wdiNvDownloadRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005832 wdiEventData.pUserData = pUserData;
5833
5834 return WDI_PostMainEvent(&gWDICb, WDI_START_EVENT, &wdiEventData);
5835
5836}/*WDI_NVDownloadReq*/
5837
Jeff Johnson295189b2012-06-20 16:38:30 -07005838/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005839 @brief WDI_SetP2PGONOAReq will be called when the
Jeff Johnson295189b2012-06-20 16:38:30 -07005840 upper MAC wants to send Notice of Absence
5841 Upon the call of this API the WLAN DAL will
5842 pack and send the probe rsp template message to the
5843 lower RIVA sub-system if DAL is in state STARTED.
5844
5845 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005846 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005847
5848
Jeff Johnsone7245742012-09-05 17:12:55 -07005849 @param pwdiUpdateProbeRspParams: the Update Beacon parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07005850 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005851
Jeff Johnson295189b2012-06-20 16:38:30 -07005852 wdiSendBeaconParamsRspCb: callback for passing back the
5853 response of the Send Beacon Params operation received
5854 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005855
Jeff Johnson295189b2012-06-20 16:38:30 -07005856 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005857 callback
5858
Jeff Johnson295189b2012-06-20 16:38:30 -07005859 @see WDI_AddBAReq
5860 @return Result of the function call
5861*/
5862WDI_Status
5863WDI_SetP2PGONOAReq
5864(
5865 WDI_SetP2PGONOAReqParamsType* pwdiP2PGONOAReqParams,
5866 WDI_SetP2PGONOAReqParamsRspCb wdiP2PGONOAReqParamsRspCb,
5867 void* pUserData
5868)
5869{
5870 WDI_EventInfoType wdiEventData;
5871 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5872
5873 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005874 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005875 ------------------------------------------------------------------------*/
5876 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5877 {
5878 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5879 "WDI API call before module is initialized - Fail request");
5880
Jeff Johnsone7245742012-09-05 17:12:55 -07005881 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005882 }
5883
5884 /*------------------------------------------------------------------------
5885 Fill in Event data and post to the Main FSM
5886 ------------------------------------------------------------------------*/
5887 wdiEventData.wdiRequest = WDI_P2P_GO_NOTICE_OF_ABSENCE_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005888 wdiEventData.pEventData = pwdiP2PGONOAReqParams;
5889 wdiEventData.uEventDataSize = sizeof(*pwdiP2PGONOAReqParams);
5890 wdiEventData.pCBfnc = wdiP2PGONOAReqParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005891 wdiEventData.pUserData = pUserData;
5892
5893 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5894
5895}/*WDI_SetP2PGONOAReq*/
Jeff Johnson295189b2012-06-20 16:38:30 -07005896
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +05305897#ifdef FEATURE_WLAN_TDLS
5898/**
5899 @brief WDI_SetTDLSLinkEstablishReq will be called when the
5900 upper MAC wants to send TDLS Link Establish Request Parameters
5901 Upon the call of this API the WLAN DAL will
5902 pack and send the TDLS Link Establish Request message to the
5903 lower RIVA sub-system if DAL is in state STARTED.
5904
5905 In state BUSY this request will be queued. Request won't
5906 be allowed in any other state.
5907
5908
5909 @param pwdiTDLSLinkEstablishReqParams: TDLS Peer Parameters
5910 for Link Establishment (Used for PUAPSD , TDLS Off Channel ...)
5911
5912 wdiTDLSLinkEstablishReqRspCb: callback for passing back the
5913 response of the TDLS Link Establish request received
5914 from the device
5915
5916 pUserData: user data will be passed back with the
5917 callback
5918
5919 @see
5920 @return Result of the function call
5921*/
5922WDI_Status
5923WDI_SetTDLSLinkEstablishReq
5924(
5925 WDI_SetTDLSLinkEstablishReqParamsType* pwdiTDLSLinkEstablishReqParams,
5926 WDI_SetTDLSLinkEstablishReqParamsRspCb wdiTDLSLinkEstablishReqRspCb,
5927 void* pUserData
5928)
5929{
5930 WDI_EventInfoType wdiEventData;
5931 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5932
5933 /*------------------------------------------------------------------------
5934 Sanity Check
5935 ------------------------------------------------------------------------*/
5936 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5937 {
5938 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5939 "WDI API call before module is initialized - Fail request");
5940
5941 return WDI_STATUS_E_NOT_ALLOWED;
5942 }
5943
5944 /*------------------------------------------------------------------------
5945 Fill in Event data and post to the Main FSM
5946 ------------------------------------------------------------------------*/
5947 wdiEventData.wdiRequest = WDI_TDLS_LINK_ESTABLISH_REQ;
5948 wdiEventData.pEventData = pwdiTDLSLinkEstablishReqParams;
5949 wdiEventData.uEventDataSize = sizeof(*pwdiTDLSLinkEstablishReqParams);
5950 wdiEventData.pCBfnc = wdiTDLSLinkEstablishReqRspCb;
5951 wdiEventData.pUserData = pUserData;
5952
5953 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5954
5955}/*WDI_SetTDLSLinkEstablishReq*/
Atul Mittalc0f739f2014-07-31 13:47:47 +05305956
5957//tdlsoffchan
5958/**
5959 @brief WDI_SetTDLSChanSwitchReq will be called when the
5960 upper MAC wants to send TDLS Chan Switch Request Parameters
5961 Upon the call of this API the WLAN DAL will
5962 pack and send the TDLS Link Establish Request message to the
5963 lower RIVA sub-system if DAL is in state STARTED.
5964
5965 In state BUSY this request will be queued. Request won't
5966 be allowed in any other state.
5967
5968
5969 @param pwdiTDLSChanSwitchReqParams: TDLS Peer Parameters
5970 for Link Establishment (Used for TDLS Off Channel ...)
5971
5972 wdiTDLSChanSwitchReqRspCb: callback for passing back the
5973 response of the TDLS Chan Switch request received
5974 from the device
5975
5976 pUserData: user data will be passed back with the
5977 callback
5978
5979 @see
5980 @return Result of the function call
5981*/
5982WDI_Status
5983WDI_SetTDLSChanSwitchReq
5984(
5985 WDI_SetTDLSChanSwitchReqParamsType* pwdiTDLSChanSwitchReqParams,
5986 WDI_SetTDLSChanSwitchReqParamsRspCb wdiTDLSChanSwitchRReqRspCb,
5987 void* pUserData
5988)
5989{
5990 WDI_EventInfoType wdiEventData;
5991 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5992
5993 /*------------------------------------------------------------------------
5994 Sanity Check
5995 ------------------------------------------------------------------------*/
5996 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5997 {
5998 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5999 "WDI API call before module is initialized - Fail request");
6000
6001 return WDI_STATUS_E_NOT_ALLOWED;
6002 }
6003
6004 /*------------------------------------------------------------------------
6005 Fill in Event data and post to the Main FSM
6006 ------------------------------------------------------------------------*/
6007 wdiEventData.wdiRequest = WDI_TDLS_CHAN_SWITCH_REQ;
6008 wdiEventData.pEventData = pwdiTDLSChanSwitchReqParams;
6009 wdiEventData.uEventDataSize = sizeof(*pwdiTDLSChanSwitchReqParams);
6010 wdiEventData.pCBfnc = wdiTDLSChanSwitchRReqRspCb;
6011 wdiEventData.pUserData = pUserData;
6012
6013 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6014
6015}/*WDI_SetTDLSChanSwitchReq*/
6016
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +05306017#endif
6018
Jeff Johnson295189b2012-06-20 16:38:30 -07006019/**
Jeff Johnsone7245742012-09-05 17:12:55 -07006020 @brief WDI_AddSTASelfReq will be called when the
Jeff Johnson295189b2012-06-20 16:38:30 -07006021 UMAC wanted to add STA self while opening any new session
6022 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07006023 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07006024
6025
Jeff Johnsone7245742012-09-05 17:12:55 -07006026 @param pwdiAddSTASelfParams: the add sta self parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07006027 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07006028
Jeff Johnson295189b2012-06-20 16:38:30 -07006029 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07006030 callback
6031
6032 @see
Jeff Johnson295189b2012-06-20 16:38:30 -07006033 @return Result of the function call
6034*/
6035WDI_Status
6036WDI_AddSTASelfReq
6037(
6038 WDI_AddSTASelfReqParamsType* pwdiAddSTASelfReqParams,
6039 WDI_AddSTASelfParamsRspCb wdiAddSTASelfReqParamsRspCb,
6040 void* pUserData
6041)
6042{
6043 WDI_EventInfoType wdiEventData;
6044 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6045
6046 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006047 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006048 ------------------------------------------------------------------------*/
6049 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6050 {
6051 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6052 "WDI API call before module is initialized - Fail request");
6053
Jeff Johnsone7245742012-09-05 17:12:55 -07006054 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006055 }
6056
6057 /*------------------------------------------------------------------------
6058 Fill in Event data and post to the Main FSM
6059 ------------------------------------------------------------------------*/
6060 wdiEventData.wdiRequest = WDI_ADD_STA_SELF_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07006061 wdiEventData.pEventData = pwdiAddSTASelfReqParams;
6062 wdiEventData.uEventDataSize = sizeof(*pwdiAddSTASelfReqParams);
6063 wdiEventData.pCBfnc = wdiAddSTASelfReqParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07006064 wdiEventData.pUserData = pUserData;
6065
6066 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6067
6068}/*WDI_AddSTASelfReq*/
6069
6070
Jeff Johnsone7245742012-09-05 17:12:55 -07006071#ifdef WLAN_FEATURE_VOWIFI_11R
Jeff Johnson295189b2012-06-20 16:38:30 -07006072/**
6073 @brief WDI_AggrAddTSReq will be called when the upper MAC to inform
6074 the device of a successful add TSpec negotiation. HW
6075 needs to receive the TSpec Info from the UMAC in order
6076 to configure properly the QoS data traffic. Upon the
6077 call of this API the WLAN DAL will pack and send a HAL
6078 Add TS request message to the lower RIVA sub-system if
6079 DAL is in state STARTED.
6080
6081 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07006082 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07006083
6084 WDI_PostAssocReq must have been called.
6085
6086 @param wdiAddTsReqParams: the add TS parameters as specified by
6087 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07006088
Jeff Johnson295189b2012-06-20 16:38:30 -07006089 wdiAddTsRspCb: callback for passing back the response of
6090 the add TS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07006091
Jeff Johnson295189b2012-06-20 16:38:30 -07006092 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07006093 callback
6094
Jeff Johnson295189b2012-06-20 16:38:30 -07006095 @see WDI_PostAssocReq
6096 @return Result of the function call
6097*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006098WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07006099WDI_AggrAddTSReq
6100(
6101 WDI_AggrAddTSReqParamsType* pwdiAggrAddTsReqParams,
6102 WDI_AggrAddTsRspCb wdiAggrAddTsRspCb,
6103 void* pUserData
6104)
6105{
6106 WDI_EventInfoType wdiEventData;
6107 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6108
6109 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006110 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006111 ------------------------------------------------------------------------*/
6112 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6113 {
6114 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6115 "WDI API call before module is initialized - Fail request");
6116
Jeff Johnsone7245742012-09-05 17:12:55 -07006117 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006118 }
6119
6120 /*------------------------------------------------------------------------
6121 Fill in Event data and post to the Main FSM
6122 ------------------------------------------------------------------------*/
6123 wdiEventData.wdiRequest = WDI_AGGR_ADD_TS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07006124 wdiEventData.pEventData = pwdiAggrAddTsReqParams;
6125 wdiEventData.uEventDataSize = sizeof(*pwdiAggrAddTsReqParams);
6126 wdiEventData.pCBfnc = wdiAggrAddTsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07006127 wdiEventData.pUserData = pUserData;
6128
6129 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6130
6131}/*WDI_AggrAddTSReq*/
6132
6133#endif /* WLAN_FEATURE_VOWIFI_11R */
6134
Jeff Johnson295189b2012-06-20 16:38:30 -07006135/**
6136 @brief WDI_FTMCommandReq
6137 Post FTM Command Event
Jeff Johnsone7245742012-09-05 17:12:55 -07006138
6139 @param ftmCommandReq: FTM Command Body
6140 @param ftmCommandRspCb: FTM Response from HAL CB
Jeff Johnson295189b2012-06-20 16:38:30 -07006141 @param pUserData: Client Data
Jeff Johnsone7245742012-09-05 17:12:55 -07006142
Jeff Johnson295189b2012-06-20 16:38:30 -07006143 @see
6144 @return Result of the function call
6145*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006146WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07006147WDI_FTMCommandReq
6148(
6149 WDI_FTMCommandReqType *ftmCommandReq,
6150 WDI_FTMCommandRspCb ftmCommandRspCb,
6151 void *pUserData
6152)
6153{
6154 WDI_EventInfoType wdiEventData;
6155 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6156
6157 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006158 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006159 ------------------------------------------------------------------------*/
6160 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6161 {
6162 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6163 "WDI API call before module is initialized - Fail request");
6164
Jeff Johnsone7245742012-09-05 17:12:55 -07006165 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006166 }
6167
6168 /*------------------------------------------------------------------------
6169 Fill in Event data and post to the Main FSM
6170 ------------------------------------------------------------------------*/
6171 wdiEventData.wdiRequest = WDI_FTM_CMD_REQ;
6172 wdiEventData.pEventData = (void *)ftmCommandReq;
6173 wdiEventData.uEventDataSize = ftmCommandReq->bodyLength + sizeof(wpt_uint32);
6174 wdiEventData.pCBfnc = ftmCommandRspCb;
6175 wdiEventData.pUserData = pUserData;
6176
6177 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6178}
Jeff Johnson295189b2012-06-20 16:38:30 -07006179/**
Jeff Johnsone7245742012-09-05 17:12:55 -07006180 @brief WDI_HostResumeReq will be called
Jeff Johnson295189b2012-06-20 16:38:30 -07006181
6182 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07006183 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07006184
6185
6186 @param pwdiResumeReqParams: as specified by
6187 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07006188
Jeff Johnson295189b2012-06-20 16:38:30 -07006189 wdiResumeReqRspCb: callback for passing back the response of
6190 the Resume Req received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07006191
Jeff Johnson295189b2012-06-20 16:38:30 -07006192 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07006193 callback
6194
6195 @see
Jeff Johnson295189b2012-06-20 16:38:30 -07006196 @return Result of the function call
6197*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006198WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07006199WDI_HostResumeReq
6200(
6201 WDI_ResumeParamsType* pwdiResumeReqParams,
6202 WDI_HostResumeEventRspCb wdiResumeReqRspCb,
6203 void* pUserData
6204)
6205{
6206 WDI_EventInfoType wdiEventData;
6207 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6208
6209 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006210 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006211 ------------------------------------------------------------------------*/
6212 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6213 {
6214 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6215 "WDI API call before module is initialized - Fail request");
6216
Jeff Johnsone7245742012-09-05 17:12:55 -07006217 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006218 }
6219
6220 /*------------------------------------------------------------------------
6221 Fill in Event data and post to the Main FSM
6222 ------------------------------------------------------------------------*/
6223 wdiEventData.wdiRequest = WDI_HOST_RESUME_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07006224 wdiEventData.pEventData = pwdiResumeReqParams;
6225 wdiEventData.uEventDataSize = sizeof(*pwdiResumeReqParams);
6226 wdiEventData.pCBfnc = wdiResumeReqRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07006227 wdiEventData.pUserData = pUserData;
6228
6229 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6230
6231}/*WDI_HostResumeReq*/
6232
6233/**
Jeff Johnsone7245742012-09-05 17:12:55 -07006234 @brief WDI_DelSTASelfReq will be called
Jeff Johnson295189b2012-06-20 16:38:30 -07006235
6236 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07006237 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07006238
6239
6240 @param pwdiDelStaSelfReqParams: as specified by
6241 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07006242
Jeff Johnson295189b2012-06-20 16:38:30 -07006243 wdiDelStaSelfRspCb: callback for passing back the response of
6244 the add TS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07006245
Jeff Johnson295189b2012-06-20 16:38:30 -07006246 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07006247 callback
6248
Jeff Johnson295189b2012-06-20 16:38:30 -07006249 @see WDI_PostAssocReq
6250 @return Result of the function call
6251*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006252WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07006253WDI_DelSTASelfReq
6254(
6255 WDI_DelSTASelfReqParamsType* pwdiDelStaSelfReqParams,
6256 WDI_DelSTASelfRspCb wdiDelStaSelfRspCb,
6257 void* pUserData
6258)
6259{
6260 WDI_EventInfoType wdiEventData;
6261 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6262
6263 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006264 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006265 ------------------------------------------------------------------------*/
6266 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6267 {
6268 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6269 "WDI API call before module is initialized - Fail request");
6270
Jeff Johnsone7245742012-09-05 17:12:55 -07006271 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006272 }
6273
6274 /*------------------------------------------------------------------------
6275 Fill in Event data and post to the Main FSM
6276 ------------------------------------------------------------------------*/
6277 wdiEventData.wdiRequest = WDI_DEL_STA_SELF_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07006278 wdiEventData.pEventData = pwdiDelStaSelfReqParams;
6279 wdiEventData.uEventDataSize = sizeof(*pwdiDelStaSelfReqParams);
6280 wdiEventData.pCBfnc = wdiDelStaSelfRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07006281 wdiEventData.pUserData = pUserData;
6282
6283 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6284
6285}/*WDI_AggrAddTSReq*/
6286
6287/**
Jeff Johnsone7245742012-09-05 17:12:55 -07006288 @brief WDI_SetTxPerTrackingReq will be called when the upper MAC
6289 wants to set the Tx Per Tracking configurations.
Jeff Johnson295189b2012-06-20 16:38:30 -07006290 Upon the call of this API the WLAN DAL will pack
6291 and send a HAL Set Tx Per Tracking request message to the
6292 lower RIVA sub-system if DAL is in state STARTED.
6293
6294 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07006295 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07006296
Jeff Johnsone7245742012-09-05 17:12:55 -07006297 @param pwdiSetTxPerTrackingReqParams: the Set Tx PER Tracking configurations as
Jeff Johnson295189b2012-06-20 16:38:30 -07006298 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07006299
Jeff Johnson295189b2012-06-20 16:38:30 -07006300 pwdiSetTxPerTrackingRspCb: callback for passing back the
6301 response of the set Tx PER Tracking configurations operation received
6302 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07006303
Jeff Johnson295189b2012-06-20 16:38:30 -07006304 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07006305 callback
6306
Jeff Johnson295189b2012-06-20 16:38:30 -07006307 @return Result of the function call
6308*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006309WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07006310WDI_SetTxPerTrackingReq
6311(
6312 WDI_SetTxPerTrackingReqParamsType* pwdiSetTxPerTrackingReqParams,
6313 WDI_SetTxPerTrackingRspCb pwdiSetTxPerTrackingRspCb,
6314 void* pUserData
6315)
6316{
6317 WDI_EventInfoType wdiEventData;
6318 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6319
6320 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006321 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006322 ------------------------------------------------------------------------*/
6323 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6324 {
6325 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6326 "WDI API call before module is initialized - Fail request");
6327
Jeff Johnsone7245742012-09-05 17:12:55 -07006328 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006329 }
6330
6331 /*------------------------------------------------------------------------
6332 Fill in Event data and post to the Main FSM
6333 ------------------------------------------------------------------------*/
6334 wdiEventData.wdiRequest = WDI_SET_TX_PER_TRACKING_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07006335 wdiEventData.pEventData = pwdiSetTxPerTrackingReqParams;
Jeff Johnson295189b2012-06-20 16:38:30 -07006336 wdiEventData.uEventDataSize = sizeof(*pwdiSetTxPerTrackingReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07006337 wdiEventData.pCBfnc = pwdiSetTxPerTrackingRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07006338 wdiEventData.pUserData = pUserData;
6339
6340 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6341
6342}/*WDI_SetTxPerTrackingReq*/
6343
6344/**
6345 @brief WDI_SetTmLevelReq
6346 If HW Thermal condition changed, driver should react based on new
6347 HW thermal condition.
6348
6349 @param pwdiSetTmLevelReq: New thermal condition information
6350
6351 pwdiSetTmLevelRspCb: callback
6352
6353 usrData: user data will be passed back with the
6354 callback
6355
6356 @return Result of the function call
6357*/
6358WDI_Status
6359WDI_SetTmLevelReq
6360(
6361 WDI_SetTmLevelReqType *pwdiSetTmLevelReq,
6362 WDI_SetTmLevelCb pwdiSetTmLevelRspCb,
6363 void *usrData
6364)
6365{
6366 WDI_EventInfoType wdiEventData;
6367 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6368
6369 /*------------------------------------------------------------------------
6370 Sanity Check
6371 ------------------------------------------------------------------------*/
6372 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6373 {
6374 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6375 "WDI API call before module is initialized - Fail request");
6376
6377 return WDI_STATUS_E_NOT_ALLOWED;
6378 }
6379
6380 /*------------------------------------------------------------------------
6381 Fill in Event data and post to the Main FSM
6382 ------------------------------------------------------------------------*/
6383 wdiEventData.wdiRequest = WDI_SET_TM_LEVEL_REQ;
6384 wdiEventData.pEventData = pwdiSetTmLevelReq;
6385 wdiEventData.uEventDataSize = sizeof(*pwdiSetTmLevelReq);
6386 wdiEventData.pCBfnc = pwdiSetTmLevelRspCb;
6387 wdiEventData.pUserData = usrData;
6388
6389 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6390}
6391
6392/**
6393 @brief WDI_HostSuspendInd
6394
6395 Suspend Indication from the upper layer will be sent
6396 down to HAL
Jeff Johnsone7245742012-09-05 17:12:55 -07006397
Jeff Johnson295189b2012-06-20 16:38:30 -07006398 @param WDI_SuspendResumeIndParamsType
Jeff Johnsone7245742012-09-05 17:12:55 -07006399
6400 @see
6401
Jeff Johnson295189b2012-06-20 16:38:30 -07006402 @return Status of the request
6403*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006404WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07006405WDI_HostSuspendInd
6406(
6407 WDI_SuspendParamsType* pwdiSuspendIndParams
6408)
6409{
6410
6411 WDI_EventInfoType wdiEventData;
6412 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6413
6414 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006415 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006416 ------------------------------------------------------------------------*/
6417 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6418 {
6419 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6420 "WDI API call before module is initialized - Fail request");
6421
Jeff Johnsone7245742012-09-05 17:12:55 -07006422 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006423 }
6424
6425 /*------------------------------------------------------------------------
6426 Fill in Event data and post to the Main FSM
6427 ------------------------------------------------------------------------*/
6428 wdiEventData.wdiRequest = WDI_HOST_SUSPEND_IND;
Jeff Johnsone7245742012-09-05 17:12:55 -07006429 wdiEventData.pEventData = pwdiSuspendIndParams;
6430 wdiEventData.uEventDataSize = sizeof(*pwdiSuspendIndParams);
6431 wdiEventData.pCBfnc = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07006432 wdiEventData.pUserData = NULL;
6433
6434 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6435
6436}/*WDI_HostSuspendInd*/
6437
6438/**
Madan Mohan Koyyalamudi01cba042013-01-10 21:56:05 -08006439 @brief WDI_TrafficStatsInd
6440 Traffic Stats from the upper layer will be sent
6441 down to HAL
6442
6443 @param WDI_TrafficStatsIndType
6444
6445 @see
6446
6447 @return Status of the request
6448*/
6449WDI_Status
6450WDI_TrafficStatsInd
6451(
6452 WDI_TrafficStatsIndType *pWdiTrafficStatsIndParams
6453)
6454{
6455
6456 WDI_EventInfoType wdiEventData;
6457 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6458
6459 /*------------------------------------------------------------------------
6460 Sanity Check
6461 ------------------------------------------------------------------------*/
6462 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6463 {
6464 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6465 "WDI API call before module is initialized - Fail request");
6466
6467 return WDI_STATUS_E_NOT_ALLOWED;
6468 }
6469
6470 /*------------------------------------------------------------------------
6471 Fill in Event data and post to the Main FSM
6472 ------------------------------------------------------------------------*/
6473 wdiEventData.wdiRequest = WDI_TRAFFIC_STATS_IND;
6474 wdiEventData.pEventData = pWdiTrafficStatsIndParams;
6475 wdiEventData.uEventDataSize = sizeof(*pWdiTrafficStatsIndParams);
6476 wdiEventData.pCBfnc = NULL;
6477 wdiEventData.pUserData = NULL;
6478
6479 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6480
6481}/*WDI_TrafficStatsInd*/
6482
Chet Lanctot186b5732013-03-18 10:26:30 -07006483#ifdef WLAN_FEATURE_11W
6484/**
6485 @brief WDI_ExcludeUnencryptedInd
6486 Register with HAL to receive/drop unencrypted frames
6487
6488 @param WDI_ExcludeUnencryptIndType
6489
6490 @see
6491
6492 @return Status of the request
6493*/
6494WDI_Status
6495WDI_ExcludeUnencryptedInd
6496(
6497 WDI_ExcludeUnencryptIndType *pWdiExcUnencParams
6498)
6499{
6500
6501 WDI_EventInfoType wdiEventData;
6502 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6503
6504 /*------------------------------------------------------------------------
6505 Sanity Check
6506 ------------------------------------------------------------------------*/
6507 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6508 {
6509 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6510 "WDI API call before module is initialized - Fail request");
6511
6512 return WDI_STATUS_E_NOT_ALLOWED;
6513 }
6514
6515 /*------------------------------------------------------------------------
6516 Fill in Event data and post to the Main FSM
6517 ------------------------------------------------------------------------*/
6518 wdiEventData.wdiRequest = WDI_EXCLUDE_UNENCRYPTED_IND;
6519 wdiEventData.pEventData = pWdiExcUnencParams;
6520 wdiEventData.uEventDataSize = sizeof(*pWdiExcUnencParams);
6521 wdiEventData.pCBfnc = NULL;
6522 wdiEventData.pUserData = NULL;
6523
6524 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6525
6526}/*WDI_TrafficStatsInd*/
6527#endif
6528
Madan Mohan Koyyalamudi01cba042013-01-10 21:56:05 -08006529/**
Yue Mab9c86f42013-08-14 15:59:08 -07006530 @brief WDI_AddPeriodicTxPtrnInd: Add Periodic TX Pattern Indication to FW
6531
6532 @param addPeriodicTxPtrnParams: Add Pattern parameters
6533
6534 @see
6535
6536 @return Status of the request
6537*/
6538WDI_Status
6539WDI_AddPeriodicTxPtrnInd
6540(
6541 WDI_AddPeriodicTxPtrnParamsType* addPeriodicTxPtrnParams
6542)
6543{
6544 WDI_EventInfoType wdiEventData;
6545
6546 /*-------------------------------------------------------------------------
6547 Sanity Check
6548 ------------------------------------------------------------------------*/
6549 if (eWLAN_PAL_FALSE == gWDIInitialized)
6550 {
6551 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6552 "WDI API call before module is initialized - Fail request!");
6553
6554 return WDI_STATUS_E_NOT_ALLOWED;
6555 }
6556
6557 /*-------------------------------------------------------------------------
6558 Fill in Event data and post to the Main FSM
6559 ------------------------------------------------------------------------*/
6560 wdiEventData.wdiRequest = WDI_ADD_PERIODIC_TX_PATTERN_IND;
6561 wdiEventData.pEventData = addPeriodicTxPtrnParams;
6562 wdiEventData.uEventDataSize = sizeof(WDI_AddPeriodicTxPtrnParamsType);
6563 wdiEventData.pCBfnc = NULL;
6564 wdiEventData.pUserData = NULL;
6565
6566 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6567}
6568
6569/**
6570 @brief WDI_DelPeriodicTxPtrnInd: Delete Periodic TX Pattern Indication to FW
6571
6572 @param delPeriodicTxPtrnParams: Delete Pattern parameters
6573
6574 @see
6575
6576 @return Status of the request
6577*/
6578WDI_Status
6579WDI_DelPeriodicTxPtrnInd
6580(
6581 WDI_DelPeriodicTxPtrnParamsType* delPeriodicTxPtrnParams
6582)
6583{
6584 WDI_EventInfoType wdiEventData;
6585
6586 /*-------------------------------------------------------------------------
6587 Sanity Check
6588 ------------------------------------------------------------------------*/
6589 if (eWLAN_PAL_FALSE == gWDIInitialized)
6590 {
6591 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6592 "WDI API call before module is initialized - Fail request!");
6593
6594 return WDI_STATUS_E_NOT_ALLOWED;
6595 }
6596
6597 /*-------------------------------------------------------------------------
6598 Fill in Event data and post to the Main FSM
6599 ------------------------------------------------------------------------*/
6600 wdiEventData.wdiRequest = WDI_DEL_PERIODIC_TX_PATTERN_IND;
6601 wdiEventData.pEventData = delPeriodicTxPtrnParams;
6602 wdiEventData.uEventDataSize = sizeof(WDI_DelPeriodicTxPtrnParamsType);
6603 wdiEventData.pCBfnc = NULL;
6604 wdiEventData.pUserData = NULL;
6605
6606 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6607}
6608
6609/**
Jeff Johnson295189b2012-06-20 16:38:30 -07006610 @brief WDI_HALDumpCmdReq
6611 Post HAL DUMP Command Event
Jeff Johnsone7245742012-09-05 17:12:55 -07006612
6613 @param halDumpCmdReqParams: Hal Dump Command Body
6614 @param halDumpCmdRspCb: HAL DUMP Response from HAL CB
Jeff Johnson295189b2012-06-20 16:38:30 -07006615 @param pUserData: Client Data
Jeff Johnsone7245742012-09-05 17:12:55 -07006616
Jeff Johnson295189b2012-06-20 16:38:30 -07006617 @see
6618 @return Result of the function call
6619*/
6620WDI_Status WDI_HALDumpCmdReq
6621(
6622 WDI_HALDumpCmdReqParamsType *halDumpCmdReqParams,
6623 WDI_HALDumpCmdRspCb halDumpCmdRspCb,
6624 void *pUserData
6625)
6626{
6627 WDI_EventInfoType wdiEventData;
6628 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6629
6630 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006631 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006632 ------------------------------------------------------------------------*/
6633 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6634 {
6635 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6636 "WDI API call before module is initialized - Fail request");
6637
Jeff Johnsone7245742012-09-05 17:12:55 -07006638 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006639 }
6640
6641 /*------------------------------------------------------------------------
6642 Fill in Event data and post to the Main FSM
6643 ------------------------------------------------------------------------*/
6644 wdiEventData.wdiRequest = WDI_HAL_DUMP_CMD_REQ;
6645 wdiEventData.pEventData = (void *)halDumpCmdReqParams;
6646 wdiEventData.uEventDataSize = sizeof(WDI_HALDumpCmdReqParamsType);
6647 wdiEventData.pCBfnc = halDumpCmdRspCb;
6648 wdiEventData.pUserData = pUserData;
6649
6650 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6651}
6652
Jeff Johnsone7245742012-09-05 17:12:55 -07006653/*============================================================================
6654
Jeff Johnson295189b2012-06-20 16:38:30 -07006655 DAL Control Path Main FSM Function Implementation
Jeff Johnsone7245742012-09-05 17:12:55 -07006656
Jeff Johnson295189b2012-06-20 16:38:30 -07006657 ============================================================================*/
6658
6659/**
6660 @brief Main FSM Start function for all states except BUSY
6661
Jeff Johnsone7245742012-09-05 17:12:55 -07006662
6663 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -07006664 wdiEV: event posted to the main DAL FSM
6665 pEventData: pointer to the event information
Jeff Johnsone7245742012-09-05 17:12:55 -07006666 structure
6667
Jeff Johnson295189b2012-06-20 16:38:30 -07006668 @see
6669 @return Result of the function call
6670*/
6671WDI_Status
6672WDI_PostMainEvent
6673(
Jeff Johnsone7245742012-09-05 17:12:55 -07006674 WDI_ControlBlockType* pWDICtx,
6675 WDI_MainEventType wdiEV,
Jeff Johnson295189b2012-06-20 16:38:30 -07006676 WDI_EventInfoType* pEventData
Jeff Johnson295189b2012-06-20 16:38:30 -07006677)
6678{
Jeff Johnsone7245742012-09-05 17:12:55 -07006679 WDI_Status wdiStatus;
6680 WDI_MainFuncType pfnWDIMainEvHdlr;
6681 WDI_MainStateType wdiOldState;
Jeff Johnson295189b2012-06-20 16:38:30 -07006682 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6683
6684 /*-------------------------------------------------------------------------
6685 Sanity check
6686 -------------------------------------------------------------------------*/
6687 if (( pWDICtx->uGlobalState >= WDI_MAX_ST ) ||
6688 ( wdiEV >= WDI_MAX_EVENT ))
6689 {
6690 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6691 "Invalid state or event in Post Main Ev function ST: %d EV: %d",
6692 pWDICtx->uGlobalState, wdiEV);
Jeff Johnsone7245742012-09-05 17:12:55 -07006693 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006694 }
6695
6696 /*Access to the global state must be locked */
6697 wpalMutexAcquire(&pWDICtx->wptMutex);
6698
6699 /*Fetch event handler for state*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006700 pfnWDIMainEvHdlr = wdiMainFSM[pWDICtx->uGlobalState].pfnMainTbl[wdiEV];
Jeff Johnson295189b2012-06-20 16:38:30 -07006701
6702 wdiOldState = pWDICtx->uGlobalState;
6703
6704 /*
Jeff Johnsone7245742012-09-05 17:12:55 -07006705 --Incase of WDI event is WDI_RESPONSE_EVENT and this is called when a
6706 response comes from CCPU for the request sent by host:
6707 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 -07006708 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 -07006709 --Incase of WDI event is WDI_RESPONSE_EVENT and it is an indication from the
Jeff Johnson295189b2012-06-20 16:38:30 -07006710 CCPU:
6711 don't change the state */
6712 if ( WDI_RESPONSE_EVENT != wdiEV)
6713 {
6714 /*Transition to BUSY State - the request is now being processed by the FSM,
6715 if the request fails we shall transition back to the old state, if not
6716 the request will manage its own state transition*/
6717 WDI_STATE_TRANSITION( pWDICtx, WDI_BUSY_ST);
6718 }
6719 /* If the state function associated with the EV is NULL it means that this
6720 event is not allowed in this state*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006721 if ( NULL != pfnWDIMainEvHdlr )
Jeff Johnson295189b2012-06-20 16:38:30 -07006722 {
6723 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -07006724 "Posting event %d in state: %d to the Main FSM",
Jeff Johnson295189b2012-06-20 16:38:30 -07006725 wdiEV, wdiOldState);
Jeff Johnsone7245742012-09-05 17:12:55 -07006726 wdiStatus = pfnWDIMainEvHdlr( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07006727 }
6728 else
6729 {
6730 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07006731 "Unexpected event %d in state: %d",
Jeff Johnson295189b2012-06-20 16:38:30 -07006732 wdiEV, wdiOldState);
Jeff Johnsone7245742012-09-05 17:12:55 -07006733 wdiStatus = WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006734 }
6735
6736 /* If a request handles itself well it will end up in a success or in a
6737 pending
6738 Success - means that the request was processed and the proper state
6739 transition already occurred or will occur when the resp is received
6740 - NO other state transition or dequeueing is required
Jeff Johnsone7245742012-09-05 17:12:55 -07006741
Jeff Johnson295189b2012-06-20 16:38:30 -07006742 Pending - means the request could not be processed at this moment in time
6743 because the FSM was already busy so no state transition or dequeueing
6744 is necessary anymore
Jeff Johnsone7245742012-09-05 17:12:55 -07006745
Jeff Johnson295189b2012-06-20 16:38:30 -07006746 Success for synchronous case means that the transition may occur and
6747 processing of pending requests may continue - so it should go through
6748 and restores the state and continue processing queued requests*/
6749 if (( WDI_STATUS_SUCCESS != wdiStatus )&&
6750 ( WDI_STATUS_PENDING != wdiStatus ))
6751 {
6752 if ( WDI_RESPONSE_EVENT != wdiEV)
6753 {
6754 /*The request has failed or could not be processed - transition back to
6755 the old state - check to see if anything was queued and try to execute
6756 The dequeue logic should post a message to a thread and return - no
6757 actual processing can occur */
6758 WDI_STATE_TRANSITION( pWDICtx, wdiOldState);
6759 }
6760 WDI_DequeuePendingReq(pWDICtx);
Jeff Johnsone7245742012-09-05 17:12:55 -07006761
Jeff Johnson295189b2012-06-20 16:38:30 -07006762 }
6763
6764 /* we have completed processing the event */
6765 wpalMutexRelease(&pWDICtx->wptMutex);
6766
Jeff Johnsone7245742012-09-05 17:12:55 -07006767 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07006768
6769}/*WDI_PostMainEvent*/
6770
6771
6772/*--------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006773 INIT State Functions
Jeff Johnson295189b2012-06-20 16:38:30 -07006774--------------------------------------------------------------------------*/
6775/**
6776 @brief Main FSM Start function for all states except BUSY
6777
Jeff Johnsone7245742012-09-05 17:12:55 -07006778
6779 @param pWDICtx: pointer to the WLAN DAL context
6780 pEventData: pointer to the event information structure
6781
Jeff Johnson295189b2012-06-20 16:38:30 -07006782 @see
6783 @return Result of the function call
6784*/
6785WDI_Status
6786WDI_MainStart
Jeff Johnsone7245742012-09-05 17:12:55 -07006787(
Jeff Johnson295189b2012-06-20 16:38:30 -07006788 WDI_ControlBlockType* pWDICtx,
6789 WDI_EventInfoType* pEventData
6790)
6791{
6792
6793 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006794 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006795 ----------------------------------------------------------------------*/
6796 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6797 {
6798 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08006799 "Invalid parameters on Main Start Started %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07006800 pWDICtx, pEventData);
6801 return WDI_STATUS_E_FAILURE;
6802 }
6803
6804 wpalMutexAcquire(&pWDICtx->wptMutex);
6805
6806 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006807 Check if the Control Transport has been opened
Jeff Johnson295189b2012-06-20 16:38:30 -07006808 ----------------------------------------------------------------------*/
6809 if ( eWLAN_PAL_FALSE == pWDICtx->bCTOpened )
6810 {
6811 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
6812 "Control Transport not yet Open - queueing the request");
6813
6814 WDI_STATE_TRANSITION( pWDICtx, WDI_INIT_ST);
Jeff Johnsone7245742012-09-05 17:12:55 -07006815 WDI_QueuePendingReq( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07006816
6817 wpalMutexRelease(&pWDICtx->wptMutex);
6818 return WDI_STATUS_PENDING;
6819 }
Jeff Johnsone7245742012-09-05 17:12:55 -07006820
Jeff Johnson295189b2012-06-20 16:38:30 -07006821 wpalMutexRelease(&pWDICtx->wptMutex);
6822
6823 /*Return Success*/
6824 return WDI_ProcessRequest( pWDICtx, pEventData );
6825
6826}/*WDI_MainStart*/
6827
6828/**
6829 @brief Main FSM Response function for state INIT
6830
Jeff Johnsone7245742012-09-05 17:12:55 -07006831
6832 @param pWDICtx: pointer to the WLAN DAL context
6833 pEventData: pointer to the event information structure
6834
Jeff Johnson295189b2012-06-20 16:38:30 -07006835 @see
6836 @return Result of the function call
6837*/
6838WDI_Status
6839WDI_MainRspInit
Jeff Johnsone7245742012-09-05 17:12:55 -07006840(
Jeff Johnson295189b2012-06-20 16:38:30 -07006841 WDI_ControlBlockType* pWDICtx,
6842 WDI_EventInfoType* pEventData
6843)
6844{
6845 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006846 Not expecting a response from the device before it is started
Jeff Johnson295189b2012-06-20 16:38:30 -07006847 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006848 WDI_ASSERT(0);
Jeff Johnson295189b2012-06-20 16:38:30 -07006849
6850 /*Return Success*/
6851 return WDI_STATUS_E_NOT_ALLOWED;
6852}/* WDI_MainRspInit */
6853
6854/**
6855 @brief Main FSM Close function for all states except BUSY
6856
Jeff Johnsone7245742012-09-05 17:12:55 -07006857
6858 @param pWDICtx: pointer to the WLAN DAL context
6859 pEventData: pointer to the event information structure
6860
Jeff Johnson295189b2012-06-20 16:38:30 -07006861 @see
6862 @return Result of the function call
6863*/
6864WDI_Status
6865WDI_MainClose
Jeff Johnsone7245742012-09-05 17:12:55 -07006866(
Jeff Johnson295189b2012-06-20 16:38:30 -07006867 WDI_ControlBlockType* pWDICtx,
6868 WDI_EventInfoType* pEventData
6869)
6870{
6871
6872 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006873 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006874 ----------------------------------------------------------------------*/
6875 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6876 {
6877 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08006878 "Invalid parameters on Main Close %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07006879 pWDICtx, pEventData);
6880 return WDI_STATUS_E_FAILURE;
6881 }
6882
6883 /*Return Success*/
6884 return WDI_ProcessRequest( pWDICtx, pEventData );
6885
6886}/*WDI_MainClose*/
6887/*--------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006888 STARTED State Functions
Jeff Johnson295189b2012-06-20 16:38:30 -07006889--------------------------------------------------------------------------*/
6890/**
6891 @brief Main FSM Start function for state STARTED
6892
Jeff Johnsone7245742012-09-05 17:12:55 -07006893
6894 @param pWDICtx: pointer to the WLAN DAL context
6895 pEventData: pointer to the event information structure
6896
Jeff Johnson295189b2012-06-20 16:38:30 -07006897 @see
6898 @return Result of the function call
6899*/
6900WDI_Status
6901WDI_MainStartStarted
Jeff Johnsone7245742012-09-05 17:12:55 -07006902(
Jeff Johnson295189b2012-06-20 16:38:30 -07006903 WDI_ControlBlockType* pWDICtx,
6904 WDI_EventInfoType* pEventData
6905)
6906{
6907 WDI_StartRspCb wdiStartRspCb = NULL;
6908 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6909
6910 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006911 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006912 ----------------------------------------------------------------------*/
6913 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6914 {
6915 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08006916 "Invalid parameters on Main Start %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07006917 pWDICtx, pEventData);
6918 return WDI_STATUS_E_FAILURE;
6919 }
6920
6921 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006922 Nothing to do transport was already started
Jeff Johnson295189b2012-06-20 16:38:30 -07006923 ----------------------------------------------------------------------*/
6924 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -07006925 "Received start while transport was already started - nothing to do");
Jeff Johnson295189b2012-06-20 16:38:30 -07006926
6927 wpalMutexAcquire(&pWDICtx->wptMutex);
6928
6929 /*Transition back to started because the post function transitioned us to
6930 busy*/
6931 WDI_STATE_TRANSITION( pWDICtx, WDI_STARTED_ST);
6932
6933 /*Check to see if any request is pending*/
6934 WDI_DequeuePendingReq(pWDICtx);
Jeff Johnsone7245742012-09-05 17:12:55 -07006935
Jeff Johnson295189b2012-06-20 16:38:30 -07006936 wpalMutexRelease(&pWDICtx->wptMutex);
6937
6938 /*Tell UMAC Success*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006939 wdiStartRspCb = (WDI_StartRspCb)pEventData->pCBfnc;
6940
Jeff Johnson295189b2012-06-20 16:38:30 -07006941 /*Notify UMAC*/
6942 wdiStartRspCb( &pWDICtx->wdiCachedStartRspParams, pWDICtx->pRspCBUserData);
6943
6944 /*Return Success*/
6945 return WDI_STATUS_SUCCESS;
6946
6947}/*WDI_MainStartStarted*/
6948
6949/**
6950 @brief Main FSM Stop function for state STARTED
6951
Jeff Johnsone7245742012-09-05 17:12:55 -07006952
6953 @param pWDICtx: pointer to the WLAN DAL context
6954 pEventData: pointer to the event information structure
6955
Jeff Johnson295189b2012-06-20 16:38:30 -07006956 @see
6957 @return Result of the function call
6958*/
6959WDI_Status
6960WDI_MainStopStarted
Jeff Johnsone7245742012-09-05 17:12:55 -07006961(
Jeff Johnson295189b2012-06-20 16:38:30 -07006962 WDI_ControlBlockType* pWDICtx,
6963 WDI_EventInfoType* pEventData
6964)
6965{
6966 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006967 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006968 ----------------------------------------------------------------------*/
6969 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6970 {
6971 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08006972 "Invalid parameters on Main Stop Started %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07006973 pWDICtx, pEventData);
6974 return WDI_STATUS_E_FAILURE;
6975 }
6976
6977 /*State at this point is BUSY - because we enter this state before posting
6978 an event to the FSM in order to prevent potential race conditions*/
6979
6980 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
6981 "Processing stop request in FSM");
6982
6983 /*Return Success*/
6984 return WDI_ProcessRequest( pWDICtx, pEventData );
6985
6986}/*WDI_MainStopStarted*/
6987/**
6988 @brief Main FSM Request function for state started
6989
Jeff Johnsone7245742012-09-05 17:12:55 -07006990
6991 @param pWDICtx: pointer to the WLAN DAL context
6992 pEventData: pointer to the event information structure
6993
Jeff Johnson295189b2012-06-20 16:38:30 -07006994 @see
6995 @return Result of the function call
6996*/
6997WDI_Status
6998WDI_MainReqStarted
Jeff Johnsone7245742012-09-05 17:12:55 -07006999(
Jeff Johnson295189b2012-06-20 16:38:30 -07007000 WDI_ControlBlockType* pWDICtx,
7001 WDI_EventInfoType* pEventData
7002)
7003{
7004
7005 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007006 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07007007 ----------------------------------------------------------------------*/
7008 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
7009 {
7010 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007011 "Invalid parameters on Main Req Started %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007012 pWDICtx, pEventData);
7013 return WDI_STATUS_E_FAILURE;
7014 }
7015
7016 /*State at this point is BUSY - because we enter this state before posting
7017 an event to the FSM in order to prevent potential race conditions*/
7018
7019 /*Return Success*/
7020 return WDI_ProcessRequest( pWDICtx, pEventData );
7021
7022}/*WDI_MainReqStarted*/
7023
7024/**
7025 @brief Main FSM Response function for all states except INIT
7026
Jeff Johnsone7245742012-09-05 17:12:55 -07007027
7028 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -07007029 pEventData: pointer to the event information structure
Jeff Johnsone7245742012-09-05 17:12:55 -07007030
Jeff Johnson295189b2012-06-20 16:38:30 -07007031 @see
7032 @return Result of the function call
7033*/
7034WDI_Status
7035WDI_MainRsp
Jeff Johnsone7245742012-09-05 17:12:55 -07007036(
Jeff Johnson295189b2012-06-20 16:38:30 -07007037 WDI_ControlBlockType* pWDICtx,
7038 WDI_EventInfoType* pEventData
7039)
7040{
Jeff Johnsone7245742012-09-05 17:12:55 -07007041 WDI_Status wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07007042 wpt_boolean expectedResponse;
7043
7044 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007045 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07007046 ----------------------------------------------------------------------*/
7047 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
7048 {
7049 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007050 "Invalid parameters on Main Response %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007051 pWDICtx, pEventData);
7052 return WDI_STATUS_E_FAILURE;
7053 }
7054
7055 if ( pEventData->wdiResponse == pWDICtx->wdiExpectedResponse )
7056 {
7057 /* we received an expected response */
7058 expectedResponse = eWLAN_PAL_TRUE;
7059
7060 /*We expect that we will transition to started after this processing*/
7061 pWDICtx->ucExpectedStateTransition = WDI_STARTED_ST;
7062
7063 /* we are no longer expecting a response */
7064 pWDICtx->wdiExpectedResponse = WDI_MAX_RESP;
7065 }
7066 else
7067 {
7068 /* we received an indication or unexpected response */
7069 expectedResponse = eWLAN_PAL_FALSE;
7070 /* for indications no need to update state from what it is right
7071 now, unless it explicitly does it in the indication handler (say
7072 for device failure ind) */
7073 pWDICtx->ucExpectedStateTransition = pWDICtx->uGlobalState;
7074 }
7075
7076 /*Process the response and indication */
7077 wdiStatus = WDI_ProcessResponse( pWDICtx, pEventData );
7078
7079 /*Lock the CB as we are about to do a state transition*/
7080 wpalMutexAcquire(&pWDICtx->wptMutex);
7081
7082 /*Transition to the expected state after the response processing
7083 - this should always be started state with the following exceptions:
7084 1. processing of a failed start response
7085 2. device failure detected while processing response
7086 3. stop response received*/
7087 WDI_STATE_TRANSITION( pWDICtx, pWDICtx->ucExpectedStateTransition);
Jeff Johnsone7245742012-09-05 17:12:55 -07007088
Jeff Johnson295189b2012-06-20 16:38:30 -07007089 /*Dequeue request that may have been queued while we were waiting for the
7090 response */
7091 if ( expectedResponse )
7092 {
Jeff Johnsone7245742012-09-05 17:12:55 -07007093 WDI_DequeuePendingReq(pWDICtx);
Jeff Johnson295189b2012-06-20 16:38:30 -07007094 }
7095
7096 wpalMutexRelease(&pWDICtx->wptMutex);
7097
7098 /*Return Success - always */
Jeff Johnsone7245742012-09-05 17:12:55 -07007099 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07007100
7101}/*WDI_MainRsp*/
7102
7103/*--------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007104 STOPPED State Functions
Jeff Johnson295189b2012-06-20 16:38:30 -07007105--------------------------------------------------------------------------*/
7106/**
7107 @brief Main FSM Stop function for state STOPPED
7108
Jeff Johnsone7245742012-09-05 17:12:55 -07007109
7110 @param pWDICtx: pointer to the WLAN DAL context
7111 pEventData: pointer to the event information structure
7112
Jeff Johnson295189b2012-06-20 16:38:30 -07007113 @see
7114 @return Result of the function call
7115*/
7116WDI_Status
7117WDI_MainStopStopped
Jeff Johnsone7245742012-09-05 17:12:55 -07007118(
Jeff Johnson295189b2012-06-20 16:38:30 -07007119 WDI_ControlBlockType* pWDICtx,
7120 WDI_EventInfoType* pEventData
7121)
7122{
7123 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007124 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07007125 ----------------------------------------------------------------------*/
7126 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
7127 {
7128 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007129 "Invalid parameters on Main Stop Stopped %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007130 pWDICtx, pEventData);
7131 return WDI_STATUS_E_FAILURE;
7132 }
7133
7134 /*We should normally not get a STOP request if we are already stopped
7135 since we should normally be stopped by the UMAC. However in some
7136 error situations we put ourselves in the stopped state without the
7137 UMAC knowing, so when we get a STOP request in this state we still
7138 process it since we need to clean up the underlying state */
7139 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
7140 "Processing stop request while stopped in FSM");
7141
7142 /*Return Success*/
7143 return WDI_ProcessRequest( pWDICtx, pEventData );
7144
7145}/*WDI_MainStopStopped*/
7146
7147/*--------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007148 BUSY State Functions
Jeff Johnson295189b2012-06-20 16:38:30 -07007149--------------------------------------------------------------------------*/
7150/**
7151 @brief Main FSM Start function for state BUSY
7152
Jeff Johnsone7245742012-09-05 17:12:55 -07007153
7154 @param pWDICtx: pointer to the WLAN DAL context
7155 pEventData: pointer to the event information structure
7156
Jeff Johnson295189b2012-06-20 16:38:30 -07007157 @see
7158 @return Result of the function call
7159*/
7160WDI_Status
7161WDI_MainStartBusy
Jeff Johnsone7245742012-09-05 17:12:55 -07007162(
Jeff Johnson295189b2012-06-20 16:38:30 -07007163 WDI_ControlBlockType* pWDICtx,
7164 WDI_EventInfoType* pEventData
7165)
7166{
7167 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007168 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07007169 ----------------------------------------------------------------------*/
7170 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
7171 {
7172 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007173 "Invalid parameters on Main Start in BUSY %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007174 pWDICtx, pEventData);
7175 return WDI_STATUS_E_FAILURE;
7176 }
7177
7178 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007179 Check if the Control Transport has been opened
Jeff Johnson295189b2012-06-20 16:38:30 -07007180 ----------------------------------------------------------------------*/
7181 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7182 "WDI Busy state - queue start request");
7183
7184 /*Queue the start request*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007185 WDI_QueuePendingReq( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07007186
7187 /*Return Success*/
7188 return WDI_STATUS_PENDING;
7189}/*WDI_MainStartBusy*/
7190
7191/**
7192 @brief Main FSM Stop function for state BUSY
7193
Jeff Johnsone7245742012-09-05 17:12:55 -07007194
7195 @param pWDICtx: pointer to the WLAN DAL context
7196 pEventData: pointer to the event information structure
7197
Jeff Johnson295189b2012-06-20 16:38:30 -07007198 @see
7199 @return Result of the function call
7200*/
7201WDI_Status
7202WDI_MainStopBusy
Jeff Johnsone7245742012-09-05 17:12:55 -07007203(
Jeff Johnson295189b2012-06-20 16:38:30 -07007204 WDI_ControlBlockType* pWDICtx,
7205 WDI_EventInfoType* pEventData
7206)
7207{
7208 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007209 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07007210 ----------------------------------------------------------------------*/
7211 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
7212 {
7213 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007214 "Invalid parameters on Main Stop in BUSY %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007215 pWDICtx, pEventData);
7216 return WDI_STATUS_E_FAILURE;
7217 }
7218
7219 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007220 Check if the Control Transport has been opened
Jeff Johnson295189b2012-06-20 16:38:30 -07007221 ----------------------------------------------------------------------*/
7222 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7223 "WDI Busy state - queue stop request");
7224
Jeff Johnsone7245742012-09-05 17:12:55 -07007225 WDI_QueuePendingReq( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07007226 return WDI_STATUS_PENDING;
Jeff Johnsone7245742012-09-05 17:12:55 -07007227
Jeff Johnson295189b2012-06-20 16:38:30 -07007228}/*WDI_MainStopBusy*/
7229
7230/**
7231 @brief Main FSM Request function for state BUSY
7232
Jeff Johnsone7245742012-09-05 17:12:55 -07007233
7234 @param pWDICtx: pointer to the WLAN DAL context
7235 pEventData: pointer to the event information structure
7236
Jeff Johnson295189b2012-06-20 16:38:30 -07007237 @see
7238 @return Result of the function call
7239*/
7240WDI_Status
7241WDI_MainReqBusy
Jeff Johnsone7245742012-09-05 17:12:55 -07007242(
Jeff Johnson295189b2012-06-20 16:38:30 -07007243 WDI_ControlBlockType* pWDICtx,
7244 WDI_EventInfoType* pEventData
7245)
7246{
7247 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007248 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07007249 ----------------------------------------------------------------------*/
7250 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
7251 {
7252 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007253 "Invalid parameters on Main Request in BUSY %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007254 pWDICtx, pEventData);
7255 return WDI_STATUS_E_FAILURE;
7256 }
7257
7258 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007259 Check if the Control Transport has been opened
Jeff Johnson295189b2012-06-20 16:38:30 -07007260 ----------------------------------------------------------------------*/
7261 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7262 "WDI Busy state - queue request %d because waiting for response %d",
7263 pEventData->wdiRequest, pWDICtx->wdiExpectedResponse);
7264
Jeff Johnsone7245742012-09-05 17:12:55 -07007265 WDI_QueuePendingReq( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07007266 return WDI_STATUS_PENDING;
Jeff Johnsone7245742012-09-05 17:12:55 -07007267
Jeff Johnson295189b2012-06-20 16:38:30 -07007268}/*WDI_MainReqBusy*/
7269/**
7270 @brief Main FSM Close function for state BUSY
7271
Jeff Johnsone7245742012-09-05 17:12:55 -07007272
7273 @param pWDICtx: pointer to the WLAN DAL context
7274 pEventData: pointer to the event information structure
7275
Jeff Johnson295189b2012-06-20 16:38:30 -07007276 @see
7277 @return Result of the function call
7278*/
7279WDI_Status
7280WDI_MainCloseBusy
Jeff Johnsone7245742012-09-05 17:12:55 -07007281(
Jeff Johnson295189b2012-06-20 16:38:30 -07007282 WDI_ControlBlockType* pWDICtx,
7283 WDI_EventInfoType* pEventData
7284)
7285{
7286 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007287 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07007288 ----------------------------------------------------------------------*/
7289 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
7290 {
7291 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007292 "Invalid parameters on Main Close in BUSY %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007293 pWDICtx, pEventData);
7294 return WDI_STATUS_E_FAILURE;
7295 }
7296
7297 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007298 Check if the Control Transport has been opened
Jeff Johnson295189b2012-06-20 16:38:30 -07007299 ----------------------------------------------------------------------*/
7300 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7301 "WDI Busy state - queue close request");
7302
Jeff Johnsone7245742012-09-05 17:12:55 -07007303 WDI_QueuePendingReq( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07007304 return WDI_STATUS_PENDING;
Jeff Johnsone7245742012-09-05 17:12:55 -07007305
Jeff Johnson295189b2012-06-20 16:38:30 -07007306}/*WDI_MainCloseBusy*/
7307
7308/**
7309 @brief Main FSM Shutdown function for INIT & STARTED states
7310
7311
7312 @param pWDICtx: pointer to the WLAN DAL context
7313 pEventData: pointer to the event information structure
7314
7315 @see
7316 @return Result of the function call
7317*/
7318WDI_Status
7319WDI_MainShutdown
7320(
7321 WDI_ControlBlockType* pWDICtx,
7322 WDI_EventInfoType* pEventData
7323)
7324{
7325 /*--------------------------------------------------------------------
7326 Sanity Check
7327 ----------------------------------------------------------------------*/
7328 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
7329 {
7330 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007331 "Invalid parameters on Main Start %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007332 pWDICtx, pEventData);
7333 return WDI_STATUS_E_FAILURE;
7334 }
7335
7336 /*State at this point is BUSY - because we enter this state before posting
7337 an event to the FSM in order to prevent potential race conditions*/
7338
7339 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
7340 "Processing shutdown request in FSM");
7341
7342 /*Return Success*/
7343 return WDI_ProcessRequest( pWDICtx, pEventData );
7344
7345}/*WDI_MainShutdown*/
7346
7347/**
7348 @brief Main FSM Shutdown function for BUSY state
7349
7350
7351 @param pWDICtx: pointer to the WLAN DAL context
7352 pEventData: pointer to the event information structure
7353
7354 @see
7355 @return Result of the function call
7356*/
7357WDI_Status
7358WDI_MainShutdownBusy
7359(
7360 WDI_ControlBlockType* pWDICtx,
7361 WDI_EventInfoType* pEventData
7362)
7363{
7364 /*--------------------------------------------------------------------
7365 Sanity Check
7366 ----------------------------------------------------------------------*/
7367 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
7368 {
7369 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007370 "Invalid parameters on Main Start %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007371 pWDICtx, pEventData);
7372 return WDI_STATUS_E_FAILURE;
7373 }
7374
7375 /* If you are waiting for a HAL response at this stage, you are not
7376 * going to get it. Riva is already shutdown/crashed.
7377 */
7378 wpalTimerStop(&gWDICb.wptResponseTimer);
7379
7380 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
7381 "Processing shutdown request in FSM: Busy state ");
7382
7383 return WDI_ProcessRequest( pWDICtx, pEventData );
7384
7385}/*WDI_MainShutdownBusy*/
7386
7387
Jeff Johnsone7245742012-09-05 17:12:55 -07007388/*=======================================================================
7389
Jeff Johnson295189b2012-06-20 16:38:30 -07007390 WLAN DAL Control Path Main Processing Functions
Jeff Johnsone7245742012-09-05 17:12:55 -07007391
Jeff Johnson295189b2012-06-20 16:38:30 -07007392*=======================================================================*/
7393
7394/*========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -07007395 Main DAL Control Path Request Processing API
Jeff Johnson295189b2012-06-20 16:38:30 -07007396========================================================================*/
7397/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007398 @brief Process Start Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07007399 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007400
7401 @param pWDICtx: pointer to the WLAN DAL context
7402 pEventData: pointer to the event information structure
7403
Jeff Johnson295189b2012-06-20 16:38:30 -07007404 @see
7405 @return Result of the function call
7406*/
7407WDI_Status
7408WDI_ProcessStartReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007409(
Jeff Johnson295189b2012-06-20 16:38:30 -07007410 WDI_ControlBlockType* pWDICtx,
7411 WDI_EventInfoType* pEventData
7412)
7413{
7414 WDI_StartReqParamsType* pwdiStartParams = NULL;
7415 WDI_StartRspCb wdiStartRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07007416 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07007417 wpt_uint16 usDataOffset = 0;
7418 wpt_uint16 usSendSize = 0;
7419
Jeff Johnsone7245742012-09-05 17:12:55 -07007420 tHalMacStartReqMsg halStartReq;
7421 wpt_uint16 usLen = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07007422 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7423
7424 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007425 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07007426 -------------------------------------------------------------------------*/
7427 if (( NULL == pEventData ) ||
7428 ( NULL == (pwdiStartParams = (WDI_StartReqParamsType*)pEventData->pEventData)) ||
7429 ( NULL == (wdiStartRspCb = (WDI_StartRspCb)pEventData->pCBfnc)))
7430 {
7431 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07007432 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07007433 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007434 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007435 }
7436
7437 /*-----------------------------------------------------------------------
7438 Get message buffer
7439 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007440 usLen = sizeof(halStartReq.startReqParams) +
Jeff Johnson295189b2012-06-20 16:38:30 -07007441 pwdiStartParams->usConfigBufferLen;
7442
Jeff Johnsone7245742012-09-05 17:12:55 -07007443 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_START_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07007444 usLen,
7445 &pSendBuffer, &usDataOffset, &usSendSize))||
7446 ( usSendSize < (usDataOffset + usLen )))
7447 {
7448 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007449 "Unable to get send buffer in start req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007450 pEventData, pwdiStartParams, wdiStartRspCb);
7451 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007452 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007453 }
7454
7455 /*-----------------------------------------------------------------------
7456 Fill in the message
7457 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007458 halStartReq.startReqParams.driverType =
7459 WDI_2_HAL_DRV_TYPE(pwdiStartParams->wdiDriverType);
Jeff Johnson295189b2012-06-20 16:38:30 -07007460
Jeff Johnsone7245742012-09-05 17:12:55 -07007461 halStartReq.startReqParams.uConfigBufferLen =
7462 pwdiStartParams->usConfigBufferLen;
7463 wpalMemoryCopy( pSendBuffer+usDataOffset,
7464 &halStartReq.startReqParams,
7465 sizeof(halStartReq.startReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07007466
Jeff Johnsone7245742012-09-05 17:12:55 -07007467 usDataOffset += sizeof(halStartReq.startReqParams);
7468 wpalMemoryCopy( pSendBuffer+usDataOffset,
7469 pwdiStartParams->pConfigBuffer,
7470 pwdiStartParams->usConfigBufferLen);
Jeff Johnson295189b2012-06-20 16:38:30 -07007471
7472 pWDICtx->wdiReqStatusCB = pwdiStartParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07007473 pWDICtx->pReqStatusUserData = pwdiStartParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07007474
7475 /*Save Low Level Ind CB and associated user data - it will be used further
7476 on when an indication is coming from the lower MAC*/
7477 pWDICtx->wdiLowLevelIndCB = pwdiStartParams->wdiLowLevelIndCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07007478 pWDICtx->pIndUserData = pwdiStartParams->pIndUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07007479
Jeff Johnsone7245742012-09-05 17:12:55 -07007480 pWDICtx->bFrameTransEnabled = pwdiStartParams->bFrameTransEnabled;
Jeff Johnson295189b2012-06-20 16:38:30 -07007481 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007482 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07007483 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007484 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07007485 wdiStartRspCb, pEventData->pUserData, WDI_START_RESP);
7486
Jeff Johnsone7245742012-09-05 17:12:55 -07007487
Jeff Johnson295189b2012-06-20 16:38:30 -07007488}/*WDI_ProcessStartReq*/
7489
7490/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007491 @brief Process Stop Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07007492 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007493
7494 @param pWDICtx: pointer to the WLAN DAL context
7495 pEventData: pointer to the event information structure
7496
Jeff Johnson295189b2012-06-20 16:38:30 -07007497 @see
7498 @return Result of the function call
7499*/
7500WDI_Status
7501WDI_ProcessStopReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007502(
Jeff Johnson295189b2012-06-20 16:38:30 -07007503 WDI_ControlBlockType* pWDICtx,
7504 WDI_EventInfoType* pEventData
7505)
7506{
7507 WDI_StopReqParamsType* pwdiStopParams = NULL;
7508 WDI_StopRspCb wdiStopRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07007509 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07007510 wpt_uint16 usDataOffset = 0;
7511 wpt_uint16 usSendSize = 0;
Jeff Johnson43971f52012-07-17 12:26:56 -07007512 wpt_status status;
Jeff Johnsone7245742012-09-05 17:12:55 -07007513 tHalMacStopReqMsg halStopReq;
Jeff Johnson295189b2012-06-20 16:38:30 -07007514 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7515
7516 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007517 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07007518 -------------------------------------------------------------------------*/
7519 if (( NULL == pEventData ) ||
7520 ( NULL == (pwdiStopParams = (WDI_StopReqParamsType*)pEventData->pEventData)) ||
7521 ( NULL == (wdiStopRspCb = (WDI_StopRspCb)pEventData->pCBfnc)))
7522 {
7523 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07007524 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07007525 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -08007526 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -07007527 }
7528
7529 /*-----------------------------------------------------------------------
7530 Get message buffer
7531 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007532 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_STOP_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07007533 sizeof(halStopReq.stopReqParams),
7534 &pSendBuffer, &usDataOffset, &usSendSize))||
7535 ( usSendSize < (usDataOffset + sizeof(halStopReq.stopReqParams) )))
7536 {
7537 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007538 "Unable to get send buffer in stop req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007539 pEventData, pwdiStopParams, wdiStopRspCb);
7540 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -08007541 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -07007542 }
7543
7544 /*-----------------------------------------------------------------------
7545 Fill in the message
7546 -----------------------------------------------------------------------*/
7547 halStopReq.stopReqParams.reason = WDI_2_HAL_STOP_REASON(
7548 pwdiStopParams->wdiStopReason);
7549
Jeff Johnsone7245742012-09-05 17:12:55 -07007550 wpalMemoryCopy( pSendBuffer+usDataOffset,
7551 &halStopReq.stopReqParams,
7552 sizeof(halStopReq.stopReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07007553
7554 pWDICtx->wdiReqStatusCB = pwdiStopParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07007555 pWDICtx->pReqStatusUserData = pwdiStopParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07007556
7557 /*! TO DO: stop the data services */
7558 if ( eDRIVER_TYPE_MFG != pWDICtx->driverMode )
7559 {
7560 /*Stop the STA Table !UT- check this logic again
7561 It is safer to do it here than on the response - because a stop is imminent*/
7562 WDI_STATableStop(pWDICtx);
7563
7564 /* Reset the event to be not signalled */
Jeff Johnson43971f52012-07-17 12:26:56 -07007565 status = wpalEventReset(&pWDICtx->setPowerStateEvent);
7566 if (eWLAN_PAL_STATUS_SUCCESS != status)
Jeff Johnson295189b2012-06-20 16:38:30 -07007567 {
7568 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7569 "WDI Init failed to reset power state event");
7570
Jeff Johnsone7245742012-09-05 17:12:55 -07007571 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -08007572 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -07007573 }
7574 /* Stop Transport Driver, DXE */
Ravali85acf6b2012-12-12 14:01:38 -08007575 status = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_DOWN, WDI_SetPowerStateCb);
7576 if( eWLAN_PAL_STATUS_SUCCESS != status )
7577 {
7578 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain9a5d5382013-11-17 22:05:35 -08007579 "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 -08007580 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -08007581 goto fail;
Ravali85acf6b2012-12-12 14:01:38 -08007582 }
Jeff Johnson295189b2012-06-20 16:38:30 -07007583 /*
Jeff Johnsone7245742012-09-05 17:12:55 -07007584 * Wait for the event to be set once the ACK comes back from DXE
Jeff Johnson295189b2012-06-20 16:38:30 -07007585 */
Jeff Johnson43971f52012-07-17 12:26:56 -07007586 status = wpalEventWait(&pWDICtx->setPowerStateEvent,
7587 WDI_SET_POWER_STATE_TIMEOUT);
7588 if (eWLAN_PAL_STATUS_SUCCESS != status)
Jeff Johnson295189b2012-06-20 16:38:30 -07007589 {
7590 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7591 "WDI Init failed to wait on an event");
7592
Jeff Johnsone7245742012-09-05 17:12:55 -07007593 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -08007594 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -07007595 }
7596 }
7597
7598 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007599 Send Stop Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07007600 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007601 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07007602 wdiStopRspCb, pEventData->pUserData, WDI_STOP_RESP);
7603
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -08007604fail:
7605 // Release the message buffer so we don't leak
7606 wpalMemoryFree(pSendBuffer);
7607
7608failRequest:
7609 //WDA should have failure check to avoid the memory leak
7610 return WDI_STATUS_E_FAILURE;
7611
Jeff Johnson295189b2012-06-20 16:38:30 -07007612}/*WDI_ProcessStopReq*/
7613
7614/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007615 @brief Process Close Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07007616 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007617
7618 @param pWDICtx: pointer to the WLAN DAL context
7619 pEventData: pointer to the event information structure
7620
Jeff Johnson295189b2012-06-20 16:38:30 -07007621 @see
7622 @return Result of the function call
7623*/
7624WDI_Status
7625WDI_ProcessCloseReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007626(
Jeff Johnson295189b2012-06-20 16:38:30 -07007627 WDI_ControlBlockType* pWDICtx,
7628 WDI_EventInfoType* pEventData
7629)
7630{
Jeff Johnsone7245742012-09-05 17:12:55 -07007631 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07007632 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7633
7634 /*Lock control block for cleanup*/
7635 wpalMutexAcquire(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07007636
Jeff Johnson295189b2012-06-20 16:38:30 -07007637 /*Clear all pending request*/
7638 WDI_ClearPendingRequests(pWDICtx);
7639
7640 /* Close Control transport*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007641 WCTS_CloseTransport(pWDICtx->wctsHandle);
Jeff Johnson295189b2012-06-20 16:38:30 -07007642
7643 /* Close Data transport*/
7644 /* FTM mode does not open Data Path */
7645 if ( eDRIVER_TYPE_MFG != pWDICtx->driverMode )
7646 {
7647 WDTS_Close(pWDICtx);
7648 }
7649
7650 /*Close the STA Table !UT- check this logic again*/
7651 WDI_STATableClose(pWDICtx);
7652
7653 /*close the PAL */
7654 wptStatus = wpalClose(pWDICtx->pPALContext);
7655 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
7656 {
7657 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
7658 "Failed to wpal Close %d", wptStatus);
7659 WDI_ASSERT(0);
7660 }
7661
7662 /*Transition back to init state*/
7663 WDI_STATE_TRANSITION( pWDICtx, WDI_INIT_ST);
7664
7665 wpalMutexRelease(&pWDICtx->wptMutex);
7666
7667 /*Make sure the expected state is properly defaulted to Init*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007668 pWDICtx->ucExpectedStateTransition = WDI_INIT_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07007669
Jeff Johnsone7245742012-09-05 17:12:55 -07007670 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07007671}/*WDI_ProcessCloseReq*/
7672
7673
7674/*===========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -07007675 SCANING REQUEST PROCESSING API
Jeff Johnson295189b2012-06-20 16:38:30 -07007676===========================================================================*/
7677
7678/**
7679 @brief Process Init Scan Request function (called when Main FSM
7680 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007681
7682 @param pWDICtx: pointer to the WLAN DAL context
7683 pEventData: pointer to the event information structure
7684
Jeff Johnson295189b2012-06-20 16:38:30 -07007685 @see
7686 @return Result of the function call
7687*/
7688WDI_Status
7689WDI_ProcessInitScanReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007690(
Jeff Johnson295189b2012-06-20 16:38:30 -07007691 WDI_ControlBlockType* pWDICtx,
7692 WDI_EventInfoType* pEventData
7693)
7694{
7695 WDI_InitScanReqParamsType* pwdiInitScanParams = NULL;
7696 WDI_InitScanRspCb wdiInitScanRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07007697 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07007698 wpt_uint16 usDataOffset = 0;
7699 wpt_uint16 usSendSize = 0;
7700 wpt_uint8 i = 0;
7701
7702 tHalInitScanReqMsg halInitScanReqMsg;
7703
Jeff Johnsone7245742012-09-05 17:12:55 -07007704 /*This is temporary fix.
Jeff Johnson295189b2012-06-20 16:38:30 -07007705 * It shold be removed once host and riva changes are in sync*/
7706 tHalInitScanConReqMsg halInitScanConReqMsg;
7707
7708 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7709
7710 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007711 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07007712 -------------------------------------------------------------------------*/
7713 if (( NULL == pEventData ) ||
7714 ( NULL == (pwdiInitScanParams = (WDI_InitScanReqParamsType*)pEventData->pEventData)) ||
7715 ( NULL == (wdiInitScanRspCb = (WDI_InitScanRspCb)pEventData->pCBfnc)))
7716 {
7717 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07007718 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07007719 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007720 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007721 }
7722
7723#if 0
7724 wpalMutexAcquire(&pWDICtx->wptMutex);
7725 /*-----------------------------------------------------------------------
7726 Check to see if SCAN is already in progress - if so reject the req
7727 We only allow one scan at a time
Jeff Johnsone7245742012-09-05 17:12:55 -07007728 ! TO DO: - revisit this constraint
Jeff Johnson295189b2012-06-20 16:38:30 -07007729 -----------------------------------------------------------------------*/
7730 if ( pWDICtx->bScanInProgress )
7731 {
7732 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
7733 "Scan is already in progress - subsequent scan is not allowed"
7734 " until the first scan completes");
7735
7736 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07007737 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07007738 }
7739
Jeff Johnsone7245742012-09-05 17:12:55 -07007740 pWDICtx->bScanInProgress = eWLAN_PAL_TRUE;
7741 pWDICtx->uScanState = WDI_SCAN_INITIALIZED_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07007742
7743 wpalMutexRelease(&pWDICtx->wptMutex);
7744#endif
Viral Modid86bde22012-12-10 13:09:21 -08007745 if ((pwdiInitScanParams->wdiReqInfo.bUseNOA) && (!WDI_getFwWlanFeatCaps(P2P_GO_NOA_DECOUPLE_INIT_SCAN)))
Jeff Johnson295189b2012-06-20 16:38:30 -07007746 {
Jeff Johnsone7245742012-09-05 17:12:55 -07007747 /*This is temporary fix.
Jeff Johnson295189b2012-06-20 16:38:30 -07007748 * It shold be removed once host and riva changes are in sync*/
7749 /*-----------------------------------------------------------------------
7750 Get message buffer
7751 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007752 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_INIT_SCAN_CON_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07007753 sizeof(halInitScanConReqMsg.initScanParams),
7754 &pSendBuffer, &usDataOffset, &usSendSize))||
7755 ( usSendSize < (usDataOffset + sizeof(halInitScanConReqMsg.initScanParams) )))
7756 {
7757 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007758 "Unable to get send buffer in init scan req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007759 pEventData, pwdiInitScanParams, wdiInitScanRspCb);
7760 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007761 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007762 }
7763
7764
7765 /*-----------------------------------------------------------------------
7766 Fill in the message
7767 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007768 halInitScanConReqMsg.initScanParams.scanMode =
Jeff Johnson295189b2012-06-20 16:38:30 -07007769 WDI_2_HAL_SCAN_MODE(pwdiInitScanParams->wdiReqInfo.wdiScanMode);
7770
7771 wpalMemoryCopy(halInitScanConReqMsg.initScanParams.bssid,
7772 pwdiInitScanParams->wdiReqInfo.macBSSID, WDI_MAC_ADDR_LEN);
7773
Jeff Johnsone7245742012-09-05 17:12:55 -07007774 halInitScanConReqMsg.initScanParams.notifyBss =
Jeff Johnson295189b2012-06-20 16:38:30 -07007775 pwdiInitScanParams->wdiReqInfo.bNotifyBSS;
Jeff Johnsone7245742012-09-05 17:12:55 -07007776 halInitScanConReqMsg.initScanParams.frameType =
Jeff Johnson295189b2012-06-20 16:38:30 -07007777 pwdiInitScanParams->wdiReqInfo.ucFrameType;
Jeff Johnsone7245742012-09-05 17:12:55 -07007778 halInitScanConReqMsg.initScanParams.frameLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07007779 pwdiInitScanParams->wdiReqInfo.ucFrameLength;
7780
7781 WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr( &halInitScanConReqMsg.initScanParams.macMgmtHdr,
7782 &pwdiInitScanParams->wdiReqInfo.wdiMACMgmtHdr);
7783
Jeff Johnson295189b2012-06-20 16:38:30 -07007784 halInitScanConReqMsg.initScanParams.useNoA = pwdiInitScanParams->wdiReqInfo.bUseNOA;
7785 halInitScanConReqMsg.initScanParams.scanDuration = pwdiInitScanParams->wdiReqInfo.scanDuration;
Jeff Johnson295189b2012-06-20 16:38:30 -07007786
Jeff Johnsone7245742012-09-05 17:12:55 -07007787 halInitScanConReqMsg.initScanParams.scanEntry.activeBSScnt =
Jeff Johnson295189b2012-06-20 16:38:30 -07007788 pwdiInitScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt;
7789
7790 for (i=0; i < pwdiInitScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt; i++)
7791 {
Jeff Johnsone7245742012-09-05 17:12:55 -07007792 halInitScanConReqMsg.initScanParams.scanEntry.bssIdx[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -07007793 pwdiInitScanParams->wdiReqInfo.wdiScanEntry.bssIdx[i];
7794 }
7795
Jeff Johnsone7245742012-09-05 17:12:55 -07007796 wpalMemoryCopy( pSendBuffer+usDataOffset,
7797 &halInitScanConReqMsg.initScanParams,
7798 sizeof(halInitScanConReqMsg.initScanParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07007799 }
7800 else
7801 {
7802 /*-----------------------------------------------------------------------
7803 Get message buffer
7804 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007805 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_INIT_SCAN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07007806 sizeof(halInitScanReqMsg.initScanParams),
7807 &pSendBuffer, &usDataOffset, &usSendSize))||
7808 ( usSendSize < (usDataOffset + sizeof(halInitScanReqMsg.initScanParams) )))
7809 {
7810 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007811 "Unable to get send buffer in init scan req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007812 pEventData, pwdiInitScanParams, wdiInitScanRspCb);
7813 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007814 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007815 }
7816
7817
7818 /*-----------------------------------------------------------------------
7819 Fill in the message
7820 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007821 halInitScanReqMsg.initScanParams.scanMode =
Jeff Johnson295189b2012-06-20 16:38:30 -07007822 WDI_2_HAL_SCAN_MODE(pwdiInitScanParams->wdiReqInfo.wdiScanMode);
7823
7824 wpalMemoryCopy(halInitScanReqMsg.initScanParams.bssid,
7825 pwdiInitScanParams->wdiReqInfo.macBSSID, WDI_MAC_ADDR_LEN);
7826
Jeff Johnsone7245742012-09-05 17:12:55 -07007827 halInitScanReqMsg.initScanParams.notifyBss =
Jeff Johnson295189b2012-06-20 16:38:30 -07007828 pwdiInitScanParams->wdiReqInfo.bNotifyBSS;
Jeff Johnsone7245742012-09-05 17:12:55 -07007829 halInitScanReqMsg.initScanParams.frameType =
Jeff Johnson295189b2012-06-20 16:38:30 -07007830 pwdiInitScanParams->wdiReqInfo.ucFrameType;
Jeff Johnsone7245742012-09-05 17:12:55 -07007831 halInitScanReqMsg.initScanParams.frameLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07007832 pwdiInitScanParams->wdiReqInfo.ucFrameLength;
7833
7834 WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr( &halInitScanReqMsg.initScanParams.macMgmtHdr,
7835 &pwdiInitScanParams->wdiReqInfo.wdiMACMgmtHdr);
7836
Jeff Johnsone7245742012-09-05 17:12:55 -07007837 halInitScanReqMsg.initScanParams.scanEntry.activeBSScnt =
Jeff Johnson295189b2012-06-20 16:38:30 -07007838 pwdiInitScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt;
7839
7840 for (i=0; i < pwdiInitScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt; i++)
7841 {
Jeff Johnsone7245742012-09-05 17:12:55 -07007842 halInitScanReqMsg.initScanParams.scanEntry.bssIdx[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -07007843 pwdiInitScanParams->wdiReqInfo.wdiScanEntry.bssIdx[i];
7844 }
7845
Jeff Johnsone7245742012-09-05 17:12:55 -07007846 wpalMemoryCopy( pSendBuffer+usDataOffset,
7847 &halInitScanReqMsg.initScanParams,
7848 sizeof(halInitScanReqMsg.initScanParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07007849 }
7850
7851 pWDICtx->wdiReqStatusCB = pwdiInitScanParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07007852 pWDICtx->pReqStatusUserData = pwdiInitScanParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07007853
7854 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007855 Send Init Scan Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07007856 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007857 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07007858 wdiInitScanRspCb, pEventData->pUserData, WDI_INIT_SCAN_RESP);
7859
7860}/*WDI_ProcessInitScanReq*/
7861
7862/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007863 @brief Process Start Scan Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -07007864 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007865
7866 @param pWDICtx: pointer to the WLAN DAL context
7867 pEventData: pointer to the event information structure
7868
Jeff Johnson295189b2012-06-20 16:38:30 -07007869 @see
7870 @return Result of the function call
7871*/
7872WDI_Status
7873WDI_ProcessStartScanReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007874(
Jeff Johnson295189b2012-06-20 16:38:30 -07007875 WDI_ControlBlockType* pWDICtx,
7876 WDI_EventInfoType* pEventData
7877)
7878{
7879 WDI_StartScanReqParamsType* pwdiStartScanParams = NULL;
7880 WDI_StartScanRspCb wdiStartScanRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07007881 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07007882 wpt_uint16 usDataOffset = 0;
7883 wpt_uint16 usSendSize = 0;
7884
Jeff Johnsone7245742012-09-05 17:12:55 -07007885 tHalStartScanReqMsg halStartScanReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07007886 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7887
7888 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007889 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07007890 -------------------------------------------------------------------------*/
7891 if (( NULL == pEventData ) ||
7892 ( NULL == (pwdiStartScanParams = (WDI_StartScanReqParamsType*)pEventData->pEventData)) ||
7893 ( NULL == (wdiStartScanRspCb = (WDI_StartScanRspCb)pEventData->pCBfnc)))
7894 {
7895 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07007896 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07007897 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007898 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007899 }
7900
7901#if 0
7902 wpalMutexAcquire(&pWDICtx->wptMutex);
7903 /*-----------------------------------------------------------------------
7904 Check to see if SCAN is already in progress - start scan is only
7905 allowed when a scan is ongoing and the state of the scan procedure
Jeff Johnsone7245742012-09-05 17:12:55 -07007906 is either init or end
Jeff Johnson295189b2012-06-20 16:38:30 -07007907 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007908 if (( !pWDICtx->bScanInProgress ) ||
Jeff Johnson295189b2012-06-20 16:38:30 -07007909 (( WDI_SCAN_INITIALIZED_ST != pWDICtx->uScanState ) &&
7910 ( WDI_SCAN_ENDED_ST != pWDICtx->uScanState )))
7911 {
7912 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
7913 "Scan start not allowed in this state %d %d",
7914 pWDICtx->bScanInProgress, pWDICtx->uScanState);
Jeff Johnsone7245742012-09-05 17:12:55 -07007915
Jeff Johnson295189b2012-06-20 16:38:30 -07007916 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07007917 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07007918 }
7919
Jeff Johnsone7245742012-09-05 17:12:55 -07007920 pWDICtx->uScanState = WDI_SCAN_STARTED_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07007921
7922 wpalMutexRelease(&pWDICtx->wptMutex);
7923#endif
7924
7925 /*-----------------------------------------------------------------------
7926 Get message buffer
7927 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007928 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_START_SCAN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07007929 sizeof(halStartScanReqMsg.startScanParams),
7930 &pSendBuffer, &usDataOffset, &usSendSize))||
7931 ( usSendSize < (usDataOffset + sizeof(halStartScanReqMsg.startScanParams) )))
7932 {
7933 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007934 "Unable to get send buffer in start scan req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007935 pEventData, pwdiStartScanParams, wdiStartScanRspCb);
7936 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007937 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007938 }
7939
Jeff Johnsone7245742012-09-05 17:12:55 -07007940 halStartScanReqMsg.startScanParams.scanChannel =
Jeff Johnson295189b2012-06-20 16:38:30 -07007941 pwdiStartScanParams->ucChannel;
Jeff Johnsone7245742012-09-05 17:12:55 -07007942 wpalMemoryCopy( pSendBuffer+usDataOffset,
7943 &halStartScanReqMsg.startScanParams,
7944 sizeof(halStartScanReqMsg.startScanParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07007945
7946 pWDICtx->wdiReqStatusCB = pwdiStartScanParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07007947 pWDICtx->pReqStatusUserData = pwdiStartScanParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07007948
7949 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007950 Send Start Scan Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07007951 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007952 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07007953 wdiStartScanRspCb, pEventData->pUserData, WDI_START_SCAN_RESP);
7954}/*WDI_ProcessStartScanReq*/
7955
7956
7957/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007958 @brief Process End Scan Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07007959 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007960
7961 @param pWDICtx: pointer to the WLAN DAL context
7962 pEventData: pointer to the event information structure
7963
Jeff Johnson295189b2012-06-20 16:38:30 -07007964 @see
7965 @return Result of the function call
7966*/
7967WDI_Status
7968WDI_ProcessEndScanReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007969(
Jeff Johnson295189b2012-06-20 16:38:30 -07007970 WDI_ControlBlockType* pWDICtx,
7971 WDI_EventInfoType* pEventData
7972)
7973{
7974 WDI_EndScanReqParamsType* pwdiEndScanParams = NULL;
7975 WDI_EndScanRspCb wdiEndScanRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07007976 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07007977 wpt_uint16 usDataOffset = 0;
7978 wpt_uint16 usSendSize = 0;
7979
Jeff Johnsone7245742012-09-05 17:12:55 -07007980 tHalEndScanReqMsg halEndScanReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07007981 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7982
7983 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007984 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07007985 -------------------------------------------------------------------------*/
7986 if (( NULL == pEventData ) ||
7987 ( NULL == (pwdiEndScanParams = (WDI_EndScanReqParamsType*)pEventData->pEventData)) ||
7988 ( NULL == (wdiEndScanRspCb = (WDI_EndScanRspCb)pEventData->pCBfnc)))
7989 {
7990 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07007991 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07007992 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007993 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007994 }
7995
Jeff Johnsone7245742012-09-05 17:12:55 -07007996 /* commenting this check as UMAC is sending END_SCAN_REQ after FINISH_SCAN
7997 * sometimes because of this check the scan request is not being
Jeff Johnson295189b2012-06-20 16:38:30 -07007998 * forwarded to HAL and result in hang*/
7999#if 0
8000 wpalMutexAcquire(&pWDICtx->wptMutex);
8001 /*-----------------------------------------------------------------------
8002 Check to see if SCAN is already in progress - end scan is only
8003 allowed when a scan is ongoing and the state of the scan procedure
8004 is started
8005 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008006 if (( !pWDICtx->bScanInProgress ) ||
Jeff Johnson295189b2012-06-20 16:38:30 -07008007 ( WDI_SCAN_STARTED_ST != pWDICtx->uScanState ))
8008 {
8009 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8010 "End start not allowed in this state %d %d",
8011 pWDICtx->bScanInProgress, pWDICtx->uScanState);
Jeff Johnsone7245742012-09-05 17:12:55 -07008012
Jeff Johnson295189b2012-06-20 16:38:30 -07008013 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008014 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008015 }
8016
Jeff Johnsone7245742012-09-05 17:12:55 -07008017 pWDICtx->uScanState = WDI_SCAN_ENDED_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07008018
8019 wpalMutexRelease(&pWDICtx->wptMutex);
8020#endif
8021
8022 /*-----------------------------------------------------------------------
8023 Get message buffer
8024 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008025 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_END_SCAN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008026 sizeof(halEndScanReqMsg.endScanParams),
8027 &pSendBuffer, &usDataOffset, &usSendSize))||
8028 ( usSendSize < (usDataOffset + sizeof(halEndScanReqMsg.endScanParams) )))
8029 {
8030 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08008031 "Unable to get send buffer in start scan req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07008032 pEventData, pwdiEndScanParams, wdiEndScanRspCb);
8033 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008034 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008035 }
8036
8037 halEndScanReqMsg.endScanParams.scanChannel = pwdiEndScanParams->ucChannel;
8038
Jeff Johnsone7245742012-09-05 17:12:55 -07008039 wpalMemoryCopy( pSendBuffer+usDataOffset,
8040 &halEndScanReqMsg.endScanParams,
8041 sizeof(halEndScanReqMsg.endScanParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008042
8043 pWDICtx->wdiReqStatusCB = pwdiEndScanParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008044 pWDICtx->pReqStatusUserData = pwdiEndScanParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008045
8046 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008047 Send End Scan Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008048 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008049 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07008050 wdiEndScanRspCb, pEventData->pUserData, WDI_END_SCAN_RESP);
8051}/*WDI_ProcessEndScanReq*/
8052
8053
8054/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008055 @brief Process Finish Scan Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -07008056 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008057
8058 @param pWDICtx: pointer to the WLAN DAL context
8059 pEventData: pointer to the event information structure
8060
Jeff Johnson295189b2012-06-20 16:38:30 -07008061 @see
8062 @return Result of the function call
8063*/
8064WDI_Status
8065WDI_ProcessFinishScanReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008066(
Jeff Johnson295189b2012-06-20 16:38:30 -07008067 WDI_ControlBlockType* pWDICtx,
8068 WDI_EventInfoType* pEventData
8069)
8070{
8071 WDI_FinishScanReqParamsType* pwdiFinishScanParams;
8072 WDI_FinishScanRspCb wdiFinishScanRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07008073 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008074 wpt_uint16 usDataOffset = 0;
8075 wpt_uint16 usSendSize = 0;
8076 wpt_uint8 i = 0;
Ravali85acf6b2012-12-12 14:01:38 -08008077 wpt_status wptStatus;
Jeff Johnsone7245742012-09-05 17:12:55 -07008078 tHalFinishScanReqMsg halFinishScanReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07008079 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8080
8081 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008082 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008083 -------------------------------------------------------------------------*/
8084 if (( NULL == pEventData ) ||
8085 ( NULL == pEventData->pEventData) ||
8086 ( NULL == pEventData->pCBfnc))
8087 {
8088 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008089 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008090 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008091 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008092 }
8093
8094 pwdiFinishScanParams = (WDI_FinishScanReqParamsType*)pEventData->pEventData;
8095 wdiFinishScanRspCb = (WDI_FinishScanRspCb)pEventData->pCBfnc;
Jeff Johnsone7245742012-09-05 17:12:55 -07008096 /* commenting this check as UMAC is sending END_SCAN_REQ after FINISH_SCAN
8097 * sometimes because of this check the scan request is not being
Jeff Johnson295189b2012-06-20 16:38:30 -07008098 * forwarded to HAL and result in hang*/
8099#if 0
8100 wpalMutexAcquire(&pWDICtx->wptMutex);
8101 /*-----------------------------------------------------------------------
8102 Check to see if SCAN is already in progress
8103 Finish scan gets invoked any scan states. ie. abort scan
8104 It should be allowed in any states.
8105 -----------------------------------------------------------------------*/
8106 if ( !pWDICtx->bScanInProgress )
8107 {
8108 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8109 "Finish start not allowed in this state %d",
8110 pWDICtx->bScanInProgress );
8111
8112 wpalMutexRelease(&pWDICtx->wptMutex);
Ravali85acf6b2012-12-12 14:01:38 -08008113 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008114 }
8115
8116 /*-----------------------------------------------------------------------
8117 It is safe to reset the scan flags here because until the response comes
Jeff Johnsone7245742012-09-05 17:12:55 -07008118 back all subsequent requests will be blocked at BUSY state
Jeff Johnson295189b2012-06-20 16:38:30 -07008119 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008120 pWDICtx->uScanState = WDI_SCAN_FINISHED_ST;
8121 pWDICtx->bScanInProgress = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008122 wpalMutexRelease(&pWDICtx->wptMutex);
8123#endif
8124
8125 if ( pWDICtx->bInBmps )
8126 {
8127 // notify DTS that we are entering BMPS
Ravali85acf6b2012-12-12 14:01:38 -08008128 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_BMPS, NULL);
8129 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
8130 {
8131 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain9a5d5382013-11-17 22:05:35 -08008132 "WDTS_SetPowerState returned with status %d when trying to notify DTS that host is entering BMPS", wptStatus);
Ravali85acf6b2012-12-12 14:01:38 -08008133 WDI_ASSERT(0);
8134 }
Jeff Johnson295189b2012-06-20 16:38:30 -07008135 }
8136
8137 /*-----------------------------------------------------------------------
8138 Get message buffer
8139 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008140 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_FINISH_SCAN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008141 sizeof(halFinishScanReqMsg.finishScanParams),
8142 &pSendBuffer, &usDataOffset, &usSendSize))||
8143 ( usSendSize < (usDataOffset + sizeof(halFinishScanReqMsg.finishScanParams) )))
8144 {
8145 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08008146 "Unable to get send buffer in start scan req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07008147 pEventData, pwdiFinishScanParams, wdiFinishScanRspCb);
8148 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008149 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008150 }
8151
Jeff Johnsone7245742012-09-05 17:12:55 -07008152 halFinishScanReqMsg.finishScanParams.scanMode =
Jeff Johnson295189b2012-06-20 16:38:30 -07008153 WDI_2_HAL_SCAN_MODE(pwdiFinishScanParams->wdiReqInfo.wdiScanMode);
8154
Jeff Johnsone7245742012-09-05 17:12:55 -07008155 halFinishScanReqMsg.finishScanParams.currentOperChannel =
Jeff Johnson295189b2012-06-20 16:38:30 -07008156 pwdiFinishScanParams->wdiReqInfo.ucCurrentOperatingChannel;
8157
Jeff Johnsone7245742012-09-05 17:12:55 -07008158 halFinishScanReqMsg.finishScanParams.cbState =
Jeff Johnson295189b2012-06-20 16:38:30 -07008159 WDI_2_HAL_CB_STATE(pwdiFinishScanParams->wdiReqInfo.wdiCBState);
8160
8161 wpalMemoryCopy(halFinishScanReqMsg.finishScanParams.bssid,
8162 pwdiFinishScanParams->wdiReqInfo.macBSSID, WDI_MAC_ADDR_LEN);
8163
Jeff Johnsone7245742012-09-05 17:12:55 -07008164 halFinishScanReqMsg.finishScanParams.notifyBss =
Jeff Johnson295189b2012-06-20 16:38:30 -07008165 pwdiFinishScanParams->wdiReqInfo.bNotifyBSS ;
Jeff Johnsone7245742012-09-05 17:12:55 -07008166 halFinishScanReqMsg.finishScanParams.frameType =
Jeff Johnson295189b2012-06-20 16:38:30 -07008167 pwdiFinishScanParams->wdiReqInfo.ucFrameType ;
Jeff Johnsone7245742012-09-05 17:12:55 -07008168 halFinishScanReqMsg.finishScanParams.frameLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07008169 pwdiFinishScanParams->wdiReqInfo.ucFrameLength ;
8170
Jeff Johnsone7245742012-09-05 17:12:55 -07008171 halFinishScanReqMsg.finishScanParams.scanEntry.activeBSScnt =
Jeff Johnson295189b2012-06-20 16:38:30 -07008172 pwdiFinishScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt ;
8173
8174 for (i = 0; i < pwdiFinishScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt; i++)
8175 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008176 halFinishScanReqMsg.finishScanParams.scanEntry.bssIdx[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -07008177 pwdiFinishScanParams->wdiReqInfo.wdiScanEntry.bssIdx[i] ;
8178 }
8179
8180 WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr( &halFinishScanReqMsg.finishScanParams.macMgmtHdr,
8181 &pwdiFinishScanParams->wdiReqInfo.wdiMACMgmtHdr);
8182
Jeff Johnsone7245742012-09-05 17:12:55 -07008183 wpalMemoryCopy( pSendBuffer+usDataOffset,
8184 &halFinishScanReqMsg.finishScanParams,
8185 sizeof(halFinishScanReqMsg.finishScanParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008186
8187 pWDICtx->wdiReqStatusCB = pwdiFinishScanParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008188 pWDICtx->pReqStatusUserData = pwdiFinishScanParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008189
8190 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008191 Send Finish Scan Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008192 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008193 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07008194 wdiFinishScanRspCb, pEventData->pUserData, WDI_FINISH_SCAN_RESP);
8195}/*WDI_ProcessFinishScanReq*/
8196
8197
8198/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -07008199 ASSOCIATION REQUEST API
Jeff Johnson295189b2012-06-20 16:38:30 -07008200==========================================================================*/
8201/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008202 @brief Process BSS Join for a given Session
8203
8204 @param pWDICtx: pointer to the WLAN DAL context
8205 pEventData: pointer to the event information structure
8206
Jeff Johnson295189b2012-06-20 16:38:30 -07008207 @see
8208 @return Result of the function call
8209*/
8210WDI_Status
8211WDI_ProcessBSSSessionJoinReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008212(
Jeff Johnson295189b2012-06-20 16:38:30 -07008213 WDI_ControlBlockType* pWDICtx,
8214 WDI_JoinReqParamsType* pwdiJoinParams,
8215 WDI_JoinRspCb wdiJoinRspCb,
8216 void* pUserData
8217)
8218{
8219 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008220 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008221 wpt_uint16 usDataOffset = 0;
8222 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07008223 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07008224
Jeff Johnsone7245742012-09-05 17:12:55 -07008225 tHalJoinReqMsg halJoinReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07008226 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8227
Madan Mohan Koyyalamudi35287862012-10-22 14:52:46 -07008228 wpalMutexAcquire(&pWDICtx->wptMutex);
8229
Jeff Johnson295189b2012-06-20 16:38:30 -07008230 /*------------------------------------------------------------------------
8231 Check to see if we have any session with this BSSID already stored, we
8232 should not
8233 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008234 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
8235 pwdiJoinParams->wdiReqInfo.macBSSID,
8236 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07008237
8238 if ( NULL != pBSSSes )
8239 {
8240 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi35287862012-10-22 14:52:46 -07008241 "Association for this BSSID: " MAC_ADDRESS_STR " is already in place",
8242 MAC_ADDR_ARRAY(pwdiJoinParams->wdiReqInfo.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07008243
Madan Mohan Koyyalamudi35287862012-10-22 14:52:46 -07008244 /*reset the bAssociationInProgress otherwise the next
8245 *join request will be queued*/
8246 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
8247 wpalMutexRelease(&pWDICtx->wptMutex);
8248 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008249 }
8250
Jeff Johnson295189b2012-06-20 16:38:30 -07008251 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008252 Fetch an empty session block
Jeff Johnson295189b2012-06-20 16:38:30 -07008253 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008254 ucCurrentBSSSesIdx = WDI_FindEmptySession( pWDICtx, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07008255 if ( NULL == pBSSSes )
8256 {
8257
8258 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
8259 "DAL has no free sessions - cannot run another join");
8260
Madan Mohan Koyyalamudi35287862012-10-22 14:52:46 -07008261 /*reset the bAssociationInProgress otherwise the next
8262 *join request will be queued*/
8263 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008264 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008265 return WDI_STATUS_RES_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008266 }
8267
8268 /*Save BSS Session Info*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008269 pBSSSes->bInUse = eWLAN_PAL_TRUE;
8270 wpalMemoryCopy( pBSSSes->macBSSID, pwdiJoinParams->wdiReqInfo.macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -07008271 WDI_MAC_ADDR_LEN);
8272
8273 /*Transition to state Joining*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008274 pBSSSes->wdiAssocState = WDI_ASSOC_JOINING_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07008275 pWDICtx->ucCurrentBSSSesIdx = ucCurrentBSSSesIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -07008276
Jeff Johnson295189b2012-06-20 16:38:30 -07008277 wpalMutexRelease(&pWDICtx->wptMutex);
8278
8279 /*-----------------------------------------------------------------------
8280 Get message buffer
8281 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008282 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_JOIN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008283 sizeof(halJoinReqMsg.joinReqParams),
8284 &pSendBuffer, &usDataOffset, &usSendSize))||
8285 ( usSendSize < (usDataOffset + sizeof(halJoinReqMsg.joinReqParams) )))
8286 {
8287 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08008288 "Unable to get send buffer in join req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07008289 pUserData, pwdiJoinParams, wdiJoinRspCb);
8290 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008291 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008292 }
8293
8294 wpalMemoryCopy(halJoinReqMsg.joinReqParams.bssId,
Jeff Johnsone7245742012-09-05 17:12:55 -07008295 pwdiJoinParams->wdiReqInfo.macBSSID, WDI_MAC_ADDR_LEN);
Jeff Johnson295189b2012-06-20 16:38:30 -07008296
8297 wpalMemoryCopy(halJoinReqMsg.joinReqParams.selfStaMacAddr,
Jeff Johnsone7245742012-09-05 17:12:55 -07008298 pwdiJoinParams->wdiReqInfo.macSTASelf,
8299 WDI_MAC_ADDR_LEN);
Jeff Johnson295189b2012-06-20 16:38:30 -07008300
Jeff Johnsone7245742012-09-05 17:12:55 -07008301 halJoinReqMsg.joinReqParams.ucChannel =
Jeff Johnson295189b2012-06-20 16:38:30 -07008302 pwdiJoinParams->wdiReqInfo.wdiChannelInfo.ucChannel;
8303
8304 halJoinReqMsg.joinReqParams.linkState = pwdiJoinParams->wdiReqInfo.linkState;
8305
Madan Mohan Koyyalamudi83b12822012-11-02 12:43:10 -07008306#ifdef WLAN_FEATURE_VOWIFI
8307 halJoinReqMsg.joinReqParams.maxTxPower =
8308 pwdiJoinParams->wdiReqInfo.wdiChannelInfo.cMaxTxPower;
8309#else
Jeff Johnsone7245742012-09-05 17:12:55 -07008310 halJoinReqMsg.joinReqParams.ucLocalPowerConstraint =
Jeff Johnson295189b2012-06-20 16:38:30 -07008311 pwdiJoinParams->wdiReqInfo.wdiChannelInfo.ucLocalPowerConstraint;
8312#endif
8313
Jeff Johnsone7245742012-09-05 17:12:55 -07008314 halJoinReqMsg.joinReqParams.secondaryChannelOffset =
Jeff Johnson295189b2012-06-20 16:38:30 -07008315 WDI_2_HAL_SEC_CH_OFFSET(pwdiJoinParams->wdiReqInfo.wdiChannelInfo.
8316 wdiSecondaryChannelOffset);
8317
Jeff Johnsone7245742012-09-05 17:12:55 -07008318 wpalMemoryCopy( pSendBuffer+usDataOffset,
8319 &halJoinReqMsg.joinReqParams,
8320 sizeof(halJoinReqMsg.joinReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008321
8322 pWDICtx->wdiReqStatusCB = pwdiJoinParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008323 pWDICtx->pReqStatusUserData = pwdiJoinParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008324
8325 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008326 Send Join Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008327 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008328 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
8329 wdiJoinRspCb, pUserData, WDI_JOIN_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07008330
8331}/*WDI_ProcessBSSSessionJoinReq*/
8332
8333/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008334 @brief Process Join Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07008335 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008336
8337 @param pWDICtx: pointer to the WLAN DAL context
8338 pEventData: pointer to the event information structure
8339
Jeff Johnson295189b2012-06-20 16:38:30 -07008340 @see
8341 @return Result of the function call
8342*/
8343WDI_Status
8344WDI_ProcessJoinReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008345(
Jeff Johnson295189b2012-06-20 16:38:30 -07008346 WDI_ControlBlockType* pWDICtx,
8347 WDI_EventInfoType* pEventData
8348)
8349{
8350 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
8351 WDI_JoinReqParamsType* pwdiJoinParams = NULL;
8352 WDI_JoinRspCb wdiJoinRspCb = NULL;
8353 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8354
8355 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008356 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008357 -------------------------------------------------------------------------*/
8358 if (( NULL == pEventData ) ||
8359 ( NULL == (pwdiJoinParams = (WDI_JoinReqParamsType*)pEventData->pEventData)) ||
8360 ( NULL == (wdiJoinRspCb = (WDI_JoinRspCb)pEventData->pCBfnc)))
8361 {
8362 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008363 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008364 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008365 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008366 }
Jeff Johnsone7245742012-09-05 17:12:55 -07008367
Jeff Johnson295189b2012-06-20 16:38:30 -07008368 /*-------------------------------------------------------------------------
8369 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07008370 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07008371 -------------------------------------------------------------------------*/
8372 wpalMutexAcquire(&pWDICtx->wptMutex);
8373
8374 if ( eWLAN_PAL_FALSE != pWDICtx->bAssociationInProgress )
8375 {
8376 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8377 "Association is currently in progress, queueing new join req");
8378
8379 /*Association is in progress - queue current one*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008380 wdiStatus = WDI_QueueNewAssocRequest(pWDICtx, pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -07008381 pwdiJoinParams->wdiReqInfo.macBSSID);
8382
8383 wpalMutexRelease(&pWDICtx->wptMutex);
8384
Jeff Johnsone7245742012-09-05 17:12:55 -07008385 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07008386 }
8387
8388 /*Starting a new association */
8389 pWDICtx->bAssociationInProgress = eWLAN_PAL_TRUE;
8390 wpalMutexRelease(&pWDICtx->wptMutex);
8391
8392 /*Process the Join Request*/
8393 return WDI_ProcessBSSSessionJoinReq( pWDICtx, pwdiJoinParams,
8394 wdiJoinRspCb,pEventData->pUserData);
8395
8396}/*WDI_ProcessJoinReq*/
8397
8398
8399/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008400 @brief Process Config BSS Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -07008401 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008402
8403 @param pWDICtx: pointer to the WLAN DAL context
8404 pEventData: pointer to the event information structure
8405
Jeff Johnson295189b2012-06-20 16:38:30 -07008406 @see
8407 @return Result of the function call
8408*/
8409WDI_Status
8410WDI_ProcessConfigBSSReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008411(
Jeff Johnson295189b2012-06-20 16:38:30 -07008412 WDI_ControlBlockType* pWDICtx,
8413 WDI_EventInfoType* pEventData
8414)
8415{
8416 WDI_ConfigBSSReqParamsType* pwdiConfigBSSParams;
8417 WDI_ConfigBSSRspCb wdiConfigBSSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07008418 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07008419 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008420 wpt_uint16 uMsgSize = 0;
8421 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008422 wpt_uint16 usDataOffset = 0;
8423 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07008424 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07008425
Jeff Johnsone7245742012-09-05 17:12:55 -07008426 tConfigBssReqMsg halConfigBssReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07008427 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8428
8429 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008430 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008431 -------------------------------------------------------------------------*/
8432 if (( NULL == pEventData ) ||
8433 ( NULL == pEventData->pEventData ) ||
8434 ( NULL == pEventData->pCBfnc ))
8435 {
8436 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008437 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008438 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008439 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008440 }
8441
Abhishek Singh6927fa02014-06-27 17:19:55 +05308442 wpalMemoryZero(&halConfigBssReqMsg, sizeof(tConfigBssReqMsg));
Jeff Johnson295189b2012-06-20 16:38:30 -07008443 pwdiConfigBSSParams = (WDI_ConfigBSSReqParamsType*)pEventData->pEventData;
8444 wdiConfigBSSRspCb = (WDI_ConfigBSSRspCb)pEventData->pCBfnc;
8445 /*-------------------------------------------------------------------------
8446 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07008447 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07008448 -------------------------------------------------------------------------*/
8449 wpalMutexAcquire(&pWDICtx->wptMutex);
8450
8451 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008452 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07008453 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008454 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
8455 pwdiConfigBSSParams->wdiReqInfo.macBSSID,
8456 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07008457
Jeff Johnsone7245742012-09-05 17:12:55 -07008458 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07008459 {
8460#ifdef WLAN_FEATURE_VOWIFI_11R
8461 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008462 Fetch an empty session block
Jeff Johnson295189b2012-06-20 16:38:30 -07008463 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008464 ucCurrentBSSSesIdx = WDI_FindEmptySession( pWDICtx, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07008465 if ( NULL == pBSSSes )
8466 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008467
Jeff Johnson295189b2012-06-20 16:38:30 -07008468 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
8469 "DAL has no free sessions - cannot run another join");
Jeff Johnsone7245742012-09-05 17:12:55 -07008470
Jeff Johnson295189b2012-06-20 16:38:30 -07008471 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008472 return WDI_STATUS_RES_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008473 }
Jeff Johnsone7245742012-09-05 17:12:55 -07008474
Jeff Johnson295189b2012-06-20 16:38:30 -07008475 /*Save BSS Session Info*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008476 pBSSSes->bInUse = eWLAN_PAL_TRUE;
8477 wpalMemoryCopy( pBSSSes->macBSSID, pwdiConfigBSSParams->wdiReqInfo.macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -07008478 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -07008479
Jeff Johnson295189b2012-06-20 16:38:30 -07008480 /*Transition to state Joining*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008481 pBSSSes->wdiAssocState = WDI_ASSOC_JOINING_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07008482 pWDICtx->ucCurrentBSSSesIdx = ucCurrentBSSSesIdx;
8483#else
Jeff Johnsone7245742012-09-05 17:12:55 -07008484 /* If the BSS type is IBSS create the session here as there is no Join
Jeff Johnson295189b2012-06-20 16:38:30 -07008485 * Request in case of IBSS*/
8486 if((pwdiConfigBSSParams->wdiReqInfo.wdiBSSType == WDI_IBSS_MODE) ||
8487 (pwdiConfigBSSParams->wdiReqInfo.wdiBSSType == WDI_INFRA_AP_MODE) ||
8488 (pwdiConfigBSSParams->wdiReqInfo.wdiBSSType == WDI_BTAMP_AP_MODE) ||
8489 (pwdiConfigBSSParams->wdiReqInfo.wdiBSSType == WDI_BTAMP_STA_MODE))
8490 {
8491 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008492 Fetch an empty session block
Jeff Johnson295189b2012-06-20 16:38:30 -07008493 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008494 ucCurrentBSSSesIdx = WDI_FindEmptySession( pWDICtx, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07008495 if ( NULL == pBSSSes )
8496 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008497
Jeff Johnson295189b2012-06-20 16:38:30 -07008498 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
8499 "DAL has no free sessions - cannot run another join");
Jeff Johnsone7245742012-09-05 17:12:55 -07008500
Jeff Johnson295189b2012-06-20 16:38:30 -07008501 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008502 return WDI_STATUS_RES_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008503 }
Jeff Johnsone7245742012-09-05 17:12:55 -07008504
Jeff Johnson295189b2012-06-20 16:38:30 -07008505 /*Save BSS Session Info*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008506 pBSSSes->bInUse = eWLAN_PAL_TRUE;
8507 wpalMemoryCopy( pBSSSes->macBSSID, pwdiConfigBSSParams->wdiReqInfo.macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -07008508 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -07008509
Jeff Johnson295189b2012-06-20 16:38:30 -07008510 /*Transition to state Joining*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008511 pBSSSes->wdiAssocState = WDI_ASSOC_JOINING_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07008512 pWDICtx->ucCurrentBSSSesIdx = ucCurrentBSSSesIdx;
8513 }
8514 else
8515 {
8516 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07008517 "%s: Association sequence for this BSS does not yet exist." MAC_ADDRESS_STR "wdiBssType %d",
8518 __func__, MAC_ADDR_ARRAY(pwdiConfigBSSParams->wdiReqInfo.macBSSID),
8519 pwdiConfigBSSParams->wdiReqInfo.wdiBSSType);
8520
Jeff Johnson295189b2012-06-20 16:38:30 -07008521 /* for IBSS testing */
8522 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008523 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008524 }
8525#endif
8526 }
8527
8528 /*------------------------------------------------------------------------
8529 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07008530 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07008531 ------------------------------------------------------------------------*/
8532 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
8533 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008534 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8535 "%s: Association sequence for this BSS exists but currently queued. " MAC_ADDRESS_STR " bssIdx %d",
8536 __func__, MAC_ADDR_ARRAY(pwdiConfigBSSParams->wdiReqInfo.macBSSID),
8537 ucCurrentBSSSesIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07008538
Jeff Johnsone7245742012-09-05 17:12:55 -07008539 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07008540
8541 wpalMutexRelease(&pWDICtx->wptMutex);
8542
Jeff Johnsone7245742012-09-05 17:12:55 -07008543 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07008544 }
8545
8546 /* Cache the request for response processing */
Jeff Johnsone7245742012-09-05 17:12:55 -07008547 wpalMemoryCopy(&pWDICtx->wdiCachedConfigBssReq,
8548 pwdiConfigBSSParams,
Jeff Johnson295189b2012-06-20 16:38:30 -07008549 sizeof(pWDICtx->wdiCachedConfigBssReq));
8550
8551 wpalMutexRelease(&pWDICtx->wptMutex);
8552
Jeff Johnsone7245742012-09-05 17:12:55 -07008553 /* Allocation of BssReqMsg Memory Based on Firmware Capabilities */
8554#ifdef WLAN_FEATURE_11AC
8555 if (WDI_getFwWlanFeatCaps(DOT11AC))
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -07008556 uMsgSize = sizeof(halConfigBssReqMsg.uBssParams.configBssParams_V1); // Version - 1 For 11AC
Jeff Johnsone7245742012-09-05 17:12:55 -07008557 else
8558#endif
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -07008559 uMsgSize = sizeof(halConfigBssReqMsg.uBssParams.configBssParams); // default Version - 0 Structure
Jeff Johnson295189b2012-06-20 16:38:30 -07008560
8561 /*-----------------------------------------------------------------------
8562 Get message buffer
8563 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008564 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_CONFIG_BSS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008565 uMsgSize, &pSendBuffer, &usDataOffset, &usSendSize))||
8566 ( usSendSize < (usDataOffset + uMsgSize )))
8567 {
8568 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08008569 "Unable to get send buffer in config bss req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07008570 pEventData, pwdiConfigBSSParams, wdiConfigBSSRspCb);
8571 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008572 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008573 }
8574
8575 /*Copy the BSS request */
Madan Mohan Koyyalamudia208d102012-10-15 15:18:18 -07008576#ifdef WLAN_FEATURE_11AC
8577 if (WDI_getFwWlanFeatCaps(DOT11AC))
8578 WDI_CopyWDIConfigBSSToHALConfigBSS( (tConfigBssParams*)&halConfigBssReqMsg.uBssParams.configBssParams_V1,
8579 &pwdiConfigBSSParams->wdiReqInfo);
8580 else
8581#endif
Jeff Johnsone7245742012-09-05 17:12:55 -07008582 WDI_CopyWDIConfigBSSToHALConfigBSS( &halConfigBssReqMsg.uBssParams.configBssParams,
Jeff Johnson295189b2012-06-20 16:38:30 -07008583 &pwdiConfigBSSParams->wdiReqInfo);
8584
8585 /* Need to fill in the STA Index to invalid, since at this point we have not
8586 yet received it from HAL */
Jeff Johnsone7245742012-09-05 17:12:55 -07008587 halConfigBssReqMsg.uBssParams.configBssParams.staContext.staIdx = WDI_STA_INVALID_IDX;
Jeff Johnson295189b2012-06-20 16:38:30 -07008588
8589 /* Need to fill in the BSS index */
Jeff Johnsone7245742012-09-05 17:12:55 -07008590 halConfigBssReqMsg.uBssParams.configBssParams.staContext.bssIdx = pBSSSes->ucBSSIdx;
8591
Madan Mohan Koyyalamudif244d8f2012-11-29 11:21:05 -08008592#ifdef WLAN_FEATURE_11AC
8593 if (WDI_getFwWlanFeatCaps(DOT11AC)){
8594 wpalMemoryCopy( pSendBuffer+usDataOffset,
8595 &halConfigBssReqMsg.uBssParams.configBssParams_V1,
8596 uMsgSize);
8597 }else
8598#endif
Tushnim Bhattacharyya5dd94562013-03-20 20:15:03 -07008599 {
8600 if ( uMsgSize <= sizeof(tConfigBssParams) )
8601 {
Tushnim Bhattacharyyaf64c5dc2013-03-21 15:11:31 -07008602 wpalMemoryCopy( pSendBuffer+usDataOffset,
Tushnim Bhattacharyya5dd94562013-03-20 20:15:03 -07008603 &halConfigBssReqMsg.uBssParams.configBssParams,
8604 uMsgSize);
8605 }
8606 else
8607 {
8608 return WDI_STATUS_E_FAILURE;
8609 }
8610 }
Jeff Johnson295189b2012-06-20 16:38:30 -07008611
8612 pWDICtx->wdiReqStatusCB = pwdiConfigBSSParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008613 pWDICtx->pReqStatusUserData = pwdiConfigBSSParams->pUserData;
Vinay Krishna Eranna6f22c1f2014-10-13 16:03:06 +05308614 wpalMemoryZero(&halConfigBssReqMsg, sizeof(halConfigBssReqMsg));
Jeff Johnson295189b2012-06-20 16:38:30 -07008615 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008616 Send Config BSS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008617 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008618 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
8619 wdiConfigBSSRspCb, pEventData->pUserData,
Jeff Johnson295189b2012-06-20 16:38:30 -07008620 WDI_CONFIG_BSS_RESP);
8621
8622}/*WDI_ProcessConfigBSSReq*/
8623
8624
8625/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008626 @brief Process Del BSS Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07008627 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008628
8629 @param pWDICtx: pointer to the WLAN DAL context
8630 pEventData: pointer to the event information structure
8631
Jeff Johnson295189b2012-06-20 16:38:30 -07008632 @see
8633 @return Result of the function call
8634*/
8635WDI_Status
8636WDI_ProcessDelBSSReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008637(
Jeff Johnson295189b2012-06-20 16:38:30 -07008638 WDI_ControlBlockType* pWDICtx,
8639 WDI_EventInfoType* pEventData
8640)
8641{
8642 WDI_DelBSSReqParamsType* pwdiDelBSSParams = NULL;
8643 WDI_DelBSSRspCb wdiDelBSSRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008644 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07008645 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008646 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008647 wpt_uint16 usDataOffset = 0;
8648 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07008649 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07008650
Jeff Johnsone7245742012-09-05 17:12:55 -07008651 tDeleteBssReqMsg halBssReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07008652 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8653
8654 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008655 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008656 -------------------------------------------------------------------------*/
8657 if (( NULL == pEventData ) ||
8658 ( NULL == (pwdiDelBSSParams = (WDI_DelBSSReqParamsType*)pEventData->pEventData)) ||
8659 ( NULL == (wdiDelBSSRspCb = (WDI_DelBSSRspCb)pEventData->pCBfnc)))
8660 {
8661 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008662 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008663 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008664 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008665 }
8666
8667 /*-------------------------------------------------------------------------
8668 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07008669 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07008670 -------------------------------------------------------------------------*/
8671 wpalMutexAcquire(&pWDICtx->wptMutex);
8672
8673 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008674 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07008675 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008676 ucCurrentBSSSesIdx = WDI_FindAssocSessionByBSSIdx( pWDICtx,
8677 pwdiDelBSSParams->ucBssIdx,
8678 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07008679
Jeff Johnsone7245742012-09-05 17:12:55 -07008680 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07008681 {
8682 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07008683 "%s: BSS does not yet exist. ucBssIdx %d",
8684 __func__, pwdiDelBSSParams->ucBssIdx);
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -08008685
8686 wpalMutexRelease(&pWDICtx->wptMutex);
8687
8688 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008689 }
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -08008690
8691 /*------------------------------------------------------------------------
8692 Check if this BSS is being currently processed or queued,
8693 if queued - queue the new request as well
8694 ------------------------------------------------------------------------*/
8695 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
Jeff Johnson295189b2012-06-20 16:38:30 -07008696 {
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -08008697 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8698 "%s: Association sequence for this BSS exists but currently queued. ucBssIdx %d",
8699 __func__, pwdiDelBSSParams->ucBssIdx);
8700
8701 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
8702
8703 wpalMutexRelease(&pWDICtx->wptMutex);
8704
8705 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07008706 }
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -08008707
Jeff Johnson295189b2012-06-20 16:38:30 -07008708 /*-----------------------------------------------------------------------
8709 If we receive a Del BSS request for an association that is already in
8710 progress, it indicates that the assoc has failed => we no longer have
8711 an association in progress => we must check for pending associations
Jeff Johnsone7245742012-09-05 17:12:55 -07008712 that were queued and start as soon as the Del BSS response is received
Jeff Johnson295189b2012-06-20 16:38:30 -07008713 -----------------------------------------------------------------------*/
8714 if ( ucCurrentBSSSesIdx == pWDICtx->ucCurrentBSSSesIdx )
8715 {
8716 /*We can switch to false here because even if a subsequent Join comes in
8717 it will only be processed when DAL transitions out of BUSY state which
8718 happens when the Del BSS request comes */
8719 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
8720
8721 /*Former association is complete - prepare next pending assoc for
8722 processing */
8723 WDI_DequeueAssocRequest(pWDICtx);
8724 }
8725
8726 wpalMutexRelease(&pWDICtx->wptMutex);
8727 /*-----------------------------------------------------------------------
8728 Get message buffer
8729 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008730 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_DEL_BSS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008731 sizeof(halBssReqMsg.deleteBssParams),
8732 &pSendBuffer, &usDataOffset, &usSendSize))||
8733 ( usSendSize < (usDataOffset + sizeof(halBssReqMsg.deleteBssParams) )))
8734 {
8735 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08008736 "Unable to get send buffer in start req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07008737 pEventData, pwdiDelBSSParams, wdiDelBSSRspCb);
8738 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008739 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008740 }
8741
8742 /*Fill in the message request structure*/
8743
8744 /*BSS Index is saved on config BSS response and Post Assoc Response */
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -08008745 halBssReqMsg.deleteBssParams.bssIdx = pBSSSes->ucBSSIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -07008746
Jeff Johnsone7245742012-09-05 17:12:55 -07008747 wpalMemoryCopy( pSendBuffer+usDataOffset,
8748 &halBssReqMsg.deleteBssParams,
8749 sizeof(halBssReqMsg.deleteBssParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008750
8751 pWDICtx->wdiReqStatusCB = pwdiDelBSSParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008752 pWDICtx->pReqStatusUserData = pwdiDelBSSParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008753
Jeff Johnsone7245742012-09-05 17:12:55 -07008754
Jeff Johnson295189b2012-06-20 16:38:30 -07008755 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008756 Send Del BSS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008757 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008758 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07008759 wdiDelBSSRspCb, pEventData->pUserData, WDI_DEL_BSS_RESP);
8760
Jeff Johnsone7245742012-09-05 17:12:55 -07008761
Jeff Johnson295189b2012-06-20 16:38:30 -07008762}/*WDI_ProcessDelBSSReq*/
8763
8764/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008765 @brief Process Post Assoc Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -07008766 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008767
8768 @param pWDICtx: pointer to the WLAN DAL context
8769 pEventData: pointer to the event information structure
8770
Jeff Johnson295189b2012-06-20 16:38:30 -07008771 @see
8772 @return Result of the function call
8773*/
8774WDI_Status
8775WDI_ProcessPostAssocReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008776(
Jeff Johnson295189b2012-06-20 16:38:30 -07008777 WDI_ControlBlockType* pWDICtx,
8778 WDI_EventInfoType* pEventData
8779)
8780{
8781 WDI_PostAssocReqParamsType* pwdiPostAssocParams = NULL;
8782 WDI_PostAssocRspCb wdiPostAssocRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008783 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07008784 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008785 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008786 wpt_uint16 usDataOffset = 0;
8787 wpt_uint16 usSendSize = 0;
8788 wpt_uint16 uMsgSize = 0;
8789 wpt_uint16 uOffset = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07008790 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07008791
Jeff Johnsone7245742012-09-05 17:12:55 -07008792 tPostAssocReqMsg halPostAssocReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07008793 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8794
8795 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008796 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008797 -------------------------------------------------------------------------*/
8798 if (( NULL == pEventData ) ||
8799 ( NULL == (pwdiPostAssocParams = (WDI_PostAssocReqParamsType*)pEventData->pEventData)) ||
8800 ( NULL == (wdiPostAssocRspCb = (WDI_PostAssocRspCb)pEventData->pCBfnc)))
8801 {
8802 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008803 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008804 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008805 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008806 }
8807
8808 /*-------------------------------------------------------------------------
8809 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07008810 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07008811 -------------------------------------------------------------------------*/
8812 wpalMutexAcquire(&pWDICtx->wptMutex);
8813
8814 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008815 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07008816 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008817 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
8818 pwdiPostAssocParams->wdiBSSParams.macBSSID,
8819 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07008820
8821 if ( NULL == pBSSSes )
8822 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008823 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
8824 "%s: Association sequence for this BSS does not yet exist - "
8825 "operation not allowed. macBSSID " MAC_ADDRESS_STR,
8826 __func__, MAC_ADDR_ARRAY(pwdiPostAssocParams->wdiBSSParams.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07008827
8828 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008829 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008830 }
8831
8832 /*------------------------------------------------------------------------
8833 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07008834 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07008835 ------------------------------------------------------------------------*/
8836 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
8837 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008838 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8839 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
8840 __func__, MAC_ADDR_ARRAY(pwdiPostAssocParams->wdiBSSParams.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07008841
Jeff Johnsone7245742012-09-05 17:12:55 -07008842 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07008843
8844 wpalMutexRelease(&pWDICtx->wptMutex);
8845
Jeff Johnsone7245742012-09-05 17:12:55 -07008846 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07008847 }
8848
8849 /*-----------------------------------------------------------------------
8850 If Post Assoc was not yet received - the current association must
8851 be in progress
8852 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008853 if (( ucCurrentBSSSesIdx != pWDICtx->ucCurrentBSSSesIdx ) ||
Jeff Johnson295189b2012-06-20 16:38:30 -07008854 ( eWLAN_PAL_FALSE == pWDICtx->bAssociationInProgress ))
8855 {
8856 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
8857 "Association sequence for this BSS association no longer in "
8858 "progress - not allowed");
8859
8860 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008861 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008862 }
8863
8864 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008865 Post Assoc Request is only allowed in Joining state
Jeff Johnson295189b2012-06-20 16:38:30 -07008866 -----------------------------------------------------------------------*/
8867 if ( WDI_ASSOC_JOINING_ST != pBSSSes->wdiAssocState)
8868 {
8869 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
8870 "Post Assoc not allowed before JOIN - failing request");
8871
8872 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008873 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008874 }
8875
8876 wpalMutexRelease(&pWDICtx->wptMutex);
8877
8878 uMsgSize = sizeof(halPostAssocReqMsg.postAssocReqParams.configStaParams) +
8879 sizeof(halPostAssocReqMsg.postAssocReqParams.configBssParams) ;
8880 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008881 Fill message for tx over the bus
Jeff Johnson295189b2012-06-20 16:38:30 -07008882 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008883 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_POST_ASSOC_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008884 uMsgSize,&pSendBuffer, &usDataOffset, &usSendSize))||
8885 ( usSendSize < (usDataOffset + uMsgSize )))
8886 {
8887 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08008888 "Unable to get send buffer in start req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07008889 pEventData, pwdiPostAssocParams, wdiPostAssocRspCb);
8890 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008891 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008892 }
8893
8894 /*Copy the STA parameters */
8895 WDI_CopyWDIStaCtxToHALStaCtx(&halPostAssocReqMsg.postAssocReqParams.configStaParams,
8896 &pwdiPostAssocParams->wdiSTAParams );
8897
8898 /* Need to fill in the self STA Index */
Jeff Johnsone7245742012-09-05 17:12:55 -07008899 if ( WDI_STATUS_SUCCESS !=
Jeff Johnson295189b2012-06-20 16:38:30 -07008900 WDI_STATableFindStaidByAddr(pWDICtx,
8901 pwdiPostAssocParams->wdiSTAParams.macSTA,
8902 (wpt_uint8*)&halPostAssocReqMsg.postAssocReqParams.configStaParams.staIdx ))
8903 {
8904 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08008905 MAC_ADDRESS_STR
8906 ": This station does not exist in the WDI Station Table",
8907 MAC_ADDR_ARRAY(pwdiPostAssocParams->wdiSTAParams.macSTA));
Jeff Johnson295189b2012-06-20 16:38:30 -07008908 wpalMutexRelease(&pWDICtx->wptMutex);
Madan Mohan Koyyalamudif244d8f2012-11-29 11:21:05 -08008909 wpalMemoryFree(pSendBuffer);
Jeff Johnsone7245742012-09-05 17:12:55 -07008910 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008911 }
8912
8913 /* Need to fill in the BSS index */
Jeff Johnsone7245742012-09-05 17:12:55 -07008914 halPostAssocReqMsg.postAssocReqParams.configStaParams.bssIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -07008915 pBSSSes->ucBSSIdx;
8916
8917 /*Copy the BSS parameters */
8918 WDI_CopyWDIConfigBSSToHALConfigBSS( &halPostAssocReqMsg.postAssocReqParams.configBssParams,
8919 &pwdiPostAssocParams->wdiBSSParams);
8920
8921 /* Need to fill in the STA index of the peer */
Jeff Johnsone7245742012-09-05 17:12:55 -07008922 if ( WDI_STATUS_SUCCESS !=
Jeff Johnson295189b2012-06-20 16:38:30 -07008923 WDI_STATableFindStaidByAddr(pWDICtx,
8924 pwdiPostAssocParams->wdiBSSParams.wdiSTAContext.macSTA,
Jeff Johnsone7245742012-09-05 17:12:55 -07008925 (wpt_uint8*)&halPostAssocReqMsg.postAssocReqParams.configBssParams.staContext.staIdx))
Jeff Johnson295189b2012-06-20 16:38:30 -07008926 {
8927 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08008928 MAC_ADDRESS_STR
8929 ": This station does not exist in the WDI Station Table",
8930 MAC_ADDR_ARRAY(pwdiPostAssocParams->wdiBSSParams.wdiSTAContext.macSTA));
Jeff Johnson295189b2012-06-20 16:38:30 -07008931 wpalMutexRelease(&pWDICtx->wptMutex);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -08008932 wpalMemoryFree(pSendBuffer);
Jeff Johnsone7245742012-09-05 17:12:55 -07008933 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008934 }
8935
8936 /* Need to fill in the BSS index */
Jeff Johnsone7245742012-09-05 17:12:55 -07008937 halPostAssocReqMsg.postAssocReqParams.configStaParams.bssIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -07008938 pBSSSes->ucBSSIdx;
8939
Jeff Johnsone7245742012-09-05 17:12:55 -07008940
8941 wpalMemoryCopy( pSendBuffer+usDataOffset,
8942 &halPostAssocReqMsg.postAssocReqParams.configStaParams,
8943 sizeof(halPostAssocReqMsg.postAssocReqParams.configStaParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008944
8945 uOffset = sizeof(halPostAssocReqMsg.postAssocReqParams.configStaParams);
8946
Jeff Johnsone7245742012-09-05 17:12:55 -07008947 wpalMemoryCopy( pSendBuffer+usDataOffset + uOffset,
8948 &halPostAssocReqMsg.postAssocReqParams.configBssParams,
8949 sizeof(halPostAssocReqMsg.postAssocReqParams.configBssParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008950
Jeff Johnsone7245742012-09-05 17:12:55 -07008951
Jeff Johnson295189b2012-06-20 16:38:30 -07008952 pWDICtx->wdiReqStatusCB = pwdiPostAssocParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008953 pWDICtx->pReqStatusUserData = pwdiPostAssocParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008954
Jeff Johnsone7245742012-09-05 17:12:55 -07008955
8956 wpalMemoryCopy( &pWDICtx->wdiCachedPostAssocReq,
Jeff Johnson295189b2012-06-20 16:38:30 -07008957 pwdiPostAssocParams,
Jeff Johnsone7245742012-09-05 17:12:55 -07008958 sizeof(pWDICtx->wdiCachedPostAssocReq));
Jeff Johnson295189b2012-06-20 16:38:30 -07008959
Vinay Krishna Eranna6f22c1f2014-10-13 16:03:06 +05308960 wpalMemoryZero(&halPostAssocReqMsg, sizeof(halPostAssocReqMsg));
Jeff Johnson295189b2012-06-20 16:38:30 -07008961 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008962 Send Post Assoc Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008963 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008964 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07008965 wdiPostAssocRspCb, pEventData->pUserData, WDI_POST_ASSOC_RESP);
8966
Jeff Johnsone7245742012-09-05 17:12:55 -07008967
Jeff Johnson295189b2012-06-20 16:38:30 -07008968}/*WDI_ProcessPostAssocReq*/
8969
8970/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008971 @brief Process Del STA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07008972 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008973
8974 @param pWDICtx: pointer to the WLAN DAL context
8975 pEventData: pointer to the event information structure
8976
Jeff Johnson295189b2012-06-20 16:38:30 -07008977 @see
8978 @return Result of the function call
8979*/
8980WDI_Status
8981WDI_ProcessDelSTAReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008982(
Jeff Johnson295189b2012-06-20 16:38:30 -07008983 WDI_ControlBlockType* pWDICtx,
8984 WDI_EventInfoType* pEventData
8985)
8986{
8987 WDI_DelSTAReqParamsType* pwdiDelSTAParams;
8988 WDI_DelSTARspCb wdiDelSTARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07008989 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07008990 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008991 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008992 wpt_uint16 usDataOffset = 0;
8993 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07008994 wpt_macAddr macBSSID;
Jeff Johnson295189b2012-06-20 16:38:30 -07008995 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
8996
Jeff Johnsone7245742012-09-05 17:12:55 -07008997 tDeleteStaReqMsg halDelStaReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07008998 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8999
9000 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009001 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009002 -------------------------------------------------------------------------*/
9003 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9004 ( NULL == pEventData->pCBfnc ))
9005 {
9006 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009007 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009008 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009009 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009010 }
9011
9012 pwdiDelSTAParams = (WDI_DelSTAReqParamsType*)pEventData->pEventData;
9013 wdiDelSTARspCb = (WDI_DelSTARspCb)pEventData->pCBfnc;
9014 /*-------------------------------------------------------------------------
9015 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009016 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009017 -------------------------------------------------------------------------*/
9018 wpalMutexAcquire(&pWDICtx->wptMutex);
9019
9020 /*------------------------------------------------------------------------
9021 Find the BSS for which the request is made and identify WDI session
9022 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009023 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
9024 pwdiDelSTAParams->ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07009025 &macBSSID))
9026 {
9027 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009028 "This station does not exist in the WDI Station Table %d",
9029 pwdiDelSTAParams->ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07009030 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009031 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009032 }
9033
Jeff Johnsone7245742012-09-05 17:12:55 -07009034 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
9035 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009036 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009037 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
9038 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
9039 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009040
9041 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009042 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009043 }
9044
9045 /*------------------------------------------------------------------------
9046 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009047 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009048 ------------------------------------------------------------------------*/
9049 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9050 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009051 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9052 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
9053 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009054
Jeff Johnsone7245742012-09-05 17:12:55 -07009055 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009056 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009057 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009058 }
9059
9060 wpalMutexRelease(&pWDICtx->wptMutex);
9061 /*-----------------------------------------------------------------------
9062 Get message buffer
9063 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009064 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_DEL_STA_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009065 sizeof(halDelStaReqMsg.delStaParams),
9066 &pSendBuffer, &usDataOffset, &usSendSize))||
9067 ( usSendSize < (usDataOffset + sizeof(halDelStaReqMsg.delStaParams) )))
9068 {
9069 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009070 "Unable to get send buffer in start req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07009071 pEventData, pwdiDelSTAParams, wdiDelSTARspCb);
9072 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009073 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009074 }
9075
Jeff Johnsone7245742012-09-05 17:12:55 -07009076 halDelStaReqMsg.delStaParams.staIdx = pwdiDelSTAParams->ucSTAIdx;
9077 wpalMemoryCopy( pSendBuffer+usDataOffset,
9078 &halDelStaReqMsg.delStaParams,
9079 sizeof(halDelStaReqMsg.delStaParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07009080
9081 pWDICtx->wdiReqStatusCB = pwdiDelSTAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009082 pWDICtx->pReqStatusUserData = pwdiDelSTAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009083
9084 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009085 Send Del STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009086 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009087 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07009088 wdiDelSTARspCb, pEventData->pUserData, WDI_DEL_STA_RESP);
9089
9090}/*WDI_ProcessDelSTAReq*/
9091
9092
9093/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -07009094 SECURITY REQUEST PROCESSING API
Jeff Johnson295189b2012-06-20 16:38:30 -07009095==========================================================================*/
9096/**
9097 @brief Process Set BSS Key Request function (called when Main FSM
9098 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009099
9100 @param pWDICtx: pointer to the WLAN DAL context
9101 pEventData: pointer to the event information structure
9102
Jeff Johnson295189b2012-06-20 16:38:30 -07009103 @see
9104 @return Result of the function call
9105*/
9106WDI_Status
9107WDI_ProcessSetBssKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009108(
Jeff Johnson295189b2012-06-20 16:38:30 -07009109 WDI_ControlBlockType* pWDICtx,
9110 WDI_EventInfoType* pEventData
9111)
9112{
9113 WDI_SetBSSKeyReqParamsType* pwdiSetBSSKeyParams;
9114 WDI_SetBSSKeyRspCb wdiSetBSSKeyRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07009115 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07009116 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009117 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009118 wpt_uint16 usDataOffset = 0;
9119 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009120 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07009121 tSetBssKeyReqMsg halSetBssKeyReqMsg = {{0}};
9122 wpt_uint8 keyIndex = 0;
Srinivas Dasari9b57b112014-11-27 12:25:23 +05309123 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -07009124
9125 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9126
9127 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009128 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009129 -------------------------------------------------------------------------*/
9130 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9131 ( NULL == pEventData->pCBfnc ))
9132 {
9133 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009134 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009135 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009136 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009137 }
9138
9139 pwdiSetBSSKeyParams = (WDI_SetBSSKeyReqParamsType*)pEventData->pEventData;
9140 wdiSetBSSKeyRspCb = (WDI_SetBSSKeyRspCb)pEventData->pCBfnc;
9141 /*-------------------------------------------------------------------------
9142 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009143 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009144 -------------------------------------------------------------------------*/
9145 wpalMutexAcquire(&pWDICtx->wptMutex);
9146
9147 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009148 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07009149 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009150 ucCurrentBSSSesIdx = WDI_FindAssocSessionByBSSIdx( pWDICtx,
9151 pwdiSetBSSKeyParams->wdiBSSKeyInfo.ucBssIdx,
9152 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07009153
Jeff Johnsone7245742012-09-05 17:12:55 -07009154 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009155 {
9156 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07009157 "%s: Association sequence for this BSS does not yet exist. ucBssIdx %d",
9158 __func__, pwdiSetBSSKeyParams->wdiBSSKeyInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07009159
9160 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009161 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009162 }
9163
9164 /*------------------------------------------------------------------------
9165 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009166 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009167 ------------------------------------------------------------------------*/
9168 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9169 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009170 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9171 "%s: Association sequence for this BSS exists but currently queued. ucBssIdx %d",
9172 __func__, pwdiSetBSSKeyParams->wdiBSSKeyInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07009173
Jeff Johnsone7245742012-09-05 17:12:55 -07009174 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009175 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009176 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009177 }
9178
9179
9180 wpalMutexRelease(&pWDICtx->wptMutex);
9181 /*-----------------------------------------------------------------------
9182 Get message buffer
9183 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009184 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_BSS_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009185 sizeof(halSetBssKeyReqMsg.setBssKeyParams),
9186 &pSendBuffer, &usDataOffset, &usSendSize))||
9187 ( usSendSize < (usDataOffset + sizeof(halSetBssKeyReqMsg.setBssKeyParams) )))
9188 {
9189 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009190 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07009191 pEventData, pwdiSetBSSKeyParams, wdiSetBSSKeyRspCb);
9192 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009193 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009194 }
9195
9196 /*-----------------------------------------------------------------------
9197 Copy the Key parameters into the HAL message
9198 -----------------------------------------------------------------------*/
9199
Jeff Johnsone7245742012-09-05 17:12:55 -07009200 halSetBssKeyReqMsg.setBssKeyParams.bssIdx = ucCurrentBSSSesIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -07009201
Jeff Johnsone7245742012-09-05 17:12:55 -07009202 halSetBssKeyReqMsg.setBssKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -07009203 WDI_2_HAL_ENC_TYPE (pwdiSetBSSKeyParams->wdiBSSKeyInfo.wdiEncType);
9204
Jeff Johnsone7245742012-09-05 17:12:55 -07009205 halSetBssKeyReqMsg.setBssKeyParams.numKeys =
Jeff Johnson295189b2012-06-20 16:38:30 -07009206 pwdiSetBSSKeyParams->wdiBSSKeyInfo.ucNumKeys;
9207
9208 for(keyIndex = 0; keyIndex < pwdiSetBSSKeyParams->wdiBSSKeyInfo.ucNumKeys ;
9209 keyIndex++)
9210 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009211 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -07009212 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].keyId;
9213 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].unicast =
9214 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].unicast;
9215 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].keyDirection =
9216 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].keyDirection;
Srinivas Dasari9b57b112014-11-27 12:25:23 +05309217
9218 if(WDI_getHostWlanFeatCaps(DISA) && WDI_getFwWlanFeatCaps(DISA))
9219 {
9220 for (i = 0; i < WDI_MAX_KEY_RSC_LEN; i++)
9221 {
9222 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].keyRsc[i] =
9223 ~(pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].keyRsc[i]);
9224 }
9225
9226 for (i = 0; i < WDI_MAX_KEY_LENGTH; i++)
9227 {
9228 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].key[i] =
9229 ~(pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].key[i]);
9230 }
9231
9232 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
9233 "%s: Negated Keys", __func__);
9234 }
9235 else
9236 {
9237 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
9238 "%s: No change in Keys", __func__);
9239 wpalMemoryCopy(halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].keyRsc,
Jeff Johnsone7245742012-09-05 17:12:55 -07009240 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].keyRsc,
Jeff Johnson295189b2012-06-20 16:38:30 -07009241 WDI_MAX_KEY_RSC_LEN);
Srinivas Dasari9b57b112014-11-27 12:25:23 +05309242 wpalMemoryCopy(halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].key,
9243 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].key,
9244 WDI_MAX_KEY_LENGTH);
9245 }
Jeff Johnsone7245742012-09-05 17:12:55 -07009246 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].paeRole =
Jeff Johnson295189b2012-06-20 16:38:30 -07009247 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].paeRole;
Jeff Johnsone7245742012-09-05 17:12:55 -07009248 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].keyLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07009249 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].keyLength;
Srinivas Dasari9b57b112014-11-27 12:25:23 +05309250 }
Jeff Johnsone7245742012-09-05 17:12:55 -07009251
9252 wpalMemoryCopy( pSendBuffer+usDataOffset,
9253 &halSetBssKeyReqMsg.setBssKeyParams,
9254 sizeof(halSetBssKeyReqMsg.setBssKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07009255
9256 pWDICtx->wdiReqStatusCB = pwdiSetBSSKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009257 pWDICtx->pReqStatusUserData = pwdiSetBSSKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009258
9259 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009260 Send Set BSS Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009261 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009262 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
9263 wdiSetBSSKeyRspCb, pEventData->pUserData,
9264 WDI_SET_BSS_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009265
9266}/*WDI_ProcessSetBssKeyReq*/
9267
9268/**
Jeff Johnsone7245742012-09-05 17:12:55 -07009269 @brief Process Remove BSS Key Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -07009270 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009271
9272 @param pWDICtx: pointer to the WLAN DAL context
9273 pEventData: pointer to the event information structure
9274
Jeff Johnson295189b2012-06-20 16:38:30 -07009275 @see
9276 @return Result of the function call
9277*/
9278WDI_Status
9279WDI_ProcessRemoveBssKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009280(
Jeff Johnson295189b2012-06-20 16:38:30 -07009281 WDI_ControlBlockType* pWDICtx,
9282 WDI_EventInfoType* pEventData
9283)
9284{
9285 WDI_RemoveBSSKeyReqParamsType* pwdiRemoveBSSKeyParams;
9286 WDI_RemoveBSSKeyRspCb wdiRemoveBSSKeyRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07009287 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07009288 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009289 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009290 wpt_uint16 usDataOffset = 0;
9291 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009292 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07009293 tRemoveBssKeyReqMsg halRemoveBssKeyReqMsg = {{0}};
9294 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9295
9296 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009297 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009298 -------------------------------------------------------------------------*/
9299 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9300 ( NULL == pEventData->pCBfnc ))
9301 {
9302 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009303 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009304 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009305 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009306 }
9307
9308 pwdiRemoveBSSKeyParams = (WDI_RemoveBSSKeyReqParamsType*)pEventData->pEventData;
9309 wdiRemoveBSSKeyRspCb = (WDI_RemoveBSSKeyRspCb)pEventData->pCBfnc;
9310 /*-------------------------------------------------------------------------
9311 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009312 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009313 -------------------------------------------------------------------------*/
9314 wpalMutexAcquire(&pWDICtx->wptMutex);
9315
9316 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009317 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07009318 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009319 ucCurrentBSSSesIdx = WDI_FindAssocSessionByBSSIdx( pWDICtx,
9320 pwdiRemoveBSSKeyParams->wdiKeyInfo.ucBssIdx,
9321 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07009322
Jeff Johnsone7245742012-09-05 17:12:55 -07009323 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009324 {
9325 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07009326 "%s: Association sequence for this BSS does not yet exist. ucBssIdx %d",
9327 __func__, pwdiRemoveBSSKeyParams->wdiKeyInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07009328
9329 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009330 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009331 }
9332
9333 /*------------------------------------------------------------------------
9334 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009335 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009336 ------------------------------------------------------------------------*/
9337 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9338 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009339 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9340 "%s: Association sequence for this BSS exists but currently queued. ucBssIdx %d",
9341 __func__, pwdiRemoveBSSKeyParams->wdiKeyInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07009342
Jeff Johnsone7245742012-09-05 17:12:55 -07009343 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009344 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009345 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009346 }
9347
9348
9349 wpalMutexRelease(&pWDICtx->wptMutex);
9350
9351 /*-----------------------------------------------------------------------
9352 Get message buffer
9353 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009354 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_RMV_BSS_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009355 sizeof(halRemoveBssKeyReqMsg.removeBssKeyParams),
9356 &pSendBuffer, &usDataOffset, &usSendSize))||
9357 ( usSendSize < (usDataOffset + sizeof(halRemoveBssKeyReqMsg.removeBssKeyParams) )))
9358 {
9359 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009360 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07009361 pEventData, pwdiRemoveBSSKeyParams, wdiRemoveBSSKeyRspCb);
9362 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009363 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009364 }
9365 /*-----------------------------------------------------------------------
9366 Copy the Key parameters into the HAL message
9367 -----------------------------------------------------------------------*/
9368 halRemoveBssKeyReqMsg.removeBssKeyParams.bssIdx = ucCurrentBSSSesIdx;
9369
Jeff Johnsone7245742012-09-05 17:12:55 -07009370 halRemoveBssKeyReqMsg.removeBssKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -07009371 WDI_2_HAL_ENC_TYPE (pwdiRemoveBSSKeyParams->wdiKeyInfo.wdiEncType);
9372
9373 halRemoveBssKeyReqMsg.removeBssKeyParams.keyId = pwdiRemoveBSSKeyParams->wdiKeyInfo.ucKeyId;
9374
Jeff Johnsone7245742012-09-05 17:12:55 -07009375 halRemoveBssKeyReqMsg.removeBssKeyParams.wepType =
Jeff Johnson295189b2012-06-20 16:38:30 -07009376 WDI_2_HAL_WEP_TYPE(pwdiRemoveBSSKeyParams->wdiKeyInfo.wdiWEPType);
9377
Jeff Johnsone7245742012-09-05 17:12:55 -07009378 wpalMemoryCopy( pSendBuffer+usDataOffset,
9379 &halRemoveBssKeyReqMsg.removeBssKeyParams,
9380 sizeof(halRemoveBssKeyReqMsg.removeBssKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07009381
9382 pWDICtx->wdiReqStatusCB = pwdiRemoveBSSKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009383 pWDICtx->pReqStatusUserData = pwdiRemoveBSSKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009384
9385 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009386 Send Remove BSS Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009387 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009388 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07009389 wdiRemoveBSSKeyRspCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -07009390 WDI_RMV_BSS_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009391}/*WDI_ProcessRemoveBssKeyReq*/
9392
9393/**
Jeff Johnsone7245742012-09-05 17:12:55 -07009394 @brief Process Set STA KeyRequest function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07009395 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009396
9397 @param pWDICtx: pointer to the WLAN DAL context
9398 pEventData: pointer to the event information structure
9399
Jeff Johnson295189b2012-06-20 16:38:30 -07009400 @see
9401 @return Result of the function call
9402*/
9403WDI_Status
9404WDI_ProcessSetStaKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009405(
Jeff Johnson295189b2012-06-20 16:38:30 -07009406 WDI_ControlBlockType* pWDICtx,
9407 WDI_EventInfoType* pEventData
9408)
9409{
9410 WDI_SetSTAKeyReqParamsType* pwdiSetSTAKeyParams;
9411 WDI_SetSTAKeyRspCb wdiSetSTAKeyRspCb;
9412 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009413 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009414 wpt_uint16 usDataOffset = 0;
9415 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009416 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07009417 wpt_macAddr macBSSID;
Jeff Johnsone7245742012-09-05 17:12:55 -07009418 wpt_uint8 ucCurrentBSSSesIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -07009419 tSetStaKeyReqMsg halSetStaKeyReqMsg = {{0}};
9420 wpt_uint8 keyIndex = 0;
Srinivas Dasari9b57b112014-11-27 12:25:23 +05309421 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -07009422
9423 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9424
9425 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009426 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009427 -------------------------------------------------------------------------*/
9428 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9429 ( NULL == pEventData->pCBfnc ))
9430 {
9431 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009432 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009433 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009434 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009435 }
9436
9437 pwdiSetSTAKeyParams = (WDI_SetSTAKeyReqParamsType*)pEventData->pEventData;
9438 wdiSetSTAKeyRspCb = (WDI_SetSTAKeyRspCb)pEventData->pCBfnc;
9439 /*-------------------------------------------------------------------------
9440 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009441 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009442 -------------------------------------------------------------------------*/
9443 wpalMutexAcquire(&pWDICtx->wptMutex);
9444
9445 /*------------------------------------------------------------------------
9446 Find the BSS for which the request is made and identify WDI session
9447 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009448 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
9449 pwdiSetSTAKeyParams->wdiKeyInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07009450 &macBSSID))
9451 {
9452 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009453 "This station does not exist in the WDI Station Table %d",
9454 pwdiSetSTAKeyParams->wdiKeyInfo.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07009455 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009456 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009457 }
9458
Jeff Johnsone7245742012-09-05 17:12:55 -07009459 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
9460 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009461 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009462 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
9463 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
9464 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009465
9466 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009467 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009468 }
Jeff Johnsone7245742012-09-05 17:12:55 -07009469
Jeff Johnson295189b2012-06-20 16:38:30 -07009470 /*------------------------------------------------------------------------
9471 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009472 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009473 ------------------------------------------------------------------------*/
9474 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9475 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009476 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9477 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
9478 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009479
Jeff Johnsone7245742012-09-05 17:12:55 -07009480 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009481 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009482 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009483 }
9484
9485
9486 wpalMutexRelease(&pWDICtx->wptMutex);
9487 /*-----------------------------------------------------------------------
9488 Get message buffer
9489 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009490 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_STA_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009491 sizeof(halSetStaKeyReqMsg.setStaKeyParams),
9492 &pSendBuffer, &usDataOffset, &usSendSize))||
9493 ( usSendSize < (usDataOffset + sizeof(halSetStaKeyReqMsg.setStaKeyParams) )))
9494 {
9495 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009496 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07009497 pEventData, pwdiSetSTAKeyParams, wdiSetSTAKeyRspCb);
9498 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009499 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009500 }
9501 /*-----------------------------------------------------------------------
9502 Copy the STA Key parameters into the HAL message
9503 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009504 halSetStaKeyReqMsg.setStaKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -07009505 WDI_2_HAL_ENC_TYPE (pwdiSetSTAKeyParams->wdiKeyInfo.wdiEncType);
9506
Jeff Johnsone7245742012-09-05 17:12:55 -07009507 halSetStaKeyReqMsg.setStaKeyParams.wepType =
Jeff Johnson295189b2012-06-20 16:38:30 -07009508 WDI_2_HAL_WEP_TYPE (pwdiSetSTAKeyParams->wdiKeyInfo.wdiWEPType );
9509
9510 halSetStaKeyReqMsg.setStaKeyParams.staIdx = pwdiSetSTAKeyParams->wdiKeyInfo.ucSTAIdx;
9511
9512 halSetStaKeyReqMsg.setStaKeyParams.defWEPIdx = pwdiSetSTAKeyParams->wdiKeyInfo.ucDefWEPIdx;
9513
9514 halSetStaKeyReqMsg.setStaKeyParams.singleTidRc = pwdiSetSTAKeyParams->wdiKeyInfo.ucSingleTidRc;
9515
Jeff Johnson295189b2012-06-20 16:38:30 -07009516 for(keyIndex = 0; keyIndex < pwdiSetSTAKeyParams->wdiKeyInfo.ucNumKeys ;
9517 keyIndex++)
9518 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009519 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -07009520 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyId;
9521 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].unicast =
9522 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].unicast;
9523 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyDirection =
9524 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyDirection;
Srinivas Dasari9b57b112014-11-27 12:25:23 +05309525
9526 if(WDI_getHostWlanFeatCaps(DISA) && WDI_getFwWlanFeatCaps(DISA))
9527 {
9528 for (i = 0; i < WDI_MAX_KEY_RSC_LEN; i++)
9529 {
9530 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyRsc[i] =
9531 ~(pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyRsc[i]);
9532 }
9533
9534 for (i = 0; i< WDI_MAX_KEY_LENGTH; i++)
9535 {
9536 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].key[i] =
9537 ~(pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].key[i]);
9538 }
9539
9540 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
9541 "%s: Negated Keys", __func__);
9542 }
9543 else
9544 {
9545 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
9546 "%s: No change in Keys", __func__);
9547 wpalMemoryCopy(halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyRsc,
Jeff Johnsone7245742012-09-05 17:12:55 -07009548 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyRsc,
Jeff Johnson295189b2012-06-20 16:38:30 -07009549 WDI_MAX_KEY_RSC_LEN);
Srinivas Dasari9b57b112014-11-27 12:25:23 +05309550 wpalMemoryCopy(halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].key,
9551 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].key,
9552 WDI_MAX_KEY_LENGTH);
9553 }
Jeff Johnsone7245742012-09-05 17:12:55 -07009554 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].paeRole =
Jeff Johnson295189b2012-06-20 16:38:30 -07009555 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].paeRole;
Jeff Johnsone7245742012-09-05 17:12:55 -07009556 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07009557 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyLength;
Srinivas Dasari9b57b112014-11-27 12:25:23 +05309558 }
Jeff Johnson295189b2012-06-20 16:38:30 -07009559
Jeff Johnsone7245742012-09-05 17:12:55 -07009560 wpalMemoryCopy( pSendBuffer+usDataOffset,
9561 &halSetStaKeyReqMsg.setStaKeyParams,
9562 sizeof(halSetStaKeyReqMsg.setStaKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07009563
9564 pWDICtx->wdiReqStatusCB = pwdiSetSTAKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009565 pWDICtx->pReqStatusUserData = pwdiSetSTAKeyParams->pUserData;
Vinay Krishna Eranna6f22c1f2014-10-13 16:03:06 +05309566 wpalMemoryZero(&halSetStaKeyReqMsg, sizeof(halSetStaKeyReqMsg));
Jeff Johnson295189b2012-06-20 16:38:30 -07009567 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009568 Send Set STA Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009569 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009570 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
9571 wdiSetSTAKeyRspCb, pEventData->pUserData,
9572 WDI_SET_STA_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009573
9574}/*WDI_ProcessSetSTAKeyReq*/
9575
9576/**
Jeff Johnsone7245742012-09-05 17:12:55 -07009577 @brief Process Remove STA Key Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -07009578 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009579
9580 @param pWDICtx: pointer to the WLAN DAL context
9581 pEventData: pointer to the event information structure
9582
Jeff Johnson295189b2012-06-20 16:38:30 -07009583 @see
9584 @return Result of the function call
9585*/
9586WDI_Status
9587WDI_ProcessRemoveStaKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009588(
Jeff Johnson295189b2012-06-20 16:38:30 -07009589 WDI_ControlBlockType* pWDICtx,
9590 WDI_EventInfoType* pEventData
9591)
9592{
9593 WDI_RemoveSTAKeyReqParamsType* pwdiRemoveSTAKeyParams;
9594 WDI_RemoveSTAKeyRspCb wdiRemoveSTAKeyRspCb;
9595 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009596 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009597 wpt_uint16 usDataOffset = 0;
9598 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009599 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07009600 wpt_macAddr macBSSID;
9601 wpt_uint8 ucCurrentBSSSesIdx;
9602 tRemoveStaKeyReqMsg halRemoveStaKeyReqMsg = {{0}};
9603 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9604
9605 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009606 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009607 -------------------------------------------------------------------------*/
9608 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9609 ( NULL == pEventData->pCBfnc ))
9610 {
9611 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009612 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009613 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009614 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009615 }
9616
9617 pwdiRemoveSTAKeyParams = (WDI_RemoveSTAKeyReqParamsType*)pEventData->pEventData;
9618 wdiRemoveSTAKeyRspCb = (WDI_RemoveSTAKeyRspCb)pEventData->pCBfnc;
9619 /*-------------------------------------------------------------------------
9620 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009621 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009622 -------------------------------------------------------------------------*/
9623 wpalMutexAcquire(&pWDICtx->wptMutex);
9624
9625 /*------------------------------------------------------------------------
9626 Find the BSS for which the request is made and identify WDI session
9627 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009628 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
9629 pwdiRemoveSTAKeyParams->wdiKeyInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07009630 &macBSSID))
9631 {
9632 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009633 "This station does not exist in the WDI Station Table %d",
9634 pwdiRemoveSTAKeyParams->wdiKeyInfo.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07009635 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009636 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009637 }
9638
Jeff Johnsone7245742012-09-05 17:12:55 -07009639 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
9640 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009641 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009642 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
9643 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
9644 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009645
9646 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009647 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009648 }
Jeff Johnsone7245742012-09-05 17:12:55 -07009649
Jeff Johnson295189b2012-06-20 16:38:30 -07009650 /*------------------------------------------------------------------------
9651 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009652 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009653 ------------------------------------------------------------------------*/
9654 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9655 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009656 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9657 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
9658 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009659
Jeff Johnsone7245742012-09-05 17:12:55 -07009660 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009661 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009662 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009663 }
9664
9665
9666
9667 wpalMutexRelease(&pWDICtx->wptMutex);
9668 /*-----------------------------------------------------------------------
9669 Get message buffer
9670 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009671 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_RMV_STA_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009672 sizeof(halRemoveStaKeyReqMsg.removeStaKeyParams),
9673 &pSendBuffer, &usDataOffset, &usSendSize))||
9674 ( usSendSize < (usDataOffset + sizeof(halRemoveStaKeyReqMsg.removeStaKeyParams) )))
9675 {
9676 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009677 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07009678 pEventData, pwdiRemoveSTAKeyParams, wdiRemoveSTAKeyRspCb);
9679 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009680 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009681 }
9682
9683 /*-----------------------------------------------------------------------
9684 Copy the Key parameters into the HAL message
9685 -----------------------------------------------------------------------*/
9686
Jeff Johnsone7245742012-09-05 17:12:55 -07009687 halRemoveStaKeyReqMsg.removeStaKeyParams.staIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -07009688 pwdiRemoveSTAKeyParams->wdiKeyInfo.ucSTAIdx;
9689
Jeff Johnsone7245742012-09-05 17:12:55 -07009690 halRemoveStaKeyReqMsg.removeStaKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -07009691 WDI_2_HAL_ENC_TYPE (pwdiRemoveSTAKeyParams->wdiKeyInfo.wdiEncType);
9692
Jeff Johnsone7245742012-09-05 17:12:55 -07009693 halRemoveStaKeyReqMsg.removeStaKeyParams.keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -07009694 pwdiRemoveSTAKeyParams->wdiKeyInfo.ucKeyId;
9695
Jeff Johnsone7245742012-09-05 17:12:55 -07009696 halRemoveStaKeyReqMsg.removeStaKeyParams.unicast =
Jeff Johnson295189b2012-06-20 16:38:30 -07009697 pwdiRemoveSTAKeyParams->wdiKeyInfo.ucUnicast;
9698
Jeff Johnsone7245742012-09-05 17:12:55 -07009699 wpalMemoryCopy( pSendBuffer+usDataOffset,
9700 &halRemoveStaKeyReqMsg.removeStaKeyParams,
9701 sizeof(halRemoveStaKeyReqMsg.removeStaKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07009702
9703 pWDICtx->wdiReqStatusCB = pwdiRemoveSTAKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009704 pWDICtx->pReqStatusUserData = pwdiRemoveSTAKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009705
9706 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009707 Send Remove STA Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009708 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009709 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07009710 wdiRemoveSTAKeyRspCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -07009711 WDI_RMV_STA_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009712
9713}/*WDI_ProcessRemoveSTAKeyReq*/
9714
9715/**
Jeff Johnsone7245742012-09-05 17:12:55 -07009716 @brief Process Set STA KeyRequest function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07009717 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009718
9719 @param pWDICtx: pointer to the WLAN DAL context
9720 pEventData: pointer to the event information structure
9721
Jeff Johnson295189b2012-06-20 16:38:30 -07009722 @see
9723 @return Result of the function call
9724*/
9725WDI_Status
9726WDI_ProcessSetStaBcastKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009727(
Jeff Johnson295189b2012-06-20 16:38:30 -07009728 WDI_ControlBlockType* pWDICtx,
9729 WDI_EventInfoType* pEventData
9730)
9731{
9732 WDI_SetSTAKeyReqParamsType* pwdiSetSTAKeyParams;
9733 WDI_SetSTAKeyRspCb wdiSetSTAKeyRspCb;
9734 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009735 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009736 wpt_uint16 usDataOffset = 0;
9737 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009738 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07009739 wpt_macAddr macBSSID;
Jeff Johnsone7245742012-09-05 17:12:55 -07009740 wpt_uint8 ucCurrentBSSSesIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -07009741 tSetStaKeyReqMsg halSetStaKeyReqMsg = {{0}};
9742 wpt_uint8 keyIndex = 0;
Srinivas Dasari9b57b112014-11-27 12:25:23 +05309743 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -07009744
9745 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9746
9747 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009748 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009749 -------------------------------------------------------------------------*/
9750 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9751 ( NULL == pEventData->pCBfnc ))
9752 {
9753 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009754 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009755 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009756 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009757 }
9758
9759 pwdiSetSTAKeyParams = (WDI_SetSTAKeyReqParamsType*)pEventData->pEventData;
9760 wdiSetSTAKeyRspCb = (WDI_SetSTAKeyRspCb)pEventData->pCBfnc;
9761 /*-------------------------------------------------------------------------
9762 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009763 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009764 -------------------------------------------------------------------------*/
9765 wpalMutexAcquire(&pWDICtx->wptMutex);
9766
9767 /*------------------------------------------------------------------------
9768 Find the BSS for which the request is made and identify WDI session
9769 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009770 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
9771 pwdiSetSTAKeyParams->wdiKeyInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07009772 &macBSSID))
9773 {
9774 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009775 "This station does not exist in the WDI Station Table %d",
9776 pwdiSetSTAKeyParams->wdiKeyInfo.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07009777 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009778 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009779 }
9780
Jeff Johnsone7245742012-09-05 17:12:55 -07009781 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
9782 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009783 {
9784 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009785 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
Jeff Johnsone7245742012-09-05 17:12:55 -07009786 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009787
9788 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009789 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009790 }
Jeff Johnsone7245742012-09-05 17:12:55 -07009791
Jeff Johnson295189b2012-06-20 16:38:30 -07009792 /*------------------------------------------------------------------------
9793 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009794 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009795 ------------------------------------------------------------------------*/
9796 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9797 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009798 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9799 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
9800 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009801
Jeff Johnsone7245742012-09-05 17:12:55 -07009802 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009803 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009804 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009805 }
9806
9807
9808 wpalMutexRelease(&pWDICtx->wptMutex);
9809 /*-----------------------------------------------------------------------
9810 Get message buffer
9811 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009812 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_STA_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009813 sizeof(halSetStaKeyReqMsg.setStaKeyParams),
9814 &pSendBuffer, &usDataOffset, &usSendSize))||
9815 ( usSendSize < (usDataOffset + sizeof(halSetStaKeyReqMsg.setStaKeyParams) )))
9816 {
9817 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009818 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07009819 pEventData, pwdiSetSTAKeyParams, wdiSetSTAKeyRspCb);
9820 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009821 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009822 }
9823 /*-----------------------------------------------------------------------
9824 Copy the STA Key parameters into the HAL message
9825 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009826 halSetStaKeyReqMsg.setStaKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -07009827 WDI_2_HAL_ENC_TYPE (pwdiSetSTAKeyParams->wdiKeyInfo.wdiEncType);
9828
Jeff Johnsone7245742012-09-05 17:12:55 -07009829 halSetStaKeyReqMsg.setStaKeyParams.wepType =
Jeff Johnson295189b2012-06-20 16:38:30 -07009830 WDI_2_HAL_WEP_TYPE (pwdiSetSTAKeyParams->wdiKeyInfo.wdiWEPType );
9831
9832 halSetStaKeyReqMsg.setStaKeyParams.staIdx = pwdiSetSTAKeyParams->wdiKeyInfo.ucSTAIdx;
9833
9834 halSetStaKeyReqMsg.setStaKeyParams.defWEPIdx = pwdiSetSTAKeyParams->wdiKeyInfo.ucDefWEPIdx;
9835
9836 halSetStaKeyReqMsg.setStaKeyParams.singleTidRc = pwdiSetSTAKeyParams->wdiKeyInfo.ucSingleTidRc;
9837
Jeff Johnson295189b2012-06-20 16:38:30 -07009838 for(keyIndex = 0; keyIndex < pwdiSetSTAKeyParams->wdiKeyInfo.ucNumKeys ;
9839 keyIndex++)
9840 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009841 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -07009842 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyId;
9843 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].unicast =
9844 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].unicast;
9845 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyDirection =
9846 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyDirection;
Srinivas Dasari9b57b112014-11-27 12:25:23 +05309847
9848 if(WDI_getHostWlanFeatCaps(DISA) && WDI_getFwWlanFeatCaps(DISA))
9849 {
9850 for (i = 0; i < WDI_MAX_KEY_RSC_LEN; i++)
9851 {
9852 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyRsc[i] =
9853 ~(pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyRsc[i]);
9854 }
9855
9856 for (i = 0; i< WDI_MAX_KEY_LENGTH; i++)
9857 {
9858 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].key[i] =
9859 ~(pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].key[i]);
9860 }
9861
9862 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
9863 "%s: Negated Keys", __func__);
9864 }
9865 else
9866 {
9867 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
9868 "%s: No change in Keys", __func__);
9869 wpalMemoryCopy(halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyRsc,
Jeff Johnsone7245742012-09-05 17:12:55 -07009870 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyRsc,
Jeff Johnson295189b2012-06-20 16:38:30 -07009871 WDI_MAX_KEY_RSC_LEN);
Srinivas Dasari9b57b112014-11-27 12:25:23 +05309872 wpalMemoryCopy(halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].key,
9873 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].key,
9874 WDI_MAX_KEY_LENGTH);
9875 }
Jeff Johnsone7245742012-09-05 17:12:55 -07009876 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].paeRole =
Jeff Johnson295189b2012-06-20 16:38:30 -07009877 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].paeRole;
Jeff Johnsone7245742012-09-05 17:12:55 -07009878 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07009879 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyLength;
Srinivas Dasari9b57b112014-11-27 12:25:23 +05309880 }
Jeff Johnsone7245742012-09-05 17:12:55 -07009881 wpalMemoryCopy( pSendBuffer+usDataOffset,
9882 &halSetStaKeyReqMsg.setStaKeyParams,
9883 sizeof(halSetStaKeyReqMsg.setStaKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07009884
9885 pWDICtx->wdiReqStatusCB = pwdiSetSTAKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009886 pWDICtx->pReqStatusUserData = pwdiSetSTAKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009887
9888 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009889 Send Set STA Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009890 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009891 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
9892 wdiSetSTAKeyRspCb, pEventData->pUserData,
9893 WDI_SET_STA_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009894
9895}/*WDI_ProcessSetSTABcastKeyReq*/
9896
9897/**
Jeff Johnsone7245742012-09-05 17:12:55 -07009898 @brief Process Remove STA Key Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -07009899 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009900
9901 @param pWDICtx: pointer to the WLAN DAL context
9902 pEventData: pointer to the event information structure
9903
Jeff Johnson295189b2012-06-20 16:38:30 -07009904 @see
9905 @return Result of the function call
9906*/
9907WDI_Status
9908WDI_ProcessRemoveStaBcastKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009909(
Jeff Johnson295189b2012-06-20 16:38:30 -07009910 WDI_ControlBlockType* pWDICtx,
9911 WDI_EventInfoType* pEventData
9912)
9913{
9914 WDI_RemoveSTAKeyReqParamsType* pwdiRemoveSTABcastKeyParams;
9915 WDI_RemoveSTAKeyRspCb wdiRemoveSTAKeyRspCb;
9916 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009917 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009918 wpt_uint16 usDataOffset = 0;
9919 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009920 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07009921 wpt_macAddr macBSSID;
9922 wpt_uint8 ucCurrentBSSSesIdx;
9923 tRemoveStaKeyReqMsg halRemoveStaBcastKeyReqMsg = {{0}};
9924 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9925
9926 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009927 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009928 -------------------------------------------------------------------------*/
9929 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9930 ( NULL == pEventData->pCBfnc ))
9931 {
9932 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009933 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009934 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009935 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009936 }
9937
9938 pwdiRemoveSTABcastKeyParams = (WDI_RemoveSTAKeyReqParamsType*)pEventData->pEventData;
9939 wdiRemoveSTAKeyRspCb = (WDI_RemoveSTAKeyRspCb)pEventData->pCBfnc;
9940 /*-------------------------------------------------------------------------
9941 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009942 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009943 -------------------------------------------------------------------------*/
9944 wpalMutexAcquire(&pWDICtx->wptMutex);
9945
9946 /*------------------------------------------------------------------------
9947 Find the BSS for which the request is made and identify WDI session
9948 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009949 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
9950 pwdiRemoveSTABcastKeyParams->wdiKeyInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07009951 &macBSSID))
9952 {
9953 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009954 "This station does not exist in the WDI Station Table %d",
9955 pwdiRemoveSTABcastKeyParams->wdiKeyInfo.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07009956 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009957 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009958 }
9959
Jeff Johnsone7245742012-09-05 17:12:55 -07009960 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
9961 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009962 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009963 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
9964 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
9965 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009966
9967 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009968 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009969 }
Jeff Johnsone7245742012-09-05 17:12:55 -07009970
Jeff Johnson295189b2012-06-20 16:38:30 -07009971 /*------------------------------------------------------------------------
9972 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009973 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009974 ------------------------------------------------------------------------*/
9975 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9976 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009977 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9978 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
9979 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009980
Jeff Johnsone7245742012-09-05 17:12:55 -07009981 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009982 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009983 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009984 }
9985
9986
9987
9988 wpalMutexRelease(&pWDICtx->wptMutex);
9989 /*-----------------------------------------------------------------------
9990 Get message buffer
9991 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009992 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_RMV_STA_BCAST_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009993 sizeof(halRemoveStaBcastKeyReqMsg.removeStaKeyParams),
9994 &pSendBuffer, &usDataOffset, &usSendSize))||
9995 ( usSendSize < (usDataOffset + sizeof(halRemoveStaBcastKeyReqMsg.removeStaKeyParams) )))
9996 {
9997 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009998 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07009999 pEventData, pwdiRemoveSTABcastKeyParams, wdiRemoveSTAKeyRspCb);
10000 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010001 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010002 }
10003
10004 /*-----------------------------------------------------------------------
10005 Copy the Key parameters into the HAL message
10006 -----------------------------------------------------------------------*/
10007
Jeff Johnsone7245742012-09-05 17:12:55 -070010008 halRemoveStaBcastKeyReqMsg.removeStaKeyParams.staIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070010009 pwdiRemoveSTABcastKeyParams->wdiKeyInfo.ucSTAIdx;
10010
Jeff Johnsone7245742012-09-05 17:12:55 -070010011 halRemoveStaBcastKeyReqMsg.removeStaKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -070010012 WDI_2_HAL_ENC_TYPE (pwdiRemoveSTABcastKeyParams->wdiKeyInfo.wdiEncType);
10013
Jeff Johnsone7245742012-09-05 17:12:55 -070010014 halRemoveStaBcastKeyReqMsg.removeStaKeyParams.keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -070010015 pwdiRemoveSTABcastKeyParams->wdiKeyInfo.ucKeyId;
10016
Jeff Johnsone7245742012-09-05 17:12:55 -070010017 halRemoveStaBcastKeyReqMsg.removeStaKeyParams.unicast =
Jeff Johnson295189b2012-06-20 16:38:30 -070010018 pwdiRemoveSTABcastKeyParams->wdiKeyInfo.ucUnicast;
10019
Jeff Johnsone7245742012-09-05 17:12:55 -070010020 wpalMemoryCopy( pSendBuffer+usDataOffset,
10021 &halRemoveStaBcastKeyReqMsg.removeStaKeyParams,
10022 sizeof(halRemoveStaBcastKeyReqMsg.removeStaKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070010023
10024 pWDICtx->wdiReqStatusCB = pwdiRemoveSTABcastKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010025 pWDICtx->pReqStatusUserData = pwdiRemoveSTABcastKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010026
10027 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010028 Send Remove STA Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010029 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010030 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070010031 wdiRemoveSTAKeyRspCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -070010032 WDI_RMV_STA_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010033
10034}/*WDI_ProcessRemoveSTABcastKeyReq*/
10035
10036/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070010037 QOS and BA PROCESSING REQUEST API
Jeff Johnson295189b2012-06-20 16:38:30 -070010038==========================================================================*/
10039/**
10040 @brief Process Add TSpec Request function (called when Main FSM
10041 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010042
10043 @param pWDICtx: pointer to the WLAN DAL context
10044 pEventData: pointer to the event information structure
10045
Jeff Johnson295189b2012-06-20 16:38:30 -070010046 @see
10047 @return Result of the function call
10048*/
10049WDI_Status
10050WDI_ProcessAddTSpecReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010051(
Jeff Johnson295189b2012-06-20 16:38:30 -070010052 WDI_ControlBlockType* pWDICtx,
10053 WDI_EventInfoType* pEventData
10054)
10055{
10056 WDI_AddTSReqParamsType* pwdiAddTSParams;
10057 WDI_AddTsRspCb wdiAddTSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010058 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070010059 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070010060 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010061 wpt_uint16 usDataOffset = 0;
10062 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070010063 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070010064 wpt_macAddr macBSSID;
10065 tAddTsParams halAddTsParams = {0};
Jeff Johnsone7245742012-09-05 17:12:55 -070010066
Jeff Johnson295189b2012-06-20 16:38:30 -070010067 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10068
10069 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010070 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010071 -------------------------------------------------------------------------*/
10072 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10073 ( NULL == pEventData->pCBfnc ))
10074 {
10075 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010076 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010077 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010078 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010079 }
10080
10081 pwdiAddTSParams = (WDI_AddTSReqParamsType*)pEventData->pEventData;
10082 wdiAddTSRspCb = (WDI_AddTsRspCb)pEventData->pCBfnc;
10083 /*-------------------------------------------------------------------------
10084 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070010085 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070010086 -------------------------------------------------------------------------*/
10087 wpalMutexAcquire(&pWDICtx->wptMutex);
10088
10089 /*------------------------------------------------------------------------
10090 Find the BSS for which the request is made and identify WDI session
10091 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010092 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
10093 pwdiAddTSParams->wdiTsInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070010094 &macBSSID))
10095 {
10096 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010097 "This station does not exist in the WDI Station Table %d",
10098 pwdiAddTSParams->wdiTsInfo.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070010099 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010100 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010101 }
10102
Jeff Johnsone7245742012-09-05 17:12:55 -070010103 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
10104 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070010105 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010106 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
10107 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
10108 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010109
10110 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010111 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070010112 }
Jeff Johnsone7245742012-09-05 17:12:55 -070010113
Jeff Johnson295189b2012-06-20 16:38:30 -070010114 /*------------------------------------------------------------------------
10115 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070010116 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070010117 ------------------------------------------------------------------------*/
10118 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
10119 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010120 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10121 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
10122 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010123
Jeff Johnsone7245742012-09-05 17:12:55 -070010124 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070010125 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010126 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070010127 }
10128
10129 wpalMutexRelease(&pWDICtx->wptMutex);
10130 /*-----------------------------------------------------------------------
10131 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070010132 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070010133 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010134 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ADD_TS_REQ,
10135 sizeof(halAddTsParams),
10136 &pSendBuffer, &usDataOffset,
Jeff Johnson295189b2012-06-20 16:38:30 -070010137 &usSendSize))||
10138 ( usSendSize < (usDataOffset + sizeof(halAddTsParams) )))
10139 {
10140 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010141 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070010142 pEventData, pwdiAddTSParams, wdiAddTSRspCb);
10143 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010144 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010145 }
10146
10147 halAddTsParams.staIdx = pwdiAddTSParams->wdiTsInfo.ucSTAIdx;
10148 halAddTsParams.tspecIdx = pwdiAddTSParams->wdiTsInfo.ucTspecIdx;
10149
10150 //TSPEC IE
10151 halAddTsParams.tspec.type = pwdiAddTSParams->wdiTsInfo.wdiTspecIE.ucType;
10152 halAddTsParams.tspec.length = pwdiAddTSParams->wdiTsInfo.wdiTspecIE.ucLength;
Jeff Johnsone7245742012-09-05 17:12:55 -070010153 halAddTsParams.tspec.nomMsduSz =
Jeff Johnson295189b2012-06-20 16:38:30 -070010154 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.usNomMsduSz;
Jeff Johnsone7245742012-09-05 17:12:55 -070010155 halAddTsParams.tspec.maxMsduSz =
Jeff Johnson295189b2012-06-20 16:38:30 -070010156 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.usMaxMsduSz;
Jeff Johnsone7245742012-09-05 17:12:55 -070010157 halAddTsParams.tspec.minSvcInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070010158 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMinSvcInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070010159 halAddTsParams.tspec.maxSvcInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070010160 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMaxSvcInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070010161 halAddTsParams.tspec.inactInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070010162 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uInactInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070010163 halAddTsParams.tspec.suspendInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070010164 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uSuspendInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070010165 halAddTsParams.tspec.svcStartTime =
Jeff Johnson295189b2012-06-20 16:38:30 -070010166 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uSvcStartTime;
Jeff Johnsone7245742012-09-05 17:12:55 -070010167 halAddTsParams.tspec.minDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070010168 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMinDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070010169 halAddTsParams.tspec.meanDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070010170 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMeanDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070010171 halAddTsParams.tspec.peakDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070010172 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uPeakDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070010173 halAddTsParams.tspec.maxBurstSz =
Jeff Johnson295189b2012-06-20 16:38:30 -070010174 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMaxBurstSz;
Jeff Johnsone7245742012-09-05 17:12:55 -070010175 halAddTsParams.tspec.delayBound =
Jeff Johnson295189b2012-06-20 16:38:30 -070010176 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uDelayBound;
Jeff Johnsone7245742012-09-05 17:12:55 -070010177 halAddTsParams.tspec.minPhyRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070010178 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMinPhyRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070010179 halAddTsParams.tspec.surplusBw =
Jeff Johnson295189b2012-06-20 16:38:30 -070010180 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.usSurplusBw;
Jeff Johnsone7245742012-09-05 17:12:55 -070010181 halAddTsParams.tspec.mediumTime =
Jeff Johnson295189b2012-06-20 16:38:30 -070010182 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.usMediumTime;
10183
10184 //TSPEC IE : TS INFO : TRAFFIC
Jeff Johnsone7245742012-09-05 17:12:55 -070010185 halAddTsParams.tspec.tsinfo.traffic.ackPolicy =
Jeff Johnson295189b2012-06-20 16:38:30 -070010186 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.accessPolicy;
Jeff Johnsone7245742012-09-05 17:12:55 -070010187 halAddTsParams.tspec.tsinfo.traffic.userPrio =
Jeff Johnson295189b2012-06-20 16:38:30 -070010188 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.userPrio;
Jeff Johnsone7245742012-09-05 17:12:55 -070010189 halAddTsParams.tspec.tsinfo.traffic.psb =
Jeff Johnson295189b2012-06-20 16:38:30 -070010190 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.psb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010191 halAddTsParams.tspec.tsinfo.traffic.aggregation =
Jeff Johnson295189b2012-06-20 16:38:30 -070010192 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.aggregation;
Jeff Johnsone7245742012-09-05 17:12:55 -070010193 halAddTsParams.tspec.tsinfo.traffic.direction =
Jeff Johnson295189b2012-06-20 16:38:30 -070010194 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.direction;
Jeff Johnsone7245742012-09-05 17:12:55 -070010195 halAddTsParams.tspec.tsinfo.traffic.tsid =
Jeff Johnson295189b2012-06-20 16:38:30 -070010196 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.tsid;
Jeff Johnsone7245742012-09-05 17:12:55 -070010197 halAddTsParams.tspec.tsinfo.traffic.trafficType =
Jeff Johnson295189b2012-06-20 16:38:30 -070010198 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.trafficType;
10199
10200 //TSPEC IE : TS INFO : SCHEDULE
Jeff Johnsone7245742012-09-05 17:12:55 -070010201 halAddTsParams.tspec.tsinfo.schedule.rsvd =
Jeff Johnson295189b2012-06-20 16:38:30 -070010202 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiSchedule.rsvd;
Jeff Johnsone7245742012-09-05 17:12:55 -070010203 halAddTsParams.tspec.tsinfo.schedule.schedule =
Jeff Johnson295189b2012-06-20 16:38:30 -070010204 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiSchedule.schedule;
10205
Jeff Johnsone7245742012-09-05 17:12:55 -070010206 wpalMemoryCopy( pSendBuffer+usDataOffset,
10207 &halAddTsParams,
10208 sizeof(halAddTsParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070010209
10210 pWDICtx->wdiReqStatusCB = pwdiAddTSParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010211 pWDICtx->pReqStatusUserData = pwdiAddTSParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010212
10213 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010214 Send Add TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010215 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010216 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070010217 wdiAddTSRspCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -070010218 WDI_ADD_TS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010219}/*WDI_ProcessAddTSpecReq*/
10220
10221
10222/**
10223 @brief Process Del TSpec Request function (called when Main FSM
10224 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010225
10226 @param pWDICtx: pointer to the WLAN DAL context
10227 pEventData: pointer to the event information structure
10228
Jeff Johnson295189b2012-06-20 16:38:30 -070010229 @see
10230 @return Result of the function call
10231*/
10232WDI_Status
10233WDI_ProcessDelTSpecReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010234(
Jeff Johnson295189b2012-06-20 16:38:30 -070010235 WDI_ControlBlockType* pWDICtx,
10236 WDI_EventInfoType* pEventData
10237)
10238{
10239 WDI_DelTSReqParamsType* pwdiDelTSParams;
10240 WDI_DelTsRspCb wdiDelTSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010241 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070010242 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070010243 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010244 wpt_uint16 usDataOffset = 0;
10245 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070010246 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070010247 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10248
10249 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010250 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010251 -------------------------------------------------------------------------*/
10252 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10253 ( NULL == pEventData->pCBfnc ))
10254 {
10255 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010256 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010257 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010258 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010259 }
10260
10261 pwdiDelTSParams = (WDI_DelTSReqParamsType*)pEventData->pEventData;
10262 wdiDelTSRspCb = (WDI_DelTsRspCb)pEventData->pCBfnc;
10263
10264 /*-------------------------------------------------------------------------
10265 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070010266 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070010267 -------------------------------------------------------------------------*/
10268 wpalMutexAcquire(&pWDICtx->wptMutex);
10269
10270 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010271 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070010272 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010273 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
10274 pwdiDelTSParams->wdiDelTSInfo.macBSSID,
10275 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070010276
Jeff Johnsone7245742012-09-05 17:12:55 -070010277 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070010278 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010279 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
10280 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
10281 __func__, MAC_ADDR_ARRAY(pwdiDelTSParams->wdiDelTSInfo.macBSSID));
10282
Jeff Johnson295189b2012-06-20 16:38:30 -070010283 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010284 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070010285 }
10286
10287 /*------------------------------------------------------------------------
10288 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070010289 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070010290 ------------------------------------------------------------------------*/
10291 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
10292 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010293 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10294 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
10295 __func__, MAC_ADDR_ARRAY(pwdiDelTSParams->wdiDelTSInfo.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010296
Jeff Johnsone7245742012-09-05 17:12:55 -070010297 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070010298 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010299 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070010300 }
10301
10302
10303 wpalMutexRelease(&pWDICtx->wptMutex);
10304 /*-----------------------------------------------------------------------
10305 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070010306 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070010307 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010308 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_DEL_TS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010309 sizeof(pwdiDelTSParams->wdiDelTSInfo),
10310 &pSendBuffer, &usDataOffset, &usSendSize))||
10311 ( usSendSize < (usDataOffset + sizeof(pwdiDelTSParams->wdiDelTSInfo) )))
10312 {
10313 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010314 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070010315 pEventData, pwdiDelTSParams, wdiDelTSRspCb);
10316 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010317 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010318 }
10319
Jeff Johnsone7245742012-09-05 17:12:55 -070010320 wpalMemoryCopy( pSendBuffer+usDataOffset,
10321 &pwdiDelTSParams->wdiDelTSInfo,
10322 sizeof(pwdiDelTSParams->wdiDelTSInfo));
Jeff Johnson295189b2012-06-20 16:38:30 -070010323
10324 pWDICtx->wdiReqStatusCB = pwdiDelTSParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010325 pWDICtx->pReqStatusUserData = pwdiDelTSParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010326
10327 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010328 Send Del TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010329 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010330 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10331 wdiDelTSRspCb, pEventData->pUserData, WDI_DEL_TS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010332}/*WDI_ProcessDelTSpecReq*/
10333
10334/**
10335 @brief Process Update EDCA Params Request function (called when
10336 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010337
10338 @param pWDICtx: pointer to the WLAN DAL context
10339 pEventData: pointer to the event information structure
10340
Jeff Johnson295189b2012-06-20 16:38:30 -070010341 @see
10342 @return Result of the function call
10343*/
10344WDI_Status
10345WDI_ProcessUpdateEDCAParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010346(
Jeff Johnson295189b2012-06-20 16:38:30 -070010347 WDI_ControlBlockType* pWDICtx,
10348 WDI_EventInfoType* pEventData
10349)
10350{
10351 WDI_UpdateEDCAParamsType* pwdiUpdateEDCAParams;
10352 WDI_UpdateEDCAParamsRspCb wdiUpdateEDCARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010353 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070010354 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070010355 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010356 wpt_uint16 usDataOffset = 0;
10357 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070010358 WDI_Status wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070010359 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10360
10361 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010362 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010363 -------------------------------------------------------------------------*/
10364 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10365 ( NULL == pEventData->pCBfnc ))
10366 {
10367 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010368 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010369 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010370 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010371 }
10372
10373 pwdiUpdateEDCAParams = (WDI_UpdateEDCAParamsType*)pEventData->pEventData;
10374 wdiUpdateEDCARspCb = (WDI_UpdateEDCAParamsRspCb)pEventData->pCBfnc;
10375 /*-------------------------------------------------------------------------
10376 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070010377 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070010378 -------------------------------------------------------------------------*/
10379 wpalMutexAcquire(&pWDICtx->wptMutex);
10380
10381 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010382 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070010383 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010384 ucCurrentBSSSesIdx = WDI_FindAssocSessionByBSSIdx( pWDICtx,
10385 pwdiUpdateEDCAParams->wdiEDCAInfo.ucBssIdx,
10386 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070010387
Jeff Johnsone7245742012-09-05 17:12:55 -070010388 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070010389 {
10390 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070010391 "%s: Association sequence for this BSS does not yet exist. ucBssIdx %d",
10392 __func__, pwdiUpdateEDCAParams->wdiEDCAInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070010393
10394 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010395 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070010396 }
10397
10398 /*------------------------------------------------------------------------
10399 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070010400 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070010401 ------------------------------------------------------------------------*/
10402 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
10403 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010404 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10405 "%s: Association sequence for this BSS exists but currently queued. ucBssIdx %d",
10406 __func__, pwdiUpdateEDCAParams->wdiEDCAInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070010407
Jeff Johnsone7245742012-09-05 17:12:55 -070010408 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070010409 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010410 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070010411 }
10412
10413
10414 wpalMutexRelease(&pWDICtx->wptMutex);
10415 /*-----------------------------------------------------------------------
10416 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070010417 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070010418 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010419 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPD_EDCA_PRMS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010420 sizeof(pwdiUpdateEDCAParams->wdiEDCAInfo),
10421 &pSendBuffer, &usDataOffset, &usSendSize))||
10422 ( usSendSize < (usDataOffset + sizeof(pwdiUpdateEDCAParams->wdiEDCAInfo) )))
10423 {
10424 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010425 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070010426 pEventData, pwdiUpdateEDCAParams, wdiUpdateEDCARspCb);
10427 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010428 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010429 }
10430
Jeff Johnsone7245742012-09-05 17:12:55 -070010431 wpalMemoryCopy( pSendBuffer+usDataOffset,
10432 &pwdiUpdateEDCAParams->wdiEDCAInfo,
10433 sizeof(pwdiUpdateEDCAParams->wdiEDCAInfo));
Jeff Johnson295189b2012-06-20 16:38:30 -070010434
10435 pWDICtx->wdiReqStatusCB = pwdiUpdateEDCAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010436 pWDICtx->pReqStatusUserData = pwdiUpdateEDCAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010437
10438 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010439 Send Update EDCA Params Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010440 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010441 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10442 wdiUpdateEDCARspCb, pEventData->pUserData,
10443 WDI_UPD_EDCA_PRMS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010444}/*WDI_ProcessUpdateEDCAParamsReq*/
10445
10446/**
Jeff Johnsone7245742012-09-05 17:12:55 -070010447 @brief Process Add BA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070010448 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010449
10450 @param pWDICtx: pointer to the WLAN DAL context
10451 pEventData: pointer to the event information structure
10452
Jeff Johnson295189b2012-06-20 16:38:30 -070010453 @see
10454 @return Result of the function call
10455*/
10456WDI_Status
10457WDI_ProcessAddBASessionReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010458(
Jeff Johnson295189b2012-06-20 16:38:30 -070010459 WDI_ControlBlockType* pWDICtx,
10460 WDI_EventInfoType* pEventData
10461)
10462{
10463 WDI_AddBASessionReqParamsType* pwdiAddBASessionParams;
10464 WDI_AddBASessionRspCb wdiAddBASessionRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010465 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070010466 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070010467 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010468 wpt_uint16 usDataOffset = 0;
10469 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070010470 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070010471 wpt_macAddr macBSSID;
10472
10473 tAddBASessionReqMsg halAddBASessionReq;
10474 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10475
10476 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010477 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010478 -------------------------------------------------------------------------*/
10479 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10480 ( NULL == pEventData->pCBfnc ))
10481 {
10482 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010483 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010484 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010485 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010486 }
10487
Jeff Johnsone7245742012-09-05 17:12:55 -070010488 pwdiAddBASessionParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070010489 (WDI_AddBASessionReqParamsType*)pEventData->pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070010490 wdiAddBASessionRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070010491 (WDI_AddBASessionRspCb)pEventData->pCBfnc;
10492 /*-------------------------------------------------------------------------
10493 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070010494 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070010495 -------------------------------------------------------------------------*/
10496 wpalMutexAcquire(&pWDICtx->wptMutex);
10497
10498 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010499 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070010500 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010501 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
10502 pwdiAddBASessionParams->wdiBASessionInfoType.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070010503 &macBSSID))
10504 {
10505 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010506 "This station does not exist in the WDI Station Table %d",
10507 pwdiAddBASessionParams->wdiBASessionInfoType.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070010508 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010509 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010510 }
10511
10512
Jeff Johnsone7245742012-09-05 17:12:55 -070010513 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070010514
Jeff Johnsone7245742012-09-05 17:12:55 -070010515 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070010516 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010517 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
10518 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
10519 __func__, MAC_ADDR_ARRAY(macBSSID));
10520
Jeff Johnson295189b2012-06-20 16:38:30 -070010521 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010522 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070010523 }
10524
10525 /*------------------------------------------------------------------------
10526 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070010527 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070010528 ------------------------------------------------------------------------*/
10529 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
10530 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010531 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10532 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
10533 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010534
Jeff Johnsone7245742012-09-05 17:12:55 -070010535 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070010536 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010537 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070010538 }
10539
10540
10541 wpalMutexRelease(&pWDICtx->wptMutex);
10542 /*-----------------------------------------------------------------------
10543 Get message buffer
10544 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010545 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
10546 WDI_ADD_BA_SESSION_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010547 sizeof(halAddBASessionReq.addBASessionParams),
10548 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070010549 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070010550 (usDataOffset + sizeof(halAddBASessionReq.addBASessionParams) )))
10551 {
10552 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010553 "Unable to get send buffer in Add BA session req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070010554 pEventData, pwdiAddBASessionParams, wdiAddBASessionRspCb);
10555 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010556 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010557 }
10558
10559 halAddBASessionReq.addBASessionParams.staIdx =
10560 pwdiAddBASessionParams->wdiBASessionInfoType.ucSTAIdx;
10561 wpalMemoryCopy(halAddBASessionReq.addBASessionParams.peerMacAddr,
10562 pwdiAddBASessionParams->wdiBASessionInfoType.macPeerAddr,
10563 WDI_MAC_ADDR_LEN);
10564 halAddBASessionReq.addBASessionParams.baTID =
10565 pwdiAddBASessionParams->wdiBASessionInfoType.ucBaTID;
10566 halAddBASessionReq.addBASessionParams.baPolicy =
10567 pwdiAddBASessionParams->wdiBASessionInfoType.ucBaPolicy;
10568 halAddBASessionReq.addBASessionParams.baBufferSize =
10569 pwdiAddBASessionParams->wdiBASessionInfoType.usBaBufferSize;
10570 halAddBASessionReq.addBASessionParams.baTimeout =
10571 pwdiAddBASessionParams->wdiBASessionInfoType.usBaTimeout;
10572 halAddBASessionReq.addBASessionParams.baSSN =
10573 pwdiAddBASessionParams->wdiBASessionInfoType.usBaSSN;
10574 halAddBASessionReq.addBASessionParams.baDirection =
10575 pwdiAddBASessionParams->wdiBASessionInfoType.ucBaDirection;
10576
Jeff Johnsone7245742012-09-05 17:12:55 -070010577 wpalMemoryCopy( pSendBuffer+usDataOffset,
10578 &halAddBASessionReq.addBASessionParams,
10579 sizeof(halAddBASessionReq.addBASessionParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070010580
10581 pWDICtx->wdiReqStatusCB = pwdiAddBASessionParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010582 pWDICtx->pReqStatusUserData = pwdiAddBASessionParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010583
10584 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010585 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010586 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010587 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10588 wdiAddBASessionRspCb, pEventData->pUserData,
10589 WDI_ADD_BA_SESSION_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010590}/*WDI_ProcessAddBASessionReq*/
10591
10592/**
Jeff Johnsone7245742012-09-05 17:12:55 -070010593 @brief Process Del BA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070010594 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010595
10596 @param pWDICtx: pointer to the WLAN DAL context
10597 pEventData: pointer to the event information structure
10598
Jeff Johnson295189b2012-06-20 16:38:30 -070010599 @see
10600 @return Result of the function call
10601*/
10602WDI_Status
10603WDI_ProcessDelBAReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010604(
Jeff Johnson295189b2012-06-20 16:38:30 -070010605 WDI_ControlBlockType* pWDICtx,
10606 WDI_EventInfoType* pEventData
10607)
10608{
10609 WDI_DelBAReqParamsType* pwdiDelBAParams;
10610 WDI_DelBARspCb wdiDelBARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010611 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070010612 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070010613 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010614 wpt_uint16 usDataOffset = 0;
10615 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070010616 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070010617 wpt_macAddr macBSSID;
10618 tDelBAParams halDelBAparam;
10619 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10620
10621 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010622 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010623 -------------------------------------------------------------------------*/
10624 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10625 ( NULL == pEventData->pCBfnc ))
10626 {
10627 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010628 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010629 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010630 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010631 }
10632
10633 pwdiDelBAParams = (WDI_DelBAReqParamsType*)pEventData->pEventData;
10634 wdiDelBARspCb = (WDI_DelBARspCb)pEventData->pCBfnc;
10635 /*-------------------------------------------------------------------------
10636 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070010637 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070010638 -------------------------------------------------------------------------*/
10639 wpalMutexAcquire(&pWDICtx->wptMutex);
10640
10641 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010642 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070010643 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010644 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
10645 pwdiDelBAParams->wdiBAInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070010646 &macBSSID))
10647 {
10648 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010649 "This station does not exist in the WDI Station Table %d",
10650 pwdiDelBAParams->wdiBAInfo.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070010651 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010652 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010653 }
10654
Jeff Johnsone7245742012-09-05 17:12:55 -070010655 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070010656
Jeff Johnsone7245742012-09-05 17:12:55 -070010657 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070010658 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010659 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
10660 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
10661 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010662
10663 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010664 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070010665 }
10666
10667 /*------------------------------------------------------------------------
10668 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070010669 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070010670 ------------------------------------------------------------------------*/
10671 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
10672 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010673 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10674 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
10675 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010676
Jeff Johnsone7245742012-09-05 17:12:55 -070010677 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070010678 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010679 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070010680 }
10681
10682 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010683 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_DEL_BA_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010684 sizeof(halDelBAparam),
10685 &pSendBuffer, &usDataOffset, &usSendSize))||
10686 ( usSendSize < (usDataOffset + sizeof(halDelBAparam) )))
10687 {
10688 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010689 "Unable to get send buffer for DEL BA req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070010690 pEventData, pwdiDelBAParams, wdiDelBARspCb);
10691 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010692 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010693 }
10694
10695 halDelBAparam.staIdx = pwdiDelBAParams->wdiBAInfo.ucSTAIdx;
10696 halDelBAparam.baTID = pwdiDelBAParams->wdiBAInfo.ucBaTID;
10697 halDelBAparam.baDirection = pwdiDelBAParams->wdiBAInfo.ucBaDirection;
10698
Jeff Johnsone7245742012-09-05 17:12:55 -070010699 wpalMemoryCopy( pSendBuffer+usDataOffset,
10700 &halDelBAparam,
10701 sizeof(halDelBAparam));
Jeff Johnson295189b2012-06-20 16:38:30 -070010702
10703 pWDICtx->wdiReqStatusCB = pwdiDelBAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010704 pWDICtx->pReqStatusUserData = pwdiDelBAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010705
10706 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010707 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010708 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010709 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10710 wdiDelBARspCb, pEventData->pUserData, WDI_DEL_BA_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010711}/*WDI_ProcessDelBAReq*/
10712
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -080010713#ifdef FEATURE_WLAN_ESE
Jeff Johnson295189b2012-06-20 16:38:30 -070010714
10715WDI_Status
10716WDI_ProcessTSMStatsReq
10717(
10718 WDI_ControlBlockType* pWDICtx,
10719 WDI_EventInfoType* pEventData
10720)
10721{
10722 WDI_TSMStatsReqParamsType* pwdiTSMParams;
10723 WDI_TsmRspCb wdiTSMRspCb;
10724 wpt_uint8 ucCurrentBSSSesIdx = 0;
10725 WDI_BSSSessionType* pBSSSes = NULL;
10726 wpt_uint8* pSendBuffer = NULL;
10727 wpt_uint16 usDataOffset = 0;
10728 wpt_uint16 usSendSize = 0;
10729 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
10730 tTsmStatsParams halTsmStatsReqParams = {0};
10731
10732 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10733
10734 /*-------------------------------------------------------------------------
10735 Sanity check
10736 -------------------------------------------------------------------------*/
10737 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10738 ( NULL == pEventData->pCBfnc ))
10739 {
10740 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010741 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010742 WDI_ASSERT(0);
10743 return WDI_STATUS_E_FAILURE;
10744 }
10745
10746 pwdiTSMParams = (WDI_TSMStatsReqParamsType*)pEventData->pEventData;
10747 wdiTSMRspCb = (WDI_TsmRspCb)pEventData->pCBfnc;
10748 /*-------------------------------------------------------------------------
10749 Check to see if we are in the middle of an association, if so queue, if
10750 not it means it is free to process request
10751 -------------------------------------------------------------------------*/
10752 wpalMutexAcquire(&pWDICtx->wptMutex);
10753
10754 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, pwdiTSMParams->wdiTsmStatsParamsInfo.bssid, &pBSSSes);
10755 if ( NULL == pBSSSes )
10756 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010757 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
10758 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
10759 __func__, MAC_ADDR_ARRAY(pwdiTSMParams->wdiTsmStatsParamsInfo.bssid));
Jeff Johnson295189b2012-06-20 16:38:30 -070010760
10761 wpalMutexRelease(&pWDICtx->wptMutex);
10762 return WDI_STATUS_E_NOT_ALLOWED;
10763 }
10764
10765 /*------------------------------------------------------------------------
10766 Check if this BSS is being currently processed or queued,
10767 if queued - queue the new request as well
10768 ------------------------------------------------------------------------*/
10769 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
10770 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010771 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Srinivas Girigowda6d1f9062014-02-03 18:15:54 -080010772 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
Jeff Johnsone7245742012-09-05 17:12:55 -070010773 __func__, MAC_ADDR_ARRAY(pwdiTSMParams->wdiTsmStatsParamsInfo.bssid));
Jeff Johnson295189b2012-06-20 16:38:30 -070010774
10775 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
10776 wpalMutexRelease(&pWDICtx->wptMutex);
10777 return wdiStatus;
10778 }
10779
10780 wpalMutexRelease(&pWDICtx->wptMutex);
10781 /*-----------------------------------------------------------------------
10782 Get message buffer
10783 ! TO DO : proper conversion into the HAL Message Request Format
10784 -----------------------------------------------------------------------*/
10785 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_TSM_STATS_REQ,
10786 sizeof(halTsmStatsReqParams),
10787 &pSendBuffer, &usDataOffset, &usSendSize))||
10788 ( usSendSize < (usDataOffset + sizeof(halTsmStatsReqParams) )))
10789 {
10790 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010791 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070010792 pEventData, pwdiTSMParams, wdiTSMRspCb);
10793 WDI_ASSERT(0);
10794 return WDI_STATUS_E_FAILURE;
10795 }
10796
10797 halTsmStatsReqParams.tsmTID = pwdiTSMParams->wdiTsmStatsParamsInfo.ucTid;
10798 wpalMemoryCopy(halTsmStatsReqParams.bssId,
10799 pwdiTSMParams->wdiTsmStatsParamsInfo.bssid,
10800 WDI_MAC_ADDR_LEN);
10801 wpalMemoryCopy( pSendBuffer+usDataOffset,
10802 &halTsmStatsReqParams,
10803 sizeof(halTsmStatsReqParams));
10804
10805 pWDICtx->wdiReqStatusCB = pwdiTSMParams->wdiReqStatusCB;
10806 pWDICtx->pReqStatusUserData = pwdiTSMParams->pUserData;
10807
10808 /*-------------------------------------------------------------------------
10809 Send TSM Stats Request to HAL
10810 -------------------------------------------------------------------------*/
10811 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10812 wdiTSMRspCb, pEventData->pUserData,
10813 WDI_TSM_STATS_RESP);
10814}/*WDI_ProcessTSMStatsReq*/
10815
10816#endif
10817
10818
10819/**
Jeff Johnsone7245742012-09-05 17:12:55 -070010820 @brief Process Flush AC Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070010821 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010822
10823 @param pWDICtx: pointer to the WLAN DAL context
10824 pEventData: pointer to the event information structure
10825
Jeff Johnson295189b2012-06-20 16:38:30 -070010826 @see
10827 @return Result of the function call
10828*/
10829WDI_Status
10830WDI_ProcessFlushAcReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010831(
Jeff Johnson295189b2012-06-20 16:38:30 -070010832 WDI_ControlBlockType* pWDICtx,
10833 WDI_EventInfoType* pEventData
10834)
10835{
10836 WDI_FlushAcReqParamsType* pwdiFlushAcParams = NULL;
10837 WDI_FlushAcRspCb wdiFlushAcRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010838 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010839 wpt_uint16 usDataOffset = 0;
10840 wpt_uint16 usSendSize = 0;
10841 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10842
10843 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010844 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010845 -------------------------------------------------------------------------*/
10846 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10847 ( NULL == pEventData->pCBfnc ))
10848 {
10849 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010850 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010851 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010852 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010853 }
10854
10855 pwdiFlushAcParams = (WDI_FlushAcReqParamsType*)pEventData->pEventData;
10856 wdiFlushAcRspCb = (WDI_FlushAcRspCb)pEventData->pCBfnc;
10857 /*-----------------------------------------------------------------------
10858 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070010859 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070010860 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010861 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_FLUSH_AC_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010862 sizeof(pwdiFlushAcParams->wdiFlushAcInfo),
10863 &pSendBuffer, &usDataOffset, &usSendSize))||
10864 ( usSendSize < (usDataOffset + sizeof(pwdiFlushAcParams->wdiFlushAcInfo) )))
10865 {
10866 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010867 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070010868 pEventData, pwdiFlushAcParams, wdiFlushAcRspCb);
10869 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010870 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010871 }
10872
Jeff Johnsone7245742012-09-05 17:12:55 -070010873 wpalMemoryCopy( pSendBuffer+usDataOffset,
10874 &pwdiFlushAcParams->wdiFlushAcInfo,
10875 sizeof(pwdiFlushAcParams->wdiFlushAcInfo));
Jeff Johnson295189b2012-06-20 16:38:30 -070010876
10877 pWDICtx->wdiReqStatusCB = pwdiFlushAcParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010878 pWDICtx->pReqStatusUserData = pwdiFlushAcParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010879
10880 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010881 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010882 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010883 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10884 wdiFlushAcRspCb, pEventData->pUserData, WDI_FLUSH_AC_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010885}/*WDI_ProcessFlushAcReq*/
10886
10887/**
Jeff Johnsone7245742012-09-05 17:12:55 -070010888 @brief Process BT AMP event Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070010889 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010890
10891 @param pWDICtx: pointer to the WLAN DAL context
10892 pEventData: pointer to the event information structure
10893
Jeff Johnson295189b2012-06-20 16:38:30 -070010894 @see
10895 @return Result of the function call
10896*/
10897WDI_Status
10898WDI_ProcessBtAmpEventReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010899(
Jeff Johnson295189b2012-06-20 16:38:30 -070010900 WDI_ControlBlockType* pWDICtx,
10901 WDI_EventInfoType* pEventData
10902)
10903{
10904 WDI_BtAmpEventParamsType* pwdiBtAmpEventParams = NULL;
10905 WDI_BtAmpEventRspCb wdiBtAmpEventRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010906 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010907 wpt_uint16 usDataOffset = 0;
10908 wpt_uint16 usSendSize = 0;
10909
10910 tBtAmpEventMsg haltBtAmpEventMsg;
10911 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10912
10913 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010914 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010915 -------------------------------------------------------------------------*/
10916 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10917 ( NULL == pEventData->pCBfnc ))
10918 {
10919 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010920 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010921 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010922 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010923 }
10924
10925 pwdiBtAmpEventParams = (WDI_BtAmpEventParamsType*)pEventData->pEventData;
10926 wdiBtAmpEventRspCb = (WDI_BtAmpEventRspCb)pEventData->pCBfnc;
10927 /*-----------------------------------------------------------------------
10928 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070010929 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070010930 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010931 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_BTAMP_EVENT_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010932 sizeof(haltBtAmpEventMsg.btAmpEventParams),
10933 &pSendBuffer, &usDataOffset, &usSendSize))||
10934 ( usSendSize < (usDataOffset + sizeof(haltBtAmpEventMsg.btAmpEventParams) )))
10935 {
10936 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010937 "Unable to get send buffer in BT AMP event req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070010938 pEventData, pwdiBtAmpEventParams, wdiBtAmpEventRspCb);
10939 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010940 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010941 }
10942
Jeff Johnsone7245742012-09-05 17:12:55 -070010943 haltBtAmpEventMsg.btAmpEventParams.btAmpEventType =
Jeff Johnson295189b2012-06-20 16:38:30 -070010944 pwdiBtAmpEventParams->wdiBtAmpEventInfo.ucBtAmpEventType;
Jeff Johnsone7245742012-09-05 17:12:55 -070010945 wpalMemoryCopy( pSendBuffer+usDataOffset,
10946 &haltBtAmpEventMsg.btAmpEventParams,
10947 sizeof(haltBtAmpEventMsg.btAmpEventParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070010948
10949 pWDICtx->wdiReqStatusCB = pwdiBtAmpEventParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010950 pWDICtx->pReqStatusUserData = pwdiBtAmpEventParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010951
10952 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010953 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010954 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010955 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10956 wdiBtAmpEventRspCb, pEventData->pUserData, WDI_BTAMP_EVENT_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010957}/*WDI_ProcessBtAmpEventReq*/
10958
10959/**
10960 @brief Process Add STA self Request function (called when Main FSM
10961 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010962
10963 @param pWDICtx: pointer to the WLAN DAL context
10964 pEventData: pointer to the event information structure
10965
Jeff Johnson295189b2012-06-20 16:38:30 -070010966 @see
10967 @return Result of the function call
10968*/
10969WDI_Status
10970WDI_ProcessAddSTASelfReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010971(
Jeff Johnson295189b2012-06-20 16:38:30 -070010972 WDI_ControlBlockType* pWDICtx,
10973 WDI_EventInfoType* pEventData
10974)
10975{
10976 WDI_AddSTASelfReqParamsType* pwdiAddSTASelfReqParams;
10977 WDI_AddSTASelfParamsRspCb wdiAddSTASelfReqRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010978 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010979 wpt_uint16 usDataOffset = 0;
10980 wpt_uint16 usSendSize = 0;
Kiran Kumar Lokere0ad5cd32013-06-25 11:26:22 -070010981 tAddStaSelfParams_V1 halAddSTASelfParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070010982 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10983
10984 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010985 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010986 -------------------------------------------------------------------------*/
10987 if (( NULL == pEventData ) ||
10988 ( NULL == pEventData->pEventData) ||
10989 ( NULL == pEventData->pCBfnc))
10990 {
10991 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010992 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010993 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010994 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010995 }
10996
Jeff Johnsone7245742012-09-05 17:12:55 -070010997 pwdiAddSTASelfReqParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070010998 (WDI_AddSTASelfReqParamsType*)pEventData->pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070010999 wdiAddSTASelfReqRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070011000 (WDI_AddSTASelfParamsRspCb)pEventData->pCBfnc;
11001 /*-----------------------------------------------------------------------
11002 Get message buffer
11003 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011004 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
11005 WDI_ADD_STA_SELF_REQ,
Kiran Kumar Lokere0ad5cd32013-06-25 11:26:22 -070011006 sizeof(tAddStaSelfParams_V1),
Jeff Johnson295189b2012-06-20 16:38:30 -070011007 &pSendBuffer, &usDataOffset, &usSendSize))||
Kiran Kumar Lokere0ad5cd32013-06-25 11:26:22 -070011008 ( usSendSize < (usDataOffset + sizeof(tAddStaSelfParams_V1) )))
Jeff Johnson295189b2012-06-20 16:38:30 -070011009 {
11010 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080011011 "Unable to get send buffer in ADD STA SELF REQ %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070011012 pEventData, pwdiAddSTASelfReqParams, wdiAddSTASelfReqRspCb);
11013 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011014 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011015 }
11016
11017 /* Cache the request for response processing */
Jeff Johnsone7245742012-09-05 17:12:55 -070011018 wpalMemoryCopy(&pWDICtx->wdiCacheAddSTASelfReq, pwdiAddSTASelfReqParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070011019 sizeof(pWDICtx->wdiCacheAddSTASelfReq));
11020
Jeff Johnsone7245742012-09-05 17:12:55 -070011021 wpalMemoryCopy(halAddSTASelfParams.selfMacAddr,
Kiran Kumar Lokere0ad5cd32013-06-25 11:26:22 -070011022 pwdiAddSTASelfReqParams->wdiAddSTASelfInfo.selfMacAddr, 6);
11023 halAddSTASelfParams.iface_persona = HAL_IFACE_UNKNOWN;
11024 if (pwdiAddSTASelfReqParams->wdiAddSTASelfInfo.currDeviceMode == VOS_STA_MODE)
11025 {
11026 halAddSTASelfParams.iface_persona = HAL_IFACE_STA_MODE;
11027 }
11028 else if ((pwdiAddSTASelfReqParams->wdiAddSTASelfInfo.currDeviceMode ==
11029 VOS_P2P_CLIENT_MODE) ||
11030 (pwdiAddSTASelfReqParams->wdiAddSTASelfInfo.currDeviceMode ==
11031 VOS_P2P_DEVICE))
11032 {
11033 halAddSTASelfParams.iface_persona = HAL_IFACE_P2P_MODE;
11034 }
Jeff Johnsone7245742012-09-05 17:12:55 -070011035 wpalMemoryCopy( pSendBuffer+usDataOffset, &halAddSTASelfParams,
Kiran Kumar Lokere0ad5cd32013-06-25 11:26:22 -070011036 sizeof(tAddStaSelfParams_V1));
Jeff Johnson295189b2012-06-20 16:38:30 -070011037
11038 pWDICtx->wdiReqStatusCB = pwdiAddSTASelfReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011039 pWDICtx->pReqStatusUserData = pwdiAddSTASelfReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011040
11041 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011042 Send Update Probe Resp Template Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011043 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011044 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11045 wdiAddSTASelfReqRspCb, pEventData->pUserData,
11046 WDI_ADD_STA_SELF_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011047}/*WDI_ProcessAddSTASelfReq*/
11048
11049
11050
11051/**
Jeff Johnsone7245742012-09-05 17:12:55 -070011052 @brief Process Del Sta Self Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070011053 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011054
11055 @param pWDICtx: pointer to the WLAN DAL context
11056 pEventData: pointer to the event information structure
11057
Jeff Johnson295189b2012-06-20 16:38:30 -070011058 @see
11059 @return Result of the function call
11060*/
11061WDI_Status
11062WDI_ProcessDelSTASelfReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011063(
Jeff Johnson295189b2012-06-20 16:38:30 -070011064 WDI_ControlBlockType* pWDICtx,
11065 WDI_EventInfoType* pEventData
11066)
11067{
11068 WDI_DelSTASelfReqParamsType* pwdiDelStaSelfReqParams;
11069 WDI_DelSTASelfRspCb wdiDelStaSelfRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011070 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011071 wpt_uint16 usDataOffset = 0;
11072 wpt_uint16 usSendSize = 0;
11073 tDelStaSelfParams halSetDelSelfSTAParams;
11074 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11075
11076 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011077 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011078 -------------------------------------------------------------------------*/
11079 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
11080 ( NULL == pEventData->pCBfnc ))
11081 {
11082 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011083 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011084 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011085 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011086 }
11087
Jeff Johnsone7245742012-09-05 17:12:55 -070011088 pwdiDelStaSelfReqParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070011089 (WDI_DelSTASelfReqParamsType*)pEventData->pEventData;
11090 wdiDelStaSelfRspCb = (WDI_DelSTASelfRspCb)pEventData->pCBfnc;
11091
11092 /*-----------------------------------------------------------------------
11093 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070011094 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070011095 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011096 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_DEL_STA_SELF_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011097 sizeof(pwdiDelStaSelfReqParams->wdiDelStaSelfInfo),
11098 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070011099 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070011100 (usDataOffset + sizeof(pwdiDelStaSelfReqParams->wdiDelStaSelfInfo) )))
11101 {
11102 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080011103 "Unable to get send buffer in Del Sta Self req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070011104 pEventData, pwdiDelStaSelfReqParams, wdiDelStaSelfRspCb);
11105 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011106 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011107 }
11108
Jeff Johnsone7245742012-09-05 17:12:55 -070011109 wpalMemoryCopy(halSetDelSelfSTAParams.selfMacAddr,
Jeff Johnson295189b2012-06-20 16:38:30 -070011110 pwdiDelStaSelfReqParams->wdiDelStaSelfInfo.selfMacAddr, 6) ;
11111
Jeff Johnsone7245742012-09-05 17:12:55 -070011112 wpalMemoryCopy( pSendBuffer+usDataOffset, &halSetDelSelfSTAParams,
11113 sizeof(tDelStaSelfParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070011114
11115 pWDICtx->wdiReqStatusCB = pwdiDelStaSelfReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011116 pWDICtx->pReqStatusUserData = pwdiDelStaSelfReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011117
11118 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011119 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011120 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011121 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11122 wdiDelStaSelfRspCb, pEventData->pUserData,
Jeff Johnson295189b2012-06-20 16:38:30 -070011123 WDI_DEL_STA_SELF_RESP);
11124
11125}
11126
Jeff Johnsone7245742012-09-05 17:12:55 -070011127#ifdef FEATURE_OEM_DATA_SUPPORT
11128/**
11129 @brief Process Start Oem Data Request function (called when Main
11130 FSM allows it)
11131
11132 @param pWDICtx: pointer to the WLAN DAL context
11133 pEventData: pointer to the event information structure
11134
11135 @see
11136 @return Result of the function call
11137*/
11138WDI_Status
11139WDI_ProcessStartOemDataReq
11140(
11141 WDI_ControlBlockType* pWDICtx,
11142 WDI_EventInfoType* pEventData
11143)
11144{
11145 WDI_oemDataReqParamsType* pwdiOemDataReqParams = NULL;
11146 WDI_oemDataRspCb wdiOemDataRspCb;
11147 wpt_uint8* pSendBuffer = NULL;
11148 wpt_uint16 usDataOffset = 0;
11149 wpt_uint16 usSendSize = 0;
11150 wpt_uint16 reqLen;
11151 tStartOemDataReqParams* halStartOemDataReqParams;
11152
11153 /*-------------------------------------------------------------------------
11154 Sanity check
11155 -------------------------------------------------------------------------*/
11156 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
11157 ( NULL == pEventData->pCBfnc ))
11158 {
11159 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011160 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070011161 WDI_ASSERT(0);
11162 return WDI_STATUS_E_FAILURE;
11163 }
11164
11165 pwdiOemDataReqParams = (WDI_oemDataReqParamsType*)pEventData->pEventData;
11166 wdiOemDataRspCb = (WDI_oemDataRspCb)pEventData->pCBfnc;
11167
11168 /*-----------------------------------------------------------------------
11169 Get message buffer
11170 -----------------------------------------------------------------------*/
11171
11172 reqLen = sizeof(tStartOemDataReqParams);
11173
11174 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
11175 WDI_START_OEM_DATA_REQ, reqLen,
11176 &pSendBuffer, &usDataOffset, &usSendSize))||
11177 (usSendSize < (usDataOffset + reqLen)))
11178 {
11179 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080011180 "Unable to get send buffer in Start Oem Data req %p %p %p",
Jeff Johnsone7245742012-09-05 17:12:55 -070011181 pEventData, pwdiOemDataReqParams, wdiOemDataRspCb);
11182 WDI_ASSERT(0);
11183 return WDI_STATUS_E_FAILURE;
11184 }
11185
11186 //copying WDI OEM DATA REQ PARAMS to shared memory
11187 halStartOemDataReqParams = (tStartOemDataReqParams *)(pSendBuffer + usDataOffset );
11188
11189 wpalMemoryCopy(&halStartOemDataReqParams->selfMacAddr, &pwdiOemDataReqParams->wdiOemDataReqInfo.selfMacAddr, sizeof(wpt_macAddr));
11190 wpalMemoryCopy(&halStartOemDataReqParams->oemDataReq, &pwdiOemDataReqParams->wdiOemDataReqInfo.oemDataReq, OEM_DATA_REQ_SIZE);
11191
11192 pWDICtx->wdiReqStatusCB = pwdiOemDataReqParams->wdiReqStatusCB;
11193 pWDICtx->pReqStatusUserData = pwdiOemDataReqParams->pUserData;
11194
11195 /*-------------------------------------------------------------------------
11196 Send Start Request to HAL
11197 -------------------------------------------------------------------------*/
11198 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11199 wdiOemDataRspCb, pEventData->pUserData,
11200 WDI_START_OEM_DATA_RESP);
11201}/*WDI_ProcessStartOemDataReq*/
11202#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070011203
11204/**
Jeff Johnsone7245742012-09-05 17:12:55 -070011205 @brief Process Host Resume Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070011206 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011207
11208 @param pWDICtx: pointer to the WLAN DAL context
11209 pEventData: pointer to the event information structure
11210
Jeff Johnson295189b2012-06-20 16:38:30 -070011211 @see
11212 @return Result of the function call
11213*/
11214WDI_Status
11215WDI_ProcessHostResumeReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011216(
Jeff Johnson295189b2012-06-20 16:38:30 -070011217 WDI_ControlBlockType* pWDICtx,
11218 WDI_EventInfoType* pEventData
11219)
11220{
11221 WDI_ResumeParamsType* pwdiHostResumeParams = NULL;
11222 WDI_HostResumeEventRspCb wdiHostResumeRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011223 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011224 wpt_uint16 usDataOffset = 0;
11225 wpt_uint16 usSendSize = 0;
11226 tHalWlanHostResumeReqParam halResumeReqParams;
11227
11228 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11229
11230 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011231 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011232 -------------------------------------------------------------------------*/
11233 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
11234 ( NULL == pEventData->pCBfnc ))
11235 {
11236 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011237 "%s: Invalid parameters ",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011238 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011239 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011240 }
11241
11242 pwdiHostResumeParams = (WDI_ResumeParamsType*)pEventData->pEventData;
11243 wdiHostResumeRspCb = (WDI_HostResumeEventRspCb)pEventData->pCBfnc;
11244
11245 /*-----------------------------------------------------------------------
11246 Get message buffer
11247 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011248 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
Jeff Johnson295189b2012-06-20 16:38:30 -070011249 WDI_HOST_RESUME_REQ, sizeof(halResumeReqParams),
11250 &pSendBuffer, &usDataOffset, &usSendSize))||
11251 (usSendSize < (usDataOffset + sizeof(halResumeReqParams))))
11252 {
11253 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080011254 "Unable to get send buffer in Start Oem Data req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070011255 pEventData, pwdiHostResumeParams, wdiHostResumeRspCb);
11256 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011257 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011258 }
11259
Jeff Johnsone7245742012-09-05 17:12:55 -070011260 halResumeReqParams.configuredMcstBcstFilterSetting =
Jeff Johnson295189b2012-06-20 16:38:30 -070011261 pwdiHostResumeParams->wdiResumeParams.ucConfiguredMcstBcstFilterSetting;
Jeff Johnsone7245742012-09-05 17:12:55 -070011262
11263 wpalMemoryCopy( pSendBuffer+usDataOffset,
11264 &halResumeReqParams,
11265 sizeof(halResumeReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070011266
11267 pWDICtx->wdiReqStatusCB = pwdiHostResumeParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011268 pWDICtx->pReqStatusUserData = pwdiHostResumeParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011269
11270 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011271 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011272 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011273 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11274 wdiHostResumeRspCb, pEventData->pUserData,
11275 WDI_HOST_RESUME_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011276}/*WDI_ProcessHostResumeReq*/
11277
11278/**
Jeff Johnsone7245742012-09-05 17:12:55 -070011279 @brief Process set Tx Per Tracking Parameters Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070011280 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011281
11282 @param pWDICtx: pointer to the WLAN DAL context
11283 pEventData: pointer to the event information structure
11284
Jeff Johnson295189b2012-06-20 16:38:30 -070011285 @see
11286 @return Result of the function call
11287*/
11288WDI_Status
11289WDI_ProcessSetTxPerTrackingReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011290(
Jeff Johnson295189b2012-06-20 16:38:30 -070011291 WDI_ControlBlockType* pWDICtx,
11292 WDI_EventInfoType* pEventData
11293)
11294{
11295 WDI_SetTxPerTrackingReqParamsType* pwdiSetTxPerTrackingReqParams = NULL;
11296 WDI_SetTxPerTrackingRspCb pwdiSetTxPerTrackingRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070011297 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011298 wpt_uint16 usDataOffset = 0;
11299 wpt_uint16 usSendSize = 0;
11300 tHalTxPerTrackingReqParam halTxPerTrackingReqParam;
11301 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11302
11303 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011304 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011305 -------------------------------------------------------------------------*/
11306 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
11307 ( NULL == pEventData->pCBfnc ))
11308 {
11309 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011310 "%s: Invalid parameters ",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011311 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011312 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011313 }
11314
11315 pwdiSetTxPerTrackingReqParams = (WDI_SetTxPerTrackingReqParamsType*)pEventData->pEventData;
11316 pwdiSetTxPerTrackingRspCb = (WDI_SetTxPerTrackingRspCb)pEventData->pCBfnc;
Jeff Johnsone7245742012-09-05 17:12:55 -070011317
Jeff Johnson295189b2012-06-20 16:38:30 -070011318 /*-----------------------------------------------------------------------
11319 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070011320 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070011321 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011322 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_TX_PER_TRACKING_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011323 sizeof(halTxPerTrackingReqParam),
11324 &pSendBuffer, &usDataOffset, &usSendSize))||
11325 ( usSendSize < (usDataOffset + sizeof(halTxPerTrackingReqParam) )))
11326 {
11327 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080011328 "Unable to get send buffer in set tx per tracking req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070011329 pEventData, pwdiSetTxPerTrackingReqParams, pwdiSetTxPerTrackingRspCb);
11330 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011331 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011332 }
Jeff Johnsone7245742012-09-05 17:12:55 -070011333
Jeff Johnson295189b2012-06-20 16:38:30 -070011334 halTxPerTrackingReqParam.ucTxPerTrackingEnable = pwdiSetTxPerTrackingReqParams->wdiTxPerTrackingParam.ucTxPerTrackingEnable;
11335 halTxPerTrackingReqParam.ucTxPerTrackingPeriod = pwdiSetTxPerTrackingReqParams->wdiTxPerTrackingParam.ucTxPerTrackingPeriod;
11336 halTxPerTrackingReqParam.ucTxPerTrackingRatio = pwdiSetTxPerTrackingReqParams->wdiTxPerTrackingParam.ucTxPerTrackingRatio;
11337 halTxPerTrackingReqParam.uTxPerTrackingWatermark = pwdiSetTxPerTrackingReqParams->wdiTxPerTrackingParam.uTxPerTrackingWatermark;
Jeff Johnsone7245742012-09-05 17:12:55 -070011338
11339 wpalMemoryCopy( pSendBuffer+usDataOffset,
11340 &halTxPerTrackingReqParam,
11341 sizeof(halTxPerTrackingReqParam));
Jeff Johnson295189b2012-06-20 16:38:30 -070011342
11343 pWDICtx->wdiReqStatusCB = pwdiSetTxPerTrackingReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011344 pWDICtx->pReqStatusUserData = pwdiSetTxPerTrackingReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011345
11346 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011347 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011348 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011349 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11350 pwdiSetTxPerTrackingRspCb, pEventData->pUserData, WDI_SET_TX_PER_TRACKING_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011351}/*WDI_ProcessSetTxPerTrackingReq*/
11352
11353/*=========================================================================
11354 Indications
11355=========================================================================*/
11356
11357/**
11358 @brief Process Suspend Indications function (called when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011359
11360 @param pWDICtx: pointer to the WLAN DAL context
11361 pEventData: pointer to the event information structure
11362
Jeff Johnson295189b2012-06-20 16:38:30 -070011363 @see
11364 @return Result of the function call
11365*/
11366WDI_Status
11367WDI_ProcessHostSuspendInd
Jeff Johnsone7245742012-09-05 17:12:55 -070011368(
Jeff Johnson295189b2012-06-20 16:38:30 -070011369 WDI_ControlBlockType* pWDICtx,
11370 WDI_EventInfoType* pEventData
11371)
11372{
11373 WDI_SuspendParamsType *pSuspendIndParams;
Jeff Johnsone7245742012-09-05 17:12:55 -070011374 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011375 wpt_uint16 usDataOffset = 0;
11376 wpt_uint16 usSendSize = 0;
11377 WDI_Status wdiStatus;
11378 tHalWlanHostSuspendIndParam halWlanSuspendIndparams;
11379 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11380
11381 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011382 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011383 -------------------------------------------------------------------------*/
11384 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
11385 {
11386 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011387 "%s: Invalid parameters in Suspend ind",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011388 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011389 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011390 }
11391
11392 pSuspendIndParams = (WDI_SuspendParamsType *)pEventData->pEventData;
11393
11394 /*-----------------------------------------------------------------------
11395 Get message buffer
11396 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011397 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
11398 WDI_HOST_SUSPEND_IND,
Jeff Johnson295189b2012-06-20 16:38:30 -070011399 sizeof(halWlanSuspendIndparams),
11400 &pSendBuffer, &usDataOffset, &usSendSize))||
11401 (usSendSize < (usDataOffset + sizeof(halWlanSuspendIndparams))))
11402 {
11403 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11404 "Unable to get send buffer in Suspend Ind ");
11405 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011406 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011407 }
11408
11409 halWlanSuspendIndparams.configuredMcstBcstFilterSetting =
11410 pSuspendIndParams->wdiSuspendParams.ucConfiguredMcstBcstFilterSetting;
11411
Jeff Johnsone7245742012-09-05 17:12:55 -070011412 halWlanSuspendIndparams.activeSessionCount =
Hoonki Lee9af07cf2013-04-24 01:21:58 -070011413 WDI_GetActiveSessionsCount(pWDICtx, NULL, eWLAN_PAL_TRUE);
Jeff Johnson295189b2012-06-20 16:38:30 -070011414
Jeff Johnsone7245742012-09-05 17:12:55 -070011415 wpalMemoryCopy( pSendBuffer+usDataOffset, &halWlanSuspendIndparams,
11416 sizeof(tHalWlanHostSuspendIndParam));
Jeff Johnson295189b2012-06-20 16:38:30 -070011417
11418 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011419 Send Suspend Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011420 -------------------------------------------------------------------------*/
11421 pWDICtx->wdiReqStatusCB = pSuspendIndParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011422 pWDICtx->pReqStatusUserData = pSuspendIndParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011423
Jeff Johnsone7245742012-09-05 17:12:55 -070011424 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070011425 return ( wdiStatus != WDI_STATUS_SUCCESS )?wdiStatus:WDI_STATUS_SUCCESS_SYNC;
11426}/*WDI_ProcessHostSuspendInd*/
11427
Madan Mohan Koyyalamudi01cba042013-01-10 21:56:05 -080011428
11429
11430/**
11431 @brief Process Traffic Stats Indications function (called when Main FSM allows it)
11432
11433 @param pWDICtx: pointer to the WLAN DAL context
11434 pEventData: pointer to the event information structure
11435
11436 @see
11437 @return Result of the function call
11438*/
11439WDI_Status
11440WDI_ProcessTrafficStatsInd
11441(
11442 WDI_ControlBlockType* pWDICtx,
11443 WDI_EventInfoType* pEventData
11444)
11445{
11446 WDI_TrafficStatsIndType* pTrafficStatsIndParams;
11447 wpt_uint8* pSendBuffer = NULL;
11448 wpt_uint16 usDataOffset = 0;
11449 wpt_uint16 usSendSize = 0;
11450 WDI_Status wdiStatus;
11451 tStatsClassBIndParams* pStatsClassBIndParams;
11452 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11453
11454 /*-------------------------------------------------------------------------
11455 Sanity check
11456 -------------------------------------------------------------------------*/
11457 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
11458 {
11459 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11460 "%s: Invalid parameters in Traffic Stats ind",__func__);
11461 WDI_ASSERT(0);
11462 return WDI_STATUS_E_FAILURE;
11463 }
11464
11465 pTrafficStatsIndParams = (WDI_TrafficStatsIndType *)pEventData->pEventData;
11466
11467 if(pTrafficStatsIndParams->length != sizeof(tStaStatsClassB)*(HAL_NUM_STA))
11468 {
11469 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11470 "%s: Invalid parameters in Traffic Stats ind",__func__);
11471 WDI_ASSERT(0);
11472 return WDI_STATUS_E_FAILURE;
11473 }
11474
11475 /*-----------------------------------------------------------------------
11476 Get message buffer
11477 -----------------------------------------------------------------------*/
11478 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
11479 WDI_TRAFFIC_STATS_IND,
11480 sizeof(tStatsClassBIndParams),
11481 &pSendBuffer, &usDataOffset, &usSendSize))||
11482 (usSendSize < (usDataOffset + sizeof(tStatsClassBIndParams))))
11483 {
11484 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
11485 "Unable to get send buffer in Traffic Stats Ind ");
11486 WDI_ASSERT(0);
11487 return WDI_STATUS_E_FAILURE;
11488 }
11489
11490 pStatsClassBIndParams = (tStatsClassBIndParams*)(pSendBuffer+usDataOffset);
11491
11492 pStatsClassBIndParams->duration = pTrafficStatsIndParams->duration;
11493
11494 wpalMemoryCopy(pStatsClassBIndParams->staStatsClassB,
11495 pTrafficStatsIndParams->pTrafficStats,
11496 pTrafficStatsIndParams->length);
11497
11498 /*-------------------------------------------------------------------------
11499 Send Suspend Request to HAL
11500 -------------------------------------------------------------------------*/
11501 pWDICtx->wdiReqStatusCB = pTrafficStatsIndParams->wdiReqStatusCB;
11502 pWDICtx->pReqStatusUserData = pTrafficStatsIndParams->pUserData;
11503
11504 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
11505 return ( wdiStatus != WDI_STATUS_SUCCESS )?wdiStatus:WDI_STATUS_SUCCESS_SYNC;
11506}/*WDI_ProcessTrafficStatsInd*/
11507
Chet Lanctot186b5732013-03-18 10:26:30 -070011508#ifdef WLAN_FEATURE_11W
11509/**
11510 @brief Process Exclude Unencrypted Indications function (called
11511 when Main FSM allows it)
11512
11513 @param pWDICtx: pointer to the WLAN DAL context
11514 pEventData: pointer to the event information structure
11515
11516 @see
11517 @return Result of the function call
11518*/
11519WDI_Status
11520WDI_ProcessExcludeUnencryptInd
11521(
11522 WDI_ControlBlockType* pWDICtx,
11523 WDI_EventInfoType* pEventData
11524)
11525{
11526 WDI_ExcludeUnencryptIndType* pWDIExcUnencIndParams;
11527 wpt_uint8* pSendBuffer = NULL;
11528 wpt_uint16 usDataOffset = 0;
11529 wpt_uint16 usSendSize = 0;
11530 WDI_Status wdiStatus;
11531 tHalWlanExcludeUnEncryptedIndParam* pHalExcUnencIndParams;
11532 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11533
11534 /*-------------------------------------------------------------------------
11535 Sanity check
11536 -------------------------------------------------------------------------*/
11537 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
11538 {
11539 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11540 "%s: Invalid parameters in Exclude Unencrypted ind",__func__);
11541 WDI_ASSERT(0);
11542 return WDI_STATUS_E_FAILURE;
11543 }
11544
11545 pWDIExcUnencIndParams = (WDI_ExcludeUnencryptIndType *)pEventData->pEventData;
11546
11547 /*-----------------------------------------------------------------------
11548 Get message buffer
11549 -----------------------------------------------------------------------*/
11550 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
11551 WDI_EXCLUDE_UNENCRYPTED_IND,
11552 sizeof(tHalWlanExcludeUnEncryptedIndParam),
11553 &pSendBuffer, &usDataOffset, &usSendSize))||
11554 (usSendSize < (usDataOffset + sizeof(tHalWlanExcludeUnEncryptedIndParam))))
11555 {
11556 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
11557 "Unable to get send buffer in Exclude Unencrypted Ind ");
11558 WDI_ASSERT(0);
11559 return WDI_STATUS_E_FAILURE;
11560 }
11561
11562 pHalExcUnencIndParams = (tHalWlanExcludeUnEncryptedIndParam*)(pSendBuffer+usDataOffset);
11563
11564 pHalExcUnencIndParams->bDot11ExcludeUnencrypted = pWDIExcUnencIndParams->bExcludeUnencrypt;
11565
11566 wpalMemoryCopy(pHalExcUnencIndParams->bssId,
11567 pWDIExcUnencIndParams->bssid, WDI_MAC_ADDR_LEN);
11568
11569 /*-------------------------------------------------------------------------
11570 Send Suspend Request to HAL
11571 -------------------------------------------------------------------------*/
11572 pWDICtx->wdiReqStatusCB = pWDIExcUnencIndParams->wdiReqStatusCB;
11573 pWDICtx->pReqStatusUserData = pWDIExcUnencIndParams->pUserData;
11574
11575 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
11576 return ( wdiStatus != WDI_STATUS_SUCCESS )?wdiStatus:WDI_STATUS_SUCCESS_SYNC;
11577}/*WDI_ProcessExcludeUnencryptInd*/
11578#endif
11579
Yue Mab9c86f42013-08-14 15:59:08 -070011580/**
11581 @brief Process Add Periodic Tx Pattern Indication function (called when
11582 Main FSM allows it)
11583
11584 @param pWDICtx: pointer to the WLAN DAL context
11585 pEventData: pointer to the event information structure
11586
11587 @see
11588 @return Result of the function call
11589*/
11590WDI_Status
11591WDI_ProcessAddPeriodicTxPtrnInd
11592(
11593 WDI_ControlBlockType* pWDICtx,
11594 WDI_EventInfoType* pEventData
11595)
11596{
11597 WDI_AddPeriodicTxPtrnParamsType *pAddPeriodicTxPtrnParams;
11598 wpt_uint8* pSendBuffer = NULL;
11599 wpt_uint16 usDataOffset = 0;
11600 wpt_uint16 usSendSize = 0;
11601 WDI_Status wdiStatus;
11602 tHalAddPeriodicTxPtrn *halAddPeriodicTxPtrn;
11603 wpt_uint8 selfStaIdx = 0;
11604
11605 /*-------------------------------------------------------------------------
11606 Sanity check
11607 -------------------------------------------------------------------------*/
11608 if ((NULL == pEventData) || (NULL == pEventData->pEventData))
11609 {
11610 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11611 "%s: Invalid parameters in AddPeriodicTxPtrnInd!", __func__);
11612 WDI_ASSERT(0);
11613 return WDI_STATUS_E_FAILURE;
11614 }
11615
11616 pAddPeriodicTxPtrnParams =
11617 (WDI_AddPeriodicTxPtrnParamsType *)pEventData->pEventData;
11618
11619 /*------------------------------------------------------------------------
11620 Get message buffer
11621 ------------------------------------------------------------------------*/
11622 if ((WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(pWDICtx,
11623 WDI_ADD_PERIODIC_TX_PATTERN_IND, sizeof(tHalAddPeriodicTxPtrn),
11624 &pSendBuffer, &usDataOffset, &usSendSize))||
11625 (usSendSize < (usDataOffset + sizeof(tHalAddPeriodicTxPtrn))))
11626 {
11627 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11628 "%s: Unable to get send buffer in AddPeriodicTxPtrnInd!",
11629 __func__);
11630 WDI_ASSERT(0);
11631 return WDI_STATUS_E_FAILURE;
11632 }
11633
11634 halAddPeriodicTxPtrn = (tHalAddPeriodicTxPtrn *)(pSendBuffer + usDataOffset);
11635
11636 if (WDI_STATUS_SUCCESS != WDI_STATableFindStaidByAddr(pWDICtx,
11637 pAddPeriodicTxPtrnParams->wdiAddPeriodicTxPtrnParams.macAddr,
11638 &selfStaIdx))
11639 {
11640 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
11641 "%s: Failed to get selfStaIdx!", __func__);
Wilson Yang00256342013-10-10 23:13:38 -070011642 wpalMemoryFree(pSendBuffer);
Yue Mab9c86f42013-08-14 15:59:08 -070011643
11644 return WDI_STATUS_E_FAILURE;
11645 }
11646
11647 halAddPeriodicTxPtrn->selfStaIdx = selfStaIdx;
11648 halAddPeriodicTxPtrn->ucPtrnId =
11649 pAddPeriodicTxPtrnParams->wdiAddPeriodicTxPtrnParams.ucPtrnId;
11650 halAddPeriodicTxPtrn->usPtrnSize =
11651 pAddPeriodicTxPtrnParams->wdiAddPeriodicTxPtrnParams.ucPtrnSize;
11652 halAddPeriodicTxPtrn->uPtrnIntervalMs =
11653 pAddPeriodicTxPtrnParams->wdiAddPeriodicTxPtrnParams.usPtrnIntervalMs;
11654
11655 wpalMemoryCopy(halAddPeriodicTxPtrn->ucPattern,
11656 pAddPeriodicTxPtrnParams->wdiAddPeriodicTxPtrnParams.ucPattern,
11657 pAddPeriodicTxPtrnParams->wdiAddPeriodicTxPtrnParams.ucPtrnSize);
11658
11659 /*-------------------------------------------------------------------------
11660 Send Indication to HAL
11661 -------------------------------------------------------------------------*/
11662 pWDICtx->wdiReqStatusCB = pAddPeriodicTxPtrnParams->wdiReqStatusCB;
11663 pWDICtx->pReqStatusUserData = pAddPeriodicTxPtrnParams->pUserData;
11664
11665 wdiStatus = WDI_SendIndication(pWDICtx, pSendBuffer, usSendSize);
11666
11667 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
11668 "%s: Sent WLAN_HAL_ADD_PERIODIC_TX_PTRN_IND to HAL.", __func__);
11669
11670 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus : WDI_STATUS_SUCCESS_SYNC;
11671} /* WDI_ProcessAddPeriodicTxPtrnInd */
11672
11673/**
11674 @brief Process Delete Periodic Tx Pattern Indication function (called when
11675 Main FSM allows it)
11676
11677 @param pWDICtx: pointer to the WLAN DAL context
11678 pEventData: pointer to the event information structure
11679
11680 @see
11681 @return Result of the function call
11682*/
11683WDI_Status
11684WDI_ProcessDelPeriodicTxPtrnInd
11685(
11686 WDI_ControlBlockType* pWDICtx,
11687 WDI_EventInfoType* pEventData
11688)
11689{
11690 WDI_DelPeriodicTxPtrnParamsType *pDelPeriodicTxPtrnParams;
11691 wpt_uint8* pSendBuffer = NULL;
11692 wpt_uint16 usDataOffset = 0;
11693 wpt_uint16 usSendSize = 0;
11694 WDI_Status wdiStatus;
11695 tHalDelPeriodicTxPtrn *halDelPeriodicTxPtrn;
11696 wpt_uint8 selfStaIdx = 0;
11697
11698 /*-------------------------------------------------------------------------
11699 Sanity check
11700 -------------------------------------------------------------------------*/
11701 if ((NULL == pEventData) || (NULL == pEventData->pEventData))
11702 {
11703 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11704 "%s: Invalid parameters in DelPeriodicTxPtrnInd!", __func__);
11705 WDI_ASSERT(0);
11706 return WDI_STATUS_E_FAILURE;
11707 }
11708
11709 pDelPeriodicTxPtrnParams =
11710 (WDI_DelPeriodicTxPtrnParamsType *)pEventData->pEventData;
11711
11712 /*------------------------------------------------------------------------
11713 Get message buffer
11714 ------------------------------------------------------------------------*/
11715 if ((WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(pWDICtx,
11716 WDI_DEL_PERIODIC_TX_PATTERN_IND, sizeof(tHalDelPeriodicTxPtrn),
11717 &pSendBuffer, &usDataOffset, &usSendSize))||
11718 (usSendSize < (usDataOffset + sizeof(tHalDelPeriodicTxPtrn))))
11719 {
11720 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11721 "%s: Unable to get send buffer in DelPeriodicTxPtrnInd!",
11722 __func__);
11723 WDI_ASSERT(0);
11724 return WDI_STATUS_E_FAILURE;
11725 }
11726
11727 halDelPeriodicTxPtrn = (tHalDelPeriodicTxPtrn *)(pSendBuffer + usDataOffset);
11728
11729 if (WDI_STATUS_SUCCESS != WDI_STATableFindStaidByAddr(pWDICtx,
11730 pDelPeriodicTxPtrnParams->wdiDelPeriodicTxPtrnParams.macAddr,
11731 &selfStaIdx))
11732 {
11733 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
11734 "%s: Failed to get selfStaIdx!", __func__);
Wilson Yang00256342013-10-10 23:13:38 -070011735 wpalMemoryFree(pSendBuffer);
Yue Mab9c86f42013-08-14 15:59:08 -070011736
11737 return WDI_STATUS_E_FAILURE;
11738 }
11739
11740 halDelPeriodicTxPtrn->selfStaIdx = selfStaIdx;
11741 halDelPeriodicTxPtrn->uPatternIdBitmap =
11742 pDelPeriodicTxPtrnParams->wdiDelPeriodicTxPtrnParams.ucPatternIdBitmap;
11743
11744 /*-------------------------------------------------------------------------
11745 Send Indication to HAL
11746 -------------------------------------------------------------------------*/
11747 pWDICtx->wdiReqStatusCB = pDelPeriodicTxPtrnParams->wdiReqStatusCB;
11748 pWDICtx->pReqStatusUserData = pDelPeriodicTxPtrnParams->pUserData;
11749
11750 wdiStatus = WDI_SendIndication(pWDICtx, pSendBuffer, usSendSize);
11751
11752 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
11753 "%s: Sent WLAN_HAL_DEL_PERIODIC_TX_PTRN_IND to HAL.", __func__);
11754
11755 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus : WDI_STATUS_SUCCESS_SYNC;
11756} /* WDI_ProcessDelPeriodicTxPtrnInd */
11757
Jeff Johnson295189b2012-06-20 16:38:30 -070011758/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070011759 MISC CONTROL PROCESSING REQUEST API
Jeff Johnson295189b2012-06-20 16:38:30 -070011760==========================================================================*/
11761/**
Jeff Johnsone7245742012-09-05 17:12:55 -070011762 @brief Process Channel Switch Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070011763 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011764
11765 @param pWDICtx: pointer to the WLAN DAL context
11766 pEventData: pointer to the event information structure
11767
Jeff Johnson295189b2012-06-20 16:38:30 -070011768 @see
11769 @return Result of the function call
11770*/
11771WDI_Status
11772WDI_ProcessChannelSwitchReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011773(
Jeff Johnson295189b2012-06-20 16:38:30 -070011774 WDI_ControlBlockType* pWDICtx,
11775 WDI_EventInfoType* pEventData
11776)
11777{
11778 WDI_SwitchChReqParamsType* pwdiSwitchChParams;
11779 WDI_SwitchChRspCb wdiSwitchChRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011780 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011781 wpt_uint16 usDataOffset = 0;
11782 wpt_uint16 usSendSize = 0;
11783 tSwitchChannelReqMsg halSwitchChannelReq = {{0}};
11784 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11785
11786 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011787 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011788 -------------------------------------------------------------------------*/
11789 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
11790 ( NULL == pEventData->pCBfnc ))
11791 {
11792 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011793 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011794 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011795 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011796 }
11797
11798 pwdiSwitchChParams = (WDI_SwitchChReqParamsType*)pEventData->pEventData;
11799 wdiSwitchChRspCb = (WDI_SwitchChRspCb)pEventData->pCBfnc;
11800 /*-----------------------------------------------------------------------
11801 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070011802 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070011803 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011804 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_CH_SWITCH_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011805 sizeof(halSwitchChannelReq.switchChannelParams),
11806 &pSendBuffer, &usDataOffset, &usSendSize))||
11807 ( usSendSize < (usDataOffset + sizeof(halSwitchChannelReq.switchChannelParams) )))
11808 {
11809 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080011810 "Unable to get send buffer in channel switch req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070011811 pEventData, pwdiSwitchChParams, wdiSwitchChRspCb);
11812 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011813 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011814 }
11815
Jeff Johnsone7245742012-09-05 17:12:55 -070011816 halSwitchChannelReq.switchChannelParams.channelNumber =
Jeff Johnson295189b2012-06-20 16:38:30 -070011817 pwdiSwitchChParams->wdiChInfo.ucChannel;
Jeff Johnsone7245742012-09-05 17:12:55 -070011818#ifndef WLAN_FEATURE_VOWIFI
11819 halSwitchChannelReq.switchChannelParams.localPowerConstraint =
Jeff Johnson295189b2012-06-20 16:38:30 -070011820 pwdiSwitchChParams->wdiChInfo.ucLocalPowerConstraint;
11821#endif
Jeff Johnsone7245742012-09-05 17:12:55 -070011822 halSwitchChannelReq.switchChannelParams.secondaryChannelOffset =
Jeff Johnson295189b2012-06-20 16:38:30 -070011823 pwdiSwitchChParams->wdiChInfo.wdiSecondaryChannelOffset;
11824
11825#ifdef WLAN_FEATURE_VOWIFI
11826 halSwitchChannelReq.switchChannelParams.maxTxPower
Jeff Johnsone7245742012-09-05 17:12:55 -070011827 = pwdiSwitchChParams->wdiChInfo.cMaxTxPower;
Jeff Johnson295189b2012-06-20 16:38:30 -070011828 wpalMemoryCopy(halSwitchChannelReq.switchChannelParams.selfStaMacAddr,
11829 pwdiSwitchChParams->wdiChInfo.macSelfStaMacAddr,
11830 WDI_MAC_ADDR_LEN);
11831 wpalMemoryCopy(halSwitchChannelReq.switchChannelParams.bssId,
11832 pwdiSwitchChParams->wdiChInfo.macBSSId,
11833 WDI_MAC_ADDR_LEN);
11834#endif
Jeff Johnsone7245742012-09-05 17:12:55 -070011835 wpalMemoryCopy( pSendBuffer+usDataOffset,
11836 &halSwitchChannelReq.switchChannelParams,
11837 sizeof(halSwitchChannelReq.switchChannelParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070011838
11839 pWDICtx->wdiReqStatusCB = pwdiSwitchChParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011840 pWDICtx->pReqStatusUserData = pwdiSwitchChParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011841
11842 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011843 Send Switch Channel Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011844 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011845 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11846 wdiSwitchChRspCb, pEventData->pUserData, WDI_CH_SWITCH_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011847}/*WDI_ProcessChannelSwitchReq*/
11848
11849/**
Kalikinkar dhara1e83b772014-02-06 12:59:22 -080011850 @brief Process Channel Switch Request function (called when
11851 Main FSM allows it)
11852
11853 @param pWDICtx: pointer to the WLAN DAL context
11854 pEventData: pointer to the event information structure
11855
11856 @see
11857 @return Result of the function call
11858*/
11859WDI_Status WDI_ProcessChannelSwitchReq_V1
11860(
11861 WDI_ControlBlockType* pWDICtx,
11862 WDI_EventInfoType* pEventData
11863)
11864{
11865 WDI_SwitchChReqParamsType_V1* pwdiSwitchChParams;
11866 WDI_SwitchChRspCb_V1 wdiSwitchChRspCb;
11867 wpt_uint8* pSendBuffer = NULL;
11868 wpt_uint16 usDataOffset = 0;
11869 wpt_uint16 usSendSize = 0;
11870 tSwitchChannelReqMsg_V1 halSwitchChannelReq = {{0}};
11871 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11872
11873 /*-------------------------------------------------------------------------
11874 Sanity check
11875 -------------------------------------------------------------------------*/
11876 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
11877 ( NULL == pEventData->pCBfnc ))
11878 {
11879 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11880 "%s: Invalid parameters", __func__);
11881 WDI_ASSERT(0);
11882 return WDI_STATUS_E_FAILURE;
11883 }
11884
11885 pwdiSwitchChParams = (WDI_SwitchChReqParamsType_V1*)pEventData->pEventData;
11886 wdiSwitchChRspCb = (WDI_SwitchChRspCb_V1)pEventData->pCBfnc;
11887 /*-----------------------------------------------------------------------
11888 Get message buffer
11889 ! TO DO : proper conversion into the HAL Message Request Format
11890 -----------------------------------------------------------------------*/
11891 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
11892 WDI_CH_SWITCH_REQ_V1,
11893 sizeof(halSwitchChannelReq.switchChannelParams_V1),
11894 &pSendBuffer, &usDataOffset, &usSendSize))||
11895 ( usSendSize < (usDataOffset +
11896 sizeof(halSwitchChannelReq.switchChannelParams_V1) )))
11897 {
11898 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11899 "Unable to get send buffer in channel switch req %p %p %p",
11900 pEventData, pwdiSwitchChParams, wdiSwitchChRspCb);
11901 WDI_ASSERT(0);
11902 return WDI_STATUS_E_FAILURE;
11903 }
11904
11905 halSwitchChannelReq.switchChannelParams_V1.channelSwitchSrc =
11906 pwdiSwitchChParams->wdiChInfo.channelSwitchSrc;
11907
11908 halSwitchChannelReq.switchChannelParams_V1.channelNumber =
11909 pwdiSwitchChParams->wdiChInfo.ucChannel;
11910#ifndef WLAN_FEATURE_VOWIFI
11911 halSwitchChannelReq.switchChannelParams_V1.localPowerConstraint =
11912 pwdiSwitchChParams->wdiChInfo.ucLocalPowerConstraint;
11913#endif
11914 halSwitchChannelReq.switchChannelParams_V1.secondaryChannelOffset =
11915 pwdiSwitchChParams->wdiChInfo.wdiSecondaryChannelOffset;
11916
11917#ifdef WLAN_FEATURE_VOWIFI
11918 halSwitchChannelReq.switchChannelParams_V1.maxTxPower
11919 = pwdiSwitchChParams->wdiChInfo.cMaxTxPower;
11920 wpalMemoryCopy(halSwitchChannelReq.switchChannelParams_V1.selfStaMacAddr,
11921 pwdiSwitchChParams->wdiChInfo.macSelfStaMacAddr,
11922 WDI_MAC_ADDR_LEN);
11923 wpalMemoryCopy(halSwitchChannelReq.switchChannelParams_V1.bssId,
11924 pwdiSwitchChParams->wdiChInfo.macBSSId,
11925 WDI_MAC_ADDR_LEN);
11926#endif
11927 wpalMemoryCopy( pSendBuffer+usDataOffset,
11928 &halSwitchChannelReq.switchChannelParams_V1,
11929 sizeof(halSwitchChannelReq.switchChannelParams_V1));
11930
11931 pWDICtx->wdiReqStatusCB = pwdiSwitchChParams->wdiReqStatusCB;
11932 pWDICtx->pReqStatusUserData = pwdiSwitchChParams->pUserData;
11933
11934 /*-------------------------------------------------------------------------
11935 Send Switch Channel Request to HAL
11936 -------------------------------------------------------------------------*/
11937 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11938 wdiSwitchChRspCb, pEventData->pUserData,
11939 WDI_CH_SWITCH_RESP_V1);
11940}/*WDI_ProcessChannelSwitchReq_V1*/
11941
11942/**
Jeff Johnsone7245742012-09-05 17:12:55 -070011943 @brief Process Config STA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070011944 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011945
11946 @param pWDICtx: pointer to the WLAN DAL context
11947 pEventData: pointer to the event information structure
11948
Jeff Johnson295189b2012-06-20 16:38:30 -070011949 @see
11950 @return Result of the function call
11951*/
11952WDI_Status
11953WDI_ProcessConfigStaReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011954(
Jeff Johnson295189b2012-06-20 16:38:30 -070011955 WDI_ControlBlockType* pWDICtx,
11956 WDI_EventInfoType* pEventData
11957)
11958{
11959 WDI_ConfigSTAReqParamsType* pwdiConfigSTAParams;
11960 WDI_ConfigSTARspCb wdiConfigSTARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011961 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070011962 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070011963 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011964 wpt_uint16 usDataOffset = 0;
11965 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070011966 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070011967
Jeff Johnsone7245742012-09-05 17:12:55 -070011968 tConfigStaReqMsg halConfigStaReqMsg;
11969 wpt_uint16 uMsgSize = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070011970 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11971
11972 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011973 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011974 -------------------------------------------------------------------------*/
11975 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
11976 ( NULL == pEventData->pCBfnc ))
11977 {
11978 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011979 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011980 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011981 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011982 }
11983
Abhishek Singh6927fa02014-06-27 17:19:55 +053011984 wpalMemoryZero(&halConfigStaReqMsg, sizeof(tConfigStaReqMsg));
Jeff Johnson295189b2012-06-20 16:38:30 -070011985 pwdiConfigSTAParams = (WDI_ConfigSTAReqParamsType*)pEventData->pEventData;
11986 wdiConfigSTARspCb = (WDI_ConfigSTARspCb)pEventData->pCBfnc;
11987 /*-------------------------------------------------------------------------
11988 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070011989 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070011990 -------------------------------------------------------------------------*/
11991 wpalMutexAcquire(&pWDICtx->wptMutex);
11992
11993 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011994 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070011995 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011996 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
11997 pwdiConfigSTAParams->wdiReqInfo.macBSSID,
11998 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070011999
Jeff Johnsone7245742012-09-05 17:12:55 -070012000 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070012001 {
Jeff Johnsone7245742012-09-05 17:12:55 -070012002 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
12003 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
12004 __func__, MAC_ADDR_ARRAY(pwdiConfigSTAParams->wdiReqInfo.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070012005
12006 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070012007 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070012008 }
12009
12010 /*------------------------------------------------------------------------
12011 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070012012 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070012013 ------------------------------------------------------------------------*/
12014 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
12015 {
Jeff Johnsone7245742012-09-05 17:12:55 -070012016 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12017 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
12018 __func__, MAC_ADDR_ARRAY(pwdiConfigSTAParams->wdiReqInfo.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070012019
Jeff Johnsone7245742012-09-05 17:12:55 -070012020 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070012021 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070012022 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070012023 }
12024
12025 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070012026
12027 /* Allocation of StaReqMsg Memory Based on Firmware Capabilities */
12028#ifdef WLAN_FEATURE_11AC
12029 if (WDI_getFwWlanFeatCaps(DOT11AC))
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070012030 uMsgSize = sizeof(halConfigStaReqMsg.uStaParams.configStaParams_V1); // Version-1 For 11AC
Jeff Johnsone7245742012-09-05 17:12:55 -070012031 else
12032#endif
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070012033 uMsgSize = sizeof(halConfigStaReqMsg.uStaParams.configStaParams); // Version-0 Default
Jeff Johnsone7245742012-09-05 17:12:55 -070012034
Jeff Johnson295189b2012-06-20 16:38:30 -070012035 /*-----------------------------------------------------------------------
12036 Get message buffer
12037 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012038 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_CONFIG_STA_REQ,
12039 uMsgSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070012040 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070012041 ( usSendSize < (usDataOffset + uMsgSize )))
Jeff Johnson295189b2012-06-20 16:38:30 -070012042 {
12043 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012044 "Unable to get send buffer in config sta req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070012045 pEventData, pwdiConfigSTAParams, wdiConfigSTARspCb);
12046 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012047 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012048 }
12049
12050 /*Copy the station context*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012051 WDI_CopyWDIStaCtxToHALStaCtx( &halConfigStaReqMsg.uStaParams.configStaParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070012052 &pwdiConfigSTAParams->wdiReqInfo);
12053
12054 if(pwdiConfigSTAParams->wdiReqInfo.wdiSTAType == WDI_STA_ENTRY_SELF)
12055 {
12056 /* Need to fill in the self STA Index */
Jeff Johnsone7245742012-09-05 17:12:55 -070012057 if ( WDI_STATUS_SUCCESS !=
Jeff Johnson295189b2012-06-20 16:38:30 -070012058 WDI_STATableFindStaidByAddr(pWDICtx,
12059 pwdiConfigSTAParams->wdiReqInfo.macSTA,
Jeff Johnsone7245742012-09-05 17:12:55 -070012060 (wpt_uint8*)&halConfigStaReqMsg.uStaParams.configStaParams.staIdx ))
Jeff Johnson295189b2012-06-20 16:38:30 -070012061 {
12062 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012063 MAC_ADDRESS_STR
12064 ": This station does not exist in the WDI Station Table",
12065 MAC_ADDR_ARRAY(pwdiConfigSTAParams->wdiReqInfo.macSTA));
Jeff Johnson295189b2012-06-20 16:38:30 -070012066 wpalMutexRelease(&pWDICtx->wptMutex);
Madan Mohan Koyyalamudif244d8f2012-11-29 11:21:05 -080012067 wpalMemoryFree(pSendBuffer);
Jeff Johnsone7245742012-09-05 17:12:55 -070012068 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012069 }
12070 }
12071 else
12072 {
12073 /* Need to fill in the STA Index to invalid, since at this point we have not
12074 yet received it from HAL */
Gopichand Nakkalae7cbc5d2013-03-27 21:09:23 -070012075 halConfigStaReqMsg.uStaParams.configStaParams.staIdx = pwdiConfigSTAParams->wdiReqInfo.staIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070012076 }
12077
12078 /* Need to fill in the BSS index */
Jeff Johnsone7245742012-09-05 17:12:55 -070012079 halConfigStaReqMsg.uStaParams.configStaParams.bssIdx = pBSSSes->ucBSSIdx;
Madan Mohan Koyyalamudi0e4acab2012-11-02 12:46:40 -070012080
Jeff Johnsone7245742012-09-05 17:12:55 -070012081 wpalMemoryCopy( pSendBuffer+usDataOffset,
12082 &halConfigStaReqMsg.uStaParams,
Madan Mohan Koyyalamudi0e4acab2012-11-02 12:46:40 -070012083 uMsgSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070012084
12085 pWDICtx->wdiReqStatusCB = pwdiConfigSTAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012086 pWDICtx->pReqStatusUserData = pwdiConfigSTAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012087
Jeff Johnsone7245742012-09-05 17:12:55 -070012088 wpalMemoryCopy( &pWDICtx->wdiCachedConfigStaReq,
12089 pwdiConfigSTAParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070012090 sizeof(pWDICtx->wdiCachedConfigStaReq));
12091
12092 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012093 Send Config STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012094 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012095 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12096 wdiConfigSTARspCb, pEventData->pUserData, WDI_CONFIG_STA_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012097}/*WDI_ProcessConfigStaReq*/
12098
12099
12100/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012101 @brief Process Set Link State Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070012102 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012103
12104 @param pWDICtx: pointer to the WLAN DAL context
12105 pEventData: pointer to the event information structure
12106
Jeff Johnson295189b2012-06-20 16:38:30 -070012107 @see
12108 @return Result of the function call
12109*/
12110WDI_Status
12111WDI_ProcessSetLinkStateReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012112(
Jeff Johnson295189b2012-06-20 16:38:30 -070012113 WDI_ControlBlockType* pWDICtx,
12114 WDI_EventInfoType* pEventData
12115)
12116{
12117 WDI_SetLinkReqParamsType* pwdiSetLinkParams;
12118 WDI_SetLinkStateRspCb wdiSetLinkRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070012119 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070012120 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070012121 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012122 wpt_uint16 usDataOffset = 0;
12123 wpt_uint16 usSendSize = 0;
12124 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnsone7245742012-09-05 17:12:55 -070012125 tLinkStateParams halLinkStateReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070012126 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12127
12128 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012129 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012130 -------------------------------------------------------------------------*/
12131 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
12132 ( NULL == pEventData->pCBfnc ))
12133 {
12134 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012135 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012136 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012137 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012138 }
12139
12140 pwdiSetLinkParams = (WDI_SetLinkReqParamsType*)pEventData->pEventData;
12141 wdiSetLinkRspCb = (WDI_SetLinkStateRspCb)pEventData->pCBfnc;
12142 /*-------------------------------------------------------------------------
12143 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070012144 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070012145 -------------------------------------------------------------------------*/
12146 wpalMutexAcquire(&pWDICtx->wptMutex);
12147
12148 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012149 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070012150 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012151 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
12152 pwdiSetLinkParams->wdiLinkInfo.macBSSID,
12153 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070012154
Jeff Johnsone7245742012-09-05 17:12:55 -070012155 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070012156 {
Madan Mohan Koyyalamudi891e9492012-10-21 12:19:31 -070012157 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070012158 "%s: Set link request received outside association session. macBSSID " MAC_ADDRESS_STR,
12159 __func__, MAC_ADDR_ARRAY(pwdiSetLinkParams->wdiLinkInfo.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070012160 }
12161 else
12162 {
12163 /*------------------------------------------------------------------------
12164 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070012165 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070012166 ------------------------------------------------------------------------*/
12167 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
12168 {
Jeff Johnsone7245742012-09-05 17:12:55 -070012169 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12170 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
12171 __func__, MAC_ADDR_ARRAY(pwdiSetLinkParams->wdiLinkInfo.macBSSID));
12172
12173 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070012174 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070012175 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070012176 }
12177 }
12178 /* If the link is set to enter IDLE - the Session allocated for this BSS
12179 will be deleted on the Set Link State response coming from HAL
12180 - cache the request for response processing */
Jeff Johnsone7245742012-09-05 17:12:55 -070012181 wpalMemoryCopy(&pWDICtx->wdiCacheSetLinkStReq, pwdiSetLinkParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070012182 sizeof(pWDICtx->wdiCacheSetLinkStReq));
12183
12184 wpalMutexRelease(&pWDICtx->wptMutex);
12185 /*-----------------------------------------------------------------------
12186 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070012187 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070012188 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012189
12190 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_LINK_ST_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012191 sizeof(halLinkStateReqMsg),
12192 &pSendBuffer, &usDataOffset, &usSendSize))||
12193 ( usSendSize < (usDataOffset + sizeof(halLinkStateReqMsg) )))
12194 {
12195 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012196 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070012197 pEventData, pwdiSetLinkParams, wdiSetLinkRspCb);
12198 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012199 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012200 }
12201
12202 wpalMemoryCopy(halLinkStateReqMsg.bssid,
12203 pwdiSetLinkParams->wdiLinkInfo.macBSSID, WDI_MAC_ADDR_LEN);
12204
12205 wpalMemoryCopy(halLinkStateReqMsg.selfMacAddr,
12206 pwdiSetLinkParams->wdiLinkInfo.macSelfStaMacAddr, WDI_MAC_ADDR_LEN);
12207
Jeff Johnsone7245742012-09-05 17:12:55 -070012208 halLinkStateReqMsg.state =
Jeff Johnson295189b2012-06-20 16:38:30 -070012209 WDI_2_HAL_LINK_STATE(pwdiSetLinkParams->wdiLinkInfo.wdiLinkState);
12210
Jeff Johnsone7245742012-09-05 17:12:55 -070012211 wpalMemoryCopy( pSendBuffer+usDataOffset,
12212 &halLinkStateReqMsg,
12213 sizeof(halLinkStateReqMsg));
Jeff Johnson295189b2012-06-20 16:38:30 -070012214
12215 pWDICtx->wdiReqStatusCB = pwdiSetLinkParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012216 pWDICtx->pReqStatusUserData = pwdiSetLinkParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012217
12218 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012219 Send Set Link State Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012220 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012221 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12222 wdiSetLinkRspCb, pEventData->pUserData, WDI_SET_LINK_ST_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012223}/*WDI_ProcessSetLinkStateReq*/
12224
12225
12226/**
12227 @brief Process Get Stats Request function (called when Main FSM
12228 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012229
12230 @param pWDICtx: pointer to the WLAN DAL context
12231 pEventData: pointer to the event information structure
12232
Jeff Johnson295189b2012-06-20 16:38:30 -070012233 @see
12234 @return Result of the function call
12235*/
12236WDI_Status
12237WDI_ProcessGetStatsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012238(
Jeff Johnson295189b2012-06-20 16:38:30 -070012239 WDI_ControlBlockType* pWDICtx,
12240 WDI_EventInfoType* pEventData
12241)
12242{
12243 WDI_GetStatsReqParamsType* pwdiGetStatsParams;
12244 WDI_GetStatsRspCb wdiGetStatsRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070012245 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012246 wpt_uint16 usDataOffset = 0;
12247 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070012248 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070012249 WDI_BSSSessionType* pBSSSes = NULL;
12250 wpt_macAddr macBSSID;
Jeff Johnsone7245742012-09-05 17:12:55 -070012251 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070012252 tHalStatsReqMsg halStatsReqMsg;
12253 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12254
12255 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012256 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012257 -------------------------------------------------------------------------*/
12258 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData) ||
12259 ( NULL == pEventData->pCBfnc ) )
12260 {
12261 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012262 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012263 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012264 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012265 }
12266
12267 pwdiGetStatsParams = (WDI_GetStatsReqParamsType*)pEventData->pEventData;
12268 wdiGetStatsRspCb = (WDI_GetStatsRspCb)pEventData->pCBfnc;
12269
12270 /*-------------------------------------------------------------------------
12271 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070012272 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070012273 -------------------------------------------------------------------------*/
12274 wpalMutexAcquire(&pWDICtx->wptMutex);
12275
12276 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012277 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070012278 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012279 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
12280 pwdiGetStatsParams->wdiGetStatsParamsInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070012281 &macBSSID))
12282 {
12283 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012284 "This station does not exist in the WDI Station Table %d",
12285 pwdiGetStatsParams->wdiGetStatsParamsInfo.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070012286 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070012287 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012288 }
12289
Jeff Johnsone7245742012-09-05 17:12:55 -070012290 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
12291 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070012292 {
Jeff Johnsone7245742012-09-05 17:12:55 -070012293 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
12294 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
12295 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070012296
12297 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070012298 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070012299 }
12300
12301 /*------------------------------------------------------------------------
12302 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070012303 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070012304 ------------------------------------------------------------------------*/
12305 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
12306 {
Jeff Johnsone7245742012-09-05 17:12:55 -070012307 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12308 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
12309 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070012310
Jeff Johnsone7245742012-09-05 17:12:55 -070012311 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070012312 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070012313 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070012314 }
12315
12316
12317 wpalMutexRelease(&pWDICtx->wptMutex);
12318
12319 /*-----------------------------------------------------------------------
12320 Get message buffer
12321 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012322 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_GET_STATS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012323 sizeof(halStatsReqMsg.statsReqParams),
12324 &pSendBuffer, &usDataOffset, &usSendSize))||
12325 ( usSendSize < (usDataOffset + sizeof(halStatsReqMsg.statsReqParams) )))
12326 {
12327 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012328 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070012329 pEventData, pwdiGetStatsParams, wdiGetStatsRspCb);
12330 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012331 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012332 }
12333
Jeff Johnsone7245742012-09-05 17:12:55 -070012334 halStatsReqMsg.statsReqParams.staId =
Jeff Johnson295189b2012-06-20 16:38:30 -070012335 pwdiGetStatsParams->wdiGetStatsParamsInfo.ucSTAIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070012336 halStatsReqMsg.statsReqParams.statsMask =
Jeff Johnson295189b2012-06-20 16:38:30 -070012337 pwdiGetStatsParams->wdiGetStatsParamsInfo.uStatsMask;
Jeff Johnsone7245742012-09-05 17:12:55 -070012338 wpalMemoryCopy( pSendBuffer+usDataOffset,
12339 &halStatsReqMsg.statsReqParams,
12340 sizeof(halStatsReqMsg.statsReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070012341
12342 pWDICtx->wdiReqStatusCB = pwdiGetStatsParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012343 pWDICtx->pReqStatusUserData = pwdiGetStatsParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012344
12345 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012346 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012347 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012348 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12349 wdiGetStatsRspCb, pEventData->pUserData, WDI_GET_STATS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012350}/*WDI_ProcessGetStatsReq*/
12351
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -080012352#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_ESE || defined(FEATURE_WLAN_LFR)
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -080012353/**
12354 @brief Process Get Roam Rssi Request function (called when Main FSM
12355 allows it)
12356
12357 @param pWDICtx: pointer to the WLAN DAL context
12358 pEventData: pointer to the event information structure
12359
12360 @see
12361 @return Result of the function call
12362*/
12363WDI_Status
12364WDI_ProcessGetRoamRssiReq
12365(
12366 WDI_ControlBlockType* pWDICtx,
12367 WDI_EventInfoType* pEventData
12368)
12369{
12370 WDI_GetRoamRssiReqParamsType* pwdiGetRoamRssiParams;
12371 WDI_GetStatsRspCb wdiGetStatsRspCb;
12372 wpt_uint8* pSendBuffer = NULL;
12373 wpt_uint16 usDataOffset = 0;
12374 wpt_uint16 usSendSize = 0;
12375 wpt_uint8 ucCurrentBSSSesIdx = 0;
12376 WDI_BSSSessionType* pBSSSes = NULL;
12377 wpt_macAddr macBSSID;
12378 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
12379 tHalGetRoamRssiReqMsg halRssiRoamReqMsg;
12380 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12381 /*-------------------------------------------------------------------------
12382 Sanity check
12383 -------------------------------------------------------------------------*/
12384 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData) ||
12385 ( NULL == pEventData->pCBfnc ) )
12386 {
12387 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12388 "%s: Invalid parameters", __func__);
12389 WDI_ASSERT(0);
12390 return WDI_STATUS_E_FAILURE;
12391 }
12392
12393 pwdiGetRoamRssiParams = (WDI_GetRoamRssiReqParamsType*)pEventData->pEventData;
12394 wdiGetStatsRspCb = (WDI_GetStatsRspCb)pEventData->pCBfnc;
12395
12396 /*-------------------------------------------------------------------------
12397 Check to see if we are in the middle of an association, if so queue, if
12398 not it means it is free to process request
12399 -------------------------------------------------------------------------*/
12400 wpalMutexAcquire(&pWDICtx->wptMutex);
12401
12402 /*------------------------------------------------------------------------
12403 Find the BSS for which the request is made
12404 ------------------------------------------------------------------------*/
12405 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
12406 pwdiGetRoamRssiParams->wdiGetRoamRssiParamsInfo.ucSTAIdx,
12407 &macBSSID))
12408 {
12409 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012410 "This station does not exist in the WDI Station Table %d",
12411 pwdiGetRoamRssiParams->wdiGetRoamRssiParamsInfo.ucSTAIdx);
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -080012412 wpalMutexRelease(&pWDICtx->wptMutex);
12413 return WDI_STATUS_E_FAILURE;
12414 }
12415
12416 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
12417 if ( NULL == pBSSSes )
12418 {
12419 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
12420 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
12421 __func__, MAC_ADDR_ARRAY(macBSSID));
12422
12423 wpalMutexRelease(&pWDICtx->wptMutex);
12424 return WDI_STATUS_E_NOT_ALLOWED;
12425 }
12426
12427 /*------------------------------------------------------------------------
12428 Check if this BSS is being currently processed or queued,
12429 if queued - queue the new request as well
12430 ------------------------------------------------------------------------*/
12431 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
12432 {
12433 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12434 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
12435 __func__, MAC_ADDR_ARRAY(macBSSID));
12436
12437 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
12438 wpalMutexRelease(&pWDICtx->wptMutex);
12439 return wdiStatus;
12440 }
12441
12442 wpalMutexRelease(&pWDICtx->wptMutex);
12443
12444 /*-----------------------------------------------------------------------
12445 Get message buffer
12446 -----------------------------------------------------------------------*/
12447 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_GET_ROAM_RSSI_REQ,
12448 sizeof(halRssiRoamReqMsg.roamRssiReqParams),
12449 &pSendBuffer, &usDataOffset, &usSendSize))||
12450 ( usSendSize < (usDataOffset + sizeof(halRssiRoamReqMsg.roamRssiReqParams) )))
12451 {
12452 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012453 "Unable to get send buffer in set bss key req %p %p %p",
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -080012454 pEventData, pwdiGetRoamRssiParams, wdiGetStatsRspCb);
12455 WDI_ASSERT(0);
12456 return WDI_STATUS_E_FAILURE;
12457 }
12458
12459 halRssiRoamReqMsg.roamRssiReqParams.staId =
12460 pwdiGetRoamRssiParams->wdiGetRoamRssiParamsInfo.ucSTAIdx;
12461 wpalMemoryCopy( pSendBuffer+usDataOffset,
12462 &halRssiRoamReqMsg.roamRssiReqParams,
12463 sizeof(halRssiRoamReqMsg.roamRssiReqParams));
12464
12465 pWDICtx->wdiReqStatusCB = pwdiGetRoamRssiParams->wdiReqStatusCB;
12466 pWDICtx->pReqStatusUserData = pwdiGetRoamRssiParams->pUserData;
12467
12468 /*-------------------------------------------------------------------------
12469 Send Get STA Request to HAL
12470 -------------------------------------------------------------------------*/
12471 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12472 wdiGetStatsRspCb, pEventData->pUserData, WDI_GET_ROAM_RSSI_RESP);
12473}/*WDI_ProcessGetRoamRssiReq*/
12474#endif
12475
Jeff Johnson295189b2012-06-20 16:38:30 -070012476/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012477 @brief Process Update Cfg Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070012478 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012479
12480 @param pWDICtx: pointer to the WLAN DAL context
12481 pEventData: pointer to the event information structure
12482
Jeff Johnson295189b2012-06-20 16:38:30 -070012483 @see
12484 @return Result of the function call
12485*/
12486WDI_Status
12487WDI_ProcessUpdateCfgReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012488(
Jeff Johnson295189b2012-06-20 16:38:30 -070012489 WDI_ControlBlockType* pWDICtx,
12490 WDI_EventInfoType* pEventData
12491)
12492{
12493 WDI_UpdateCfgReqParamsType* pwdiUpdateCfgParams = NULL;
12494 WDI_UpdateCfgRspCb wdiUpdateCfgRspCb = NULL;
12495
Jeff Johnsone7245742012-09-05 17:12:55 -070012496 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012497 wpt_uint16 usDataOffset = 0;
12498 wpt_uint16 usSendSize = 0;
12499 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12500
12501 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012502 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012503 -------------------------------------------------------------------------*/
12504 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
12505 ( NULL == pEventData->pCBfnc))
12506 {
12507 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012508 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012509 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012510 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012511 }
12512
12513 pwdiUpdateCfgParams = (WDI_UpdateCfgReqParamsType*)pEventData->pEventData;
12514 wdiUpdateCfgRspCb = (WDI_UpdateCfgRspCb)pEventData->pCBfnc;
12515
12516 /*-----------------------------------------------------------------------
12517 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070012518 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070012519 -----------------------------------------------------------------------*/
12520
Jeff Johnsone7245742012-09-05 17:12:55 -070012521 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_CFG_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012522 pwdiUpdateCfgParams->uConfigBufferLen + sizeof(wpt_uint32),
12523 &pSendBuffer, &usDataOffset, &usSendSize))||
12524 ( usSendSize < (usDataOffset + pwdiUpdateCfgParams->uConfigBufferLen)))
12525 {
12526 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012527 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070012528 pEventData, pwdiUpdateCfgParams, wdiUpdateCfgRspCb);
12529 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012530 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012531 }
12532
Jeff Johnsone7245742012-09-05 17:12:55 -070012533 wpalMemoryCopy( pSendBuffer+usDataOffset,
12534 &pwdiUpdateCfgParams->uConfigBufferLen,
12535 sizeof(wpt_uint32));
12536 wpalMemoryCopy( pSendBuffer+usDataOffset+sizeof(wpt_uint32),
12537 pwdiUpdateCfgParams->pConfigBuffer,
12538 pwdiUpdateCfgParams->uConfigBufferLen);
Jeff Johnson295189b2012-06-20 16:38:30 -070012539
12540 pWDICtx->wdiReqStatusCB = pwdiUpdateCfgParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012541 pWDICtx->pReqStatusUserData = pwdiUpdateCfgParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012542
12543 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012544 Send Update Cfg Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012545 -------------------------------------------------------------------------*/
12546
Jeff Johnsone7245742012-09-05 17:12:55 -070012547 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12548 wdiUpdateCfgRspCb, pEventData->pUserData, WDI_UPDATE_CFG_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012549
12550}/*WDI_ProcessUpdateCfgReq*/
12551
12552
12553/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012554 @brief Process Add BA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070012555 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012556
12557 @param pWDICtx: pointer to the WLAN DAL context
12558 pEventData: pointer to the event information structure
12559
Jeff Johnson295189b2012-06-20 16:38:30 -070012560 @see
12561 @return Result of the function call
12562*/
12563WDI_Status
12564WDI_ProcessAddBAReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012565(
Jeff Johnson295189b2012-06-20 16:38:30 -070012566 WDI_ControlBlockType* pWDICtx,
12567 WDI_EventInfoType* pEventData
12568)
12569{
12570 WDI_AddBAReqParamsType* pwdiAddBAParams;
12571 WDI_AddBARspCb wdiAddBARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070012572 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070012573 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070012574 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012575 wpt_uint16 usDataOffset = 0;
12576 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070012577 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070012578 wpt_macAddr macBSSID;
12579
12580 tAddBAReqMsg halAddBAReq;
12581 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12582
12583 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012584 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012585 -------------------------------------------------------------------------*/
12586 if (( NULL == pEventData ) ||
12587 ( NULL == pEventData->pEventData) ||
12588 ( NULL == pEventData->pCBfnc ))
12589 {
12590 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012591 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012592 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012593 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012594 }
12595
12596 pwdiAddBAParams = (WDI_AddBAReqParamsType*)pEventData->pEventData;
12597 wdiAddBARspCb = (WDI_AddBARspCb)pEventData->pCBfnc;
12598
12599 /*-------------------------------------------------------------------------
12600 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070012601 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070012602 -------------------------------------------------------------------------*/
12603 wpalMutexAcquire(&pWDICtx->wptMutex);
12604
12605 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012606 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070012607 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012608 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
12609 pwdiAddBAParams->wdiBAInfoType.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070012610 &macBSSID))
12611 {
12612 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012613 "This station does not exist in the WDI Station Table %d",
12614 pwdiAddBAParams->wdiBAInfoType.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070012615 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070012616 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012617 }
12618
Jeff Johnsone7245742012-09-05 17:12:55 -070012619 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
12620 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070012621 {
Jeff Johnsone7245742012-09-05 17:12:55 -070012622 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
12623 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
12624 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070012625
12626 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070012627 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070012628 }
12629
12630 /*------------------------------------------------------------------------
12631 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070012632 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070012633 ------------------------------------------------------------------------*/
12634 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
12635 {
Jeff Johnsone7245742012-09-05 17:12:55 -070012636 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12637 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
12638 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070012639
Jeff Johnsone7245742012-09-05 17:12:55 -070012640 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070012641 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070012642 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070012643 }
12644
12645
12646 wpalMutexRelease(&pWDICtx->wptMutex);
12647 /*-----------------------------------------------------------------------
12648 Get message buffer
12649 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012650 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ADD_BA_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012651 sizeof(halAddBAReq.addBAParams),
12652 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070012653 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070012654 (usDataOffset + sizeof(halAddBAReq.addBAParams) )))
12655 {
12656 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012657 "Unable to get send buffer in Add BA req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070012658 pEventData, pwdiAddBAParams, wdiAddBARspCb);
12659 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012660 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012661 }
12662
Jeff Johnsone7245742012-09-05 17:12:55 -070012663 halAddBAReq.addBAParams.baSessionID =
Jeff Johnson295189b2012-06-20 16:38:30 -070012664 pwdiAddBAParams->wdiBAInfoType.ucBaSessionID;
12665 halAddBAReq.addBAParams.winSize = pwdiAddBAParams->wdiBAInfoType.ucWinSize;
12666#ifdef FEATURE_ON_CHIP_REORDERING
Jeff Johnsone7245742012-09-05 17:12:55 -070012667 halAddBAReq.addBAParams.isReorderingDoneOnChip =
Jeff Johnson295189b2012-06-20 16:38:30 -070012668 pwdiAddBAParams->wdiBAInfoType.bIsReorderingDoneOnChip;
12669#endif
12670
Jeff Johnsone7245742012-09-05 17:12:55 -070012671 wpalMemoryCopy( pSendBuffer+usDataOffset,
12672 &halAddBAReq.addBAParams,
12673 sizeof(halAddBAReq.addBAParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070012674
12675 pWDICtx->wdiReqStatusCB = pwdiAddBAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012676 pWDICtx->pReqStatusUserData = pwdiAddBAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012677
12678 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012679 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012680 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012681 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12682 wdiAddBARspCb, pEventData->pUserData,
12683 WDI_ADD_BA_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012684}/*WDI_ProcessAddBAReq*/
12685
12686
12687
12688/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012689 @brief Process Trigger BA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070012690 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012691
12692 @param pWDICtx: pointer to the WLAN DAL context
12693 pEventData: pointer to the event information structure
12694
Jeff Johnson295189b2012-06-20 16:38:30 -070012695 @see
12696 @return Result of the function call
12697*/
12698WDI_Status
12699WDI_ProcessTriggerBAReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012700(
Jeff Johnson295189b2012-06-20 16:38:30 -070012701 WDI_ControlBlockType* pWDICtx,
12702 WDI_EventInfoType* pEventData
12703)
12704{
12705 WDI_TriggerBAReqParamsType* pwdiTriggerBAParams;
12706 WDI_TriggerBARspCb wdiTriggerBARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070012707 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070012708 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070012709 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012710 wpt_uint16 usDataOffset = 0;
12711 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070012712 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070012713 wpt_uint16 index;
12714 wpt_macAddr macBSSID;
Jeff Johnsone7245742012-09-05 17:12:55 -070012715
Jeff Johnson295189b2012-06-20 16:38:30 -070012716 tTriggerBAReqMsg halTriggerBAReq;
12717 tTriggerBaReqCandidate* halTriggerBACandidate;
12718 WDI_TriggerBAReqCandidateType* wdiTriggerBACandidate;
12719 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12720
12721 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012722 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012723 -------------------------------------------------------------------------*/
12724 if (( NULL == pEventData ) ||
12725 ( NULL == pEventData->pEventData ) ||
12726 ( NULL == pEventData->pCBfnc ))
12727 {
12728 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012729 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012730 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012731 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012732 }
12733
12734 pwdiTriggerBAParams = (WDI_TriggerBAReqParamsType*)pEventData->pEventData;
12735 wdiTriggerBARspCb = (WDI_TriggerBARspCb)pEventData->pCBfnc;
12736 /*-------------------------------------------------------------------------
12737 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070012738 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070012739 -------------------------------------------------------------------------*/
12740 wpalMutexAcquire(&pWDICtx->wptMutex);
12741
12742 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012743 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070012744 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012745 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
12746 pwdiTriggerBAParams->wdiTriggerBAInfoType.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070012747 &macBSSID))
12748 {
12749 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012750 "This station does not exist in the WDI Station Table %d",
12751 pwdiTriggerBAParams->wdiTriggerBAInfoType.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070012752 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070012753 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012754 }
12755
Jeff Johnsone7245742012-09-05 17:12:55 -070012756 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
12757 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070012758 {
Jeff Johnsone7245742012-09-05 17:12:55 -070012759 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
12760 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
12761 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070012762
12763 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070012764 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070012765 }
12766
12767 /*------------------------------------------------------------------------
12768 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070012769 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070012770 ------------------------------------------------------------------------*/
12771 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
12772 {
Jeff Johnsone7245742012-09-05 17:12:55 -070012773 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12774 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
12775 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070012776
Jeff Johnsone7245742012-09-05 17:12:55 -070012777 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070012778 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070012779 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070012780 }
12781
12782
12783 wpalMutexRelease(&pWDICtx->wptMutex);
12784 /*-----------------------------------------------------------------------
12785 Get message buffer
12786 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012787 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
12788 WDI_TRIGGER_BA_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012789 sizeof(halTriggerBAReq.triggerBAParams) +
Jeff Johnsone7245742012-09-05 17:12:55 -070012790 (sizeof(tTriggerBaReqCandidate) *
Jeff Johnson295189b2012-06-20 16:38:30 -070012791 pwdiTriggerBAParams->wdiTriggerBAInfoType.usBACandidateCnt),
12792 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070012793 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070012794 (usDataOffset + sizeof(halTriggerBAReq.triggerBAParams)+
Jeff Johnsone7245742012-09-05 17:12:55 -070012795 (sizeof(tTriggerBaReqCandidate) *
Jeff Johnson295189b2012-06-20 16:38:30 -070012796 pwdiTriggerBAParams->wdiTriggerBAInfoType.usBACandidateCnt) )))
12797 {
12798 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012799 "Unable to get send buffer in Trigger BA req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070012800 pEventData, pwdiTriggerBAParams, wdiTriggerBARspCb);
12801 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012802 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012803 }
12804
Jeff Johnsone7245742012-09-05 17:12:55 -070012805 halTriggerBAReq.triggerBAParams.baSessionID =
Jeff Johnson295189b2012-06-20 16:38:30 -070012806 pwdiTriggerBAParams->wdiTriggerBAInfoType.ucBASessionID;
Jeff Johnsone7245742012-09-05 17:12:55 -070012807 halTriggerBAReq.triggerBAParams.baCandidateCnt =
Jeff Johnson295189b2012-06-20 16:38:30 -070012808 pwdiTriggerBAParams->wdiTriggerBAInfoType.usBACandidateCnt;
12809
Jeff Johnsone7245742012-09-05 17:12:55 -070012810 wpalMemoryCopy( pSendBuffer+usDataOffset,
12811 &halTriggerBAReq.triggerBAParams,
12812 sizeof(halTriggerBAReq.triggerBAParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070012813
Jeff Johnsone7245742012-09-05 17:12:55 -070012814 wdiTriggerBACandidate =
Jeff Johnson295189b2012-06-20 16:38:30 -070012815 (WDI_TriggerBAReqCandidateType*)(pwdiTriggerBAParams + 1);
12816 halTriggerBACandidate = (tTriggerBaReqCandidate*)(pSendBuffer+usDataOffset+
12817 sizeof(halTriggerBAReq.triggerBAParams));
Jeff Johnsone7245742012-09-05 17:12:55 -070012818
12819 for(index = 0 ; index < halTriggerBAReq.triggerBAParams.baCandidateCnt ;
Jeff Johnson295189b2012-06-20 16:38:30 -070012820 index++)
12821 {
12822 halTriggerBACandidate->staIdx = wdiTriggerBACandidate->ucSTAIdx;
12823 halTriggerBACandidate->tidBitmap = wdiTriggerBACandidate->ucTidBitmap;
12824 halTriggerBACandidate++;
12825 wdiTriggerBACandidate++;
12826 }
12827
12828 pWDICtx->wdiReqStatusCB = pwdiTriggerBAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012829 pWDICtx->pReqStatusUserData = pwdiTriggerBAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012830
12831 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012832 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012833 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012834 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12835 wdiTriggerBARspCb, pEventData->pUserData,
12836 WDI_TRIGGER_BA_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012837}/*WDI_ProcessTriggerBAReq*/
12838
12839
12840
12841/**
12842 @brief Process Update Beacon Params Request function (called when Main FSM
12843 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012844
12845 @param pWDICtx: pointer to the WLAN DAL context
12846 pEventData: pointer to the event information structure
12847
Jeff Johnson295189b2012-06-20 16:38:30 -070012848 @see
12849 @return Result of the function call
12850*/
12851WDI_Status
12852WDI_ProcessUpdateBeaconParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012853(
Jeff Johnson295189b2012-06-20 16:38:30 -070012854 WDI_ControlBlockType* pWDICtx,
12855 WDI_EventInfoType* pEventData
12856)
12857{
12858 WDI_UpdateBeaconParamsType* pwdiUpdateBeaconParams;
12859 WDI_UpdateBeaconParamsRspCb wdiUpdateBeaconParamsRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070012860 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012861 wpt_uint16 usDataOffset = 0;
12862 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070012863 tUpdateBeaconParams halUpdateBeaconParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070012864 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12865
12866 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012867 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012868 -------------------------------------------------------------------------*/
12869 if (( NULL == pEventData ) ||
12870 ( NULL == pEventData->pEventData) ||
12871 ( NULL == pEventData->pCBfnc))
12872 {
12873 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012874 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012875 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012876 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012877 }
12878
12879 pwdiUpdateBeaconParams = (WDI_UpdateBeaconParamsType*)pEventData->pEventData;
12880 wdiUpdateBeaconParamsRspCb = (WDI_UpdateBeaconParamsRspCb)pEventData->pCBfnc;
12881 /*-----------------------------------------------------------------------
12882 Get message buffer
12883 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012884 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPD_BCON_PRMS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012885 sizeof(halUpdateBeaconParams),
12886 &pSendBuffer, &usDataOffset, &usSendSize))||
12887 ( usSendSize < (usDataOffset + sizeof(halUpdateBeaconParams) )))
12888 {
12889 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012890 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070012891 pEventData, pwdiUpdateBeaconParams, wdiUpdateBeaconParamsRspCb);
12892 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012893 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012894 }
12895
12896 /*BSS Index of the BSS*/
12897 halUpdateBeaconParams.bssIdx =
12898 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucBssIdx;
12899 /*shortPreamble mode. HAL should update all the STA rates when it
12900 receives this message*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012901 halUpdateBeaconParams.fShortPreamble =
Jeff Johnson295189b2012-06-20 16:38:30 -070012902 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucfShortPreamble;
12903 /* short Slot time.*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012904 halUpdateBeaconParams.fShortSlotTime =
Jeff Johnson295189b2012-06-20 16:38:30 -070012905 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucfShortSlotTime;
12906 /* Beacon Interval */
Jeff Johnsone7245742012-09-05 17:12:55 -070012907 halUpdateBeaconParams.beaconInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070012908 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.usBeaconInterval;
12909
12910 /*Protection related */
Jeff Johnsone7245742012-09-05 17:12:55 -070012911 halUpdateBeaconParams.llaCoexist =
Jeff Johnson295189b2012-06-20 16:38:30 -070012912 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucllaCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070012913 halUpdateBeaconParams.llbCoexist =
Jeff Johnson295189b2012-06-20 16:38:30 -070012914 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucllbCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070012915 halUpdateBeaconParams.llgCoexist =
Jeff Johnson295189b2012-06-20 16:38:30 -070012916 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucllgCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070012917 halUpdateBeaconParams.ht20MhzCoexist =
Jeff Johnson295189b2012-06-20 16:38:30 -070012918 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucHt20MhzCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070012919 halUpdateBeaconParams.llnNonGFCoexist =
Jeff Johnson295189b2012-06-20 16:38:30 -070012920 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucllnNonGFCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070012921 halUpdateBeaconParams.fLsigTXOPProtectionFullSupport =
Jeff Johnson295189b2012-06-20 16:38:30 -070012922 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucfLsigTXOPProtectionFullSupport;
12923 halUpdateBeaconParams.fRIFSMode =
12924 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucfRIFSMode;
Jeff Johnsone7245742012-09-05 17:12:55 -070012925 halUpdateBeaconParams.paramChangeBitmap =
Jeff Johnson295189b2012-06-20 16:38:30 -070012926 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.usChangeBitmap;
12927
Jeff Johnsone7245742012-09-05 17:12:55 -070012928 wpalMemoryCopy( pSendBuffer+usDataOffset, &halUpdateBeaconParams,
12929 sizeof(halUpdateBeaconParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070012930
12931 pWDICtx->wdiReqStatusCB = pwdiUpdateBeaconParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012932 pWDICtx->pReqStatusUserData = pwdiUpdateBeaconParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012933
12934 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012935 Send Del TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012936 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012937 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12938 wdiUpdateBeaconParamsRspCb, pEventData->pUserData, WDI_UPD_BCON_PRMS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012939}/*WDI_ProcessUpdateBeaconParamsReq*/
12940
12941
12942
12943/**
12944 @brief Process Send Beacon template Request function (called when Main FSM
12945 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012946
12947 @param pWDICtx: pointer to the WLAN DAL context
12948 pEventData: pointer to the event information structure
12949
Jeff Johnson295189b2012-06-20 16:38:30 -070012950 @see
12951 @return Result of the function call
12952*/
12953WDI_Status
12954WDI_ProcessSendBeaconParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012955(
Jeff Johnson295189b2012-06-20 16:38:30 -070012956 WDI_ControlBlockType* pWDICtx,
12957 WDI_EventInfoType* pEventData
12958)
12959{
12960 WDI_SendBeaconParamsType* pwdiSendBeaconParams;
12961 WDI_SendBeaconParamsRspCb wdiSendBeaconParamsRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070012962 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012963 wpt_uint16 usDataOffset = 0;
12964 wpt_uint16 usSendSize = 0;
12965 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12966
12967 tSendBeaconReqMsg halSendBeaconReq;
12968 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012969 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012970 -------------------------------------------------------------------------*/
12971 if (( NULL == pEventData ) ||
12972 ( NULL == pEventData->pEventData ) ||
12973 ( NULL == pEventData->pCBfnc ))
12974 {
12975 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012976 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012977 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012978 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012979 }
12980
12981 pwdiSendBeaconParams = (WDI_SendBeaconParamsType*)pEventData->pEventData;
12982 wdiSendBeaconParamsRspCb = (WDI_SendBeaconParamsRspCb)pEventData->pCBfnc;
12983 /*-----------------------------------------------------------------------
12984 Get message buffer
12985 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012986 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SND_BCON_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012987 sizeof(halSendBeaconReq.sendBeaconParam),
12988 &pSendBuffer, &usDataOffset, &usSendSize))||
12989 ( usSendSize < (usDataOffset + sizeof(halSendBeaconReq.sendBeaconParam) )))
12990 {
12991 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012992 "Unable to get send buffer in send beacon req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070012993 pEventData, pwdiSendBeaconParams, wdiSendBeaconParamsRspCb);
12994 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012995 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012996 }
12997
12998 wpalMemoryCopy(halSendBeaconReq.sendBeaconParam.bssId,
12999 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.macBSSID,
13000 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070013001 halSendBeaconReq.sendBeaconParam.beaconLength =
Jeff Johnson295189b2012-06-20 16:38:30 -070013002 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.beaconLength;
13003 wpalMemoryCopy(halSendBeaconReq.sendBeaconParam.beacon,
13004 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.beacon,
13005 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.beaconLength);
Jeff Johnsone7245742012-09-05 17:12:55 -070013006 halSendBeaconReq.sendBeaconParam.timIeOffset =
Jeff Johnson295189b2012-06-20 16:38:30 -070013007 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.timIeOffset;
Gopichand Nakkala81aef732013-03-22 11:15:19 +053013008 /* usP2PIeOffset should be atleast greater than timIeOffset */
13009 if ((pwdiSendBeaconParams->wdiSendBeaconParamsInfo.usP2PIeOffset != 0 ) &&
13010 (pwdiSendBeaconParams->wdiSendBeaconParamsInfo.usP2PIeOffset <
13011 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.timIeOffset))
13012 {
13013 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13014 "Invalid usP2PIeOffset %hu",
13015 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.usP2PIeOffset);
13016 WDI_ASSERT(0);
13017 return WDI_STATUS_E_FAILURE;
13018 }
13019
Jeff Johnsone7245742012-09-05 17:12:55 -070013020 halSendBeaconReq.sendBeaconParam.p2pIeOffset =
Jeff Johnson295189b2012-06-20 16:38:30 -070013021 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.usP2PIeOffset;
Jeff Johnson295189b2012-06-20 16:38:30 -070013022
Jeff Johnsone7245742012-09-05 17:12:55 -070013023 wpalMemoryCopy( pSendBuffer+usDataOffset,
13024 &halSendBeaconReq.sendBeaconParam,
13025 sizeof(halSendBeaconReq.sendBeaconParam));
Jeff Johnson295189b2012-06-20 16:38:30 -070013026
13027 pWDICtx->wdiReqStatusCB = pwdiSendBeaconParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013028 pWDICtx->pReqStatusUserData = pwdiSendBeaconParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013029
13030 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013031 Send Del TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013032 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013033 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13034 wdiSendBeaconParamsRspCb, pEventData->pUserData, WDI_SND_BCON_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013035}/*WDI_ProcessSendBeaconParamsReq*/
13036
13037/**
13038 @brief Process Update Beacon Params Request function (called when Main FSM
13039 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013040
13041 @param pWDICtx: pointer to the WLAN DAL context
13042 pEventData: pointer to the event information structure
13043
Jeff Johnson295189b2012-06-20 16:38:30 -070013044 @see
13045 @return Result of the function call
13046*/
13047WDI_Status
13048WDI_ProcessUpdateProbeRspTemplateReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013049(
Jeff Johnson295189b2012-06-20 16:38:30 -070013050 WDI_ControlBlockType* pWDICtx,
13051 WDI_EventInfoType* pEventData
13052)
13053{
13054 WDI_UpdateProbeRspTemplateParamsType* pwdiUpdateProbeRespTmplParams;
13055 WDI_UpdateProbeRspTemplateRspCb wdiUpdateProbeRespTmplRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070013056 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013057 wpt_uint16 usDataOffset = 0;
13058 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070013059 tSendProbeRespReqParams halUpdateProbeRspTmplParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070013060 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13061
13062 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013063 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013064 -------------------------------------------------------------------------*/
13065 if (( NULL == pEventData ) ||
13066 ( NULL == pEventData->pEventData) ||
13067 ( NULL == pEventData->pCBfnc))
13068 {
13069 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013070 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013071 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013072 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013073 }
13074
Jeff Johnsone7245742012-09-05 17:12:55 -070013075 pwdiUpdateProbeRespTmplParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070013076 (WDI_UpdateProbeRspTemplateParamsType*)pEventData->pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070013077 wdiUpdateProbeRespTmplRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070013078 (WDI_UpdateProbeRspTemplateRspCb)pEventData->pCBfnc;
13079 /*-----------------------------------------------------------------------
13080 Get message buffer
13081 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013082 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPD_PROBE_RSP_TEMPLATE_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013083 sizeof(halUpdateProbeRspTmplParams),
13084 &pSendBuffer, &usDataOffset, &usSendSize))||
13085 ( usSendSize < (usDataOffset + sizeof(halUpdateProbeRspTmplParams) )))
13086 {
13087 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080013088 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070013089 pEventData, pwdiUpdateProbeRespTmplParams, wdiUpdateProbeRespTmplRspCb);
13090 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013091 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013092 }
13093
13094 wpalMemoryCopy(halUpdateProbeRspTmplParams.bssId,
Jeff Johnsone7245742012-09-05 17:12:55 -070013095 pwdiUpdateProbeRespTmplParams->wdiProbeRspTemplateInfo.macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -070013096 WDI_MAC_ADDR_LEN);
13097
Jeff Johnsone7245742012-09-05 17:12:55 -070013098 halUpdateProbeRspTmplParams.probeRespTemplateLen =
Jeff Johnson295189b2012-06-20 16:38:30 -070013099 pwdiUpdateProbeRespTmplParams->wdiProbeRspTemplateInfo.uProbeRespTemplateLen;
13100
13101 wpalMemoryCopy(halUpdateProbeRspTmplParams.pProbeRespTemplate,
13102 pwdiUpdateProbeRespTmplParams->wdiProbeRspTemplateInfo.pProbeRespTemplate,
Jeff Johnsone7245742012-09-05 17:12:55 -070013103 BEACON_TEMPLATE_SIZE);
Jeff Johnson295189b2012-06-20 16:38:30 -070013104
13105
13106 wpalMemoryCopy(halUpdateProbeRspTmplParams.ucProxyProbeReqValidIEBmap,
13107 pwdiUpdateProbeRespTmplParams->wdiProbeRspTemplateInfo.uaProxyProbeReqValidIEBmap,
13108 WDI_PROBE_REQ_BITMAP_IE_LEN);
13109
Jeff Johnsone7245742012-09-05 17:12:55 -070013110 wpalMemoryCopy( pSendBuffer+usDataOffset,
13111 &halUpdateProbeRspTmplParams,
13112 sizeof(halUpdateProbeRspTmplParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070013113
13114 pWDICtx->wdiReqStatusCB = pwdiUpdateProbeRespTmplParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013115 pWDICtx->pReqStatusUserData = pwdiUpdateProbeRespTmplParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013116
13117 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013118 Send Update Probe Resp Template Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013119 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013120 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13121 wdiUpdateProbeRespTmplRspCb, pEventData->pUserData,
13122 WDI_UPD_PROBE_RSP_TEMPLATE_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013123}/*WDI_ProcessUpdateProbeRspTemplateReq*/
13124
13125/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013126 @brief Process NV blob download function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070013127 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013128
13129 @param pWDICtx: pointer to the WLAN DAL context
13130 pEventData: pointer to the event information structure
13131
Jeff Johnson295189b2012-06-20 16:38:30 -070013132 @see
13133 @return Result of the function call
13134*/
13135WDI_Status
13136WDI_ProcessNvDownloadReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013137(
Jeff Johnson295189b2012-06-20 16:38:30 -070013138 WDI_ControlBlockType* pWDICtx,
13139 WDI_EventInfoType* pEventData
13140)
13141{
13142
13143 WDI_NvDownloadReqParamsType* pwdiNvDownloadReqParams = NULL;
13144 WDI_NvDownloadRspCb wdiNvDownloadRspCb = NULL;
13145
13146 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013147 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013148 -------------------------------------------------------------------------*/
13149 if (( NULL == pEventData ) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070013150 ( NULL == (pwdiNvDownloadReqParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070013151 (WDI_NvDownloadReqParamsType*)pEventData->pEventData)) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070013152 ( NULL == (wdiNvDownloadRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070013153 (WDI_NvDownloadRspCb)pEventData->pCBfnc)))
13154 {
13155 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013156 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013157 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013158 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013159 }
13160
13161 /*Intialize the Nv Blob Info */
Jeff Johnsone7245742012-09-05 17:12:55 -070013162 pWDICtx->wdiNvBlobInfo.usTotalFragment =
Jeff Johnson295189b2012-06-20 16:38:30 -070013163 TOTALFRAGMENTS(pwdiNvDownloadReqParams->wdiBlobInfo.uBlobSize);
13164
13165 /*cache the wdi nv request message here if the the first fragment
13166 * To issue the request to HAL for the next fragment */
13167 if( 0 == pWDICtx->wdiNvBlobInfo.usCurrentFragment)
13168 {
Jeff Johnsone7245742012-09-05 17:12:55 -070013169 wpalMemoryCopy(&pWDICtx->wdiCachedNvDownloadReq,
13170 pwdiNvDownloadReqParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070013171 sizeof(pWDICtx->wdiCachedNvDownloadReq));
13172
13173 pWDICtx->pfncRspCB = pEventData->pCBfnc;
13174 pWDICtx->pRspCBUserData = pEventData->pUserData;
13175 }
13176
13177 return WDI_SendNvBlobReq(pWDICtx,pEventData);
13178}
13179
13180/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013181 @brief Process Set Max Tx Power Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070013182 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013183
13184 @param pWDICtx: pointer to the WLAN DAL context
13185 pEventData: pointer to the event information structure
13186
Jeff Johnson295189b2012-06-20 16:38:30 -070013187 @see
13188 @return Result of the function call
13189*/
13190WDI_Status WDI_ProcessSetMaxTxPowerReq
13191(
13192 WDI_ControlBlockType* pWDICtx,
13193 WDI_EventInfoType* pEventData
13194)
13195{
13196 WDI_SetMaxTxPowerParamsType* pwdiSetMaxTxPowerParams = NULL;
13197 WDA_SetMaxTxPowerRspCb wdiSetMaxTxPowerRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070013198 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013199 wpt_uint16 usDataOffset = 0;
13200 wpt_uint16 usSendSize = 0;
13201 tSetMaxTxPwrReq halSetMaxTxPower;
13202 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13203
13204 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013205 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013206 -------------------------------------------------------------------------*/
13207 if (( NULL == pEventData ) ||
13208 ( NULL == pEventData->pEventData ) ||
13209 ( NULL == pEventData->pCBfnc ))
13210 {
13211 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013212 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013213 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013214 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013215 }
Jeff Johnsone7245742012-09-05 17:12:55 -070013216 pwdiSetMaxTxPowerParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070013217 (WDI_SetMaxTxPowerParamsType*)pEventData->pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070013218 wdiSetMaxTxPowerRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070013219 (WDA_SetMaxTxPowerRspCb)pEventData->pCBfnc;
13220
13221 /*-----------------------------------------------------------------------
13222 Get message buffer
13223 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013224if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_MAX_TX_POWER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013225 sizeof(halSetMaxTxPower.setMaxTxPwrParams),
13226 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070013227 ( usSendSize < (usDataOffset + sizeof(halSetMaxTxPower.setMaxTxPwrParams)
Jeff Johnson295189b2012-06-20 16:38:30 -070013228)))
13229 {
13230 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080013231 "Unable to get Set Max Tx Power req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070013232 pEventData, pwdiSetMaxTxPowerParams, wdiSetMaxTxPowerRspCb);
13233 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013234 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013235 }
13236
13237 wpalMemoryCopy(halSetMaxTxPower.setMaxTxPwrParams.bssId,
13238 pwdiSetMaxTxPowerParams->wdiMaxTxPowerInfo.macBSSId,
13239 WDI_MAC_ADDR_LEN);
13240
13241 wpalMemoryCopy(halSetMaxTxPower.setMaxTxPwrParams.selfStaMacAddr,
13242 pwdiSetMaxTxPowerParams->wdiMaxTxPowerInfo.macSelfStaMacAddr,
13243 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070013244 halSetMaxTxPower.setMaxTxPwrParams.power =
Jeff Johnson295189b2012-06-20 16:38:30 -070013245 pwdiSetMaxTxPowerParams->wdiMaxTxPowerInfo.ucPower;
Jeff Johnsone7245742012-09-05 17:12:55 -070013246
13247 wpalMemoryCopy( pSendBuffer+usDataOffset,
13248 &halSetMaxTxPower.setMaxTxPwrParams,
13249 sizeof(halSetMaxTxPower.setMaxTxPwrParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070013250
13251 pWDICtx->wdiReqStatusCB = pwdiSetMaxTxPowerParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013252 pWDICtx->pReqStatusUserData = pwdiSetMaxTxPowerParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013253
13254 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013255 Send Del TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013256 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013257 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13258 wdiSetMaxTxPowerRspCb, pEventData->pUserData,
13259 WDI_SET_MAX_TX_POWER_RESP);
13260
Jeff Johnson295189b2012-06-20 16:38:30 -070013261}
13262
Arif Hussaina5ebce02013-08-09 15:09:58 -070013263/*
13264 @brief Process Set Max Tx Power Per Band Request function (called when Main
13265 FSM allows it)
13266
13267 @param pWDICtx: pointer to the WLAN DAL context
13268 pEventData: pointer to the event information structure
13269
13270 @see
13271 @return Result of the function call
13272*/
13273WDI_Status WDI_ProcessSetMaxTxPowerPerBandReq
13274(
13275 WDI_ControlBlockType* pWDICtx,
13276 WDI_EventInfoType* pEventData
13277)
13278{
13279 WDI_SetMaxTxPowerPerBandParamsType* pwdiSetMaxTxPowerPerBandParams = NULL;
13280 WDA_SetMaxTxPowerPerBandRspCb wdiSetMaxTxPowerPerBandRspCb;
13281 wpt_uint8* pSendBuffer = NULL;
13282 wpt_uint16 usDataOffset = 0;
13283 wpt_uint16 usSendSize = 0;
Arif Hussainf8f080c2014-04-03 09:48:36 -070013284 tpSetMaxTxPwrPerBandParams phalSetMxTxPwrPerBand = NULL;
Arif Hussaina5ebce02013-08-09 15:09:58 -070013285 WDI_Status rValue = WDI_STATUS_SUCCESS;
13286 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13287
13288 /*-------------------------------------------------------------------------
13289 Sanity check
13290 -------------------------------------------------------------------------*/
13291 if (( NULL == pEventData ) ||
13292 ( NULL == pEventData->pEventData ) ||
13293 ( NULL == pEventData->pCBfnc ))
13294 {
13295 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
13296 "%s: Invalid parameters", __func__);
13297 WDI_ASSERT(0);
13298 return WDI_STATUS_E_FAILURE;
13299 }
13300 pwdiSetMaxTxPowerPerBandParams = \
13301 (WDI_SetMaxTxPowerPerBandParamsType*)pEventData->pEventData;
13302
13303 wdiSetMaxTxPowerPerBandRspCb = \
13304 (WDA_SetMaxTxPowerPerBandRspCb)pEventData->pCBfnc;
13305
13306 /*-----------------------------------------------------------------------
13307 Get message buffer
13308 -----------------------------------------------------------------------*/
13309
13310 rValue = WDI_GetMessageBuffer(pWDICtx,
13311 WDI_SET_MAX_TX_POWER_PER_BAND_REQ,
13312 sizeof(tSetMaxTxPwrPerBandParams),
13313 &pSendBuffer, &usDataOffset, &usSendSize);
13314
13315 if ((WDI_STATUS_SUCCESS != rValue)|| (usSendSize <
13316 (usDataOffset + sizeof(tSetMaxTxPwrPerBandParams))))
13317 {
13318 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
13319 "Unable to get Set Max Tx Power Per Band req %p %p %p",
13320 pEventData, pwdiSetMaxTxPowerPerBandParams,
13321 wdiSetMaxTxPowerPerBandRspCb);
13322 WDI_ASSERT(0);
13323 return WDI_STATUS_E_FAILURE;
13324 }
13325
13326
Arif Hussainf8f080c2014-04-03 09:48:36 -070013327 phalSetMxTxPwrPerBand = (tpSetMaxTxPwrPerBandParams)(pSendBuffer + usDataOffset);
13328 phalSetMxTxPwrPerBand->bandInfo = \
Arif Hussaina5ebce02013-08-09 15:09:58 -070013329 pwdiSetMaxTxPowerPerBandParams->wdiMaxTxPowerPerBandInfo.bandInfo;
13330
Arif Hussainf8f080c2014-04-03 09:48:36 -070013331 phalSetMxTxPwrPerBand->power = \
Arif Hussaina5ebce02013-08-09 15:09:58 -070013332 pwdiSetMaxTxPowerPerBandParams->wdiMaxTxPowerPerBandInfo.ucPower;
13333
13334 pWDICtx->wdiReqStatusCB = pwdiSetMaxTxPowerPerBandParams->wdiReqStatusCB;
13335 pWDICtx->pReqStatusUserData = pwdiSetMaxTxPowerPerBandParams->pUserData;
13336
13337 /*-------------------------------------------------------------------------
13338 Send Set Max Tx Power Per Band Request to HAL
13339 -------------------------------------------------------------------------*/
13340 return WDI_SendMsg(pWDICtx, pSendBuffer, usSendSize,
13341 wdiSetMaxTxPowerPerBandRspCb, pEventData->pUserData,
13342 WDI_SET_MAX_TX_POWER_PER_BAND_RSP);
13343}
13344
schang86c22c42013-03-13 18:41:24 -070013345/**
13346 @brief Process Set Tx Power Request function (called when Main
13347 FSM allows it)
13348
13349 @param pWDICtx: pointer to the WLAN DAL context
13350 pEventData: pointer to the event information structure
13351
13352 @see
13353 @return Result of the function call
13354*/
13355WDI_Status WDI_ProcessSetTxPowerReq
13356(
13357 WDI_ControlBlockType* pWDICtx,
13358 WDI_EventInfoType* pEventData
13359)
13360{
13361 WDI_SetTxPowerParamsType* pwdiSetTxPowerParams = NULL;
13362 WDA_SetTxPowerRspCb wdiSetTxPowerRspCb;
13363 wpt_uint8* pSendBuffer = NULL;
13364 wpt_uint16 usDataOffset = 0;
13365 wpt_uint16 usSendSize = 0;
Leo Chang9a43db92013-03-25 17:39:58 -070013366 tSetTxPwrReqParams *halSetTxPower = NULL;
schang86c22c42013-03-13 18:41:24 -070013367 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13368
13369 /*-------------------------------------------------------------------------
13370 Sanity check
13371 -------------------------------------------------------------------------*/
13372 if (( NULL == pEventData ) ||
13373 ( NULL == pEventData->pEventData ) ||
13374 ( NULL == pEventData->pCBfnc ))
13375 {
13376 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
13377 "%s: Invalid parameters", __func__);
13378 WDI_ASSERT(0);
13379 return WDI_STATUS_E_FAILURE;
13380 }
13381
13382 pwdiSetTxPowerParams =
13383 (WDI_SetTxPowerParamsType*)pEventData->pEventData;
13384 wdiSetTxPowerRspCb =
13385 (WDA_SetTxPowerRspCb)pEventData->pCBfnc;
13386
13387 /*-----------------------------------------------------------------------
13388 Get message buffer
13389 -----------------------------------------------------------------------*/
13390 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_TX_POWER_REQ,
13391 sizeof(tSetTxPwrReqParams),
13392 &pSendBuffer, &usDataOffset, &usSendSize))||
13393 ( usSendSize < (usDataOffset + sizeof(tSetTxPwrReqParams)
13394 )))
13395 {
13396 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080013397 "Unable to get Set Max Tx Power req %p %p %p",
schang86c22c42013-03-13 18:41:24 -070013398 pEventData, pwdiSetTxPowerParams, wdiSetTxPowerRspCb);
13399 WDI_ASSERT(0);
13400 return WDI_STATUS_E_FAILURE;
13401 }
13402
Leo Chang9a43db92013-03-25 17:39:58 -070013403 halSetTxPower = (tSetTxPwrReqParams *)(pSendBuffer + usDataOffset);
13404 halSetTxPower->txPower = pwdiSetTxPowerParams->wdiTxPowerInfo.ucPower;
13405 halSetTxPower->bssIdx = pwdiSetTxPowerParams->wdiTxPowerInfo.bssIdx;
schang86c22c42013-03-13 18:41:24 -070013406
13407 pWDICtx->wdiReqStatusCB = pwdiSetTxPowerParams->wdiReqStatusCB;
13408 pWDICtx->pReqStatusUserData = pwdiSetTxPowerParams->pUserData;
13409
13410 /*-------------------------------------------------------------------------
13411 Send Set Tx Power Request to HAL
13412 -------------------------------------------------------------------------*/
13413 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13414 wdiSetTxPowerRspCb, pEventData->pUserData,
13415 WDI_SET_TX_POWER_RESP);
13416}
Jeff Johnson295189b2012-06-20 16:38:30 -070013417
13418/**
13419 @brief Process P2P Notice Of Absence Request function (called when Main FSM
13420 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013421
13422 @param pWDICtx: pointer to the WLAN DAL context
13423 pEventData: pointer to the event information structure
13424
Jeff Johnson295189b2012-06-20 16:38:30 -070013425 @see
13426 @return Result of the function call
13427*/
13428WDI_Status
13429WDI_ProcessP2PGONOAReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013430(
Jeff Johnson295189b2012-06-20 16:38:30 -070013431 WDI_ControlBlockType* pWDICtx,
13432 WDI_EventInfoType* pEventData
13433)
13434{
13435 WDI_SetP2PGONOAReqParamsType* pwdiP2PGONOAReqParams;
13436 WDI_SetP2PGONOAReqParamsRspCb wdiP2PGONOAReqRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070013437 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013438 wpt_uint16 usDataOffset = 0;
13439 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070013440 tSetP2PGONOAParams halSetP2PGONOAParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070013441 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13442
13443 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013444 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013445 -------------------------------------------------------------------------*/
13446 if (( NULL == pEventData ) ||
13447 ( NULL == pEventData->pEventData) ||
13448 ( NULL == pEventData->pCBfnc))
13449 {
13450 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013451 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013452 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013453 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013454 }
13455
Jeff Johnsone7245742012-09-05 17:12:55 -070013456 pwdiP2PGONOAReqParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070013457 (WDI_SetP2PGONOAReqParamsType*)pEventData->pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070013458 wdiP2PGONOAReqRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070013459 (WDI_SetP2PGONOAReqParamsRspCb)pEventData->pCBfnc;
13460 /*-----------------------------------------------------------------------
13461 Get message buffer
13462 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013463 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
13464 WDI_P2P_GO_NOTICE_OF_ABSENCE_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013465 sizeof(halSetP2PGONOAParams),
13466 &pSendBuffer, &usDataOffset, &usSendSize))||
13467 ( usSendSize < (usDataOffset + sizeof(halSetP2PGONOAParams) )))
13468 {
13469 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080013470 "Unable to get send buffer in set P2P GO NOA REQ %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070013471 pEventData, pwdiP2PGONOAReqParams, wdiP2PGONOAReqRspCb);
13472 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013473 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013474 }
13475
Jeff Johnsone7245742012-09-05 17:12:55 -070013476 halSetP2PGONOAParams.opp_ps =
Jeff Johnson295189b2012-06-20 16:38:30 -070013477 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.ucOpp_ps;
Jeff Johnsone7245742012-09-05 17:12:55 -070013478 halSetP2PGONOAParams.ctWindow =
Jeff Johnson295189b2012-06-20 16:38:30 -070013479 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.uCtWindow;
13480 halSetP2PGONOAParams.count = pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.ucCount;
Jeff Johnsone7245742012-09-05 17:12:55 -070013481 halSetP2PGONOAParams.duration =
Jeff Johnson295189b2012-06-20 16:38:30 -070013482 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.uDuration;
Jeff Johnsone7245742012-09-05 17:12:55 -070013483 halSetP2PGONOAParams.interval =
Jeff Johnson295189b2012-06-20 16:38:30 -070013484 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.uInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070013485 halSetP2PGONOAParams.single_noa_duration =
Jeff Johnson295189b2012-06-20 16:38:30 -070013486 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.uSingle_noa_duration;
Jeff Johnsone7245742012-09-05 17:12:55 -070013487 halSetP2PGONOAParams.psSelection =
Jeff Johnson295189b2012-06-20 16:38:30 -070013488 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.ucPsSelection;
13489
Jeff Johnsone7245742012-09-05 17:12:55 -070013490 wpalMemoryCopy( pSendBuffer+usDataOffset,
13491 &halSetP2PGONOAParams,
13492 sizeof(halSetP2PGONOAParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070013493
13494 pWDICtx->wdiReqStatusCB = pwdiP2PGONOAReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013495 pWDICtx->pReqStatusUserData = pwdiP2PGONOAReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013496
13497 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013498 Send Update Probe Resp Template Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013499 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013500 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13501 wdiP2PGONOAReqRspCb, pEventData->pUserData,
13502 WDI_P2P_GO_NOTICE_OF_ABSENCE_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013503}/*WDI_ProcessP2PGONOAReq*/
13504
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053013505#ifdef FEATURE_WLAN_TDLS
13506
13507/**
13508 @brief Process P2P Notice Of Absence Request function (called when Main FSM
13509 allows it)
13510
13511 @param pWDICtx: pointer to the WLAN DAL context
13512 pEventData: pointer to the event information structure
13513
13514 @see
13515 @return Result of the function call
13516*/
13517WDI_Status
13518WDI_ProcessTdlsLinkEstablishReq
13519(
13520 WDI_ControlBlockType* pWDICtx,
13521 WDI_EventInfoType* pEventData
13522)
13523{
13524 WDI_SetTDLSLinkEstablishReqParamsType* pwdiTDLSLinkEstablishReqParams;
13525 WDI_SetTDLSLinkEstablishReqParamsRspCb wdiTDLSLinkEstablishReqRspCb;
13526 wpt_uint8* pSendBuffer = NULL;
13527 wpt_uint16 usDataOffset = 0;
13528 wpt_uint16 usSendSize = 0;
13529
13530 tTDLSLinkEstablishedType halSetTDLSLinkEstablishParams;
13531 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13532
13533 /*-------------------------------------------------------------------------
13534 Sanity check
13535 -------------------------------------------------------------------------*/
13536 if (( NULL == pEventData ) ||
13537 ( NULL == pEventData->pEventData) ||
13538 ( NULL == pEventData->pCBfnc))
13539 {
13540 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13541 "%s: Invalid parameters", __func__);
13542 WDI_ASSERT(0);
13543 return WDI_STATUS_E_FAILURE;
13544 }
13545 pwdiTDLSLinkEstablishReqParams =
13546 (WDI_SetTDLSLinkEstablishReqParamsType*)pEventData->pEventData;
13547 wdiTDLSLinkEstablishReqRspCb =
13548 (WDI_SetTDLSLinkEstablishReqParamsRspCb)pEventData->pCBfnc;
13549
13550
13551 /*-----------------------------------------------------------------------
13552 Get message buffer
13553 -----------------------------------------------------------------------*/
13554 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
13555 WDI_TDLS_LINK_ESTABLISH_REQ,
13556 sizeof(halSetTDLSLinkEstablishParams),
13557 &pSendBuffer, &usDataOffset, &usSendSize))||
13558 ( usSendSize < (usDataOffset + sizeof(halSetTDLSLinkEstablishParams) )))
13559 {
13560 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080013561 "Unable to get send buffer in set P2P GO NOA REQ %p %p %p",
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053013562 pEventData, pwdiTDLSLinkEstablishReqParams, wdiTDLSLinkEstablishReqRspCb);
13563 WDI_ASSERT(0);
13564 return WDI_STATUS_E_FAILURE;
13565 }
13566
13567 halSetTDLSLinkEstablishParams.staIdx =
13568 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uStaIdx;
13569 halSetTDLSLinkEstablishParams.bIsResponder =
13570 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uIsResponder;
13571 halSetTDLSLinkEstablishParams.acVOUAPSDFlag =
13572 (pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uUapsdQueues & 0x08) >> 3;
13573 halSetTDLSLinkEstablishParams.acVIUAPSDFlag =
13574 (pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uUapsdQueues & 0x04) >> 2;
13575 halSetTDLSLinkEstablishParams.acBKUAPSDFlag =
13576 (pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uUapsdQueues & 0x02) >> 1;
13577 halSetTDLSLinkEstablishParams.acBEUAPSDFlag =
13578 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uUapsdQueues & 0x01;
13579 halSetTDLSLinkEstablishParams.aAck = 0;
13580 halSetTDLSLinkEstablishParams.maxServicePeriodLength = (pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uMaxSp & 0x03);
13581 halSetTDLSLinkEstablishParams.moreDataAck = 0;
13582 halSetTDLSLinkEstablishParams.TPUBufferStaSupport = pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uIsBufSta;
Naresh Jayaramc7cbd782014-02-04 17:38:23 +053013583 halSetTDLSLinkEstablishParams.tdlsOffChannelSupport =
13584 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uIsOffChannelSupported;
13585
13586 wpalMemoryCopy( halSetTDLSLinkEstablishParams.validChannels,
13587 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.validChannels,
13588 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.validChannelsLen);
13589 halSetTDLSLinkEstablishParams.validChannelsLen =
13590 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.validChannelsLen;
13591
13592 wpalMemoryCopy( halSetTDLSLinkEstablishParams.validOperClasses,
13593 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.validOperClasses,
13594 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.validOperClassesLen);
13595 halSetTDLSLinkEstablishParams.validOperClassesLen =
13596 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.validOperClassesLen;
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053013597
13598 wpalMemoryCopy( pSendBuffer+usDataOffset,
13599 &halSetTDLSLinkEstablishParams,
13600 sizeof(halSetTDLSLinkEstablishParams));
13601
13602 pWDICtx->wdiReqStatusCB = pwdiTDLSLinkEstablishReqParams->wdiReqStatusCB;
13603 pWDICtx->pReqStatusUserData = pwdiTDLSLinkEstablishReqParams->pUserData;
13604
13605 /*-------------------------------------------------------------------------
13606 Send Update Probe Resp Template Request to HAL
13607 -------------------------------------------------------------------------*/
13608 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13609 wdiTDLSLinkEstablishReqRspCb, pEventData->pUserData,
13610 WDI_TDLS_LINK_ESTABLISH_REQ_RESP);
13611 return 0;
13612}/*WDI_ProcessTdlsLinkEstablishReq*/
13613
13614
Atul Mittalc0f739f2014-07-31 13:47:47 +053013615/**
13616 @brief sends the channel switch command to f/w (called when Main FSM
13617 allows it)
13618
13619 @param pWDICtx: pointer to the WLAN DAL context
13620 pEventData: pointer to the event information structure
13621
13622 @see
13623 @return Result of the function call
13624*/
13625WDI_Status
13626WDI_ProcessTdlsChanSwitchReq
13627(
13628 WDI_ControlBlockType* pWDICtx,
13629 WDI_EventInfoType* pEventData
13630)
13631{
13632 WDI_SetTDLSChanSwitchReqParamsType* pwdiTDLSChanSwitchReqParams;
13633 WDI_SetTDLSChanSwitchReqParamsRspCb wdiTDLSChanSwitchReqRspCb;
13634 wpt_uint8* pSendBuffer = NULL;
13635 wpt_uint16 usDataOffset = 0;
13636 wpt_uint16 usSendSize = 0;
13637 //WDI_Status wdiStatus;
13638 tTDLSChanSwitchReqType halSetTDLSChanSwitchParams;
13639 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13640
13641 /*-------------------------------------------------------------------------
13642 Sanity check
13643 -------------------------------------------------------------------------*/
13644 if (( NULL == pEventData ) ||
13645 ( NULL == pEventData->pEventData))
13646 {
13647 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13648 "%s: Invalid parameters", __func__);
13649 WDI_ASSERT(0);
13650 return WDI_STATUS_E_FAILURE;
13651 }
13652 pwdiTDLSChanSwitchReqParams =
13653 (WDI_SetTDLSChanSwitchReqParamsType*)pEventData->pEventData;
13654 wdiTDLSChanSwitchReqRspCb =
13655 (WDI_SetTDLSChanSwitchReqParamsRspCb)pEventData->pCBfnc;
13656
13657 /*-----------------------------------------------------------------------
13658 Get message buffer
13659 -----------------------------------------------------------------------*/
13660 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
13661 WDI_TDLS_CHAN_SWITCH_REQ,
13662 sizeof(halSetTDLSChanSwitchParams),
13663 &pSendBuffer, &usDataOffset, &usSendSize))||
13664 ( usSendSize < (usDataOffset + sizeof(halSetTDLSChanSwitchParams) )))
13665 {
13666 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13667 "Unable to get send buffer in Channel Switch REQ %p %p %p",
13668 pEventData, pwdiTDLSChanSwitchReqParams, wdiTDLSChanSwitchReqRspCb);
13669 WDI_ASSERT(0);
13670 return WDI_STATUS_E_FAILURE;
13671 }
13672
13673 halSetTDLSChanSwitchParams.staIdx =
13674 pwdiTDLSChanSwitchReqParams->wdiTDLSChanSwitchReqInfo.staIdx;
13675 halSetTDLSChanSwitchParams.isOffchannelInitiator =
13676 pwdiTDLSChanSwitchReqParams->wdiTDLSChanSwitchReqInfo.isOffchannelInitiator;
13677 halSetTDLSChanSwitchParams.targetOperClass =
13678 pwdiTDLSChanSwitchReqParams->wdiTDLSChanSwitchReqInfo.targetOperClass;
13679 halSetTDLSChanSwitchParams.targetChannel =
13680 pwdiTDLSChanSwitchReqParams->wdiTDLSChanSwitchReqInfo.targetChannel;
13681 halSetTDLSChanSwitchParams.secondaryChannelOffset =
13682 pwdiTDLSChanSwitchReqParams->wdiTDLSChanSwitchReqInfo.secondaryChannelOffset;
13683 wpalMemoryCopy( pSendBuffer+usDataOffset,
13684 &halSetTDLSChanSwitchParams,
13685 sizeof(halSetTDLSChanSwitchParams));
13686
13687 pWDICtx->wdiReqStatusCB = NULL;
13688 pWDICtx->pReqStatusUserData = NULL;
13689
13690 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13691 wdiTDLSChanSwitchReqRspCb, pEventData->pUserData,
13692 WDI_TDLS_CHAN_SWITCH_REQ_RESP);
13693}/*WDI_ProcessTdlsChanSwitchReq*/
13694
13695#endif /*FEATURE_WLAN_TDLS*/
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053013696
Jeff Johnson295189b2012-06-20 16:38:30 -070013697
13698
13699/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013700 @brief Function to handle the ack from DXE once the power
Jeff Johnson295189b2012-06-20 16:38:30 -070013701 state is set.
Jeff Johnsone7245742012-09-05 17:12:55 -070013702 @param None
13703
13704 @see
13705 @return void
Jeff Johnson295189b2012-06-20 16:38:30 -070013706*/
13707void
13708WDI_SetPowerStateCb
13709(
13710 wpt_status status,
13711 unsigned int dxePhyAddr,
13712 void *pContext
13713)
13714{
13715 wpt_status wptStatus;
13716 WDI_ControlBlockType *pCB = NULL;
13717 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013718 /*
13719 * Trigger the event to bring the Enter BMPS req function to come
13720 * out of wait
Jeff Johnson295189b2012-06-20 16:38:30 -070013721*/
13722 if( NULL != pContext )
13723 {
Jeff Johnsone7245742012-09-05 17:12:55 -070013724 pCB = (WDI_ControlBlockType *)pContext;
Jeff Johnson295189b2012-06-20 16:38:30 -070013725 }
13726 else
13727 {
Jeff Johnsone7245742012-09-05 17:12:55 -070013728 //put an error msg
Jeff Johnson295189b2012-06-20 16:38:30 -070013729 pCB = &gWDICb;
13730 }
Mihir Shetea4306052014-03-25 00:02:54 +053013731
13732 if(eWLAN_PAL_STATUS_SUCCESS == status )
13733 {
13734 pCB->dxeRingsEmpty = eWLAN_PAL_TRUE;
13735 }
13736 else
13737 {
13738 pCB->dxeRingsEmpty = eWLAN_PAL_FALSE;
13739 }
Jeff Johnson295189b2012-06-20 16:38:30 -070013740 pCB->dxePhyAddr = dxePhyAddr;
13741 wptStatus = wpalEventSet(&pCB->setPowerStateEvent);
13742 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
13743 {
13744 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13745 "Failed to set an event");
13746
Jeff Johnsone7245742012-09-05 17:12:55 -070013747 WDI_ASSERT(0);
Jeff Johnson295189b2012-06-20 16:38:30 -070013748 }
13749 return;
13750}
13751
13752
13753/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013754 @brief Process Enter IMPS Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070013755 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013756
13757 @param pWDICtx: pointer to the WLAN DAL context
13758 pEventData: pointer to the event information structure
13759
Jeff Johnson295189b2012-06-20 16:38:30 -070013760 @see
13761 @return Result of the function call
13762*/
13763WDI_Status
13764WDI_ProcessEnterImpsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013765(
Jeff Johnson295189b2012-06-20 16:38:30 -070013766 WDI_ControlBlockType* pWDICtx,
13767 WDI_EventInfoType* pEventData
13768)
13769{
Jeff Johnson43971f52012-07-17 12:26:56 -070013770 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070013771 WDI_EnterImpsRspCb wdiEnterImpsRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013772 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013773 wpt_uint16 usDataOffset = 0;
13774 wpt_uint16 usSendSize = 0;
Mihir Shetea4306052014-03-25 00:02:54 +053013775 WDI_EnterImpsReqParamsType* pwdiEnterImpsReqParams = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013776 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13777
13778 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013779 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013780 -------------------------------------------------------------------------*/
Mihir Shetea4306052014-03-25 00:02:54 +053013781 if ((NULL == pEventData ) ||
13782 (NULL == (wdiEnterImpsRspCb = (WDI_EnterImpsRspCb)pEventData->pCBfnc)) ||
13783 (NULL == (pwdiEnterImpsReqParams =
13784 (WDI_EnterImpsReqParamsType*)pEventData->pEventData)))
Jeff Johnson295189b2012-06-20 16:38:30 -070013785 {
13786 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013787 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013788 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080013789 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070013790 }
13791
13792 /*-----------------------------------------------------------------------
13793 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013794 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013795 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013796 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ENTER_IMPS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013797 0,
13798 &pSendBuffer, &usDataOffset, &usSendSize))||
13799 ( usSendSize < (usDataOffset )))
13800 {
13801 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080013802 "Unable to get send buffer in Enter IMPS req %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070013803 pEventData, wdiEnterImpsRspCb);
13804 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080013805 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070013806 }
13807
13808 /* Reset the event to be not signalled */
Jeff Johnson43971f52012-07-17 12:26:56 -070013809 wptStatus = wpalEventReset(&pWDICtx->setPowerStateEvent);
13810 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070013811 {
13812 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13813 "WDI Init failed to reset an event");
13814
Jeff Johnsone7245742012-09-05 17:12:55 -070013815 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080013816 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -070013817 }
13818
13819 // notify DTS that we are entering IMPS
Ravali85acf6b2012-12-12 14:01:38 -080013820 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_IMPS, WDI_SetPowerStateCb);
13821 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus ) {
13822 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain9a5d5382013-11-17 22:05:35 -080013823 "WDTS_SetPowerState returned with status %d when trying to notify DTS that host is entering IMPS", wptStatus);
Ravali85acf6b2012-12-12 14:01:38 -080013824 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080013825 goto fail;
Ravali85acf6b2012-12-12 14:01:38 -080013826 }
Jeff Johnson295189b2012-06-20 16:38:30 -070013827
13828 /*
Jeff Johnsone7245742012-09-05 17:12:55 -070013829 * Wait for the event to be set once the ACK comes back from DXE
Jeff Johnson295189b2012-06-20 16:38:30 -070013830 */
Jeff Johnson43971f52012-07-17 12:26:56 -070013831 wptStatus = wpalEventWait(&pWDICtx->setPowerStateEvent,
13832 WDI_SET_POWER_STATE_TIMEOUT);
13833 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070013834 {
13835 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13836 "WDI Init failed to wait on an event");
13837
Jeff Johnsone7245742012-09-05 17:12:55 -070013838 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080013839 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -070013840 }
13841
Mihir Shetea4306052014-03-25 00:02:54 +053013842 if (pWDICtx->dxeRingsEmpty == eWLAN_PAL_FALSE)
13843 {
13844 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
13845 "%s: DXE Rings not empty, cannot enter IMPS",__func__);
13846
13847 goto fail;
13848 }
13849
13850 pWDICtx->wdiReqStatusCB = pwdiEnterImpsReqParams->wdiReqStatusCB;
13851 pWDICtx->pReqStatusUserData = pwdiEnterImpsReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013852 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013853 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013854 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013855 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13856 wdiEnterImpsRspCb, pEventData->pUserData, WDI_ENTER_IMPS_RESP);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080013857
13858fail:
13859 // Release the message buffer so we don't leak
13860 wpalMemoryFree(pSendBuffer);
13861
13862failRequest:
13863 //WDA should have failure check to avoid the memory leak
13864 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013865}/*WDI_ProcessEnterImpsReq*/
13866
13867/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013868 @brief Process Exit IMPS Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070013869 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013870
13871 @param pWDICtx: pointer to the WLAN DAL context
13872 pEventData: pointer to the event information structure
13873
Jeff Johnson295189b2012-06-20 16:38:30 -070013874 @see
13875 @return Result of the function call
13876*/
13877WDI_Status
13878WDI_ProcessExitImpsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013879(
Jeff Johnson295189b2012-06-20 16:38:30 -070013880 WDI_ControlBlockType* pWDICtx,
13881 WDI_EventInfoType* pEventData
13882)
13883{
13884 WDI_ExitImpsRspCb wdiExitImpsRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013885 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013886 wpt_uint16 usDataOffset = 0;
13887 wpt_uint16 usSendSize = 0;
13888 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13889
13890 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013891 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013892 -------------------------------------------------------------------------*/
13893 if (( NULL == pEventData ) ||
13894 ( NULL == (wdiExitImpsRspCb = (WDI_ExitImpsRspCb)pEventData->pCBfnc)))
13895 {
13896 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013897 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013898 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013899 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013900 }
13901
13902 /*-----------------------------------------------------------------------
13903 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013904 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013905 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013906 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_EXIT_IMPS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013907 0,
13908 &pSendBuffer, &usDataOffset, &usSendSize))||
13909 ( usSendSize < (usDataOffset )))
13910 {
13911 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080013912 "Unable to get send buffer in Exit IMPS req %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070013913 pEventData, wdiExitImpsRspCb);
13914 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013915 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013916 }
13917
13918 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013919 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013920 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013921 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13922 wdiExitImpsRspCb, pEventData->pUserData, WDI_EXIT_IMPS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013923}/*WDI_ProcessExitImpsReq*/
13924
13925/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013926 @brief Process Enter BMPS Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070013927 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013928
13929 @param pWDICtx: pointer to the WLAN DAL context
13930 pEventData: pointer to the event information structure
13931
Jeff Johnson295189b2012-06-20 16:38:30 -070013932 @see
13933 @return Result of the function call
13934*/
13935WDI_Status
13936WDI_ProcessEnterBmpsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013937(
Jeff Johnson295189b2012-06-20 16:38:30 -070013938 WDI_ControlBlockType* pWDICtx,
13939 WDI_EventInfoType* pEventData
13940)
13941{
13942 WDI_EnterBmpsReqParamsType* pwdiEnterBmpsReqParams = NULL;
13943 WDI_EnterBmpsRspCb wdiEnterBmpsRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013944 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013945 wpt_uint16 usDataOffset = 0;
13946 wpt_uint16 usSendSize = 0;
13947 tHalEnterBmpsReqParams enterBmpsReq;
Jeff Johnson43971f52012-07-17 12:26:56 -070013948 wpt_status wptStatus;
13949
Jeff Johnson295189b2012-06-20 16:38:30 -070013950 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13951
13952 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013953 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013954 -------------------------------------------------------------------------*/
13955 if (( NULL == pEventData ) ||
13956 ( NULL == (pwdiEnterBmpsReqParams = (WDI_EnterBmpsReqParamsType*)pEventData->pEventData)) ||
13957 ( NULL == (wdiEnterBmpsRspCb = (WDI_EnterBmpsRspCb)pEventData->pCBfnc)))
13958 {
13959 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013960 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013961 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080013962 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070013963 }
13964
13965 /*-----------------------------------------------------------------------
13966 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013967 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013968 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013969 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ENTER_BMPS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013970 sizeof(enterBmpsReq),
13971 &pSendBuffer, &usDataOffset, &usSendSize))||
13972 ( usSendSize < (usDataOffset + sizeof(enterBmpsReq) )))
13973 {
13974 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080013975 "Unable to get send buffer in Enter BMPS req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070013976 pEventData, pwdiEnterBmpsReqParams, wdiEnterBmpsRspCb);
13977 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080013978 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070013979 }
13980
13981 /* Reset the event to be not signalled */
Jeff Johnson43971f52012-07-17 12:26:56 -070013982 wptStatus = wpalEventReset(&pWDICtx->setPowerStateEvent);
13983 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070013984 {
13985 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13986 "WDI Init failed to reset an event");
13987
Jeff Johnsone7245742012-09-05 17:12:55 -070013988 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080013989 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -070013990 }
13991
13992 // notify DTS that we are entering BMPS
Ravali85acf6b2012-12-12 14:01:38 -080013993 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_BMPS, WDI_SetPowerStateCb);
13994 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
13995 {
13996 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain9a5d5382013-11-17 22:05:35 -080013997 "WDTS_SetPowerState returned with status %d when trying to notify DTS that we are entering BMPS", wptStatus);
Ravali85acf6b2012-12-12 14:01:38 -080013998 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080013999 goto fail;
Ravali85acf6b2012-12-12 14:01:38 -080014000 }
Jeff Johnson295189b2012-06-20 16:38:30 -070014001
14002/*
Jeff Johnsone7245742012-09-05 17:12:55 -070014003 * Wait for the event to be set once the ACK comes back from DXE
Jeff Johnson295189b2012-06-20 16:38:30 -070014004 */
Jeff Johnson43971f52012-07-17 12:26:56 -070014005 wptStatus = wpalEventWait(&pWDICtx->setPowerStateEvent,
14006 WDI_SET_POWER_STATE_TIMEOUT);
14007 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070014008 {
14009 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
14010 "WDI Init failed to wait on an event");
14011
Jeff Johnsone7245742012-09-05 17:12:55 -070014012 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014013 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -070014014 }
14015
14016 pWDICtx->bInBmps = eWLAN_PAL_TRUE;
14017
14018 enterBmpsReq.bssIdx = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.ucBssIdx;
14019 enterBmpsReq.tbtt = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.uTbtt;
14020 enterBmpsReq.dtimCount = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.ucDtimCount;
14021 enterBmpsReq.dtimPeriod = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.ucDtimPeriod;
14022
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -080014023 // For ESE and 11R Roaming
Jeff Johnson295189b2012-06-20 16:38:30 -070014024 enterBmpsReq.rssiFilterPeriod = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.rssiFilterPeriod;
14025 enterBmpsReq.numBeaconPerRssiAverage = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.numBeaconPerRssiAverage;
14026 enterBmpsReq.bRssiFilterEnable = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.bRssiFilterEnable;
14027
14028 wpalMemoryCopy( pSendBuffer+usDataOffset,
14029 &enterBmpsReq,
14030 sizeof(enterBmpsReq));
14031
14032 pWDICtx->wdiReqStatusCB = pwdiEnterBmpsReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014033 pWDICtx->pReqStatusUserData = pwdiEnterBmpsReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014034
14035 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014036 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014037 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014038 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14039 wdiEnterBmpsRspCb, pEventData->pUserData, WDI_ENTER_BMPS_RESP);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014040
14041fail:
14042 // Release the message buffer so we don't leak
14043 wpalMemoryFree(pSendBuffer);
14044
14045failRequest:
14046 //WDA should have failure check to avoid the memory leak
14047 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014048}/*WDI_ProcessEnterBmpsReq*/
14049
14050/**
14051 @brief Process Exit BMPS Request function (called when Main FSM
14052 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014053
14054 @param pWDICtx: pointer to the WLAN DAL context
14055 pEventData: pointer to the event information structure
14056
Jeff Johnson295189b2012-06-20 16:38:30 -070014057 @see
14058 @return Result of the function call
14059*/
14060WDI_Status
14061WDI_ProcessExitBmpsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014062(
Jeff Johnson295189b2012-06-20 16:38:30 -070014063 WDI_ControlBlockType* pWDICtx,
14064 WDI_EventInfoType* pEventData
14065)
14066{
14067 WDI_ExitBmpsReqParamsType* pwdiExitBmpsReqParams = NULL;
14068 WDI_ExitBmpsRspCb wdiExitBmpsRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014069 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014070 wpt_uint16 usDataOffset = 0;
14071 wpt_uint16 usSendSize = 0;
14072 tHalExitBmpsReqParams exitBmpsReq;
14073 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14074
14075 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014076 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014077 -------------------------------------------------------------------------*/
14078 if (( NULL == pEventData ) ||
14079 ( NULL == (pwdiExitBmpsReqParams = (WDI_ExitBmpsReqParamsType*)pEventData->pEventData)) ||
14080 ( NULL == (wdiExitBmpsRspCb = (WDI_ExitBmpsRspCb)pEventData->pCBfnc)))
14081 {
14082 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014083 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014084 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014085 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014086 }
14087
14088 /*-----------------------------------------------------------------------
14089 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014090 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014091 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014092 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_EXIT_BMPS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014093 sizeof(exitBmpsReq),
14094 &pSendBuffer, &usDataOffset, &usSendSize))||
14095 ( usSendSize < (usDataOffset + sizeof(exitBmpsReq) )))
14096 {
14097 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014098 "Unable to get send buffer in Exit BMPS req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014099 pEventData, pwdiExitBmpsReqParams, wdiExitBmpsRspCb);
14100 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014101 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014102 }
14103 exitBmpsReq.sendDataNull = pwdiExitBmpsReqParams->wdiExitBmpsInfo.ucSendDataNull;
14104
Jeff Johnsone7245742012-09-05 17:12:55 -070014105 exitBmpsReq.bssIdx = pwdiExitBmpsReqParams->wdiExitBmpsInfo.bssIdx;
14106
Jeff Johnson295189b2012-06-20 16:38:30 -070014107 wpalMemoryCopy( pSendBuffer+usDataOffset,
14108 &exitBmpsReq,
14109 sizeof(exitBmpsReq));
14110
14111 pWDICtx->wdiReqStatusCB = pwdiExitBmpsReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014112 pWDICtx->pReqStatusUserData = pwdiExitBmpsReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014113
14114 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014115 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014116 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014117 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14118 wdiExitBmpsRspCb, pEventData->pUserData, WDI_EXIT_BMPS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070014119}/*WDI_ProcessExitBmpsReq*/
14120
14121/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014122 @brief Process Enter UAPSD Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070014123 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014124
14125 @param pWDICtx: pointer to the WLAN DAL context
14126 pEventData: pointer to the event information structure
14127
Jeff Johnson295189b2012-06-20 16:38:30 -070014128 @see
14129 @return Result of the function call
14130*/
14131WDI_Status
14132WDI_ProcessEnterUapsdReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014133(
Jeff Johnson295189b2012-06-20 16:38:30 -070014134 WDI_ControlBlockType* pWDICtx,
14135 WDI_EventInfoType* pEventData
14136)
14137{
14138 WDI_EnterUapsdReqParamsType* pwdiEnterUapsdReqParams = NULL;
14139 WDI_EnterUapsdRspCb wdiEnterUapsdRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014140 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014141 wpt_uint16 usDataOffset = 0;
14142 wpt_uint16 usSendSize = 0;
14143 tUapsdReqParams enterUapsdReq;
14144 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14145
14146 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014147 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014148 -------------------------------------------------------------------------*/
14149 if (( NULL == pEventData ) ||
14150 ( NULL == (pwdiEnterUapsdReqParams = (WDI_EnterUapsdReqParamsType*)pEventData->pEventData)) ||
14151 ( NULL == (wdiEnterUapsdRspCb = (WDI_EnterUapsdRspCb)pEventData->pCBfnc)))
14152 {
14153 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014154 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014155 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014156 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014157 }
14158
14159 /*-----------------------------------------------------------------------
14160 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014161 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014162 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014163 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ENTER_UAPSD_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014164 sizeof(enterUapsdReq),
14165 &pSendBuffer, &usDataOffset, &usSendSize))||
14166 ( usSendSize < (usDataOffset + sizeof(enterUapsdReq) )))
14167 {
14168 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014169 "Unable to get send buffer in Enter UAPSD req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014170 pEventData, pwdiEnterUapsdReqParams, wdiEnterUapsdRspCb);
14171 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014172 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014173 }
14174
14175 enterUapsdReq.beDeliveryEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucBeDeliveryEnabled;
14176 enterUapsdReq.beTriggerEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucBeTriggerEnabled;
14177 enterUapsdReq.bkDeliveryEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucBkDeliveryEnabled;
14178 enterUapsdReq.bkTriggerEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucBkTriggerEnabled;
14179 enterUapsdReq.viDeliveryEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucViDeliveryEnabled;
14180 enterUapsdReq.viTriggerEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucViTriggerEnabled;
14181 enterUapsdReq.voDeliveryEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucVoDeliveryEnabled;
14182 enterUapsdReq.voTriggerEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucVoTriggerEnabled;
Jeff Johnsone7245742012-09-05 17:12:55 -070014183 enterUapsdReq.bssIdx = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.bssIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070014184
Jeff Johnsone7245742012-09-05 17:12:55 -070014185 wpalMemoryCopy( pSendBuffer+usDataOffset,
14186 &enterUapsdReq,
14187 sizeof(enterUapsdReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070014188
14189 pWDICtx->wdiReqStatusCB = pwdiEnterUapsdReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014190 pWDICtx->pReqStatusUserData = pwdiEnterUapsdReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014191
14192 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014193 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014194 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014195 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14196 wdiEnterUapsdRspCb, pEventData->pUserData, WDI_ENTER_UAPSD_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070014197}/*WDI_ProcessEnterUapsdReq*/
14198
14199/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014200 @brief Process Exit UAPSD Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070014201 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014202
14203 @param pWDICtx: pointer to the WLAN DAL context
14204 pEventData: pointer to the event information structure
14205
Jeff Johnson295189b2012-06-20 16:38:30 -070014206 @see
14207 @return Result of the function call
14208*/
14209WDI_Status
14210WDI_ProcessExitUapsdReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014211(
Jeff Johnson295189b2012-06-20 16:38:30 -070014212 WDI_ControlBlockType* pWDICtx,
14213 WDI_EventInfoType* pEventData
14214)
14215{
14216 WDI_ExitUapsdRspCb wdiExitUapsdRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014217 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014218 wpt_uint16 usDataOffset = 0;
14219 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014220 WDI_ExitUapsdReqParamsType *pExitUapsdparams;
14221 wpt_uint8 bssIdx = 0;
14222
Jeff Johnson295189b2012-06-20 16:38:30 -070014223 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14224
14225 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014226 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014227 -------------------------------------------------------------------------*/
14228 if (( NULL == pEventData ) ||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014229 ( NULL == (pExitUapsdparams = (WDI_ExitUapsdReqParamsType *)pEventData->pEventData)) ||
Jeff Johnson295189b2012-06-20 16:38:30 -070014230 ( NULL == (wdiExitUapsdRspCb = (WDI_ExitUapsdRspCb)pEventData->pCBfnc)))
14231 {
14232 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014233 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014234 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014235 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014236 }
14237
14238 /*-----------------------------------------------------------------------
14239 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014240 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014241 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014242 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_EXIT_UAPSD_REQ,
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014243 sizeof(wpt_uint8),
Jeff Johnson295189b2012-06-20 16:38:30 -070014244 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014245 ( usSendSize < (usDataOffset + sizeof(wpt_uint8))))
Jeff Johnson295189b2012-06-20 16:38:30 -070014246 {
14247 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014248 "Unable to get send buffer in Exit UAPSD req %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014249 pEventData, wdiExitUapsdRspCb);
14250 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014251 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014252 }
14253
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014254 bssIdx = pExitUapsdparams->wdiExitUapsdInfo.bssIdx;
14255
14256 wpalMemoryCopy( pSendBuffer+usDataOffset,
14257 &bssIdx,
14258 sizeof(wpt_uint8));
14259
14260 pWDICtx->wdiReqStatusCB = pExitUapsdparams->wdiReqStatusCB;
14261 pWDICtx->pReqStatusUserData = pExitUapsdparams->pUserData;
14262
Jeff Johnson295189b2012-06-20 16:38:30 -070014263 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014264 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014265 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014266 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14267 wdiExitUapsdRspCb, pEventData->pUserData, WDI_EXIT_UAPSD_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070014268}/*WDI_ProcessExitUapsdReq*/
14269
14270/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014271 @brief Process Set UAPSD params Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070014272 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014273
14274 @param pWDICtx: pointer to the WLAN DAL context
14275 pEventData: pointer to the event information structure
14276
Jeff Johnson295189b2012-06-20 16:38:30 -070014277 @see
14278 @return Result of the function call
14279*/
14280WDI_Status
14281WDI_ProcessSetUapsdAcParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014282(
Jeff Johnson295189b2012-06-20 16:38:30 -070014283 WDI_ControlBlockType* pWDICtx,
14284 WDI_EventInfoType* pEventData
14285)
14286{
14287 WDI_SetUapsdAcParamsReqParamsType* pwdiSetUapsdAcParams = NULL;
14288 WDI_SetUapsdAcParamsCb wdiSetUapsdAcParamsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014289 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014290 wpt_uint16 usDataOffset = 0;
14291 wpt_uint16 usSendSize = 0;
14292 tUapsdInfo uapsdAcParamsReq;
14293 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14294
14295 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014296 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014297 -------------------------------------------------------------------------*/
14298 if (( NULL == pEventData ) ||
14299 ( NULL == (pwdiSetUapsdAcParams = (WDI_SetUapsdAcParamsReqParamsType*)pEventData->pEventData)) ||
14300 ( NULL == (wdiSetUapsdAcParamsCb = (WDI_SetUapsdAcParamsCb)pEventData->pCBfnc)))
14301 {
14302 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014303 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014304 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014305 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014306 }
14307
14308 /*-----------------------------------------------------------------------
14309 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014310 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014311 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014312 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_UAPSD_PARAM_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014313 sizeof(uapsdAcParamsReq),
14314 &pSendBuffer, &usDataOffset, &usSendSize))||
14315 ( usSendSize < (usDataOffset + sizeof(uapsdAcParamsReq) )))
14316 {
14317 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014318 "Unable to get send buffer in Set UAPSD params req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014319 pEventData, pwdiSetUapsdAcParams, wdiSetUapsdAcParamsCb);
14320 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014321 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014322 }
14323
14324 uapsdAcParamsReq.ac = pwdiSetUapsdAcParams->wdiUapsdInfo.ucAc;
14325 uapsdAcParamsReq.staidx = pwdiSetUapsdAcParams->wdiUapsdInfo.ucSTAIdx;
14326 uapsdAcParamsReq.up = pwdiSetUapsdAcParams->wdiUapsdInfo.ucUp;
14327 uapsdAcParamsReq.delayInterval = pwdiSetUapsdAcParams->wdiUapsdInfo.uDelayInterval;
14328 uapsdAcParamsReq.srvInterval = pwdiSetUapsdAcParams->wdiUapsdInfo.uSrvInterval;
14329 uapsdAcParamsReq.susInterval = pwdiSetUapsdAcParams->wdiUapsdInfo.uSusInterval;
14330
Jeff Johnsone7245742012-09-05 17:12:55 -070014331 wpalMemoryCopy( pSendBuffer+usDataOffset,
14332 &uapsdAcParamsReq,
14333 sizeof(uapsdAcParamsReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070014334
14335 pWDICtx->wdiReqStatusCB = pwdiSetUapsdAcParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014336 pWDICtx->pReqStatusUserData = pwdiSetUapsdAcParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014337
14338 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014339 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014340 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014341 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14342 wdiSetUapsdAcParamsCb, pEventData->pUserData, WDI_SET_UAPSD_PARAM_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070014343}/*WDI_ProcessSetUapsdAcParamsReq*/
14344
14345/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014346 @brief Process update UAPSD params Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070014347 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014348
14349 @param pWDICtx: pointer to the WLAN DAL context
14350 pEventData: pointer to the event information structure
14351
Jeff Johnson295189b2012-06-20 16:38:30 -070014352 @see
14353 @return Result of the function call
14354*/
14355WDI_Status
14356WDI_ProcessUpdateUapsdParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014357(
Jeff Johnson295189b2012-06-20 16:38:30 -070014358 WDI_ControlBlockType* pWDICtx,
14359 WDI_EventInfoType* pEventData
14360)
14361{
14362 WDI_UpdateUapsdReqParamsType* pwdiUpdateUapsdReqParams = NULL;
14363 WDI_UpdateUapsdParamsCb wdiUpdateUapsdParamsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014364 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014365 wpt_uint16 usDataOffset = 0;
14366 wpt_uint16 usSendSize = 0;
14367 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14368
14369 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014370 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014371 -------------------------------------------------------------------------*/
14372 if (( NULL == pEventData ) ||
14373 ( NULL == (pwdiUpdateUapsdReqParams = (WDI_UpdateUapsdReqParamsType*)pEventData->pEventData)) ||
14374 ( NULL == (wdiUpdateUapsdParamsCb = (WDI_UpdateUapsdParamsCb)pEventData->pCBfnc)))
14375 {
14376 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014377 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014378 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014379 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014380 }
14381
14382 /*-----------------------------------------------------------------------
14383 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014384 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014385 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014386 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_UAPSD_PARAM_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014387 sizeof(pwdiUpdateUapsdReqParams->wdiUpdateUapsdInfo),
14388 &pSendBuffer, &usDataOffset, &usSendSize))||
14389 ( usSendSize < (usDataOffset + sizeof(pwdiUpdateUapsdReqParams->wdiUpdateUapsdInfo) )))
14390 {
14391 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014392 "Unable to get send buffer in Update UAPSD params req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014393 pEventData, pwdiUpdateUapsdReqParams, wdiUpdateUapsdParamsCb);
14394 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014395 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014396 }
14397
Jeff Johnsone7245742012-09-05 17:12:55 -070014398 wpalMemoryCopy( pSendBuffer+usDataOffset,
14399 &pwdiUpdateUapsdReqParams->wdiUpdateUapsdInfo,
14400 sizeof(pwdiUpdateUapsdReqParams->wdiUpdateUapsdInfo));
Jeff Johnson295189b2012-06-20 16:38:30 -070014401
14402 pWDICtx->wdiReqStatusCB = pwdiUpdateUapsdReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014403 pWDICtx->pReqStatusUserData = pwdiUpdateUapsdReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014404
14405 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014406 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014407 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014408 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14409 wdiUpdateUapsdParamsCb, pEventData->pUserData, WDI_UPDATE_UAPSD_PARAM_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070014410}/*WDI_ProcessUpdateUapsdParamsReq*/
14411
14412/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014413 @brief Process Configure RXP filter Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070014414 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014415
14416 @param pWDICtx: pointer to the WLAN DAL context
14417 pEventData: pointer to the event information structure
14418
Jeff Johnson295189b2012-06-20 16:38:30 -070014419 @see
14420 @return Result of the function call
14421*/
14422WDI_Status
14423WDI_ProcessConfigureRxpFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014424(
Jeff Johnson295189b2012-06-20 16:38:30 -070014425 WDI_ControlBlockType* pWDICtx,
14426 WDI_EventInfoType* pEventData
14427)
14428{
14429 WDI_ConfigureRxpFilterReqParamsType* pwdiRxpFilterParams = NULL;
14430 WDI_ConfigureRxpFilterCb wdiConfigureRxpFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014431 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014432 wpt_uint16 usDataOffset = 0;
14433 wpt_uint16 usSendSize = 0;
14434 tHalConfigureRxpFilterReqParams halRxpFilterParams;
14435
14436 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14437
14438 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014439 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014440 -------------------------------------------------------------------------*/
14441 if (( NULL == pEventData ) ||
14442 ( NULL == (pwdiRxpFilterParams = (WDI_ConfigureRxpFilterReqParamsType*)pEventData->pEventData)) ||
14443 ( NULL == (wdiConfigureRxpFilterCb = (WDI_ConfigureRxpFilterCb)pEventData->pCBfnc)))
14444 {
14445 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014446 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014447 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014448 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014449 }
14450
14451 /*-----------------------------------------------------------------------
14452 Get message buffer
14453 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014454 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_CONFIGURE_RXP_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014455 sizeof(halRxpFilterParams),
14456 &pSendBuffer, &usDataOffset, &usSendSize))||
14457 ( usSendSize < (usDataOffset + sizeof(halRxpFilterParams) )))
14458 {
14459 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014460 "Unable to get send buffer in Set UAPSD params req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014461 pEventData, pwdiRxpFilterParams, wdiConfigureRxpFilterCb);
14462 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014463 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014464 }
14465
Jeff Johnsone7245742012-09-05 17:12:55 -070014466 halRxpFilterParams.setMcstBcstFilterSetting =
Jeff Johnson295189b2012-06-20 16:38:30 -070014467 pwdiRxpFilterParams->wdiRxpFilterParam.ucSetMcstBcstFilterSetting;
Jeff Johnsone7245742012-09-05 17:12:55 -070014468 halRxpFilterParams.setMcstBcstFilter =
Jeff Johnson295189b2012-06-20 16:38:30 -070014469 pwdiRxpFilterParams->wdiRxpFilterParam.ucSetMcstBcstFilter;
14470
Jeff Johnsone7245742012-09-05 17:12:55 -070014471 wpalMemoryCopy( pSendBuffer+usDataOffset,
14472 &halRxpFilterParams,
14473 sizeof(halRxpFilterParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070014474
14475 pWDICtx->wdiReqStatusCB = pwdiRxpFilterParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014476 pWDICtx->pReqStatusUserData = pwdiRxpFilterParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014477
14478 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014479 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014480 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014481 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14482 wdiConfigureRxpFilterCb, pEventData->pUserData, WDI_CONFIGURE_RXP_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070014483}/*WDI_ProcessConfigureRxpFilterReq*/
14484
14485/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014486 @brief Process set beacon filter Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070014487 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014488
14489 @param pWDICtx: pointer to the WLAN DAL context
14490 pEventData: pointer to the event information structure
14491
Jeff Johnson295189b2012-06-20 16:38:30 -070014492 @see
14493 @return Result of the function call
14494*/
14495WDI_Status
14496WDI_ProcessSetBeaconFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014497(
Jeff Johnson295189b2012-06-20 16:38:30 -070014498 WDI_ControlBlockType* pWDICtx,
14499 WDI_EventInfoType* pEventData
14500)
14501{
14502 WDI_BeaconFilterReqParamsType* pwdiBeaconFilterParams = NULL;
14503 WDI_SetBeaconFilterCb wdiBeaconFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014504 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014505 wpt_uint16 usDataOffset = 0;
14506 wpt_uint16 usSendSize = 0;
14507 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14508
14509 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014510 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014511 -------------------------------------------------------------------------*/
14512 if (( NULL == pEventData ) ||
14513 ( NULL == (pwdiBeaconFilterParams = (WDI_BeaconFilterReqParamsType*)pEventData->pEventData)) ||
14514 ( NULL == (wdiBeaconFilterCb = (WDI_SetBeaconFilterCb)pEventData->pCBfnc)))
14515 {
14516 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014517 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014518 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014519 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014520 }
14521
14522 /*-----------------------------------------------------------------------
14523 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014524 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014525 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014526 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_BEACON_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014527 sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo) + pwdiBeaconFilterParams->wdiBeaconFilterInfo.usIeNum * sizeof(tBeaconFilterIe),
14528 &pSendBuffer, &usDataOffset, &usSendSize))||
14529 ( usSendSize < (usDataOffset + sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo) )))
14530 {
14531 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014532 "Unable to get send buffer in Set beacon filter req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014533 pEventData, pwdiBeaconFilterParams, wdiBeaconFilterCb);
14534 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014535 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014536 }
14537
Jeff Johnsone7245742012-09-05 17:12:55 -070014538 wpalMemoryCopy( pSendBuffer+usDataOffset,
14539 &pwdiBeaconFilterParams->wdiBeaconFilterInfo,
14540 sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo));
14541 wpalMemoryCopy( pSendBuffer+usDataOffset+sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo),
14542 &pwdiBeaconFilterParams->aFilters[0],
14543 pwdiBeaconFilterParams->wdiBeaconFilterInfo.usIeNum * sizeof(tBeaconFilterIe));
Jeff Johnson295189b2012-06-20 16:38:30 -070014544
14545 pWDICtx->wdiReqStatusCB = pwdiBeaconFilterParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014546 pWDICtx->pReqStatusUserData = pwdiBeaconFilterParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014547
14548 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014549 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014550 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014551 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14552 wdiBeaconFilterCb, pEventData->pUserData, WDI_SET_BEACON_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070014553}/*WDI_ProcessSetBeaconFilterReq*/
14554
14555/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014556 @brief Process remove beacon filter Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070014557 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014558
14559 @param pWDICtx: pointer to the WLAN DAL context
14560 pEventData: pointer to the event information structure
14561
Jeff Johnson295189b2012-06-20 16:38:30 -070014562 @see
14563 @return Result of the function call
14564*/
14565WDI_Status
14566WDI_ProcessRemBeaconFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014567(
Jeff Johnson295189b2012-06-20 16:38:30 -070014568 WDI_ControlBlockType* pWDICtx,
14569 WDI_EventInfoType* pEventData
14570)
14571{
14572 WDI_RemBeaconFilterReqParamsType* pwdiBeaconFilterParams = NULL;
14573 WDI_RemBeaconFilterCb wdiBeaconFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014574 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014575 wpt_uint16 usDataOffset = 0;
14576 wpt_uint16 usSendSize = 0;
14577 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14578
14579 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014580 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014581 -------------------------------------------------------------------------*/
14582 if (( NULL == pEventData ) ||
14583 ( NULL == (pwdiBeaconFilterParams = (WDI_RemBeaconFilterReqParamsType*)pEventData->pEventData)) ||
14584 ( NULL == (wdiBeaconFilterCb = (WDI_RemBeaconFilterCb)pEventData->pCBfnc)))
14585 {
14586 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014587 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014588 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014589 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014590 }
14591
14592 /*-----------------------------------------------------------------------
14593 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014594 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014595 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014596 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_REM_BEACON_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014597 sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo),
14598 &pSendBuffer, &usDataOffset, &usSendSize))||
14599 ( usSendSize < (usDataOffset + sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo) )))
14600 {
14601 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014602 "Unable to get send buffer in remove beacon filter req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014603 pEventData, pwdiBeaconFilterParams, wdiBeaconFilterCb);
14604 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014605 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014606 }
14607
Jeff Johnsone7245742012-09-05 17:12:55 -070014608 wpalMemoryCopy( pSendBuffer+usDataOffset,
14609 &pwdiBeaconFilterParams->wdiBeaconFilterInfo,
14610 sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo));
Jeff Johnson295189b2012-06-20 16:38:30 -070014611
14612 pWDICtx->wdiReqStatusCB = pwdiBeaconFilterParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014613 pWDICtx->pReqStatusUserData = pwdiBeaconFilterParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014614
14615 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014616 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014617 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014618 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14619 wdiBeaconFilterCb, pEventData->pUserData, WDI_REM_BEACON_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070014620}
14621
14622/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014623 @brief Process set RSSI thresholds Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070014624 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014625
14626 @param pWDICtx: pointer to the WLAN DAL context
14627 pEventData: pointer to the event information structure
14628
Jeff Johnson295189b2012-06-20 16:38:30 -070014629 @see
14630 @return Result of the function call
14631*/
14632WDI_Status
14633WDI_ProcessSetRSSIThresholdsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014634(
Jeff Johnson295189b2012-06-20 16:38:30 -070014635 WDI_ControlBlockType* pWDICtx,
14636 WDI_EventInfoType* pEventData
14637)
14638{
14639 WDI_SetRSSIThresholdsReqParamsType* pwdiRSSIThresholdsParams = NULL;
14640 WDI_SetRSSIThresholdsCb wdiRSSIThresholdsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014641 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014642 wpt_uint16 usDataOffset = 0;
14643 wpt_uint16 usSendSize = 0;
14644 tHalRSSIThresholds rssiThresholdsReq;
14645 WDI_Status ret_status = 0;
14646 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14647
14648 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014649 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014650 -------------------------------------------------------------------------*/
14651 if (( NULL == pEventData ) ||
14652 ( NULL == (pwdiRSSIThresholdsParams = (WDI_SetRSSIThresholdsReqParamsType*)pEventData->pEventData)) ||
14653 ( NULL == (wdiRSSIThresholdsCb = (WDI_SetRSSIThresholdsCb)pEventData->pCBfnc)))
14654 {
14655 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014656 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014657 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014658 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014659 }
14660
14661 /*-----------------------------------------------------------------------
14662 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014663 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014664 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014665 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_RSSI_THRESHOLDS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014666 sizeof(rssiThresholdsReq),
14667 &pSendBuffer, &usDataOffset, &usSendSize))||
14668 ( usSendSize < (usDataOffset + sizeof(rssiThresholdsReq) )))
14669 {
14670 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014671 "Unable to get send buffer in remove beacon filter req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014672 pEventData, pwdiRSSIThresholdsParams, wdiRSSIThresholdsCb);
14673 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014674 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014675 }
14676
Jeff Johnsone7245742012-09-05 17:12:55 -070014677 rssiThresholdsReq.bReserved10 =
Jeff Johnson295189b2012-06-20 16:38:30 -070014678 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bReserved10;
Jeff Johnsone7245742012-09-05 17:12:55 -070014679 rssiThresholdsReq.bRssiThres1NegNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070014680 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres1NegNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070014681 rssiThresholdsReq.bRssiThres1PosNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070014682 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres1PosNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070014683 rssiThresholdsReq.bRssiThres2NegNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070014684 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres2NegNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070014685 rssiThresholdsReq.bRssiThres2PosNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070014686 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres2PosNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070014687 rssiThresholdsReq.bRssiThres3NegNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070014688 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres3NegNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070014689 rssiThresholdsReq.bRssiThres3PosNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070014690 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres3PosNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070014691 rssiThresholdsReq.ucRssiThreshold1 =
Jeff Johnson295189b2012-06-20 16:38:30 -070014692 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.ucRssiThreshold1;
Jeff Johnsone7245742012-09-05 17:12:55 -070014693 rssiThresholdsReq.ucRssiThreshold2 =
Jeff Johnson295189b2012-06-20 16:38:30 -070014694 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.ucRssiThreshold2;
Jeff Johnsone7245742012-09-05 17:12:55 -070014695 rssiThresholdsReq.ucRssiThreshold3 =
Jeff Johnson295189b2012-06-20 16:38:30 -070014696 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.ucRssiThreshold3;
14697
Jeff Johnsone7245742012-09-05 17:12:55 -070014698 wpalMemoryCopy( pSendBuffer+usDataOffset,
14699 &rssiThresholdsReq,
14700 sizeof(rssiThresholdsReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070014701
14702 pWDICtx->wdiReqStatusCB = pwdiRSSIThresholdsParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014703 pWDICtx->pReqStatusUserData = pwdiRSSIThresholdsParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014704
14705 /*-------------------------------------------------------------------------
14706 Send Set threshold req to HAL
14707 -------------------------------------------------------------------------*/
14708 if ((ret_status = WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14709 wdiRSSIThresholdsCb, pEventData->pUserData, WDI_SET_RSSI_THRESHOLDS_RESP)) == WDI_STATUS_SUCCESS)
14710 {
14711 // When we are in idle state WDI_STARTED_ST and we receive indication for threshold
14712 // req. Then as a result of processing the threshold cross ind, we trigger
14713 // a Set threshold req, then we need to indicate to WDI that it needs to
14714 // go to busy state as a result of the indication as we sent a req in the
14715 // same WDI context.
14716 // Hence expected state transition is to busy.
14717 pWDICtx->ucExpectedStateTransition = WDI_BUSY_ST;
14718 }
14719
14720 return ret_status;
14721}
14722
14723/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014724 @brief Process set RSSI thresholds Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070014725 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014726
14727 @param pWDICtx: pointer to the WLAN DAL context
14728 pEventData: pointer to the event information structure
14729
Jeff Johnson295189b2012-06-20 16:38:30 -070014730 @see
14731 @return Result of the function call
14732*/
14733WDI_Status
14734WDI_ProcessHostOffloadReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014735(
Jeff Johnson295189b2012-06-20 16:38:30 -070014736 WDI_ControlBlockType* pWDICtx,
14737 WDI_EventInfoType* pEventData
14738)
14739{
14740 WDI_HostOffloadReqParamsType* pwdiHostOffloadParams = NULL;
14741 WDI_HostOffloadCb wdiHostOffloadCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014742 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014743 wpt_uint16 usDataOffset = 0;
14744 wpt_uint16 usSendSize = 0;
14745 tHalHostOffloadReq hostOffloadParams;
14746 tHalNSOffloadParams nsOffloadParams;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014747 wpt_uint8 ucCurrentBSSSesIdx = 0;
14748 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014749
14750 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14751
14752 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014753 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014754 -------------------------------------------------------------------------*/
14755 if (( NULL == pEventData ) ||
14756 ( NULL == (pwdiHostOffloadParams = (WDI_HostOffloadReqParamsType*)pEventData->pEventData)) ||
14757 ( NULL == (wdiHostOffloadCb = (WDI_HostOffloadCb)pEventData->pCBfnc)))
14758 {
14759 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014760 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014761 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014762 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070014763 }
14764
14765 /*-----------------------------------------------------------------------
14766 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014767 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014768 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014769 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_HOST_OFFLOAD_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014770 sizeof(hostOffloadParams)+sizeof(nsOffloadParams),
14771 &pSendBuffer, &usDataOffset, &usSendSize))||
14772 ( usSendSize < (usDataOffset + sizeof(hostOffloadParams) + sizeof(nsOffloadParams) )))
14773 {
14774 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014775 "Unable to get send buffer in host offload req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014776 pEventData, pwdiHostOffloadParams, wdiHostOffloadCb);
14777 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014778 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070014779 }
14780
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014781 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
14782 pwdiHostOffloadParams->wdiHostOffloadInfo.bssId,
14783 &pBSSSes);
14784 if ( NULL == pBSSSes )
14785 {
c_hpothu86feba52014-10-28 15:51:18 +053014786 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Gopichand Nakkalac6c91902013-05-29 18:53:35 +053014787 " %s : Association for this BSSID does not exist " MAC_ADDRESS_STR,
14788 __func__, MAC_ADDR_ARRAY(pwdiHostOffloadParams->wdiHostOffloadInfo.bssId));
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014789 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014790 }
14791
Jeff Johnson295189b2012-06-20 16:38:30 -070014792 hostOffloadParams.offloadType = pwdiHostOffloadParams->wdiHostOffloadInfo.ucOffloadType;
14793 hostOffloadParams.enableOrDisable = pwdiHostOffloadParams->wdiHostOffloadInfo.ucEnableOrDisable;
Jeff Johnsone7245742012-09-05 17:12:55 -070014794
Jeff Johnson295189b2012-06-20 16:38:30 -070014795 if( HAL_IPV4_ARP_REPLY_OFFLOAD == hostOffloadParams.offloadType )
14796 {
14797 // ARP Offload
14798 wpalMemoryCopy(hostOffloadParams.params.hostIpv4Addr,
14799 pwdiHostOffloadParams->wdiHostOffloadInfo.params.aHostIpv4Addr,
14800 4);
14801 }
14802 else
14803 {
14804 // NS Offload
14805 wpalMemoryCopy(hostOffloadParams.params.hostIpv6Addr,
14806 pwdiHostOffloadParams->wdiHostOffloadInfo.params.aHostIpv6Addr,
14807 16);
14808
14809#ifdef WLAN_NS_OFFLOAD
14810 // copy pwdiHostOffloadParams->wdiNsOffloadParams into nsOffloadParams
14811 wpalMemoryCopy(nsOffloadParams.srcIPv6Addr,
14812 pwdiHostOffloadParams->wdiNsOffloadParams.srcIPv6Addr,
14813 16);
14814 wpalMemoryCopy(nsOffloadParams.selfIPv6Addr,
14815 pwdiHostOffloadParams->wdiNsOffloadParams.selfIPv6Addr,
14816 16);
14817 wpalMemoryCopy(nsOffloadParams.targetIPv6Addr1,
14818 pwdiHostOffloadParams->wdiNsOffloadParams.targetIPv6Addr1,
14819 16);
14820 wpalMemoryCopy(nsOffloadParams.targetIPv6Addr2,
14821 pwdiHostOffloadParams->wdiNsOffloadParams.targetIPv6Addr2,
14822 16);
14823 wpalMemoryCopy(nsOffloadParams.selfMacAddr,
14824 pwdiHostOffloadParams->wdiNsOffloadParams.selfMacAddr,
14825 6);
Gopichand Nakkala746a9452013-06-11 12:45:54 +053014826 nsOffloadParams.srcIPv6AddrValid =
14827 pwdiHostOffloadParams->wdiNsOffloadParams.srcIPv6AddrValid;
14828
14829 nsOffloadParams.targetIPv6Addr1Valid =
14830 pwdiHostOffloadParams->wdiNsOffloadParams.targetIPv6Addr1Valid;
14831
14832 nsOffloadParams.targetIPv6Addr2Valid =
14833 pwdiHostOffloadParams->wdiNsOffloadParams.targetIPv6Addr2Valid;
14834
14835 nsOffloadParams.slotIndex =
14836 pwdiHostOffloadParams->wdiNsOffloadParams.slotIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070014837
Jeff Johnson295189b2012-06-20 16:38:30 -070014838#endif // WLAN_NS_OFFLOAD
14839 }
14840
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014841 nsOffloadParams.bssIdx = pBSSSes->ucBSSIdx;
14842
Jeff Johnson295189b2012-06-20 16:38:30 -070014843 // copy hostOffloadParams into pSendBuffer
14844 wpalMemoryCopy( pSendBuffer+usDataOffset,
14845 &hostOffloadParams,
14846 sizeof(hostOffloadParams));
14847
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014848 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION) )
Jeff Johnson295189b2012-06-20 16:38:30 -070014849 {
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014850 // copy nsOffloadParams into pSendBuffer
14851 wpalMemoryCopy( pSendBuffer+usDataOffset+sizeof(hostOffloadParams),
Jeff Johnson295189b2012-06-20 16:38:30 -070014852 &nsOffloadParams,
14853 sizeof(nsOffloadParams));
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014854 }
14855 else
14856 {
14857#ifdef WLAN_NS_OFFLOAD
14858 if( HAL_IPV6_NS_OFFLOAD == hostOffloadParams.offloadType )
14859 {
14860 // copy nsOffloadParams into pSendBuffer
14861 wpalMemoryCopy( pSendBuffer+usDataOffset+sizeof(hostOffloadParams),
14862 &nsOffloadParams,
14863 sizeof(nsOffloadParams));
14864 }
14865#endif
14866 }
Jeff Johnson295189b2012-06-20 16:38:30 -070014867
14868 pWDICtx->wdiReqStatusCB = pwdiHostOffloadParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014869 pWDICtx->pReqStatusUserData = pwdiHostOffloadParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014870
14871 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014872 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014873 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014874 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14875 wdiHostOffloadCb, pEventData->pUserData, WDI_HOST_OFFLOAD_RESP);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014876
14877fail:
14878 // Release the message buffer so we don't leak
14879 wpalMemoryFree(pSendBuffer);
14880
14881failRequest:
14882 //WDA should have failure check to avoid the memory leak
14883 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014884}/*WDI_ProcessHostOffloadReq*/
14885
14886/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014887 @brief Process Keep Alive Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070014888 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014889
14890 @param pWDICtx: pointer to the WLAN DAL context
14891 pEventData: pointer to the event information structure
14892
Jeff Johnson295189b2012-06-20 16:38:30 -070014893 @see
14894 @return Result of the function call
14895*/
14896WDI_Status
14897WDI_ProcessKeepAliveReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014898(
Jeff Johnson295189b2012-06-20 16:38:30 -070014899 WDI_ControlBlockType* pWDICtx,
14900 WDI_EventInfoType* pEventData
14901)
14902{
14903 WDI_KeepAliveReqParamsType* pwdiKeepAliveParams = NULL;
14904 WDI_KeepAliveCb wdiKeepAliveCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014905 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014906 wpt_uint16 usDataOffset = 0;
14907 wpt_uint16 usSendSize = 0;
14908 tHalKeepAliveReq keepAliveReq;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014909 wpt_uint8 ucCurrentBSSSesIdx = 0;
14910 WDI_BSSSessionType* pBSSSes = NULL;
14911
Jeff Johnson295189b2012-06-20 16:38:30 -070014912 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14913
14914 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014915 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014916 -------------------------------------------------------------------------*/
14917 if (( NULL == pEventData ) ||
14918 ( NULL == (pwdiKeepAliveParams = (WDI_KeepAliveReqParamsType*)pEventData->pEventData)) ||
14919 ( NULL == (wdiKeepAliveCb = (WDI_KeepAliveCb)pEventData->pCBfnc)))
14920 {
14921 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
14922 "Invalid parameters in Keep Alive req");
14923 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014924 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070014925 }
14926
14927 /*-----------------------------------------------------------------------
14928 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014929 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014930 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014931 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_KEEP_ALIVE_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014932 sizeof(keepAliveReq),
14933 &pSendBuffer, &usDataOffset, &usSendSize))||
14934 ( usSendSize < (usDataOffset + sizeof(keepAliveReq) )))
14935 {
14936 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014937 "Unable to get send buffer in keep alive req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014938 pEventData, pwdiKeepAliveParams, wdiKeepAliveCb);
14939 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014940 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070014941 }
14942
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014943 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
14944 pwdiKeepAliveParams->wdiKeepAliveInfo.bssId,
14945 &pBSSSes);
14946 if ( NULL == pBSSSes )
14947 {
14948 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014949 " %s : Association for this BSSID does not exist",__func__);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014950 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014951 }
14952
Jeff Johnson295189b2012-06-20 16:38:30 -070014953 keepAliveReq.packetType = pwdiKeepAliveParams->wdiKeepAliveInfo.ucPacketType;
14954 keepAliveReq.timePeriod = pwdiKeepAliveParams->wdiKeepAliveInfo.ucTimePeriod;
14955
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014956 keepAliveReq.bssIdx = pBSSSes->ucBSSIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070014957
Jeff Johnson295189b2012-06-20 16:38:30 -070014958 if(pwdiKeepAliveParams->wdiKeepAliveInfo.ucPacketType == 2)
14959 {
14960 wpalMemoryCopy(keepAliveReq.hostIpv4Addr,
14961 pwdiKeepAliveParams->wdiKeepAliveInfo.aHostIpv4Addr,
14962 HAL_IPV4_ADDR_LEN);
14963 wpalMemoryCopy(keepAliveReq.destIpv4Addr,
14964 pwdiKeepAliveParams->wdiKeepAliveInfo.aDestIpv4Addr,
Jeff Johnsone7245742012-09-05 17:12:55 -070014965 HAL_IPV4_ADDR_LEN);
Jeff Johnson295189b2012-06-20 16:38:30 -070014966 wpalMemoryCopy(keepAliveReq.destMacAddr,
14967 pwdiKeepAliveParams->wdiKeepAliveInfo.aDestMacAddr,
14968 HAL_MAC_ADDR_LEN);
14969 }
Jeff Johnsone7245742012-09-05 17:12:55 -070014970
14971 wpalMemoryCopy( pSendBuffer+usDataOffset,
14972 &keepAliveReq,
14973 sizeof(keepAliveReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070014974
14975 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnson5b414462013-11-22 16:44:20 -080014976 "Process keep alive req %zu", sizeof(keepAliveReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070014977
14978 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnson5b414462013-11-22 16:44:20 -080014979 "Process keep alive req time period %d",
14980 keepAliveReq.timePeriod);
Jeff Johnson295189b2012-06-20 16:38:30 -070014981
14982 pWDICtx->wdiReqStatusCB = pwdiKeepAliveParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014983 pWDICtx->pReqStatusUserData = pwdiKeepAliveParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014984
14985 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
14986 "Sending keep alive req to HAL");
14987
14988 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014989 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014990 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014991 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14992 wdiKeepAliveCb, pEventData->pUserData, WDI_KEEP_ALIVE_RESP);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014993
14994fail:
14995 // Release the message buffer so we don't leak
14996 wpalMemoryFree(pSendBuffer);
14997
14998failRequest:
14999 //WDA should have failure check to avoid the memory leak
15000 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015001}/*WDI_ProcessKeepAliveReq*/
15002
15003
15004/**
Jeff Johnsone7245742012-09-05 17:12:55 -070015005 @brief Process Wowl add bc ptrn Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070015006 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070015007
15008 @param pWDICtx: pointer to the WLAN DAL context
15009 pEventData: pointer to the event information structure
15010
Jeff Johnson295189b2012-06-20 16:38:30 -070015011 @see
15012 @return Result of the function call
15013*/
15014WDI_Status
15015WDI_ProcessWowlAddBcPtrnReq
Jeff Johnsone7245742012-09-05 17:12:55 -070015016(
Jeff Johnson295189b2012-06-20 16:38:30 -070015017 WDI_ControlBlockType* pWDICtx,
15018 WDI_EventInfoType* pEventData
15019)
15020{
15021 WDI_WowlAddBcPtrnReqParamsType* pwdiWowlAddBcPtrnParams = NULL;
15022 WDI_WowlAddBcPtrnCb wdiWowlAddBcPtrnCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070015023 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070015024 wpt_uint16 usDataOffset = 0;
15025 wpt_uint16 usSendSize = 0;
15026 tHalWowlAddBcastPtrn wowlAddBcPtrnReq;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015027 wpt_uint8 ucCurrentBSSSesIdx = 0;
15028 WDI_BSSSessionType* pBSSSes = NULL;
15029
Jeff Johnson295189b2012-06-20 16:38:30 -070015030 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15031
15032 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015033 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015034 -------------------------------------------------------------------------*/
15035 if (( NULL == pEventData ) ||
15036 ( NULL == (pwdiWowlAddBcPtrnParams = (WDI_WowlAddBcPtrnReqParamsType*)pEventData->pEventData)) ||
15037 ( NULL == (wdiWowlAddBcPtrnCb = (WDI_WowlAddBcPtrnCb)pEventData->pCBfnc)))
15038 {
15039 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015040 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015041 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080015042 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070015043 }
15044
15045 /*-----------------------------------------------------------------------
15046 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070015047 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070015048 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015049 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_WOWL_ADD_BC_PTRN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070015050 sizeof(wowlAddBcPtrnReq),
15051 &pSendBuffer, &usDataOffset, &usSendSize))||
15052 ( usSendSize < (usDataOffset + sizeof(wowlAddBcPtrnReq) )))
15053 {
15054 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080015055 "Unable to get send buffer in Wowl add bc ptrn req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070015056 pEventData, pwdiWowlAddBcPtrnParams, wdiWowlAddBcPtrnCb);
15057 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080015058 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070015059 }
15060
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015061 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
15062 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.bssId,
15063 &pBSSSes);
15064 if ( NULL == pBSSSes )
15065 {
15066 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015067 " %s : Association for this BSSID does not exist",__func__);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080015068 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015069 }
15070
Jeff Johnsone7245742012-09-05 17:12:55 -070015071 wowlAddBcPtrnReq.ucPatternId =
Jeff Johnson295189b2012-06-20 16:38:30 -070015072 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternId;
Jeff Johnsone7245742012-09-05 17:12:55 -070015073 wowlAddBcPtrnReq.ucPatternByteOffset =
Jeff Johnson295189b2012-06-20 16:38:30 -070015074 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternByteOffset;
Jeff Johnsone7245742012-09-05 17:12:55 -070015075 wowlAddBcPtrnReq.ucPatternMaskSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070015076 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMaskSize;
Jeff Johnsone7245742012-09-05 17:12:55 -070015077 wowlAddBcPtrnReq.ucPatternSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070015078 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternSize;
15079
15080 if (pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternSize <= HAL_WOWL_BCAST_PATTERN_MAX_SIZE)
15081 {
15082 wpalMemoryCopy(wowlAddBcPtrnReq.ucPattern,
15083 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPattern,
15084 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternSize);
15085 wpalMemoryCopy(wowlAddBcPtrnReq.ucPatternMask,
15086 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMask,
15087 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMaskSize);
15088 }
15089 else
15090 {
15091 wpalMemoryCopy(wowlAddBcPtrnReq.ucPattern,
15092 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPattern,
15093 HAL_WOWL_BCAST_PATTERN_MAX_SIZE);
15094 wpalMemoryCopy(wowlAddBcPtrnReq.ucPatternMask,
15095 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMask,
15096 HAL_WOWL_BCAST_PATTERN_MAX_SIZE);
15097
15098 wpalMemoryCopy(wowlAddBcPtrnReq.ucPattern,
15099 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPattern,
15100 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMaskSize - HAL_WOWL_BCAST_PATTERN_MAX_SIZE);
15101 wpalMemoryCopy(wowlAddBcPtrnReq.ucPatternMask,
15102 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMask,
15103 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMaskSize - HAL_WOWL_BCAST_PATTERN_MAX_SIZE);
15104 }
15105
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015106 wowlAddBcPtrnReq.bssIdx = pBSSSes->ucBSSIdx;
15107
Jeff Johnson295189b2012-06-20 16:38:30 -070015108 wpalMemoryCopy( pSendBuffer+usDataOffset,
15109 &wowlAddBcPtrnReq,
15110 sizeof(wowlAddBcPtrnReq));
15111
15112 pWDICtx->wdiReqStatusCB = pwdiWowlAddBcPtrnParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070015113 pWDICtx->pReqStatusUserData = pwdiWowlAddBcPtrnParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070015114
15115 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015116 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070015117 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015118 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
15119 wdiWowlAddBcPtrnCb, pEventData->pUserData, WDI_WOWL_ADD_BC_PTRN_RESP);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080015120fail:
15121 // Release the message buffer so we don't leak
15122 wpalMemoryFree(pSendBuffer);
15123
15124failRequest:
15125 //WDA should have failure check to avoid the memory leak
15126 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015127}/*WDI_ProcessWowlAddBcPtrnReq*/
15128
15129/**
Jeff Johnsone7245742012-09-05 17:12:55 -070015130 @brief Process Wowl delete bc ptrn Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070015131 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070015132
15133 @param pWDICtx: pointer to the WLAN DAL context
15134 pEventData: pointer to the event information structure
15135
Jeff Johnson295189b2012-06-20 16:38:30 -070015136 @see
15137 @return Result of the function call
15138*/
15139WDI_Status
15140WDI_ProcessWowlDelBcPtrnReq
Jeff Johnsone7245742012-09-05 17:12:55 -070015141(
Jeff Johnson295189b2012-06-20 16:38:30 -070015142 WDI_ControlBlockType* pWDICtx,
15143 WDI_EventInfoType* pEventData
15144)
15145{
15146 WDI_WowlDelBcPtrnReqParamsType* pwdiWowlDelBcPtrnParams = NULL;
15147 WDI_WowlDelBcPtrnCb wdiWowlDelBcPtrnCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070015148 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070015149 wpt_uint16 usDataOffset = 0;
15150 wpt_uint16 usSendSize = 0;
15151 tHalWowlDelBcastPtrn wowlDelBcPtrnReq;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015152 wpt_uint8 ucCurrentBSSSesIdx = 0;
15153 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070015154 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15155
15156 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015157 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015158 -------------------------------------------------------------------------*/
15159 if (( NULL == pEventData ) ||
15160 ( NULL == (pwdiWowlDelBcPtrnParams = (WDI_WowlDelBcPtrnReqParamsType*)pEventData->pEventData)) ||
15161 ( NULL == (wdiWowlDelBcPtrnCb = (WDI_WowlDelBcPtrnCb)pEventData->pCBfnc)))
15162 {
15163 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015164 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015165 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080015166 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070015167 }
15168
15169 /*-----------------------------------------------------------------------
15170 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070015171 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070015172 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015173 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_WOWL_DEL_BC_PTRN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070015174 sizeof(wowlDelBcPtrnReq),
15175 &pSendBuffer, &usDataOffset, &usSendSize))||
15176 ( usSendSize < (usDataOffset + sizeof(wowlDelBcPtrnReq) )))
15177 {
15178 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080015179 "Unable to get send buffer in Wowl del bc ptrn req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070015180 pEventData, pwdiWowlDelBcPtrnParams, wdiWowlDelBcPtrnCb);
15181 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080015182 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070015183 }
15184
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015185 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
15186 pwdiWowlDelBcPtrnParams->wdiWowlDelBcPtrnInfo.bssId,
15187 &pBSSSes);
15188 if ( NULL == pBSSSes )
15189 {
15190 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015191 " %s : Association for this BSSID does not exist",__func__);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080015192 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015193 }
15194
Jeff Johnsone7245742012-09-05 17:12:55 -070015195 wowlDelBcPtrnReq.ucPatternId =
Jeff Johnson295189b2012-06-20 16:38:30 -070015196 pwdiWowlDelBcPtrnParams->wdiWowlDelBcPtrnInfo.ucPatternId;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015197
15198 wowlDelBcPtrnReq.bssIdx = pBSSSes->ucBSSIdx;
15199
Jeff Johnsone7245742012-09-05 17:12:55 -070015200 wpalMemoryCopy( pSendBuffer+usDataOffset,
15201 &wowlDelBcPtrnReq,
15202 sizeof(wowlDelBcPtrnReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070015203
15204 pWDICtx->wdiReqStatusCB = pwdiWowlDelBcPtrnParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070015205 pWDICtx->pReqStatusUserData = pwdiWowlDelBcPtrnParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070015206
15207 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015208 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070015209 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015210 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
15211 wdiWowlDelBcPtrnCb, pEventData->pUserData, WDI_WOWL_DEL_BC_PTRN_RESP);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080015212
15213fail:
15214 // Release the message buffer so we don't leak
15215 wpalMemoryFree(pSendBuffer);
15216
15217failRequest:
15218 //WDA should have failure check to avoid the memory leak
15219 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015220}/*WDI_ProcessWowlDelBcPtrnReq*/
15221
15222/**
Jeff Johnsone7245742012-09-05 17:12:55 -070015223 @brief Process Wowl enter Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070015224 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070015225
15226 @param pWDICtx: pointer to the WLAN DAL context
15227 pEventData: pointer to the event information structure
15228
Jeff Johnson295189b2012-06-20 16:38:30 -070015229 @see
15230 @return Result of the function call
15231*/
15232WDI_Status
15233WDI_ProcessWowlEnterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070015234(
Jeff Johnson295189b2012-06-20 16:38:30 -070015235 WDI_ControlBlockType* pWDICtx,
15236 WDI_EventInfoType* pEventData
15237)
15238{
15239 WDI_WowlEnterReqParamsType* pwdiWowlEnterParams = NULL;
15240 WDI_WowlEnterReqCb wdiWowlEnterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070015241 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070015242 wpt_uint16 usDataOffset = 0;
15243 wpt_uint16 usSendSize = 0;
15244 tHalWowlEnterParams wowlEnterReq;
15245 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15246
15247 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015248 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015249 -------------------------------------------------------------------------*/
15250 if (( NULL == pEventData ) ||
15251 ( NULL == (pwdiWowlEnterParams = (WDI_WowlEnterReqParamsType*)pEventData->pEventData)) ||
15252 ( NULL == (wdiWowlEnterCb = (WDI_WowlEnterReqCb)pEventData->pCBfnc)))
15253 {
15254 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015255 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015256 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015257 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015258 }
15259
15260 /*-----------------------------------------------------------------------
15261 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070015262 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070015263 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015264 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_WOWL_ENTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070015265 sizeof(wowlEnterReq),
15266 &pSendBuffer, &usDataOffset, &usSendSize))||
15267 ( usSendSize < (usDataOffset + sizeof(wowlEnterReq) )))
15268 {
15269 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080015270 "Unable to get send buffer in Wowl enter req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070015271 pEventData, pwdiWowlEnterParams, wdiWowlEnterCb);
15272 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015273 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015274 }
15275
Kumar Anandaca924e2013-07-22 14:35:34 -070015276 wpalMemoryZero(&wowlEnterReq, sizeof(tHalWowlEnterParams));
15277
Jeff Johnsone7245742012-09-05 17:12:55 -070015278 wowlEnterReq.ucMagicPktEnable =
Jeff Johnson295189b2012-06-20 16:38:30 -070015279 pwdiWowlEnterParams->wdiWowlEnterInfo.ucMagicPktEnable;
Jeff Johnsone7245742012-09-05 17:12:55 -070015280 wowlEnterReq.ucPatternFilteringEnable =
Jeff Johnson295189b2012-06-20 16:38:30 -070015281 pwdiWowlEnterParams->wdiWowlEnterInfo.ucPatternFilteringEnable;
Jeff Johnsone7245742012-09-05 17:12:55 -070015282 wowlEnterReq.ucUcastPatternFilteringEnable =
Jeff Johnson295189b2012-06-20 16:38:30 -070015283 pwdiWowlEnterParams->wdiWowlEnterInfo.ucUcastPatternFilteringEnable;
Jeff Johnsone7245742012-09-05 17:12:55 -070015284 wowlEnterReq.ucWowChnlSwitchRcv =
Jeff Johnson295189b2012-06-20 16:38:30 -070015285 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowChnlSwitchRcv;
Jeff Johnsone7245742012-09-05 17:12:55 -070015286 wowlEnterReq.ucWowDeauthRcv =
Jeff Johnson295189b2012-06-20 16:38:30 -070015287 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowDeauthRcv;
Jeff Johnsone7245742012-09-05 17:12:55 -070015288 wowlEnterReq.ucWowDisassocRcv =
Jeff Johnson295189b2012-06-20 16:38:30 -070015289 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowDisassocRcv;
Jeff Johnsone7245742012-09-05 17:12:55 -070015290 wowlEnterReq.ucWowMaxMissedBeacons =
Jeff Johnson295189b2012-06-20 16:38:30 -070015291 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowMaxMissedBeacons;
Jeff Johnsone7245742012-09-05 17:12:55 -070015292 wowlEnterReq.ucWowMaxSleepUsec =
Jeff Johnson295189b2012-06-20 16:38:30 -070015293 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowMaxSleepUsec;
15294
15295#ifdef WLAN_WAKEUP_EVENTS
15296 wowlEnterReq.ucWoWEAPIDRequestEnable =
15297 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWoWEAPIDRequestEnable;
15298
15299 wowlEnterReq.ucWoWEAPOL4WayEnable =
15300 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWoWEAPOL4WayEnable;
15301
15302 wowlEnterReq.ucWowNetScanOffloadMatch =
15303 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowNetScanOffloadMatch;
15304
15305 wowlEnterReq.ucWowGTKRekeyError =
15306 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowGTKRekeyError;
15307
15308 wowlEnterReq.ucWoWBSSConnLoss =
15309 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWoWBSSConnLoss;
15310#endif // WLAN_WAKEUP_EVENTS
15311
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015312 wowlEnterReq.bssIdx = pwdiWowlEnterParams->wdiWowlEnterInfo.bssIdx;
15313
Jeff Johnson295189b2012-06-20 16:38:30 -070015314 wpalMemoryCopy(wowlEnterReq.magicPtrn,
15315 pwdiWowlEnterParams->wdiWowlEnterInfo.magicPtrn,
15316 sizeof(tSirMacAddr));
15317
Jeff Johnsone7245742012-09-05 17:12:55 -070015318 wpalMemoryCopy( pSendBuffer+usDataOffset,
15319 &wowlEnterReq,
15320 sizeof(wowlEnterReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070015321
15322 pWDICtx->wdiReqStatusCB = pwdiWowlEnterParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070015323 pWDICtx->pReqStatusUserData = pwdiWowlEnterParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070015324
15325 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015326 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070015327 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015328 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
15329 wdiWowlEnterCb, pEventData->pUserData, WDI_WOWL_ENTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070015330}/*WDI_ProcessWowlEnterReq*/
15331
15332/**
15333 @brief Process Wowl exit Request function (called when Main FSM
15334 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070015335
15336 @param pWDICtx: pointer to the WLAN DAL context
15337 pEventData: pointer to the event information structure
15338
Jeff Johnson295189b2012-06-20 16:38:30 -070015339 @see
15340 @return Result of the function call
15341*/
15342WDI_Status
15343WDI_ProcessWowlExitReq
Jeff Johnsone7245742012-09-05 17:12:55 -070015344(
Jeff Johnson295189b2012-06-20 16:38:30 -070015345 WDI_ControlBlockType* pWDICtx,
15346 WDI_EventInfoType* pEventData
15347)
15348{
15349 WDI_WowlExitReqCb wdiWowlExitCb = NULL;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015350 WDI_WowlExitReqParamsType* pwdiWowlExitParams = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070015351 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070015352 wpt_uint16 usDataOffset = 0;
15353 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015354 tHalWowlExitParams wowlExitparams;
Jeff Johnson295189b2012-06-20 16:38:30 -070015355 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15356
15357 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015358 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015359 -------------------------------------------------------------------------*/
15360 if (( NULL == pEventData ) ||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015361 ( NULL == (pwdiWowlExitParams = (WDI_WowlExitReqParamsType *)pEventData->pEventData)) ||
Jeff Johnson295189b2012-06-20 16:38:30 -070015362 ( NULL == (wdiWowlExitCb = (WDI_WowlExitReqCb)pEventData->pCBfnc)))
15363 {
15364 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015365 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015366 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015367 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015368 }
15369
15370 /*-----------------------------------------------------------------------
15371 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070015372 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070015373 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015374 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_WOWL_EXIT_REQ,
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015375 sizeof(wowlExitparams),
Jeff Johnson295189b2012-06-20 16:38:30 -070015376 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015377 ( usSendSize < (usDataOffset + sizeof(wowlExitparams))))
Jeff Johnson295189b2012-06-20 16:38:30 -070015378 {
15379 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080015380 "Unable to get send buffer in Wowl Exit req %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070015381 pEventData, wdiWowlExitCb);
15382 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015383 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015384 }
15385
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015386 wowlExitparams.bssIdx = pwdiWowlExitParams->wdiWowlExitInfo.bssIdx;
15387
15388 wpalMemoryCopy( pSendBuffer+usDataOffset,
15389 &wowlExitparams,
15390 sizeof(wowlExitparams));
Jeff Johnson295189b2012-06-20 16:38:30 -070015391 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015392 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070015393 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015394 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
15395 wdiWowlExitCb, pEventData->pUserData, WDI_WOWL_EXIT_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070015396}/*WDI_ProcessWowlExitReq*/
15397
15398/**
15399 @brief Process Configure Apps Cpu Wakeup State Request function
15400 (called when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070015401
15402 @param pWDICtx: pointer to the WLAN DAL context
15403 pEventData: pointer to the event information structure
15404
Jeff Johnson295189b2012-06-20 16:38:30 -070015405 @see
15406 @return Result of the function call
15407*/
15408WDI_Status
15409WDI_ProcessConfigureAppsCpuWakeupStateReq
Jeff Johnsone7245742012-09-05 17:12:55 -070015410(
Jeff Johnson295189b2012-06-20 16:38:30 -070015411 WDI_ControlBlockType* pWDICtx,
15412 WDI_EventInfoType* pEventData
15413)
15414{
15415 WDI_ConfigureAppsCpuWakeupStateReqParamsType* pwdiAppsCpuWakeupStateParams = NULL;
15416 WDI_ConfigureAppsCpuWakeupStateCb wdiConfigureAppsCpuWakeupStateCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070015417 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070015418 wpt_uint16 usDataOffset = 0;
15419 wpt_uint16 usSendSize = 0;
15420 tHalConfigureAppsCpuWakeupStateReqParams halCfgAppsCpuWakeupStateReqParams;
15421 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15422
15423 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015424 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015425 -------------------------------------------------------------------------*/
15426 if (( NULL == pEventData ) ||
15427 ( NULL == (pwdiAppsCpuWakeupStateParams = (WDI_ConfigureAppsCpuWakeupStateReqParamsType*)pEventData->pEventData)) ||
15428 ( NULL == (wdiConfigureAppsCpuWakeupStateCb = (WDI_ConfigureAppsCpuWakeupStateCb)pEventData->pCBfnc)))
15429 {
15430 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015431 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015432 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015433 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015434 }
15435
15436 /*-----------------------------------------------------------------------
15437 Get message buffer
15438 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015439 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070015440 sizeof(halCfgAppsCpuWakeupStateReqParams),
15441 &pSendBuffer, &usDataOffset, &usSendSize))||
15442 ( usSendSize < (usDataOffset + sizeof(pwdiAppsCpuWakeupStateParams->bIsAppsAwake) )))
15443 {
15444 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080015445 "Unable to get send buffer in Apps CPU Wakeup State req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070015446 pEventData, pwdiAppsCpuWakeupStateParams, wdiConfigureAppsCpuWakeupStateCb);
15447 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
Jeff Johnsone7245742012-09-05 17:12:55 -070015451 halCfgAppsCpuWakeupStateReqParams.isAppsCpuAwake =
Jeff Johnson295189b2012-06-20 16:38:30 -070015452 pwdiAppsCpuWakeupStateParams->bIsAppsAwake;
15453
Jeff Johnsone7245742012-09-05 17:12:55 -070015454 wpalMemoryCopy( pSendBuffer+usDataOffset,
15455 &halCfgAppsCpuWakeupStateReqParams,
15456 sizeof(halCfgAppsCpuWakeupStateReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070015457
15458 pWDICtx->wdiReqStatusCB = pwdiAppsCpuWakeupStateParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070015459 pWDICtx->pReqStatusUserData = pwdiAppsCpuWakeupStateParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070015460
15461 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015462 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070015463 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015464 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
15465 wdiConfigureAppsCpuWakeupStateCb, pEventData->pUserData,
15466 WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070015467}/*WDI_ProcessConfigureAppsCpuWakeupStateReq*/
15468
15469#ifdef WLAN_FEATURE_VOWIFI_11R
15470/**
15471 @brief Process Aggregated Add TSpec Request function (called when Main FSM
15472 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070015473
15474 @param pWDICtx: pointer to the WLAN DAL context
15475 pEventData: pointer to the event information structure
15476
Jeff Johnson295189b2012-06-20 16:38:30 -070015477 @see
15478 @return Result of the function call
15479*/
15480WDI_Status
15481WDI_ProcessAggrAddTSpecReq
Jeff Johnsone7245742012-09-05 17:12:55 -070015482(
Jeff Johnson295189b2012-06-20 16:38:30 -070015483 WDI_ControlBlockType* pWDICtx,
15484 WDI_EventInfoType* pEventData
15485)
15486{
15487 WDI_AggrAddTSReqParamsType* pwdiAggrAddTSParams;
15488 WDI_AggrAddTsRspCb wdiAggrAddTSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070015489 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070015490 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070015491 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070015492 wpt_uint16 usDataOffset = 0;
15493 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070015494 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015495 wpt_macAddr macBSSID;
15496 tAggrAddTsReq halAggrAddTsReq;
15497 int i;
15498 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15499
15500 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015501 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015502 -------------------------------------------------------------------------*/
15503 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
15504 ( NULL == pEventData->pCBfnc ))
15505 {
15506 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015507 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015508 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015509 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015510 }
15511 wpalMemoryFill( &halAggrAddTsReq, sizeof(tAggrAddTsReq), 0 );
15512 pwdiAggrAddTSParams = (WDI_AggrAddTSReqParamsType*)pEventData->pEventData;
15513 wdiAggrAddTSRspCb = (WDI_AggrAddTsRspCb)pEventData->pCBfnc;
15514 /*-------------------------------------------------------------------------
15515 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070015516 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070015517 -------------------------------------------------------------------------*/
15518 wpalMutexAcquire(&pWDICtx->wptMutex);
15519
15520 /*------------------------------------------------------------------------
15521 Find the BSS for which the request is made and identify WDI session
15522 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015523 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
15524 pwdiAggrAddTSParams->wdiAggrTsInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070015525 &macBSSID))
15526 {
15527 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080015528 "This station does not exist in the WDI Station Table %d",
15529 pwdiAggrAddTSParams->wdiAggrTsInfo.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070015530 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070015531 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015532 }
15533
Jeff Johnsone7245742012-09-05 17:12:55 -070015534 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
15535 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070015536 {
Jeff Johnsone7245742012-09-05 17:12:55 -070015537 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15538 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
15539 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070015540
15541 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070015542 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070015543 }
Jeff Johnsone7245742012-09-05 17:12:55 -070015544
Jeff Johnson295189b2012-06-20 16:38:30 -070015545 /*------------------------------------------------------------------------
15546 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070015547 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070015548 ------------------------------------------------------------------------*/
15549 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
15550 {
Jeff Johnsone7245742012-09-05 17:12:55 -070015551 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
15552 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
15553 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070015554
Jeff Johnsone7245742012-09-05 17:12:55 -070015555 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070015556 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070015557 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070015558 }
15559
15560 wpalMutexRelease(&pWDICtx->wptMutex);
15561 /*-----------------------------------------------------------------------
15562 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070015563 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070015564 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015565 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_AGGR_ADD_TS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070015566 sizeof(tAggrAddTsParams),
15567 &pSendBuffer, &usDataOffset, &usSendSize))||
15568 ( usSendSize < (usDataOffset + sizeof(tAggrAddTsParams) )))
15569 {
15570 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080015571 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070015572 pEventData, pwdiAggrAddTSParams, wdiAggrAddTSRspCb);
15573 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015574 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015575 }
15576
Jeff Johnsone7245742012-09-05 17:12:55 -070015577 halAggrAddTsReq.aggrAddTsParam.staIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070015578 pwdiAggrAddTSParams->wdiAggrTsInfo.ucSTAIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015579 halAggrAddTsReq.aggrAddTsParam.tspecIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070015580 pwdiAggrAddTSParams->wdiAggrTsInfo.ucTspecIdx;
15581
15582 for( i = 0; i < WLAN_HAL_MAX_AC; i++ )
15583 {
Jeff Johnsone7245742012-09-05 17:12:55 -070015584 halAggrAddTsReq.aggrAddTsParam.tspec[i].type =
Jeff Johnson295189b2012-06-20 16:38:30 -070015585 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].ucType;
Jeff Johnsone7245742012-09-05 17:12:55 -070015586 halAggrAddTsReq.aggrAddTsParam.tspec[i].length =
Jeff Johnson295189b2012-06-20 16:38:30 -070015587 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].ucLength;
Jeff Johnsone7245742012-09-05 17:12:55 -070015588 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.ackPolicy =
Jeff Johnson295189b2012-06-20 16:38:30 -070015589 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
15590 ackPolicy;
Jeff Johnsone7245742012-09-05 17:12:55 -070015591 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.accessPolicy =
Jeff Johnson295189b2012-06-20 16:38:30 -070015592 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
15593 accessPolicy;
Jeff Johnsone7245742012-09-05 17:12:55 -070015594 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.userPrio =
Jeff Johnson295189b2012-06-20 16:38:30 -070015595 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
15596 userPrio;
Jeff Johnsone7245742012-09-05 17:12:55 -070015597 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.psb =
Jeff Johnson295189b2012-06-20 16:38:30 -070015598 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
15599 psb;
Jeff Johnsone7245742012-09-05 17:12:55 -070015600 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.aggregation =
Jeff Johnson295189b2012-06-20 16:38:30 -070015601 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
15602 aggregation;
Jeff Johnsone7245742012-09-05 17:12:55 -070015603 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.direction =
Jeff Johnson295189b2012-06-20 16:38:30 -070015604 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
15605 direction;
Jeff Johnsone7245742012-09-05 17:12:55 -070015606 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.tsid =
Jeff Johnson295189b2012-06-20 16:38:30 -070015607 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
15608 trafficType;
Jeff Johnsone7245742012-09-05 17:12:55 -070015609 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.tsid =
Jeff Johnson295189b2012-06-20 16:38:30 -070015610 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
15611 trafficType;
Jeff Johnsone7245742012-09-05 17:12:55 -070015612 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.schedule.rsvd =
Jeff Johnson295189b2012-06-20 16:38:30 -070015613 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiSchedule.rsvd;
Jeff Johnsone7245742012-09-05 17:12:55 -070015614 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.schedule.schedule =
Jeff Johnson295189b2012-06-20 16:38:30 -070015615 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiSchedule.schedule;
Jeff Johnsone7245742012-09-05 17:12:55 -070015616
15617
15618 halAggrAddTsReq.aggrAddTsParam.tspec[i].nomMsduSz =
Jeff Johnson295189b2012-06-20 16:38:30 -070015619 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].usNomMsduSz;
Jeff Johnsone7245742012-09-05 17:12:55 -070015620 halAggrAddTsReq.aggrAddTsParam.tspec[i].maxMsduSz =
Jeff Johnson295189b2012-06-20 16:38:30 -070015621 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].usMaxMsduSz;
Jeff Johnsone7245742012-09-05 17:12:55 -070015622 halAggrAddTsReq.aggrAddTsParam.tspec[i].minSvcInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070015623 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMinSvcInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070015624 halAggrAddTsReq.aggrAddTsParam.tspec[i].maxSvcInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070015625 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMaxSvcInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070015626 halAggrAddTsReq.aggrAddTsParam.tspec[i].inactInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070015627 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uInactInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070015628 halAggrAddTsReq.aggrAddTsParam.tspec[i].suspendInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070015629 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uSuspendInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070015630 halAggrAddTsReq.aggrAddTsParam.tspec[i].svcStartTime =
Jeff Johnson295189b2012-06-20 16:38:30 -070015631 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uSvcStartTime;
Jeff Johnsone7245742012-09-05 17:12:55 -070015632 halAggrAddTsReq.aggrAddTsParam.tspec[i].minDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070015633 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMinDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070015634 halAggrAddTsReq.aggrAddTsParam.tspec[i].meanDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070015635 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMeanDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070015636 halAggrAddTsReq.aggrAddTsParam.tspec[i].peakDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070015637 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uPeakDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070015638 halAggrAddTsReq.aggrAddTsParam.tspec[i].maxBurstSz =
Jeff Johnson295189b2012-06-20 16:38:30 -070015639 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMaxBurstSz;
Jeff Johnsone7245742012-09-05 17:12:55 -070015640 halAggrAddTsReq.aggrAddTsParam.tspec[i].delayBound =
Jeff Johnson295189b2012-06-20 16:38:30 -070015641 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uDelayBound;
Jeff Johnsone7245742012-09-05 17:12:55 -070015642 halAggrAddTsReq.aggrAddTsParam.tspec[i].minPhyRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070015643 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMinPhyRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070015644 halAggrAddTsReq.aggrAddTsParam.tspec[i].surplusBw =
Jeff Johnson295189b2012-06-20 16:38:30 -070015645 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].usSurplusBw;
Jeff Johnsone7245742012-09-05 17:12:55 -070015646 halAggrAddTsReq.aggrAddTsParam.tspec[i].mediumTime =
Jeff Johnson295189b2012-06-20 16:38:30 -070015647 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].usMediumTime;
15648 }
15649
Jeff Johnsone7245742012-09-05 17:12:55 -070015650 wpalMemoryCopy( pSendBuffer+usDataOffset,
15651 &halAggrAddTsReq,
15652 sizeof(halAggrAddTsReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070015653
15654 pWDICtx->wdiReqStatusCB = pwdiAggrAddTSParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070015655 pWDICtx->pReqStatusUserData = pwdiAggrAddTSParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070015656
15657 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015658 Send Add TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070015659 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015660 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070015661 wdiAggrAddTSRspCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -070015662 WDI_AGGR_ADD_TS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070015663}/*WDI_ProcessAggrAddTSpecReq*/
15664#endif /* WLAN_FEATURE_VOWIFI_11R */
15665
15666/**
15667 @brief Process Shutdown Request function (called when Main FSM
15668 allows it)
15669
15670 @param pWDICtx: pointer to the WLAN DAL context
15671 pEventData: pointer to the event information structure
15672
15673 @see
15674 @return Result of the function call
15675*/
15676WDI_Status
15677WDI_ProcessShutdownReq
15678(
15679 WDI_ControlBlockType* pWDICtx,
15680 WDI_EventInfoType* pEventData
15681 )
15682{
15683 wpt_status wptStatus;
15684
15685
15686 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15687
15688 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015689 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015690 -------------------------------------------------------------------------*/
15691 if ( NULL == pEventData )
15692 {
15693 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015694 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015695 WDI_ASSERT(0);
15696 return WDI_STATUS_E_FAILURE;
15697 }
15698
15699 wpalMutexAcquire(&pWDICtx->wptMutex);
15700
15701
15702 gWDIInitialized = eWLAN_PAL_FALSE;
15703 /*! TO DO: stop the data services */
15704 if ( eDRIVER_TYPE_MFG != pWDICtx->driverMode )
15705 {
15706 /*Stop the STA Table !UT- check this logic again
15707 It is safer to do it here than on the response - because a stop is imminent*/
15708 WDI_STATableStop(pWDICtx);
15709
15710 /* Stop Transport Driver, DXE */
15711 WDTS_Stop(pWDICtx);
15712 }
15713
15714 /*Clear all pending request*/
15715 WDI_ClearPendingRequests(pWDICtx);
15716 /* Close Data transport*/
15717 /* FTM mode does not open Data Path */
15718 if ( eDRIVER_TYPE_MFG != pWDICtx->driverMode )
15719 {
15720 WDTS_Close(pWDICtx);
15721 }
15722 /*Close the STA Table !UT- check this logic again*/
15723 WDI_STATableClose(pWDICtx);
15724 /*close the PAL */
15725 wptStatus = wpalClose(pWDICtx->pPALContext);
15726 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
15727 {
15728 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15729 "Failed to wpal Close %d", wptStatus);
15730 WDI_ASSERT(0);
15731 }
15732
15733 /*Transition back to init state*/
15734 WDI_STATE_TRANSITION( pWDICtx, WDI_INIT_ST);
15735
15736 wpalMutexRelease(&pWDICtx->wptMutex);
15737
15738 /*Make sure the expected state is properly defaulted to Init*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015739 pWDICtx->ucExpectedStateTransition = WDI_INIT_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -070015740
15741
Jeff Johnsone7245742012-09-05 17:12:55 -070015742 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015743}/*WDI_ProcessShutdownReq*/
15744
15745/*========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070015746 Main DAL Control Path Response Processing API
Jeff Johnson295189b2012-06-20 16:38:30 -070015747========================================================================*/
15748
15749/**
15750 @brief Process Start Response function (called when a response
15751 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015752
15753 @param pWDICtx: pointer to the WLAN DAL context
15754 pEventData: pointer to the event information structure
15755
Jeff Johnson295189b2012-06-20 16:38:30 -070015756 @see
15757 @return Result of the function call
15758*/
15759WDI_Status
15760WDI_ProcessStartRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015761(
Jeff Johnson295189b2012-06-20 16:38:30 -070015762 WDI_ControlBlockType* pWDICtx,
15763 WDI_EventInfoType* pEventData
15764)
15765{
15766 WDI_StartRspParamsType wdiRspParams;
15767 WDI_StartRspCb wdiStartRspCb = NULL;
15768
15769 tHalMacStartRspParams* startRspParams;
15770
15771#ifndef HAL_SELF_STA_PER_BSS
15772 WDI_AddStaParams wdiAddSTAParam = {0};
15773#endif
15774 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15775
Jeff Johnsone7245742012-09-05 17:12:55 -070015776 wdiStartRspCb = (WDI_StartRspCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070015777 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015778 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015779 -------------------------------------------------------------------------*/
15780 if (( NULL == pEventData ) ||
15781 ( NULL == pEventData->pEventData) ||
15782 ( NULL == wdiStartRspCb ))
15783 {
15784 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015785 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015786 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015787 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015788 }
15789
15790 /*-------------------------------------------------------------------------
15791 Extract response and send it to UMAC
15792 -------------------------------------------------------------------------*/
15793 if ( sizeof(tHalMacStartRspParams) > pEventData->uEventDataSize )
15794 {
15795 // not enough data was received
15796 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnson5b414462013-11-22 16:44:20 -080015797 "Invalid response length in Start Resp Expect %zx Rcvd %x",
Jeff Johnson295189b2012-06-20 16:38:30 -070015798 sizeof(tHalMacStartRspParams), pEventData->uEventDataSize);
15799 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015800 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015801 }
15802
15803 /*-------------------------------------------------------------------------
15804 Unpack HAL Response Message - the header was already extracted by the
Jeff Johnsone7245742012-09-05 17:12:55 -070015805 main Response Handling procedure
Jeff Johnson295189b2012-06-20 16:38:30 -070015806 -------------------------------------------------------------------------*/
15807 startRspParams = (tHalMacStartRspParams *) pEventData->pEventData;
15808
15809 wdiRspParams.ucMaxBssids = startRspParams->ucMaxBssids;
15810 wdiRspParams.ucMaxStations = startRspParams->ucMaxStations;
15811 wdiRspParams.wlanCompiledVersion.major = WLAN_HAL_VER_MAJOR;
15812 wdiRspParams.wlanCompiledVersion.minor = WLAN_HAL_VER_MINOR;
15813 wdiRspParams.wlanCompiledVersion.version = WLAN_HAL_VER_VERSION;
15814 wdiRspParams.wlanCompiledVersion.revision = WLAN_HAL_VER_REVISION;
15815 wdiRspParams.wlanReportedVersion.major =
15816 startRspParams->wcnssWlanVersion.major;
15817 wdiRspParams.wlanReportedVersion.minor =
15818 startRspParams->wcnssWlanVersion.minor;
15819 wdiRspParams.wlanReportedVersion.version =
15820 startRspParams->wcnssWlanVersion.version;
15821 wdiRspParams.wlanReportedVersion.revision =
15822 startRspParams->wcnssWlanVersion.revision;
15823 wpalMemoryCopy(wdiRspParams.wcnssSoftwareVersion,
15824 startRspParams->wcnssCrmVersionString,
15825 sizeof(wdiRspParams.wcnssSoftwareVersion));
15826 wpalMemoryCopy(wdiRspParams.wcnssHardwareVersion,
15827 startRspParams->wcnssWlanVersionString,
15828 sizeof(wdiRspParams.wcnssHardwareVersion));
15829 wdiRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(startRspParams->status);
15830
Pratik Bhalgatd4404592012-11-22 17:49:14 +053015831 /*Save the HAL Version*/
15832 pWDICtx->wlanVersion = wdiRspParams.wlanReportedVersion;
15833
Jeff Johnson295189b2012-06-20 16:38:30 -070015834 wpalMutexAcquire(&pWDICtx->wptMutex);
15835 if ( WDI_STATUS_SUCCESS == wdiRspParams.wdiStatus )
15836 {
15837 pWDICtx->ucExpectedStateTransition = WDI_STARTED_ST;
15838
15839 /*Cache the start response for further use*/
15840 wpalMemoryCopy( &pWDICtx->wdiCachedStartRspParams ,
Jeff Johnsone7245742012-09-05 17:12:55 -070015841 &wdiRspParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070015842 sizeof(pWDICtx->wdiCachedStartRspParams));
15843
15844 }
15845 else
15846 {
15847 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15848 "Failed to start device with status %s(%d)",
15849 WDI_getHALStatusMsgString(startRspParams->status),
15850 startRspParams->status);
15851
15852 /*Set the expected state transition to stopped - because the start has
15853 failed*/
15854 pWDICtx->ucExpectedStateTransition = WDI_STOPPED_ST;
15855
15856 wpalMutexRelease(&pWDICtx->wptMutex);
15857
15858 /*Notify UMAC*/
15859 wdiStartRspCb( &wdiRspParams, pWDICtx->pRspCBUserData);
Jeff Johnsone7245742012-09-05 17:12:55 -070015860
Jeff Johnson295189b2012-06-20 16:38:30 -070015861 WDI_DetectedDeviceError(pWDICtx, wdiRspParams.wdiStatus);
Katya Nigamf02ad012014-05-05 16:12:49 +053015862 wpalWlanReload();
Jeff Johnson295189b2012-06-20 16:38:30 -070015863
15864 /*Although the response is an error - it was processed by our function
15865 so as far as the caller is concerned this is a succesful reponse processing*/
15866 return WDI_STATUS_SUCCESS;
15867 }
Jeff Johnsone7245742012-09-05 17:12:55 -070015868
Jeff Johnson295189b2012-06-20 16:38:30 -070015869 wpalMutexRelease(&pWDICtx->wptMutex);
15870
15871 if(eDRIVER_TYPE_MFG == pWDICtx->driverMode)
15872 {
15873 /* FTM mode does not need to execute below */
15874 /* Notify UMAC */
15875 wdiStartRspCb( &wdiRspParams, pWDICtx->pRspCBUserData);
15876 return WDI_STATUS_SUCCESS;
15877 }
15878
15879 /* START the Data transport */
15880 WDTS_startTransport(pWDICtx);
15881
15882 /*Start the STA Table !- check this logic again*/
15883 WDI_STATableStart(pWDICtx);
15884
15885#ifndef HAL_SELF_STA_PER_BSS
15886 /* Store the Self STA Index */
15887 pWDICtx->ucSelfStaId = halStartRspMsg.startRspParams.selfStaIdx;
15888
15889 pWDICtx->usSelfStaDpuId = wdiRspParams.usSelfStaDpuId;
15890 wpalMemoryCopy(pWDICtx->macSelfSta, wdiRspParams.macSelfSta,
15891 WDI_MAC_ADDR_LEN);
15892
15893 /* At this point add the self-STA */
15894
15895 /*! TO DO: wdiAddSTAParam.bcastMgmtDpuSignature */
15896 /* !TO DO: wdiAddSTAParam.bcastDpuSignature */
15897 /*! TO DO: wdiAddSTAParam.dpuSig */
15898 /*! TO DO: wdiAddSTAParam.ucWmmEnabled */
15899 /*! TO DO: wdiAddSTAParam.ucHTCapable */
15900 /*! TO DO: wdiAddSTAParam.ucRmfEnabled */
15901
15902 //all DPU indices are the same for self STA
15903 wdiAddSTAParam.bcastDpuIndex = wdiRspParams.usSelfStaDpuId;
15904 wdiAddSTAParam.bcastMgmtDpuIndex = wdiRspParams.usSelfStaDpuId;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -070015905 wdiAddSTAParam.dpuIndex = wdiRspParams.usSelfStaDpuId;
Jeff Johnson295189b2012-06-20 16:38:30 -070015906 wpalMemoryCopy(wdiAddSTAParam.staMacAddr, wdiRspParams.macSelfSta,
15907 WDI_MAC_ADDR_LEN);
15908 wdiAddSTAParam.ucStaType = WDI_STA_ENTRY_SELF; /* 0 - self */
15909 wdiAddSTAParam.ucSTAIdx = halStartRspMsg.startRspParams.selfStaIdx;
15910
15911 /* Note: Since we don't get an explicit config STA request for self STA, we
15912 add the self STA upon receiving the Start response message. But the
15913 self STA entry in the table is deleted when WDI gets an explicit delete STA
15914 request */
15915 (void)WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
15916#endif
15917
15918 /*Notify UMAC*/
15919 wdiStartRspCb( &wdiRspParams, pWDICtx->pRspCBUserData);
15920
Jeff Johnsone7245742012-09-05 17:12:55 -070015921 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015922}/*WDI_ProcessStartRsp*/
15923
15924
15925/**
15926 @brief Process Stop Response function (called when a response
15927 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015928
15929 @param pWDICtx: pointer to the WLAN DAL context
15930 pEventData: pointer to the event information structure
15931
Jeff Johnson295189b2012-06-20 16:38:30 -070015932 @see
15933 @return Result of the function call
15934*/
15935WDI_Status
15936WDI_ProcessStopRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015937(
Jeff Johnson295189b2012-06-20 16:38:30 -070015938 WDI_ControlBlockType* pWDICtx,
15939 WDI_EventInfoType* pEventData
15940)
15941{
15942 WDI_Status wdiStatus;
15943 WDI_StopRspCb wdiStopRspCb = NULL;
15944
Jeff Johnsone7245742012-09-05 17:12:55 -070015945 tHalMacStopRspMsg halMacStopRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070015946 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15947
Jeff Johnsone7245742012-09-05 17:12:55 -070015948 wdiStopRspCb = (WDI_StopRspCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070015949 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015950 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015951 -------------------------------------------------------------------------*/
15952 if (( NULL == pEventData ) ||
15953 ( NULL == pEventData->pEventData) ||
15954 ( NULL == wdiStopRspCb ))
15955 {
15956 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015957 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015958 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015959 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015960 }
15961
15962 /*-------------------------------------------------------------------------
15963 Extract response and send it to UMAC
15964 -------------------------------------------------------------------------*/
15965 if ( sizeof(halMacStopRspMsg) < pEventData->uEventDataSize )
15966 {
15967 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080015968 "Invalid response length in Stop Resp %u",
Jeff Johnson295189b2012-06-20 16:38:30 -070015969 pEventData->uEventDataSize);
15970 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015971 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015972 }
15973
15974 /*-------------------------------------------------------------------------
15975 Unpack HAL Response Message - the header was already extracted by the
Jeff Johnsone7245742012-09-05 17:12:55 -070015976 main Response Handling procedure
Jeff Johnson295189b2012-06-20 16:38:30 -070015977 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015978 wpalMemoryCopy( &halMacStopRspMsg.stopRspParams,
15979 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070015980 sizeof(halMacStopRspMsg.stopRspParams));
15981
Jeff Johnsone7245742012-09-05 17:12:55 -070015982 wdiStatus = WDI_HAL_2_WDI_STATUS(halMacStopRspMsg.stopRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070015983
15984 wpalMutexAcquire(&pWDICtx->wptMutex);
15985
15986 /*--------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015987 Check to see if the stop went OK
Jeff Johnson295189b2012-06-20 16:38:30 -070015988 --------------------------------------------------------------------------*/
15989 if ( WDI_STATUS_SUCCESS != wdiStatus )
15990 {
15991 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15992 "Failed to stop the device with status %s (%d)",
15993 WDI_getHALStatusMsgString(halMacStopRspMsg.stopRspParams.status),
15994 halMacStopRspMsg.stopRspParams.status);
15995
Jeff Johnsone7245742012-09-05 17:12:55 -070015996 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
Katya Nigamf02ad012014-05-05 16:12:49 +053015997 wpalWlanReload();
Jeff Johnsone7245742012-09-05 17:12:55 -070015998
Jeff Johnson295189b2012-06-20 16:38:30 -070015999 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070016000 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016001 }
Jeff Johnsone7245742012-09-05 17:12:55 -070016002
Jeff Johnson295189b2012-06-20 16:38:30 -070016003 pWDICtx->ucExpectedStateTransition = WDI_STOPPED_ST;
16004
16005 /*Transition now as WDI may get preempted imediately after it sends
16006 up the Stop Response and it will not get to process the state transition
16007 from Main Rsp function*/
16008 WDI_STATE_TRANSITION( pWDICtx, pWDICtx->ucExpectedStateTransition);
16009 wpalMutexRelease(&pWDICtx->wptMutex);
16010
16011 /*! TO DO: - STOP the Data transport */
16012
16013 /*Notify UMAC*/
16014 wdiStopRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16015
Jeff Johnsone7245742012-09-05 17:12:55 -070016016 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016017}/*WDI_ProcessStopRsp*/
16018
16019/**
16020 @brief Process Close Rsp function (called when a response
16021 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016022
16023 @param pWDICtx: pointer to the WLAN DAL context
16024 pEventData: pointer to the event information structure
16025
Jeff Johnson295189b2012-06-20 16:38:30 -070016026 @see
16027 @return Result of the function call
16028*/
16029WDI_Status
16030WDI_ProcessCloseRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016031(
Jeff Johnson295189b2012-06-20 16:38:30 -070016032 WDI_ControlBlockType* pWDICtx,
16033 WDI_EventInfoType* pEventData
16034)
16035{
16036 /*There is no close response comming from HAL - function just kept for
16037 simmetry */
16038 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016039 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016040}/*WDI_ProcessCloseRsp*/
16041
16042
16043/*============================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070016044 SCAN RESPONSE PROCESSING API
Jeff Johnson295189b2012-06-20 16:38:30 -070016045============================================================================*/
16046
16047/**
16048 @brief Process Init Scan Rsp function (called when a response
16049 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016050
16051 @param pWDICtx: pointer to the WLAN DAL context
16052 pEventData: pointer to the event information structure
16053
Jeff Johnson295189b2012-06-20 16:38:30 -070016054 @see
16055 @return Result of the function call
16056*/
16057WDI_Status
16058WDI_ProcessInitScanRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016059(
Jeff Johnson295189b2012-06-20 16:38:30 -070016060 WDI_ControlBlockType* pWDICtx,
16061 WDI_EventInfoType* pEventData
16062)
16063{
16064 WDI_Status wdiStatus;
16065 WDI_InitScanRspCb wdiInitScanRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070016066 tHalInitScanRspMsg halInitScanRspMsg;
Ravali85acf6b2012-12-12 14:01:38 -080016067 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070016068 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16069
16070 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016071 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016072 -------------------------------------------------------------------------*/
16073 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16074 ( NULL == pEventData->pEventData))
16075 {
16076 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016077 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016078 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016079 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016080 }
16081
16082 wdiInitScanRspCb = (WDI_InitScanRspCb)pWDICtx->pfncRspCB;
16083 if( NULL == wdiInitScanRspCb)
16084 {
16085 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016086 "%s: call back function is NULL", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016087 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016088 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016089 }
16090
16091 /*-------------------------------------------------------------------------
16092 Unpack HAL Response Message - the header was already extracted by the
Jeff Johnsone7245742012-09-05 17:12:55 -070016093 main Response Handling procedure
Jeff Johnson295189b2012-06-20 16:38:30 -070016094 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016095 wpalMemoryCopy( &halInitScanRspMsg.initScanRspParams,
16096 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016097 sizeof(halInitScanRspMsg.initScanRspParams));
16098
Jeff Johnsone7245742012-09-05 17:12:55 -070016099 wdiStatus = WDI_HAL_2_WDI_STATUS(halInitScanRspMsg.initScanRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070016100
16101 if ( pWDICtx->bInBmps )
16102 {
16103 // notify DTS that we are entering Full power
Ravali85acf6b2012-12-12 14:01:38 -080016104 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
16105 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus ) {
16106 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain9a5d5382013-11-17 22:05:35 -080016107 "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 -080016108 WDI_ASSERT(0);
16109 }
Jeff Johnson295189b2012-06-20 16:38:30 -070016110 }
16111
16112 /*Notify UMAC*/
16113 wdiInitScanRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16114
Jeff Johnsone7245742012-09-05 17:12:55 -070016115 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016116}/*WDI_ProcessInitScanRsp*/
16117
16118
16119/**
16120 @brief Process Start Scan Rsp function (called when a response
16121 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016122
16123 @param pWDICtx: pointer to the WLAN DAL context
16124 pEventData: pointer to the event information structure
16125
Jeff Johnson295189b2012-06-20 16:38:30 -070016126 @see
16127 @return Result of the function call
16128*/
16129WDI_Status
16130WDI_ProcessStartScanRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016131(
Jeff Johnson295189b2012-06-20 16:38:30 -070016132 WDI_ControlBlockType* pWDICtx,
16133 WDI_EventInfoType* pEventData
16134)
16135{
16136 WDI_StartScanRspParamsType wdiStartScanParams;
16137 WDI_StartScanRspCb wdiStartScanRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070016138
16139 tHalStartScanRspMsg halStartScanRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070016140 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16141
16142 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016143 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016144 -------------------------------------------------------------------------*/
16145 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16146 ( NULL == pEventData->pEventData))
16147 {
16148 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016149 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016150 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016151 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016152 }
16153
16154 wdiStartScanRspCb = (WDI_StartScanRspCb)pWDICtx->pfncRspCB;
16155 if( NULL == wdiStartScanRspCb)
16156 {
16157 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016158 "%s: call back function is NULL", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016159 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016160 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016161 }
16162
16163 /*-------------------------------------------------------------------------
16164 Extract response and send it to UMAC
16165 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016166 wpalMemoryCopy( &halStartScanRspMsg.startScanRspParams,
16167 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016168 sizeof(halStartScanRspMsg.startScanRspParams));
16169
16170 wdiStartScanParams.wdiStatus = WDI_HAL_2_WDI_STATUS(
16171 halStartScanRspMsg.startScanRspParams.status);
16172#ifdef WLAN_FEATURE_VOWIFI
Jeff Johnsone7245742012-09-05 17:12:55 -070016173 wdiStartScanParams.ucTxMgmtPower =
Jeff Johnson295189b2012-06-20 16:38:30 -070016174 halStartScanRspMsg.startScanRspParams.txMgmtPower;
Jeff Johnsone7245742012-09-05 17:12:55 -070016175 wpalMemoryCopy( wdiStartScanParams.aStartTSF,
Jeff Johnson295189b2012-06-20 16:38:30 -070016176 halStartScanRspMsg.startScanRspParams.startTSF,
16177 2);
Jeff Johnsone7245742012-09-05 17:12:55 -070016178#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070016179
16180 if ( eHAL_STATUS_SUCCESS != halStartScanRspMsg.startScanRspParams.status )
16181 {
16182 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16183 "Start scan failed with status %s (%d)",
16184 WDI_getHALStatusMsgString(halStartScanRspMsg.startScanRspParams.status),
16185 halStartScanRspMsg.startScanRspParams.status);
16186 /* send the status to UMAC, don't return from here*/
16187 }
16188
16189 /*Notify UMAC*/
16190 wdiStartScanRspCb( &wdiStartScanParams, pWDICtx->pRspCBUserData);
16191
Jeff Johnsone7245742012-09-05 17:12:55 -070016192 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016193
16194}/*WDI_ProcessStartScanRsp*/
16195
16196
16197/**
Jeff Johnsone7245742012-09-05 17:12:55 -070016198 @brief Process End Scan Response function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070016199 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016200
16201 @param pWDICtx: pointer to the WLAN DAL context
16202 pEventData: pointer to the event information structure
16203
Jeff Johnson295189b2012-06-20 16:38:30 -070016204 @see
16205 @return Result of the function call
16206*/
16207WDI_Status
16208WDI_ProcessEndScanRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016209(
Jeff Johnson295189b2012-06-20 16:38:30 -070016210 WDI_ControlBlockType* pWDICtx,
16211 WDI_EventInfoType* pEventData
16212)
16213{
16214 WDI_Status wdiStatus;
16215 tHalEndScanRspMsg halEndScanRspMsg;
16216 WDI_EndScanRspCb wdiEndScanRspCb;
16217 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16218
16219 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016220 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016221 -------------------------------------------------------------------------*/
16222 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16223 ( NULL == pEventData->pEventData))
16224 {
16225 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016226 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016227 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016228 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016229 }
16230
16231 wdiEndScanRspCb = (WDI_EndScanRspCb)pWDICtx->pfncRspCB;
16232
16233 /*-------------------------------------------------------------------------
16234 Extract response and send it to UMAC
16235 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016236 wpalMemoryCopy( &halEndScanRspMsg.endScanRspParams,
16237 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016238 sizeof(halEndScanRspMsg.endScanRspParams));
16239
Jeff Johnsone7245742012-09-05 17:12:55 -070016240 wdiStatus = WDI_HAL_2_WDI_STATUS(halEndScanRspMsg.endScanRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070016241
16242 if ( eHAL_STATUS_SUCCESS != halEndScanRspMsg.endScanRspParams.status )
16243 {
16244 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16245 "End Scan failed with status %s (%d )",
16246 WDI_getHALStatusMsgString(halEndScanRspMsg.endScanRspParams.status),
16247 halEndScanRspMsg.endScanRspParams.status);
16248 /* send the status to UMAC, don't return from here*/
16249 }
16250
16251 /*Notify UMAC*/
16252 wdiEndScanRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16253
Jeff Johnsone7245742012-09-05 17:12:55 -070016254 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016255}/*WDI_ProcessEndScanRsp*/
16256
16257
16258/**
Jeff Johnsone7245742012-09-05 17:12:55 -070016259 @brief Process Finish Scan Response function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070016260 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016261
16262 @param pWDICtx: pointer to the WLAN DAL context
16263 pEventData: pointer to the event information structure
16264
Jeff Johnson295189b2012-06-20 16:38:30 -070016265 @see
16266 @return Result of the function call
16267*/
16268WDI_Status
16269WDI_ProcessFinishScanRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016270(
Jeff Johnson295189b2012-06-20 16:38:30 -070016271 WDI_ControlBlockType* pWDICtx,
16272 WDI_EventInfoType* pEventData
Jeff Johnsone7245742012-09-05 17:12:55 -070016273)
Jeff Johnson295189b2012-06-20 16:38:30 -070016274{
16275 WDI_Status wdiStatus;
16276 WDI_FinishScanRspCb wdiFinishScanRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070016277
16278 tHalFinishScanRspMsg halFinishScanRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070016279 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16280
16281 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016282 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016283 -------------------------------------------------------------------------*/
16284 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16285 ( NULL == pEventData->pEventData))
16286 {
16287 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016288 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016289 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016290 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016291 }
16292
16293 wdiFinishScanRspCb = (WDI_FinishScanRspCb)pWDICtx->pfncRspCB;
16294
16295 /*-------------------------------------------------------------------------
16296 Extract response and send it to UMAC
16297 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016298 wpalMemoryCopy( (void *)&halFinishScanRspMsg.finishScanRspParams.status,
16299 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016300 sizeof(halFinishScanRspMsg.finishScanRspParams.status));
16301
Jeff Johnsone7245742012-09-05 17:12:55 -070016302 wdiStatus = WDI_HAL_2_WDI_STATUS(halFinishScanRspMsg.finishScanRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070016303
16304 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO_LOW,
Jeff Johnsone7245742012-09-05 17:12:55 -070016305 "Finish scan response reported status: %d",
Jeff Johnson295189b2012-06-20 16:38:30 -070016306 halFinishScanRspMsg.finishScanRspParams.status);
16307
16308 if (( eHAL_STATUS_SUCCESS != halFinishScanRspMsg.finishScanRspParams.status )&&
16309 ( eHAL_STATUS_NOTIFY_BSS_FAIL != halFinishScanRspMsg.finishScanRspParams.status ))
16310 {
16311 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16312 "Finish Scan failed with status %s (%d)",
16313 WDI_getHALStatusMsgString(halFinishScanRspMsg.finishScanRspParams.status),
16314 halFinishScanRspMsg.finishScanRspParams.status);
16315 /* send the status to UMAC, don't return from here*/
16316 }
16317
16318 /*Notify UMAC*/
16319 wdiFinishScanRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16320
Jeff Johnsone7245742012-09-05 17:12:55 -070016321 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016322}/*WDI_ProcessFinishScanRsp*/
16323
16324/**
16325 @brief Process Join Response function (called when a response
16326 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016327
16328 @param pWDICtx: pointer to the WLAN DAL context
16329 pEventData: pointer to the event information structure
16330
Jeff Johnson295189b2012-06-20 16:38:30 -070016331 @see
16332 @return Result of the function call
16333*/
16334WDI_Status
16335WDI_ProcessJoinRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016336(
Jeff Johnson295189b2012-06-20 16:38:30 -070016337 WDI_ControlBlockType* pWDICtx,
16338 WDI_EventInfoType* pEventData
16339)
16340{
16341 WDI_Status wdiStatus;
16342 WDI_JoinRspCb wdiJoinRspCb;
16343 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070016344
16345 tHalJoinRspMsg halJoinRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070016346 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16347
16348 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016349 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016350 -------------------------------------------------------------------------*/
16351 if (( NULL == pWDICtx ) ||
16352 ( NULL == pWDICtx->pfncRspCB ) ||
16353 ( NULL == pEventData ) ||
16354 ( NULL == pEventData->pEventData))
16355 {
16356 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016357 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016358 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016359 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016360 }
16361
16362 wdiJoinRspCb = (WDI_JoinRspCb)pWDICtx->pfncRspCB;
16363
16364 /*-------------------------------------------------------------------------
16365 Extract response and send it to UMAC
16366 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016367 wpalMemoryCopy( &halJoinRspMsg.joinRspParams,
16368 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016369 sizeof(halJoinRspMsg.joinRspParams));
16370
Jeff Johnsone7245742012-09-05 17:12:55 -070016371 wdiStatus = WDI_HAL_2_WDI_STATUS(halJoinRspMsg.joinRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070016372
16373 wpalMutexAcquire(&pWDICtx->wptMutex);
16374
16375 /*-----------------------------------------------------------------------
16376 Join response can only be received for an existing assoc that
Jeff Johnsone7245742012-09-05 17:12:55 -070016377 is current and in progress
Jeff Johnson295189b2012-06-20 16:38:30 -070016378 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016379 if (( !WDI_VALID_SESSION_IDX(pWDICtx->ucCurrentBSSSesIdx )) ||
Jeff Johnson295189b2012-06-20 16:38:30 -070016380 ( eWLAN_PAL_FALSE == pWDICtx->bAssociationInProgress ))
16381 {
16382 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070016383 "%s: Association sequence for this BSS does not yet exist (bssIdx %d) or "
16384 "association no longer in progress %d - mysterious HAL response",
16385 __func__, pWDICtx->ucCurrentBSSSesIdx, pWDICtx->bAssociationInProgress);
Jeff Johnson295189b2012-06-20 16:38:30 -070016386
Jeff Johnsone7245742012-09-05 17:12:55 -070016387 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
Jeff Johnson295189b2012-06-20 16:38:30 -070016388 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070016389 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070016390 }
16391
16392 pBSSSes = &pWDICtx->aBSSSessions[pWDICtx->ucCurrentBSSSesIdx];
16393
16394 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016395 Join Response is only allowed in init state
Jeff Johnson295189b2012-06-20 16:38:30 -070016396 -----------------------------------------------------------------------*/
16397 if ( WDI_ASSOC_JOINING_ST != pBSSSes->wdiAssocState)
16398 {
16399 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16400 "Join only allowed in Joining state - failure state is %d "
16401 "strange HAL response", pBSSSes->wdiAssocState);
16402
Jeff Johnsone7245742012-09-05 17:12:55 -070016403 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
16404
Jeff Johnson295189b2012-06-20 16:38:30 -070016405 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070016406 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070016407 }
16408
16409
16410 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016411 If assoc has failed the current session will be deleted
Jeff Johnson295189b2012-06-20 16:38:30 -070016412 -----------------------------------------------------------------------*/
16413 if ( WDI_STATUS_SUCCESS != wdiStatus )
16414 {
16415 /*Association was failed by HAL - remove session*/
16416 WDI_DeleteSession(pWDICtx, pBSSSes);
16417
16418 /*Association no longer in progress */
16419 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
16420
16421 /*Association no longer in progress - prepare pending assoc for processing*/
16422 WDI_DequeueAssocRequest(pWDICtx);
Jeff Johnsone7245742012-09-05 17:12:55 -070016423
Jeff Johnson295189b2012-06-20 16:38:30 -070016424 }
16425 else
16426 {
16427 /*Transition to state Joining - this may be redundant as we are supposed
16428 to be in this state already - but just to be safe*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016429 pBSSSes->wdiAssocState = WDI_ASSOC_JOINING_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -070016430 }
16431
16432 wpalMutexRelease(&pWDICtx->wptMutex);
16433
16434 /*Notify UMAC*/
16435 wdiJoinRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16436
Jeff Johnsone7245742012-09-05 17:12:55 -070016437 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016438}/*WDI_ProcessJoinRsp*/
16439
16440
16441/**
Jeff Johnsone7245742012-09-05 17:12:55 -070016442 @brief Process Config BSS Response function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070016443 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016444
16445 @param pWDICtx: pointer to the WLAN DAL context
16446 pEventData: pointer to the event information structure
16447
Jeff Johnson295189b2012-06-20 16:38:30 -070016448 @see
16449 @return Result of the function call
16450*/
16451WDI_Status
16452WDI_ProcessConfigBSSRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016453(
Jeff Johnson295189b2012-06-20 16:38:30 -070016454 WDI_ControlBlockType* pWDICtx,
16455 WDI_EventInfoType* pEventData
16456)
16457{
16458 WDI_ConfigBSSRspParamsType wdiConfigBSSParams;
16459 WDI_ConfigBSSRspCb wdiConfigBSSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070016460 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070016461 WDI_BSSSessionType* pBSSSes = NULL;
16462
Jeff Johnsone7245742012-09-05 17:12:55 -070016463 tConfigBssRspMsg halConfigBssRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070016464 WDI_AddStaParams wdiBcastAddSTAParam = {0};
16465 WDI_AddStaParams wdiAddSTAParam = {0};
Jeff Johnsone7245742012-09-05 17:12:55 -070016466
Jeff Johnson295189b2012-06-20 16:38:30 -070016467 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16468
16469 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016470 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016471 -------------------------------------------------------------------------*/
16472 if (( NULL == pEventData ) ||
16473 ( NULL == pEventData->pEventData))
16474 {
16475 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016476 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016477 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016478 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016479 }
16480
16481 wdiConfigBSSRspCb = (WDI_ConfigBSSRspCb)pWDICtx->pfncRspCB;
16482
16483 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016484 Extract response and send it to UMAC
Jeff Johnson295189b2012-06-20 16:38:30 -070016485 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016486 wpalMemoryCopy( &halConfigBssRspMsg.configBssRspParams,
16487 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016488 sizeof(halConfigBssRspMsg.configBssRspParams));
16489
16490 wdiConfigBSSParams.wdiStatus = WDI_HAL_2_WDI_STATUS(
16491 halConfigBssRspMsg.configBssRspParams.status);
16492 if(WDI_STATUS_SUCCESS == wdiConfigBSSParams.wdiStatus)
16493 {
Jeff Johnsone7245742012-09-05 17:12:55 -070016494 wpalMemoryCopy( wdiConfigBSSParams.macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -070016495 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.macBSSID,
16496 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070016497
Jeff Johnson295189b2012-06-20 16:38:30 -070016498 wdiConfigBSSParams.ucBSSIdx = halConfigBssRspMsg.configBssRspParams.bssIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016499
16500 wdiConfigBSSParams.ucBcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070016501 halConfigBssRspMsg.configBssRspParams.bcastDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070016502
16503 wdiConfigBSSParams.ucUcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070016504 halConfigBssRspMsg.configBssRspParams.ucastDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070016505
Jeff Johnson295189b2012-06-20 16:38:30 -070016506 wdiConfigBSSParams.ucSTAIdx = halConfigBssRspMsg.configBssRspParams.bssStaIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016507
Jeff Johnson295189b2012-06-20 16:38:30 -070016508 #ifdef WLAN_FEATURE_VOWIFI
Jeff Johnsone7245742012-09-05 17:12:55 -070016509 wdiConfigBSSParams.ucTxMgmtPower =
Jeff Johnson295189b2012-06-20 16:38:30 -070016510 halConfigBssRspMsg.configBssRspParams.txMgmtPower;
16511 #endif
16512 wpalMemoryCopy( wdiConfigBSSParams.macSTA,
16513 halConfigBssRspMsg.configBssRspParams.staMac,
16514 WDI_MAC_ADDR_LEN );
Jeff Johnsone7245742012-09-05 17:12:55 -070016515
Jeff Johnson295189b2012-06-20 16:38:30 -070016516 wpalMutexAcquire(&pWDICtx->wptMutex);
16517 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016518 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070016519 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016520 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
16521 wdiConfigBSSParams.macBSSID,
16522 &pBSSSes);
16523
Jeff Johnson295189b2012-06-20 16:38:30 -070016524 /*-----------------------------------------------------------------------
16525 Config BSS response can only be received for an existing assoc that
Jeff Johnsone7245742012-09-05 17:12:55 -070016526 is current and in progress
Jeff Johnson295189b2012-06-20 16:38:30 -070016527 -----------------------------------------------------------------------*/
16528 if ( NULL == pBSSSes )
16529 {
16530 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16531 "Association sequence for this BSS does not yet exist "
16532 "- mysterious HAL response");
Jeff Johnsone7245742012-09-05 17:12:55 -070016533
16534 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
16535
Jeff Johnson295189b2012-06-20 16:38:30 -070016536 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070016537 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070016538 }
Jeff Johnsone7245742012-09-05 17:12:55 -070016539
Jeff Johnson295189b2012-06-20 16:38:30 -070016540 /*Save data for this BSS*/
16541 pBSSSes->wdiBssType = pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiBSSType;
16542 pBSSSes->ucBSSIdx = halConfigBssRspMsg.configBssRspParams.bssIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016543 pBSSSes->bcastDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070016544 halConfigBssRspMsg.configBssRspParams.bcastDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016545 pBSSSes->bcastDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070016546 halConfigBssRspMsg.configBssRspParams.bcastDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070016547 pBSSSes->bcastMgmtDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070016548 halConfigBssRspMsg.configBssRspParams.mgmtDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016549 pBSSSes->bcastMgmtDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070016550 halConfigBssRspMsg.configBssRspParams.mgmtDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070016551 pBSSSes->ucRmfEnabled =
Jeff Johnson295189b2012-06-20 16:38:30 -070016552 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.ucRMFEnabled;
16553 pBSSSes->bcastStaIdx =
16554 halConfigBssRspMsg.configBssRspParams.bssBcastStaIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016555
Jeff Johnson295189b2012-06-20 16:38:30 -070016556 /* !TO DO: Shuould we be updating the RMF Capability of self STA here? */
Jeff Johnsone7245742012-09-05 17:12:55 -070016557
Jeff Johnson295189b2012-06-20 16:38:30 -070016558 /*-------------------------------------------------------------------------
16559 Add Peer STA
16560 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016561 wdiAddSTAParam.ucSTAIdx = halConfigBssRspMsg.configBssRspParams.bssStaIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070016562 wdiAddSTAParam.dpuIndex = halConfigBssRspMsg.configBssRspParams.dpuDescIndx;
16563 wdiAddSTAParam.dpuSig = halConfigBssRspMsg.configBssRspParams.ucastDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070016564
Jeff Johnson295189b2012-06-20 16:38:30 -070016565 /*This info can be retrieved from the cached initial request*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016566 wdiAddSTAParam.ucWmmEnabled =
Jeff Johnson295189b2012-06-20 16:38:30 -070016567 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiSTAContext.ucWMMEnabled;
Jeff Johnsone7245742012-09-05 17:12:55 -070016568 wdiAddSTAParam.ucHTCapable =
16569 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiSTAContext.ucHTCapable;
16570 wdiAddSTAParam.ucStaType =
16571 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiSTAContext.wdiSTAType;
16572
Jeff Johnson295189b2012-06-20 16:38:30 -070016573 /* MAC Address of STA */
Jeff Johnsone7245742012-09-05 17:12:55 -070016574 wpalMemoryCopy(wdiAddSTAParam.staMacAddr,
16575 halConfigBssRspMsg.configBssRspParams.staMac,
Jeff Johnson295189b2012-06-20 16:38:30 -070016576 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070016577
16578 wpalMemoryCopy(wdiAddSTAParam.macBSSID,
16579 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiSTAContext.macBSSID ,
16580 WDI_MAC_ADDR_LEN);
16581
Jeff Johnson295189b2012-06-20 16:38:30 -070016582 /*Add BSS specific parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016583 wdiAddSTAParam.bcastMgmtDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070016584 halConfigBssRspMsg.configBssRspParams.mgmtDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016585 wdiAddSTAParam.bcastMgmtDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070016586 halConfigBssRspMsg.configBssRspParams.mgmtDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070016587 wdiAddSTAParam.bcastDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070016588 halConfigBssRspMsg.configBssRspParams.bcastDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016589 wdiAddSTAParam.bcastDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070016590 halConfigBssRspMsg.configBssRspParams.bcastDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070016591 wdiAddSTAParam.ucRmfEnabled =
Jeff Johnson295189b2012-06-20 16:38:30 -070016592 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.ucRMFEnabled;
Jeff Johnsone7245742012-09-05 17:12:55 -070016593 wdiAddSTAParam.ucBSSIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070016594 halConfigBssRspMsg.configBssRspParams.bssIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016595
Jeff Johnson295189b2012-06-20 16:38:30 -070016596 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
16597 "Add STA to the table index: %d", wdiAddSTAParam.ucSTAIdx );
Jeff Johnsone7245742012-09-05 17:12:55 -070016598
Jeff Johnson295189b2012-06-20 16:38:30 -070016599 WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
16600 /*-------------------------------------------------------------------------
16601 Add Broadcast STA only in AP mode
16602 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016603 if( pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.ucOperMode ==
Ravi Joshid0699502013-07-08 15:48:47 -070016604 WDI_BSS_OPERATIONAL_MODE_AP || pBSSSes->wdiBssType == WDI_IBSS_MODE)
Jeff Johnson295189b2012-06-20 16:38:30 -070016605 {
16606 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
16607 "Add BCAST STA to table for index: %d",
16608 halConfigBssRspMsg.configBssRspParams.bssBcastStaIdx );
Jeff Johnsone7245742012-09-05 17:12:55 -070016609
16610 wpalMemoryCopy( &wdiBcastAddSTAParam, &wdiAddSTAParam,
Jeff Johnson295189b2012-06-20 16:38:30 -070016611 sizeof(WDI_AddStaParams) );
Jeff Johnsone7245742012-09-05 17:12:55 -070016612
Jeff Johnson295189b2012-06-20 16:38:30 -070016613 WDI_AddBcastSTAtoSTATable( pWDICtx, &wdiBcastAddSTAParam,
16614 halConfigBssRspMsg.configBssRspParams.bssBcastStaIdx );
16615 }
16616 wpalMutexRelease(&pWDICtx->wptMutex);
16617 }
16618 else
16619 {
16620 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16621 "Config BSS RSP failed with status : %s(%d)",
16622 WDI_getHALStatusMsgString(
Jeff Johnsone7245742012-09-05 17:12:55 -070016623 halConfigBssRspMsg.configBssRspParams.status),
Jeff Johnson295189b2012-06-20 16:38:30 -070016624 halConfigBssRspMsg.configBssRspParams.status);
16625
Jeff Johnsone7245742012-09-05 17:12:55 -070016626
Jeff Johnson295189b2012-06-20 16:38:30 -070016627 /*Association was failed by HAL - remove session*/
16628 WDI_DeleteSession(pWDICtx, pBSSSes);
16629
16630 /*Association no longer in progress */
16631 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
16632
16633 /*Association no longer in progress - prepare pending assoc for processing*/
16634 WDI_DequeueAssocRequest(pWDICtx);
16635
16636 }
16637
16638 /*Notify UMAC*/
16639 wdiConfigBSSRspCb( &wdiConfigBSSParams, pWDICtx->pRspCBUserData);
16640
Jeff Johnsone7245742012-09-05 17:12:55 -070016641 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016642}/*WDI_ProcessConfigBSSRsp*/
16643
16644
16645/**
16646 @brief Process Del BSS Response function (called when a response
16647 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016648
16649 @param pWDICtx: pointer to the WLAN DAL context
16650 pEventData: pointer to the event information structure
16651
Jeff Johnson295189b2012-06-20 16:38:30 -070016652 @see
16653 @return Result of the function call
16654*/
16655WDI_Status
16656WDI_ProcessDelBSSRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016657(
Jeff Johnson295189b2012-06-20 16:38:30 -070016658 WDI_ControlBlockType* pWDICtx,
16659 WDI_EventInfoType* pEventData
16660)
16661{
16662 WDI_DelBSSRspParamsType wdiDelBSSParams;
16663 WDI_DelBSSRspCb wdiDelBSSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070016664 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070016665 WDI_BSSSessionType* pBSSSes = NULL;
16666
Jeff Johnsone7245742012-09-05 17:12:55 -070016667 tDeleteBssRspMsg halDelBssRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070016668 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16669
16670 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016671 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016672 -------------------------------------------------------------------------*/
16673 if (( NULL == pEventData ) ||
16674 ( NULL == pEventData->pEventData))
16675 {
16676 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016677 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016678 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016679 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016680 }
16681
16682 wdiDelBSSRspCb = (WDI_DelBSSRspCb)pWDICtx->pfncRspCB;
16683
16684 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016685 Extract response and send it to UMAC
Jeff Johnson295189b2012-06-20 16:38:30 -070016686 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016687 wpalMemoryCopy( &halDelBssRspMsg.deleteBssRspParams,
16688 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016689 sizeof(halDelBssRspMsg.deleteBssRspParams));
16690
16691
16692 wdiDelBSSParams.wdiStatus = WDI_HAL_2_WDI_STATUS(
Jeff Johnsone7245742012-09-05 17:12:55 -070016693 halDelBssRspMsg.deleteBssRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070016694
16695 wpalMutexAcquire(&pWDICtx->wptMutex);
16696
16697 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016698 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070016699 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016700 ucCurrentBSSSesIdx = WDI_FindAssocSessionByBSSIdx( pWDICtx,
16701 halDelBssRspMsg.deleteBssRspParams.bssIdx,
16702 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070016703
16704 /*-----------------------------------------------------------------------
16705 Del BSS response can only be received for an existing assoc that
Jeff Johnsone7245742012-09-05 17:12:55 -070016706 is current and in progress
Jeff Johnson295189b2012-06-20 16:38:30 -070016707 -----------------------------------------------------------------------*/
16708 if ( NULL == pBSSSes )
16709 {
16710 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16711 "Association sequence for this BSS does not yet exist or "
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -080016712 "association no longer in progress - mysterious HAL response");
16713
16714 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
16715
16716 wpalMutexRelease(&pWDICtx->wptMutex);
16717 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070016718 }
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -080016719
16720 /*Extract BSSID for the response to UMAC*/
16721 wpalMemoryCopy(wdiDelBSSParams.macBSSID,
16722 pBSSSes->macBSSID, WDI_MAC_ADDR_LEN);
16723
16724 wdiDelBSSParams.ucBssIdx = halDelBssRspMsg.deleteBssRspParams.bssIdx;
16725
16726 /*-----------------------------------------------------------------------
16727 The current session will be deleted
16728 -----------------------------------------------------------------------*/
16729 WDI_DeleteSession(pWDICtx, pBSSSes);
16730
16731
16732 /* Delete the BCAST STA entry from the STA table if SAP/GO session is deleted */
krunal soni3fc26642013-10-08 22:41:42 -070016733 if(WDI_INFRA_AP_MODE == pBSSSes->wdiBssType ||
16734 pBSSSes->wdiBssType == WDI_IBSS_MODE)
Jeff Johnson295189b2012-06-20 16:38:30 -070016735 {
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -080016736 (void)WDI_STATableDelSta( pWDICtx, pBSSSes->bcastStaIdx );
Madan Mohan Koyyalamudif371f172012-10-31 16:35:43 -070016737 }
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -080016738
16739 /* Delete the STA's in this BSS */
16740 WDI_STATableBSSDelSta(pWDICtx, halDelBssRspMsg.deleteBssRspParams.bssIdx);
16741
Jeff Johnson295189b2012-06-20 16:38:30 -070016742 wpalMutexRelease(&pWDICtx->wptMutex);
16743
16744 /*Notify UMAC*/
16745 wdiDelBSSRspCb( &wdiDelBSSParams, pWDICtx->pRspCBUserData);
16746
Jeff Johnsone7245742012-09-05 17:12:55 -070016747 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016748}/*WDI_ProcessDelBSSRsp*/
16749
16750/**
16751 @brief Process Post Assoc Rsp function (called when a response
16752 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016753
16754 @param pWDICtx: pointer to the WLAN DAL context
16755 pEventData: pointer to the event information structure
16756
Jeff Johnson295189b2012-06-20 16:38:30 -070016757 @see
16758 @return Result of the function call
16759*/
16760WDI_Status
16761WDI_ProcessPostAssocRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016762(
Jeff Johnson295189b2012-06-20 16:38:30 -070016763 WDI_ControlBlockType* pWDICtx,
16764 WDI_EventInfoType* pEventData
16765)
16766{
16767 WDI_PostAssocRspParamsType wdiPostAssocParams;
16768 WDI_PostAssocRspCb wdiPostAssocRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070016769 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070016770 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070016771 tPostAssocRspMsg halPostAssocRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070016772 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16773
16774 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016775 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016776 -------------------------------------------------------------------------*/
16777 if (( NULL == pEventData ) ||
16778 ( NULL == pEventData->pEventData))
16779 {
16780 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016781 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016782 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016783 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016784 }
16785
16786 wdiPostAssocRspCb = (WDI_PostAssocRspCb)pWDICtx->pfncRspCB;
16787
16788 /*-------------------------------------------------------------------------
16789 Extract response and send it to UMAC
16790 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016791 wpalMemoryCopy( &halPostAssocRspMsg.postAssocRspParams,
16792 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016793 sizeof(halPostAssocRspMsg.postAssocRspParams));
16794
16795 /*Extract the Post Assoc STA Params */
16796
Jeff Johnsone7245742012-09-05 17:12:55 -070016797 wdiPostAssocParams.staParams.ucSTAIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070016798 halPostAssocRspMsg.postAssocRspParams.configStaRspParams.staIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016799 wdiPostAssocParams.staParams.ucUcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070016800 halPostAssocRspMsg.postAssocRspParams.configStaRspParams.ucUcastSig;
Jeff Johnsone7245742012-09-05 17:12:55 -070016801 wdiPostAssocParams.staParams.ucBcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070016802 halPostAssocRspMsg.postAssocRspParams.configStaRspParams.ucBcastSig;
16803
Jeff Johnsone7245742012-09-05 17:12:55 -070016804 wdiPostAssocParams.wdiStatus =
16805 WDI_HAL_2_WDI_STATUS(halPostAssocRspMsg.postAssocRspParams.configStaRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070016806
16807 /*Copy the MAC addresses from the cached storage in the WDI CB as they are not
16808 included in the response */
Jeff Johnsone7245742012-09-05 17:12:55 -070016809 wpalMemoryCopy( wdiPostAssocParams.staParams.macSTA,
16810 pWDICtx->wdiCachedPostAssocReq.wdiSTAParams.macSTA,
Jeff Johnson295189b2012-06-20 16:38:30 -070016811 WDI_MAC_ADDR_LEN);
16812
16813 /* Extract Post Assoc BSS Params */
16814
Jeff Johnsone7245742012-09-05 17:12:55 -070016815 wpalMemoryCopy( wdiPostAssocParams.bssParams.macBSSID,
16816 pWDICtx->wdiCachedPostAssocReq.wdiBSSParams.macBSSID,
16817 WDI_MAC_ADDR_LEN);
Jeff Johnson295189b2012-06-20 16:38:30 -070016818
16819 /*Copy the MAC addresses from the cached storage in the WDI CB as they are not
16820 included in the response */
Jeff Johnsone7245742012-09-05 17:12:55 -070016821 wpalMemoryCopy( wdiPostAssocParams.bssParams.macSTA,
Jeff Johnson295189b2012-06-20 16:38:30 -070016822 pWDICtx->wdiCachedPostAssocReq.wdiBSSParams.wdiSTAContext
16823 .macSTA, WDI_MAC_ADDR_LEN);
16824
Jeff Johnsone7245742012-09-05 17:12:55 -070016825 wdiPostAssocParams.bssParams.ucBcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070016826 halPostAssocRspMsg.postAssocRspParams.configStaRspParams.ucBcastSig;
16827
Jeff Johnsone7245742012-09-05 17:12:55 -070016828 wdiPostAssocParams.bssParams.ucUcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070016829 halPostAssocRspMsg.postAssocRspParams.configStaRspParams.ucUcastSig;
16830
16831 wdiPostAssocParams.bssParams.ucBSSIdx =
16832 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bssIdx;
16833
Jeff Johnsone7245742012-09-05 17:12:55 -070016834 wdiPostAssocParams.bssParams.ucSTAIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070016835 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bssStaIdx;
16836
16837 wpalMutexAcquire(&pWDICtx->wptMutex);
16838
16839 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016840 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070016841 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016842 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
Jeff Johnson295189b2012-06-20 16:38:30 -070016843 wdiPostAssocParams.bssParams.
Jeff Johnsone7245742012-09-05 17:12:55 -070016844 macBSSID, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070016845
16846 /*-----------------------------------------------------------------------
16847 Post assoc response can only be received for an existing assoc that
Jeff Johnsone7245742012-09-05 17:12:55 -070016848 is current and in progress
Jeff Johnson295189b2012-06-20 16:38:30 -070016849 -----------------------------------------------------------------------*/
16850 if (( NULL == pBSSSes ) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070016851 ( ucCurrentBSSSesIdx != pWDICtx->ucCurrentBSSSesIdx ) ||
Jeff Johnson295189b2012-06-20 16:38:30 -070016852 ( eWLAN_PAL_FALSE == pWDICtx->bAssociationInProgress ))
16853 {
16854 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16855 "Association sequence for this BSS does not yet exist or "
16856 "association no longer in progress - mysterious HAL response");
16857
Jeff Johnsone7245742012-09-05 17:12:55 -070016858 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
16859
Jeff Johnson295189b2012-06-20 16:38:30 -070016860 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070016861 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070016862 }
16863
16864 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016865 Post Assoc Request is only allowed in Joining state
Jeff Johnson295189b2012-06-20 16:38:30 -070016866 -----------------------------------------------------------------------*/
16867 if ( WDI_ASSOC_JOINING_ST != pBSSSes->wdiAssocState)
16868 {
16869 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16870 "Post Assoc not allowed before JOIN - failing request "
16871 "strange 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 If assoc has failed the current session will be deleted
Jeff Johnson295189b2012-06-20 16:38:30 -070016881 -----------------------------------------------------------------------*/
16882 if ( WDI_STATUS_SUCCESS != wdiPostAssocParams.wdiStatus )
16883 {
16884 /*Association was failed by HAL - remove session*/
16885 WDI_DeleteSession(pWDICtx, pBSSSes);
16886 }
16887 else
16888 {
16889 /*Transition to state POST Assoc*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016890 pBSSSes->wdiAssocState = WDI_ASSOC_POST_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -070016891
16892 /*Save DPU Info*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016893 pBSSSes->bcastMgmtDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070016894 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.mgmtDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016895 pBSSSes->bcastMgmtDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070016896 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.mgmtDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070016897 pBSSSes->bcastDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070016898 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bcastDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016899 pBSSSes->bcastDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070016900 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bcastDpuSignature;
16901
Jeff Johnsone7245742012-09-05 17:12:55 -070016902 pBSSSes->ucBSSIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070016903 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bssIdx;
16904 }
16905
16906 /*Association no longer in progress */
16907 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
16908
16909 /*Association no longer in progress - prepare pending assoc for processing*/
16910 WDI_DequeueAssocRequest(pWDICtx);
16911
16912 wpalMutexRelease(&pWDICtx->wptMutex);
16913
16914 /*Notify UMAC*/
16915 wdiPostAssocRspCb( &wdiPostAssocParams, pWDICtx->pRspCBUserData);
16916
Jeff Johnsone7245742012-09-05 17:12:55 -070016917 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016918}/*WDI_ProcessPostAssocRsp*/
16919
16920/**
Jeff Johnsone7245742012-09-05 17:12:55 -070016921 @brief Process Del STA Rsp function (called when a response is
Jeff Johnson295189b2012-06-20 16:38:30 -070016922 being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016923
16924 @param pWDICtx: pointer to the WLAN DAL context
16925 pEventData: pointer to the event information structure
16926
Jeff Johnson295189b2012-06-20 16:38:30 -070016927 @see
16928 @return Result of the function call
16929*/
16930WDI_Status
16931WDI_ProcessDelSTARsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016932(
Jeff Johnson295189b2012-06-20 16:38:30 -070016933 WDI_ControlBlockType* pWDICtx,
16934 WDI_EventInfoType* pEventData
16935)
16936{
16937 WDI_DelSTARspParamsType wdiDelSTARsp;
16938 WDI_DelSTARspCb wdiDelSTARspCb;
16939 wpt_uint8 staType;
Jeff Johnsone7245742012-09-05 17:12:55 -070016940 tDeleteStaRspMsg halDelStaRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070016941 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16942
16943 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016944 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016945 -------------------------------------------------------------------------*/
16946 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16947 ( NULL == pEventData->pEventData))
16948 {
16949 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016950 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016951 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016952 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016953 }
16954
16955 wdiDelSTARspCb = (WDI_DelSTARspCb)pWDICtx->pfncRspCB;
16956
16957 /*-------------------------------------------------------------------------
16958 Extract response and send it to UMAC
16959 -------------------------------------------------------------------------*/
16960 wpalMemoryCopy( &halDelStaRspMsg.delStaRspParams,
Jeff Johnsone7245742012-09-05 17:12:55 -070016961 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016962 sizeof(halDelStaRspMsg.delStaRspParams));
16963
16964 wdiDelSTARsp.ucSTAIdx = halDelStaRspMsg.delStaRspParams.staId;
Jeff Johnsone7245742012-09-05 17:12:55 -070016965 wdiDelSTARsp.wdiStatus =
16966 WDI_HAL_2_WDI_STATUS(halDelStaRspMsg.delStaRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070016967
16968 WDI_STATableGetStaType(pWDICtx, wdiDelSTARsp.ucSTAIdx, &staType);
16969
16970 /* If the DEL STA request is for self STA do not delete it - Really weird!!What happens in concurrency */
16971 if(staType == WDI_STA_ENTRY_SELF)
16972 {
16973 WDI_StaStruct* pSTATable = (WDI_StaStruct*) pWDICtx->staTable;
16974
16975 /* At this point add the self-STA */
16976
16977 /*! TO DO: wdiAddSTAParam.ucWmmEnabled */
16978 /*! TO DO: wdiAddSTAParam.ucHTCapable */
16979 /*! TO DO: wdiAddSTAParam.ucRmfEnabled */
16980
16981#define WDI_DPU_SELF_STA_DEFAULT_IDX 0
16982#define WDI_DPU_SELF_STA_DEFAULT_SIG 0
16983
16984 //all DPU indices are the same for self STA
16985 pSTATable[wdiDelSTARsp.ucSTAIdx].dpuIndex = WDI_DPU_SELF_STA_DEFAULT_IDX;
16986 pSTATable[wdiDelSTARsp.ucSTAIdx].bcastDpuIndex = WDI_DPU_SELF_STA_DEFAULT_IDX;
16987 pSTATable[wdiDelSTARsp.ucSTAIdx].bcastMgmtDpuIndex = WDI_DPU_SELF_STA_DEFAULT_IDX;
16988 pSTATable[wdiDelSTARsp.ucSTAIdx].bcastDpuSignature = WDI_DPU_SELF_STA_DEFAULT_SIG;
16989 pSTATable[wdiDelSTARsp.ucSTAIdx].bcastMgmtDpuSignature = WDI_DPU_SELF_STA_DEFAULT_SIG;
16990 pSTATable[wdiDelSTARsp.ucSTAIdx].dpuSig = WDI_DPU_SELF_STA_DEFAULT_SIG;
Madan Mohan Koyyalamudi15a48f02012-10-05 17:13:53 -070016991
16992 pSTATable[wdiDelSTARsp.ucSTAIdx].bssIdx = WDI_BSS_INVALID_IDX;
Jeff Johnson295189b2012-06-20 16:38:30 -070016993 }
16994 else
16995 {
16996 //Delete the station in the table
16997 WDI_STATableDelSta( pWDICtx, wdiDelSTARsp.ucSTAIdx);
16998 }
16999
17000 /*Notify UMAC*/
17001 wdiDelSTARspCb( &wdiDelSTARsp, pWDICtx->pRspCBUserData);
17002
Jeff Johnsone7245742012-09-05 17:12:55 -070017003 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017004}/*WDI_ProcessDelSTARsp*/
17005
17006
17007/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070017008 Security Response Processing Functions
Jeff Johnson295189b2012-06-20 16:38:30 -070017009==========================================================================*/
17010
17011/**
17012 @brief Process Set BSS Key Rsp function (called when a response
17013 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017014
17015 @param pWDICtx: pointer to the WLAN DAL context
17016 pEventData: pointer to the event information structure
17017
Jeff Johnson295189b2012-06-20 16:38:30 -070017018 @see
17019 @return Result of the function call
17020*/
17021WDI_Status
17022WDI_ProcessSetBssKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017023(
Jeff Johnson295189b2012-06-20 16:38:30 -070017024 WDI_ControlBlockType* pWDICtx,
17025 WDI_EventInfoType* pEventData
17026)
17027{
17028 WDI_Status wdiStatus;
17029 eHalStatus halStatus;
17030 WDI_SetBSSKeyRspCb wdiSetBSSKeyRspCb;
17031 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17032
17033 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017034 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017035 -------------------------------------------------------------------------*/
17036 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17037 ( NULL == pEventData->pEventData))
17038 {
17039 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017040 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017041 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017042 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017043 }
17044
17045 wdiSetBSSKeyRspCb = (WDI_SetBSSKeyRspCb)pWDICtx->pfncRspCB;
17046
17047 /*-------------------------------------------------------------------------
17048 Extract response and send it to UMAC
17049 -------------------------------------------------------------------------*/
17050 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070017051 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017052
17053 if ( eHAL_STATUS_SUCCESS != halStatus )
17054 {
17055 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17056 "Set BSS Key failed with status %s (%d)",
17057 WDI_getHALStatusMsgString(halStatus),
17058 halStatus);
17059 /* send the status to UMAC, don't return from here*/
17060 }
17061
17062 /*Notify UMAC*/
17063 wdiSetBSSKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17064
Jeff Johnsone7245742012-09-05 17:12:55 -070017065 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017066}/*WDI_ProcessSetBssKeyRsp*/
17067
17068/**
17069 @brief Process Remove BSS Key Rsp function (called when a response
17070 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017071
17072 @param pWDICtx: pointer to the WLAN DAL context
17073 pEventData: pointer to the event information structure
17074
Jeff Johnson295189b2012-06-20 16:38:30 -070017075 @see
17076 @return Result of the function call
17077*/
17078WDI_Status
17079WDI_ProcessRemoveBssKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017080(
Jeff Johnson295189b2012-06-20 16:38:30 -070017081 WDI_ControlBlockType* pWDICtx,
17082 WDI_EventInfoType* pEventData
17083)
17084{
17085 WDI_Status wdiStatus;
17086 eHalStatus halStatus;
17087 WDI_RemoveBSSKeyRspCb wdiRemoveBSSKeyRspCb;
17088 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17089
17090 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017091 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017092 -------------------------------------------------------------------------*/
17093 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17094 ( NULL == pEventData->pEventData))
17095 {
17096 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017097 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017098 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017099 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017100 }
17101
17102 wdiRemoveBSSKeyRspCb = (WDI_RemoveBSSKeyRspCb)pWDICtx->pfncRspCB;
17103
17104 /*-------------------------------------------------------------------------
17105 Extract response and send it to UMAC
17106 -------------------------------------------------------------------------*/
17107 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070017108 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017109
17110 if ( eHAL_STATUS_SUCCESS != halStatus )
17111 {
17112 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17113 "Remove BSS Key failed with status %s (%d )",
17114 WDI_getHALStatusMsgString(halStatus),
17115 halStatus);
17116 /* send the status to UMAC, don't return from here*/
17117 }
17118
17119 /*Notify UMAC*/
17120 wdiRemoveBSSKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17121
Jeff Johnsone7245742012-09-05 17:12:55 -070017122 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017123}/*WDI_ProcessSetBssKeyRsp*/
17124
17125
17126/**
17127 @brief Process Set STA Key Rsp function (called when a response
17128 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017129
17130 @param pWDICtx: pointer to the WLAN DAL context
17131 pEventData: pointer to the event information structure
17132
Jeff Johnson295189b2012-06-20 16:38:30 -070017133 @see
17134 @return Result of the function call
17135*/
17136WDI_Status
17137WDI_ProcessSetStaKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017138(
Jeff Johnson295189b2012-06-20 16:38:30 -070017139 WDI_ControlBlockType* pWDICtx,
17140 WDI_EventInfoType* pEventData
17141)
17142{
17143 WDI_Status wdiStatus;
17144 eHalStatus halStatus;
17145 WDI_SetSTAKeyRspCb wdiSetSTAKeyRspCb;
17146 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17147
17148 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017149 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017150 -------------------------------------------------------------------------*/
17151 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17152 ( NULL == pEventData->pEventData))
17153 {
17154 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017155 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017156 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017157 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017158 }
17159
17160 wdiSetSTAKeyRspCb = (WDI_SetSTAKeyRspCb)pWDICtx->pfncRspCB;
17161
17162 /*-------------------------------------------------------------------------
17163 Extract response and send it to UMAC
17164 -------------------------------------------------------------------------*/
17165 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070017166 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017167
17168 if ( eHAL_STATUS_SUCCESS != halStatus )
17169 {
17170 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17171 "Set STA Key failed with status %s (%d)",
17172 WDI_getHALStatusMsgString(halStatus),
17173 halStatus);
17174 /* send the status to UMAC, don't return from here*/
17175 }
17176
17177 /*Notify UMAC*/
17178 wdiSetSTAKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17179
Jeff Johnsone7245742012-09-05 17:12:55 -070017180 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017181}/*WDI_ProcessSetSTAKeyRsp*/
17182
17183/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017184 @brief Process Remove STA Key Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070017185 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017186
17187 @param pWDICtx: pointer to the WLAN DAL context
17188 pEventData: pointer to the event information structure
17189
Jeff Johnson295189b2012-06-20 16:38:30 -070017190 @see
17191 @return Result of the function call
17192*/
17193WDI_Status
17194WDI_ProcessRemoveStaKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017195(
Jeff Johnson295189b2012-06-20 16:38:30 -070017196 WDI_ControlBlockType* pWDICtx,
17197 WDI_EventInfoType* pEventData
17198)
17199{
17200 WDI_Status wdiStatus;
17201 eHalStatus halStatus;
17202 WDI_RemoveSTAKeyRspCb wdiRemoveSTAKeyRspCb;
17203 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17204
17205 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017206 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017207 -------------------------------------------------------------------------*/
17208 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17209 ( NULL == pEventData->pEventData))
17210 {
17211 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017212 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017213 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017214 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017215 }
17216
17217 wdiRemoveSTAKeyRspCb = (WDI_RemoveSTAKeyRspCb)pWDICtx->pfncRspCB;
17218
17219 /*-------------------------------------------------------------------------
17220 Extract response and send it to UMAC
17221 -------------------------------------------------------------------------*/
17222 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070017223 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017224
17225 if ( eHAL_STATUS_SUCCESS != halStatus )
17226 {
17227 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17228 "Remove STA Key failed with status %s (%d)",
17229 WDI_getHALStatusMsgString(halStatus),
17230 halStatus);
17231 /* send the status to UMAC, don't return from here*/
17232 }
17233
17234 /*Notify UMAC*/
17235 wdiRemoveSTAKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17236
Jeff Johnsone7245742012-09-05 17:12:55 -070017237 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017238}/*WDI_ProcessRemoveStaKeyRsp*/
17239
17240/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017241 @brief Process Set STA Bcast Key Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070017242 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017243
17244 @param pWDICtx: pointer to the WLAN DAL context
17245 pEventData: pointer to the event information structure
17246
Jeff Johnson295189b2012-06-20 16:38:30 -070017247 @see
17248 @return Result of the function call
17249*/
17250WDI_Status
17251WDI_ProcessSetStaBcastKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017252(
Jeff Johnson295189b2012-06-20 16:38:30 -070017253 WDI_ControlBlockType* pWDICtx,
17254 WDI_EventInfoType* pEventData
17255)
17256{
17257 WDI_Status wdiStatus;
17258 eHalStatus halStatus;
17259 WDI_SetSTAKeyRspCb wdiSetSTABcastKeyRspCb;
17260 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17261
17262 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017263 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017264 -------------------------------------------------------------------------*/
17265 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17266 ( NULL == pEventData->pEventData))
17267 {
17268 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017269 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017270 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017271 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017272 }
17273
17274 wdiSetSTABcastKeyRspCb = (WDI_SetSTAKeyRspCb)pWDICtx->pfncRspCB;
17275
17276 /*-------------------------------------------------------------------------
17277 Extract response and send it to UMAC
17278 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017279 wpalMemoryCopy( &halStatus,
17280 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017281 sizeof(halStatus));
17282
Jeff Johnsone7245742012-09-05 17:12:55 -070017283 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017284
17285 if ( eHAL_STATUS_SUCCESS != halStatus )
17286 {
17287 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17288 "Set STA Key failed with status %s (%d)",
17289 WDI_getHALStatusMsgString(halStatus),
17290 halStatus);
17291 /* send the status to UMAC, don't return from here*/
17292 }
17293
17294 /*Notify UMAC*/
17295 wdiSetSTABcastKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17296
Jeff Johnsone7245742012-09-05 17:12:55 -070017297 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017298}/*WDI_ProcessSetSTABcastKeyRsp*/
17299
17300/**
17301 @brief Process Remove STA Bcast Key Rsp function (called when a
17302 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017303
17304 @param pWDICtx: pointer to the WLAN DAL context
17305 pEventData: pointer to the event information structure
17306
Jeff Johnson295189b2012-06-20 16:38:30 -070017307 @see
17308 @return Result of the function call
17309*/
17310WDI_Status
17311WDI_ProcessRemoveStaBcastKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017312(
Jeff Johnson295189b2012-06-20 16:38:30 -070017313 WDI_ControlBlockType* pWDICtx,
17314 WDI_EventInfoType* pEventData
17315)
17316{
17317 WDI_Status wdiStatus;
17318 eHalStatus halStatus;
17319 WDI_RemoveSTAKeyRspCb wdiRemoveSTABcastKeyRspCb;
17320 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17321
17322 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017323 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017324 -------------------------------------------------------------------------*/
17325 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17326 ( NULL == pEventData->pEventData))
17327 {
17328 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017329 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017330 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017331 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017332 }
17333
17334 wdiRemoveSTABcastKeyRspCb = (WDI_RemoveSTAKeyRspCb)pWDICtx->pfncRspCB;
17335
17336 /*-------------------------------------------------------------------------
17337 Extract response and send it to UMAC
17338 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017339 wpalMemoryCopy( &halStatus,
17340 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017341 sizeof(halStatus));
17342
Jeff Johnsone7245742012-09-05 17:12:55 -070017343 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017344
17345 if ( eHAL_STATUS_SUCCESS != halStatus )
17346 {
17347 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17348 "Remove STA Key failed with status %s (%d)",
17349 WDI_getHALStatusMsgString(halStatus),
17350 halStatus);
17351 /* send the status to UMAC, don't return from here*/
17352 }
17353
17354 /*Notify UMAC*/
17355 wdiRemoveSTABcastKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17356
Jeff Johnsone7245742012-09-05 17:12:55 -070017357 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017358}/*WDI_ProcessRemoveStaBcastKeyRsp*/
17359
17360
17361/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070017362 QoS and BA Response Processing Functions
Jeff Johnson295189b2012-06-20 16:38:30 -070017363==========================================================================*/
17364
17365/**
17366 @brief Process Add TSpec Rsp function (called when a response
17367 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017368
17369 @param pWDICtx: pointer to the WLAN DAL context
17370 pEventData: pointer to the event information structure
17371
Jeff Johnson295189b2012-06-20 16:38:30 -070017372 @see
17373 @return Result of the function call
17374*/
17375WDI_Status
17376WDI_ProcessAddTSpecRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017377(
Jeff Johnson295189b2012-06-20 16:38:30 -070017378 WDI_ControlBlockType* pWDICtx,
17379 WDI_EventInfoType* pEventData
17380)
17381{
17382 WDI_Status wdiStatus;
17383 eHalStatus halStatus;
17384 WDI_AddTsRspCb wdiAddTsRspCb;
17385 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17386
17387 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017388 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017389 -------------------------------------------------------------------------*/
17390 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17391 ( NULL == pEventData->pEventData))
17392 {
17393 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017394 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017395 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017396 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017397 }
17398
17399 wdiAddTsRspCb = (WDI_AddTsRspCb)pWDICtx->pfncRspCB;
17400
17401 /*-------------------------------------------------------------------------
17402 Extract response and send it to UMAC
17403 -------------------------------------------------------------------------*/
17404 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070017405 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017406
17407 /*Notify UMAC*/
17408 wdiAddTsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17409
Jeff Johnsone7245742012-09-05 17:12:55 -070017410 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017411}/*WDI_ProcessAddTSpecRsp*/
17412
17413
Sunil Duttbd736ed2014-05-26 21:19:41 +053017414
17415#ifdef WLAN_FEATURE_LINK_LAYER_STATS
17416
17417WDI_Status
17418WDI_ProcessLLStatsSetRsp
17419(
17420 WDI_ControlBlockType* pWDICtx,
17421 WDI_EventInfoType* pEventData
17422)
17423{
17424 WDI_LLStatsSetRspCb wdiLLStatsSetRspCb;
17425
17426 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17427 "%s: Enter ", __func__);
17428 /*-------------------------------------------------------------------------
17429 Sanity check
17430 -------------------------------------------------------------------------*/
17431 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17432 ( NULL == pEventData->pEventData))
17433 {
17434 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
17435 "%s: Invalid parameters", __func__);
17436 WDI_ASSERT(0);
17437 return WDI_STATUS_E_FAILURE;
17438 }
17439
17440 wdiLLStatsSetRspCb = (WDI_LLStatsSetRspCb)pWDICtx->pfncRspCB;
17441
17442 wdiLLStatsSetRspCb((void *) pEventData->pEventData, pWDICtx->pRspCBUserData);
17443
17444 return WDI_STATUS_SUCCESS;
17445}
17446
17447WDI_Status
17448WDI_ProcessLLStatsGetRsp
17449(
17450 WDI_ControlBlockType* pWDICtx,
17451 WDI_EventInfoType* pEventData
17452)
17453{
17454 WDI_LLStatsGetRspCb wdiLLStatsGetRspCb;
17455
17456 /*-------------------------------------------------------------------------
17457 Sanity check
17458 -------------------------------------------------------------------------*/
17459 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17460 ( NULL == pEventData->pEventData))
17461 {
17462 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
17463 "%s: Invalid parameters", __func__);
17464 WDI_ASSERT(0);
17465 return WDI_STATUS_E_FAILURE;
17466 }
17467 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17468 "%s: Enter ", __func__);
17469
17470 wdiLLStatsGetRspCb = (WDI_LLStatsGetRspCb)pWDICtx->pfncRspCB;
17471
17472 wdiLLStatsGetRspCb((void *) pEventData->pEventData, pWDICtx->pRspCBUserData);
17473
17474 return WDI_STATUS_SUCCESS;
17475}
17476
17477WDI_Status
17478WDI_ProcessLLStatsClearRsp
17479(
17480 WDI_ControlBlockType* pWDICtx,
17481 WDI_EventInfoType* pEventData
17482)
17483{
17484 WDI_LLStatsClearRspCb wdiLLStatsClearRspCb;
17485
17486 /*-------------------------------------------------------------------------
17487 Sanity check
17488 -------------------------------------------------------------------------*/
17489 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17490 ( NULL == pEventData->pEventData))
17491 {
17492 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
17493 "%s: Invalid parameters", __func__);
17494 WDI_ASSERT(0);
17495 return WDI_STATUS_E_FAILURE;
17496 }
17497
17498 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17499 "%s: CLEAR RESPONSE CALL BACK", __func__);
17500 wdiLLStatsClearRspCb = (WDI_LLStatsClearRspCb)pWDICtx->pfncRspCB;
17501
17502 wdiLLStatsClearRspCb((void *) pEventData->pEventData, pWDICtx->pRspCBUserData);
17503
17504 return WDI_STATUS_SUCCESS;
17505}
17506#endif /* WLAN_FEATURE_LINK_LAYER_STATS */
17507
Jeff Johnson295189b2012-06-20 16:38:30 -070017508/**
17509 @brief Process Del TSpec Rsp function (called when a response
17510 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017511
17512 @param pWDICtx: pointer to the WLAN DAL context
17513 pEventData: pointer to the event information structure
17514
Jeff Johnson295189b2012-06-20 16:38:30 -070017515 @see
17516 @return Result of the function call
17517*/
17518WDI_Status
17519WDI_ProcessDelTSpecRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017520(
Jeff Johnson295189b2012-06-20 16:38:30 -070017521 WDI_ControlBlockType* pWDICtx,
17522 WDI_EventInfoType* pEventData
17523)
17524{
17525 WDI_Status wdiStatus;
17526 eHalStatus halStatus;
17527 WDI_DelTsRspCb wdiDelTsRspCb;
17528 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17529
17530 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017531 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017532 -------------------------------------------------------------------------*/
17533 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17534 ( NULL == pEventData->pEventData))
17535 {
17536 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017537 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017538 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017539 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017540 }
17541
17542 wdiDelTsRspCb = (WDI_DelTsRspCb)pWDICtx->pfncRspCB;
17543
17544 /*-------------------------------------------------------------------------
17545 Extract response and send it to UMAC
17546 -------------------------------------------------------------------------*/
17547 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070017548 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017549
17550 /*Notify UMAC*/
17551 wdiDelTsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17552
Jeff Johnsone7245742012-09-05 17:12:55 -070017553 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017554}/*WDI_ProcessDelTSpecRsp*/
17555
17556/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017557 @brief Process Update EDCA Parameters Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070017558 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017559
17560 @param pWDICtx: pointer to the WLAN DAL context
17561 pEventData: pointer to the event information structure
17562
Jeff Johnson295189b2012-06-20 16:38:30 -070017563 @see
17564 @return Result of the function call
17565*/
17566WDI_Status
17567WDI_ProcessUpdateEDCAParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017568(
Jeff Johnson295189b2012-06-20 16:38:30 -070017569 WDI_ControlBlockType* pWDICtx,
17570 WDI_EventInfoType* pEventData
17571)
17572{
17573 WDI_Status wdiStatus;
17574 eHalStatus halStatus;
17575 WDI_UpdateEDCAParamsRspCb wdiUpdateEDCAParamsRspCb;
17576 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17577
17578 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017579 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017580 -------------------------------------------------------------------------*/
17581 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17582 ( NULL == pEventData->pEventData))
17583 {
17584 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017585 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017586 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017587 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017588 }
17589
17590 wdiUpdateEDCAParamsRspCb = (WDI_UpdateEDCAParamsRspCb)pWDICtx->pfncRspCB;
17591
17592 /*-------------------------------------------------------------------------
17593 Extract response and send it to UMAC
17594 -------------------------------------------------------------------------*/
17595 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070017596 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017597
17598 /*Notify UMAC*/
17599 wdiUpdateEDCAParamsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17600
Jeff Johnsone7245742012-09-05 17:12:55 -070017601 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017602}/*WDI_ProcessUpdateEDCAParamsRsp*/
17603
17604
17605/**
17606 @brief Process Add BA Rsp function (called when a response
17607 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017608
17609 @param pWDICtx: pointer to the WLAN DAL context
17610 pEventData: pointer to the event information structure
17611
Jeff Johnson295189b2012-06-20 16:38:30 -070017612 @see
17613 @return Result of the function call
17614*/
17615WDI_Status
17616WDI_ProcessAddBASessionRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017617(
Jeff Johnson295189b2012-06-20 16:38:30 -070017618 WDI_ControlBlockType* pWDICtx,
17619 WDI_EventInfoType* pEventData
17620)
17621{
17622 WDI_AddBASessionRspCb wdiAddBASessionRspCb;
17623
17624 tAddBASessionRspParams halBASessionRsp;
17625 WDI_AddBASessionRspParamsType wdiBASessionRsp;
17626
Jeff Johnsone7245742012-09-05 17:12:55 -070017627
Jeff Johnson295189b2012-06-20 16:38:30 -070017628 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17629
17630 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017631 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017632 -------------------------------------------------------------------------*/
17633 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17634 ( NULL == pEventData->pEventData))
17635 {
17636 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017637 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017638 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017639 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017640 }
17641
17642 wdiAddBASessionRspCb = (WDI_AddBASessionRspCb)pWDICtx->pfncRspCB;
17643
17644 /*-------------------------------------------------------------------------
17645 Extract response and send it to UMAC
17646 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017647 wpalMemoryCopy( &halBASessionRsp,
17648 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017649 sizeof(halBASessionRsp));
17650
17651 wdiBASessionRsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halBASessionRsp.status);
17652
Jeff Johnson43971f52012-07-17 12:26:56 -070017653 if ( WDI_STATUS_SUCCESS == wdiBASessionRsp.wdiStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070017654 {
17655 wdiBASessionRsp.ucBaDialogToken = halBASessionRsp.baDialogToken;
17656 wdiBASessionRsp.ucBaTID = halBASessionRsp.baTID;
17657 wdiBASessionRsp.ucBaBufferSize = halBASessionRsp.baBufferSize;
17658 wdiBASessionRsp.usBaSessionID = halBASessionRsp.baSessionID;
17659 wdiBASessionRsp.ucWinSize = halBASessionRsp.winSize;
17660 wdiBASessionRsp.ucSTAIdx = halBASessionRsp.STAID;
17661 wdiBASessionRsp.usBaSSN = halBASessionRsp.SSN;
17662 }
17663
17664 /*Notify UMAC*/
17665 wdiAddBASessionRspCb( &wdiBASessionRsp, pWDICtx->pRspCBUserData);
17666
Jeff Johnsone7245742012-09-05 17:12:55 -070017667 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017668}/*WDI_ProcessAddSessionBARsp*/
17669
17670
17671/**
17672 @brief Process Del BA Rsp function (called when a response
17673 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017674
17675 @param pWDICtx: pointer to the WLAN DAL context
17676 pEventData: pointer to the event information structure
17677
Jeff Johnson295189b2012-06-20 16:38:30 -070017678 @see
17679 @return Result of the function call
17680*/
17681WDI_Status
17682WDI_ProcessDelBARsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017683(
Jeff Johnson295189b2012-06-20 16:38:30 -070017684 WDI_ControlBlockType* pWDICtx,
17685 WDI_EventInfoType* pEventData
17686)
17687{
17688 WDI_Status wdiStatus;
17689 eHalStatus halStatus;
17690 WDI_DelBARspCb wdiDelBARspCb;
17691 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17692
17693 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017694 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017695 -------------------------------------------------------------------------*/
17696 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17697 ( NULL == pEventData->pEventData))
17698 {
17699 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017700 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017701 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017702 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017703 }
17704
17705 wdiDelBARspCb = (WDI_DelBARspCb)pWDICtx->pfncRspCB;
17706
17707 /*-------------------------------------------------------------------------
17708 Extract response and send it to UMAC
17709 -------------------------------------------------------------------------*/
17710 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070017711 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017712
17713 if ( eHAL_STATUS_SUCCESS == halStatus )
17714 {
17715 /*! TO DO: I should notify the DAL Data Path that the BA was deleted*/
17716 }
17717
17718 /*Notify UMAC*/
17719 wdiDelBARspCb( wdiStatus, pWDICtx->pRspCBUserData);
17720
Jeff Johnsone7245742012-09-05 17:12:55 -070017721 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017722}/*WDI_ProcessDelBARsp*/
17723
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -080017724#ifdef FEATURE_WLAN_ESE
Jeff Johnson295189b2012-06-20 16:38:30 -070017725/**
17726 @brief Process TSM Stats Rsp function (called when a response
17727 is being received over the bus from HAL)
17728
17729 @param pWDICtx: pointer to the WLAN DAL context
17730 pEventData: pointer to the event information structure
17731
17732 @see
17733 @return Result of the function call
17734*/
17735WDI_Status
17736WDI_ProcessTsmStatsRsp
17737(
17738 WDI_ControlBlockType* pWDICtx,
17739 WDI_EventInfoType* pEventData
17740)
17741{
17742 WDI_TsmRspCb wdiTsmStatsRspCb;
17743 tTsmStatsRspMsg halTsmStatsRspMsg;
17744 WDI_TSMStatsRspParamsType wdiTsmStatsRspParams;
17745 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17746
17747 /*-------------------------------------------------------------------------
17748 Sanity check
17749 -------------------------------------------------------------------------*/
17750 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17751 ( NULL == pEventData->pEventData))
17752 {
17753 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017754 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017755 WDI_ASSERT(0);
17756 return WDI_STATUS_E_FAILURE;
17757 }
17758
17759 wdiTsmStatsRspCb = (WDI_TsmRspCb)pWDICtx->pfncRspCB;
17760
17761 /*-------------------------------------------------------------------------
17762 Unpack HAL Response Message - the header was already extracted by the
17763 main Response Handling procedure
17764 -------------------------------------------------------------------------*/
17765 wpalMemoryCopy( &halTsmStatsRspMsg.tsmStatsRspParams,
17766 pEventData->pEventData,
17767 sizeof(halTsmStatsRspMsg.tsmStatsRspParams));
17768
17769 wdiTsmStatsRspParams.UplinkPktQueueDly = halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktQueueDly;
17770 wpalMemoryCopy( wdiTsmStatsRspParams.UplinkPktQueueDlyHist,
17771 halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktQueueDlyHist,
17772 sizeof(halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktQueueDlyHist)/
17773 sizeof(halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktQueueDlyHist[0]));
17774 wdiTsmStatsRspParams.UplinkPktTxDly = halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktTxDly;
17775 wdiTsmStatsRspParams.UplinkPktLoss = halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktLoss;
17776 wdiTsmStatsRspParams.UplinkPktCount = halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktCount;
17777 wdiTsmStatsRspParams.RoamingCount = halTsmStatsRspMsg.tsmStatsRspParams.RoamingCount;
17778 wdiTsmStatsRspParams.RoamingDly = halTsmStatsRspMsg.tsmStatsRspParams.RoamingDly;
17779 wdiTsmStatsRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(
17780 halTsmStatsRspMsg.tsmStatsRspParams.status);
17781
17782 /*Notify UMAC*/
17783 wdiTsmStatsRspCb( &wdiTsmStatsRspParams, pWDICtx->pRspCBUserData);
17784
17785 return WDI_STATUS_SUCCESS;
17786}/*WDI_ProcessTsmStatsRsp*/
17787
17788#endif
17789
17790
17791
17792/**
17793 @brief Process Flush AC Rsp function (called when a response
17794 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017795
17796 @param pWDICtx: pointer to the WLAN DAL context
17797 pEventData: pointer to the event information structure
17798
Jeff Johnson295189b2012-06-20 16:38:30 -070017799 @see
17800 @return Result of the function call
17801*/
17802WDI_Status
17803WDI_ProcessFlushAcRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017804(
Jeff Johnson295189b2012-06-20 16:38:30 -070017805 WDI_ControlBlockType* pWDICtx,
17806 WDI_EventInfoType* pEventData
17807)
17808{
17809 WDI_Status wdiStatus;
17810 eHalStatus halStatus;
17811 WDI_FlushAcRspCb wdiFlushAcRspCb;
17812 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17813
17814 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017815 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017816 -------------------------------------------------------------------------*/
17817 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17818 ( NULL == pEventData->pEventData))
17819 {
17820 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017821 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017822 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017823 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017824 }
17825
17826 wdiFlushAcRspCb = (WDI_FlushAcRspCb)pWDICtx->pfncRspCB;
17827
17828 /*-------------------------------------------------------------------------
17829 Extract response and send it to UMAC
17830 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017831 wpalMemoryCopy( &halStatus,
17832 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017833 sizeof(halStatus));
17834
Jeff Johnsone7245742012-09-05 17:12:55 -070017835 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017836
17837 /*Notify UMAC*/
17838 wdiFlushAcRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17839
Jeff Johnsone7245742012-09-05 17:12:55 -070017840 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017841}/*WDI_ProcessFlushAcRsp*/
17842
17843/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017844 @brief Process BT AMP event Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070017845 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017846
17847 @param pWDICtx: pointer to the WLAN DAL context
17848 pEventData: pointer to the event information structure
17849
Jeff Johnson295189b2012-06-20 16:38:30 -070017850 @see
17851 @return Result of the function call
17852*/
17853WDI_Status
17854WDI_ProcessBtAmpEventRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017855(
Jeff Johnson295189b2012-06-20 16:38:30 -070017856 WDI_ControlBlockType* pWDICtx,
17857 WDI_EventInfoType* pEventData
17858)
17859{
17860 WDI_Status wdiStatus;
17861 eHalStatus halStatus;
17862 WDI_BtAmpEventRspCb wdiBtAmpEventRspCb;
17863 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17864
17865 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017866 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017867 -------------------------------------------------------------------------*/
17868 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17869 ( NULL == pEventData->pEventData))
17870 {
17871 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017872 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017873 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017874 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017875 }
17876
17877 wdiBtAmpEventRspCb = (WDI_BtAmpEventRspCb)pWDICtx->pfncRspCB;
17878
17879 /*-------------------------------------------------------------------------
17880 Extract response and send it to UMAC
17881 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017882 wpalMemoryCopy( &halStatus,
17883 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017884 sizeof(halStatus));
17885
Jeff Johnsone7245742012-09-05 17:12:55 -070017886 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017887
17888 /*Notify UMAC*/
17889 wdiBtAmpEventRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17890
Jeff Johnsone7245742012-09-05 17:12:55 -070017891 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017892}/*WDI_ProcessBtAmpEventRsp*/
17893
17894
17895/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017896 @brief Process ADD STA SELF Rsp function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070017897 when a response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017898
17899 @param pWDICtx: pointer to the WLAN DAL context
17900 pEventData: pointer to the event information structure
17901
Jeff Johnson295189b2012-06-20 16:38:30 -070017902 @see
17903 @return Result of the function call
17904*/
17905WDI_Status
17906WDI_ProcessAddSTASelfRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017907(
Jeff Johnson295189b2012-06-20 16:38:30 -070017908 WDI_ControlBlockType* pWDICtx,
17909 WDI_EventInfoType* pEventData
17910)
17911{
17912 WDI_AddSTASelfRspParamsType wdiAddSTASelfParams;
17913 WDI_AddSTASelfParamsRspCb wdiAddSTASelfReqParamsRspCb;
17914 tAddStaSelfRspMsg halAddStaSelfRsp;
17915 WDI_AddStaParams wdiAddSTAParam = {0};
17916 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17917
17918 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017919 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017920 -------------------------------------------------------------------------*/
17921 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17922 ( NULL == pEventData->pEventData))
17923 {
17924 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017925 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017926 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017927 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017928 }
17929
Jeff Johnsone7245742012-09-05 17:12:55 -070017930 wdiAddSTASelfReqParamsRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070017931 (WDI_AddSTASelfParamsRspCb)pWDICtx->pfncRspCB;
17932
17933 /*-------------------------------------------------------------------------
17934 Extract response and send it to UMAC
17935 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017936 wpalMemoryCopy( &halAddStaSelfRsp.addStaSelfRspParams,
17937 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017938 sizeof(halAddStaSelfRsp.addStaSelfRspParams));
17939
17940
Jeff Johnsone7245742012-09-05 17:12:55 -070017941 wdiAddSTASelfParams.wdiStatus =
17942 WDI_HAL_2_WDI_STATUS(halAddStaSelfRsp.addStaSelfRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070017943
Jeff Johnsone7245742012-09-05 17:12:55 -070017944 wdiAddSTASelfParams.ucSTASelfIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070017945 halAddStaSelfRsp.addStaSelfRspParams.selfStaIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070017946 wdiAddSTASelfParams.dpuIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070017947 halAddStaSelfRsp.addStaSelfRspParams.dpuIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070017948 wdiAddSTASelfParams.dpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070017949 halAddStaSelfRsp.addStaSelfRspParams.dpuSignature;
17950
17951 wpalMemoryCopy(wdiAddSTASelfParams.macSelfSta,
17952 pWDICtx->wdiCacheAddSTASelfReq.wdiAddSTASelfInfo.selfMacAddr,
17953 WDI_MAC_ADDR_LEN);
17954
17955
17956#ifdef HAL_SELF_STA_PER_BSS
17957
17958 /* At this point add the self-STA */
17959
17960 /*! TO DO: wdiAddSTAParam.ucWmmEnabled */
17961 /*! TO DO: wdiAddSTAParam.ucHTCapable */
17962 /*! TO DO: wdiAddSTAParam.ucRmfEnabled */
17963
17964 //all DPU indices are the same for self STA
17965
17966 /*DPU Information*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017967 wdiAddSTAParam.dpuIndex = wdiAddSTASelfParams.dpuIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070017968 wdiAddSTAParam.dpuSig = wdiAddSTASelfParams.dpuSignature;
17969 wdiAddSTAParam.bcastDpuSignature = wdiAddSTASelfParams.dpuSignature;
17970 wdiAddSTAParam.bcastMgmtDpuSignature = wdiAddSTASelfParams.dpuSignature;
17971 wdiAddSTAParam.bcastDpuIndex = wdiAddSTASelfParams.dpuIdx;
17972 wdiAddSTAParam.bcastMgmtDpuIndex = wdiAddSTASelfParams.dpuIdx;
17973
17974 wpalMemoryCopy(wdiAddSTAParam.staMacAddr, wdiAddSTASelfParams.macSelfSta,
17975 WDI_MAC_ADDR_LEN);
17976
17977 wdiAddSTAParam.ucStaType = WDI_STA_ENTRY_SELF; /* 0 - self */
17978 wdiAddSTAParam.ucSTAIdx = wdiAddSTASelfParams.ucSTASelfIdx;
17979
Jeff Johnsone7245742012-09-05 17:12:55 -070017980 if(halAddStaSelfRsp.addStaSelfRspParams.status
Jeff Johnson295189b2012-06-20 16:38:30 -070017981 != eHAL_STATUS_ADD_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO)
17982 {
17983 (void)WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
17984 }
17985#endif
17986
17987 /*Notify UMAC*/
17988 wdiAddSTASelfReqParamsRspCb( &wdiAddSTASelfParams, pWDICtx->pRspCBUserData);
17989
Jeff Johnsone7245742012-09-05 17:12:55 -070017990 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017991}/*WDI_ProcessAddSTASelfRsp*/
17992
17993
17994
17995/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017996 @brief WDI_ProcessDelSTASelfRsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070017997 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017998
17999 @param pWDICtx: pointer to the WLAN DAL context
18000 pEventData: pointer to the event information structure
18001
Jeff Johnson295189b2012-06-20 16:38:30 -070018002 @see
18003 @return Result of the function call
18004*/
18005WDI_Status
18006WDI_ProcessDelSTASelfRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018007(
Jeff Johnson295189b2012-06-20 16:38:30 -070018008 WDI_ControlBlockType* pWDICtx,
18009 WDI_EventInfoType* pEventData
18010)
18011{
18012 WDI_DelSTASelfRspParamsType wdiDelStaSelfRspParams;
18013 WDI_DelSTASelfRspCb wdiDelStaSelfRspCb;
18014 tDelStaSelfRspParams delStaSelfRspParams;
18015 wpt_uint8 ucStaIdx;
18016
18017 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18018
18019 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018020 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018021 -------------------------------------------------------------------------*/
18022 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18023 ( NULL == pEventData->pEventData))
18024 {
18025 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018026 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018027 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018028 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018029 }
18030
18031 wdiDelStaSelfRspCb = (WDI_DelSTASelfRspCb)pWDICtx->pfncRspCB;
18032
18033 /*-------------------------------------------------------------------------
18034 Extract response and send it to UMAC
18035 -------------------------------------------------------------------------*/
18036
Jeff Johnsone7245742012-09-05 17:12:55 -070018037 wpalMemoryCopy( &delStaSelfRspParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070018038 (wpt_uint8*)pEventData->pEventData,
18039 sizeof(tDelStaSelfRspParams));
18040
Jeff Johnsone7245742012-09-05 17:12:55 -070018041 wdiDelStaSelfRspParams.wdiStatus =
18042 WDI_HAL_2_WDI_STATUS(delStaSelfRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070018043
Jeff Johnsone7245742012-09-05 17:12:55 -070018044 /* delStaSelfRspParams.status is not
Jeff Johnson295189b2012-06-20 16:38:30 -070018045 eHAL_STATUS_DEL_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO*/
18046 if( eHAL_STATUS_SUCCESS == delStaSelfRspParams.status )
18047 {
18048 WDI_Status wdiStatus;
Jeff Johnsone7245742012-09-05 17:12:55 -070018049 wdiStatus = WDI_STATableFindStaidByAddr(pWDICtx,
Jeff Johnson295189b2012-06-20 16:38:30 -070018050 delStaSelfRspParams.selfMacAddr,
18051 &ucStaIdx);
18052 if(WDI_STATUS_E_FAILURE == wdiStatus)
18053 {
18054 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018055 "%s: Unable to extract the STA Idx ", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018056 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018057 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018058 }
18059 WDI_STATableDelSta(pWDICtx, ucStaIdx);
18060 }
18061
18062 /*Notify UMAC*/
18063 wdiDelStaSelfRspCb(&wdiDelStaSelfRspParams, (void*) pWDICtx->pRspCBUserData);
18064
18065 return WDI_STATUS_SUCCESS;
18066}
18067
Jeff Johnsone7245742012-09-05 17:12:55 -070018068#ifdef FEATURE_OEM_DATA_SUPPORT
18069/**
18070 @brief Start Oem Data Rsp function (called when a
18071 response is being received over the bus from HAL)
Jeff Johnson295189b2012-06-20 16:38:30 -070018072
Jeff Johnsone7245742012-09-05 17:12:55 -070018073 @param pWDICtx: pointer to the WLAN DAL context
18074 pEventData: pointer to the event information structure
18075
18076 @see
18077 @return Result of the function call
18078*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018079
18080WDI_Status
18081WDI_ProcessStartOemDataRsp
18082(
18083 WDI_ControlBlockType* pWDICtx,
18084 WDI_EventInfoType* pEventData
18085)
18086{
18087 WDI_oemDataRspCb wdiOemDataRspCb;
18088 WDI_oemDataRspParamsType* wdiOemDataRspParams;
18089 tStartOemDataRspParams* halStartOemDataRspParams;
18090
18091 /*-------------------------------------------------------------------------
18092 Sanity check
18093 -------------------------------------------------------------------------*/
18094 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18095 ( NULL == pEventData->pEventData))
18096 {
18097 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018098 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070018099 WDI_ASSERT(0);
18100 return WDI_STATUS_E_FAILURE;
18101 }
18102
18103 wdiOemDataRspCb = (WDI_oemDataRspCb)pWDICtx->pfncRspCB;
18104
18105 /*-------------------------------------------------------------------------
18106 Extract response and send it to UMAC
18107 -------------------------------------------------------------------------*/
18108 halStartOemDataRspParams = (tStartOemDataRspParams *)pEventData->pEventData;
18109
18110
18111 //It is the responsibility of the application code to check for failure
18112 //conditions!
18113
18114 //Allocate memory for WDI OEM DATA RSP structure
18115 wdiOemDataRspParams = wpalMemoryAllocate(sizeof(WDI_oemDataRspParamsType)) ;
18116
18117 if(NULL == wdiOemDataRspParams)
18118 {
18119 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080018120 "Failed to allocate memory in OEM DATA Response %p %p %p ",
Jeff Johnsone7245742012-09-05 17:12:55 -070018121 pWDICtx, pEventData, pEventData->pEventData);
18122 WDI_ASSERT(0);
18123 return WDI_STATUS_E_FAILURE;
18124 }
18125
18126 /* Populate WDI structure members */
18127 wpalMemoryCopy(wdiOemDataRspParams->oemDataRsp, halStartOemDataRspParams->oemDataRsp, OEM_DATA_RSP_SIZE);
18128
18129 /*Notify UMAC*/
18130 wdiOemDataRspCb(wdiOemDataRspParams, pWDICtx->pRspCBUserData);
18131
18132 //Free memory allocated for WDI OEM_DATA MEAS RSP structure
18133 wpalMemoryFree(wdiOemDataRspParams);
18134
18135 return WDI_STATUS_SUCCESS;
18136}/*WDI_PrcoessStartOemDataRsp*/
18137#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070018138
18139/*===========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070018140 Miscellaneous Control Response Processing API
Jeff Johnson295189b2012-06-20 16:38:30 -070018141===========================================================================*/
18142
18143/**
18144 @brief Process Channel Switch Rsp function (called when a response
18145 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018146
18147 @param pWDICtx: pointer to the WLAN DAL context
18148 pEventData: pointer to the event information structure
18149
Jeff Johnson295189b2012-06-20 16:38:30 -070018150 @see
18151 @return Result of the function call
18152*/
18153WDI_Status
18154WDI_ProcessChannelSwitchRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018155(
Jeff Johnson295189b2012-06-20 16:38:30 -070018156 WDI_ControlBlockType* pWDICtx,
18157 WDI_EventInfoType* pEventData
18158)
18159{
18160 WDI_SwitchCHRspParamsType wdiSwitchChRsp;
18161 WDI_SwitchChRspCb wdiChSwitchRspCb;
18162 tSwitchChannelRspParams halSwitchChannelRsp;
18163 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18164
18165 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018166 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018167 -------------------------------------------------------------------------*/
18168 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18169 ( NULL == pEventData->pEventData))
18170 {
18171 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018172 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018173 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018174 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018175 }
18176
18177 wdiChSwitchRspCb = (WDI_SwitchChRspCb)pWDICtx->pfncRspCB;
18178
18179 /*-------------------------------------------------------------------------
18180 Extract response and send it to UMAC
18181 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018182 wpalMemoryCopy( &halSwitchChannelRsp,
Jeff Johnson295189b2012-06-20 16:38:30 -070018183 (wpt_uint8*)pEventData->pEventData,
18184 sizeof(halSwitchChannelRsp));
18185
Jeff Johnsone7245742012-09-05 17:12:55 -070018186 wdiSwitchChRsp.wdiStatus =
18187 WDI_HAL_2_WDI_STATUS(halSwitchChannelRsp.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070018188 wdiSwitchChRsp.ucChannel = halSwitchChannelRsp.channelNumber;
18189
18190#ifdef WLAN_FEATURE_VOWIFI
Jeff Johnsone7245742012-09-05 17:12:55 -070018191 wdiSwitchChRsp.ucTxMgmtPower = halSwitchChannelRsp.txMgmtPower;
Jeff Johnson295189b2012-06-20 16:38:30 -070018192#endif
18193
18194 /*Notify UMAC*/
18195 wdiChSwitchRspCb( &wdiSwitchChRsp, pWDICtx->pRspCBUserData);
18196
Jeff Johnsone7245742012-09-05 17:12:55 -070018197 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018198}/*WDI_ProcessChannelSwitchRsp*/
18199
Kalikinkar dhara1e83b772014-02-06 12:59:22 -080018200/**
18201 @brief Process Channel Switch Rsp function (called when a response
18202 is being received over the bus from HAL against
18203 WDI_ProcessChannelSwitchReq_V1)
18204
18205 @param pWDICtx: pointer to the WLAN DAL context
18206 pEventData: pointer to the event information structure
18207
18208 @see
18209 @return Result of the function call
18210*/
18211
18212WDI_Status
18213WDI_ProcessChannelSwitchRsp_V1
18214(
18215 WDI_ControlBlockType* pWDICtx,
18216 WDI_EventInfoType* pEventData
18217)
18218{
18219 WDI_SwitchChRspParamsType_V1 wdiSwitchChRsp;
18220 WDI_SwitchChRspCb_V1 wdiChSwitchRspCb;
18221 tSwitchChannelRspParams_V1 halSwitchChannelRsp;
18222 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18223
18224 /*-------------------------------------------------------------------------
18225 Sanity check
18226 -------------------------------------------------------------------------*/
18227 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18228 ( NULL == pEventData->pEventData))
18229 {
18230 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
18231 "%s: Invalid parameters", __func__);
18232 WDI_ASSERT(0);
18233 return WDI_STATUS_E_FAILURE;
18234 }
18235
18236 wdiChSwitchRspCb = (WDI_SwitchChRspCb_V1)pWDICtx->pfncRspCB;
18237
18238 /*-------------------------------------------------------------------------
18239 Extract response and send it to UMAC
18240 -------------------------------------------------------------------------*/
18241 wpalMemoryCopy( &halSwitchChannelRsp,
18242 (wpt_uint8*)pEventData->pEventData,
18243 sizeof(halSwitchChannelRsp));
18244
18245 wdiSwitchChRsp.wdiStatus =
18246 WDI_HAL_2_WDI_STATUS(halSwitchChannelRsp.status);
18247 wdiSwitchChRsp.ucChannel = halSwitchChannelRsp.channelNumber;
18248
18249#ifdef WLAN_FEATURE_VOWIFI
18250 wdiSwitchChRsp.ucTxMgmtPower = halSwitchChannelRsp.txMgmtPower;
18251#endif
18252
18253 wdiSwitchChRsp.channelSwitchSrc = halSwitchChannelRsp.channelSwitchSrc;
18254 if (( NULL == wdiChSwitchRspCb ) )
18255 {
18256 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
18257 "%s: ### Call back function is null", __func__);
18258 WDI_ASSERT(0);
18259 return WDI_STATUS_E_FAILURE;
18260 }
18261 /*Notify UMAC*/
18262 wdiChSwitchRspCb( &wdiSwitchChRsp, pWDICtx->pRspCBUserData);
18263
18264 return WDI_STATUS_SUCCESS;
18265}/*WDI_ProcessChannelSwitchRsp_V1*/
Jeff Johnson295189b2012-06-20 16:38:30 -070018266
18267/**
18268 @brief Process Config STA Rsp function (called when a response
18269 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018270
18271 @param pWDICtx: pointer to the WLAN DAL context
18272 pEventData: pointer to the event information structure
18273
Jeff Johnson295189b2012-06-20 16:38:30 -070018274 @see
18275 @return Result of the function call
18276*/
18277WDI_Status
18278WDI_ProcessConfigStaRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018279(
Jeff Johnson295189b2012-06-20 16:38:30 -070018280 WDI_ControlBlockType* pWDICtx,
18281 WDI_EventInfoType* pEventData
18282)
18283{
18284 WDI_ConfigSTARspParamsType wdiCfgSTAParams;
18285 WDI_ConfigSTARspCb wdiConfigSTARspCb;
18286 WDI_AddStaParams wdiAddSTAParam;
18287
18288 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070018289 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070018290
Jeff Johnsone7245742012-09-05 17:12:55 -070018291 tConfigStaRspMsg halConfigStaRsp;
Jeff Johnson295189b2012-06-20 16:38:30 -070018292 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18293
18294 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018295 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018296 -------------------------------------------------------------------------*/
18297 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18298 ( NULL == pEventData->pEventData))
18299 {
18300 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018301 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018302 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018303 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018304 }
18305
18306 wdiConfigSTARspCb = (WDI_ConfigSTARspCb)pWDICtx->pfncRspCB;
18307
18308 /*-------------------------------------------------------------------------
18309 Extract response and send it to UMAC
18310 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018311 wpalMemoryCopy( &halConfigStaRsp.configStaRspParams,
18312 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070018313 sizeof(halConfigStaRsp.configStaRspParams));
18314
18315
18316 wdiCfgSTAParams.ucSTAIdx = halConfigStaRsp.configStaRspParams.staIdx;
18317 wdiCfgSTAParams.ucBssIdx = halConfigStaRsp.configStaRspParams.bssIdx;
18318 wdiCfgSTAParams.ucUcastSig = halConfigStaRsp.configStaRspParams.ucUcastSig;
18319 wdiCfgSTAParams.ucBcastSig = halConfigStaRsp.configStaRspParams.ucBcastSig;
18320 wdiCfgSTAParams.ucMgmtSig = halConfigStaRsp.configStaRspParams.ucMgmtSig;
18321
18322 /* MAC Address of STA - take from cache as it does not come back in the
18323 response*/
18324 wpalMemoryCopy( wdiCfgSTAParams.macSTA,
Jeff Johnsone7245742012-09-05 17:12:55 -070018325 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.macSTA,
Jeff Johnson295189b2012-06-20 16:38:30 -070018326 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070018327
18328 wdiCfgSTAParams.wdiStatus =
18329 WDI_HAL_2_WDI_STATUS(halConfigStaRsp.configStaRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070018330
18331 wdiCfgSTAParams.ucDpuIndex = halConfigStaRsp.configStaRspParams.dpuIndex;
18332 wdiCfgSTAParams.ucBcastDpuIndex = halConfigStaRsp.configStaRspParams.bcastDpuIndex;
18333 wdiCfgSTAParams.ucBcastMgmtDpuIdx = halConfigStaRsp.configStaRspParams.bcastMgmtDpuIdx;
18334
18335 if ( WDI_STATUS_SUCCESS == wdiCfgSTAParams.wdiStatus )
18336 {
18337 if ( WDI_ADD_STA == pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.wdiAction )
18338 {
18339 /* ADD STA to table */
Jeff Johnsone7245742012-09-05 17:12:55 -070018340 wdiAddSTAParam.ucSTAIdx = halConfigStaRsp.configStaRspParams.staIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070018341 wdiAddSTAParam.dpuSig = halConfigStaRsp.configStaRspParams.ucUcastSig;
18342 wdiAddSTAParam.dpuIndex = halConfigStaRsp.configStaRspParams.dpuIndex;
Jeff Johnsone7245742012-09-05 17:12:55 -070018343
Jeff Johnson295189b2012-06-20 16:38:30 -070018344 /*This info can be retrieved from the cached initial request*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018345 wdiAddSTAParam.ucWmmEnabled =
Jeff Johnson295189b2012-06-20 16:38:30 -070018346 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.ucWMMEnabled;
Jeff Johnsone7245742012-09-05 17:12:55 -070018347 wdiAddSTAParam.ucHTCapable =
18348 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.ucHTCapable;
18349 wdiAddSTAParam.ucStaType =
18350 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.wdiSTAType;
Chet Lanctot4b9abd72013-06-27 11:14:56 -070018351 wdiAddSTAParam.ucRmfEnabled =
18352 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.ucRMFEnabled;
Jeff Johnsone7245742012-09-05 17:12:55 -070018353
Jeff Johnson295189b2012-06-20 16:38:30 -070018354 /* MAC Address of STA */
Jeff Johnsone7245742012-09-05 17:12:55 -070018355 wpalMemoryCopy(wdiAddSTAParam.staMacAddr,
18356 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.macSTA,
Jeff Johnson295189b2012-06-20 16:38:30 -070018357 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070018358
18359 wpalMemoryCopy(wdiAddSTAParam.macBSSID,
18360 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.macBSSID ,
18361 WDI_MAC_ADDR_LEN);
18362
18363 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
18364 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.macBSSID,
18365 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070018366
18367 if ( NULL == pBSSSes )
18368 {
18369 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
18370 "Association for this BSSID is not in place");
Jeff Johnsone7245742012-09-05 17:12:55 -070018371
Jeff Johnson295189b2012-06-20 16:38:30 -070018372 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018373 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070018374 }
18375
18376 /*Add BSS specific parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018377 wdiAddSTAParam.bcastMgmtDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070018378 halConfigStaRsp.configStaRspParams.bcastMgmtDpuIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070018379 wdiAddSTAParam.bcastMgmtDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070018380 halConfigStaRsp.configStaRspParams.ucMgmtSig;
Jeff Johnsone7245742012-09-05 17:12:55 -070018381 wdiAddSTAParam.bcastDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070018382 halConfigStaRsp.configStaRspParams.bcastDpuIndex;
Jeff Johnsone7245742012-09-05 17:12:55 -070018383 wdiAddSTAParam.bcastDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070018384 halConfigStaRsp.configStaRspParams.ucBcastSig;
Jeff Johnson295189b2012-06-20 16:38:30 -070018385 wdiAddSTAParam.ucBSSIdx = ucCurrentBSSSesIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070018386
Jeff Johnson295189b2012-06-20 16:38:30 -070018387 WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
18388 }
18389 if( WDI_UPDATE_STA == pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.wdiAction )
18390 {
18391 WDI_StaStruct* pSTATable = (WDI_StaStruct*) pWDICtx->staTable;
18392
Jeff Johnsone7245742012-09-05 17:12:55 -070018393 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bcastDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070018394 halConfigStaRsp.configStaRspParams.bcastDpuIndex;
Jeff Johnsone7245742012-09-05 17:12:55 -070018395 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bcastDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070018396 halConfigStaRsp.configStaRspParams.ucBcastSig;
Jeff Johnsone7245742012-09-05 17:12:55 -070018397 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bcastMgmtDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070018398 halConfigStaRsp.configStaRspParams.bcastMgmtDpuIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070018399 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bcastMgmtDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070018400 halConfigStaRsp.configStaRspParams.ucMgmtSig;
Jeff Johnsone7245742012-09-05 17:12:55 -070018401 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bssIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070018402 halConfigStaRsp.configStaRspParams.bssIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070018403 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].dpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070018404 halConfigStaRsp.configStaRspParams.dpuIndex;
Jeff Johnsone7245742012-09-05 17:12:55 -070018405 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].dpuSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070018406 halConfigStaRsp.configStaRspParams.ucUcastSig;
18407 }
18408 }
18409
18410 /*Notify UMAC*/
18411 wdiConfigSTARspCb( &wdiCfgSTAParams, pWDICtx->pRspCBUserData);
18412
Jeff Johnsone7245742012-09-05 17:12:55 -070018413 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018414}/*WDI_ProcessConfigStaRsp*/
18415
18416
18417/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018418 @brief Process Set Link State Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070018419 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018420
18421 @param pWDICtx: pointer to the WLAN DAL context
18422 pEventData: pointer to the event information structure
18423
Jeff Johnson295189b2012-06-20 16:38:30 -070018424 @see
18425 @return Result of the function call
18426*/
18427WDI_Status
18428WDI_ProcessSetLinkStateRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018429(
Jeff Johnson295189b2012-06-20 16:38:30 -070018430 WDI_ControlBlockType* pWDICtx,
18431 WDI_EventInfoType* pEventData
18432)
18433{
18434 WDI_Status wdiStatus;
18435 eHalStatus halStatus;
18436 WDI_SetLinkStateRspCb wdiSetLinkStateRspCb;
18437
18438 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070018439 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070018440 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18441
18442 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018443 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018444 -------------------------------------------------------------------------*/
18445 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18446 ( NULL == pEventData->pEventData))
18447 {
18448 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018449 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018450 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018451 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018452 }
18453
18454 wdiSetLinkStateRspCb = (WDI_SetLinkStateRspCb)pWDICtx->pfncRspCB;
18455
18456 wpalMutexAcquire(&pWDICtx->wptMutex);
18457
18458 /*If the link is being transitioned to idle - the BSS is to be deleted
18459 - this type of ending a session is possible when UMAC has failed an
18460 - association session during Join*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018461 if ( WDI_LINK_IDLE_STATE ==
Jeff Johnson295189b2012-06-20 16:38:30 -070018462 pWDICtx->wdiCacheSetLinkStReq.wdiLinkInfo.wdiLinkState )
18463 {
18464 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018465 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070018466 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018467 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
18468 pWDICtx->wdiCacheSetLinkStReq.wdiLinkInfo.macBSSID,
18469 &pBSSSes);
18470
Jeff Johnson295189b2012-06-20 16:38:30 -070018471 /*-----------------------------------------------------------------------
18472 Del BSS response can only be received for an existing assoc that
Jeff Johnsone7245742012-09-05 17:12:55 -070018473 is current and in progress
Jeff Johnson295189b2012-06-20 16:38:30 -070018474 -----------------------------------------------------------------------*/
18475 if ( NULL == pBSSSes )
18476 {
18477 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
18478 "Set link response received outside association session");
18479 }
18480 else
18481 {
18482 /* For BT AMP roles no need to delete the sessions if assoc fails. There
18483 will be del BSS coming after this to stop the beaconing & cleaning up the
18484 sessions*/
18485 if(( WDI_BTAMP_STA_MODE != pBSSSes->wdiBssType )&&
18486 ( WDI_BTAMP_AP_MODE != pBSSSes->wdiBssType ))
18487 {
18488 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018489 The current session will be deleted
Jeff Johnson295189b2012-06-20 16:38:30 -070018490 -----------------------------------------------------------------------*/
18491 WDI_DeleteSession(pWDICtx, pBSSSes);
18492
18493 /*-----------------------------------------------------------------------
18494 Check to see if this association is in progress - if so disable the
18495 flag as this has ended
18496 -----------------------------------------------------------------------*/
18497 if ( ucCurrentBSSSesIdx == pWDICtx->ucCurrentBSSSesIdx )
Jeff Johnsone7245742012-09-05 17:12:55 -070018498 {
Jeff Johnson295189b2012-06-20 16:38:30 -070018499 /*Association no longer in progress */
18500 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
18501 /*Association no longer in progress - prepare pending assoc for processing*/
18502 WDI_DequeueAssocRequest(pWDICtx);
18503 }
18504 }
18505 }
18506 }
18507 /* If the link state has been set to POST ASSOC, reset the "association in
18508 progress" flag */
Jeff Johnsone7245742012-09-05 17:12:55 -070018509 if ( WDI_LINK_POSTASSOC_STATE ==
Jeff Johnson295189b2012-06-20 16:38:30 -070018510 pWDICtx->wdiCacheSetLinkStReq.wdiLinkInfo.wdiLinkState )
18511 {
18512 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
18513 WDI_DequeueAssocRequest(pWDICtx);
18514 }
18515
18516 wpalMutexRelease(&pWDICtx->wptMutex);
18517
18518 /*-------------------------------------------------------------------------
18519 Extract response and send it to UMAC
18520 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018521 wpalMemoryCopy( &halStatus,
18522 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070018523 sizeof(halStatus));
18524
Jeff Johnsone7245742012-09-05 17:12:55 -070018525 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018526
18527 /*Notify UMAC*/
18528 wdiSetLinkStateRspCb( wdiStatus, pWDICtx->pRspCBUserData);
18529
Jeff Johnsone7245742012-09-05 17:12:55 -070018530 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018531}/*WDI_ProcessSetLinkStateRsp*/
18532
18533/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018534 @brief Process Get Stats Rsp function (called when a response is
Jeff Johnson295189b2012-06-20 16:38:30 -070018535 being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018536
18537 @param pWDICtx: pointer to the WLAN DAL context
18538 pEventData: pointer to the event information structure
18539
Jeff Johnson295189b2012-06-20 16:38:30 -070018540 @see
18541 @return Result of the function call
18542*/
18543WDI_Status
18544WDI_ProcessGetStatsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018545(
Jeff Johnson295189b2012-06-20 16:38:30 -070018546 WDI_ControlBlockType* pWDICtx,
18547 WDI_EventInfoType* pEventData
18548)
18549{
18550 WDI_GetStatsRspParamsType *wdiGetStatsRsp;
18551 WDI_GetStatsRspCb wdiGetStatsRspCb;
18552 tHalStatsRspParams* pHalStatsRspParams;
Jeff Johnsone7245742012-09-05 17:12:55 -070018553
Jeff Johnson295189b2012-06-20 16:38:30 -070018554 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18555
18556 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018557 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018558 -------------------------------------------------------------------------*/
18559 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18560 ( NULL == pEventData->pEventData))
18561 {
18562 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018563 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018564 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018565 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018566 }
18567
18568 /*-------------------------------------------------------------------------
18569 Extract response and send it to UMAC
18570 -------------------------------------------------------------------------*/
18571 pHalStatsRspParams = (tHalStatsRspParams *)pEventData->pEventData;
18572
18573 /*allocate the stats response buffer */
18574 wdiGetStatsRsp = (WDI_GetStatsRspParamsType *)wpalMemoryAllocate(
18575 pHalStatsRspParams->msgLen - sizeof(tHalStatsRspParams)
18576 + sizeof(WDI_GetStatsRspParamsType));
18577
18578 if(NULL == wdiGetStatsRsp)
18579 {
18580 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080018581 "Failed to allocate memory in Get Stats Response %p %p %p ",
Jeff Johnson295189b2012-06-20 16:38:30 -070018582 pWDICtx, pEventData, pEventData->pEventData);
18583 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018584 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018585 }
18586
18587 wdiGetStatsRspCb = (WDI_GetStatsRspCb)pWDICtx->pfncRspCB;
18588
18589 wpalMemoryZero(wdiGetStatsRsp, pHalStatsRspParams->msgLen);
18590 wdiGetStatsRsp->usMsgType = pHalStatsRspParams->msgType;
18591 wdiGetStatsRsp->usMsgLen = pHalStatsRspParams->msgLen;
18592 wdiGetStatsRsp->wdiStatus = WDI_HAL_2_WDI_STATUS(pHalStatsRspParams->status);
18593 wdiGetStatsRsp->ucSTAIdx = pHalStatsRspParams->staId;
18594 wdiGetStatsRsp->uStatsMask = pHalStatsRspParams->statsMask;
18595
18596 /* copy the stats from buffer at the end of the tHalStatsRspParams message */
18597 wpalMemoryCopy(wdiGetStatsRsp + 1,
18598 (wpt_uint8*)pEventData->pEventData + sizeof(tHalStatsRspParams),
18599 pHalStatsRspParams->msgLen - sizeof(tHalStatsRspParams));
18600
18601 /*Notify UMAC*/
18602 wdiGetStatsRspCb( wdiGetStatsRsp, pWDICtx->pRspCBUserData);
18603
18604 wpalMemoryFree(wdiGetStatsRsp);
18605
Jeff Johnsone7245742012-09-05 17:12:55 -070018606 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018607}/*WDI_ProcessGetStatsRsp*/
18608
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -080018609#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_ESE || defined(FEATURE_WLAN_LFR)
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -080018610/**
18611 @brief Process Get Roam Rssi Rsp function (called when a response is
18612 being received over the bus from HAL)
18613
18614 @param pWDICtx: pointer to the WLAN DAL context
18615 pEventData: pointer to the event information structure
18616
18617 @see
18618 @return Result of the function call
18619*/
18620WDI_Status
18621WDI_ProcessGetRoamRssiRsp
18622(
18623 WDI_ControlBlockType* pWDICtx,
18624 WDI_EventInfoType* pEventData
18625)
18626{
18627 WDI_GetRoamRssiRspParamsType wdiGetRoamRssiRsp;
18628 WDI_GetRoamRssiRspCb wdiGetRoamRssiRspCb;
18629 tHalGetRoamRssiRspMsg halRoamRssiRspParams;
18630 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18631
18632 /*-------------------------------------------------------------------------
18633 Sanity check
18634 -------------------------------------------------------------------------*/
18635 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18636 ( NULL == pEventData->pEventData))
18637 {
18638 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
18639 "%s: Invalid parameters", __func__);
18640 WDI_ASSERT(0);
18641 return WDI_STATUS_E_FAILURE;
18642 }
18643
18644 wdiGetRoamRssiRspCb = (WDI_GetRoamRssiRspCb)pWDICtx->pfncRspCB;
18645 if(NULL == wdiGetRoamRssiRspCb)
18646 {
18647 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
18648 "%s: call back function is NULL", __func__);
18649 WDI_ASSERT(0);
18650 return WDI_STATUS_E_FAILURE;
18651 }
18652
18653 /*-------------------------------------------------------------------------
18654 Extract response and send it to UMAC
18655 -------------------------------------------------------------------------*/
18656 wpalMemoryCopy( &halRoamRssiRspParams.roamRssiRspParams,
18657 pEventData->pEventData,
18658 sizeof(halRoamRssiRspParams.roamRssiRspParams));
18659
18660 wdiGetRoamRssiRsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halRoamRssiRspParams.roamRssiRspParams.status);
18661 wdiGetRoamRssiRsp.ucSTAIdx = halRoamRssiRspParams.roamRssiRspParams.staId;
18662 wdiGetRoamRssiRsp.rssi = halRoamRssiRspParams.roamRssiRspParams.rssi;
18663
18664 /*Notify UMAC*/
18665 wdiGetRoamRssiRspCb( &wdiGetRoamRssiRsp, pWDICtx->pRspCBUserData);
18666
18667 return WDI_STATUS_SUCCESS;
18668}/*WDI_ProcessGetRoamRssiRsp*/
18669#endif
18670
Jeff Johnson295189b2012-06-20 16:38:30 -070018671
18672/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018673 @brief Process Update Cfg Rsp function (called when a response is
Jeff Johnson295189b2012-06-20 16:38:30 -070018674 being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018675
18676 @param pWDICtx: pointer to the WLAN DAL context
18677 pEventData: pointer to the event information structure
18678
Jeff Johnson295189b2012-06-20 16:38:30 -070018679 @see
18680 @return Result of the function call
18681*/
18682WDI_Status
18683WDI_ProcessUpdateCfgRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018684(
Jeff Johnson295189b2012-06-20 16:38:30 -070018685 WDI_ControlBlockType* pWDICtx,
18686 WDI_EventInfoType* pEventData
18687)
18688{
18689 WDI_Status wdiStatus;
18690 eHalStatus halStatus;
18691 WDI_UpdateCfgRspCb wdiUpdateCfgRspCb;
18692 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18693
18694 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018695 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018696 -------------------------------------------------------------------------*/
18697 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18698 ( NULL == pEventData->pEventData))
18699 {
18700 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018701 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018702 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018703 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018704 }
18705
18706 wdiUpdateCfgRspCb = (WDI_UpdateCfgRspCb)pWDICtx->pfncRspCB;
18707
18708 /*-------------------------------------------------------------------------
18709 Extract response and send it to UMAC
18710 -------------------------------------------------------------------------*/
18711 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070018712 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018713
18714 /*Notify UMAC*/
18715 wdiUpdateCfgRspCb( wdiStatus, pWDICtx->pRspCBUserData);
18716
Jeff Johnsone7245742012-09-05 17:12:55 -070018717 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018718}/*WDI_ProcessUpdateCfgRsp*/
18719
18720
18721
18722/**
18723 @brief Process Add BA Rsp function (called when a response
18724 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018725
18726 @param pWDICtx: pointer to the WLAN DAL context
18727 pEventData: pointer to the event information structure
18728
Jeff Johnson295189b2012-06-20 16:38:30 -070018729 @see
18730 @return Result of the function call
18731*/
18732WDI_Status
18733WDI_ProcessAddBARsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018734(
Jeff Johnson295189b2012-06-20 16:38:30 -070018735 WDI_ControlBlockType* pWDICtx,
18736 WDI_EventInfoType* pEventData
18737)
18738{
18739 WDI_AddBARspCb wdiAddBARspCb;
18740
18741 tAddBARspParams halAddBARsp;
18742 WDI_AddBARspinfoType wdiAddBARsp;
18743
18744 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18745
18746 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018747 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018748 -------------------------------------------------------------------------*/
18749 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18750 ( NULL == pEventData->pEventData))
18751 {
18752 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018753 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018754 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018755 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018756 }
18757
18758 wdiAddBARspCb = (WDI_AddBARspCb)pWDICtx->pfncRspCB;
18759
18760 /*-------------------------------------------------------------------------
18761 Extract response and send it to UMAC
18762 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018763 wpalMemoryCopy( &halAddBARsp,
18764 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070018765 sizeof(halAddBARsp));
18766
18767 wdiAddBARsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halAddBARsp.status);
18768
Jeff Johnson43971f52012-07-17 12:26:56 -070018769 if ( WDI_STATUS_SUCCESS == wdiAddBARsp.wdiStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070018770 {
18771 wdiAddBARsp.ucBaDialogToken = halAddBARsp.baDialogToken;
18772 }
18773
18774 /*Notify UMAC*/
18775 wdiAddBARspCb( &wdiAddBARsp, pWDICtx->pRspCBUserData);
18776
Jeff Johnsone7245742012-09-05 17:12:55 -070018777 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018778}/*WDI_ProcessAddSessionBARsp*/
18779
18780/**
18781 @brief Process Add BA Rsp function (called when a response
18782 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018783
18784 @param pWDICtx: pointer to the WLAN DAL context
18785 pEventData: pointer to the event information structure
18786
Jeff Johnson295189b2012-06-20 16:38:30 -070018787 @see
18788 @return Result of the function call
18789*/
18790WDI_Status
18791WDI_ProcessTriggerBARsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018792(
Jeff Johnson295189b2012-06-20 16:38:30 -070018793 WDI_ControlBlockType* pWDICtx,
18794 WDI_EventInfoType* pEventData
18795)
18796{
18797 WDI_TriggerBARspCb wdiTriggerBARspCb;
18798
18799 tTriggerBARspParams* halTriggerBARsp;
18800 tTriggerBaRspCandidate* halBaCandidate;
18801 WDI_TriggerBARspParamsType* wdiTriggerBARsp;
18802 WDI_TriggerBARspCandidateType* wdiTriggerBARspCandidate;
18803 wpt_uint16 index;
18804 wpt_uint16 TidIndex;
Tushnim Bhattacharyyaf64c5dc2013-03-21 15:11:31 -070018805 WDI_Status halTriggerBARspStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070018806 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18807
18808 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018809 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018810 -------------------------------------------------------------------------*/
18811 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18812 ( NULL == pEventData->pEventData))
18813 {
18814 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018815 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018816 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018817 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018818 }
18819
18820 wdiTriggerBARspCb = (WDI_TriggerBARspCb)pWDICtx->pfncRspCB;
18821
18822 /*-------------------------------------------------------------------------
18823 Extract response and send it to UMAC
18824 -------------------------------------------------------------------------*/
18825 halTriggerBARsp = (tTriggerBARspParams *)pEventData->pEventData;
18826
Tushnim Bhattacharyyaf64c5dc2013-03-21 15:11:31 -070018827 halTriggerBARspStatus = WDI_HAL_2_WDI_STATUS(halTriggerBARsp->status);
18828
18829 if ( WDI_STATUS_SUCCESS == halTriggerBARspStatus)
18830 {
18831 wdiTriggerBARsp = wpalMemoryAllocate(sizeof(WDI_TriggerBARspParamsType) +
Jeff Johnsone7245742012-09-05 17:12:55 -070018832 halTriggerBARsp->baCandidateCnt *
Jeff Johnson295189b2012-06-20 16:38:30 -070018833 sizeof(WDI_TriggerBARspCandidateType));
Jeff Johnson295189b2012-06-20 16:38:30 -070018834
Tushnim Bhattacharyyaf64c5dc2013-03-21 15:11:31 -070018835 if(NULL == wdiTriggerBARsp)
18836 {
18837 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080018838 "Failed to allocate memory in Trigger BA Response %p %p %p ",
Tushnim Bhattacharyyaf64c5dc2013-03-21 15:11:31 -070018839 pWDICtx, pEventData, pEventData->pEventData);
18840 WDI_ASSERT(0);
18841 return WDI_STATUS_E_FAILURE;
18842 }
Jeff Johnson295189b2012-06-20 16:38:30 -070018843
Tushnim Bhattacharyyaf64c5dc2013-03-21 15:11:31 -070018844 wdiTriggerBARsp->wdiStatus = halTriggerBARspStatus;
18845
Jeff Johnson295189b2012-06-20 16:38:30 -070018846 wdiTriggerBARsp->usBaCandidateCnt = halTriggerBARsp->baCandidateCnt;
Jeff Johnsone7245742012-09-05 17:12:55 -070018847 wpalMemoryCopy(wdiTriggerBARsp->macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -070018848 halTriggerBARsp->bssId , WDI_MAC_ADDR_LEN);
18849
18850 wdiTriggerBARspCandidate = (WDI_TriggerBARspCandidateType*)(wdiTriggerBARsp + 1);
18851 halBaCandidate = (tTriggerBaRspCandidate*)(halTriggerBARsp + 1);
18852
18853 for(index = 0; index < wdiTriggerBARsp->usBaCandidateCnt; index++)
18854 {
Jeff Johnsone7245742012-09-05 17:12:55 -070018855 wpalMemoryCopy(wdiTriggerBARspCandidate->macSTA,
Jeff Johnson295189b2012-06-20 16:38:30 -070018856 halBaCandidate->staAddr, WDI_MAC_ADDR_LEN);
18857 for(TidIndex = 0; TidIndex < STA_MAX_TC; TidIndex++)
18858 {
Jeff Johnsone7245742012-09-05 17:12:55 -070018859 wdiTriggerBARspCandidate->wdiBAInfo[TidIndex].fBaEnable =
Jeff Johnson295189b2012-06-20 16:38:30 -070018860 halBaCandidate->baInfo[TidIndex].fBaEnable;
Jeff Johnsone7245742012-09-05 17:12:55 -070018861 wdiTriggerBARspCandidate->wdiBAInfo[TidIndex].startingSeqNum =
Jeff Johnson295189b2012-06-20 16:38:30 -070018862 halBaCandidate->baInfo[TidIndex].startingSeqNum;
18863 }
18864 wdiTriggerBARspCandidate++;
18865 halBaCandidate++;
18866 }
18867 }
Tushnim Bhattacharyyaf64c5dc2013-03-21 15:11:31 -070018868 else
18869 {
18870 wdiTriggerBARsp = wpalMemoryAllocate(sizeof(WDI_TriggerBARspParamsType));
18871
18872 if(NULL == wdiTriggerBARsp)
18873 {
18874 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080018875 "Failed to allocate memory in Trigger BA Response %p %p %p ",
Tushnim Bhattacharyyaf64c5dc2013-03-21 15:11:31 -070018876 pWDICtx, pEventData, pEventData->pEventData);
18877 WDI_ASSERT(0);
18878 return WDI_STATUS_E_FAILURE;
18879 }
18880
18881 wdiTriggerBARsp->wdiStatus = halTriggerBARspStatus;
18882
18883 }
Jeff Johnson295189b2012-06-20 16:38:30 -070018884
18885 /*Notify UMAC*/
18886 wdiTriggerBARspCb( wdiTriggerBARsp, pWDICtx->pRspCBUserData);
18887
18888 wpalMemoryFree(wdiTriggerBARsp);
Jeff Johnsone7245742012-09-05 17:12:55 -070018889 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018890}/*WDI_ProcessAddSessionBARsp*/
18891
18892/**
18893 @brief Process Update Beacon Params Rsp function (called when a response
18894 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018895
18896 @param pWDICtx: pointer to the WLAN DAL context
18897 pEventData: pointer to the event information structure
18898
Jeff Johnson295189b2012-06-20 16:38:30 -070018899 @see
18900 @return Result of the function call
18901*/
18902WDI_Status
18903WDI_ProcessUpdateBeaconParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018904(
Jeff Johnson295189b2012-06-20 16:38:30 -070018905 WDI_ControlBlockType* pWDICtx,
18906 WDI_EventInfoType* pEventData
18907)
18908{
18909 WDI_Status wdiStatus;
18910 eHalStatus halStatus;
18911 WDI_UpdateBeaconParamsRspCb wdiUpdateBeaconParamsRspCb;
18912 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18913
18914 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018915 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018916 -------------------------------------------------------------------------*/
18917 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18918 ( NULL == pEventData->pEventData))
18919 {
18920 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018921 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018922 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018923 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018924 }
18925
18926 wdiUpdateBeaconParamsRspCb = (WDI_UpdateBeaconParamsRspCb)pWDICtx->pfncRspCB;
18927
18928 /*-------------------------------------------------------------------------
18929 Extract response and send it to UMAC
18930 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018931 wpalMemoryCopy( &halStatus,
18932 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070018933 sizeof(halStatus));
18934
Jeff Johnsone7245742012-09-05 17:12:55 -070018935 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018936
18937 /*Notify UMAC*/
18938 wdiUpdateBeaconParamsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
18939
Jeff Johnsone7245742012-09-05 17:12:55 -070018940 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018941}/*WDI_ProcessUpdateBeaconParamsRsp*/
18942
18943/**
18944 @brief Process Send Beacon template Rsp function (called when a response
18945 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018946
18947 @param pWDICtx: pointer to the WLAN DAL context
18948 pEventData: pointer to the event information structure
18949
Jeff Johnson295189b2012-06-20 16:38:30 -070018950 @see
18951 @return Result of the function call
18952*/
18953WDI_Status
18954WDI_ProcessSendBeaconParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018955(
Jeff Johnson295189b2012-06-20 16:38:30 -070018956 WDI_ControlBlockType* pWDICtx,
18957 WDI_EventInfoType* pEventData
18958)
18959{
18960 WDI_Status wdiStatus;
18961 eHalStatus halStatus;
18962 WDI_SendBeaconParamsRspCb wdiSendBeaconParamsRspCb;
18963 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18964
18965 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018966 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018967 -------------------------------------------------------------------------*/
18968 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18969 ( NULL == pEventData->pEventData))
18970 {
18971 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018972 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018973 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018974 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018975 }
18976
18977 wdiSendBeaconParamsRspCb = (WDI_SendBeaconParamsRspCb)pWDICtx->pfncRspCB;
18978
18979 /*-------------------------------------------------------------------------
18980 Extract response and send it to UMAC
18981 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018982 wpalMemoryCopy( &halStatus,
18983 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070018984 sizeof(halStatus));
18985
Jeff Johnsone7245742012-09-05 17:12:55 -070018986 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018987
18988 /*Notify UMAC*/
18989 wdiSendBeaconParamsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
18990
Jeff Johnsone7245742012-09-05 17:12:55 -070018991 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018992}/*WDI_ProcessSendBeaconParamsRsp*/
18993
Jeff Johnsone7245742012-09-05 17:12:55 -070018994
Jeff Johnson295189b2012-06-20 16:38:30 -070018995/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018996 @brief Process Update Probe Resp Template Rsp function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070018997 when a response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018998
18999 @param pWDICtx: pointer to the WLAN DAL context
19000 pEventData: pointer to the event information structure
19001
Jeff Johnson295189b2012-06-20 16:38:30 -070019002 @see
19003 @return Result of the function call
19004*/
19005WDI_Status
19006WDI_ProcessUpdateProbeRspTemplateRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019007(
Jeff Johnson295189b2012-06-20 16:38:30 -070019008 WDI_ControlBlockType* pWDICtx,
19009 WDI_EventInfoType* pEventData
19010)
19011{
19012 WDI_Status wdiStatus;
19013 eHalStatus halStatus;
19014 WDI_UpdateProbeRspTemplateRspCb wdiUpdProbeRspTemplRspCb;
19015 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19016
19017 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019018 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019019 -------------------------------------------------------------------------*/
19020 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19021 ( NULL == pEventData->pEventData))
19022 {
19023 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019024 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019025 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019026 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019027 }
19028
19029 wdiUpdProbeRspTemplRspCb = (WDI_UpdateProbeRspTemplateRspCb)pWDICtx->pfncRspCB;
19030
19031 /*-------------------------------------------------------------------------
19032 Extract response and send it to UMAC
19033 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019034 wpalMemoryCopy( &halStatus,
19035 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070019036 sizeof(halStatus));
19037
Jeff Johnsone7245742012-09-05 17:12:55 -070019038 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019039
19040 /*Notify UMAC*/
19041 wdiUpdProbeRspTemplRspCb( wdiStatus, pWDICtx->pRspCBUserData);
19042
Jeff Johnsone7245742012-09-05 17:12:55 -070019043 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019044}/*WDI_ProcessUpdateProbeRspTemplateRsp*/
19045
19046 /**
19047 @brief Process Set Max Tx Power Rsp function (called when a response
19048 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019049
19050 @param pWDICtx: pointer to the WLAN DAL context
19051 pEventData: pointer to the event information structure
19052
Jeff Johnson295189b2012-06-20 16:38:30 -070019053 @see
19054 @return Result of the function call
19055*/
19056WDI_Status
19057WDI_ProcessSetMaxTxPowerRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019058(
Jeff Johnson295189b2012-06-20 16:38:30 -070019059 WDI_ControlBlockType* pWDICtx,
19060 WDI_EventInfoType* pEventData
19061)
19062{
19063 tSetMaxTxPwrRspMsg halTxpowerrsp;
Jeff Johnsone7245742012-09-05 17:12:55 -070019064
Jeff Johnson295189b2012-06-20 16:38:30 -070019065 WDI_SetMaxTxPowerRspMsg wdiSetMaxTxPowerRspMsg;
Jeff Johnsone7245742012-09-05 17:12:55 -070019066
Jeff Johnson295189b2012-06-20 16:38:30 -070019067 WDA_SetMaxTxPowerRspCb wdiReqStatusCb;
19068 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19069
19070 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019071 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019072 -------------------------------------------------------------------------*/
19073 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19074 ( NULL == pEventData->pEventData))
19075 {
19076 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019077 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019078 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019079 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019080 }
19081
19082 wdiReqStatusCb = (WDA_SetMaxTxPowerRspCb)pWDICtx->pfncRspCB;
19083
19084 /*-------------------------------------------------------------------------
19085 Extract response and send it to UMAC
19086 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019087 wpalMemoryCopy( &halTxpowerrsp.setMaxTxPwrRspParams,
19088 pEventData->pEventData,
19089 sizeof(halTxpowerrsp.setMaxTxPwrRspParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070019090
19091 if ( eHAL_STATUS_SUCCESS != halTxpowerrsp.setMaxTxPwrRspParams.status )
19092 {
19093 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
19094 "Error status returned in Set Max Tx Power Response ");
Jeff Johnsone7245742012-09-05 17:12:55 -070019095 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019096 }
19097
Jeff Johnsone7245742012-09-05 17:12:55 -070019098 wdiSetMaxTxPowerRspMsg.wdiStatus =
Jeff Johnson295189b2012-06-20 16:38:30 -070019099 WDI_HAL_2_WDI_STATUS(halTxpowerrsp.setMaxTxPwrRspParams.status);
Jeff Johnsone7245742012-09-05 17:12:55 -070019100 wdiSetMaxTxPowerRspMsg.ucPower = halTxpowerrsp.setMaxTxPwrRspParams.power;
Jeff Johnson295189b2012-06-20 16:38:30 -070019101
19102 /*Notify UMAC*/
19103 wdiReqStatusCb( &wdiSetMaxTxPowerRspMsg, pWDICtx->pRspCBUserData);
19104
Jeff Johnsone7245742012-09-05 17:12:55 -070019105 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019106}
19107
schang86c22c42013-03-13 18:41:24 -070019108 /**
19109 @brief Process Set Tx Power Rsp function (called when a response
19110 is being received over the bus from HAL)
19111
19112 @param pWDICtx: pointer to the WLAN DAL context
19113 pEventData: pointer to the event information structure
19114
19115 @see
19116 @return Result of the function call
19117*/
19118WDI_Status
19119WDI_ProcessSetTxPowerRsp
19120(
19121 WDI_ControlBlockType* pWDICtx,
19122 WDI_EventInfoType* pEventData
19123)
19124{
19125 tSetTxPwrRspMsg halTxpowerrsp;
19126 WDI_SetTxPowerRspMsg wdiSetTxPowerRspMsg;
19127 WDA_SetTxPowerRspCb wdiReqStatusCb;
19128 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19129
19130 /*-------------------------------------------------------------------------
19131 Sanity check
19132 -------------------------------------------------------------------------*/
19133 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19134 ( NULL == pEventData->pEventData))
19135 {
19136 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
19137 "%s: Invalid parameters", __func__);
19138 WDI_ASSERT(0);
19139 return WDI_STATUS_E_FAILURE;
19140 }
19141
19142 wdiReqStatusCb = (WDA_SetTxPowerRspCb)pWDICtx->pfncRspCB;
19143
19144 /*-------------------------------------------------------------------------
19145 Extract response and send it to UMAC
19146 -------------------------------------------------------------------------*/
19147 wpalMemoryCopy(&halTxpowerrsp.setTxPwrRspParams,
19148 pEventData->pEventData,
19149 sizeof(halTxpowerrsp.setTxPwrRspParams));
19150
19151 if (eHAL_STATUS_SUCCESS != halTxpowerrsp.setTxPwrRspParams.status)
19152 {
19153 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
19154 "Error status returned in Set Tx Power Response ");
19155 WDI_DetectedDeviceError(pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
19156 return WDI_STATUS_E_FAILURE;
19157 }
19158
19159 wdiSetTxPowerRspMsg.wdiStatus =
19160 WDI_HAL_2_WDI_STATUS(halTxpowerrsp.setTxPwrRspParams.status);
19161
19162 /*Notify UMAC*/
19163 wdiReqStatusCb(&wdiSetTxPowerRspMsg, pWDICtx->pRspCBUserData);
19164
19165 return WDI_STATUS_SUCCESS;
19166}
Arif Hussain935a8fb2014-01-31 12:12:28 -080019167
19168/**
19169 @brief Process Set Max Tx Power Per Band Rsp function (called when a response
19170 is being received over the bus from HAL)
19171
19172 @param pWDICtx: pointer to the WLAN DAL context
19173 pEventData: pointer to the event information structure
19174
19175 @see
19176 @return Result of the function call
19177*/
19178WDI_Status
19179WDI_ProcessSetMaxTxPowerPerBandRsp
19180(
19181 WDI_ControlBlockType* pWDICtx,
19182 WDI_EventInfoType* pEventData
19183)
19184{
19185 tSetMaxTxPwrPerBandRspMsg halMaxTxPowerPerBandRsp;
19186 WDI_SetMaxTxPowerPerBandRspMsg wdiSetTxPowerPerBandRspMsg;
19187 WDA_SetMaxTxPowerPerBandRspCb wdiReqStatusCb;
19188 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19189
19190 /*-------------------------------------------------------------------------
19191 Sanity check
19192 -------------------------------------------------------------------------*/
19193 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19194 ( NULL == pEventData->pEventData))
19195 {
19196 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
19197 "%s: Invalid parameters", __func__);
19198 WDI_ASSERT(0);
19199 return WDI_STATUS_E_FAILURE;
19200 }
19201
19202 wdiReqStatusCb = (WDA_SetMaxTxPowerPerBandRspCb)pWDICtx->pfncRspCB;
19203
19204 /*-------------------------------------------------------------------------
19205 Extract response and send it to UMAC
19206 -------------------------------------------------------------------------*/
19207 wpalMemoryCopy(&halMaxTxPowerPerBandRsp.setMaxTxPwrPerBandRspParams,
19208 pEventData->pEventData,
19209 sizeof(halMaxTxPowerPerBandRsp.setMaxTxPwrPerBandRspParams));
19210
19211 if (eHAL_STATUS_SUCCESS !=
19212 halMaxTxPowerPerBandRsp.setMaxTxPwrPerBandRspParams.status)
19213 {
19214 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
19215 "Error status returned in Set Max Tx Power Per Band Response");
19216 return WDI_STATUS_E_FAILURE;
19217 }
19218
19219 wdiSetTxPowerPerBandRspMsg.wdiStatus =
19220 WDI_HAL_2_WDI_STATUS(
19221 halMaxTxPowerPerBandRsp.setMaxTxPwrPerBandRspParams.status);
19222
19223 /* Notify UMAC */
19224 wdiReqStatusCb(&wdiSetTxPowerPerBandRspMsg, pWDICtx->pRspCBUserData);
19225
19226 return WDI_STATUS_SUCCESS;
19227}
19228
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053019229#ifdef FEATURE_WLAN_TDLS
19230/**
19231 @brief Process TDLS Link Establish Rsp function (called
19232 when a response is being received over the bus from HAL)
19233
19234 @param pWDICtx: pointer to the WLAN DAL context
19235 pEventData: pointer to the event information structure
19236
19237 @see
19238 @return Result of the function call
19239*/
19240WDI_Status
19241WDI_ProcessLinkEstablishReqRsp
19242(
19243 WDI_ControlBlockType* pWDICtx,
19244 WDI_EventInfoType* pEventData
19245)
19246{
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053019247 eHalStatus halStatus;
19248 WDI_SetTDLSLinkEstablishReqParamsRspCb wdiTDLSLinkEstablishReqParamsRspCb;
Gopichand Nakkala574f6d12013-06-27 19:38:43 +053019249 tTDLSLinkEstablishedRespMsg halTdlsLinkEstablishedRespMsg;
19250 WDI_SetTdlsLinkEstablishReqResp wdiSetTdlsLinkEstablishReqResp;
19251
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053019252 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19253
19254 /*-------------------------------------------------------------------------
19255 Sanity check
19256 -------------------------------------------------------------------------*/
19257 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19258 ( NULL == pEventData->pEventData))
19259 {
19260 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
19261 "%s: Invalid parameters", __func__);
19262 WDI_ASSERT(0);
19263 return WDI_STATUS_E_FAILURE;
19264 }
19265
Gopichand Nakkala574f6d12013-06-27 19:38:43 +053019266 /*-------------------------------------------------------------------------
19267 Extract indication and send it to UMAC
19268 -------------------------------------------------------------------------*/
19269 wpalMemoryCopy( &halTdlsLinkEstablishedRespMsg.TDLSLinkEstablishedRespParams,
19270 pEventData->pEventData,
19271 sizeof(halTdlsLinkEstablishedRespMsg.TDLSLinkEstablishedRespParams) );
19272
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053019273 wdiTDLSLinkEstablishReqParamsRspCb = (WDI_SetTDLSLinkEstablishReqParamsRspCb)pWDICtx->pfncRspCB;
19274
19275 /*-------------------------------------------------------------------------
19276 Extract response and send it to UMAC
19277 -------------------------------------------------------------------------*/
19278 wpalMemoryCopy( &halStatus,
19279 pEventData->pEventData,
19280 sizeof(halStatus));
19281
Gopichand Nakkala574f6d12013-06-27 19:38:43 +053019282 wdiSetTdlsLinkEstablishReqResp.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
19283 wdiSetTdlsLinkEstablishReqResp.uStaIdx = halTdlsLinkEstablishedRespMsg.TDLSLinkEstablishedRespParams.staIdx;
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053019284
19285 /*Notify UMAC*/
Gopichand Nakkala574f6d12013-06-27 19:38:43 +053019286 wdiTDLSLinkEstablishReqParamsRspCb( &wdiSetTdlsLinkEstablishReqResp, pWDICtx->pRspCBUserData);
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053019287
19288 return WDI_STATUS_SUCCESS;
19289}/*WDI_ProcessLinkEstablishReqRsp*/
Atul Mittalc0f739f2014-07-31 13:47:47 +053019290
19291
19292
19293/**
19294 @brief Process TDLS Chan switch Rsp function (called
19295 when a response is being received over the bus from HAL)
19296
19297 @param pWDICtx: pointer to the WLAN DAL context
19298 pEventData: pointer to the event information structure
19299
19300 @see
19301 @return Result of the function call
19302*/
19303WDI_Status
19304WDI_ProcessChanSwitchReqRsp
19305(
19306 WDI_ControlBlockType* pWDICtx,
19307 WDI_EventInfoType* pEventData
19308)
19309{
19310 eHalStatus halStatus;
19311 WDI_SetTDLSChanSwitchReqParamsRspCb wdiTDLSChanSwitchReqParamsRspCb;
19312 tTDLSChanSwitchRespMsg halTdlsChanSwitchRespMsg;
19313 WDI_SetTdlsChanSwitchReqResp wdiSetTdlsChanSwitchReqResp;
19314
19315 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19316
19317 /*-------------------------------------------------------------------------
19318 Sanity check
19319 -------------------------------------------------------------------------*/
19320 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19321 ( NULL == pEventData->pEventData))
19322 {
19323 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
19324 "%s: Invalid parameters", __func__);
19325 WDI_ASSERT(0);
19326 return WDI_STATUS_E_FAILURE;
19327 }
19328
19329 /*-------------------------------------------------------------------------
19330 Extract indication and send it to UMAC
19331 -------------------------------------------------------------------------*/
19332 wpalMemoryCopy( &halTdlsChanSwitchRespMsg.tdlsChanSwitchRespParams,
19333 pEventData->pEventData,
19334 sizeof(halTdlsChanSwitchRespMsg.tdlsChanSwitchRespParams) );
19335
19336 wdiTDLSChanSwitchReqParamsRspCb = (WDI_SetTDLSChanSwitchReqParamsRspCb)pWDICtx->pfncRspCB;
19337
19338 /*-------------------------------------------------------------------------
19339 Extract response and send it to UMAC
19340 -------------------------------------------------------------------------*/
19341 wpalMemoryCopy( &halStatus,
19342 pEventData->pEventData,
19343 sizeof(halStatus));
19344
19345 wdiSetTdlsChanSwitchReqResp.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
19346 wdiSetTdlsChanSwitchReqResp.uStaIdx = halTdlsChanSwitchRespMsg.tdlsChanSwitchRespParams.staIdx;
19347
19348 /*Notify UMAC*/
19349 wdiTDLSChanSwitchReqParamsRspCb( &wdiSetTdlsChanSwitchReqResp, pWDICtx->pRspCBUserData );
19350
19351 return WDI_STATUS_SUCCESS;
19352}/*WDI_ProcessChanSwitchReqRsp*/
19353
19354
19355
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053019356#endif
schang86c22c42013-03-13 18:41:24 -070019357
Jeff Johnson295189b2012-06-20 16:38:30 -070019358/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019359 @brief Process P2P Group Owner Notice Of Absense Rsp function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070019360 when a response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019361
19362 @param pWDICtx: pointer to the WLAN DAL context
19363 pEventData: pointer to the event information structure
19364
Jeff Johnson295189b2012-06-20 16:38:30 -070019365 @see
19366 @return Result of the function call
19367*/
19368WDI_Status
19369WDI_ProcessP2PGONOARsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019370(
Jeff Johnson295189b2012-06-20 16:38:30 -070019371 WDI_ControlBlockType* pWDICtx,
19372 WDI_EventInfoType* pEventData
19373)
19374{
19375 WDI_Status wdiStatus;
19376 eHalStatus halStatus;
19377 WDI_SetP2PGONOAReqParamsRspCb wdiP2PGONOAReqParamsRspCb;
19378 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19379
19380 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019381 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019382 -------------------------------------------------------------------------*/
19383 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19384 ( NULL == pEventData->pEventData))
19385 {
19386 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019387 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019388 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019389 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019390 }
19391
19392 wdiP2PGONOAReqParamsRspCb = (WDI_SetP2PGONOAReqParamsRspCb)pWDICtx->pfncRspCB;
19393
19394 /*-------------------------------------------------------------------------
19395 Extract response and send it to UMAC
19396 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019397 wpalMemoryCopy( &halStatus,
19398 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070019399 sizeof(halStatus));
19400
Jeff Johnsone7245742012-09-05 17:12:55 -070019401 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019402
19403 /*Notify UMAC*/
19404 wdiP2PGONOAReqParamsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
19405
Jeff Johnsone7245742012-09-05 17:12:55 -070019406 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019407}/*WDI_ProcessP2PGONOARsp*/
Jeff Johnson295189b2012-06-20 16:38:30 -070019408/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019409 @brief Process Enter IMPS Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070019410 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019411
19412 @param pWDICtx: pointer to the WLAN DAL context
19413 pEventData: pointer to the event information structure
19414
Jeff Johnson295189b2012-06-20 16:38:30 -070019415 @see
19416 @return Result of the function call
19417*/
19418WDI_Status
19419WDI_ProcessEnterImpsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019420(
Jeff Johnson295189b2012-06-20 16:38:30 -070019421 WDI_ControlBlockType* pWDICtx,
19422 WDI_EventInfoType* pEventData
19423)
19424{
19425 WDI_Status wdiStatus;
19426 eHalStatus halStatus;
19427 WDI_EnterImpsRspCb wdiEnterImpsRspCb;
Ravali85acf6b2012-12-12 14:01:38 -080019428 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070019429 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19430
19431 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019432 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019433 -------------------------------------------------------------------------*/
19434 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19435 ( NULL == pEventData->pEventData))
19436 {
19437 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019438 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019439 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019440 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019441 }
19442
19443 wdiEnterImpsRspCb = (WDI_EnterImpsRspCb)pWDICtx->pfncRspCB;
19444
19445 /*-------------------------------------------------------------------------
19446 Extract response and send it to UMAC
19447 -------------------------------------------------------------------------*/
19448 halStatus = *((eHalStatus*)pEventData->pEventData);
19449
Jeff Johnsone7245742012-09-05 17:12:55 -070019450 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019451
Madan Mohan Koyyalamudi48e375a2012-09-24 13:19:17 -070019452 /* If IMPS req failed, riva is not power collapsed Put the DXE in FULL state.
19453 * Other module states are taken care by PMC.
19454 * TODO: How do we take care of the case where IMPS is success, but riva power collapse fails??
19455 */
19456 if (wdiStatus != WDI_STATUS_SUCCESS) {
19457
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070019458 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
19459 "WDI Process Enter IMPS RSP failed With HAL Status Code: %d",
19460 halStatus);
19461 /* Call Back is not required as we are putting the DXE in FULL
19462 * and riva is already in full (IMPS RSP Failed)*/
Ravali85acf6b2012-12-12 14:01:38 -080019463 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
19464
19465 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus ) {
19466 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain9a5d5382013-11-17 22:05:35 -080019467 "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 -080019468 WDI_ASSERT(0);
19469 }
Madan Mohan Koyyalamudi48e375a2012-09-24 13:19:17 -070019470 }
Jeff Johnson295189b2012-06-20 16:38:30 -070019471 /*Notify UMAC*/
19472 wdiEnterImpsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
19473
Jeff Johnsone7245742012-09-05 17:12:55 -070019474 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019475}/*WDI_ProcessEnterImpsRsp*/
19476
19477/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019478 @brief Process Exit IMPS Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070019479 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019480
19481 @param pWDICtx: pointer to the WLAN DAL context
19482 pEventData: pointer to the event information structure
19483
Jeff Johnson295189b2012-06-20 16:38:30 -070019484 @see
19485 @return Result of the function call
19486*/
19487WDI_Status
19488WDI_ProcessExitImpsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019489(
Jeff Johnson295189b2012-06-20 16:38:30 -070019490 WDI_ControlBlockType* pWDICtx,
19491 WDI_EventInfoType* pEventData
19492)
19493{
19494 WDI_Status wdiStatus;
19495 eHalStatus halStatus;
19496 WDI_ExitImpsRspCb wdiExitImpsRspCb;
Ravali85acf6b2012-12-12 14:01:38 -080019497 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070019498 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19499
19500 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019501 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019502 -------------------------------------------------------------------------*/
19503 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19504 ( NULL == pEventData->pEventData))
19505 {
19506 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019507 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019508 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019509 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019510 }
19511
19512 wdiExitImpsRspCb = (WDI_ExitImpsRspCb)pWDICtx->pfncRspCB;
19513
19514 /*-------------------------------------------------------------------------
19515 Extract response and send it to UMAC
19516 -------------------------------------------------------------------------*/
19517 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070019518 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019519
Gopichand Nakkalac6c91902013-05-29 18:53:35 +053019520 if (halStatus != eHAL_STATUS_SUCCESS)
19521 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
19522 "%s: Exit IMPS response is a failure with halStatus %d", __func__, halStatus);
19523
Jeff Johnson295189b2012-06-20 16:38:30 -070019524 // notify DTS that we are entering Full power
Ravali85acf6b2012-12-12 14:01:38 -080019525 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
19526 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
19527 {
19528 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain9a5d5382013-11-17 22:05:35 -080019529 "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 -080019530 WDI_ASSERT(0);
19531 }
Jeff Johnson295189b2012-06-20 16:38:30 -070019532 /*Notify UMAC*/
19533 wdiExitImpsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
19534
Jeff Johnsone7245742012-09-05 17:12:55 -070019535 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019536}/*WDI_ProcessExitImpsRsp*/
19537
19538/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019539 @brief Process Enter BMPS Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070019540 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019541
19542 @param pWDICtx: pointer to the WLAN DAL context
19543 pEventData: pointer to the event information structure
19544
Jeff Johnson295189b2012-06-20 16:38:30 -070019545 @see
19546 @return Result of the function call
19547*/
19548WDI_Status
19549WDI_ProcessEnterBmpsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019550(
Jeff Johnson295189b2012-06-20 16:38:30 -070019551 WDI_ControlBlockType* pWDICtx,
19552 WDI_EventInfoType* pEventData
19553)
19554{
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019555 eHalStatus halStatus = eHAL_STATUS_FAILURE;
19556 tHalEnterBmpsRspParams halEnterBmpsRsp;
19557 WDI_EnterBmpsRspCb wdiEnterBmpsRspCb;
19558 WDI_EnterBmpsRspParamsType wdiEnterBmpsRspparams;
Ravali85acf6b2012-12-12 14:01:38 -080019559 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070019560 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19561
19562 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019563 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019564 -------------------------------------------------------------------------*/
19565 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19566 ( NULL == pEventData->pEventData))
19567 {
19568 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019569 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019570 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019571 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019572 }
19573
Jeff Johnson295189b2012-06-20 16:38:30 -070019574 /*-------------------------------------------------------------------------
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019575 Extract response and send it to UMAC
19576 -------------------------------------------------------------------------*/
19577 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
19578 {
19579 wpalMemoryCopy( &halEnterBmpsRsp,
19580 pEventData->pEventData,
19581 sizeof(halEnterBmpsRsp));
19582
19583 //Used to print debug message
19584 halStatus = halEnterBmpsRsp.status;
19585 wdiEnterBmpsRspparams.wdiStatus = WDI_HAL_2_WDI_STATUS(halEnterBmpsRsp.status);
19586 wdiEnterBmpsRspparams.bssIdx = halEnterBmpsRsp.bssIdx;
19587 }
19588 else
19589 {
19590 halStatus = *((eHalStatus*)pEventData->pEventData);
19591 wdiEnterBmpsRspparams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
19592 }
19593
19594 wdiEnterBmpsRspCb = (WDI_EnterBmpsRspCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070019595
Madan Mohan Koyyalamudi48e375a2012-09-24 13:19:17 -070019596 /* If BMPS req failed, riva is not power collapsed put the DXE in FULL state.
19597 * Other module states are taken care by PMC.
19598 * TODO: How do we take care of the case where BMPS is success, but riva power collapse fails??
19599 */
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019600 if (wdiEnterBmpsRspparams.wdiStatus != WDI_STATUS_SUCCESS)
19601 {
Madan Mohan Koyyalamudi48e375a2012-09-24 13:19:17 -070019602
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019603 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070019604 "WDI Process Enter BMPS RSP failed With HAL Status Code: %d",
19605 halStatus);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019606 /* Call Back is not required as we are putting the DXE in FULL
19607 * and riva is already in FULL (BMPS RSP Failed)*/
Ravali85acf6b2012-12-12 14:01:38 -080019608 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
19609 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
19610 {
19611 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain9a5d5382013-11-17 22:05:35 -080019612 "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 -080019613 WDI_ASSERT(0);
19614 }
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019615 pWDICtx->bInBmps = eWLAN_PAL_FALSE;
Madan Mohan Koyyalamudi48e375a2012-09-24 13:19:17 -070019616 }
19617
Jeff Johnson295189b2012-06-20 16:38:30 -070019618 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019619 wdiEnterBmpsRspCb( &wdiEnterBmpsRspparams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070019620
Jeff Johnsone7245742012-09-05 17:12:55 -070019621 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019622}/*WDI_ProcessEnterBmpsRsp*/
19623
19624/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019625 @brief Process Exit BMPS Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070019626 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019627
19628 @param pWDICtx: pointer to the WLAN DAL context
19629 pEventData: pointer to the event information structure
19630
Jeff Johnson295189b2012-06-20 16:38:30 -070019631 @see
19632 @return Result of the function call
19633*/
19634WDI_Status
19635WDI_ProcessExitBmpsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019636(
Jeff Johnson295189b2012-06-20 16:38:30 -070019637 WDI_ControlBlockType* pWDICtx,
19638 WDI_EventInfoType* pEventData
19639)
19640{
Jeff Johnson295189b2012-06-20 16:38:30 -070019641 eHalStatus halStatus;
19642 WDI_ExitBmpsRspCb wdiExitBmpsRspCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019643 tHalExitBmpsRspParams halExitBmpsRsp;
Ravali85acf6b2012-12-12 14:01:38 -080019644 WDI_ExitBmpsRspParamsType wdiExitBmpsRspParams;
19645 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070019646 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19647
19648 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019649 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019650 -------------------------------------------------------------------------*/
19651 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19652 ( NULL == pEventData->pEventData))
19653 {
19654 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019655 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019656 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019657 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019658 }
19659
19660 wdiExitBmpsRspCb = (WDI_ExitBmpsRspCb)pWDICtx->pfncRspCB;
19661
19662 /*-------------------------------------------------------------------------
19663 Extract response and send it to UMAC
19664 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019665
19666 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
19667 {
19668 wpalMemoryCopy( &halExitBmpsRsp,
19669 pEventData->pEventData,
19670 sizeof(halExitBmpsRsp));
19671
19672 wdiExitBmpsRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halExitBmpsRsp.status);
19673 wdiExitBmpsRspParams.bssIdx = halExitBmpsRsp.bssIdx;
19674 }
19675 else
19676 {
19677 halStatus = *((eHalStatus*)pEventData->pEventData);
19678 wdiExitBmpsRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
19679 }
Jeff Johnson295189b2012-06-20 16:38:30 -070019680
19681 // notify DTS that we are entering Full power
Ravali85acf6b2012-12-12 14:01:38 -080019682 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
19683 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
19684 {
19685 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain9a5d5382013-11-17 22:05:35 -080019686 "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 -080019687 WDI_ASSERT(0);
19688 }
Jeff Johnson295189b2012-06-20 16:38:30 -070019689 pWDICtx->bInBmps = eWLAN_PAL_FALSE;
19690
19691 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019692 wdiExitBmpsRspCb( &wdiExitBmpsRspParams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070019693
Jeff Johnsone7245742012-09-05 17:12:55 -070019694 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019695}/*WDI_ProcessExitBmpsRsp*/
19696
19697/**
19698 @brief Process Enter UAPSD Rsp function (called when a response
19699 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019700
19701 @param pWDICtx: pointer to the WLAN DAL context
19702 pEventData: pointer to the event information structure
19703
Jeff Johnson295189b2012-06-20 16:38:30 -070019704 @see
19705 @return Result of the function call
19706*/
19707WDI_Status
19708WDI_ProcessEnterUapsdRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019709(
Jeff Johnson295189b2012-06-20 16:38:30 -070019710 WDI_ControlBlockType* pWDICtx,
19711 WDI_EventInfoType* pEventData
19712)
19713{
Jeff Johnson295189b2012-06-20 16:38:30 -070019714 eHalStatus halStatus;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019715 tUapsdRspParams halEnterUapsdRsp;
Jeff Johnson295189b2012-06-20 16:38:30 -070019716 WDI_EnterUapsdRspCb wdiEnterUapsdRspCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019717 WDI_EnterUapsdRspParamsType wdiEnterUapsdRspParams;
19718
Jeff Johnson295189b2012-06-20 16:38:30 -070019719 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19720
19721 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019722 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019723 -------------------------------------------------------------------------*/
19724 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19725 ( NULL == pEventData->pEventData))
19726 {
19727 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019728 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019729 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019730 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019731 }
19732
19733 wdiEnterUapsdRspCb = (WDI_EnterUapsdRspCb)pWDICtx->pfncRspCB;
19734
19735 /*-------------------------------------------------------------------------
19736 Extract response and send it to UMAC
19737 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019738 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
19739 {
19740 wpalMemoryCopy( &halEnterUapsdRsp,
19741 pEventData->pEventData,
19742 sizeof(halEnterUapsdRsp));
Jeff Johnson295189b2012-06-20 16:38:30 -070019743
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019744 wdiEnterUapsdRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halEnterUapsdRsp.status);
19745 wdiEnterUapsdRspParams.bssIdx = halEnterUapsdRsp.bssIdx;
19746 }
19747 else
19748 {
19749 halStatus = *((eHalStatus*)pEventData->pEventData);
19750 wdiEnterUapsdRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
19751 }
19752
19753 if(WDI_STATUS_SUCCESS == wdiEnterUapsdRspParams.wdiStatus)
Jeff Johnson295189b2012-06-20 16:38:30 -070019754 {
19755 // Set the DPU routing flag to the FW WQ, all the TX frames would be now pushed
19756 // from DPU to the FW-WQ (5) in UAPSD. FW would be in data path, monitoring
19757 // the traffic to decide when to suspend the trigger frames when there is no traffic
19758 // activity on the trigger enabled ACs
19759 pWDICtx->ucDpuRF = BMUWQ_FW_DPU_TX;
19760
19761#ifdef WLAN_PERF
19762 // Increment the BD signature to refresh the fast path BD utilization
19763 pWDICtx->uBdSigSerialNum++;
19764#endif
19765 }
19766
19767 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019768 wdiEnterUapsdRspCb( &wdiEnterUapsdRspParams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070019769
Jeff Johnsone7245742012-09-05 17:12:55 -070019770 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019771}/*WDI_ProcessEnterUapsdRsp*/
19772
19773/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019774 @brief Process Exit UAPSD Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070019775 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019776
19777 @param pWDICtx: pointer to the WLAN DAL context
19778 pEventData: pointer to the event information structure
19779
Jeff Johnson295189b2012-06-20 16:38:30 -070019780 @see
19781 @return Result of the function call
19782*/
19783WDI_Status
19784WDI_ProcessExitUapsdRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019785(
Jeff Johnson295189b2012-06-20 16:38:30 -070019786 WDI_ControlBlockType* pWDICtx,
19787 WDI_EventInfoType* pEventData
19788)
19789{
Jeff Johnson295189b2012-06-20 16:38:30 -070019790 eHalStatus halStatus;
19791 WDI_ExitUapsdRspCb wdiExitUapsdRspCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019792 tHalExitUapsdRspParams halExitUapsdRsp;
19793 WDI_ExitUapsdRspParamsType wdiExitUapsdRspParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070019794 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19795
19796 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019797 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019798 -------------------------------------------------------------------------*/
19799 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19800 ( NULL == pEventData->pEventData))
19801 {
19802 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019803 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019804 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019805 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019806 }
19807
19808 wdiExitUapsdRspCb = (WDI_ExitUapsdRspCb)pWDICtx->pfncRspCB;
19809
19810 /*-------------------------------------------------------------------------
19811 Extract response and send it to UMAC
19812 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019813 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
19814 {
19815 wpalMemoryCopy( &halExitUapsdRsp,
19816 pEventData->pEventData,
19817 sizeof(halExitUapsdRsp));
19818
19819 wdiExitUapsdRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halExitUapsdRsp.status);
19820 wdiExitUapsdRspParams.bssIdx = halExitUapsdRsp.bssIdx;
19821 }
19822 else
19823 {
19824 halStatus = *((eHalStatus*)pEventData->pEventData);
19825 wdiExitUapsdRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
19826 }
Jeff Johnson295189b2012-06-20 16:38:30 -070019827 // Restore back the DPU routing flag in the TxBD, for DPU to push the TxBDs to BTQM
19828 // directly instead of the FW WQ.
19829 pWDICtx->ucDpuRF = BMUWQ_BTQM_TX_MGMT;
19830
19831#ifdef WLAN_PERF
19832 // Increment the BD signature to refresh the fast path BD utilization
19833 pWDICtx->uBdSigSerialNum++;
19834#endif
19835
19836 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019837 wdiExitUapsdRspCb( &wdiExitUapsdRspParams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070019838
Jeff Johnsone7245742012-09-05 17:12:55 -070019839 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019840}/*WDI_ProcessExitUapsdRsp*/
19841
19842/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019843 @brief Process set UAPSD params Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070019844 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019845
19846 @param pWDICtx: pointer to the WLAN DAL context
19847 pEventData: pointer to the event information structure
19848
Jeff Johnson295189b2012-06-20 16:38:30 -070019849 @see
19850 @return Result of the function call
19851*/
19852WDI_Status
19853WDI_ProcessSetUapsdAcParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019854(
Jeff Johnson295189b2012-06-20 16:38:30 -070019855 WDI_ControlBlockType* pWDICtx,
19856 WDI_EventInfoType* pEventData
19857)
19858{
19859 WDI_Status wdiStatus;
19860 eHalStatus halStatus;
19861 WDI_SetUapsdAcParamsCb wdiSetUapsdAcParamsCb;
19862 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19863
19864 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019865 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019866 -------------------------------------------------------------------------*/
19867 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19868 ( NULL == pEventData->pEventData))
19869 {
19870 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019871 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019872 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019873 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019874 }
19875
19876 wdiSetUapsdAcParamsCb = (WDI_SetUapsdAcParamsCb)pWDICtx->pfncRspCB;
19877
19878 /*-------------------------------------------------------------------------
19879 Extract response and send it to UMAC
19880 -------------------------------------------------------------------------*/
19881 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070019882 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019883
19884 /*Notify UMAC*/
19885 wdiSetUapsdAcParamsCb( wdiStatus, pWDICtx->pRspCBUserData);
19886
Jeff Johnsone7245742012-09-05 17:12:55 -070019887 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019888}/*WDI_ProcessSetUapsdAcParamsRsp*/
19889
19890/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019891 @brief Process update UAPSD params Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070019892 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019893
19894 @param pWDICtx: pointer to the WLAN DAL context
19895 pEventData: pointer to the event information structure
19896
Jeff Johnson295189b2012-06-20 16:38:30 -070019897 @see
19898 @return Result of the function call
19899*/
19900WDI_Status
19901WDI_ProcessUpdateUapsdParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019902(
Jeff Johnson295189b2012-06-20 16:38:30 -070019903 WDI_ControlBlockType* pWDICtx,
19904 WDI_EventInfoType* pEventData
19905)
19906{
19907 WDI_Status wdiStatus;
19908 eHalStatus halStatus;
19909 WDI_UpdateUapsdParamsCb wdiUpdateUapsdParamsCb;
19910 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19911
19912 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019913 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019914 -------------------------------------------------------------------------*/
19915 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19916 ( NULL == pEventData->pEventData))
19917 {
19918 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019919 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019920 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019921 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019922 }
19923
19924 wdiUpdateUapsdParamsCb = (WDI_UpdateUapsdParamsCb)pWDICtx->pfncRspCB;
19925
19926 /*-------------------------------------------------------------------------
19927 Extract response and send it to UMAC
19928 -------------------------------------------------------------------------*/
19929 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070019930 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019931
19932 /*Notify UMAC*/
19933 wdiUpdateUapsdParamsCb( wdiStatus, pWDICtx->pRspCBUserData);
19934
Jeff Johnsone7245742012-09-05 17:12:55 -070019935 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019936}/*WDI_ProcessUpdateUapsdParamsRsp*/
19937
19938/**
19939 @brief Process Configure RXP filter Rsp function (called when a
19940 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019941
19942 @param pWDICtx: pointer to the WLAN DAL context
19943 pEventData: pointer to the event information structure
19944
Jeff Johnson295189b2012-06-20 16:38:30 -070019945 @see
19946 @return Result of the function call
19947*/
19948WDI_Status
19949WDI_ProcessConfigureRxpFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019950(
Jeff Johnson295189b2012-06-20 16:38:30 -070019951 WDI_ControlBlockType* pWDICtx,
19952 WDI_EventInfoType* pEventData
19953)
19954{
19955 WDI_Status wdiStatus;
19956 eHalStatus halStatus;
19957 WDI_ConfigureRxpFilterCb wdiConfigureRxpFilterCb;
19958 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19959
19960 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019961 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019962 -------------------------------------------------------------------------*/
19963 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19964 ( NULL == pEventData->pEventData))
19965 {
19966 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019967 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019968 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019969 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019970 }
19971
19972 wdiConfigureRxpFilterCb = (WDI_ConfigureRxpFilterCb)pWDICtx->pfncRspCB;
19973
19974 /*-------------------------------------------------------------------------
19975 Extract response and send it to UMAC
19976 -------------------------------------------------------------------------*/
19977 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070019978 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019979
19980 /*Notify UMAC*/
19981 wdiConfigureRxpFilterCb( wdiStatus, pWDICtx->pRspCBUserData);
19982
Jeff Johnsone7245742012-09-05 17:12:55 -070019983 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019984}/*WDI_ProcessConfigureRxpFilterRsp*/
19985
19986/**
19987 @brief Process Set beacon filter Rsp function (called when a
19988 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019989
19990 @param pWDICtx: pointer to the WLAN DAL context
19991 pEventData: pointer to the event information structure
19992
Jeff Johnson295189b2012-06-20 16:38:30 -070019993 @see
19994 @return Result of the function call
19995*/
19996WDI_Status
19997WDI_ProcessSetBeaconFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019998(
Jeff Johnson295189b2012-06-20 16:38:30 -070019999 WDI_ControlBlockType* pWDICtx,
20000 WDI_EventInfoType* pEventData
20001)
20002{
20003 WDI_Status wdiStatus;
20004 eHalStatus halStatus;
20005 WDI_SetBeaconFilterCb wdiBeaconFilterCb;
20006 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20007
20008 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020009 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020010 -------------------------------------------------------------------------*/
20011 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20012 ( NULL == pEventData->pEventData))
20013 {
20014 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020015 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020016 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020017 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020018 }
20019
20020 wdiBeaconFilterCb = (WDI_SetBeaconFilterCb)pWDICtx->pfncRspCB;
20021
20022 /*-------------------------------------------------------------------------
20023 Extract response and send it to UMAC
20024 -------------------------------------------------------------------------*/
20025 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070020026 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070020027
20028 /*Notify UMAC*/
20029 wdiBeaconFilterCb( wdiStatus, pWDICtx->pRspCBUserData);
20030
Jeff Johnsone7245742012-09-05 17:12:55 -070020031 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020032}/*WDI_ProcessSetBeaconFilterRsp*/
20033
20034/**
20035 @brief Process remove beacon filter Rsp function (called when a
20036 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020037
20038 @param pWDICtx: pointer to the WLAN DAL context
20039 pEventData: pointer to the event information structure
20040
Jeff Johnson295189b2012-06-20 16:38:30 -070020041 @see
20042 @return Result of the function call
20043*/
20044WDI_Status
20045WDI_ProcessRemBeaconFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020046(
Jeff Johnson295189b2012-06-20 16:38:30 -070020047 WDI_ControlBlockType* pWDICtx,
20048 WDI_EventInfoType* pEventData
20049)
20050{
20051 WDI_Status wdiStatus;
20052 eHalStatus halStatus;
20053 WDI_RemBeaconFilterCb wdiBeaconFilterCb;
20054 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20055
20056 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020057 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020058 -------------------------------------------------------------------------*/
20059 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20060 ( NULL == pEventData->pEventData))
20061 {
20062 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020063 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020064 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020065 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020066 }
20067
20068 wdiBeaconFilterCb = (WDI_RemBeaconFilterCb)pWDICtx->pfncRspCB;
20069
20070 /*-------------------------------------------------------------------------
20071 Extract response and send it to UMAC
20072 -------------------------------------------------------------------------*/
20073 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070020074 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070020075
20076 /*Notify UMAC*/
20077 wdiBeaconFilterCb( wdiStatus, pWDICtx->pRspCBUserData);
20078
Jeff Johnsone7245742012-09-05 17:12:55 -070020079 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020080}/*WDI_ProcessRemBeaconFilterRsp*/
20081
20082/**
20083 @brief Process set RSSI thresholds Rsp function (called when a
20084 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020085
20086 @param pWDICtx: pointer to the WLAN DAL context
20087 pEventData: pointer to the event information structure
20088
Jeff Johnson295189b2012-06-20 16:38:30 -070020089 @see
20090 @return Result of the function call
20091*/
20092WDI_Status
20093WDI_ProcessSetRSSIThresoldsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020094(
Jeff Johnson295189b2012-06-20 16:38:30 -070020095 WDI_ControlBlockType* pWDICtx,
20096 WDI_EventInfoType* pEventData
20097)
20098{
20099 WDI_Status wdiStatus;
20100 eHalStatus halStatus;
20101 WDI_SetRSSIThresholdsCb wdiRSSIThresholdsCb;
20102 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20103
20104 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020105 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020106 -------------------------------------------------------------------------*/
20107 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20108 ( NULL == pEventData->pEventData))
20109 {
20110 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020111 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020112 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020113 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020114 }
20115
20116 wdiRSSIThresholdsCb = (WDI_SetRSSIThresholdsCb)pWDICtx->pfncRspCB;
20117
20118 /*-------------------------------------------------------------------------
20119 Extract response and send it to UMAC
20120 -------------------------------------------------------------------------*/
20121 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070020122 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070020123
20124 /*Notify UMAC*/
20125 wdiRSSIThresholdsCb( wdiStatus, pWDICtx->pRspCBUserData);
20126
Jeff Johnsone7245742012-09-05 17:12:55 -070020127 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020128}/*WDI_ProcessSetRSSIThresoldsRsp*/
20129
20130/**
20131 @brief Process host offload Rsp function (called when a
20132 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020133
20134 @param pWDICtx: pointer to the WLAN DAL context
20135 pEventData: pointer to the event information structure
20136
Jeff Johnson295189b2012-06-20 16:38:30 -070020137 @see
20138 @return Result of the function call
20139*/
20140WDI_Status
20141WDI_ProcessHostOffloadRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020142(
Jeff Johnson295189b2012-06-20 16:38:30 -070020143 WDI_ControlBlockType* pWDICtx,
20144 WDI_EventInfoType* pEventData
20145)
20146{
20147 WDI_Status wdiStatus;
20148 eHalStatus halStatus;
20149 WDI_HostOffloadCb wdiHostOffloadCb;
20150 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20151
20152 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020153 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020154 -------------------------------------------------------------------------*/
20155 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20156 ( NULL == pEventData->pEventData))
20157 {
20158 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020159 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020160 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020161 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020162 }
20163
20164 wdiHostOffloadCb = (WDI_HostOffloadCb)pWDICtx->pfncRspCB;
20165
20166 /*-------------------------------------------------------------------------
20167 Extract response and send it to UMAC
20168 -------------------------------------------------------------------------*/
20169 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070020170 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070020171
20172 /*Notify UMAC*/
20173 wdiHostOffloadCb( wdiStatus, pWDICtx->pRspCBUserData);
20174
Jeff Johnsone7245742012-09-05 17:12:55 -070020175 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020176}/*WDI_ProcessHostOffloadRsp*/
20177
20178/**
20179 @brief Process keep alive Rsp function (called when a
20180 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020181
20182 @param pWDICtx: pointer to the WLAN DAL context
20183 pEventData: pointer to the event information structure
20184
Jeff Johnson295189b2012-06-20 16:38:30 -070020185 @see
20186 @return Result of the function call
20187*/
20188WDI_Status
20189WDI_ProcessKeepAliveRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020190(
Jeff Johnson295189b2012-06-20 16:38:30 -070020191 WDI_ControlBlockType* pWDICtx,
20192 WDI_EventInfoType* pEventData
20193)
20194{
20195 WDI_Status wdiStatus;
20196 eHalStatus halStatus;
20197 WDI_KeepAliveCb wdiKeepAliveCb;
20198 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20199 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
20200 "Received WDI_ProcessKeepAliveRsp Callback from HAL");
20201
20202
20203 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020204 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020205 -------------------------------------------------------------------------*/
20206 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20207 ( NULL == pEventData->pEventData))
20208 {
20209 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020210 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020211 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020212 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020213 }
20214
Jeff Johnsone7245742012-09-05 17:12:55 -070020215 wdiKeepAliveCb = (WDI_KeepAliveCb)pWDICtx->pfncRspCB;
20216
Jeff Johnson295189b2012-06-20 16:38:30 -070020217 /*-------------------------------------------------------------------------
20218 Extract response and send it to UMAC
20219 -------------------------------------------------------------------------*/
20220 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070020221 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070020222
20223 /*Notify UMAC*/
20224 wdiKeepAliveCb( wdiStatus, pWDICtx->pRspCBUserData);
20225
Jeff Johnsone7245742012-09-05 17:12:55 -070020226 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020227}/*WDI_ProcessKeepAliveRsp*/
20228
20229/**
20230 @brief Process wowl add ptrn Rsp function (called when a
20231 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020232
20233 @param pWDICtx: pointer to the WLAN DAL context
20234 pEventData: pointer to the event information structure
20235
Jeff Johnson295189b2012-06-20 16:38:30 -070020236 @see
20237 @return Result of the function call
20238*/
20239WDI_Status
20240WDI_ProcessWowlAddBcPtrnRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020241(
Jeff Johnson295189b2012-06-20 16:38:30 -070020242 WDI_ControlBlockType* pWDICtx,
20243 WDI_EventInfoType* pEventData
20244)
20245{
Jeff Johnson295189b2012-06-20 16:38:30 -070020246 eHalStatus halStatus;
20247 WDI_WowlAddBcPtrnCb wdiWowlAddBcPtrnCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020248 tHalAddWowlBcastPtrnRspParams halAddWowlBcastPtrRsp;
20249 WDI_WowlAddBcPtrnRspParamsType wdiWowlAddBcPtrRsp;
20250
Jeff Johnson295189b2012-06-20 16:38:30 -070020251 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20252
20253 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020254 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020255 -------------------------------------------------------------------------*/
20256 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20257 ( NULL == pEventData->pEventData))
20258 {
20259 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020260 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020261 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020262 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020263 }
20264
20265 wdiWowlAddBcPtrnCb = (WDI_WowlAddBcPtrnCb)pWDICtx->pfncRspCB;
20266
20267 /*-------------------------------------------------------------------------
20268 Extract response and send it to UMAC
20269 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020270 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
20271 {
20272 wpalMemoryCopy( &halAddWowlBcastPtrRsp,
20273 pEventData->pEventData,
20274 sizeof(halAddWowlBcastPtrRsp));
20275
20276 wdiWowlAddBcPtrRsp.wdiStatus =
20277 WDI_HAL_2_WDI_STATUS(halAddWowlBcastPtrRsp.status);
20278 }
20279 else
20280 {
20281 halStatus = *((eHalStatus*)pEventData->pEventData);
20282 wdiWowlAddBcPtrRsp.wdiStatus =
20283 WDI_HAL_2_WDI_STATUS(halStatus);
20284 }
Jeff Johnson295189b2012-06-20 16:38:30 -070020285
20286 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020287 wdiWowlAddBcPtrnCb( &wdiWowlAddBcPtrRsp, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070020288
Jeff Johnsone7245742012-09-05 17:12:55 -070020289 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020290}/*WDI_ProcessWowlAddBcPtrnRsp*/
20291
20292/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020293 @brief Process wowl delete ptrn Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070020294 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020295
20296 @param pWDICtx: pointer to the WLAN DAL context
20297 pEventData: pointer to the event information structure
20298
Jeff Johnson295189b2012-06-20 16:38:30 -070020299 @see
20300 @return Result of the function call
20301*/
20302WDI_Status
20303WDI_ProcessWowlDelBcPtrnRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020304(
Jeff Johnson295189b2012-06-20 16:38:30 -070020305 WDI_ControlBlockType* pWDICtx,
20306 WDI_EventInfoType* pEventData
20307)
20308{
Jeff Johnson295189b2012-06-20 16:38:30 -070020309 eHalStatus halStatus;
20310 WDI_WowlDelBcPtrnCb wdiWowlDelBcPtrnCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020311 tHalDelWowlBcastPtrnRspParams halDelWowlBcastPtrRsp;
20312 WDI_WowlDelBcPtrnRspParamsType wdiWowlDelBcstPtrRsp;
Jeff Johnson295189b2012-06-20 16:38:30 -070020313 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20314
20315 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020316 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020317 -------------------------------------------------------------------------*/
20318 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20319 ( NULL == pEventData->pEventData))
20320 {
20321 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020322 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020323 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020324 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020325 }
20326
20327 wdiWowlDelBcPtrnCb = (WDI_WowlDelBcPtrnCb)pWDICtx->pfncRspCB;
20328
20329 /*-------------------------------------------------------------------------
20330 Extract response and send it to UMAC
20331 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020332 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
20333 {
20334 wpalMemoryCopy( &halDelWowlBcastPtrRsp,
20335 pEventData->pEventData,
20336 sizeof(halDelWowlBcastPtrRsp));
Jeff Johnson295189b2012-06-20 16:38:30 -070020337
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020338 wdiWowlDelBcstPtrRsp.wdiStatus =
20339 WDI_HAL_2_WDI_STATUS(halDelWowlBcastPtrRsp.status);
20340 }
20341 else
20342 {
20343 halStatus = *((eHalStatus*)pEventData->pEventData);
20344 wdiWowlDelBcstPtrRsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
20345 }
Jeff Johnson295189b2012-06-20 16:38:30 -070020346 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020347 wdiWowlDelBcPtrnCb( &wdiWowlDelBcstPtrRsp, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070020348
Jeff Johnsone7245742012-09-05 17:12:55 -070020349 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020350}/*WDI_ProcessWowlDelBcPtrnRsp*/
20351
20352/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020353 @brief Process wowl enter Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070020354 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020355
20356 @param pWDICtx: pointer to the WLAN DAL context
20357 pEventData: pointer to the event information structure
20358
Jeff Johnson295189b2012-06-20 16:38:30 -070020359 @see
20360 @return Result of the function call
20361*/
20362WDI_Status
20363WDI_ProcessWowlEnterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020364(
Jeff Johnson295189b2012-06-20 16:38:30 -070020365 WDI_ControlBlockType* pWDICtx,
20366 WDI_EventInfoType* pEventData
20367)
20368{
Jeff Johnson295189b2012-06-20 16:38:30 -070020369 eHalStatus halStatus;
20370 WDI_WowlEnterReqCb wdiWowlEnterCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020371 WDI_WowlEnterRspParamsType wdiwowlEnterRsp;
20372 tHalEnterWowlRspParams halEnterWowlRspParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070020373 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20374
20375 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020376 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020377 -------------------------------------------------------------------------*/
20378 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20379 ( NULL == pEventData->pEventData))
20380 {
20381 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020382 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020383 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020384 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020385 }
20386
20387 wdiWowlEnterCb = (WDI_WowlEnterReqCb)pWDICtx->pfncRspCB;
20388
20389 /*-------------------------------------------------------------------------
20390 Extract response and send it to UMAC
20391 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020392 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
20393 {
20394 wpalMemoryCopy( &halEnterWowlRspParams,
20395 (wpt_uint8*)pEventData->pEventData,
20396 sizeof(halEnterWowlRspParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070020397
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020398 wdiwowlEnterRsp.bssIdx = halEnterWowlRspParams.bssIdx;
20399 wdiwowlEnterRsp.status =
20400 WDI_HAL_2_WDI_STATUS(halEnterWowlRspParams.status);
20401 }
20402 else
20403 {
20404 halStatus = *((eHalStatus*)pEventData->pEventData);
20405 wdiwowlEnterRsp.status = WDI_HAL_2_WDI_STATUS(halStatus);
20406 }
Jeff Johnson295189b2012-06-20 16:38:30 -070020407 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020408 wdiWowlEnterCb( &wdiwowlEnterRsp, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070020409
Jeff Johnsone7245742012-09-05 17:12:55 -070020410 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020411}/*WDI_ProcessWowlEnterRsp*/
20412
20413/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020414 @brief Process wowl exit Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070020415 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020416
20417 @param pWDICtx: pointer to the WLAN DAL context
20418 pEventData: pointer to the event information structure
20419
Jeff Johnson295189b2012-06-20 16:38:30 -070020420 @see
20421 @return Result of the function call
20422*/
20423WDI_Status
20424WDI_ProcessWowlExitRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020425(
Jeff Johnson295189b2012-06-20 16:38:30 -070020426 WDI_ControlBlockType* pWDICtx,
20427 WDI_EventInfoType* pEventData
20428)
20429{
Jeff Johnson295189b2012-06-20 16:38:30 -070020430 eHalStatus halStatus;
20431 WDI_WowlExitReqCb wdiWowlExitCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020432 tHalExitWowlRspParams halExitWowlRspParams;
20433 WDI_WowlExitRspParamsType wdiWowlExitRsp;
20434
Jeff Johnson295189b2012-06-20 16:38:30 -070020435 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20436
20437 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020438 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020439 -------------------------------------------------------------------------*/
20440 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20441 ( NULL == pEventData->pEventData))
20442 {
20443 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020444 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020445 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020446 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020447 }
20448
20449 wdiWowlExitCb = (WDI_WowlExitReqCb)pWDICtx->pfncRspCB;
20450
20451 /*-------------------------------------------------------------------------
20452 Extract response and send it to UMAC
20453 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020454 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
20455 {
20456 wpalMemoryCopy( &halExitWowlRspParams,
20457 pEventData->pEventData,
20458 sizeof(halExitWowlRspParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070020459
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020460 wdiWowlExitRsp.status = WDI_HAL_2_WDI_STATUS(halExitWowlRspParams.status);
20461 wdiWowlExitRsp.bssIdx = halExitWowlRspParams.bssIdx;
20462
20463 }
20464 else
20465 {
20466 halStatus = *((eHalStatus*)pEventData->pEventData);
20467 wdiWowlExitRsp.status = WDI_HAL_2_WDI_STATUS(halStatus);
20468 }
Jeff Johnson295189b2012-06-20 16:38:30 -070020469 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020470 wdiWowlExitCb( &wdiWowlExitRsp, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070020471
Jeff Johnsone7245742012-09-05 17:12:55 -070020472 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020473}/*WDI_ProcessWowlExitRsp*/
20474
20475/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020476 @brief Process Configure Apps CPU wakeup State Rsp function
Jeff Johnson295189b2012-06-20 16:38:30 -070020477 (called when a response is being received over the bus
20478 from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020479
20480 @param pWDICtx: pointer to the WLAN DAL context
20481 pEventData: pointer to the event information structure
20482
Jeff Johnson295189b2012-06-20 16:38:30 -070020483 @see
20484 @return Result of the function call
20485*/
20486WDI_Status
20487WDI_ProcessConfigureAppsCpuWakeupStateRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020488(
Jeff Johnson295189b2012-06-20 16:38:30 -070020489 WDI_ControlBlockType* pWDICtx,
20490 WDI_EventInfoType* pEventData
20491)
20492{
20493 WDI_Status wdiStatus;
20494 eHalStatus halStatus;
20495 WDI_ConfigureAppsCpuWakeupStateCb wdiConfigureAppsCpuWakeupStateCb;
20496 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20497
20498 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020499 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020500 -------------------------------------------------------------------------*/
20501 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20502 ( NULL == pEventData->pEventData))
20503 {
20504 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020505 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020506 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020507 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020508 }
20509
20510 wdiConfigureAppsCpuWakeupStateCb = (WDI_ConfigureAppsCpuWakeupStateCb)pWDICtx->pfncRspCB;
20511
20512 /*-------------------------------------------------------------------------
20513 Extract response and send it to UMAC
20514 -------------------------------------------------------------------------*/
20515 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070020516 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070020517
20518 /*Notify UMAC*/
20519 wdiConfigureAppsCpuWakeupStateCb( wdiStatus, pWDICtx->pRspCBUserData);
20520
Jeff Johnsone7245742012-09-05 17:12:55 -070020521 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020522}/*WDI_ProcessConfigureAppsCpuWakeupStateRsp*/
20523
20524
20525/**
20526 @brief Process Nv download(called when a response
20527 is being received over the bus from HAL,will check if the responce is )
Jeff Johnsone7245742012-09-05 17:12:55 -070020528
20529 @param pWDICtx: pointer to the WLAN DAL context
20530 pEventData: pointer to the event information structure
20531
Jeff Johnson295189b2012-06-20 16:38:30 -070020532 @see
20533 @return Result of the function call
20534*/
20535WDI_Status
20536WDI_ProcessNvDownloadRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020537(
Jeff Johnson295189b2012-06-20 16:38:30 -070020538 WDI_ControlBlockType* pWDICtx,
20539 WDI_EventInfoType* pEventData
20540)
20541{
20542
20543 WDI_NvDownloadRspCb wdiNvDownloadRspCb;
20544 tHalNvImgDownloadRspParams halNvDownloadRsp;
20545 WDI_NvDownloadRspInfoType wdiNvDownloadRsp;
20546
20547 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020548 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020549 -------------------------------------------------------------------------*/
20550 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20551 ( NULL == pEventData->pEventData))
20552 {
20553 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020554 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020555 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020556 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020557 }
20558
20559 /*-------------------------------------------------------------------------
20560 Extract response and send it to UMAC
20561 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020562 wpalMemoryCopy( &halNvDownloadRsp,
20563 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070020564 sizeof(halNvDownloadRsp));
20565
20566 wdiNvDownloadRsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halNvDownloadRsp.status);
20567
20568 if((wdiNvDownloadRsp.wdiStatus == WDI_STATUS_SUCCESS) &&
Jeff Johnsone7245742012-09-05 17:12:55 -070020569 (pWDICtx->wdiNvBlobInfo.usCurrentFragment !=
20570 pWDICtx->wdiNvBlobInfo.usTotalFragment ))
Jeff Johnson295189b2012-06-20 16:38:30 -070020571 {
20572 WDI_NvDownloadReq(&pWDICtx->wdiCachedNvDownloadReq,
Jeff Johnsone7245742012-09-05 17:12:55 -070020573 (WDI_NvDownloadRspCb)pWDICtx->pfncRspCB, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070020574 }
20575 else
20576 {
20577 /*Reset the Nv related global information in WDI context information */
20578 pWDICtx->wdiNvBlobInfo.usTotalFragment = 0;
20579 pWDICtx->wdiNvBlobInfo.usFragmentSize = 0;
20580 pWDICtx->wdiNvBlobInfo.usCurrentFragment = 0;
20581 /*call WDA callback function for last fragment */
20582 wdiNvDownloadRspCb = (WDI_NvDownloadRspCb)pWDICtx->pfncRspCB;
20583 wdiNvDownloadRspCb( &wdiNvDownloadRsp, pWDICtx->pRspCBUserData);
20584 }
20585
Jeff Johnsone7245742012-09-05 17:12:55 -070020586 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020587}
20588#ifdef WLAN_FEATURE_VOWIFI_11R
20589/**
20590 @brief Process Add TSpec Rsp function (called when a response
20591 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020592
20593 @param pWDICtx: pointer to the WLAN DAL context
20594 pEventData: pointer to the event information structure
20595
Jeff Johnson295189b2012-06-20 16:38:30 -070020596 @see
20597 @return Result of the function call
20598*/
20599WDI_Status
20600WDI_ProcessAggrAddTSpecRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020601(
Jeff Johnson295189b2012-06-20 16:38:30 -070020602 WDI_ControlBlockType* pWDICtx,
20603 WDI_EventInfoType* pEventData
20604)
20605{
20606 WDI_Status wdiStatus;
20607 tAggrAddTsRspParams aggrAddTsRsp;
20608 WDI_AggrAddTsRspCb wdiAggrAddTsRspCb;
20609 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20610
20611 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020612 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020613 -------------------------------------------------------------------------*/
20614 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20615 ( NULL == pEventData->pEventData))
20616 {
20617 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020618 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020619 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020620 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020621 }
20622
20623 wdiAggrAddTsRspCb = (WDI_AddTsRspCb)pWDICtx->pfncRspCB;
20624
20625 /*-------------------------------------------------------------------------
20626 Extract response and send it to UMAC
20627 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020628 wpalMemoryCopy( &aggrAddTsRsp,
20629 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070020630 sizeof(aggrAddTsRsp));
20631
20632 /* What is the difference between status0 and status1? */
Jeff Johnsone7245742012-09-05 17:12:55 -070020633 wdiStatus = WDI_HAL_2_WDI_STATUS(aggrAddTsRsp.status0);
Jeff Johnson295189b2012-06-20 16:38:30 -070020634
20635 /*Notify UMAC*/
20636 wdiAggrAddTsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
20637
Jeff Johnsone7245742012-09-05 17:12:55 -070020638 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020639}/*WDI_ProcessAddTSpecRsp*/
20640#endif /* WLAN_FEATURE_VOWIFI_11R */
20641
20642/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020643 @brief WDI_ProcessHostResumeRsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070020644 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020645
20646 @param pWDICtx: pointer to the WLAN DAL context
20647 pEventData: pointer to the event information structure
20648
Jeff Johnson295189b2012-06-20 16:38:30 -070020649 @see
20650 @return Result of the function call
20651*/
20652WDI_Status
20653WDI_ProcessHostResumeRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020654(
Jeff Johnson295189b2012-06-20 16:38:30 -070020655 WDI_ControlBlockType* pWDICtx,
20656 WDI_EventInfoType* pEventData
20657)
20658{
20659 WDI_SuspendResumeRspParamsType wdiResumeRspParams;
20660 WDI_HostResumeEventRspCb wdiHostResumeRspCb;
20661 tHalHostResumeRspParams hostResumeRspMsg;
20662 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20663
20664 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020665 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020666 -------------------------------------------------------------------------*/
20667 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20668 ( NULL == pEventData->pEventData))
20669 {
20670 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020671 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020672 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020673 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020674 }
20675
20676 wdiHostResumeRspCb = (WDI_HostResumeEventRspCb)pWDICtx->pfncRspCB;
20677
20678 /*-------------------------------------------------------------------------
20679 Extract response and send it to UMAC
20680 -------------------------------------------------------------------------*/
20681
Jeff Johnsone7245742012-09-05 17:12:55 -070020682 wpalMemoryCopy( &hostResumeRspMsg,
Jeff Johnson295189b2012-06-20 16:38:30 -070020683 (wpt_uint8*)pEventData->pEventData,
20684 sizeof(hostResumeRspMsg));
20685
Jeff Johnsone7245742012-09-05 17:12:55 -070020686 wdiResumeRspParams.wdiStatus =
20687 WDI_HAL_2_WDI_STATUS(hostResumeRspMsg.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070020688
20689 /*Notify UMAC*/
20690 wdiHostResumeRspCb(&wdiResumeRspParams, (void*) pWDICtx->pRspCBUserData);
20691
20692 return WDI_STATUS_SUCCESS;
20693}
20694
20695/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020696 @brief Process Set Tx PER Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070020697 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020698
20699 @param pWDICtx: pointer to the WLAN DAL context
20700 pEventData: pointer to the event information structure
20701
Jeff Johnson295189b2012-06-20 16:38:30 -070020702 @see
20703 @return Result of the function call
20704*/
20705WDI_Status
20706WDI_ProcessSetTxPerTrackingRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020707(
Jeff Johnson295189b2012-06-20 16:38:30 -070020708 WDI_ControlBlockType* pWDICtx,
20709 WDI_EventInfoType* pEventData
20710)
20711{
20712 WDI_Status wdiStatus;
20713 eHalStatus halStatus;
20714 WDI_SetTxPerTrackingRspCb pwdiSetTxPerTrackingRspCb;
20715 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20716
20717 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020718 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020719 -------------------------------------------------------------------------*/
20720 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20721 ( NULL == pEventData->pEventData))
20722 {
20723 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020724 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020725 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020726 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020727 }
Jeff Johnsone7245742012-09-05 17:12:55 -070020728
20729 pwdiSetTxPerTrackingRspCb = (WDI_SetTxPerTrackingRspCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070020730
20731 /*-------------------------------------------------------------------------
20732 Extract response and send it to UMAC
20733 -------------------------------------------------------------------------*/
20734 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070020735 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070020736
20737 /*Notify UMAC*/
20738 pwdiSetTxPerTrackingRspCb( wdiStatus, pWDICtx->pRspCBUserData);
20739
Jeff Johnsone7245742012-09-05 17:12:55 -070020740 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020741}/*WDI_ProcessSetTxPerTrackingRsp*/
20742
20743/*==========================================================================
20744 Indications from HAL
20745 ==========================================================================*/
20746/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020747 @brief Process Low RSSI Indication function (called when an
Jeff Johnson295189b2012-06-20 16:38:30 -070020748 indication of this kind is being received over the bus
20749 from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020750
20751 @param pWDICtx: pointer to the WLAN DAL context
20752 pEventData: pointer to the event information structure
20753
Jeff Johnson295189b2012-06-20 16:38:30 -070020754 @see
20755 @return Result of the function call
20756*/
20757WDI_Status
20758WDI_ProcessLowRSSIInd
Jeff Johnsone7245742012-09-05 17:12:55 -070020759(
Jeff Johnson295189b2012-06-20 16:38:30 -070020760 WDI_ControlBlockType* pWDICtx,
20761 WDI_EventInfoType* pEventData
20762)
20763{
20764 WDI_LowLevelIndType wdiInd;
20765 tHalRSSINotificationIndMsg halRSSINotificationIndMsg;
20766 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20767
20768 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020769 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020770 -------------------------------------------------------------------------*/
20771 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20772 ( NULL == pEventData->pEventData))
20773 {
20774 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020775 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020776 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020777 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020778 }
20779
20780 /*-------------------------------------------------------------------------
20781 Extract indication and send it to UMAC
20782 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020783 wpalMemoryCopy( (void *)&halRSSINotificationIndMsg.rssiNotificationParams,
20784 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070020785 sizeof(tHalRSSINotification));
20786
20787 /*Fill in the indication parameters*/
20788 wdiInd.wdiIndicationType = WDI_RSSI_NOTIFICATION_IND;
20789 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres1PosCross =
20790 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres1PosCross;
20791 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres1NegCross =
20792 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres1NegCross;
20793 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres2PosCross =
20794 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres2PosCross;
20795 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres2NegCross =
20796 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres2NegCross;
20797 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres3PosCross =
20798 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres3PosCross;
20799 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres3NegCross =
20800 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres3NegCross;
Srinivasdaaec712012-12-12 15:59:44 -080020801 wdiInd.wdiIndicationData.wdiLowRSSIInfo.avgRssi =
20802 halRSSINotificationIndMsg.rssiNotificationParams.avgRssi;
Jeff Johnson295189b2012-06-20 16:38:30 -070020803
ltimariub77f24b2013-01-24 18:54:33 -080020804 if ( pWDICtx->wdiLowLevelIndCB )
20805 {
20806 /*Notify UMAC of indication*/
20807 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
20808 }
Jeff Johnsone7245742012-09-05 17:12:55 -070020809
20810 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020811}/*WDI_ProcessLowRSSIInd*/
20812
20813
20814/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020815 @brief Process Missed Beacon Indication function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070020816 an indication of this kind is being received over the
20817 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020818
20819 @param pWDICtx: pointer to the WLAN DAL context
20820 pEventData: pointer to the event information structure
20821
Jeff Johnson295189b2012-06-20 16:38:30 -070020822 @see
20823 @return Result of the function call
20824*/
20825WDI_Status
20826WDI_ProcessMissedBeaconInd
Jeff Johnsone7245742012-09-05 17:12:55 -070020827(
Jeff Johnson295189b2012-06-20 16:38:30 -070020828 WDI_ControlBlockType* pWDICtx,
20829 WDI_EventInfoType* pEventData
20830)
20831{
20832 WDI_Status wdiStatus;
20833 eHalStatus halStatus;
20834 WDI_LowLevelIndType wdiInd;
Leela Venkata Kiran Kumar Reddy Chirala3ca17902013-02-27 19:50:05 -080020835 tpHalMissedBeaconIndParams halMissedBeaconIndParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070020836 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20837
20838 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020839 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020840 -------------------------------------------------------------------------*/
20841 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20842 ( NULL == pEventData->pEventData))
20843 {
20844 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020845 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020846 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020847 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020848 }
Leela Venkata Kiran Kumar Reddy Chirala3ca17902013-02-27 19:50:05 -080020849 halMissedBeaconIndParams = (tpHalMissedBeaconIndParams)pEventData->pEventData;
Jeff Johnson295189b2012-06-20 16:38:30 -070020850 /*-------------------------------------------------------------------------
20851 Extract indication and send it to UMAC
20852 -------------------------------------------------------------------------*/
20853 /*! TO DO: Parameters need to be unpacked according to HAL struct*/
20854 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070020855 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070020856
20857 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020858 wdiInd.wdiIndicationType = WDI_MISSED_BEACON_IND;
Leela Venkata Kiran Kumar Reddy Chirala3ca17902013-02-27 19:50:05 -080020859 wdiInd.wdiIndicationData.wdiMissedBeaconInd.bssIdx =
20860 halMissedBeaconIndParams->bssIdx;
ltimariub77f24b2013-01-24 18:54:33 -080020861 if ( pWDICtx->wdiLowLevelIndCB )
20862 {
20863 /*Notify UMAC*/
20864 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
20865 }
Jeff Johnsone7245742012-09-05 17:12:55 -070020866
20867 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020868}/*WDI_ProcessMissedBeaconInd*/
20869
20870
20871/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020872 @brief Process Unk Addr Frame Indication function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070020873 an indication of this kind is being received over the
20874 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020875
20876 @param pWDICtx: pointer to the WLAN DAL context
20877 pEventData: pointer to the event information structure
20878
Jeff Johnson295189b2012-06-20 16:38:30 -070020879 @see
20880 @return Result of the function call
20881*/
20882WDI_Status
20883WDI_ProcessUnkAddrFrameInd
Jeff Johnsone7245742012-09-05 17:12:55 -070020884(
Jeff Johnson295189b2012-06-20 16:38:30 -070020885 WDI_ControlBlockType* pWDICtx,
20886 WDI_EventInfoType* pEventData
20887)
20888{
20889 WDI_Status wdiStatus;
20890 eHalStatus halStatus;
20891 WDI_LowLevelIndType wdiInd;
20892 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20893
20894 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020895 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020896 -------------------------------------------------------------------------*/
20897 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20898 ( NULL == pEventData->pEventData))
20899 {
20900 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020901 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020902 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020903 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020904 }
20905
20906 /*-------------------------------------------------------------------------
20907 Extract indication and send it to UMAC
20908 -------------------------------------------------------------------------*/
20909 /*! TO DO: Parameters need to be unpacked according to HAL struct*/
20910 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070020911 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070020912
20913 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020914 wdiInd.wdiIndicationType = WDI_UNKNOWN_ADDR2_FRAME_RX_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070020915 /* ! TO DO - fill in from HAL struct:
20916 wdiInd.wdiIndicationData.wdiUnkAddr2FrmInfo*/
20917
ltimariub77f24b2013-01-24 18:54:33 -080020918 if ( pWDICtx->wdiLowLevelIndCB )
20919 {
20920 /*Notify UMAC*/
20921 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
20922 }
Jeff Johnsone7245742012-09-05 17:12:55 -070020923
20924 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020925}/*WDI_ProcessUnkAddrFrameInd*/
20926
20927
20928/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020929 @brief Process MIC Failure Indication function (called when an
Jeff Johnson295189b2012-06-20 16:38:30 -070020930 indication of this kind is being received over the bus
20931 from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020932
20933 @param pWDICtx: pointer to the WLAN DAL context
20934 pEventData: pointer to the event information structure
20935
Jeff Johnson295189b2012-06-20 16:38:30 -070020936 @see
20937 @return Result of the function call
20938*/
20939WDI_Status
20940WDI_ProcessMicFailureInd
Jeff Johnsone7245742012-09-05 17:12:55 -070020941(
Jeff Johnson295189b2012-06-20 16:38:30 -070020942 WDI_ControlBlockType* pWDICtx,
20943 WDI_EventInfoType* pEventData
20944)
20945{
20946 WDI_LowLevelIndType wdiInd;
20947 tpSirMicFailureInd pHalMicFailureInd;
20948
20949 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20950
20951 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020952 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020953 -------------------------------------------------------------------------*/
20954 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20955 ( NULL == pEventData->pEventData))
20956 {
20957 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020958 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020959 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020960 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020961 }
Jeff Johnsone7245742012-09-05 17:12:55 -070020962
Jeff Johnson295189b2012-06-20 16:38:30 -070020963 pHalMicFailureInd = (tpSirMicFailureInd)pEventData->pEventData;
20964 /*-------------------------------------------------------------------------
20965 Extract indication and send it to UMAC
20966 -------------------------------------------------------------------------*/
20967
20968 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020969 wdiInd.wdiIndicationType = WDI_MIC_FAILURE_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070020970 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.bssId,
20971 pHalMicFailureInd->bssId, WDI_MAC_ADDR_LEN);
20972 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.macSrcAddr,
20973 pHalMicFailureInd->info.srcMacAddr, WDI_MAC_ADDR_LEN);
20974 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.macTaAddr,
20975 pHalMicFailureInd->info.taMacAddr, WDI_MAC_ADDR_LEN);
20976 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.macDstAddr,
20977 pHalMicFailureInd->info.dstMacAddr, WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070020978 wdiInd.wdiIndicationData.wdiMICFailureInfo.ucMulticast =
Jeff Johnson295189b2012-06-20 16:38:30 -070020979 pHalMicFailureInd->info.multicast;
Jeff Johnsone7245742012-09-05 17:12:55 -070020980 wdiInd.wdiIndicationData.wdiMICFailureInfo.ucIV1 =
Jeff Johnson295189b2012-06-20 16:38:30 -070020981 pHalMicFailureInd->info.IV1;
Jeff Johnsone7245742012-09-05 17:12:55 -070020982 wdiInd.wdiIndicationData.wdiMICFailureInfo.keyId=
Jeff Johnson295189b2012-06-20 16:38:30 -070020983 pHalMicFailureInd->info.keyId;
20984 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.TSC,
20985 pHalMicFailureInd->info.TSC,WDI_CIPHER_SEQ_CTR_SIZE);
20986 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.macRxAddr,
20987 pHalMicFailureInd->info.rxMacAddr, WDI_MAC_ADDR_LEN);
ltimariub77f24b2013-01-24 18:54:33 -080020988
20989 if ( pWDICtx->wdiLowLevelIndCB )
20990 {
20991 /*Notify UMAC*/
20992 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
20993 }
Jeff Johnsone7245742012-09-05 17:12:55 -070020994
20995 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020996}/*WDI_ProcessMicFailureInd*/
20997
20998
20999/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021000 @brief Process Fatal Failure Indication function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070021001 an indication of this kind is being received over the
21002 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070021003
21004 @param pWDICtx: pointer to the WLAN DAL context
21005 pEventData: pointer to the event information structure
21006
Jeff Johnson295189b2012-06-20 16:38:30 -070021007 @see
21008 @return Result of the function call
21009*/
21010WDI_Status
21011WDI_ProcessFatalErrorInd
Jeff Johnsone7245742012-09-05 17:12:55 -070021012(
Jeff Johnson295189b2012-06-20 16:38:30 -070021013 WDI_ControlBlockType* pWDICtx,
21014 WDI_EventInfoType* pEventData
21015)
21016{
21017 WDI_Status wdiStatus;
21018 eHalStatus halStatus;
21019 WDI_LowLevelIndType wdiInd;
21020 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21021
21022 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021023 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021024 -------------------------------------------------------------------------*/
21025 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21026 ( NULL == pEventData->pEventData))
21027 {
21028 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021029 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021030 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021031 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021032 }
21033
21034 /*-------------------------------------------------------------------------
21035 Extract indication and send it to UMAC
21036 -------------------------------------------------------------------------*/
21037
21038 /*! TO DO: Parameters need to be unpacked according to HAL struct*/
21039 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070021040 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070021041
21042 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
21043 "Fatal failure received from device %d ", halStatus );
Jeff Johnsone7245742012-09-05 17:12:55 -070021044
Jeff Johnson295189b2012-06-20 16:38:30 -070021045 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021046 wdiInd.wdiIndicationType = WDI_FATAL_ERROR_IND;
21047 wdiInd.wdiIndicationData.usErrorCode = WDI_ERR_DEV_INTERNAL_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021048
ltimariub77f24b2013-01-24 18:54:33 -080021049 if ( pWDICtx->wdiLowLevelIndCB )
21050 {
21051 /*Notify UMAC*/
21052 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
21053 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021054
21055 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021056}/*WDI_ProcessFatalErrorInd*/
21057
21058/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021059 @brief Process Delete STA Indication function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070021060 an indication of this kind is being received over the
21061 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070021062
21063 @param pWDICtx: pointer to the WLAN DAL context
21064 pEventData: pointer to the event information structure
21065
Jeff Johnson295189b2012-06-20 16:38:30 -070021066 @see
21067 @return Result of the function call
21068*/
21069WDI_Status
21070WDI_ProcessDelSTAInd
Jeff Johnsone7245742012-09-05 17:12:55 -070021071(
Jeff Johnson295189b2012-06-20 16:38:30 -070021072 WDI_ControlBlockType* pWDICtx,
21073 WDI_EventInfoType* pEventData
21074)
21075{
21076 tDeleteStaContextParams halDelSTACtx;
21077 WDI_LowLevelIndType wdiInd;
21078 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21079
21080 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021081 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021082 -------------------------------------------------------------------------*/
21083 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21084 ( NULL == pEventData->pEventData))
21085 {
21086 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021087 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021088 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021089 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021090 }
21091
21092 /*-------------------------------------------------------------------------
21093 Extract indication and send it to UMAC
21094 -------------------------------------------------------------------------*/
21095
21096 /* Parameters need to be unpacked according to HAL struct*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021097 wpalMemoryCopy( &halDelSTACtx,
21098 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070021099 sizeof(halDelSTACtx));
21100
21101 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021102 wdiInd.wdiIndicationType = WDI_DEL_STA_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070021103
21104 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiDeleteSTAIndType.macADDR2,
21105 halDelSTACtx.addr2, WDI_MAC_ADDR_LEN);
21106 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiDeleteSTAIndType.macBSSID,
21107 halDelSTACtx.bssId, WDI_MAC_ADDR_LEN);
21108
Jeff Johnsone7245742012-09-05 17:12:55 -070021109 wdiInd.wdiIndicationData.wdiDeleteSTAIndType.usAssocId =
Jeff Johnson295189b2012-06-20 16:38:30 -070021110 halDelSTACtx.assocId;
Jeff Johnsone7245742012-09-05 17:12:55 -070021111 wdiInd.wdiIndicationData.wdiDeleteSTAIndType.ucSTAIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070021112 halDelSTACtx.staId;
Jeff Johnsone7245742012-09-05 17:12:55 -070021113 wdiInd.wdiIndicationData.wdiDeleteSTAIndType.wptReasonCode =
21114 halDelSTACtx.reasonCode;
Jeff Johnson295189b2012-06-20 16:38:30 -070021115
ltimariub77f24b2013-01-24 18:54:33 -080021116 if ( pWDICtx->wdiLowLevelIndCB )
21117 {
21118 /*Notify UMAC*/
21119 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
21120 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021121
21122 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021123}/*WDI_ProcessDelSTAInd*/
21124
21125/**
21126*@brief Process Coex Indication function (called when
21127 an indication of this kind is being received over the
21128 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070021129
21130 @param pWDICtx: pointer to the WLAN DAL context
21131 pEventData: pointer to the event information structure
21132
Jeff Johnson295189b2012-06-20 16:38:30 -070021133 @see
21134 @return Result of the function call
21135*/
21136WDI_Status
21137WDI_ProcessCoexInd
Jeff Johnsone7245742012-09-05 17:12:55 -070021138(
Jeff Johnson295189b2012-06-20 16:38:30 -070021139 WDI_ControlBlockType* pWDICtx,
21140 WDI_EventInfoType* pEventData
21141)
21142{
21143 WDI_LowLevelIndType wdiInd;
21144 tCoexIndMsg halCoexIndMsg;
21145 wpt_uint32 index;
21146 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21147
21148 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021149 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021150 -------------------------------------------------------------------------*/
21151 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21152 ( NULL == pEventData->pEventData ))
21153 {
21154 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021155 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021156 WDI_ASSERT( 0 );
Jeff Johnsone7245742012-09-05 17:12:55 -070021157 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021158 }
21159
21160 /*-------------------------------------------------------------------------
21161 Extract indication and send it to UMAC
21162 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021163 wpalMemoryCopy( &halCoexIndMsg.coexIndParams,
21164 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070021165 sizeof(halCoexIndMsg.coexIndParams) );
21166
21167 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021168 wdiInd.wdiIndicationType = WDI_COEX_IND;
21169 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndType = halCoexIndMsg.coexIndParams.coexIndType;
Jeff Johnson295189b2012-06-20 16:38:30 -070021170 for (index = 0; index < WDI_COEX_IND_DATA_SIZE; index++)
21171 {
Jeff Johnsone7245742012-09-05 17:12:55 -070021172 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[index] = halCoexIndMsg.coexIndParams.coexIndData[index];
Jeff Johnson295189b2012-06-20 16:38:30 -070021173 }
21174
21175 // DEBUG
21176 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
21177 "[COEX WDI] Coex Ind Type (%x) data (%x %x %x %x)",
Jeff Johnsone7245742012-09-05 17:12:55 -070021178 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndType,
21179 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[0],
21180 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[1],
21181 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[2],
21182 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[3] );
Jeff Johnson295189b2012-06-20 16:38:30 -070021183
ltimariub77f24b2013-01-24 18:54:33 -080021184 if ( pWDICtx->wdiLowLevelIndCB )
21185 {
21186 /*Notify UMAC*/
21187 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
21188 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021189
21190 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021191}/*WDI_ProcessCoexInd*/
21192
21193/**
21194*@brief Process Tx Complete Indication function (called when
21195 an indication of this kind is being received over the
21196 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070021197
21198 @param pWDICtx: pointer to the WLAN DAL context
21199 pEventData: pointer to the event information structure
21200
Jeff Johnson295189b2012-06-20 16:38:30 -070021201 @see
21202 @return Result of the function call
21203*/
21204WDI_Status
21205WDI_ProcessTxCompleteInd
Jeff Johnsone7245742012-09-05 17:12:55 -070021206(
Jeff Johnson295189b2012-06-20 16:38:30 -070021207 WDI_ControlBlockType* pWDICtx,
21208 WDI_EventInfoType* pEventData
21209)
21210{
21211 WDI_LowLevelIndType wdiInd;
21212 tTxComplIndMsg halTxComplIndMsg;
21213 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21214
21215 /*-------------------------------------------------------------------------
21216 Sanity check
21217 -------------------------------------------------------------------------*/
21218 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21219 ( NULL == pEventData->pEventData ))
21220 {
21221 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021222 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021223 WDI_ASSERT( 0 );
21224 return WDI_STATUS_E_FAILURE;
21225 }
21226
21227 /*-------------------------------------------------------------------------
21228 Extract indication and send it to UMAC
21229 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021230 wpalMemoryCopy( &halTxComplIndMsg.txComplParams,
21231 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070021232 sizeof(halTxComplIndMsg.txComplParams) );
21233
21234 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021235 wdiInd.wdiIndicationType = WDI_TX_COMPLETE_IND;
21236 wdiInd.wdiIndicationData.tx_complete_status
21237 = halTxComplIndMsg.txComplParams.status;
Jeff Johnson295189b2012-06-20 16:38:30 -070021238
ltimariub77f24b2013-01-24 18:54:33 -080021239 if ( pWDICtx->wdiLowLevelIndCB )
21240 {
21241 /*Notify UMAC*/
21242 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
21243 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021244
21245 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021246}/*WDI_ProcessTxCompleteInd*/
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053021247#ifdef FEATURE_WLAN_TDLS
21248/**
21249*@brief Process TDLS Indication function (called when
21250 an indication of this kind is being received over the
21251 bus from HAL)
Jeff Johnson295189b2012-06-20 16:38:30 -070021252
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053021253 @param pWDICtx: pointer to the WLAN DAL context
21254 pEventData: pointer to the event information structure
21255
21256 @see
21257 @return Result of the function call
21258*/
21259WDI_Status
21260WDI_ProcessTdlsInd
21261(
21262 WDI_ControlBlockType* pWDICtx,
21263 WDI_EventInfoType* pEventData
21264)
21265{
21266 WDI_LowLevelIndType wdiInd;
21267 tTdlsIndMsg halTdlsIndMsg;
21268 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21269
21270 /*-------------------------------------------------------------------------
21271 Sanity check
21272 -------------------------------------------------------------------------*/
21273 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21274 ( NULL == pEventData->pEventData ))
21275 {
21276 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
21277 "%s: Invalid parameters", __func__);
21278 WDI_ASSERT( 0 );
21279 return WDI_STATUS_E_FAILURE;
21280 }
21281
21282 /*-------------------------------------------------------------------------
21283 Extract indication and send it to UMAC
21284 -------------------------------------------------------------------------*/
21285 wpalMemoryCopy( &halTdlsIndMsg.tdlsIndParams,
21286 pEventData->pEventData,
21287 sizeof(halTdlsIndMsg.tdlsIndParams) );
21288
21289 /*Fill in the indication parameters*/
21290 wdiInd.wdiIndicationType = WDI_TDLS_IND;
21291
21292 wdiInd.wdiIndicationData.wdiTdlsIndInfo.status
21293 = halTdlsIndMsg.tdlsIndParams.status;
21294
21295 wdiInd.wdiIndicationData.wdiTdlsIndInfo.staIdx
21296 = halTdlsIndMsg.tdlsIndParams.staIdx;
21297
21298 wdiInd.wdiIndicationData.wdiTdlsIndInfo.reasonCode
21299 = halTdlsIndMsg.tdlsIndParams.reasonCode;
21300
Atul Mittalbb2aad02014-09-22 19:09:36 +053021301 wdiInd.wdiIndicationData.wdiTdlsIndInfo.assocId
21302 = halTdlsIndMsg.tdlsIndParams.assocId;
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053021303 /*Notify UMAC*/
21304 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
21305
21306 return WDI_STATUS_SUCCESS;
21307}/*WDI_ProcessTdlsInd*/
21308#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070021309/**
Viral Modid86bde22012-12-10 13:09:21 -080021310*@brief Process Noa Start Indication function (called when
21311 an indication of this kind is being received over the
21312 bus from HAL)
21313
21314 @param pWDICtx: pointer to the WLAN DAL context
21315 pEventData: pointer to the event information structure
21316
21317 @see
21318 @return Result of the function call
21319*/
21320WDI_Status
21321WDI_ProcessP2pNoaStartInd
21322(
21323 WDI_ControlBlockType* pWDICtx,
21324 WDI_EventInfoType* pEventData
21325)
21326{
21327 WDI_LowLevelIndType wdiInd;
21328 tNoaStartIndMsg halNoaStartIndMsg;
21329 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21330
21331 /*-------------------------------------------------------------------------
21332 Sanity check
21333 -------------------------------------------------------------------------*/
21334 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21335 ( NULL == pEventData->pEventData ))
21336 {
21337 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
21338 "%s: Invalid parameters", __func__);
21339 WDI_ASSERT( 0 );
21340 return WDI_STATUS_E_FAILURE;
21341 }
21342
21343 /*-------------------------------------------------------------------------
21344 Extract indication and send it to UMAC
21345 -------------------------------------------------------------------------*/
21346 wpalMemoryCopy( &halNoaStartIndMsg.noaStartIndParams,
21347 pEventData->pEventData,
21348 sizeof(halNoaStartIndMsg.noaStartIndParams) );
21349
21350 /*Fill in the indication parameters*/
21351 wdiInd.wdiIndicationType = WDI_P2P_NOA_START_IND;
21352
21353 wdiInd.wdiIndicationData.wdiP2pNoaStartInfo.status
21354 = halNoaStartIndMsg.noaStartIndParams.status;
21355
21356 wdiInd.wdiIndicationData.wdiP2pNoaStartInfo.bssIdx
21357 = halNoaStartIndMsg.noaStartIndParams.bssIdx;
21358
21359 /*Notify UMAC*/
21360 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
21361
21362 return WDI_STATUS_SUCCESS;
21363}/*WDI_ProcessNoaAttrInd*/
21364
21365/**
Jeff Johnson295189b2012-06-20 16:38:30 -070021366*@brief Process Noa Attr Indication function (called when
21367 an indication of this kind is being received over the
21368 bus from HAL)
21369
21370 @param pWDICtx: pointer to the WLAN DAL context
21371 pEventData: pointer to the event information structure
21372
21373 @see
21374 @return Result of the function call
21375*/
21376WDI_Status
21377WDI_ProcessP2pNoaAttrInd
21378(
21379 WDI_ControlBlockType* pWDICtx,
21380 WDI_EventInfoType* pEventData
21381)
21382{
21383 WDI_LowLevelIndType wdiInd;
21384 tNoaAttrIndMsg halNoaAttrIndMsg;
21385 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21386
21387 /*-------------------------------------------------------------------------
21388 Sanity check
21389 -------------------------------------------------------------------------*/
21390 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21391 ( NULL == pEventData->pEventData ))
21392 {
21393 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021394 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021395 WDI_ASSERT( 0 );
21396 return WDI_STATUS_E_FAILURE;
21397 }
21398
21399 /*-------------------------------------------------------------------------
21400 Extract indication and send it to UMAC
21401 -------------------------------------------------------------------------*/
21402 wpalMemoryCopy( &halNoaAttrIndMsg.noaAttrIndParams,
21403 pEventData->pEventData,
21404 sizeof(halNoaAttrIndMsg.noaAttrIndParams) );
21405
21406 /*Fill in the indication parameters*/
21407 wdiInd.wdiIndicationType = WDI_P2P_NOA_ATTR_IND;
Jeff Johnsone7245742012-09-05 17:12:55 -070021408
Jeff Johnson295189b2012-06-20 16:38:30 -070021409 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.status
21410 = halNoaAttrIndMsg.noaAttrIndParams.status;
Jeff Johnsone7245742012-09-05 17:12:55 -070021411
Jeff Johnson295189b2012-06-20 16:38:30 -070021412 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.ucIndex
21413 = halNoaAttrIndMsg.noaAttrIndParams.index;
21414 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.ucOppPsFlag
21415 = halNoaAttrIndMsg.noaAttrIndParams.oppPsFlag;
21416 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.usCtWin
21417 = halNoaAttrIndMsg.noaAttrIndParams.ctWin;
Jeff Johnsone7245742012-09-05 17:12:55 -070021418
Jeff Johnson295189b2012-06-20 16:38:30 -070021419 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.usNoa1IntervalCnt
21420 = halNoaAttrIndMsg.noaAttrIndParams.uNoa1IntervalCnt;
21421 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa1Duration
21422 = halNoaAttrIndMsg.noaAttrIndParams.uNoa1Duration;
21423 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa1Interval
21424 = halNoaAttrIndMsg.noaAttrIndParams.uNoa1Interval;
21425 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa1StartTime
21426 = halNoaAttrIndMsg.noaAttrIndParams.uNoa1StartTime;
Jeff Johnsone7245742012-09-05 17:12:55 -070021427
Jeff Johnson295189b2012-06-20 16:38:30 -070021428 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.usNoa2IntervalCnt
21429 = halNoaAttrIndMsg.noaAttrIndParams.uNoa2IntervalCnt;
21430 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa2Duration
21431 = halNoaAttrIndMsg.noaAttrIndParams.uNoa2Duration;
21432 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa2Interval
21433 = halNoaAttrIndMsg.noaAttrIndParams.uNoa2Interval;
21434 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa2StartTime
21435 = halNoaAttrIndMsg.noaAttrIndParams.uNoa2StartTime;
21436
ltimariub77f24b2013-01-24 18:54:33 -080021437 if ( pWDICtx->wdiLowLevelIndCB )
21438 {
21439 /*Notify UMAC*/
21440 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
21441 }
Jeff Johnson295189b2012-06-20 16:38:30 -070021442
21443 return WDI_STATUS_SUCCESS;
21444}/*WDI_ProcessNoaAttrInd*/
Jeff Johnson295189b2012-06-20 16:38:30 -070021445
21446/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021447 @brief Process Tx PER Hit Indication function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070021448 an indication of this kind is being received over the
21449 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070021450
21451 @param pWDICtx: pointer to the WLAN DAL context
21452 pEventData: pointer to the event information structure
21453
Jeff Johnson295189b2012-06-20 16:38:30 -070021454 @see
21455 @return Result of the function call
21456*/
21457WDI_Status
21458WDI_ProcessTxPerHitInd
Jeff Johnsone7245742012-09-05 17:12:55 -070021459(
Jeff Johnson295189b2012-06-20 16:38:30 -070021460 WDI_ControlBlockType* pWDICtx,
21461 WDI_EventInfoType* pEventData
21462)
21463{
21464 WDI_LowLevelIndType wdiInd;
21465 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Jeff Johnsone7245742012-09-05 17:12:55 -070021466
Jeff Johnson295189b2012-06-20 16:38:30 -070021467 /*-------------------------------------------------------------------------
21468 Extract indication and send it to UMAC
21469 -------------------------------------------------------------------------*/
21470 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021471 wdiInd.wdiIndicationType = WDI_TX_PER_HIT_IND;
21472
ltimariub77f24b2013-01-24 18:54:33 -080021473 if ( pWDICtx->wdiLowLevelIndCB )
21474 {
21475 /*Notify UMAC*/
21476 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
21477 }
Jeff Johnson295189b2012-06-20 16:38:30 -070021478
Jeff Johnsone7245742012-09-05 17:12:55 -070021479 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021480}/*WDI_ProcessTxPerHitInd*/
21481
Jeff Johnson295189b2012-06-20 16:38:30 -070021482/**
Yue Mab9c86f42013-08-14 15:59:08 -070021483 @brief Process Periodic Tx Pattern Fw Indication function
21484
21485 @param pWDICtx: pointer to the WLAN DAL context
21486 pEventData: pointer to the event information structure
21487
21488 @see
21489 @return Result of the function call
21490*/
21491WDI_Status
21492WDI_ProcessPeriodicTxPtrnFwInd
21493(
21494 WDI_ControlBlockType* pWDICtx,
21495 WDI_EventInfoType* pEventData
21496)
21497{
21498 WDI_LowLevelIndType wdiInd;
21499
21500 /*-------------------------------------------------------------------------
21501 Sanity check
21502 -------------------------------------------------------------------------*/
21503 if ((NULL == pWDICtx) || (NULL == pEventData) ||
21504 (NULL == pEventData->pEventData))
21505 {
21506 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
21507 "%s: Invalid parameters", __func__);
21508 WDI_ASSERT(0);
21509 return WDI_STATUS_E_FAILURE;
21510 }
21511
21512 /*-------------------------------------------------------------------------
21513 Extract indication and send it to UMAC
21514 -------------------------------------------------------------------------*/
21515 wpalMemoryCopy(&(wdiInd.wdiIndicationData.wdiPeriodicTxPtrnFwInd),
21516 (tHalPeriodicTxPtrnFwInd *)pEventData->pEventData,
21517 sizeof(tHalPeriodicTxPtrnFwInd));
21518
21519 if (pWDICtx->wdiLowLevelIndCB)
21520 {
21521 /*Notify UMAC*/
21522 pWDICtx->wdiLowLevelIndCB(&wdiInd, pWDICtx->pIndUserData);
21523 }
21524
21525 return WDI_STATUS_SUCCESS;
21526}
21527
21528/**
Jeff Johnson295189b2012-06-20 16:38:30 -070021529 @brief WDI_ProcessFTMCommandReq
21530 Process FTM Command, simply route to HAL
Jeff Johnsone7245742012-09-05 17:12:55 -070021531
21532 @param pWDICtx: pointer to the WLAN DAL context
21533 pEventData: pointer to the event information structure
21534
Jeff Johnson295189b2012-06-20 16:38:30 -070021535 @see
21536 @return Result of the function call
21537*/
21538WDI_Status
21539WDI_ProcessFTMCommandReq
Jeff Johnsone7245742012-09-05 17:12:55 -070021540(
Jeff Johnson295189b2012-06-20 16:38:30 -070021541 WDI_ControlBlockType* pWDICtx,
21542 WDI_EventInfoType* pEventData
21543)
21544{
21545 WDI_FTMCommandReqType *ftmCommandReq = NULL;
21546 wpt_uint8 *ftmCommandBuffer = NULL;
21547 wpt_uint16 dataOffset;
21548 wpt_uint16 bufferSize;
21549 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021550 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021551 -------------------------------------------------------------------------*/
21552 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21553 ( NULL == pEventData->pEventData))
21554
21555 {
21556 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021557 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021558 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021559 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021560 }
21561
21562 ftmCommandReq = (WDI_FTMCommandReqType *)pEventData->pEventData;
21563
21564 /* Get MSG Buffer */
21565 WDI_GetMessageBuffer(pWDICtx,
21566 WDI_FTM_CMD_REQ,
21567 ftmCommandReq->bodyLength,
21568 &ftmCommandBuffer,
21569 &dataOffset,
21570 &bufferSize);
21571
21572 wpalMemoryCopy(ftmCommandBuffer + dataOffset,
21573 ftmCommandReq->FTMCommandBody,
21574 ftmCommandReq->bodyLength);
21575
21576 /* Send MSG */
21577 return WDI_SendMsg(pWDICtx,
21578 ftmCommandBuffer,
21579 bufferSize,
21580 pEventData->pCBfnc,
21581 pEventData->pUserData,
21582 WDI_FTM_CMD_RESP);
21583}
21584
21585/**
21586 @brief WDI_ProcessFTMCommandRsp
21587 Process FTM Command Response from HAL, simply route to HDD FTM
Jeff Johnsone7245742012-09-05 17:12:55 -070021588
21589 @param pWDICtx: pointer to the WLAN DAL context
21590 pEventData: pointer to the event information structure
21591
Jeff Johnson295189b2012-06-20 16:38:30 -070021592 @see
21593 @return Result of the function call
21594*/
21595WDI_Status
21596WDI_ProcessFTMCommandRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070021597(
Jeff Johnson295189b2012-06-20 16:38:30 -070021598 WDI_ControlBlockType* pWDICtx,
21599 WDI_EventInfoType* pEventData
21600)
21601{
21602 WDI_FTMCommandRspCb ftmCMDRspCb;
21603 tProcessPttRspParams *ftmCMDRspData = NULL;
21604 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21605
21606 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021607 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021608 -------------------------------------------------------------------------*/
21609 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21610 ( NULL == pEventData->pEventData))
21611 {
21612 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021613 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021614 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021615 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021616 }
21617
21618 ftmCMDRspCb = (WDI_FTMCommandRspCb)pWDICtx->pfncRspCB;
21619
21620 ftmCMDRspData = (tProcessPttRspParams *)pEventData->pEventData;
21621
Jeff Johnsone7245742012-09-05 17:12:55 -070021622 wpalMemoryCopy((void *)pWDICtx->ucFTMCommandRspBuffer,
21623 (void *)&ftmCMDRspData->pttMsgBuffer,
Jeff Johnson295189b2012-06-20 16:38:30 -070021624 ftmCMDRspData->pttMsgBuffer.msgBodyLength);
21625
21626 /*Notify UMAC*/
21627 ftmCMDRspCb((void *)pWDICtx->ucFTMCommandRspBuffer, pWDICtx->pRspCBUserData);
21628
Jeff Johnsone7245742012-09-05 17:12:55 -070021629 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021630}
Jeff Johnson295189b2012-06-20 16:38:30 -070021631/**
21632 @brief WDI_ProcessHalDumpCmdReq
21633 Process hal dump Command, simply route to HAL
Jeff Johnsone7245742012-09-05 17:12:55 -070021634
21635 @param pWDICtx: pointer to the WLAN DAL context
21636 pEventData: pointer to the event information structure
21637
Jeff Johnson295189b2012-06-20 16:38:30 -070021638 @see
21639 @return Result of the function call
21640*/
21641WDI_Status
21642WDI_ProcessHALDumpCmdReq
Jeff Johnsone7245742012-09-05 17:12:55 -070021643(
Jeff Johnson295189b2012-06-20 16:38:30 -070021644 WDI_ControlBlockType* pWDICtx,
21645 WDI_EventInfoType* pEventData
21646)
21647{
21648 WDI_HALDumpCmdReqParamsType* pwdiHALDumpCmdParams = NULL;
21649 WDI_HALDumpCmdRspCb wdiHALDumpCmdRspCb = NULL;
21650 wpt_uint16 usDataOffset = 0;
21651 wpt_uint16 usSendSize = 0;
21652 tHalDumpCmdReqMsg halDumpCmdReqMsg;
Jeff Johnsone7245742012-09-05 17:12:55 -070021653 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070021654
21655 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021656 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021657 -------------------------------------------------------------------------*/
21658 if (( NULL == pEventData ) ||
21659 ( NULL == pEventData->pEventData) ||
21660 ( NULL == pEventData->pCBfnc ))
21661 {
21662 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021663 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021664 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021665 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021666 }
21667
21668 pwdiHALDumpCmdParams = (WDI_HALDumpCmdReqParamsType*)pEventData->pEventData;
21669 wdiHALDumpCmdRspCb = (WDI_HALDumpCmdRspCb)pEventData->pCBfnc;
21670
21671 /* Copying the HAL DUMP Command Information HAL Structure*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021672 halDumpCmdReqMsg.dumpCmdReqParams.argument1 =
Jeff Johnson295189b2012-06-20 16:38:30 -070021673 pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.command;
Jeff Johnsone7245742012-09-05 17:12:55 -070021674 halDumpCmdReqMsg.dumpCmdReqParams.argument2 =
Jeff Johnson295189b2012-06-20 16:38:30 -070021675 pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.argument1;
Jeff Johnsone7245742012-09-05 17:12:55 -070021676 halDumpCmdReqMsg.dumpCmdReqParams.argument3 =
Jeff Johnson295189b2012-06-20 16:38:30 -070021677 pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.argument2;
Jeff Johnsone7245742012-09-05 17:12:55 -070021678 halDumpCmdReqMsg.dumpCmdReqParams.argument4 =
Jeff Johnson295189b2012-06-20 16:38:30 -070021679 pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.argument3;
Jeff Johnsone7245742012-09-05 17:12:55 -070021680 halDumpCmdReqMsg.dumpCmdReqParams.argument5 =
Jeff Johnson295189b2012-06-20 16:38:30 -070021681 pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.argument4;
Jeff Johnsone7245742012-09-05 17:12:55 -070021682
Jeff Johnson295189b2012-06-20 16:38:30 -070021683 /*-----------------------------------------------------------------------
21684 Get message buffer
21685 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021686 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_HAL_DUMP_CMD_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070021687 sizeof(halDumpCmdReqMsg.dumpCmdReqParams),
21688 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070021689 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070021690 (usDataOffset + sizeof(halDumpCmdReqMsg.dumpCmdReqParams) )))
21691 {
21692 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080021693 "Unable to get send buffer in HAL Dump Command req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070021694 pEventData, pwdiHALDumpCmdParams, wdiHALDumpCmdRspCb);
21695 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021696 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021697 }
21698
Jeff Johnsone7245742012-09-05 17:12:55 -070021699 wpalMemoryCopy( pSendBuffer+usDataOffset,
21700 &halDumpCmdReqMsg.dumpCmdReqParams,
21701 sizeof(halDumpCmdReqMsg.dumpCmdReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070021702
21703 pWDICtx->wdiReqStatusCB = pwdiHALDumpCmdParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070021704 pWDICtx->pReqStatusUserData = pwdiHALDumpCmdParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070021705
21706 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021707 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070021708 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021709 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
21710 wdiHALDumpCmdRspCb, pEventData->pUserData,
21711 WDI_HAL_DUMP_CMD_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070021712}
21713
21714/**
21715 @brief WDI_ProcessHalDumpCmdRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070021716 Process hal Dump Command Response from HAL, simply route to HDD
21717
21718 @param pWDICtx: pointer to the WLAN DAL context
21719 pEventData: pointer to the event information structure
21720
Jeff Johnson295189b2012-06-20 16:38:30 -070021721 @see
21722 @return Result of the function call
21723*/
21724WDI_Status
21725WDI_ProcessHALDumpCmdRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070021726(
Jeff Johnson295189b2012-06-20 16:38:30 -070021727 WDI_ControlBlockType* pWDICtx,
21728 WDI_EventInfoType* pEventData
21729)
21730{
21731 WDI_HALDumpCmdRspCb wdiHALDumpCmdRspCb;
Gopichand Nakkalafab3fae2013-01-07 15:01:01 -080021732 tHalDumpCmdRspParams halDumpCmdRspParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070021733 WDI_HALDumpCmdRspParamsType wdiHALDumpCmdRsp;
21734
21735 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021736 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021737 -------------------------------------------------------------------------*/
21738 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21739 ( NULL == pEventData->pEventData))
21740 {
21741 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021742 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021743 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021744 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021745 }
21746
Jeff Johnsone7245742012-09-05 17:12:55 -070021747 wdiHALDumpCmdRspCb = (WDI_HALDumpCmdRspCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070021748
21749 /*Initialize the WDI Response structure */
21750 wdiHALDumpCmdRsp.usBufferLen = 0;
21751 wdiHALDumpCmdRsp.pBuffer = NULL;
21752
Gopichand Nakkalafab3fae2013-01-07 15:01:01 -080021753 wpalMemoryCopy( &halDumpCmdRspParams,
21754 pEventData->pEventData,
21755 sizeof(tHalDumpCmdRspParams));
Jeff Johnsone7245742012-09-05 17:12:55 -070021756
21757 wdiHALDumpCmdRsp.wdiStatus =
Gopichand Nakkalafab3fae2013-01-07 15:01:01 -080021758 WDI_HAL_2_WDI_STATUS(halDumpCmdRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070021759
21760 if (( wdiHALDumpCmdRsp.wdiStatus == WDI_STATUS_SUCCESS) &&
Gopichand Nakkalafab3fae2013-01-07 15:01:01 -080021761 (halDumpCmdRspParams.rspLength != 0))
Jeff Johnson295189b2012-06-20 16:38:30 -070021762 {
21763 /* Copy the response data */
Gopichand Nakkalafab3fae2013-01-07 15:01:01 -080021764 wdiHALDumpCmdRsp.usBufferLen = halDumpCmdRspParams.rspLength;
21765 wdiHALDumpCmdRsp.pBuffer = wpalMemoryAllocate(halDumpCmdRspParams.rspLength);
21766
21767 wpalMemoryCopy( wdiHALDumpCmdRsp.pBuffer,
21768 &halDumpCmdRspParams.rspBuffer,
Gopichand Nakkala089c2582013-04-04 15:40:10 +053021769 halDumpCmdRspParams.rspLength);
Jeff Johnson295189b2012-06-20 16:38:30 -070021770 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021771
Jeff Johnson295189b2012-06-20 16:38:30 -070021772 /*Notify UMAC*/
21773 wdiHALDumpCmdRspCb(&wdiHALDumpCmdRsp, pWDICtx->pRspCBUserData);
21774
21775 if(wdiHALDumpCmdRsp.pBuffer != NULL)
21776 {
21777 /* Free the allocated buffer */
21778 wpalMemoryFree(wdiHALDumpCmdRsp.pBuffer);
21779 }
21780 return WDI_STATUS_SUCCESS;
21781}
21782
21783/*==========================================================================
21784 CONTRL TRANSPORT INTERACTION
Jeff Johnsone7245742012-09-05 17:12:55 -070021785
Jeff Johnson295189b2012-06-20 16:38:30 -070021786 Callback function registered with the control transport - for receiving
Jeff Johnsone7245742012-09-05 17:12:55 -070021787 notifications and packets
Jeff Johnson295189b2012-06-20 16:38:30 -070021788==========================================================================*/
21789/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021790 @brief This callback is invoked by the control transport
Jeff Johnson295189b2012-06-20 16:38:30 -070021791 when it wishes to send up a notification like the ones
21792 mentioned above.
Jeff Johnsone7245742012-09-05 17:12:55 -070021793
Jeff Johnson295189b2012-06-20 16:38:30 -070021794 @param
Jeff Johnsone7245742012-09-05 17:12:55 -070021795
21796 wctsHandle: handle to the control transport service
Jeff Johnson295189b2012-06-20 16:38:30 -070021797 wctsEvent: the event being notified
Jeff Johnsone7245742012-09-05 17:12:55 -070021798 wctsNotifyCBData: the callback data of the user
21799
Jeff Johnson295189b2012-06-20 16:38:30 -070021800 @see WCTS_OpenTransport
Jeff Johnsone7245742012-09-05 17:12:55 -070021801
21802 @return None
Jeff Johnson295189b2012-06-20 16:38:30 -070021803*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021804void
Jeff Johnson295189b2012-06-20 16:38:30 -070021805WDI_NotifyMsgCTSCB
21806(
Jeff Johnsone7245742012-09-05 17:12:55 -070021807 WCTS_HandleType wctsHandle,
Jeff Johnson295189b2012-06-20 16:38:30 -070021808 WCTS_NotifyEventType wctsEvent,
21809 void* wctsNotifyCBData
21810)
21811{
Jeff Johnsone7245742012-09-05 17:12:55 -070021812 WDI_ControlBlockType* pWDICtx = (WDI_ControlBlockType*)wctsNotifyCBData;
Jeff Johnson295189b2012-06-20 16:38:30 -070021813 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21814
21815 if (NULL == pWDICtx )
21816 {
21817 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021818 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021819 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021820 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070021821 }
21822
21823 if (WDI_CONTROL_BLOCK_MAGIC != pWDICtx->magic)
21824 {
21825 /* callback presumably occurred after close */
21826 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021827 "%s: Invalid control block", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070021828 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070021829 }
21830
21831 if ( WCTS_EVENT_OPEN == wctsEvent )
21832 {
21833 /*Flag must be set atomically as it is checked from incoming request
21834 functions*/
21835 wpalMutexAcquire(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070021836 pWDICtx->bCTOpened = eWLAN_PAL_TRUE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021837
21838 /*Nothing to do - so try to dequeue any pending request that may have
21839 occurred while we were trying to establish this*/
21840 WDI_DequeuePendingReq(pWDICtx);
Jeff Johnsone7245742012-09-05 17:12:55 -070021841 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnson295189b2012-06-20 16:38:30 -070021842 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021843 else if ( WCTS_EVENT_CLOSE == wctsEvent )
Jeff Johnson295189b2012-06-20 16:38:30 -070021844 {
21845 /*Flag must be set atomically as it is checked from incoming request
21846 functions*/
21847 wpalMutexAcquire(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070021848 pWDICtx->bCTOpened = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021849
21850 /*No other request will be processed from now on - fail all*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021851 WDI_ClearPendingRequests(pWDICtx);
Jeff Johnson295189b2012-06-20 16:38:30 -070021852 wpalMutexRelease(&pWDICtx->wptMutex);
21853
21854 /*Notify that the Control Channel is closed */
21855 wpalEventSet(&pWDICtx->wctsActionEvent);
21856 }
21857
21858}/*WDI_NotifyMsgCTSCB*/
21859
21860
21861/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021862 @brief This callback is invoked by the control transport
Jeff Johnson295189b2012-06-20 16:38:30 -070021863 when it wishes to send up a packet received over the
21864 bus.
Jeff Johnsone7245742012-09-05 17:12:55 -070021865
Jeff Johnson295189b2012-06-20 16:38:30 -070021866 @param
Jeff Johnsone7245742012-09-05 17:12:55 -070021867
21868 wctsHandle: handle to the control transport service
Jeff Johnson295189b2012-06-20 16:38:30 -070021869 pMsg: the packet
21870 uLen: the packet length
Jeff Johnsone7245742012-09-05 17:12:55 -070021871 wctsRxMsgCBData: the callback data of the user
21872
Jeff Johnson295189b2012-06-20 16:38:30 -070021873 @see WCTS_OpenTransport
Jeff Johnsone7245742012-09-05 17:12:55 -070021874
21875 @return None
Jeff Johnson295189b2012-06-20 16:38:30 -070021876*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021877void
21878WDI_RXMsgCTSCB
Jeff Johnson295189b2012-06-20 16:38:30 -070021879(
Jeff Johnsone7245742012-09-05 17:12:55 -070021880 WCTS_HandleType wctsHandle,
Jeff Johnson295189b2012-06-20 16:38:30 -070021881 void* pMsg,
21882 wpt_uint32 uLen,
21883 void* wctsRxMsgCBData
21884)
21885{
Jeff Johnsone7245742012-09-05 17:12:55 -070021886 tHalMsgHeader *pHalMsgHeader;
21887 WDI_EventInfoType wdiEventData;
Jeff Johnson295189b2012-06-20 16:38:30 -070021888 WDI_ControlBlockType* pWDICtx = (WDI_ControlBlockType*)wctsRxMsgCBData;
21889 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
21890
21891 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021892 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021893 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021894 if ((NULL == pWDICtx ) || ( NULL == pMsg ) ||
Jeff Johnson295189b2012-06-20 16:38:30 -070021895 ( uLen < sizeof(tHalMsgHeader)))
21896 {
21897 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021898 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021899 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021900 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070021901 }
21902
21903 if (WDI_CONTROL_BLOCK_MAGIC != pWDICtx->magic)
21904 {
21905 /* callback presumably occurred after close */
21906 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021907 "%s: Invalid control block", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070021908 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070021909 }
21910
Jeff Johnsone7245742012-09-05 17:12:55 -070021911 /*The RX Callback is expected to be serialized in the proper control thread
Jeff Johnson295189b2012-06-20 16:38:30 -070021912 context - so no serialization is necessary here
21913 ! - revisit this assumption */
21914
21915 pHalMsgHeader = (tHalMsgHeader *)pMsg;
21916
21917 if ( uLen != pHalMsgHeader->msgLen )
21918 {
21919 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
21920 "Invalid packet received from HAL - catastrophic failure");
Jeff Johnsone7245742012-09-05 17:12:55 -070021921 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_INVALID_RSP_FMT);
Katya Nigamf02ad012014-05-05 16:12:49 +053021922 wpalWlanReload();
21923
Jeff Johnsone7245742012-09-05 17:12:55 -070021924 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070021925 }
21926
21927 wdiEventData.wdiResponse = HAL_2_WDI_RSP_TYPE( pHalMsgHeader->msgType );
21928
21929 /*The message itself starts after the header*/
21930 wdiEventData.pEventData = (wpt_uint8*)pMsg + sizeof(tHalMsgHeader);
21931 wdiEventData.uEventDataSize = pHalMsgHeader->msgLen - sizeof(tHalMsgHeader);
21932 wdiEventData.pCBfnc = gWDICb.pfncRspCB;
21933 wdiEventData.pUserData = gWDICb.pRspCBUserData;
21934
21935
21936 if ( wdiEventData.wdiResponse == pWDICtx->wdiExpectedResponse )
21937 {
21938 /*Stop the timer as the response was received */
21939 /*!UT - check for potential race conditions between stop and response */
21940 wpalTimerStop(&pWDICtx->wptResponseTimer);
21941 }
21942 /* Check if we receive a response message which is not expected */
21943 else if ( wdiEventData.wdiResponse < WDI_HAL_IND_MIN )
21944 {
21945 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
21946 "Received response %s (%d) when expecting %s (%d) - catastrophic failure",
21947 WDI_getRespMsgString(wdiEventData.wdiResponse),
Jeff Johnsone7245742012-09-05 17:12:55 -070021948 wdiEventData.wdiResponse,
Jeff Johnson295189b2012-06-20 16:38:30 -070021949 WDI_getRespMsgString(pWDICtx->wdiExpectedResponse),
21950 pWDICtx->wdiExpectedResponse);
Sameer Thalappil4bb20cb2013-11-15 14:50:51 -080021951
21952 if (gWDICb.bEnableSSR == false)
21953 {
21954 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
21955 "SSR is not enabled on WDI timeout");
21956 WDI_DetectedDeviceError(pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
21957 return;
21958 }
21959 wpalWcnssResetIntr();
21960 /* if this timer fires, it means Riva did not receive the FIQ */
21961 wpalTimerStart(&pWDICtx->ssrTimer, WDI_SSR_TIMEOUT);
21962
Jeff Johnson295189b2012-06-20 16:38:30 -070021963 return;
21964 }
21965
21966 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
21967 "Rx smth from HAL: %d", wdiEventData.wdiResponse);
21968
21969 /*Post response event to the state machine*/
21970 WDI_PostMainEvent(pWDICtx, WDI_RESPONSE_EVENT, &wdiEventData);
21971
21972}/*WDI_RXMsgCTSCB*/
21973
21974
21975/*========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070021976 Internal Helper Routines
Jeff Johnson295189b2012-06-20 16:38:30 -070021977========================================================================*/
21978
21979/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021980 @brief WDI_CleanCB - internal helper routine used to clean the
Jeff Johnson295189b2012-06-20 16:38:30 -070021981 WDI Main Control Block
Jeff Johnsone7245742012-09-05 17:12:55 -070021982
Jeff Johnson295189b2012-06-20 16:38:30 -070021983 @param pWDICtx - pointer to the control block
21984
21985 @return Result of the function call
21986*/
21987WPT_INLINE WDI_Status
21988WDI_CleanCB
21989(
21990 WDI_ControlBlockType* pWDICtx
21991)
21992{
21993 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
21994
21995 /*Clean the WDI Control Block*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021996 wpalMemoryZero( pWDICtx, sizeof(*pWDICtx));
Jeff Johnson295189b2012-06-20 16:38:30 -070021997
Jeff Johnsone7245742012-09-05 17:12:55 -070021998 pWDICtx->uGlobalState = WDI_MAX_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -070021999 pWDICtx->ucMaxBssids = WDI_MAX_SUPPORTED_BSS;
22000 pWDICtx->ucMaxStations = WDI_MAX_SUPPORTED_STAS;
22001
22002 WDI_ResetAssocSessions( pWDICtx );
22003
22004 return WDI_STATUS_SUCCESS;
22005}/*WDI_CleanCB*/
22006
22007
22008/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022009 @brief Process request helper function
Jeff Johnson295189b2012-06-20 16:38:30 -070022010
Jeff Johnsone7245742012-09-05 17:12:55 -070022011
22012 @param pWDICtx: pointer to the WLAN DAL context
22013 pEventData: pointer to the event information structure
22014
Jeff Johnson295189b2012-06-20 16:38:30 -070022015 @see
22016 @return Result of the function call
22017*/
22018WPT_INLINE WDI_Status
22019WDI_ProcessRequest
22020(
22021 WDI_ControlBlockType* pWDICtx,
22022 WDI_EventInfoType* pEventData
22023)
22024{
22025 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
22026
Jeff Johnsone7245742012-09-05 17:12:55 -070022027 /*!! Skip sanity check as this is called from the FSM functionss which
Jeff Johnson295189b2012-06-20 16:38:30 -070022028 already checked these pointers*/
22029
22030 if (( pEventData->wdiRequest < WDI_MAX_UMAC_IND ) &&
22031 ( NULL != pfnReqProcTbl[pEventData->wdiRequest] ))
Jeff Johnsone7245742012-09-05 17:12:55 -070022032 {
Jeff Johnson295189b2012-06-20 16:38:30 -070022033 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080022034 "Calling request processing function for req %s (%d) %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070022035 WDI_getReqMsgString(pEventData->wdiRequest),
22036 pEventData->wdiRequest, pfnReqProcTbl[pEventData->wdiRequest]);
22037 return pfnReqProcTbl[pEventData->wdiRequest](pWDICtx, pEventData);
22038 }
22039 else
22040 {
22041 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070022042 "Operation %d is not yet implemented ",
Jeff Johnson295189b2012-06-20 16:38:30 -070022043 pEventData->wdiRequest);
22044 return WDI_STATUS_E_NOT_IMPLEMENT;
22045 }
22046}/*WDI_ProcessRequest*/
22047
22048
22049/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022050 @brief Get message helper function - it allocates memory for a
Jeff Johnson295189b2012-06-20 16:38:30 -070022051 message that is to be sent to HAL accross the bus and
Jeff Johnsone7245742012-09-05 17:12:55 -070022052 prefixes it with a send message header
22053
22054 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070022055 wdiReqType: type of the request being sent
22056 uBufferLen: message buffer len
22057 pMsgBuffer: resulting allocated buffer
22058 pusDataOffset: offset in the buffer where the caller
22059 can start copying its message data
22060 puBufferSize: the resulting buffer size (offset+buff
22061 len)
Jeff Johnsone7245742012-09-05 17:12:55 -070022062
Jeff Johnson295189b2012-06-20 16:38:30 -070022063 @see
22064 @return Result of the function call
22065*/
22066WDI_Status
22067WDI_GetMessageBuffer
Jeff Johnsone7245742012-09-05 17:12:55 -070022068(
22069 WDI_ControlBlockType* pWDICtx,
22070 WDI_RequestEnumType wdiReqType,
Jeff Johnson295189b2012-06-20 16:38:30 -070022071 wpt_uint16 usBufferLen,
Jeff Johnsone7245742012-09-05 17:12:55 -070022072 wpt_uint8** pMsgBuffer,
22073 wpt_uint16* pusDataOffset,
Jeff Johnson295189b2012-06-20 16:38:30 -070022074 wpt_uint16* pusBufferSize
22075)
22076{
22077 tHalMsgHeader halMsgHeader;
22078 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
22079
Jeff Johnsone7245742012-09-05 17:12:55 -070022080 /*!! No sanity check here as we trust the called - ! check this assumption
Jeff Johnson295189b2012-06-20 16:38:30 -070022081 again*/
22082
22083 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022084 Try to allocate message buffer from PAL
Jeff Johnson295189b2012-06-20 16:38:30 -070022085 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022086 *pusBufferSize = sizeof(halMsgHeader) + usBufferLen;
Jeff Johnson295189b2012-06-20 16:38:30 -070022087 *pMsgBuffer = (wpt_uint8*)wpalMemoryAllocate(*pusBufferSize);
22088 if ( NULL == *pMsgBuffer )
22089 {
22090 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
22091 "Unable to allocate message buffer for req %s (%d)",
22092 WDI_getReqMsgString(wdiReqType),
Jeff Johnsone7245742012-09-05 17:12:55 -070022093 wdiReqType);
Jeff Johnson295189b2012-06-20 16:38:30 -070022094 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070022095 return WDI_STATUS_MEM_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022096 }
22097
22098 /*-------------------------------------------------------------------------
22099 Fill in the message header
22100 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022101 halMsgHeader.msgType = WDI_2_HAL_REQ_TYPE(wdiReqType);
22102 /* Fill msgVersion */
22103#ifdef WLAN_FEATURE_11AC
22104 if (WDI_getFwWlanFeatCaps(DOT11AC))
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070022105 halMsgHeader.msgVersion = WLAN_HAL_MSG_VERSION1;
Jeff Johnsone7245742012-09-05 17:12:55 -070022106 else
22107#endif
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070022108 halMsgHeader.msgVersion = WLAN_HAL_MSG_VERSION0;
Jeff Johnson295189b2012-06-20 16:38:30 -070022109
Jeff Johnsone7245742012-09-05 17:12:55 -070022110 halMsgHeader.msgLen = sizeof(halMsgHeader) + usBufferLen;
22111 *pusDataOffset = sizeof(halMsgHeader);
22112 wpalMemoryCopy(*pMsgBuffer, &halMsgHeader, sizeof(halMsgHeader));
22113
22114 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070022115}/*WDI_GetMessageBuffer*/
22116
22117
22118/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022119 @brief Send message helper function - sends a message over the
Jeff Johnson295189b2012-06-20 16:38:30 -070022120 bus using the control tranport and saves some info in
Jeff Johnsone7245742012-09-05 17:12:55 -070022121 the CB
22122
22123 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070022124 pSendBuffer: buffer to be sent
Jeff Johnsone7245742012-09-05 17:12:55 -070022125
Jeff Johnson295189b2012-06-20 16:38:30 -070022126 usSendSize size of the buffer to be sent
22127 pRspCb: response callback - save in the WDI
22128 CB
22129 pUserData: user data associated with the
22130 callback
22131 wdiExpectedResponse: the code of the response that is
22132 expected to be rx-ed for this request
Jeff Johnsone7245742012-09-05 17:12:55 -070022133
Jeff Johnson295189b2012-06-20 16:38:30 -070022134 @see
22135 @return Result of the function call
22136*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022137WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070022138WDI_SendMsg
Jeff Johnsone7245742012-09-05 17:12:55 -070022139(
22140 WDI_ControlBlockType* pWDICtx,
22141 wpt_uint8* pSendBuffer,
22142 wpt_uint32 usSendSize,
22143 void* pRspCb,
Jeff Johnson295189b2012-06-20 16:38:30 -070022144 void* pUserData,
22145 WDI_ResponseEnumType wdiExpectedResponse
22146)
22147{
Jeff Johnsond13512a2012-07-17 11:42:19 -070022148 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080022149 wpt_uint32 ret;
Jeff Johnson295189b2012-06-20 16:38:30 -070022150 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
22151
22152 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022153 Save needed info in the CB
Jeff Johnson295189b2012-06-20 16:38:30 -070022154 ------------------------------------------------------------------------*/
22155 pWDICtx->pRspCBUserData = pUserData;
Jeff Johnsone7245742012-09-05 17:12:55 -070022156 pWDICtx->pfncRspCB = pRspCb;
22157 pWDICtx->wdiExpectedResponse = wdiExpectedResponse;
Jeff Johnson295189b2012-06-20 16:38:30 -070022158
22159 /*-----------------------------------------------------------------------
22160 Call the CTS to send this message over - free message afterwards
22161 - notify transport failure
22162 Note: CTS is reponsible for freeing the message buffer.
22163 -----------------------------------------------------------------------*/
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080022164 ret = WCTS_SendMessage(pWDICtx->wctsHandle, (void*)pSendBuffer, usSendSize);
22165 if ((eWLAN_PAL_STATUS_SUCCESS != ret) &&
22166 (eWLAN_PAL_STATUS_E_RESOURCES != ret))
Jeff Johnson295189b2012-06-20 16:38:30 -070022167 {
Jeff Johnsond13512a2012-07-17 11:42:19 -070022168 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Siddharth Bhalceddd5d2014-03-21 15:00:19 +053022169 "Failed to send message with expected response %s (%d)"
22170 " over the bus - catastrophic failure",
22171 WDI_getRespMsgString(pWDICtx->wdiExpectedResponse),
22172 pWDICtx->wdiExpectedResponse);
Jeff Johnson295189b2012-06-20 16:38:30 -070022173
Jeff Johnsond13512a2012-07-17 11:42:19 -070022174 wdiStatus = WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022175 }
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080022176 else
22177 {
22178 /* even when message was placed in CTS deferred Q, we will treat it
22179 success but log this info
22180 */
22181 if (eWLAN_PAL_STATUS_E_RESOURCES == ret)
22182 {
22183 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
22184 "WDI_SendMsg: message placed in CTS deferred Q, expected "
22185 "response %s (%d)",
22186 WDI_getRespMsgString(pWDICtx->wdiExpectedResponse),
22187 pWDICtx->wdiExpectedResponse);
Gopichand Nakkala3c5b0632012-12-23 08:30:59 -080022188 WDI_ASSERT(0);
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080022189 }
22190 }
Jeff Johnson295189b2012-06-20 16:38:30 -070022191
Jeff Johnsond13512a2012-07-17 11:42:19 -070022192 /*Check if originator provided a request status callback*/
Jeff Johnson295189b2012-06-20 16:38:30 -070022193 if ( NULL != pWDICtx->wdiReqStatusCB )
22194 {
Jeff Johnsond13512a2012-07-17 11:42:19 -070022195 /*Inform originator whether request went through or not*/
22196 WDI_ReqStatusCb callback = pWDICtx->wdiReqStatusCB;
22197 void *callbackContext = pWDICtx->pReqStatusUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070022198 pWDICtx->wdiReqStatusCB = NULL;
22199 pWDICtx->pReqStatusUserData = NULL;
Jeff Johnsond13512a2012-07-17 11:42:19 -070022200 callback(wdiStatus, callbackContext);
22201
22202 /*For WDI requests which have registered a request callback,
22203 inform the WDA caller of the same via setting the return value
22204 (wdiStatus) to WDI_STATUS_PENDING. This makes sure that WDA doesnt
22205 end up repeating the functonality in the req callback for the
22206 WDI_STATUS_E_FAILURE case*/
22207 if (wdiStatus == WDI_STATUS_E_FAILURE)
22208 wdiStatus = WDI_STATUS_PENDING;
Jeff Johnson295189b2012-06-20 16:38:30 -070022209 }
22210
Jeff Johnsond13512a2012-07-17 11:42:19 -070022211 if ( wdiStatus == WDI_STATUS_SUCCESS )
22212 {
Jeff Johnson295189b2012-06-20 16:38:30 -070022213 /*Start timer for the expected response */
22214 wpalTimerStart(&pWDICtx->wptResponseTimer, WDI_RESPONSE_TIMEOUT);
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080022215
22216 /*cache current timestamp for debugging */
Gopichand Nakkala3c5b0632012-12-23 08:30:59 -080022217 pWDICtx->uTimeStampRspTmrStart = wpalGetSystemTime();
Arif Hussain6c8947a2013-11-27 13:57:14 -080022218 pWDICtx->uArchTimeStampRspTmrStart = wpalGetArchCounterTime();
Jeff Johnsond13512a2012-07-17 11:42:19 -070022219 }
22220 else
22221 {
Jeff Johnson902c9832012-12-10 14:28:09 -080022222 /*Inform upper stack layers that a transport fatal error occurred*/
Jeff Johnsond13512a2012-07-17 11:42:19 -070022223 WDI_DetectedDeviceError(pWDICtx, WDI_ERR_TRANSPORT_FAILURE);
c_hpothue80fad42014-11-10 16:53:39 +053022224 if (eWLAN_PAL_STATUS_E_FAILURE == ret)
22225 {
22226 wdiStatus = WDI_STATUS_DEV_INTERNAL_FAILURE;
22227 }
Jeff Johnsond13512a2012-07-17 11:42:19 -070022228 }
Jeff Johnson295189b2012-06-20 16:38:30 -070022229
Jeff Johnsond13512a2012-07-17 11:42:19 -070022230 return wdiStatus;
22231
Jeff Johnson295189b2012-06-20 16:38:30 -070022232}/*WDI_SendMsg*/
22233
22234
22235
22236/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022237 @brief Send indication helper function - sends a message over
Jeff Johnson295189b2012-06-20 16:38:30 -070022238 the bus using the control transport and saves some info
22239 in the CB
Jeff Johnsone7245742012-09-05 17:12:55 -070022240
22241 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070022242 pSendBuffer: buffer to be sent
22243 usSendSize: size of the buffer to be sent
Jeff Johnsone7245742012-09-05 17:12:55 -070022244
Jeff Johnson295189b2012-06-20 16:38:30 -070022245 @see
22246 @return Result of the function call
22247*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022248WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070022249WDI_SendIndication
Jeff Johnsone7245742012-09-05 17:12:55 -070022250(
22251 WDI_ControlBlockType* pWDICtx,
22252 wpt_uint8* pSendBuffer,
Jeff Johnson295189b2012-06-20 16:38:30 -070022253 wpt_uint32 usSendSize
22254)
22255{
22256 wpt_uint32 uStatus ;
22257 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
22258
22259 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022260 Call the CTS to send this message over
Jeff Johnson295189b2012-06-20 16:38:30 -070022261 Note: CTS is reponsible for freeing the message buffer.
22262 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022263 uStatus = WCTS_SendMessage( pWDICtx->wctsHandle,
Jeff Johnson295189b2012-06-20 16:38:30 -070022264 (void*)pSendBuffer, usSendSize );
22265
22266 /*Inform Upper MAC about the outcome of the request*/
22267 if ( NULL != pWDICtx->wdiReqStatusCB )
22268 {
22269 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
22270 "Send indication status : %d", uStatus);
22271
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080022272 /* even if CTS placed indication into its deferred Q, we treat it
22273 * as success and let CTS drain its queue as per smd interrupt to CTS
22274 */
22275 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 -070022276 pWDICtx->pReqStatusUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070022277 }
22278
22279 /*If sending of the message failed - it is considered catastrophic and
22280 indicates an error with the device*/
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080022281 if (( eWLAN_PAL_STATUS_SUCCESS != uStatus) &&
22282 ( eWLAN_PAL_STATUS_E_RESOURCES != uStatus))
22283
Jeff Johnson295189b2012-06-20 16:38:30 -070022284 {
22285 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnsone7245742012-09-05 17:12:55 -070022286 "Failed to send indication over the bus - catastrophic failure");
Jeff Johnson295189b2012-06-20 16:38:30 -070022287
22288 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_TRANSPORT_FAILURE);
22289 return WDI_STATUS_E_FAILURE;
22290 }
22291
Jeff Johnsone7245742012-09-05 17:12:55 -070022292 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070022293}/*WDI_SendIndication*/
22294
22295
22296/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022297 @brief WDI_DetectedDeviceError - called internally by DAL when
22298 it has detected a failure in the device
22299
22300 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070022301 usErrorCode: error code detected by WDI or received
22302 from HAL
Jeff Johnsone7245742012-09-05 17:12:55 -070022303
Jeff Johnson295189b2012-06-20 16:38:30 -070022304 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070022305 @return None
Jeff Johnson295189b2012-06-20 16:38:30 -070022306*/
22307void
22308WDI_DetectedDeviceError
22309(
22310 WDI_ControlBlockType* pWDICtx,
22311 wpt_uint16 usErrorCode
22312)
22313{
22314 WDI_LowLevelIndType wdiInd;
22315 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
22316
22317 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
22318 "Device Error detected code: %d - transitioning to stopped state",
22319 usErrorCode);
22320
Katya Nigamf02ad012014-05-05 16:12:49 +053022321 pWDICtx->DeviceErrorReason = VOS_RETURN_ADDRESS;
22322
Jeff Johnson295189b2012-06-20 16:38:30 -070022323 wpalMutexAcquire(&pWDICtx->wptMutex);
22324
22325 WDI_STATableStop(pWDICtx);
22326
22327 WDI_ResetAssocSessions(pWDICtx);
22328
22329 /*Set the expected state transition to stopped - because the device
22330 experienced a failure*/
22331 pWDICtx->ucExpectedStateTransition = WDI_STOPPED_ST;
22332
22333 /*Transition to stopped to fail all incomming requests from this point on*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022334 WDI_STATE_TRANSITION( pWDICtx, WDI_STOPPED_ST);
Jeff Johnson295189b2012-06-20 16:38:30 -070022335
Jeff Johnsone7245742012-09-05 17:12:55 -070022336 WDI_ClearPendingRequests(pWDICtx);
Jeff Johnson295189b2012-06-20 16:38:30 -070022337
22338 /*TO DO: - there should be an attempt to reset the device here*/
22339
22340 wpalMutexRelease(&pWDICtx->wptMutex);
22341
22342 /*------------------------------------------------------------------------
22343 Notify UMAC if a handler is registered
22344 ------------------------------------------------------------------------*/
22345 if (pWDICtx->wdiLowLevelIndCB)
22346 {
Jeff Johnsone7245742012-09-05 17:12:55 -070022347 wdiInd.wdiIndicationType = WDI_FATAL_ERROR_IND;
22348 wdiInd.wdiIndicationData.usErrorCode = usErrorCode;
Jeff Johnson295189b2012-06-20 16:38:30 -070022349
22350 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData);
22351 }
22352}/*WDI_DetectedDeviceError*/
22353
22354/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022355 @brief This callback is invoked by the wpt when a timer that
Jeff Johnson295189b2012-06-20 16:38:30 -070022356 we started on send message has expire - this should
22357 never happen - it means device is stuck and cannot
Jeff Johnsone7245742012-09-05 17:12:55 -070022358 reply - trigger catastrophic failure
22359 @param
22360
Jeff Johnson295189b2012-06-20 16:38:30 -070022361 pUserData: the callback data of the user (ptr to WDI CB)
Jeff Johnsone7245742012-09-05 17:12:55 -070022362
22363 @see
22364 @return None
Jeff Johnson295189b2012-06-20 16:38:30 -070022365*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022366void
Jeff Johnson295189b2012-06-20 16:38:30 -070022367WDI_ResponseTimerCB
22368(
22369 void *pUserData
22370)
22371{
22372 WDI_ControlBlockType* pWDICtx = (WDI_ControlBlockType*)pUserData;
22373 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
22374
Gopichand Nakkalae620d5a2013-04-26 05:45:57 -070022375 if (NULL == pWDICtx)
Jeff Johnson295189b2012-06-20 16:38:30 -070022376 {
Gopichand Nakkalae620d5a2013-04-26 05:45:57 -070022377 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022378 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070022379 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070022380 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070022381 }
22382
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080022383 /*cache current timestamp for debugging */
Gopichand Nakkala3c5b0632012-12-23 08:30:59 -080022384 pWDICtx->uTimeStampRspTmrExp = wpalGetSystemTime();
Arif Hussain6c8947a2013-11-27 13:57:14 -080022385 pWDICtx->uArchTimeStampRspTmrExp = wpalGetArchCounterTime();
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080022386
22387 /* If response timer is running at this time that means this timer
22388 * event is not for the last request but rather last-to-last request and
22389 * this timer event has come after we recevied respone for last-to-last
22390 * message
22391 */
22392 if (VOS_TIMER_STATE_RUNNING == wpalTimerGetCurStatus(&pWDICtx->wptResponseTimer))
22393 {
22394 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
22395 "WDI_ResponseTimerCB: timer in running state on timer event, "
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080022396 "ignore tmr event, timeStampTmrStart: %u, timeStampTmrExp: %u",
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080022397 pWDICtx->uTimeStampRspTmrStart, pWDICtx->uTimeStampRspTmrExp);
Arif Hussain6c8947a2013-11-27 13:57:14 -080022398 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
22399 "uArchTimeStampTmrStart: %llu seconds, "
22400 "uArchTimeStampTmrExp: %llu seconds",
22401 pWDICtx->uArchTimeStampRspTmrStart,
22402 pWDICtx->uArchTimeStampRspTmrExp);
22403
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080022404 return;
22405 }
22406
Gopichand Nakkalae620d5a2013-04-26 05:45:57 -070022407 if (WDI_MAX_RESP != pWDICtx->wdiExpectedResponse)
Jeff Johnson295189b2012-06-20 16:38:30 -070022408 {
22409
Gopichand Nakkalae620d5a2013-04-26 05:45:57 -070022410 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnson295189b2012-06-20 16:38:30 -070022411 "Timeout occurred while waiting for %s (%d) message from device "
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080022412 " - catastrophic failure, timeStampTmrStart: %u, timeStampTmrExp: %u",
Jeff Johnson295189b2012-06-20 16:38:30 -070022413 WDI_getRespMsgString(pWDICtx->wdiExpectedResponse),
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080022414 pWDICtx->wdiExpectedResponse, pWDICtx->uTimeStampRspTmrStart,
22415 pWDICtx->uTimeStampRspTmrExp);
Arif Hussain6c8947a2013-11-27 13:57:14 -080022416 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
22417 "uArchTimeStampTmrStart: %llu seconds, "
22418 "uArchTimeStampTmrExp: %llu seconds",
22419 pWDICtx->uArchTimeStampRspTmrStart,
22420 pWDICtx->uArchTimeStampRspTmrExp);
Gopichand Nakkalae620d5a2013-04-26 05:45:57 -070022421
22422 /* WDI timeout means Riva is not responding or SMD communication to Riva
22423 * is not happening. The only possible way to recover from this error
22424 * is to initiate SSR from APPS.
22425 * There is also an option to re-enable wifi, which will eventually
22426 * trigger SSR
22427 */
22428 if (gWDICb.bEnableSSR == false)
22429 {
22430 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
22431 "SSR is not enabled on WDI timeout");
22432 WDI_DetectedDeviceError(pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
22433 return;
22434 }
Madan Mohan Koyyalamudia2fc6412012-10-21 12:06:12 -070022435#ifndef WDI_RE_ENABLE_WIFI_ON_WDI_TIMEOUT
Gopichand Nakkalae620d5a2013-04-26 05:45:57 -070022436 wpalWcnssResetIntr();
Katya Nigam921bf202014-02-26 14:52:24 +053022437 if(wpalIsWDresetInProgress())
22438 {
Pradeep Kumar Goudagunta22d8e4d2014-07-17 15:03:51 +053022439 if(wpalIsSsrPanicOnFailure())
22440 wpalDevicePanic();
Siddharth Bhalfb2cec92014-11-13 16:22:11 +053022441 } else {
22442 /* if this timer fires, it means Riva did not receive the FIQ */
22443 wpalTimerStart(&pWDICtx->ssrTimer, WDI_SSR_TIMEOUT);
Katya Nigam921bf202014-02-26 14:52:24 +053022444 }
Madan Mohan Koyyalamudia2fc6412012-10-21 12:06:12 -070022445#else
Gopichand Nakkalae620d5a2013-04-26 05:45:57 -070022446 WDI_DetectedDeviceError(pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
22447 wpalWlanReload();
Madan Mohan Koyyalamudia2fc6412012-10-21 12:06:12 -070022448#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070022449 }
22450 else
22451 {
Gopichand Nakkalae620d5a2013-04-26 05:45:57 -070022452 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080022453 "Timeout occurred but not waiting for any response %d "
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080022454 "timeStampTmrStart: %u, timeStampTmrExp: %u",
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080022455 pWDICtx->wdiExpectedResponse, pWDICtx->uTimeStampRspTmrStart,
22456 pWDICtx->uTimeStampRspTmrExp);
Arif Hussain6c8947a2013-11-27 13:57:14 -080022457 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
22458 "uArchTimeStampTmrStart: %llu seconds, "
22459 "uArchTimeStampTmrExp: %llu seconds",
22460 pWDICtx->uArchTimeStampRspTmrStart,
22461 pWDICtx->uArchTimeStampRspTmrExp);
22462
Jeff Johnson295189b2012-06-20 16:38:30 -070022463 }
22464
22465 return;
22466
22467}/*WDI_ResponseTimerCB*/
22468
22469
22470/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022471 @brief Process response helper function
Jeff Johnson295189b2012-06-20 16:38:30 -070022472
Jeff Johnsone7245742012-09-05 17:12:55 -070022473
22474 @param pWDICtx: pointer to the WLAN DAL context
22475 pEventData: pointer to the event information structure
22476
Jeff Johnson295189b2012-06-20 16:38:30 -070022477 @see
22478 @return Result of the function call
22479*/
22480WPT_INLINE WDI_Status
22481WDI_ProcessResponse
22482(
22483 WDI_ControlBlockType* pWDICtx,
22484 WDI_EventInfoType* pEventData
22485)
22486{
22487 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
22488
Jeff Johnsone7245742012-09-05 17:12:55 -070022489 /* Skip sanity check as this is called from the FSM functions which
Jeff Johnson295189b2012-06-20 16:38:30 -070022490 already checked these pointers
22491 ! - revisit this assumption */
22492 if (( pEventData->wdiResponse < WDI_MAX_RESP ) &&
22493 ( NULL != pfnRspProcTbl[pEventData->wdiResponse] ))
Jeff Johnsone7245742012-09-05 17:12:55 -070022494 {
Jeff Johnson295189b2012-06-20 16:38:30 -070022495 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080022496 "Calling response processing function for resp %s (%d) %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070022497 WDI_getRespMsgString(pEventData->wdiResponse),
22498 pEventData->wdiResponse, pfnRspProcTbl[pEventData->wdiResponse]);
22499 return pfnRspProcTbl[pEventData->wdiResponse](pWDICtx, pEventData);
22500 }
22501 else
22502 {
22503 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070022504 "Operation %d is not yet implemented ",
Jeff Johnson295189b2012-06-20 16:38:30 -070022505 pEventData->wdiResponse);
22506 return WDI_STATUS_E_NOT_IMPLEMENT;
22507 }
22508}/*WDI_ProcessResponse*/
22509
22510
22511/*=========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070022512 QUEUE SUPPORT UTILITY FUNCTIONS
Jeff Johnson295189b2012-06-20 16:38:30 -070022513=========================================================================*/
22514
22515/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022516 @brief Utility function used by the DAL Core to help queue a
22517 request that cannot be processed right away.
22518 @param
22519
Jeff Johnson295189b2012-06-20 16:38:30 -070022520 pWDICtx: - pointer to the WDI control block
22521 pEventData: - pointer to the evnt info that needs to be
Jeff Johnsone7245742012-09-05 17:12:55 -070022522 queued
22523
22524 @see
22525 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070022526*/
22527WDI_Status
22528WDI_QueuePendingReq
22529(
22530 WDI_ControlBlockType* pWDICtx,
22531 WDI_EventInfoType* pEventData
22532)
22533{
Jeff Johnsone7245742012-09-05 17:12:55 -070022534 wpt_list_node* pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070022535 WDI_EventInfoType* pEventDataQueue = wpalMemoryAllocate(sizeof(*pEventData));
Jeff Johnsone7245742012-09-05 17:12:55 -070022536 void* pEventInfo = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070022537 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
22538
22539 if ( NULL == pEventDataQueue )
22540 {
22541 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070022542 "Cannot allocate memory for queueing");
Jeff Johnson295189b2012-06-20 16:38:30 -070022543 WDI_ASSERT(0);
22544 return WDI_STATUS_MEM_FAILURE;
22545 }
22546
22547 pEventDataQueue->pCBfnc = pEventData->pCBfnc;
22548 pEventDataQueue->pUserData = pEventData->pUserData;
22549 pEventDataQueue->uEventDataSize = pEventData->uEventDataSize;
22550 pEventDataQueue->wdiRequest = pEventData->wdiRequest;
Jeff Johnsone7245742012-09-05 17:12:55 -070022551 pEventDataQueue->wdiResponse = pEventData->wdiResponse;
Jeff Johnson295189b2012-06-20 16:38:30 -070022552
22553 if( pEventData->uEventDataSize != 0 && pEventData->pEventData != NULL )
22554 {
22555 pEventInfo = wpalMemoryAllocate(pEventData->uEventDataSize);
Jeff Johnsone7245742012-09-05 17:12:55 -070022556
Jeff Johnson295189b2012-06-20 16:38:30 -070022557 if ( NULL == pEventInfo )
22558 {
22559 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070022560 "Cannot allocate memory for queueing event data info");
Jeff Johnson295189b2012-06-20 16:38:30 -070022561 WDI_ASSERT(0);
22562 wpalMemoryFree(pEventDataQueue);
22563 return WDI_STATUS_MEM_FAILURE;
22564 }
Jeff Johnsone7245742012-09-05 17:12:55 -070022565
Jeff Johnson295189b2012-06-20 16:38:30 -070022566 wpalMemoryCopy(pEventInfo, pEventData->pEventData, pEventData->uEventDataSize);
22567
22568 }
22569 pEventDataQueue->pEventData = pEventInfo;
22570
22571 /*Send wpt a pointer to the node (this is the 1st element in the event data)*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022572 pNode = (wpt_list_node*)pEventDataQueue;
Jeff Johnson295189b2012-06-20 16:38:30 -070022573
Pradeep Kumar Goudaguntaf5087fa2014-07-07 19:51:49 +053022574 if (eWLAN_PAL_STATUS_E_FAILURE ==
22575 wpal_list_insert_back(&(pWDICtx->wptPendingQueue), pNode))
22576 {
22577 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
22578 "pEventDataQueue wpal_list_insert_back failed");
22579 WDI_ASSERT(0);
22580 wpalMemoryFree(pEventDataQueue);
22581 wpalMemoryFree(pEventInfo);
22582 return WDI_STATUS_MEM_FAILURE;
22583 }
Jeff Johnson295189b2012-06-20 16:38:30 -070022584
22585 return WDI_STATUS_SUCCESS;
22586}/*WDI_QueuePendingReq*/
22587
22588/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022589 @brief Callback function for serializing queued message
Jeff Johnson295189b2012-06-20 16:38:30 -070022590 processing in the control context
Jeff Johnsone7245742012-09-05 17:12:55 -070022591 @param
22592
22593 pMsg - pointer to the message
22594
22595 @see
22596 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070022597*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022598void
Jeff Johnson295189b2012-06-20 16:38:30 -070022599WDI_PALCtrlMsgCB
22600(
22601 wpt_msg *pMsg
22602)
22603{
22604 WDI_EventInfoType* pEventData = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070022605 WDI_ControlBlockType* pWDICtx = NULL;
22606 WDI_Status wdiStatus;
22607 WDI_ReqStatusCb pfnReqStatusCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070022608 void* pUserData;
22609 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
22610
22611 if (( NULL == pMsg )||
22612 ( NULL == (pEventData = (WDI_EventInfoType*)pMsg->ptr)) ||
22613 ( NULL == (pWDICtx = (WDI_ControlBlockType*)pMsg->pContext )))
22614 {
22615 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070022616 "Invalid message received on serialize ctrl context API");
Jeff Johnson295189b2012-06-20 16:38:30 -070022617 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070022618 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070022619 }
22620
22621 /*Transition back to the state that we had before serialization
22622 - serialization transitions us to BUSY to stop any incomming requests
22623 ! TO DO L: possible race condition here if a request comes in between the
22624 state transition and the post function*/
22625
Jeff Johnsone7245742012-09-05 17:12:55 -070022626 WDI_STATE_TRANSITION( pWDICtx, pMsg->val);
Jeff Johnson295189b2012-06-20 16:38:30 -070022627
22628 /*-----------------------------------------------------------------------
22629 Check to see what type of event we are serializing
Jeff Johnsone7245742012-09-05 17:12:55 -070022630 - responses are never expected to come through here
Jeff Johnson295189b2012-06-20 16:38:30 -070022631 -----------------------------------------------------------------------*/
22632 switch ( pEventData->wdiRequest )
22633 {
22634
Jeff Johnsone7245742012-09-05 17:12:55 -070022635 case WDI_STOP_REQ:
Jeff Johnson295189b2012-06-20 16:38:30 -070022636 wdiStatus = WDI_PostMainEvent(&gWDICb, WDI_STOP_EVENT, pEventData);
22637 break;
22638
Jeff Johnson295189b2012-06-20 16:38:30 -070022639 case WDI_NV_DOWNLOAD_REQ:
22640 // When WDI State is WDI_STARTED_ST, send WDI request message with event type WDI_REQUEST_EVENT.
22641 // In this case, because this request is called from response process, we could call WDI_ProcessRequest() directly.
22642 if (pWDICtx->uGlobalState == WDI_STARTED_ST)
22643 {
22644 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022645 "%s: WDI_NV_DOWNLOAD_REQ called in WDI_STARTED_ST - send with WDI_REQUEST_EVENT", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070022646 wdiStatus = WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, pEventData);
22647 }
22648 else
22649 {
22650 wdiStatus = WDI_PostMainEvent(&gWDICb, WDI_START_EVENT, pEventData);
22651 }
22652
22653 break;
22654
22655 default:
22656 wdiStatus = WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, pEventData);
22657 break;
22658 }/*switch ( pEventData->wdiRequest )*/
22659
22660 if ( WDI_STATUS_SUCCESS != wdiStatus )
22661 {
22662 WDI_ExtractRequestCBFromEvent(pEventData, &pfnReqStatusCB, &pUserData);
22663
22664 if ( NULL != pfnReqStatusCB )
22665 {
22666 /*Fail the request*/
22667 pfnReqStatusCB( wdiStatus, pUserData);
22668 }
22669 }
22670
22671 /* Free data - that was allocated when queueing*/
22672 if( pEventData != NULL )
22673 {
22674 if( pEventData->pEventData != NULL )
22675 {
22676 wpalMemoryFree(pEventData->pEventData);
22677 }
22678 wpalMemoryFree(pEventData);
22679 }
22680
22681 if( pMsg != NULL )
22682 {
22683 wpalMemoryFree(pMsg);
22684 }
Jeff Johnsone7245742012-09-05 17:12:55 -070022685
Jeff Johnson295189b2012-06-20 16:38:30 -070022686}/*WDI_PALCtrlMsgCB*/
22687
22688/**
22689 @brief Utility function used by the DAL Core to help dequeue
Jeff Johnsone7245742012-09-05 17:12:55 -070022690 and schedule for execution a pending request
22691 @param
22692
Jeff Johnson295189b2012-06-20 16:38:30 -070022693 pWDICtx: - pointer to the WDI control block
22694 pEventData: - pointer to the evnt info that needs to be
Jeff Johnsone7245742012-09-05 17:12:55 -070022695 queued
22696
22697 @see
22698 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070022699*/
22700WDI_Status
22701WDI_DequeuePendingReq
22702(
22703 WDI_ControlBlockType* pWDICtx
22704)
22705{
Jeff Johnsone7245742012-09-05 17:12:55 -070022706 wpt_list_node* pNode = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070022707 WDI_EventInfoType* pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070022708 wpt_msg* palMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070022709 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
22710
Jeff Johnsone7245742012-09-05 17:12:55 -070022711 wpal_list_remove_front(&(pWDICtx->wptPendingQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070022712
22713 if ( NULL == pNode )
22714 {
22715 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -070022716 "List is empty - return");
Jeff Johnson295189b2012-06-20 16:38:30 -070022717 return WDI_STATUS_SUCCESS;
22718 }
22719
22720 /*The node actually points to the 1st element inside the Event Data struct -
22721 just cast it back to the struct*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022722 pEventData = (WDI_EventInfoType*)pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070022723
22724 /*Serialize processing in the control thread
22725 !TO DO: - check to see if these are all the messages params that need
22726 to be filled in*/
22727 palMsg = wpalMemoryAllocate(sizeof(wpt_msg));
22728
22729 if ( NULL == palMsg )
22730 {
22731 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070022732 "WDI_DequeuePendingReq: Cannot allocate memory for palMsg.");
Jeff Johnson295189b2012-06-20 16:38:30 -070022733 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070022734 return WDI_STATUS_MEM_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022735 }
Jeff Johnsone7245742012-09-05 17:12:55 -070022736 palMsg->pContext = pWDICtx;
Jeff Johnson295189b2012-06-20 16:38:30 -070022737 palMsg->callback = WDI_PALCtrlMsgCB;
22738 palMsg->ptr = pEventData;
22739
22740 /*Save the global state as we need it on the other side*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022741 palMsg->val = pWDICtx->uGlobalState;
Leo Chang0f24ca12013-12-17 13:35:00 -080022742 palMsg->type = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070022743
Jeff Johnson295189b2012-06-20 16:38:30 -070022744 /*Transition back to BUSY as we need to handle a queued request*/
22745 WDI_STATE_TRANSITION( pWDICtx, WDI_BUSY_ST);
Jeff Johnsone7245742012-09-05 17:12:55 -070022746
Jeff Johnson295189b2012-06-20 16:38:30 -070022747 wpalPostCtrlMsg(pWDICtx->pPALContext, palMsg);
22748
22749 return WDI_STATUS_PENDING;
22750}/*WDI_DequeuePendingReq*/
22751
22752
22753/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022754 @brief Utility function used by the DAL Core to help queue
Jeff Johnson295189b2012-06-20 16:38:30 -070022755 an association request that cannot be processed right
Jeff Johnsone7245742012-09-05 17:12:55 -070022756 away.- The assoc requests will be queued by BSSID
22757 @param
22758
Jeff Johnson295189b2012-06-20 16:38:30 -070022759 pWDICtx: - pointer to the WDI control block
22760 pEventData: pointer to the evnt info that needs to be queued
22761 macBSSID: bssid
Jeff Johnsone7245742012-09-05 17:12:55 -070022762
22763 @see
22764 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070022765*/
22766WDI_Status
22767WDI_QueueNewAssocRequest
22768(
22769 WDI_ControlBlockType* pWDICtx,
22770 WDI_EventInfoType* pEventData,
22771 wpt_macAddr macBSSID
22772)
22773{
Jeff Johnsone7245742012-09-05 17:12:55 -070022774 wpt_uint8 i;
22775 WDI_BSSSessionType* pSession = NULL;
22776 wpt_list_node* pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070022777 WDI_EventInfoType* pEventDataQueue;
Jeff Johnsone7245742012-09-05 17:12:55 -070022778 void* pEventInfo;
22779 WDI_NextSessionIdType* pSessionIdElement;
Jeff Johnson295189b2012-06-20 16:38:30 -070022780 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Jeff Johnson295189b2012-06-20 16:38:30 -070022781
Jeff Johnsone7245742012-09-05 17:12:55 -070022782
22783 /*------------------------------------------------------------------------
22784 Search for a session that matches the BSSID
Jeff Johnson295189b2012-06-20 16:38:30 -070022785 ------------------------------------------------------------------------*/
22786 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
22787 {
22788 if ( eWLAN_PAL_FALSE == pWDICtx->aBSSSessions[i].bInUse )
22789 {
22790 /*Found an empty session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022791 pSession = &pWDICtx->aBSSSessions[i];
22792 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070022793 }
22794 }
22795
22796 if ( i >= WDI_MAX_BSS_SESSIONS )
22797 {
22798 /*Cannot find any empty sessions*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022799 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022800 }
Jeff Johnsone7245742012-09-05 17:12:55 -070022801
Jeff Johnson295189b2012-06-20 16:38:30 -070022802 /*------------------------------------------------------------------------
22803 Fill in the BSSID for this session and set the usage flag
22804 ------------------------------------------------------------------------*/
22805 wpalMemoryCopy(pWDICtx->aBSSSessions[i].macBSSID, macBSSID, WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070022806 pWDICtx->aBSSSessions[i].bInUse = eWLAN_PAL_TRUE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022807
22808 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022809 Allocate memory for this and place it in the queue
Jeff Johnson295189b2012-06-20 16:38:30 -070022810 ------------------------------------------------------------------------*/
22811 pEventDataQueue = (WDI_EventInfoType*)wpalMemoryAllocate(sizeof(WDI_EventInfoType));
22812 if ( NULL == pEventDataQueue )
22813 {
22814 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022815 "%s: Cannot allocate memory for queue node", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070022816 WDI_ASSERT(0);
22817 return WDI_STATUS_MEM_FAILURE;
22818 }
22819
22820 pSessionIdElement = (WDI_NextSessionIdType*)wpalMemoryAllocate(sizeof(WDI_NextSessionIdType));
22821 if ( NULL == pSessionIdElement )
22822 {
22823 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022824 "%s: Cannot allocate memory for session ID", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070022825 WDI_ASSERT(0);
22826 wpalMemoryFree(pEventDataQueue);
22827 return WDI_STATUS_MEM_FAILURE;
22828 }
22829
22830 pEventInfo = wpalMemoryAllocate(pEventData->uEventDataSize);
22831 if ( NULL == pEventInfo )
22832 {
22833 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022834 "%s: Cannot allocate memory for event data info", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070022835 WDI_ASSERT(0);
22836 wpalMemoryFree(pSessionIdElement);
22837 wpalMemoryFree(pEventDataQueue);
22838 return WDI_STATUS_MEM_FAILURE;
22839 }
22840
22841 pEventDataQueue->pCBfnc = pEventData->pCBfnc;
22842 pEventDataQueue->pUserData = pEventData->pUserData;
22843 pEventDataQueue->uEventDataSize = pEventData->uEventDataSize;
22844 pEventDataQueue->wdiRequest = pEventData->wdiRequest;
Jeff Johnsone7245742012-09-05 17:12:55 -070022845 pEventDataQueue->wdiResponse = pEventData->wdiResponse;
Jeff Johnson295189b2012-06-20 16:38:30 -070022846
22847 wpalMemoryCopy(pEventInfo, pEventData->pEventData, pEventData->uEventDataSize);
22848 pEventDataQueue->pEventData = pEventInfo;
22849
22850 /*Send wpt a pointer to the node (this is the 1st element in the event data)*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022851 pNode = (wpt_list_node*)pEventDataQueue;
Jeff Johnson295189b2012-06-20 16:38:30 -070022852
22853 /*This association is currently being queued*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022854 pSession->bAssocReqQueued = eWLAN_PAL_TRUE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022855
Pradeep Kumar Goudaguntaf5087fa2014-07-07 19:51:49 +053022856 if (eWLAN_PAL_STATUS_E_FAILURE ==
22857 wpal_list_insert_back(&(pSession->wptPendingQueue), pNode))
22858 {
22859 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
22860 "%s: pEventDataQueue wpal_list_insert_back failed", __func__);
22861 WDI_ASSERT(0);
22862 wpalMemoryFree(pSessionIdElement);
22863 wpalMemoryFree(pEventDataQueue);
22864 wpalMemoryFree(pEventInfo);
22865 return WDI_STATUS_MEM_FAILURE;
22866 }
Jeff Johnson295189b2012-06-20 16:38:30 -070022867
22868 /*We need to maintain a separate list that keeps track of the order in which
22869 the new assoc requests are being queued such that we can start processing
22870 them in the order that they had arrived*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022871 pSessionIdElement->ucIndex = i;
22872 pNode = (wpt_list_node*)pSessionIdElement;
Jeff Johnson295189b2012-06-20 16:38:30 -070022873
22874 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
22875 "Queueing up new assoc session : %d ", pSessionIdElement->ucIndex);
Pradeep Kumar Goudaguntaf5087fa2014-07-07 19:51:49 +053022876 if (eWLAN_PAL_STATUS_E_FAILURE ==
22877 wpal_list_insert_back(&pWDICtx->wptPendingAssocSessionIdQueue, pNode))
22878 {
22879 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
22880 "%s: pSessionIdElement wpal_list_insert_back failed", __func__);
22881 WDI_ASSERT(0);
22882 wpalMemoryFree(pSessionIdElement);
22883 wpalMemoryFree(pEventDataQueue);
22884 wpalMemoryFree(pEventInfo);
22885 return WDI_STATUS_MEM_FAILURE;
22886 }
Jeff Johnson295189b2012-06-20 16:38:30 -070022887
22888 /*Return pending as this is what the status of the request is since it has
22889 been queued*/
22890 return WDI_STATUS_PENDING;
22891}/*WDI_QueueNewAssocRequest*/
22892
22893/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022894 @brief Utility function used by the DAL Core to help queue
Jeff Johnson295189b2012-06-20 16:38:30 -070022895 an association request that cannot be processed right
Jeff Johnsone7245742012-09-05 17:12:55 -070022896 away.- The assoc requests will be queued by BSSID
22897 @param
22898
Jeff Johnson295189b2012-06-20 16:38:30 -070022899 pWDICtx: - pointer to the WDI control block
22900 pSession: - session in which to queue
22901 pEventData: pointer to the event info that needs to be
22902 queued
Jeff Johnsone7245742012-09-05 17:12:55 -070022903
22904 @see
22905 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070022906*/
22907WDI_Status
22908WDI_QueueAssocRequest
22909(
22910 WDI_ControlBlockType* pWDICtx,
22911 WDI_BSSSessionType* pSession,
22912 WDI_EventInfoType* pEventData
22913)
22914{
Jeff Johnsone7245742012-09-05 17:12:55 -070022915 wpt_list_node* pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070022916 WDI_EventInfoType* pEventDataQueue;
Jeff Johnsone7245742012-09-05 17:12:55 -070022917 void* pEventInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070022918 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Jeff Johnsone7245742012-09-05 17:12:55 -070022919
22920 /*------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -070022921 Sanity check
22922 ------------------------------------------------------------------------*/
22923 if (( NULL == pSession ) || ( NULL == pWDICtx ))
22924 {
22925 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022926 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070022927
Jeff Johnsone7245742012-09-05 17:12:55 -070022928 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022929 }
22930
22931 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022932 Allocate memory for this and place it in the queue
Jeff Johnson295189b2012-06-20 16:38:30 -070022933 ------------------------------------------------------------------------*/
22934 pEventDataQueue = (WDI_EventInfoType*)wpalMemoryAllocate(sizeof(WDI_EventInfoType));
22935 if ( NULL == pEventDataQueue )
22936 {
22937 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022938 "%s: Cannot allocate memory for queueing", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070022939 WDI_ASSERT(0);
22940 return WDI_STATUS_MEM_FAILURE;
22941 }
22942
22943 pEventInfo = wpalMemoryAllocate(pEventData->uEventDataSize);
22944 if ( NULL == pEventInfo )
22945 {
22946 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
22947 "%s: Cannot allocate memory for queueing event data info",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022948 __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070022949 WDI_ASSERT(0);
22950 wpalMemoryFree(pEventDataQueue);
22951 return WDI_STATUS_MEM_FAILURE;
22952 }
22953
22954 pEventDataQueue->pCBfnc = pEventData->pCBfnc;
22955 pEventDataQueue->pUserData = pEventData->pUserData;
22956 pEventDataQueue->uEventDataSize = pEventData->uEventDataSize;
22957 pEventDataQueue->wdiRequest = pEventData->wdiRequest;
Jeff Johnsone7245742012-09-05 17:12:55 -070022958 pEventDataQueue->wdiResponse = pEventData->wdiResponse;
Jeff Johnson295189b2012-06-20 16:38:30 -070022959 pEventDataQueue->pEventData = pEventInfo;
22960
22961 wpalMemoryCopy(pEventInfo, pEventData->pEventData, pEventData->uEventDataSize);
22962
22963 /*Send wpt a pointer to the node (this is the 1st element in the event data)*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022964 pNode = (wpt_list_node*)pEventDataQueue;
Jeff Johnson295189b2012-06-20 16:38:30 -070022965
22966 /*This association is currently being queued*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022967 pSession->bAssocReqQueued = eWLAN_PAL_TRUE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022968
Pradeep Kumar Goudaguntaf5087fa2014-07-07 19:51:49 +053022969 if (eWLAN_PAL_STATUS_E_FAILURE ==
22970 wpal_list_insert_back(&(pSession->wptPendingQueue), pNode))
22971 {
22972 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
22973 "%s: Cannot allocate memory for queueing event data info",
22974 __func__);
22975 WDI_ASSERT(0);
22976 wpalMemoryFree(pEventDataQueue);
22977 wpalMemoryFree(pEventInfo);
22978 return WDI_STATUS_MEM_FAILURE;
22979 }
Jeff Johnson295189b2012-06-20 16:38:30 -070022980
22981 /*The result of this operation is pending because the request has been
22982 queued and it will be processed at a later moment in time */
22983 return WDI_STATUS_PENDING;
22984}/*WDI_QueueAssocRequest*/
22985
22986/**
22987 @brief Utility function used by the DAL Core to help dequeue
22988 an association request that was pending
22989 The request will be queued up in front of the main
22990 pending queue for imediate processing
Jeff Johnsone7245742012-09-05 17:12:55 -070022991 @param
22992
Jeff Johnson295189b2012-06-20 16:38:30 -070022993 pWDICtx: - pointer to the WDI control block
Jeff Johnsone7245742012-09-05 17:12:55 -070022994
22995
22996 @see
22997 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070022998*/
22999WDI_Status
23000WDI_DequeueAssocRequest
23001(
23002 WDI_ControlBlockType* pWDICtx
23003)
23004{
Jeff Johnsone7245742012-09-05 17:12:55 -070023005 wpt_list_node* pNode = NULL;
23006 WDI_NextSessionIdType* pSessionIdElement;
Jeff Johnson295189b2012-06-20 16:38:30 -070023007 WDI_BSSSessionType* pSession;
23008 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Jeff Johnsone7245742012-09-05 17:12:55 -070023009
23010 /*------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -070023011 Sanity check
23012 ------------------------------------------------------------------------*/
23013 if ( NULL == pWDICtx )
23014 {
23015 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023016 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023017
Jeff Johnsone7245742012-09-05 17:12:55 -070023018 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023019 }
23020
23021 /*------------------------------------------------------------------------
23022 An association has been completed => a new association can occur
23023 Check to see if there are any pending associations ->
23024 If so , transfer all the pending requests into the busy queue for
23025 processing
23026 These requests have arrived prior to the requests in the busy queue
23027 (bc they needed to be processed in order to be placed in this queue)
23028 => they will be placed at the front of the busy queue
23029 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023030 wpal_list_remove_front(&(pWDICtx->wptPendingAssocSessionIdQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070023031
23032 if ( NULL == pNode )
23033 {
23034 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -070023035 "List is empty - return");
Jeff Johnson295189b2012-06-20 16:38:30 -070023036 return WDI_STATUS_SUCCESS;
23037 }
23038
23039 /*The node actually points to the 1st element inside the Session Id struct -
23040 just cast it back to the struct*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023041 pSessionIdElement = (WDI_NextSessionIdType*)pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070023042
23043 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
23044 "Dequeueing new assoc session : %d ", pSessionIdElement->ucIndex);
23045
23046 if ( pSessionIdElement->ucIndex < WDI_MAX_BSS_SESSIONS )
23047 {
23048 pSession = &pWDICtx->aBSSSessions[pSessionIdElement->ucIndex];
Jeff Johnsone7245742012-09-05 17:12:55 -070023049
Jeff Johnson295189b2012-06-20 16:38:30 -070023050 /*Transfer all the pending requests in this assoc queue to
Jeff Johnsone7245742012-09-05 17:12:55 -070023051 the front of the main waiting queue for subsequent execution*/
23052 wpal_list_remove_back(&(pSession->wptPendingQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070023053 while ( NULL != pNode )
23054 {
23055 /*Place it in front of the main pending list*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023056 wpal_list_insert_front( &(pWDICtx->wptPendingQueue), &pNode);
23057 wpal_list_remove_back(&(pSession->wptPendingQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070023058 }
Jeff Johnsone7245742012-09-05 17:12:55 -070023059 pSession->bAssocReqQueued = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023060 }
23061 else
23062 {
23063 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnsone7245742012-09-05 17:12:55 -070023064 "Invalid session id queued up for assoc");
Jeff Johnson295189b2012-06-20 16:38:30 -070023065 WPAL_ASSERT(0);
23066 wpalMemoryFree(pSessionIdElement);
Jeff Johnsone7245742012-09-05 17:12:55 -070023067 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023068 }
Jeff Johnsone7245742012-09-05 17:12:55 -070023069
Jeff Johnson295189b2012-06-20 16:38:30 -070023070 /*Clean this up as it is no longer needed in order to prevent memory leak*/
23071 wpalMemoryFree(pSessionIdElement);
23072 return WDI_STATUS_SUCCESS;
23073}/*WDI_DequeueAssocRequest*/
23074
23075/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023076 @brief Utility function used by the DAL Core to clear any
Jeff Johnson295189b2012-06-20 16:38:30 -070023077 pending requests - all req cb will be called with
23078 failure and the queue will be emptied.
Jeff Johnsone7245742012-09-05 17:12:55 -070023079 @param
23080
Jeff Johnson295189b2012-06-20 16:38:30 -070023081 pWDICtx: - pointer to the WDI control block
Jeff Johnsone7245742012-09-05 17:12:55 -070023082
23083 @see
23084 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070023085*/
23086WDI_Status
23087WDI_ClearPendingRequests
Jeff Johnsone7245742012-09-05 17:12:55 -070023088(
Jeff Johnson295189b2012-06-20 16:38:30 -070023089 WDI_ControlBlockType* pWDICtx
23090)
23091{
Jeff Johnsone7245742012-09-05 17:12:55 -070023092 wpt_list_node* pNode = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070023093 WDI_EventInfoType* pEventDataQueue = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070023094 WDI_ReqStatusCb pfnReqStatusCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070023095 void* pUserData;
23096 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
23097
Jeff Johnsone7245742012-09-05 17:12:55 -070023098 wpal_list_remove_front(&(pWDICtx->wptPendingQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070023099
23100 /*------------------------------------------------------------------------
23101 Go through all the requests and fail them - this will only be called
23102 when device is being stopped or an error was detected - either case the
Jeff Johnsone7245742012-09-05 17:12:55 -070023103 pending requests can no longer be sent down to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070023104 ------------------------------------------------------------------------*/
23105 while( pNode )
23106 {
23107 /*The node actually points to the 1st element inside the Event Data struct -
23108 just cast it back to the struct*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023109 pEventDataQueue = (WDI_EventInfoType*)pNode;
23110
Jeff Johnson295189b2012-06-20 16:38:30 -070023111 WDI_ExtractRequestCBFromEvent(pEventDataQueue, &pfnReqStatusCB, &pUserData);
23112 if ( NULL != pfnReqStatusCB )
23113 {
23114 /*Fail the request*/
23115 pfnReqStatusCB( WDI_STATUS_E_FAILURE, pUserData);
23116 }
23117 /* Free data - that was allocated when queueing */
23118 if ( pEventDataQueue->pEventData != NULL )
23119 {
23120 wpalMemoryFree(pEventDataQueue->pEventData);
23121 }
23122 wpalMemoryFree(pEventDataQueue);
23123
23124 if (wpal_list_remove_front(&(pWDICtx->wptPendingQueue), &pNode) != eWLAN_PAL_STATUS_SUCCESS)
23125 {
23126 break;
23127 }
Jeff Johnsone7245742012-09-05 17:12:55 -070023128 }
23129
Jeff Johnson295189b2012-06-20 16:38:30 -070023130 return WDI_STATUS_SUCCESS;
23131}/*WDI_ClearPendingRequests*/
23132
23133/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023134 @brief Helper routine used to init the BSS Sessions in the WDI control block
23135
23136
23137 @param pWDICtx: pointer to the WLAN DAL context
23138
Jeff Johnson295189b2012-06-20 16:38:30 -070023139 @see
23140*/
23141void
23142WDI_ResetAssocSessions
Jeff Johnsone7245742012-09-05 17:12:55 -070023143(
Jeff Johnson295189b2012-06-20 16:38:30 -070023144 WDI_ControlBlockType* pWDICtx
23145)
23146{
Jeff Johnsone7245742012-09-05 17:12:55 -070023147 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070023148 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
23149
23150 /*-------------------------------------------------------------------------
23151 No Sanity check
23152 -------------------------------------------------------------------------*/
23153 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
23154 {
Jeff Johnsone7245742012-09-05 17:12:55 -070023155 wpalMemoryZero( &pWDICtx->aBSSSessions[i], sizeof(WDI_BSSSessionType) );
Jeff Johnson295189b2012-06-20 16:38:30 -070023156 pWDICtx->aBSSSessions[i].wdiAssocState = WDI_ASSOC_INIT_ST;
23157 pWDICtx->aBSSSessions[i].bcastStaIdx = WDI_STA_INVALID_IDX;
23158 pWDICtx->aBSSSessions[i].ucBSSIdx = WDI_BSS_INVALID_IDX;
23159 }
23160}/*WDI_ResetAssocSessions*/
23161
23162/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023163 @brief Helper routine used to find a session based on the BSSID
23164
23165
23166 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070023167 macBSSID: BSSID of the session
Jeff Johnsone7245742012-09-05 17:12:55 -070023168 pSession: pointer to the session (if found)
23169
Jeff Johnson295189b2012-06-20 16:38:30 -070023170 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070023171 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070023172*/
23173wpt_uint8
23174WDI_FindAssocSession
Jeff Johnsone7245742012-09-05 17:12:55 -070023175(
Jeff Johnson295189b2012-06-20 16:38:30 -070023176 WDI_ControlBlockType* pWDICtx,
23177 wpt_macAddr macBSSID,
23178 WDI_BSSSessionType** ppSession
23179)
23180{
Jeff Johnsone7245742012-09-05 17:12:55 -070023181 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070023182 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
23183
23184 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023185 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070023186 -------------------------------------------------------------------------*/
23187 if ( NULL == ppSession )
23188 {
23189 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023190 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070023191 return WDI_MAX_BSS_SESSIONS;
Jeff Johnson295189b2012-06-20 16:38:30 -070023192 }
23193
Jeff Johnsone7245742012-09-05 17:12:55 -070023194 *ppSession = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070023195
Jeff Johnsone7245742012-09-05 17:12:55 -070023196 /*------------------------------------------------------------------------
23197 Search for a session that matches the BSSID
Jeff Johnson295189b2012-06-20 16:38:30 -070023198 ------------------------------------------------------------------------*/
23199 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
23200 {
Madan Mohan Koyyalamudi35287862012-10-22 14:52:46 -070023201 if ( (pWDICtx->aBSSSessions[i].bInUse == eWLAN_PAL_TRUE) &&
23202 (eWLAN_PAL_TRUE ==
23203 wpalMemoryCompare(pWDICtx->aBSSSessions[i].macBSSID, macBSSID,
23204 WDI_MAC_ADDR_LEN)) )
Jeff Johnson295189b2012-06-20 16:38:30 -070023205 {
23206 /*Found the session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023207 *ppSession = &pWDICtx->aBSSSessions[i];
Jeff Johnson295189b2012-06-20 16:38:30 -070023208 return i;
23209 }
23210 }
23211
Jeff Johnsone7245742012-09-05 17:12:55 -070023212 return i;
Jeff Johnson295189b2012-06-20 16:38:30 -070023213}/*WDI_FindAssocSession*/
23214
23215/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023216 @brief Helper routine used to find a session based on the BSSID
23217
23218
23219 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070023220 ucBSSIdx: BSS Index of the session
23221 ppSession: out pointer to the session (if found)
Jeff Johnsone7245742012-09-05 17:12:55 -070023222
Jeff Johnson295189b2012-06-20 16:38:30 -070023223 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070023224 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070023225*/
23226wpt_uint8
23227WDI_FindAssocSessionByBSSIdx
Jeff Johnsone7245742012-09-05 17:12:55 -070023228(
Jeff Johnson295189b2012-06-20 16:38:30 -070023229 WDI_ControlBlockType* pWDICtx,
23230 wpt_uint16 ucBSSIdx,
23231 WDI_BSSSessionType** ppSession
23232)
23233{
Jeff Johnsone7245742012-09-05 17:12:55 -070023234 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070023235 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
23236
23237 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023238 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070023239 -------------------------------------------------------------------------*/
23240 if ( NULL == ppSession )
23241 {
23242 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023243 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070023244 return WDI_MAX_BSS_SESSIONS;
Jeff Johnson295189b2012-06-20 16:38:30 -070023245 }
23246
Jeff Johnsone7245742012-09-05 17:12:55 -070023247 *ppSession = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070023248
Jeff Johnsone7245742012-09-05 17:12:55 -070023249 /*------------------------------------------------------------------------
23250 Search for a session that matches the BSSID
Jeff Johnson295189b2012-06-20 16:38:30 -070023251 ------------------------------------------------------------------------*/
23252 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
23253 {
23254 if ( ucBSSIdx == pWDICtx->aBSSSessions[i].ucBSSIdx )
23255 {
23256 /*Found the session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023257 *ppSession = &pWDICtx->aBSSSessions[i];
Jeff Johnson295189b2012-06-20 16:38:30 -070023258 return i;
23259 }
23260 }
23261
Jeff Johnsone7245742012-09-05 17:12:55 -070023262 return i;
Jeff Johnson295189b2012-06-20 16:38:30 -070023263}/*WDI_FindAssocSessionByBSSIdx*/
23264
23265/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023266 @brief Helper routine used to find a session based on the BSSID
23267
23268
23269 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070023270 ucBSSIdx: BSS Index of the session
23271 ppSession: out pointer to the session (if found)
Jeff Johnsone7245742012-09-05 17:12:55 -070023272
Jeff Johnson295189b2012-06-20 16:38:30 -070023273 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070023274 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070023275*/
23276wpt_uint8
23277WDI_FindAssocSessionByIdx
Jeff Johnsone7245742012-09-05 17:12:55 -070023278(
Jeff Johnson295189b2012-06-20 16:38:30 -070023279 WDI_ControlBlockType* pWDICtx,
23280 wpt_uint16 usIdx,
23281 WDI_BSSSessionType** ppSession
23282)
23283{
23284 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
23285
23286 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023287 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070023288 -------------------------------------------------------------------------*/
23289 if ( NULL == ppSession || usIdx >= WDI_MAX_BSS_SESSIONS )
23290 {
23291 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023292 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070023293 return WDI_MAX_BSS_SESSIONS;
Jeff Johnson295189b2012-06-20 16:38:30 -070023294 }
23295
23296 /*Found the session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023297 *ppSession = &pWDICtx->aBSSSessions[usIdx];
Jeff Johnson295189b2012-06-20 16:38:30 -070023298
23299 return usIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070023300
Jeff Johnson295189b2012-06-20 16:38:30 -070023301}/*WDI_FindAssocSessionByBSSIdx*/
23302
23303/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023304 @brief Helper routine used to find an empty session in the WDI
Jeff Johnson295189b2012-06-20 16:38:30 -070023305 CB
Jeff Johnsone7245742012-09-05 17:12:55 -070023306
23307
23308 @param pWDICtx: pointer to the WLAN DAL context
23309 pSession: pointer to the session (if found)
23310
Jeff Johnson295189b2012-06-20 16:38:30 -070023311 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070023312 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070023313*/
23314wpt_uint8
23315WDI_FindEmptySession
Jeff Johnsone7245742012-09-05 17:12:55 -070023316(
Jeff Johnson295189b2012-06-20 16:38:30 -070023317 WDI_ControlBlockType* pWDICtx,
23318 WDI_BSSSessionType** ppSession
23319)
23320{
Jeff Johnsone7245742012-09-05 17:12:55 -070023321 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070023322 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
23323 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023324 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070023325 -------------------------------------------------------------------------*/
23326 if ( NULL == ppSession )
23327 {
23328 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023329 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070023330 return WDI_MAX_BSS_SESSIONS;
Jeff Johnson295189b2012-06-20 16:38:30 -070023331 }
23332
Jeff Johnsone7245742012-09-05 17:12:55 -070023333 *ppSession = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070023334
Jeff Johnsone7245742012-09-05 17:12:55 -070023335 /*------------------------------------------------------------------------
23336 Search for a session that it is not in use
Jeff Johnson295189b2012-06-20 16:38:30 -070023337 ------------------------------------------------------------------------*/
23338 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
23339 {
23340 if ( ! pWDICtx->aBSSSessions[i].bInUse )
23341 {
23342 /*Found a session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023343 *ppSession = &pWDICtx->aBSSSessions[i];
Jeff Johnson295189b2012-06-20 16:38:30 -070023344 return i;
23345 }
23346 }
23347
Jeff Johnsone7245742012-09-05 17:12:55 -070023348 return i;
Jeff Johnson295189b2012-06-20 16:38:30 -070023349}/*WDI_FindEmptySession*/
23350
23351
23352/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023353 @brief Helper routine used to get the total count of active
Jeff Johnson295189b2012-06-20 16:38:30 -070023354 sessions
Jeff Johnsone7245742012-09-05 17:12:55 -070023355
23356
23357 @param pWDICtx: pointer to the WLAN DAL context
Hoonki Lee9af07cf2013-04-24 01:21:58 -070023358 macBSSID: pointer to BSSID. If NULL, get all the session.
23359 If not NULL, count ActiveSession by excluding (TRUE) or including (FALSE) skipBSSID.
23360 skipBSSID: if TRUE, get all the sessions except matching to macBSSID. If FALSE, get all session.
23361 This argument is ignored if macBSSID is NULL.
Jeff Johnson295189b2012-06-20 16:38:30 -070023362 @see
23363 @return Number of sessions in use
23364*/
23365wpt_uint8
23366WDI_GetActiveSessionsCount
Jeff Johnsone7245742012-09-05 17:12:55 -070023367(
Hoonki Lee9af07cf2013-04-24 01:21:58 -070023368 WDI_ControlBlockType* pWDICtx,
23369 wpt_macAddr macBSSID,
23370 wpt_boolean skipBSSID
Jeff Johnson295189b2012-06-20 16:38:30 -070023371)
23372{
Jeff Johnsone7245742012-09-05 17:12:55 -070023373 wpt_uint8 i, ucCount = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070023374 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023375
23376 /*------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -070023377 Count all sessions in use
23378 ------------------------------------------------------------------------*/
23379 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
23380 {
Hoonki Lee9af07cf2013-04-24 01:21:58 -070023381 if ( macBSSID && skipBSSID &&
23382 (eWLAN_PAL_TRUE ==
23383 wpalMemoryCompare(pWDICtx->aBSSSessions[i].macBSSID, macBSSID,
23384 WDI_MAC_ADDR_LEN)))
23385 {
23386 continue;
23387 }
23388 else if ( pWDICtx->aBSSSessions[i].bInUse )
23389 {
Jeff Johnson295189b2012-06-20 16:38:30 -070023390 ucCount++;
Hoonki Lee9af07cf2013-04-24 01:21:58 -070023391 }
Jeff Johnson295189b2012-06-20 16:38:30 -070023392 }
23393
Jeff Johnsone7245742012-09-05 17:12:55 -070023394 return ucCount;
Jeff Johnson295189b2012-06-20 16:38:30 -070023395}/*WDI_GetActiveSessionsCount*/
23396
23397/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023398 @brief Helper routine used to delete session in the WDI
Jeff Johnson295189b2012-06-20 16:38:30 -070023399 CB
Jeff Johnsone7245742012-09-05 17:12:55 -070023400
23401
23402 @param pWDICtx: pointer to the WLAN DAL context
23403 pSession: pointer to the session (if found)
23404
Jeff Johnson295189b2012-06-20 16:38:30 -070023405 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070023406 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070023407*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023408void
Jeff Johnson295189b2012-06-20 16:38:30 -070023409WDI_DeleteSession
Jeff Johnsone7245742012-09-05 17:12:55 -070023410(
Jeff Johnson295189b2012-06-20 16:38:30 -070023411 WDI_ControlBlockType* pWDICtx,
23412 WDI_BSSSessionType* ppSession
23413)
23414{
23415 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023416 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070023417 -------------------------------------------------------------------------*/
23418 if ( NULL == ppSession )
23419 {
23420 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023421 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070023422 return ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023423 }
23424
Jeff Johnsone7245742012-09-05 17:12:55 -070023425 /*------------------------------------------------------------------------
23426 Reset the entries int session
Jeff Johnson295189b2012-06-20 16:38:30 -070023427 ------------------------------------------------------------------------*/
23428 wpal_list_destroy(&ppSession->wptPendingQueue);
23429 wpalMemoryZero(ppSession, sizeof(*ppSession));
Jeff Johnsone7245742012-09-05 17:12:55 -070023430 ppSession->wdiAssocState = WDI_ASSOC_INIT_ST;
23431 ppSession->bInUse = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023432 ppSession->wdiBssType = WDI_INFRASTRUCTURE_MODE;
23433 wpal_list_init(&ppSession->wptPendingQueue);
23434
23435}/*WDI_DeleteSession*/
23436
23437/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023438 @brief Utility function to add the broadcast STA to the the STA table.
Jeff Johnson295189b2012-06-20 16:38:30 -070023439 The bcast STA ID is assigned by HAL and must be valid.
Jeff Johnsone7245742012-09-05 17:12:55 -070023440 @param
23441
Jeff Johnson295189b2012-06-20 16:38:30 -070023442 WDI_AddStaParams: - pointer to the WDI Add STA params
23443 usBcastStaIdx: - Broadcast STA index passed by HAL
Jeff Johnsone7245742012-09-05 17:12:55 -070023444
23445 @see
23446 @return void
Jeff Johnson295189b2012-06-20 16:38:30 -070023447*/
23448void
23449WDI_AddBcastSTAtoSTATable
23450(
23451 WDI_ControlBlockType* pWDICtx,
23452 WDI_AddStaParams * staParams,
23453 wpt_uint16 usBcastStaIdx
23454)
23455{
23456 WDI_AddStaParams wdiAddSTAParam = {0};
23457 wpt_macAddr bcastMacAddr = {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF};
23458 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
23459
23460 /*---------------------------------------------------------------------
23461 Sanity check
23462 ---------------------------------------------------------------------*/
23463 if ( NULL == staParams )
23464 {
23465 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023466 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023467
Jeff Johnsone7245742012-09-05 17:12:55 -070023468 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070023469 }
23470
23471 wdiAddSTAParam.bcastDpuIndex = staParams->bcastDpuIndex;
23472 wdiAddSTAParam.bcastDpuSignature = staParams->bcastDpuSignature;
23473 wdiAddSTAParam.bcastMgmtDpuIndex = staParams->bcastMgmtDpuIndex;
23474 wdiAddSTAParam.bcastMgmtDpuSignature = staParams->bcastMgmtDpuSignature;
23475 wdiAddSTAParam.dpuIndex = staParams->dpuIndex;
23476 wdiAddSTAParam.dpuSig = staParams->dpuSig;
23477 wpalMemoryCopy( wdiAddSTAParam.macBSSID, staParams->macBSSID,
23478 WDI_MAC_ADDR_LEN );
23479 wpalMemoryCopy( wdiAddSTAParam.staMacAddr, bcastMacAddr, WDI_MAC_ADDR_LEN );
23480 wdiAddSTAParam.ucBSSIdx = staParams->ucBSSIdx;
23481 wdiAddSTAParam.ucHTCapable = staParams->ucHTCapable;
23482 wdiAddSTAParam.ucRmfEnabled = staParams->ucRmfEnabled;
23483 wdiAddSTAParam.ucStaType = WDI_STA_ENTRY_BCAST;
23484 wdiAddSTAParam.ucWmmEnabled = staParams->ucWmmEnabled;
23485 wdiAddSTAParam.ucSTAIdx = usBcastStaIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070023486
Jeff Johnson295189b2012-06-20 16:38:30 -070023487 (void)WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
23488}
23489
23490/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023491 @brief NV blob will be divided into fragments of size 4kb and
23492 Sent to HAL
23493
23494 @param pWDICtx: pointer to the WLAN DAL context
23495 pEventData: pointer to the event information structure
23496
Jeff Johnson295189b2012-06-20 16:38:30 -070023497 @see
23498 @return Result of the function call
23499 */
23500
23501WDI_Status WDI_SendNvBlobReq
Jeff Johnsone7245742012-09-05 17:12:55 -070023502(
Jeff Johnson295189b2012-06-20 16:38:30 -070023503 WDI_ControlBlockType* pWDICtx,
23504 WDI_EventInfoType* pEventData
23505)
23506{
23507
23508 tHalNvImgDownloadReqMsg halNvImgDownloadParam;
23509 wpt_uint8* pSendBuffer = NULL;
23510 wpt_uint16 usDataOffset = 0;
23511 wpt_uint16 usSendSize = 0;
23512 wpt_uint16 usCurrentFragmentSize =0;
23513 wpt_uint8* pSrcBuffer = NULL;
23514 WDI_NvDownloadReqParamsType* pwdiNvDownloadReqParams =NULL ;
23515 WDI_NvDownloadRspCb wdiNvDownloadRspCb;
23516
23517 wdiNvDownloadRspCb = (WDI_NvDownloadRspCb)pEventData->pCBfnc;
23518 WDI_ASSERT(NULL != wdiNvDownloadRspCb);
23519 pwdiNvDownloadReqParams = (WDI_NvDownloadReqParamsType*)pEventData->pEventData;
23520
Jeff Johnsone7245742012-09-05 17:12:55 -070023521 /* Sanity Check is done by the caller */
Jeff Johnson295189b2012-06-20 16:38:30 -070023522 pSrcBuffer =(wpt_uint8 *) pwdiNvDownloadReqParams->wdiBlobInfo.pBlobAddress;
23523
23524 /* Update the current Fragment Number */
23525 pWDICtx->wdiNvBlobInfo.usCurrentFragment += 1;
23526
23527 /*Update the HAL REQ structure */
23528 /*HAL maintaining the fragment count as 0,1,2...n where at WDI it is represented as 1,2,3.. n*/
23529 halNvImgDownloadParam.nvImageReqParams.fragNumber =
23530 pWDICtx->wdiNvBlobInfo.usCurrentFragment-1;
23531
23532 /* Divide the NV Image to size of 'FRAGMENT_SIZE' fragments and send it to HAL.
Jeff Johnsone7245742012-09-05 17:12:55 -070023533 If the size of the Image is less than 'FRAGMENT_SIZE' then in one iteration total
Jeff Johnson295189b2012-06-20 16:38:30 -070023534 image will be sent to HAL*/
23535
Jeff Johnsone7245742012-09-05 17:12:55 -070023536 if(pWDICtx->wdiNvBlobInfo.usTotalFragment
Jeff Johnson295189b2012-06-20 16:38:30 -070023537 == pWDICtx->wdiNvBlobInfo.usCurrentFragment)
Jeff Johnsone7245742012-09-05 17:12:55 -070023538 {
Jeff Johnson295189b2012-06-20 16:38:30 -070023539 /* Taking care of boundry condition */
Jeff Johnsone7245742012-09-05 17:12:55 -070023540 if( !(usCurrentFragmentSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070023541 pwdiNvDownloadReqParams->wdiBlobInfo.uBlobSize%FRAGMENT_SIZE ))
23542 usCurrentFragmentSize = FRAGMENT_SIZE;
23543
23544 /*Update the HAL REQ structure */
23545 halNvImgDownloadParam.nvImageReqParams.isLastFragment = 1;
23546 halNvImgDownloadParam.nvImageReqParams.nvImgBufferSize= usCurrentFragmentSize;
23547
23548 }
23549 else
Jeff Johnsone7245742012-09-05 17:12:55 -070023550 {
Jeff Johnson295189b2012-06-20 16:38:30 -070023551 usCurrentFragmentSize = FRAGMENT_SIZE;
23552
23553 /*Update the HAL REQ structure */
23554 halNvImgDownloadParam.nvImageReqParams.isLastFragment =0;
23555 halNvImgDownloadParam.nvImageReqParams.nvImgBufferSize = usCurrentFragmentSize;
23556 }
23557
23558 /*-----------------------------------------------------------------------
23559 Get message buffer
23560 -----------------------------------------------------------------------*/
23561 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,WDI_NV_DOWNLOAD_REQ,
23562 sizeof(halNvImgDownloadParam.nvImageReqParams)+ usCurrentFragmentSize,
23563 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070023564 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070023565 (usDataOffset + sizeof(halNvImgDownloadParam.nvImageReqParams) + usCurrentFragmentSize )))
23566 {
23567 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080023568 "Unable to get send buffer in NV Download req %p %p ",
Jeff Johnson295189b2012-06-20 16:38:30 -070023569 pEventData, pwdiNvDownloadReqParams);
23570 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070023571 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023572 }
23573
23574 /* Copying the Hal NV download REQ structure */
Jeff Johnsone7245742012-09-05 17:12:55 -070023575 wpalMemoryCopy(pSendBuffer + usDataOffset ,
Jeff Johnson295189b2012-06-20 16:38:30 -070023576 &halNvImgDownloadParam.nvImageReqParams ,sizeof(tHalNvImgDownloadReqParams));
23577
23578 /* Appending the NV image fragment */
23579 wpalMemoryCopy(pSendBuffer + usDataOffset + sizeof(tHalNvImgDownloadReqParams),
23580 (void *)(pSrcBuffer + halNvImgDownloadParam.nvImageReqParams.fragNumber * FRAGMENT_SIZE),
23581 usCurrentFragmentSize);
23582
23583 pWDICtx->wdiReqStatusCB = pwdiNvDownloadReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070023584 pWDICtx->pReqStatusUserData = pwdiNvDownloadReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070023585
Jeff Johnsone7245742012-09-05 17:12:55 -070023586 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
23587 wdiNvDownloadRspCb, pEventData->pUserData,
Jeff Johnson295189b2012-06-20 16:38:30 -070023588 WDI_NV_DOWNLOAD_RESP);
23589
23590}
Jeff Johnsone7245742012-09-05 17:12:55 -070023591/*============================================================================
23592 Helper inline functions for
Jeff Johnson295189b2012-06-20 16:38:30 -070023593 ============================================================================*/
23594/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023595 @brief Helper routine used to find a session based on the BSSID
23596 @param pContext: pointer to the WLAN DAL context
23597 @param pDPContext: pointer to the Datapath context
23598
Jeff Johnson295189b2012-06-20 16:38:30 -070023599 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070023600 @return
Jeff Johnson295189b2012-06-20 16:38:30 -070023601*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023602WPT_INLINE void
Jeff Johnson295189b2012-06-20 16:38:30 -070023603WDI_DS_AssignDatapathContext (void *pContext, void *pDPContext)
23604{
23605 WDI_ControlBlockType *pCB = (WDI_ControlBlockType *)pContext;
23606
23607 pCB->pDPContext = pDPContext;
23608 return;
23609}
23610
23611/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023612 @brief Helper routine used to find a session based on the BSSID
23613
23614
23615 @param pContext: pointer to the WLAN DAL context
23616
Jeff Johnson295189b2012-06-20 16:38:30 -070023617 @see
23618 @return pointer to Datapath context
23619*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023620WPT_INLINE void *
Jeff Johnson295189b2012-06-20 16:38:30 -070023621WDI_DS_GetDatapathContext (void *pContext)
23622{
23623 WDI_ControlBlockType *pCB = (WDI_ControlBlockType *)pContext;
23624 return pCB->pDPContext;
23625}
23626/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023627 @brief Helper routine used to find a session based on the BSSID
23628
23629
23630 @param pContext: pointer to the WLAN DAL context
23631 @param pDTDriverContext: pointer to the Transport Driver context
23632
Jeff Johnson295189b2012-06-20 16:38:30 -070023633 @see
23634 @return void
23635*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023636WPT_INLINE void
Jeff Johnson295189b2012-06-20 16:38:30 -070023637WDT_AssignTransportDriverContext (void *pContext, void *pDTDriverContext)
23638{
23639 WDI_ControlBlockType *pCB = (WDI_ControlBlockType *)pContext;
23640
23641 pCB->pDTDriverContext = pDTDriverContext;
Jeff Johnsone7245742012-09-05 17:12:55 -070023642 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070023643}
23644
23645/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023646 @brief Helper routine used to find a session based on the BSSID
23647
23648
23649 @param pWDICtx: pointer to the WLAN DAL context
23650
Jeff Johnson295189b2012-06-20 16:38:30 -070023651 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070023652 @return pointer to datapath context
Jeff Johnson295189b2012-06-20 16:38:30 -070023653*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023654WPT_INLINE void *
Jeff Johnson295189b2012-06-20 16:38:30 -070023655WDT_GetTransportDriverContext (void *pContext)
23656{
23657 WDI_ControlBlockType *pCB = (WDI_ControlBlockType *)pContext;
Jeff Johnsone7245742012-09-05 17:12:55 -070023658 return(pCB->pDTDriverContext);
Jeff Johnson295189b2012-06-20 16:38:30 -070023659}
23660
Jeff Johnsone7245742012-09-05 17:12:55 -070023661/*============================================================================
Jeff Johnson295189b2012-06-20 16:38:30 -070023662 Helper inline converters
23663 ============================================================================*/
23664/*Convert WDI driver type into HAL driver type*/
23665WPT_STATIC WPT_INLINE WDI_Status
23666WDI_HAL_2_WDI_STATUS
23667(
23668 eHalStatus halStatus
23669)
23670{
Jeff Johnsone7245742012-09-05 17:12:55 -070023671 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070023672 the chances of getting inlined*/
23673 switch( halStatus )
23674 {
23675 case eHAL_STATUS_SUCCESS:
23676 case eHAL_STATUS_ADD_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO:
23677 case eHAL_STATUS_DEL_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO:
23678 return WDI_STATUS_SUCCESS;
23679 case eHAL_STATUS_FAILURE:
23680 return WDI_STATUS_E_FAILURE;
23681 case eHAL_STATUS_FAILED_ALLOC:
Jeff Johnsone7245742012-09-05 17:12:55 -070023682 return WDI_STATUS_MEM_FAILURE;
23683 /*The rest of the HAL error codes must be kept hidden from the UMAC as
Jeff Johnson295189b2012-06-20 16:38:30 -070023684 they refer to specific internal modules of our device*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023685 default:
23686 return WDI_STATUS_DEV_INTERNAL_FAILURE;
23687 }
Jeff Johnson295189b2012-06-20 16:38:30 -070023688
Jeff Johnsone7245742012-09-05 17:12:55 -070023689 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023690}/*WDI_HAL_2_WDI_STATUS*/
23691
23692/*Convert WDI request type into HAL request type*/
23693WPT_STATIC WPT_INLINE tHalHostMsgType
23694WDI_2_HAL_REQ_TYPE
23695(
23696 WDI_RequestEnumType wdiReqType
23697)
23698{
Jeff Johnsone7245742012-09-05 17:12:55 -070023699 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070023700 the chances of getting inlined*/
23701 switch( wdiReqType )
Jeff Johnsone7245742012-09-05 17:12:55 -070023702 {
Jeff Johnson295189b2012-06-20 16:38:30 -070023703 case WDI_START_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023704 return WLAN_HAL_START_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023705 case WDI_STOP_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023706 return WLAN_HAL_STOP_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023707 case WDI_INIT_SCAN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023708 return WLAN_HAL_INIT_SCAN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023709 case WDI_START_SCAN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023710 return WLAN_HAL_START_SCAN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023711 case WDI_END_SCAN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023712 return WLAN_HAL_END_SCAN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023713 case WDI_FINISH_SCAN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023714 return WLAN_HAL_FINISH_SCAN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023715 case WDI_JOIN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023716 return WLAN_HAL_JOIN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023717 case WDI_CONFIG_BSS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023718 return WLAN_HAL_CONFIG_BSS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023719 case WDI_DEL_BSS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023720 return WLAN_HAL_DELETE_BSS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023721 case WDI_POST_ASSOC_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023722 return WLAN_HAL_POST_ASSOC_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023723 case WDI_DEL_STA_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023724 return WLAN_HAL_DELETE_STA_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023725 case WDI_SET_BSS_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023726 return WLAN_HAL_SET_BSSKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023727 case WDI_RMV_BSS_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023728 return WLAN_HAL_RMV_BSSKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023729 case WDI_SET_STA_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023730 return WLAN_HAL_SET_STAKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023731 case WDI_RMV_STA_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023732 return WLAN_HAL_RMV_STAKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023733 case WDI_SET_STA_BCAST_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023734 return WLAN_HAL_SET_BCASTKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023735 case WDI_RMV_STA_BCAST_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023736 //Some conflict in the old code - check this: return WLAN_HAL_RMV_BCASTKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023737 return WLAN_HAL_RMV_STAKEY_REQ;
23738 case WDI_ADD_TS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023739 return WLAN_HAL_ADD_TS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023740 case WDI_DEL_TS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023741 return WLAN_HAL_DEL_TS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023742 case WDI_UPD_EDCA_PRMS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023743 return WLAN_HAL_UPD_EDCA_PARAMS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023744 case WDI_ADD_BA_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023745 return WLAN_HAL_ADD_BA_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023746 case WDI_DEL_BA_REQ:
23747 return WLAN_HAL_DEL_BA_REQ;
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -080023748#ifdef FEATURE_WLAN_ESE
Jeff Johnson295189b2012-06-20 16:38:30 -070023749 case WDI_TSM_STATS_REQ:
23750 return WLAN_HAL_TSM_STATS_REQ;
23751#endif
23752 case WDI_CH_SWITCH_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023753 return WLAN_HAL_CH_SWITCH_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023754 case WDI_CONFIG_STA_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023755 return WLAN_HAL_CONFIG_STA_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023756 case WDI_SET_LINK_ST_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023757 return WLAN_HAL_SET_LINK_ST_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023758 case WDI_GET_STATS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023759 return WLAN_HAL_GET_STATS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023760 case WDI_UPDATE_CFG_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023761 return WLAN_HAL_UPDATE_CFG_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023762 case WDI_ADD_BA_SESSION_REQ:
23763 return WLAN_HAL_ADD_BA_SESSION_REQ;
23764 case WDI_TRIGGER_BA_REQ:
23765 return WLAN_HAL_TRIGGER_BA_REQ;
23766 case WDI_UPD_BCON_PRMS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023767 return WLAN_HAL_UPDATE_BEACON_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023768 case WDI_SND_BCON_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023769 return WLAN_HAL_SEND_BEACON_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023770 case WDI_UPD_PROBE_RSP_TEMPLATE_REQ:
23771 return WLAN_HAL_UPDATE_PROBE_RSP_TEMPLATE_REQ;
23772 case WDI_SET_MAX_TX_POWER_REQ:
23773 return WLAN_HAL_SET_MAX_TX_POWER_REQ;
Arif Hussaina5ebce02013-08-09 15:09:58 -070023774 case WDI_SET_MAX_TX_POWER_PER_BAND_REQ:
23775 return WLAN_HAL_SET_MAX_TX_POWER_PER_BAND_REQ;
schang86c22c42013-03-13 18:41:24 -070023776 case WDI_SET_TX_POWER_REQ:
23777 return WLAN_HAL_SET_TX_POWER_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023778 case WDI_P2P_GO_NOTICE_OF_ABSENCE_REQ:
23779 return WLAN_HAL_SET_P2P_GONOA_REQ;
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053023780#ifdef FEATURE_WLAN_TDLS
23781 case WDI_TDLS_LINK_ESTABLISH_REQ:
23782 return WLAN_HAL_TDLS_LINK_ESTABLISHED_REQ;
Atul Mittalc0f739f2014-07-31 13:47:47 +053023783 case WDI_TDLS_CHAN_SWITCH_REQ:
23784 return WLAN_HAL_TDLS_CHAN_SWITCH_REQ;
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053023785#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070023786 case WDI_ENTER_IMPS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023787 return WLAN_HAL_ENTER_IMPS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023788 case WDI_EXIT_IMPS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023789 return WLAN_HAL_EXIT_IMPS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023790 case WDI_ENTER_BMPS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023791 return WLAN_HAL_ENTER_BMPS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023792 case WDI_EXIT_BMPS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023793 return WLAN_HAL_EXIT_BMPS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023794 case WDI_ENTER_UAPSD_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023795 return WLAN_HAL_ENTER_UAPSD_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023796 case WDI_EXIT_UAPSD_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023797 return WLAN_HAL_EXIT_UAPSD_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023798 case WDI_SET_UAPSD_PARAM_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023799 return WLAN_HAL_SET_UAPSD_AC_PARAMS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023800 case WDI_UPDATE_UAPSD_PARAM_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023801 return WLAN_HAL_UPDATE_UAPSD_PARAM_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023802 case WDI_CONFIGURE_RXP_FILTER_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023803 return WLAN_HAL_CONFIGURE_RXP_FILTER_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023804 case WDI_SET_BEACON_FILTER_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023805 return WLAN_HAL_ADD_BCN_FILTER_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023806 case WDI_REM_BEACON_FILTER_REQ:
23807 return WLAN_HAL_REM_BCN_FILTER_REQ;
23808 case WDI_SET_RSSI_THRESHOLDS_REQ:
23809 return WLAN_HAL_SET_RSSI_THRESH_REQ;
23810 case WDI_HOST_OFFLOAD_REQ:
23811 return WLAN_HAL_HOST_OFFLOAD_REQ;
23812 case WDI_WOWL_ADD_BC_PTRN_REQ:
23813 return WLAN_HAL_ADD_WOWL_BCAST_PTRN;
23814 case WDI_WOWL_DEL_BC_PTRN_REQ:
23815 return WLAN_HAL_DEL_WOWL_BCAST_PTRN;
23816 case WDI_WOWL_ENTER_REQ:
23817 return WLAN_HAL_ENTER_WOWL_REQ;
23818 case WDI_WOWL_EXIT_REQ:
23819 return WLAN_HAL_EXIT_WOWL_REQ;
23820 case WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ:
23821 return WLAN_HAL_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ;
23822 case WDI_NV_DOWNLOAD_REQ:
23823 return WLAN_HAL_DOWNLOAD_NV_REQ;
23824 case WDI_FLUSH_AC_REQ:
23825 return WLAN_HAL_TL_HAL_FLUSH_AC_REQ;
23826 case WDI_BTAMP_EVENT_REQ:
23827 return WLAN_HAL_SIGNAL_BTAMP_EVENT_REQ;
23828#ifdef WLAN_FEATURE_VOWIFI_11R
23829 case WDI_AGGR_ADD_TS_REQ:
23830 return WLAN_HAL_AGGR_ADD_TS_REQ;
23831#endif /* WLAN_FEATURE_VOWIFI_11R */
Jeff Johnson295189b2012-06-20 16:38:30 -070023832 case WDI_FTM_CMD_REQ:
23833 return WLAN_HAL_PROCESS_PTT_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023834 case WDI_ADD_STA_SELF_REQ:
23835 return WLAN_HAL_ADD_STA_SELF_REQ;
23836 case WDI_DEL_STA_SELF_REQ:
23837 return WLAN_HAL_DEL_STA_SELF_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070023838#ifdef FEATURE_OEM_DATA_SUPPORT
23839 case WDI_START_OEM_DATA_REQ:
23840 return WLAN_HAL_START_OEM_DATA_REQ;
23841#endif /* FEATURE_OEM_DATA_SUPPORT */
Jeff Johnson295189b2012-06-20 16:38:30 -070023842 case WDI_HOST_RESUME_REQ:
23843 return WLAN_HAL_HOST_RESUME_REQ;
23844 case WDI_HOST_SUSPEND_IND:
23845 return WLAN_HAL_HOST_SUSPEND_IND;
Madan Mohan Koyyalamudi01cba042013-01-10 21:56:05 -080023846 case WDI_TRAFFIC_STATS_IND:
23847 return WLAN_HAL_CLASS_B_STATS_IND;
Chet Lanctot186b5732013-03-18 10:26:30 -070023848#ifdef WLAN_FEATURE_11W
23849 case WDI_EXCLUDE_UNENCRYPTED_IND:
23850 return WLAN_HAL_EXCLUDE_UNENCRYPTED_IND;
23851#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070023852 case WDI_KEEP_ALIVE_REQ:
23853 return WLAN_HAL_KEEP_ALIVE_REQ;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070023854#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070023855 case WDI_ROAM_SCAN_OFFLOAD_REQ:
23856 return WLAN_ROAM_SCAN_OFFLOAD_REQ;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070023857#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070023858#ifdef FEATURE_WLAN_SCAN_PNO
23859 case WDI_SET_PREF_NETWORK_REQ:
23860 return WLAN_HAL_SET_PREF_NETWORK_REQ;
23861 case WDI_SET_RSSI_FILTER_REQ:
23862 return WLAN_HAL_SET_RSSI_FILTER_REQ;
23863 case WDI_UPDATE_SCAN_PARAMS_REQ:
23864 return WLAN_HAL_UPDATE_SCAN_PARAM_REQ;
23865#endif // FEATURE_WLAN_SCAN_PNO
23866 case WDI_SET_TX_PER_TRACKING_REQ:
23867 return WLAN_HAL_SET_TX_PER_TRACKING_REQ;
23868#ifdef WLAN_FEATURE_PACKET_FILTERING
23869 case WDI_8023_MULTICAST_LIST_REQ:
23870 return WLAN_HAL_8023_MULTICAST_LIST_REQ;
23871 case WDI_RECEIVE_FILTER_SET_FILTER_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023872 return WLAN_HAL_SET_PACKET_FILTER_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023873 case WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ:
23874 return WLAN_HAL_PACKET_FILTER_MATCH_COUNT_REQ;
23875 case WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ:
23876 return WLAN_HAL_CLEAR_PACKET_FILTER_REQ;
23877#endif // WLAN_FEATURE_PACKET_FILTERING
23878 case WDI_HAL_DUMP_CMD_REQ:
23879 return WLAN_HAL_DUMP_COMMAND_REQ;
23880#ifdef WLAN_FEATURE_GTK_OFFLOAD
23881 case WDI_GTK_OFFLOAD_REQ:
23882 return WLAN_HAL_GTK_OFFLOAD_REQ;
23883 case WDI_GTK_OFFLOAD_GETINFO_REQ:
23884 return WLAN_HAL_GTK_OFFLOAD_GETINFO_REQ;
23885#endif /* WLAN_FEATURE_GTK_OFFLOAD */
23886
23887 case WDI_INIT_SCAN_CON_REQ:
23888 return WLAN_HAL_INIT_SCAN_CON_REQ;
23889 case WDI_SET_POWER_PARAMS_REQ:
23890 return WLAN_HAL_SET_POWER_PARAMS_REQ;
23891 case WDI_SET_TM_LEVEL_REQ:
23892 return WLAN_HAL_SET_THERMAL_MITIGATION_REQ;
23893 case WDI_FEATURE_CAPS_EXCHANGE_REQ:
23894 return WLAN_HAL_FEATURE_CAPS_EXCHANGE_REQ;
Mohit Khanna4a70d262012-09-11 16:30:12 -070023895#ifdef WLAN_FEATURE_11AC
23896 case WDI_UPDATE_VHT_OP_MODE_REQ:
23897 return WLAN_HAL_UPDATE_VHT_OP_MODE_REQ;
23898#endif
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -080023899 case WDI_GET_ROAM_RSSI_REQ:
23900 return WLAN_HAL_GET_ROAM_RSSI_REQ;
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +053023901 case WDI_DHCP_START_IND:
23902 return WLAN_HAL_DHCP_START_IND;
23903 case WDI_DHCP_STOP_IND:
23904 return WLAN_HAL_DHCP_STOP_IND;
Leo Chang9056f462013-08-01 19:21:11 -070023905#ifdef FEATURE_WLAN_LPHB
23906 case WDI_LPHB_CFG_REQ:
23907 return WLAN_HAL_LPHB_CFG_REQ;
23908#endif /* FEATURE_WLAN_LPHB */
Yue Mab9c86f42013-08-14 15:59:08 -070023909 case WDI_ADD_PERIODIC_TX_PATTERN_IND:
23910 return WLAN_HAL_ADD_PERIODIC_TX_PTRN_IND;
23911 case WDI_DEL_PERIODIC_TX_PATTERN_IND:
23912 return WLAN_HAL_DEL_PERIODIC_TX_PTRN_IND;
23913
Rajeev79dbe4c2013-10-05 11:03:42 +053023914#ifdef FEATURE_WLAN_BATCH_SCAN
23915 case WDI_SET_BATCH_SCAN_REQ:
23916 return WLAN_HAL_BATCHSCAN_SET_REQ;
23917 case WDI_STOP_BATCH_SCAN_IND:
23918 return WLAN_HAL_BATCHSCAN_STOP_IND;
23919 case WDI_TRIGGER_BATCH_SCAN_RESULT_IND:
23920 return WLAN_HAL_BATCHSCAN_TRIGGER_RESULT_IND;
23921#endif
Chittajit Mitraf5413a42013-10-18 14:20:08 -070023922 case WDI_RATE_UPDATE_IND:
23923 return WLAN_HAL_RATE_UPDATE_IND;
Sandeep Puligillac3450eb2014-03-06 18:10:57 +053023924 case WDI_START_HT40_OBSS_SCAN_IND:
23925 return WLAN_HAL_START_HT40_OBSS_SCAN_IND;
23926 case WDI_STOP_HT40_OBSS_SCAN_IND:
23927 return WLAN_HAL_STOP_HT40_OBSS_SCAN_IND;
Manjunathappa Prakash86f78ca2014-02-10 18:09:15 -080023928 case WDI_UPDATE_CHAN_REQ:
23929 return WLAN_HAL_UPDATE_CHANNEL_LIST_REQ;
Kalikinkar dhara1e83b772014-02-06 12:59:22 -080023930 case WDI_CH_SWITCH_REQ_V1:
23931 return WLAN_HAL_CH_SWITCH_V1_REQ;
c_hpothu92367912014-05-01 15:18:17 +053023932 case WDI_GET_BCN_MISS_RATE_REQ:
23933 return WLAN_HAL_GET_BCN_MISS_RATE_REQ;
Sunil Duttbd736ed2014-05-26 21:19:41 +053023934
23935#ifdef WLAN_FEATURE_LINK_LAYER_STATS
23936 case WDI_LL_STATS_SET_REQ:
23937 return WLAN_HAL_LL_SET_STATS_REQ;
23938 case WDI_LL_STATS_GET_REQ:
23939 return WLAN_HAL_LL_GET_STATS_REQ;
23940 case WDI_LL_STATS_CLEAR_REQ:
23941 return WLAN_HAL_LL_CLEAR_STATS_REQ;
23942#endif
Dino Mycle41bdc942014-06-10 11:30:24 +053023943#ifdef WLAN_FEATURE_EXTSCAN
23944 case WDI_EXTSCAN_START_REQ:
23945 return WLAN_HAL_EXT_SCAN_START_REQ;
23946 case WDI_EXTSCAN_STOP_REQ:
23947 return WLAN_HAL_EXT_SCAN_STOP_REQ;
23948 case WDI_EXTSCAN_GET_CACHED_RESULTS_REQ:
23949 return WLAN_HAL_EXT_SCAN_GET_SCAN_REQ;
23950 case WDI_EXTSCAN_GET_CAPABILITIES_REQ:
23951 return WLAN_HAL_EXT_SCAN_GET_CAP_REQ;
23952 case WDI_EXTSCAN_SET_BSSID_HOTLIST_REQ:
23953 return WLAN_HAL_BSSID_HOTLIST_SET_REQ;
23954 case WDI_EXTSCAN_RESET_BSSID_HOTLIST_REQ:
23955 return WLAN_HAL_BSSID_HOTLIST_RESET_REQ;
23956 case WDI_EXTSCAN_SET_SIGNF_RSSI_CHANGE_REQ:
23957 return WLAN_HAL_SIG_RSSI_SET_REQ;
23958 case WDI_EXTSCAN_RESET_SIGNF_RSSI_CHANGE_REQ:
23959 return WLAN_HAL_SIG_RSSI_RESET_REQ;
23960#endif /* WLAN_FEATURE_EXTSCAN */
Siddharth Bhal171788a2014-09-29 21:02:40 +053023961 case WDI_SPOOF_MAC_ADDR_REQ:
23962 return WLAN_HAL_MAC_SPOOFED_SCAN_REQ;
Abhishek Singh85b74712014-10-08 11:38:19 +053023963 case WDI_GET_FW_STATS_REQ:
23964 return WLAN_HAL_FW_STATS_REQ;
Srinivas Dasari4dae48f2014-11-26 21:14:16 +053023965 case WDI_ENCRYPT_MSG_REQ:
23966 return WLAN_HAL_ENCRYPT_DATA_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023967 default:
Jeff Johnsone7245742012-09-05 17:12:55 -070023968 return WLAN_HAL_MSG_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070023969 }
Jeff Johnsone7245742012-09-05 17:12:55 -070023970
Jeff Johnson295189b2012-06-20 16:38:30 -070023971}/*WDI_2_HAL_REQ_TYPE*/
23972
23973/*Convert WDI response type into HAL response type*/
23974WPT_STATIC WPT_INLINE WDI_ResponseEnumType
23975HAL_2_WDI_RSP_TYPE
23976(
23977 tHalHostMsgType halMsg
23978)
23979{
Jeff Johnsone7245742012-09-05 17:12:55 -070023980 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070023981 the chances of getting inlined*/
23982 switch( halMsg )
23983 {
23984 case WLAN_HAL_START_RSP:
23985 return WDI_START_RESP;
23986 case WLAN_HAL_STOP_RSP:
23987 return WDI_STOP_RESP;
23988 case WLAN_HAL_INIT_SCAN_RSP:
23989 return WDI_INIT_SCAN_RESP;
23990 case WLAN_HAL_START_SCAN_RSP:
23991 return WDI_START_SCAN_RESP;
23992 case WLAN_HAL_END_SCAN_RSP:
23993 return WDI_END_SCAN_RESP;
23994 case WLAN_HAL_FINISH_SCAN_RSP:
23995 return WDI_FINISH_SCAN_RESP;
23996 case WLAN_HAL_CONFIG_STA_RSP:
23997 return WDI_CONFIG_STA_RESP;
23998 case WLAN_HAL_DELETE_STA_RSP:
23999 return WDI_DEL_STA_RESP;
24000 case WLAN_HAL_CONFIG_BSS_RSP:
24001 return WDI_CONFIG_BSS_RESP;
24002 case WLAN_HAL_DELETE_BSS_RSP:
24003 return WDI_DEL_BSS_RESP;
24004 case WLAN_HAL_JOIN_RSP:
24005 return WDI_JOIN_RESP;
24006 case WLAN_HAL_POST_ASSOC_RSP:
24007 return WDI_POST_ASSOC_RESP;
24008 case WLAN_HAL_SET_BSSKEY_RSP:
24009 return WDI_SET_BSS_KEY_RESP;
24010 case WLAN_HAL_SET_STAKEY_RSP:
24011 return WDI_SET_STA_KEY_RESP;
24012 case WLAN_HAL_RMV_BSSKEY_RSP:
24013 return WDI_RMV_BSS_KEY_RESP;
24014 case WLAN_HAL_RMV_STAKEY_RSP:
24015 return WDI_RMV_STA_KEY_RESP;
24016 case WLAN_HAL_SET_BCASTKEY_RSP:
24017 return WDI_SET_STA_BCAST_KEY_RESP;
24018 //Some conflict in the old code - check this: case WLAN_HAL_RMV_BCASTKEY_RSP:
24019 // return WDI_RMV_STA_BCAST_KEY_RESP;
24020 case WLAN_HAL_ADD_TS_RSP:
24021 return WDI_ADD_TS_RESP;
24022 case WLAN_HAL_DEL_TS_RSP:
24023 return WDI_DEL_TS_RESP;
24024 case WLAN_HAL_UPD_EDCA_PARAMS_RSP:
24025 return WDI_UPD_EDCA_PRMS_RESP;
24026 case WLAN_HAL_ADD_BA_RSP:
24027 return WDI_ADD_BA_RESP;
24028 case WLAN_HAL_DEL_BA_RSP:
24029 return WDI_DEL_BA_RESP;
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -080024030#ifdef FEATURE_WLAN_ESE
Jeff Johnson295189b2012-06-20 16:38:30 -070024031 case WLAN_HAL_TSM_STATS_RSP:
24032 return WDI_TSM_STATS_RESP;
24033#endif
24034 case WLAN_HAL_CH_SWITCH_RSP:
24035 return WDI_CH_SWITCH_RESP;
24036 case WLAN_HAL_SET_LINK_ST_RSP:
24037 return WDI_SET_LINK_ST_RESP;
24038 case WLAN_HAL_GET_STATS_RSP:
24039 return WDI_GET_STATS_RESP;
24040 case WLAN_HAL_UPDATE_CFG_RSP:
24041 return WDI_UPDATE_CFG_RESP;
24042 case WLAN_HAL_ADD_BA_SESSION_RSP:
24043 return WDI_ADD_BA_SESSION_RESP;
24044 case WLAN_HAL_TRIGGER_BA_RSP:
24045 return WDI_TRIGGER_BA_RESP;
24046 case WLAN_HAL_UPDATE_BEACON_RSP:
24047 return WDI_UPD_BCON_PRMS_RESP;
24048 case WLAN_HAL_SEND_BEACON_RSP:
24049 return WDI_SND_BCON_RESP;
24050 case WLAN_HAL_UPDATE_PROBE_RSP_TEMPLATE_RSP:
24051 return WDI_UPD_PROBE_RSP_TEMPLATE_RESP;
24052 /*Indications*/
24053 case WLAN_HAL_RSSI_NOTIFICATION_IND:
24054 return WDI_HAL_RSSI_NOTIFICATION_IND;
24055 case WLAN_HAL_MISSED_BEACON_IND:
24056 return WDI_HAL_MISSED_BEACON_IND;
24057 case WLAN_HAL_UNKNOWN_ADDR2_FRAME_RX_IND:
24058 return WDI_HAL_UNKNOWN_ADDR2_FRAME_RX_IND;
24059 case WLAN_HAL_MIC_FAILURE_IND:
24060 return WDI_HAL_MIC_FAILURE_IND;
24061 case WLAN_HAL_FATAL_ERROR_IND:
24062 return WDI_HAL_FATAL_ERROR_IND;
24063 case WLAN_HAL_DELETE_STA_CONTEXT_IND:
24064 return WDI_HAL_DEL_STA_IND;
24065 case WLAN_HAL_COEX_IND:
24066 return WDI_HAL_COEX_IND;
24067 case WLAN_HAL_OTA_TX_COMPL_IND:
24068 return WDI_HAL_TX_COMPLETE_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070024069 case WLAN_HAL_P2P_NOA_ATTR_IND:
24070 return WDI_HAL_P2P_NOA_ATTR_IND;
Viral Modid86bde22012-12-10 13:09:21 -080024071 case WLAN_HAL_P2P_NOA_START_IND:
24072 return WDI_HAL_P2P_NOA_START_IND;
Abhishek Singh66c16762014-08-14 19:13:19 +053024073 case WLAN_HAL_DEL_BA_IND:
24074 return WDI_HAL_DEL_BA_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070024075 case WLAN_HAL_TX_PER_HIT_IND:
24076 return WDI_HAL_TX_PER_HIT_IND;
24077 case WLAN_HAL_SET_MAX_TX_POWER_RSP:
24078 return WDI_SET_MAX_TX_POWER_RESP;
Arif Hussaina5ebce02013-08-09 15:09:58 -070024079 case WLAN_HAL_SET_MAX_TX_POWER_PER_BAND_RSP:
24080 return WDI_SET_MAX_TX_POWER_PER_BAND_RSP;
schang86c22c42013-03-13 18:41:24 -070024081 case WLAN_HAL_SET_TX_POWER_RSP:
24082 return WDI_SET_TX_POWER_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070024083 case WLAN_HAL_SET_P2P_GONOA_RSP:
24084 return WDI_P2P_GO_NOTICE_OF_ABSENCE_RESP;
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053024085#ifdef FEATURE_WLAN_TDLS
24086 case WLAN_HAL_TDLS_LINK_ESTABLISHED_RSP:
24087 return WDI_TDLS_LINK_ESTABLISH_REQ_RESP;
Atul Mittalc0f739f2014-07-31 13:47:47 +053024088 case WLAN_HAL_TDLS_CHAN_SWITCH_RSP:
24089 return WDI_TDLS_CHAN_SWITCH_REQ_RESP;
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053024090 case WLAN_HAL_TDLS_IND:
24091 return WDI_HAL_TDLS_IND;
24092#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070024093 case WLAN_HAL_ENTER_IMPS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070024094 return WDI_ENTER_IMPS_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070024095 case WLAN_HAL_EXIT_IMPS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070024096 return WDI_EXIT_IMPS_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070024097 case WLAN_HAL_ENTER_BMPS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070024098 return WDI_ENTER_BMPS_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070024099 case WLAN_HAL_EXIT_BMPS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070024100 return WDI_EXIT_BMPS_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070024101 case WLAN_HAL_ENTER_UAPSD_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070024102 return WDI_ENTER_UAPSD_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070024103 case WLAN_HAL_EXIT_UAPSD_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070024104 return WDI_EXIT_UAPSD_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070024105 case WLAN_HAL_SET_UAPSD_AC_PARAMS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070024106 return WDI_SET_UAPSD_PARAM_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070024107 case WLAN_HAL_UPDATE_UAPSD_PARAM_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070024108 return WDI_UPDATE_UAPSD_PARAM_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070024109 case WLAN_HAL_CONFIGURE_RXP_FILTER_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070024110 return WDI_CONFIGURE_RXP_FILTER_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070024111 case WLAN_HAL_ADD_BCN_FILTER_RSP:
24112 return WDI_SET_BEACON_FILTER_RESP;
24113 case WLAN_HAL_REM_BCN_FILTER_RSP:
24114 return WDI_REM_BEACON_FILTER_RESP;
24115 case WLAN_HAL_SET_RSSI_THRESH_RSP:
24116 return WDI_SET_RSSI_THRESHOLDS_RESP;
24117 case WLAN_HAL_HOST_OFFLOAD_RSP:
24118 return WDI_HOST_OFFLOAD_RESP;
24119 case WLAN_HAL_ADD_WOWL_BCAST_PTRN_RSP:
24120 return WDI_WOWL_ADD_BC_PTRN_RESP;
24121 case WLAN_HAL_DEL_WOWL_BCAST_PTRN_RSP:
24122 return WDI_WOWL_DEL_BC_PTRN_RESP;
24123 case WLAN_HAL_ENTER_WOWL_RSP:
24124 return WDI_WOWL_ENTER_RESP;
24125 case WLAN_HAL_EXIT_WOWL_RSP:
24126 return WDI_WOWL_EXIT_RESP;
24127 case WLAN_HAL_CONFIGURE_APPS_CPU_WAKEUP_STATE_RSP:
24128 return WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_RESP;
24129 case WLAN_HAL_DOWNLOAD_NV_RSP:
24130 return WDI_NV_DOWNLOAD_RESP;
24131 case WLAN_HAL_TL_HAL_FLUSH_AC_RSP:
24132 return WDI_FLUSH_AC_RESP;
24133 case WLAN_HAL_SIGNAL_BTAMP_EVENT_RSP:
24134 return WDI_BTAMP_EVENT_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070024135 case WLAN_HAL_PROCESS_PTT_RSP:
24136 return WDI_FTM_CMD_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070024137 case WLAN_HAL_ADD_STA_SELF_RSP:
24138 return WDI_ADD_STA_SELF_RESP;
24139case WLAN_HAL_DEL_STA_SELF_RSP:
24140 return WDI_DEL_STA_SELF_RESP;
Jeff Johnsone7245742012-09-05 17:12:55 -070024141#ifdef FEATURE_OEM_DATA_SUPPORT
24142 case WLAN_HAL_START_OEM_DATA_RSP:
24143 return WDI_START_OEM_DATA_RESP;
24144#endif /* FEATURE_OEM_DATA_SUPPORT */
Jeff Johnson295189b2012-06-20 16:38:30 -070024145 case WLAN_HAL_HOST_RESUME_RSP:
24146 return WDI_HOST_RESUME_RESP;
24147 case WLAN_HAL_KEEP_ALIVE_RSP:
24148 return WDI_KEEP_ALIVE_RESP;
24149#ifdef FEATURE_WLAN_SCAN_PNO
24150 case WLAN_HAL_SET_PREF_NETWORK_RSP:
24151 return WDI_SET_PREF_NETWORK_RESP;
24152 case WLAN_HAL_SET_RSSI_FILTER_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070024153 return WDI_SET_RSSI_FILTER_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070024154 case WLAN_HAL_UPDATE_SCAN_PARAM_RSP:
24155 return WDI_UPDATE_SCAN_PARAMS_RESP;
24156 case WLAN_HAL_PREF_NETW_FOUND_IND:
24157 return WDI_HAL_PREF_NETWORK_FOUND_IND;
24158#endif // FEATURE_WLAN_SCAN_PNO
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070024159#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070024160 case WLAN_ROAM_SCAN_OFFLOAD_RSP:
24161 return WDI_ROAM_SCAN_OFFLOAD_RESP;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070024162#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070024163 case WLAN_HAL_SET_TX_PER_TRACKING_RSP:
24164 return WDI_SET_TX_PER_TRACKING_RESP;
24165#ifdef WLAN_FEATURE_PACKET_FILTERING
24166 case WLAN_HAL_8023_MULTICAST_LIST_RSP:
24167 return WDI_8023_MULTICAST_LIST_RESP;
24168 case WLAN_HAL_SET_PACKET_FILTER_RSP:
24169 return WDI_RECEIVE_FILTER_SET_FILTER_RESP;
24170 case WLAN_HAL_PACKET_FILTER_MATCH_COUNT_RSP:
24171 return WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_RESP;
24172 case WLAN_HAL_CLEAR_PACKET_FILTER_RSP:
24173 return WDI_RECEIVE_FILTER_CLEAR_FILTER_RESP;
24174#endif // WLAN_FEATURE_PACKET_FILTERING
24175
24176 case WLAN_HAL_DUMP_COMMAND_RSP:
24177 return WDI_HAL_DUMP_CMD_RESP;
24178 case WLAN_HAL_SET_POWER_PARAMS_RSP:
24179 return WDI_SET_POWER_PARAMS_RESP;
24180#ifdef WLAN_FEATURE_VOWIFI_11R
24181 case WLAN_HAL_AGGR_ADD_TS_RSP:
24182 return WDI_AGGR_ADD_TS_RESP;
24183#endif
24184
24185#ifdef WLAN_FEATURE_GTK_OFFLOAD
24186 case WLAN_HAL_GTK_OFFLOAD_RSP:
24187 return WDI_GTK_OFFLOAD_RESP;
24188 case WLAN_HAL_GTK_OFFLOAD_GETINFO_RSP:
24189 return WDI_GTK_OFFLOAD_GETINFO_RESP;
24190#endif /* WLAN_FEATURE_GTK_OFFLOAD */
24191#ifdef WLAN_WAKEUP_EVENTS
24192 case WLAN_HAL_WAKE_REASON_IND:
24193 return WDI_HAL_WAKE_REASON_IND;
24194#endif // WLAN_WAKEUP_EVENTS
24195
24196 case WLAN_HAL_SET_THERMAL_MITIGATION_RSP:
24197 return WDI_SET_TM_LEVEL_RESP;
24198 case WLAN_HAL_FEATURE_CAPS_EXCHANGE_RSP:
24199 return WDI_FEATURE_CAPS_EXCHANGE_RESP;
Mohit Khanna4a70d262012-09-11 16:30:12 -070024200#ifdef WLAN_FEATURE_11AC
24201 case WLAN_HAL_UPDATE_VHT_OP_MODE_RSP:
24202 return WDI_UPDATE_VHT_OP_MODE_RESP;
24203#endif
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -080024204#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_ESE || defined(FEATURE_WLAN_LFR)
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -080024205 case WLAN_HAL_GET_ROAM_RSSI_RSP:
24206 return WDI_GET_ROAM_RSSI_RESP;
24207#endif
Ravi Joshid2ca7c42013-07-23 08:37:49 -070024208
Leo Chang9056f462013-08-01 19:21:11 -070024209#ifdef FEATURE_WLAN_LPHB
24210 case WLAN_HAL_LPHB_IND:
Leo Changd9df8aa2013-09-26 13:32:26 -070024211 return WDI_HAL_LPHB_IND;
Leo Chang9056f462013-08-01 19:21:11 -070024212 case WLAN_HAL_LPHB_CFG_RSP:
24213 return WDI_LPHB_CFG_RESP;
24214#endif /* FEATURE_WLAN_LPHB */
Ravi Joshid2ca7c42013-07-23 08:37:49 -070024215
24216 case WLAN_HAL_IBSS_PEER_INACTIVITY_IND:
24217 return WDI_HAL_IBSS_PEER_INACTIVITY_IND;
Yue Mab9c86f42013-08-14 15:59:08 -070024218 case WLAN_HAL_PERIODIC_TX_PTRN_FW_IND:
24219 return WDI_HAL_PERIODIC_TX_PTRN_FW_IND;
Ravi Joshid2ca7c42013-07-23 08:37:49 -070024220
Rajeev79dbe4c2013-10-05 11:03:42 +053024221#ifdef FEATURE_WLAN_BATCH_SCAN
24222 case WLAN_HAL_BATCHSCAN_SET_RSP:
24223 return WDI_SET_BATCH_SCAN_RESP;
24224 case WLAN_HAL_BATCHSCAN_RESULT_IND:
24225 return WDI_BATCHSCAN_RESULT_IND;
24226#endif // FEATURE_WLAN_BATCH_SCAN
24227
Leo Chang0b0e45a2013-12-15 15:18:55 -080024228#ifdef FEATURE_WLAN_CH_AVOID
24229 case WLAN_HAL_AVOID_FREQ_RANGE_IND:
24230 return WDI_HAL_CH_AVOID_IND;
24231#endif /* FEATURE_WLAN_CH_AVOID */
Manjunathappa Prakash86f78ca2014-02-10 18:09:15 -080024232 case WLAN_HAL_UPDATE_CHANNEL_LIST_RSP:
24233 return WDI_UPDATE_CHAN_RESP;
c_hpothu86041002014-04-14 19:06:51 +053024234 case WLAN_HAL_PRINT_REG_INFO_IND:
24235 return WDI_PRINT_REG_INFO_IND;
Abhishek Singhbe7f93d2014-06-04 10:47:11 +053024236 case WLAN_HAL_CH_SWITCH_V1_RSP:
24237 return WDI_CH_SWITCH_RESP_V1;
c_hpothu92367912014-05-01 15:18:17 +053024238 case WLAN_HAL_GET_BCN_MISS_RATE_RSP:
24239 return WDI_GET_BCN_MISS_RATE_RSP;
Sunil Duttbd736ed2014-05-26 21:19:41 +053024240#ifdef WLAN_FEATURE_LINK_LAYER_STATS
24241 case WLAN_HAL_LL_SET_STATS_RSP:
24242 return WDI_LL_STATS_SET_RSP;
24243 case WLAN_HAL_LL_GET_STATS_RSP:
24244 return WDI_LL_STATS_GET_RSP;
24245 case WLAN_HAL_LL_CLEAR_STATS_RSP:
24246 return WDI_LL_STATS_CLEAR_RSP;
24247 case WLAN_HAL_LL_NOTIFY_STATS:
24248 return WDI_HAL_LL_STATS_RESULTS_IND;
24249#endif
Dino Mycle41bdc942014-06-10 11:30:24 +053024250#ifdef WLAN_FEATURE_EXTSCAN
24251 case WLAN_HAL_EXT_SCAN_START_RSP:
24252 return WDI_EXTSCAN_START_RSP;
24253 case WLAN_HAL_EXT_SCAN_STOP_RSP:
24254 return WDI_EXTSCAN_STOP_RSP;
24255 case WLAN_HAL_EXT_SCAN_GET_CAP_RSP:
24256 return WDI_EXTSCAN_GET_CAPABILITIES_RSP;
24257 case WLAN_HAL_EXT_SCAN_GET_SCAN_RSP:
24258 return WDI_EXTSCAN_GET_CACHED_RESULTS_RSP;
24259 case WLAN_HAL_BSSID_HOTLIST_SET_RSP:
24260 return WDI_EXTSCAN_SET_HOTLIST_BSSID_RSP;
24261 case WLAN_HAL_BSSID_HOTLIST_RESET_RSP:
24262 return WDI_EXTSCAN_RESET_HOTLIST_BSSID_RSP;
24263 case WLAN_HAL_SIG_RSSI_SET_RSP:
24264 return WDI_EXTSCAN_SET_SIGNF_RSSI_CHANGE_RSP;
24265 case WLAN_HAL_SIG_RSSI_RESET_RSP:
24266 return WDI_EXTSCAN_RESET_SIGNF_RSSI_CHANGE_RSP;
24267 case WLAN_HAL_EXT_SCAN_PROGRESS_IND:
24268 return WDI_HAL_EXTSCAN_PROGRESS_IND;
24269 case WLAN_HAL_EXT_SCAN_RESULT_AVAILABLE_IND:
24270 return WDI_HAL_EXTSCAN_SCAN_AVAILABLE_IND;
24271 case WLAN_HAL_EXT_SCAN_RESULT_IND:
24272 return WDI_HAL_EXTSCAN_RESULT_IND;
24273 case WLAN_HAL_BSSID_HOTLIST_RESULT_IND:
24274 return WDI_HAL_EXTSCAN_BSSID_HOTLIST_RESULT_IND;
24275 case WLAN_HAL_SIG_RSSI_RESULT_IND:
24276 return WDI_HAL_EXTSCAN_SIG_RSSI_RESULT_IND;
24277#endif /* WLAN_FEATURE_EXTSCAN */
Siddharth Bhal171788a2014-09-29 21:02:40 +053024278 case WLAN_HAL_MAC_SPOOFED_SCAN_RSP:
24279 return WDI_SPOOF_MAC_ADDR_RSP;
Abhishek Singh85b74712014-10-08 11:38:19 +053024280 case WLAN_HAL_FW_STATS_RSP:
24281 return WDI_GET_FW_STATS_RSP;
Srinivas Dasari4dae48f2014-11-26 21:14:16 +053024282 case WLAN_HAL_ENCRYPT_DATA_RSP:
24283 return WDI_ENCRYPT_MSG_RSP;
24284
Jeff Johnson295189b2012-06-20 16:38:30 -070024285 default:
Jeff Johnsone7245742012-09-05 17:12:55 -070024286 return eDRIVER_TYPE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070024287 }
24288
24289}/*HAL_2_WDI_RSP_TYPE*/
24290
24291
24292/*Convert WDI driver type into HAL driver type*/
24293WPT_STATIC WPT_INLINE tDriverType
24294WDI_2_HAL_DRV_TYPE
24295(
24296 WDI_DriverType wdiDriverType
24297)
24298{
Jeff Johnsone7245742012-09-05 17:12:55 -070024299 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070024300 the chances of getting inlined*/
24301 switch( wdiDriverType )
24302 {
24303 case WDI_DRIVER_TYPE_PRODUCTION:
24304 return eDRIVER_TYPE_PRODUCTION;
24305 case WDI_DRIVER_TYPE_MFG:
24306 return eDRIVER_TYPE_MFG;
24307 case WDI_DRIVER_TYPE_DVT:
24308 return eDRIVER_TYPE_DVT;
24309 }
24310
Jeff Johnsone7245742012-09-05 17:12:55 -070024311 return eDRIVER_TYPE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070024312}/*WDI_2_HAL_DRV_TYPE*/
24313
24314
24315/*Convert WDI stop reason into HAL stop reason*/
24316WPT_STATIC WPT_INLINE tHalStopType
24317WDI_2_HAL_STOP_REASON
24318(
24319 WDI_StopType wdiDriverType
24320)
24321{
Jeff Johnsone7245742012-09-05 17:12:55 -070024322 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070024323 the chances of getting inlined*/
24324 switch( wdiDriverType )
24325 {
24326 case WDI_STOP_TYPE_SYS_RESET:
24327 return HAL_STOP_TYPE_SYS_RESET;
Yue Mad8cac142013-03-28 11:33:46 -070024328 case WDI_STOP_TYPE_SYS_DEEP_SLEEP:
24329 return HAL_STOP_TYPE_SYS_DEEP_SLEEP;
Jeff Johnson295189b2012-06-20 16:38:30 -070024330 case WDI_STOP_TYPE_RF_KILL:
24331 return HAL_STOP_TYPE_RF_KILL;
24332 }
24333
Jeff Johnsone7245742012-09-05 17:12:55 -070024334 return HAL_STOP_TYPE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070024335}/*WDI_2_HAL_STOP_REASON*/
24336
24337
24338/*Convert WDI scan mode type into HAL scan mode type*/
24339WPT_STATIC WPT_INLINE eHalSysMode
24340WDI_2_HAL_SCAN_MODE
24341(
24342 WDI_ScanMode wdiScanMode
24343)
24344{
Jeff Johnsone7245742012-09-05 17:12:55 -070024345 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070024346 the chances of getting inlined*/
24347 switch( wdiScanMode )
24348 {
24349 case WDI_SCAN_MODE_NORMAL:
24350 return eHAL_SYS_MODE_NORMAL;
24351 case WDI_SCAN_MODE_LEARN:
24352 return eHAL_SYS_MODE_LEARN;
24353 case WDI_SCAN_MODE_SCAN:
24354 return eHAL_SYS_MODE_SCAN;
24355 case WDI_SCAN_MODE_PROMISC:
24356 return eHAL_SYS_MODE_PROMISC;
24357 case WDI_SCAN_MODE_SUSPEND_LINK:
24358 return eHAL_SYS_MODE_SUSPEND_LINK;
Madan Mohan Koyyalamudi9b876782012-10-11 16:22:51 -070024359 case WDI_SCAN_MODE_ROAM_SCAN:
24360 return eHAL_SYS_MODE_ROAM_SCAN;
24361 case WDI_SCAN_MODE_ROAM_SUSPEND_LINK:
24362 return eHAL_SYS_MODE_ROAM_SUSPEND_LINK;
Jeff Johnson295189b2012-06-20 16:38:30 -070024363 }
24364
Jeff Johnsone7245742012-09-05 17:12:55 -070024365 return eHAL_SYS_MODE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070024366}/*WDI_2_HAL_SCAN_MODE*/
24367
24368/*Convert WDI sec ch offset into HAL sec ch offset type*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024369WPT_STATIC WPT_INLINE ePhyChanBondState
Jeff Johnson295189b2012-06-20 16:38:30 -070024370WDI_2_HAL_SEC_CH_OFFSET
24371(
24372 WDI_HTSecondaryChannelOffset wdiSecChOffset
24373)
24374{
Jeff Johnsone7245742012-09-05 17:12:55 -070024375 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070024376 the chances of getting inlined*/
24377 switch( wdiSecChOffset )
24378 {
24379 case WDI_SECONDARY_CHANNEL_OFFSET_NONE:
Jeff Johnsone7245742012-09-05 17:12:55 -070024380 return PHY_SINGLE_CHANNEL_CENTERED;
Jeff Johnson295189b2012-06-20 16:38:30 -070024381 case WDI_SECONDARY_CHANNEL_OFFSET_UP:
Jeff Johnsone7245742012-09-05 17:12:55 -070024382 return PHY_DOUBLE_CHANNEL_LOW_PRIMARY;
Jeff Johnson295189b2012-06-20 16:38:30 -070024383 case WDI_SECONDARY_CHANNEL_OFFSET_DOWN:
Jeff Johnsone7245742012-09-05 17:12:55 -070024384 return PHY_DOUBLE_CHANNEL_HIGH_PRIMARY;
24385#ifdef WLAN_FEATURE_11AC
24386 case WDI_CHANNEL_20MHZ_LOW_40MHZ_CENTERED:
24387 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_CENTERED;
24388 case WDI_CHANNEL_20MHZ_CENTERED_40MHZ_CENTERED:
24389 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_CENTERED;
24390 case WDI_CHANNEL_20MHZ_HIGH_40MHZ_CENTERED:
24391 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_CENTERED;
24392 case WDI_CHANNEL_20MHZ_LOW_40MHZ_LOW:
24393 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_LOW;
24394 case WDI_CHANNEL_20MHZ_HIGH_40MHZ_LOW:
24395 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_LOW;
24396 case WDI_CHANNEL_20MHZ_LOW_40MHZ_HIGH:
24397 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_HIGH;
24398 case WDI_CHANNEL_20MHZ_HIGH_40MHZ_HIGH:
24399 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_HIGH;
24400#endif
24401 default:
24402 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070024403 }
24404
Jeff Johnsone7245742012-09-05 17:12:55 -070024405 return PHY_CHANNEL_BONDING_STATE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070024406}/*WDI_2_HAL_SEC_CH_OFFSET*/
24407
24408/*Convert WDI BSS type into HAL BSS type*/
24409WPT_STATIC WPT_INLINE tSirBssType
24410WDI_2_HAL_BSS_TYPE
24411(
24412 WDI_BssType wdiBSSType
24413)
24414{
Jeff Johnsone7245742012-09-05 17:12:55 -070024415 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070024416 the chances of getting inlined*/
24417 switch( wdiBSSType )
24418 {
24419 case WDI_INFRASTRUCTURE_MODE:
24420 return eSIR_INFRASTRUCTURE_MODE;
24421 case WDI_INFRA_AP_MODE:
24422 return eSIR_INFRA_AP_MODE;
24423 case WDI_IBSS_MODE:
24424 return eSIR_IBSS_MODE;
24425 case WDI_BTAMP_STA_MODE:
24426 return eSIR_BTAMP_STA_MODE;
24427 case WDI_BTAMP_AP_MODE:
Jeff Johnsone7245742012-09-05 17:12:55 -070024428 return eSIR_BTAMP_AP_MODE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024429 case WDI_BSS_AUTO_MODE:
24430 return eSIR_AUTO_MODE;
24431 }
24432
Jeff Johnsone7245742012-09-05 17:12:55 -070024433 return eSIR_DONOT_USE_BSS_TYPE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024434}/*WDI_2_HAL_BSS_TYPE*/
24435
24436/*Convert WDI NW type into HAL NW type*/
24437WPT_STATIC WPT_INLINE tSirNwType
24438WDI_2_HAL_NW_TYPE
24439(
24440 WDI_NwType wdiNWType
24441)
24442{
Jeff Johnsone7245742012-09-05 17:12:55 -070024443 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070024444 the chances of getting inlined*/
24445 switch( wdiNWType )
24446 {
24447 case WDI_11A_NW_TYPE:
24448 return eSIR_11A_NW_TYPE;
24449 case WDI_11B_NW_TYPE:
24450 return eSIR_11B_NW_TYPE;
24451 case WDI_11G_NW_TYPE:
24452 return eSIR_11G_NW_TYPE;
24453 case WDI_11N_NW_TYPE:
24454 return eSIR_11N_NW_TYPE;
24455 }
24456
Jeff Johnsone7245742012-09-05 17:12:55 -070024457 return eSIR_DONOT_USE_NW_TYPE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024458}/*WDI_2_HAL_NW_TYPE*/
24459
24460/*Convert WDI chanel bonding type into HAL cb type*/
24461WPT_STATIC WPT_INLINE ePhyChanBondState
24462WDI_2_HAL_CB_STATE
24463(
24464 WDI_PhyChanBondState wdiCbState
24465)
24466{
Jeff Johnsone7245742012-09-05 17:12:55 -070024467 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070024468 the chances of getting inlined*/
24469 switch ( wdiCbState )
24470 {
24471 case WDI_PHY_SINGLE_CHANNEL_CENTERED:
24472 return PHY_SINGLE_CHANNEL_CENTERED;
24473 case WDI_PHY_DOUBLE_CHANNEL_LOW_PRIMARY:
24474 return PHY_DOUBLE_CHANNEL_LOW_PRIMARY;
24475 case WDI_PHY_DOUBLE_CHANNEL_CENTERED:
24476 return PHY_DOUBLE_CHANNEL_CENTERED;
24477 case WDI_PHY_DOUBLE_CHANNEL_HIGH_PRIMARY:
24478 return PHY_DOUBLE_CHANNEL_HIGH_PRIMARY;
Jeff Johnsone7245742012-09-05 17:12:55 -070024479#ifdef WLAN_FEATURE_11AC
24480 case WDI_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_CENTERED:
24481 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_CENTERED;
24482 case WDI_QUADRUPLE_CHANNEL_20MHZ_CENTERED_40MHZ_CENTERED:
24483 return PHY_QUADRUPLE_CHANNEL_20MHZ_CENTERED_40MHZ_CENTERED;
24484 case WDI_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_CENTERED:
24485 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_CENTERED;
24486 case WDI_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_LOW:
24487 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_LOW;
24488 case WDI_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_LOW:
24489 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_LOW;
24490 case WDI_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_HIGH:
24491 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_HIGH;
24492 case WDI_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_HIGH:
24493 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_HIGH;
24494#endif
24495 case WDI_MAX_CB_STATE:
24496 default:
24497 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070024498 }
Jeff Johnsone7245742012-09-05 17:12:55 -070024499
Jeff Johnson295189b2012-06-20 16:38:30 -070024500 return PHY_CHANNEL_BONDING_STATE_MAX;
24501}/*WDI_2_HAL_CB_STATE*/
24502
24503/*Convert WDI chanel bonding type into HAL cb type*/
24504WPT_STATIC WPT_INLINE tSirMacHTOperatingMode
24505WDI_2_HAL_HT_OPER_MODE
24506(
24507 WDI_HTOperatingMode wdiHTOperMode
24508)
24509{
Jeff Johnsone7245742012-09-05 17:12:55 -070024510 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070024511 the chances of getting inlined*/
24512 switch ( wdiHTOperMode )
24513 {
24514 case WDI_HT_OP_MODE_PURE:
24515 return eSIR_HT_OP_MODE_PURE;
24516 case WDI_HT_OP_MODE_OVERLAP_LEGACY:
24517 return eSIR_HT_OP_MODE_OVERLAP_LEGACY;
24518 case WDI_HT_OP_MODE_NO_LEGACY_20MHZ_HT:
24519 return eSIR_HT_OP_MODE_NO_LEGACY_20MHZ_HT;
24520 case WDI_HT_OP_MODE_MIXED:
24521 return eSIR_HT_OP_MODE_MIXED;
24522 }
Jeff Johnsone7245742012-09-05 17:12:55 -070024523
Jeff Johnson295189b2012-06-20 16:38:30 -070024524 return eSIR_HT_OP_MODE_MAX;
24525}/*WDI_2_HAL_HT_OPER_MODE*/
24526
24527/*Convert WDI mimo PS type into HAL mimo PS type*/
24528WPT_STATIC WPT_INLINE tSirMacHTMIMOPowerSaveState
24529WDI_2_HAL_MIMO_PS
24530(
24531 WDI_HTMIMOPowerSaveState wdiHTOperMode
24532)
24533{
Jeff Johnsone7245742012-09-05 17:12:55 -070024534 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070024535 the chances of getting inlined*/
24536 switch ( wdiHTOperMode )
24537 {
24538 case WDI_HT_MIMO_PS_STATIC:
24539 return eSIR_HT_MIMO_PS_STATIC;
24540 case WDI_HT_MIMO_PS_DYNAMIC:
24541 return eSIR_HT_MIMO_PS_DYNAMIC;
24542 case WDI_HT_MIMO_PS_NA:
24543 return eSIR_HT_MIMO_PS_NA;
24544 case WDI_HT_MIMO_PS_NO_LIMIT:
24545 return eSIR_HT_MIMO_PS_NO_LIMIT;
24546 }
Jeff Johnsone7245742012-09-05 17:12:55 -070024547
Jeff Johnson295189b2012-06-20 16:38:30 -070024548 return eSIR_HT_MIMO_PS_MAX;
24549}/*WDI_2_HAL_MIMO_PS*/
24550
24551/*Convert WDI ENC type into HAL ENC type*/
24552WPT_STATIC WPT_INLINE tAniEdType
24553WDI_2_HAL_ENC_TYPE
24554(
24555 WDI_EncryptType wdiEncType
24556)
24557{
Jeff Johnsone7245742012-09-05 17:12:55 -070024558 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070024559 the chances of getting inlined*/
24560 switch ( wdiEncType )
24561 {
24562 case WDI_ENCR_NONE:
24563 return eSIR_ED_NONE;
24564
24565 case WDI_ENCR_WEP40:
24566 return eSIR_ED_WEP40;
24567
24568 case WDI_ENCR_WEP104:
24569 return eSIR_ED_WEP104;
24570
24571 case WDI_ENCR_TKIP:
24572 return eSIR_ED_TKIP;
24573
24574 case WDI_ENCR_CCMP:
24575 return eSIR_ED_CCMP;
24576
24577 case WDI_ENCR_AES_128_CMAC:
24578 return eSIR_ED_AES_128_CMAC;
24579#if defined(FEATURE_WLAN_WAPI)
24580 case WDI_ENCR_WPI:
24581 return eSIR_ED_WPI;
24582#endif
24583 default:
24584 return eSIR_ED_NOT_IMPLEMENTED;
24585 }
24586
24587}/*WDI_2_HAL_ENC_TYPE*/
24588
24589/*Convert WDI WEP type into HAL WEP type*/
24590WPT_STATIC WPT_INLINE tAniWepType
24591WDI_2_HAL_WEP_TYPE
24592(
24593 WDI_WepType wdiWEPType
24594)
24595{
Jeff Johnsone7245742012-09-05 17:12:55 -070024596 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070024597 the chances of getting inlined*/
24598 switch ( wdiWEPType )
24599 {
24600 case WDI_WEP_STATIC:
24601 return eSIR_WEP_STATIC;
24602
24603 case WDI_WEP_DYNAMIC:
24604 return eSIR_WEP_DYNAMIC;
24605 }
Jeff Johnsone7245742012-09-05 17:12:55 -070024606
Jeff Johnson295189b2012-06-20 16:38:30 -070024607 return eSIR_WEP_MAX;
24608}/*WDI_2_HAL_WEP_TYPE*/
24609
24610WPT_STATIC WPT_INLINE tSirLinkState
24611WDI_2_HAL_LINK_STATE
24612(
24613 WDI_LinkStateType wdiLinkState
24614)
24615{
Jeff Johnsone7245742012-09-05 17:12:55 -070024616 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070024617 the chances of getting inlined*/
24618 switch ( wdiLinkState )
24619 {
24620 case WDI_LINK_IDLE_STATE:
24621 return eSIR_LINK_IDLE_STATE;
24622
24623 case WDI_LINK_PREASSOC_STATE:
24624 return eSIR_LINK_PREASSOC_STATE;
24625
24626 case WDI_LINK_POSTASSOC_STATE:
24627 return eSIR_LINK_POSTASSOC_STATE;
24628
24629 case WDI_LINK_AP_STATE:
24630 return eSIR_LINK_AP_STATE;
24631
24632 case WDI_LINK_IBSS_STATE:
24633 return eSIR_LINK_IBSS_STATE;
24634
24635 case WDI_LINK_BTAMP_PREASSOC_STATE:
24636 return eSIR_LINK_BTAMP_PREASSOC_STATE;
24637
24638 case WDI_LINK_BTAMP_POSTASSOC_STATE:
24639 return eSIR_LINK_BTAMP_POSTASSOC_STATE;
24640
24641 case WDI_LINK_BTAMP_AP_STATE:
24642 return eSIR_LINK_BTAMP_AP_STATE;
24643
24644 case WDI_LINK_BTAMP_STA_STATE:
24645 return eSIR_LINK_BTAMP_STA_STATE;
24646
24647 case WDI_LINK_LEARN_STATE:
24648 return eSIR_LINK_LEARN_STATE;
24649
24650 case WDI_LINK_SCAN_STATE:
24651 return eSIR_LINK_SCAN_STATE;
24652
24653 case WDI_LINK_FINISH_SCAN_STATE:
24654 return eSIR_LINK_FINISH_SCAN_STATE;
24655
24656 case WDI_LINK_INIT_CAL_STATE:
24657 return eSIR_LINK_INIT_CAL_STATE;
24658
24659 case WDI_LINK_FINISH_CAL_STATE:
24660 return eSIR_LINK_FINISH_CAL_STATE;
24661
Jeff Johnson295189b2012-06-20 16:38:30 -070024662 case WDI_LINK_LISTEN_STATE:
24663 return eSIR_LINK_LISTEN_STATE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024664
Gopichand Nakkala924e4552013-05-08 19:18:14 +053024665 case WDI_LINK_SEND_ACTION_STATE:
24666 return eSIR_LINK_SEND_ACTION_STATE;
24667
Jeff Johnson295189b2012-06-20 16:38:30 -070024668 default:
24669 return eSIR_LINK_MAX;
Jeff Johnsone7245742012-09-05 17:12:55 -070024670 }
Jeff Johnson295189b2012-06-20 16:38:30 -070024671}
24672
Jeff Johnsone7245742012-09-05 17:12:55 -070024673/*Translate a STA Context from WDI into HAL*/
24674WPT_STATIC WPT_INLINE
Jeff Johnson295189b2012-06-20 16:38:30 -070024675void
24676WDI_CopyWDIStaCtxToHALStaCtx
Jeff Johnsone7245742012-09-05 17:12:55 -070024677(
Jeff Johnson295189b2012-06-20 16:38:30 -070024678 tConfigStaParams* phalConfigSta,
24679 WDI_ConfigStaReqInfoType* pwdiConfigSta
24680)
24681{
24682 wpt_uint8 i;
Jeff Johnsone7245742012-09-05 17:12:55 -070024683#ifdef WLAN_FEATURE_11AC
24684 /* Get the Version 1 Handler */
24685 tConfigStaParams_V1* phalConfigSta_V1 = NULL;
24686 if (WDI_getFwWlanFeatCaps(DOT11AC))
24687 {
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070024688 phalConfigSta_V1 = (tConfigStaParams_V1*)phalConfigSta;
Jeff Johnsone7245742012-09-05 17:12:55 -070024689 }
24690#endif
24691 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070024692 the chances of getting inlined*/
24693
Jeff Johnsone7245742012-09-05 17:12:55 -070024694 wpalMemoryCopy(phalConfigSta->bssId,
24695 pwdiConfigSta->macBSSID, WDI_MAC_ADDR_LEN);
24696
24697 wpalMemoryCopy(phalConfigSta->staMac,
24698 pwdiConfigSta->macSTA, WDI_MAC_ADDR_LEN);
Jeff Johnson295189b2012-06-20 16:38:30 -070024699
24700 phalConfigSta->assocId = pwdiConfigSta->usAssocId;
24701 phalConfigSta->staType = pwdiConfigSta->wdiSTAType;
24702 phalConfigSta->shortPreambleSupported = pwdiConfigSta->ucShortPreambleSupported;
24703 phalConfigSta->listenInterval = pwdiConfigSta->usListenInterval;
24704 phalConfigSta->wmmEnabled = pwdiConfigSta->ucWMMEnabled;
24705 phalConfigSta->htCapable = pwdiConfigSta->ucHTCapable;
24706 phalConfigSta->txChannelWidthSet = pwdiConfigSta->ucTXChannelWidthSet;
24707 phalConfigSta->rifsMode = pwdiConfigSta->ucRIFSMode;
24708 phalConfigSta->lsigTxopProtection = pwdiConfigSta->ucLSIGTxopProtection;
24709 phalConfigSta->maxAmpduSize = pwdiConfigSta->ucMaxAmpduSize;
24710 phalConfigSta->maxAmpduDensity = pwdiConfigSta->ucMaxAmpduDensity;
24711 phalConfigSta->maxAmsduSize = pwdiConfigSta->ucMaxAmsduSize;
24712 phalConfigSta->fShortGI40Mhz = pwdiConfigSta->ucShortGI40Mhz;
24713 phalConfigSta->fShortGI20Mhz = pwdiConfigSta->ucShortGI20Mhz;
24714 phalConfigSta->rmfEnabled = pwdiConfigSta->ucRMFEnabled;
24715 phalConfigSta->action = pwdiConfigSta->wdiAction;
24716 phalConfigSta->uAPSD = pwdiConfigSta->ucAPSD;
24717 phalConfigSta->maxSPLen = pwdiConfigSta->ucMaxSPLen;
24718 phalConfigSta->greenFieldCapable = pwdiConfigSta->ucGreenFieldCapable;
24719 phalConfigSta->delayedBASupport = pwdiConfigSta->ucDelayedBASupport;
24720 phalConfigSta->us32MaxAmpduDuration = pwdiConfigSta->us32MaxAmpduDuratio;
24721 phalConfigSta->fDsssCckMode40Mhz = pwdiConfigSta->ucDsssCckMode40Mhz;
24722 phalConfigSta->encryptType = pwdiConfigSta->ucEncryptType;
Jeff Johnsone7245742012-09-05 17:12:55 -070024723
Jeff Johnson295189b2012-06-20 16:38:30 -070024724 phalConfigSta->mimoPS = WDI_2_HAL_MIMO_PS(pwdiConfigSta->wdiMIMOPS);
24725
Jeff Johnsone7245742012-09-05 17:12:55 -070024726 phalConfigSta->supportedRates.opRateMode =
Jeff Johnson295189b2012-06-20 16:38:30 -070024727 pwdiConfigSta->wdiSupportedRates.opRateMode;
24728 for(i = 0; i < SIR_NUM_11B_RATES; i ++)
24729 {
Jeff Johnsone7245742012-09-05 17:12:55 -070024730 phalConfigSta->supportedRates.llbRates[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -070024731 pwdiConfigSta->wdiSupportedRates.llbRates[i];
24732 }
24733 for(i = 0; i < SIR_NUM_11A_RATES; i ++)
24734 {
Jeff Johnsone7245742012-09-05 17:12:55 -070024735 phalConfigSta->supportedRates.llaRates[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -070024736 pwdiConfigSta->wdiSupportedRates.llaRates[i];
24737 }
24738 for(i = 0; i < SIR_NUM_POLARIS_RATES; i ++)
24739 {
24740 phalConfigSta->supportedRates.aniLegacyRates[i] =
24741 pwdiConfigSta->wdiSupportedRates.aLegacyRates[i];
24742 }
Jeff Johnsone7245742012-09-05 17:12:55 -070024743 phalConfigSta->supportedRates.aniEnhancedRateBitmap =
Jeff Johnson295189b2012-06-20 16:38:30 -070024744 pwdiConfigSta->wdiSupportedRates.uEnhancedRateBitmap;
24745 for(i = 0; i < SIR_MAC_MAX_SUPPORTED_MCS_SET; i ++)
24746 {
Jeff Johnsone7245742012-09-05 17:12:55 -070024747 phalConfigSta->supportedRates.supportedMCSSet[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -070024748 pwdiConfigSta->wdiSupportedRates.aSupportedMCSSet[i];
24749 }
24750 phalConfigSta->supportedRates.rxHighestDataRate =
24751 pwdiConfigSta->wdiSupportedRates.aRxHighestDataRate;
24752
Jeff Johnsone7245742012-09-05 17:12:55 -070024753#ifdef WLAN_FEATURE_11AC
24754 if(phalConfigSta_V1 != NULL)
24755 {
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070024756 phalConfigSta_V1->supportedRates.vhtRxMCSMap = pwdiConfigSta->wdiSupportedRates.vhtRxMCSMap;
24757 phalConfigSta_V1->supportedRates.vhtRxHighestDataRate = pwdiConfigSta->wdiSupportedRates.vhtRxHighestDataRate;
24758 phalConfigSta_V1->supportedRates.vhtTxMCSMap = pwdiConfigSta->wdiSupportedRates.vhtTxMCSMap;
24759 phalConfigSta_V1->supportedRates.vhtTxHighestDataRate = pwdiConfigSta->wdiSupportedRates.vhtTxHighestDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070024760 }
24761#endif
24762
Jeff Johnson295189b2012-06-20 16:38:30 -070024763 phalConfigSta->p2pCapableSta = pwdiConfigSta->ucP2pCapableSta ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024764
Jeff Johnsone7245742012-09-05 17:12:55 -070024765#ifdef WLAN_FEATURE_11AC
24766 if(phalConfigSta_V1 != NULL)
24767 {
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070024768 phalConfigSta_V1->vhtCapable = pwdiConfigSta->ucVhtCapableSta;
24769 phalConfigSta_V1->vhtTxChannelWidthSet = pwdiConfigSta->ucVhtTxChannelWidthSet;
Shailender Karmuchi08f87c22013-01-17 12:51:24 -080024770 phalConfigSta_V1->vhtTxBFEnabled = pwdiConfigSta->ucVhtTxBFEnabled;
Abhishek Singh6927fa02014-06-27 17:19:55 +053024771 phalConfigSta_V1->vhtTxMUBformeeCapable = pwdiConfigSta->vhtTxMUBformeeCapable;
Gopichand Nakkalab2d2c312013-01-04 11:41:02 -080024772 phalConfigSta_V1->htLdpcEnabled = pwdiConfigSta->ucHtLdpcEnabled;
24773 phalConfigSta_V1->vhtLdpcEnabled = pwdiConfigSta->ucVhtLdpcEnabled;
24774
Jeff Johnsone7245742012-09-05 17:12:55 -070024775 }
24776#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070024777}/*WDI_CopyWDIStaCtxToHALStaCtx*/;
Jeff Johnsone7245742012-09-05 17:12:55 -070024778
24779/*Translate a Rate set info from WDI into HAL*/
24780WPT_STATIC WPT_INLINE void
Jeff Johnson295189b2012-06-20 16:38:30 -070024781WDI_CopyWDIRateSetToHALRateSet
Jeff Johnsone7245742012-09-05 17:12:55 -070024782(
Jeff Johnson295189b2012-06-20 16:38:30 -070024783 tSirMacRateSet* pHalRateSet,
24784 WDI_RateSet* pwdiRateSet
24785)
24786{
Jeff Johnsone7245742012-09-05 17:12:55 -070024787 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070024788 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
24789
24790 pHalRateSet->numRates = ( pwdiRateSet->ucNumRates <= SIR_MAC_RATESET_EID_MAX )?
24791 pwdiRateSet->ucNumRates:SIR_MAC_RATESET_EID_MAX;
24792
24793 for ( i = 0; i < pHalRateSet->numRates; i++ )
24794 {
24795 pHalRateSet->rate[i] = pwdiRateSet->aRates[i];
24796 }
Jeff Johnsone7245742012-09-05 17:12:55 -070024797
Jeff Johnson295189b2012-06-20 16:38:30 -070024798}/*WDI_CopyWDIRateSetToHALRateSet*/
24799
24800
24801/*Translate an EDCA Parameter Record from WDI into HAL*/
24802WPT_STATIC WPT_INLINE void
24803WDI_CopyWDIEDCAParamsToHALEDCAParams
Jeff Johnsone7245742012-09-05 17:12:55 -070024804(
Jeff Johnson295189b2012-06-20 16:38:30 -070024805 tSirMacEdcaParamRecord* phalEdcaParam,
24806 WDI_EdcaParamRecord* pWDIEdcaParam
24807)
24808{
Jeff Johnsone7245742012-09-05 17:12:55 -070024809 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070024810 the chances of getting inlined*/
24811
24812 phalEdcaParam->aci.rsvd = pWDIEdcaParam->wdiACI.rsvd;
24813 phalEdcaParam->aci.aci = pWDIEdcaParam->wdiACI.aci;
24814 phalEdcaParam->aci.acm = pWDIEdcaParam->wdiACI.acm;
24815 phalEdcaParam->aci.aifsn = pWDIEdcaParam->wdiACI.aifsn;
24816
24817 phalEdcaParam->cw.max = pWDIEdcaParam->wdiCW.max;
24818 phalEdcaParam->cw.min = pWDIEdcaParam->wdiCW.min;
24819 phalEdcaParam->txoplimit = pWDIEdcaParam->usTXOPLimit;
24820}/*WDI_CopyWDIEDCAParamsToHALEDCAParams*/
24821
24822
24823/*Copy a management frame header from WDI fmt into HAL fmt*/
24824WPT_STATIC WPT_INLINE void
24825WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr
24826(
24827 tSirMacMgmtHdr* pmacMgmtHdr,
24828 WDI_MacMgmtHdr* pwdiMacMgmtHdr
24829)
24830{
24831 pmacMgmtHdr->fc.protVer = pwdiMacMgmtHdr->fc.protVer;
24832 pmacMgmtHdr->fc.type = pwdiMacMgmtHdr->fc.type;
24833 pmacMgmtHdr->fc.subType = pwdiMacMgmtHdr->fc.subType;
24834 pmacMgmtHdr->fc.toDS = pwdiMacMgmtHdr->fc.toDS;
24835 pmacMgmtHdr->fc.fromDS = pwdiMacMgmtHdr->fc.fromDS;
24836 pmacMgmtHdr->fc.moreFrag = pwdiMacMgmtHdr->fc.moreFrag;
24837 pmacMgmtHdr->fc.retry = pwdiMacMgmtHdr->fc.retry;
24838 pmacMgmtHdr->fc.powerMgmt = pwdiMacMgmtHdr->fc.powerMgmt;
24839 pmacMgmtHdr->fc.moreData = pwdiMacMgmtHdr->fc.moreData;
24840 pmacMgmtHdr->fc.wep = pwdiMacMgmtHdr->fc.wep;
24841 pmacMgmtHdr->fc.order = pwdiMacMgmtHdr->fc.order;
24842
24843 pmacMgmtHdr->durationLo = pwdiMacMgmtHdr->durationLo;
24844 pmacMgmtHdr->durationHi = pwdiMacMgmtHdr->durationHi;
24845
Jeff Johnsone7245742012-09-05 17:12:55 -070024846 wpalMemoryCopy(pmacMgmtHdr->da,
Jeff Johnson295189b2012-06-20 16:38:30 -070024847 pwdiMacMgmtHdr->da, 6);
Jeff Johnsone7245742012-09-05 17:12:55 -070024848 wpalMemoryCopy(pmacMgmtHdr->sa,
Jeff Johnson295189b2012-06-20 16:38:30 -070024849 pwdiMacMgmtHdr->sa, 6);
Jeff Johnsone7245742012-09-05 17:12:55 -070024850 wpalMemoryCopy(pmacMgmtHdr->bssId,
Jeff Johnson295189b2012-06-20 16:38:30 -070024851 pwdiMacMgmtHdr->bssId, 6);
24852
24853 pmacMgmtHdr->seqControl.fragNum = pwdiMacMgmtHdr->seqControl.fragNum;
24854 pmacMgmtHdr->seqControl.seqNumLo = pwdiMacMgmtHdr->seqControl.seqNumLo;
24855 pmacMgmtHdr->seqControl.seqNumHi = pwdiMacMgmtHdr->seqControl.seqNumHi;
24856
24857}/*WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr*/
24858
24859
24860/*Copy config bss parameters from WDI fmt into HAL fmt*/
24861WPT_STATIC WPT_INLINE void
24862WDI_CopyWDIConfigBSSToHALConfigBSS
24863(
24864 tConfigBssParams* phalConfigBSS,
24865 WDI_ConfigBSSReqInfoType* pwdiConfigBSS
24866)
24867{
24868
24869 wpt_uint8 keyIndex = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070024870#ifdef WLAN_FEATURE_11AC
24871 /* Get the Version 1 Handler */
24872 tConfigBssParams_V1* phalConfigBSS_V1 = NULL;
24873 if (WDI_getFwWlanFeatCaps(DOT11AC))
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070024874 phalConfigBSS_V1 = (tConfigBssParams_V1*)phalConfigBSS;
Jeff Johnsone7245742012-09-05 17:12:55 -070024875#endif
24876
Jeff Johnson295189b2012-06-20 16:38:30 -070024877 wpalMemoryCopy( phalConfigBSS->bssId,
24878 pwdiConfigBSS->macBSSID,
24879 WDI_MAC_ADDR_LEN);
24880
24881#ifdef HAL_SELF_STA_PER_BSS
24882 wpalMemoryCopy( phalConfigBSS->selfMacAddr,
24883 pwdiConfigBSS->macSelfAddr,
24884 WDI_MAC_ADDR_LEN);
24885#endif
24886
24887 phalConfigBSS->bssType = WDI_2_HAL_BSS_TYPE(pwdiConfigBSS->wdiBSSType);
24888
24889 phalConfigBSS->operMode = pwdiConfigBSS->ucOperMode;
24890 phalConfigBSS->nwType = WDI_2_HAL_NW_TYPE(pwdiConfigBSS->wdiNWType);
24891
Jeff Johnsone7245742012-09-05 17:12:55 -070024892 phalConfigBSS->shortSlotTimeSupported =
Jeff Johnson295189b2012-06-20 16:38:30 -070024893 pwdiConfigBSS->ucShortSlotTimeSupported;
24894 phalConfigBSS->llaCoexist = pwdiConfigBSS->ucllaCoexist;
24895 phalConfigBSS->llbCoexist = pwdiConfigBSS->ucllbCoexist;
24896 phalConfigBSS->llgCoexist = pwdiConfigBSS->ucllgCoexist;
24897 phalConfigBSS->ht20Coexist = pwdiConfigBSS->ucHT20Coexist;
24898 phalConfigBSS->llnNonGFCoexist = pwdiConfigBSS->ucllnNonGFCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070024899 phalConfigBSS->fLsigTXOPProtectionFullSupport =
Jeff Johnson295189b2012-06-20 16:38:30 -070024900 pwdiConfigBSS->ucTXOPProtectionFullSupport;
24901 phalConfigBSS->fRIFSMode = pwdiConfigBSS->ucRIFSMode;
24902 phalConfigBSS->beaconInterval = pwdiConfigBSS->usBeaconInterval;
24903 phalConfigBSS->dtimPeriod = pwdiConfigBSS->ucDTIMPeriod;
24904 phalConfigBSS->txChannelWidthSet = pwdiConfigBSS->ucTXChannelWidthSet;
24905 phalConfigBSS->currentOperChannel = pwdiConfigBSS->ucCurrentOperChannel;
24906 phalConfigBSS->currentExtChannel = pwdiConfigBSS->ucCurrentExtChannel;
24907 phalConfigBSS->action = pwdiConfigBSS->wdiAction;
24908 phalConfigBSS->htCapable = pwdiConfigBSS->ucHTCapable;
24909 phalConfigBSS->obssProtEnabled = pwdiConfigBSS->ucObssProtEnabled;
24910 phalConfigBSS->rmfEnabled = pwdiConfigBSS->ucRMFEnabled;
24911
Jeff Johnsone7245742012-09-05 17:12:55 -070024912 phalConfigBSS->htOperMode =
24913 WDI_2_HAL_HT_OPER_MODE(pwdiConfigBSS->wdiHTOperMod);
Jeff Johnson295189b2012-06-20 16:38:30 -070024914
24915 phalConfigBSS->dualCTSProtection = pwdiConfigBSS->ucDualCTSProtection;
24916 phalConfigBSS->ucMaxProbeRespRetryLimit = pwdiConfigBSS->ucMaxProbeRespRetryLimit;
24917 phalConfigBSS->bHiddenSSIDEn = pwdiConfigBSS->bHiddenSSIDEn;
24918 phalConfigBSS->bProxyProbeRespEn = pwdiConfigBSS->bProxyProbeRespEn;
24919
24920#ifdef WLAN_FEATURE_VOWIFI
24921 phalConfigBSS->maxTxPower = pwdiConfigBSS->cMaxTxPower;
24922#endif
24923
24924 /*! Used 32 as magic number because that is how the ssid is declared inside the
24925 hal header - hal needs a macro for it */
Jeff Johnsone7245742012-09-05 17:12:55 -070024926 phalConfigBSS->ssId.length =
Jeff Johnson295189b2012-06-20 16:38:30 -070024927 (pwdiConfigBSS->wdiSSID.ucLength <= 32)?
24928 pwdiConfigBSS->wdiSSID.ucLength : 32;
24929 wpalMemoryCopy(phalConfigBSS->ssId.ssId,
Jeff Johnsone7245742012-09-05 17:12:55 -070024930 pwdiConfigBSS->wdiSSID.sSSID,
24931 phalConfigBSS->ssId.length);
Jeff Johnson295189b2012-06-20 16:38:30 -070024932
24933 WDI_CopyWDIStaCtxToHALStaCtx( &phalConfigBSS->staContext,
24934 &pwdiConfigBSS->wdiSTAContext);
Jeff Johnsone7245742012-09-05 17:12:55 -070024935
Jeff Johnson295189b2012-06-20 16:38:30 -070024936 WDI_CopyWDIRateSetToHALRateSet( &phalConfigBSS->rateSet,
24937 &pwdiConfigBSS->wdiRateSet);
24938
24939 phalConfigBSS->edcaParamsValid = pwdiConfigBSS->ucEDCAParamsValid;
24940
24941 if(phalConfigBSS->edcaParamsValid)
24942 {
24943 WDI_CopyWDIEDCAParamsToHALEDCAParams( &phalConfigBSS->acbe,
24944 &pwdiConfigBSS->wdiBEEDCAParams);
24945 WDI_CopyWDIEDCAParamsToHALEDCAParams( &phalConfigBSS->acbk,
24946 &pwdiConfigBSS->wdiBKEDCAParams);
24947 WDI_CopyWDIEDCAParamsToHALEDCAParams( &phalConfigBSS->acvi,
24948 &pwdiConfigBSS->wdiVIEDCAParams);
24949 WDI_CopyWDIEDCAParamsToHALEDCAParams( &phalConfigBSS->acvo,
24950 &pwdiConfigBSS->wdiVOEDCAParams);
24951 }
24952
Jeff Johnsone7245742012-09-05 17:12:55 -070024953 phalConfigBSS->halPersona = pwdiConfigBSS->ucPersona;
Jeff Johnson295189b2012-06-20 16:38:30 -070024954
24955 phalConfigBSS->bSpectrumMgtEnable = pwdiConfigBSS->bSpectrumMgtEn;
24956
24957#ifdef WLAN_FEATURE_VOWIFI_11R
24958
Jeff Johnsone7245742012-09-05 17:12:55 -070024959 phalConfigBSS->extSetStaKeyParamValid =
Jeff Johnson295189b2012-06-20 16:38:30 -070024960 pwdiConfigBSS->bExtSetStaKeyParamValid;
Jeff Johnsone7245742012-09-05 17:12:55 -070024961
Jeff Johnson295189b2012-06-20 16:38:30 -070024962 if( phalConfigBSS->extSetStaKeyParamValid )
24963 {
24964 /*-----------------------------------------------------------------------
24965 Copy the STA Key parameters into the HAL message
24966 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024967 phalConfigBSS->extSetStaKeyParam.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -070024968 WDI_2_HAL_ENC_TYPE (pwdiConfigBSS->wdiExtSetKeyParam.wdiEncType);
24969
Jeff Johnsone7245742012-09-05 17:12:55 -070024970 phalConfigBSS->extSetStaKeyParam.wepType =
Jeff Johnson295189b2012-06-20 16:38:30 -070024971 WDI_2_HAL_WEP_TYPE (pwdiConfigBSS->wdiExtSetKeyParam.wdiWEPType );
24972
24973 phalConfigBSS->extSetStaKeyParam.staIdx = pwdiConfigBSS->wdiExtSetKeyParam.ucSTAIdx;
24974
24975 phalConfigBSS->extSetStaKeyParam.defWEPIdx = pwdiConfigBSS->wdiExtSetKeyParam.ucDefWEPIdx;
24976
24977 phalConfigBSS->extSetStaKeyParam.singleTidRc = pwdiConfigBSS->wdiExtSetKeyParam.ucSingleTidRc;
24978
Jeff Johnson295189b2012-06-20 16:38:30 -070024979 for(keyIndex = 0; keyIndex < pwdiConfigBSS->wdiExtSetKeyParam.ucNumKeys ;
24980 keyIndex++)
24981 {
Jeff Johnsone7245742012-09-05 17:12:55 -070024982 phalConfigBSS->extSetStaKeyParam.key[keyIndex].keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -070024983 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].keyId;
24984 phalConfigBSS->extSetStaKeyParam.key[keyIndex].unicast =
24985 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].unicast;
24986 phalConfigBSS->extSetStaKeyParam.key[keyIndex].keyDirection =
24987 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].keyDirection;
24988 wpalMemoryCopy(phalConfigBSS->extSetStaKeyParam.key[keyIndex].keyRsc,
Jeff Johnsone7245742012-09-05 17:12:55 -070024989 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].keyRsc,
Jeff Johnson295189b2012-06-20 16:38:30 -070024990 WDI_MAX_KEY_RSC_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070024991 phalConfigBSS->extSetStaKeyParam.key[keyIndex].paeRole =
Jeff Johnson295189b2012-06-20 16:38:30 -070024992 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].paeRole;
Jeff Johnsone7245742012-09-05 17:12:55 -070024993 phalConfigBSS->extSetStaKeyParam.key[keyIndex].keyLength =
Jeff Johnson295189b2012-06-20 16:38:30 -070024994 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].keyLength;
24995 wpalMemoryCopy(phalConfigBSS->extSetStaKeyParam.key[keyIndex].key,
Jeff Johnsone7245742012-09-05 17:12:55 -070024996 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].key,
Jeff Johnson295189b2012-06-20 16:38:30 -070024997 WDI_MAX_KEY_LENGTH);
24998 }
Jeff Johnson295189b2012-06-20 16:38:30 -070024999 }
25000 else/* phalConfigBSS->extSetStaKeyParamValid is not set */
25001 {
Jeff Johnsone7245742012-09-05 17:12:55 -070025002 wpalMemoryZero( &phalConfigBSS->extSetStaKeyParam,
Jeff Johnson295189b2012-06-20 16:38:30 -070025003 sizeof(phalConfigBSS->extSetStaKeyParam) );
25004 }
25005
25006#endif /*WLAN_FEATURE_VOWIFI_11R*/
25007
Jeff Johnsone7245742012-09-05 17:12:55 -070025008#ifdef WLAN_FEATURE_11AC
25009 if(phalConfigBSS_V1 != NULL)
25010 {
25011 phalConfigBSS_V1->vhtCapable = pwdiConfigBSS->ucVhtCapableSta;
25012 phalConfigBSS_V1->vhtTxChannelWidthSet = pwdiConfigBSS->ucVhtTxChannelWidthSet;
25013 }
25014#endif
25015
Jeff Johnson295189b2012-06-20 16:38:30 -070025016}/*WDI_CopyWDIConfigBSSToHALConfigBSS*/
25017
25018
Jeff Johnsone7245742012-09-05 17:12:55 -070025019/*Extract the request CB function and user data from a request structure
Jeff Johnson295189b2012-06-20 16:38:30 -070025020 pointed to by user data */
25021WPT_STATIC WPT_INLINE void
25022WDI_ExtractRequestCBFromEvent
25023(
25024 WDI_EventInfoType* pEvent,
Jeff Johnsone7245742012-09-05 17:12:55 -070025025 WDI_ReqStatusCb* ppfnReqCB,
Jeff Johnson295189b2012-06-20 16:38:30 -070025026 void** ppUserData
25027)
25028{
25029 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25030 switch ( pEvent->wdiRequest )
25031 {
25032 case WDI_START_REQ:
25033 *ppfnReqCB = ((WDI_StartReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25034 *ppUserData = ((WDI_StartReqParamsType*)pEvent->pEventData)->pUserData;
25035 break;
25036 case WDI_STOP_REQ:
25037 *ppfnReqCB = ((WDI_StopReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25038 *ppUserData = ((WDI_StopReqParamsType*)pEvent->pEventData)->pUserData;
25039 break;
25040 case WDI_INIT_SCAN_REQ:
25041 *ppfnReqCB = ((WDI_InitScanReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25042 *ppUserData = ((WDI_InitScanReqParamsType*)pEvent->pEventData)->pUserData;
25043 break;
25044 case WDI_START_SCAN_REQ:
25045 *ppfnReqCB = ((WDI_StartScanReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25046 *ppUserData = ((WDI_StartScanReqParamsType*)pEvent->pEventData)->pUserData;
25047 break;
25048 case WDI_END_SCAN_REQ:
25049 *ppfnReqCB = ((WDI_EndScanReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25050 *ppUserData = ((WDI_EndScanReqParamsType*)pEvent->pEventData)->pUserData;
25051 break;
25052 case WDI_FINISH_SCAN_REQ:
25053 *ppfnReqCB = ((WDI_FinishScanReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25054 *ppUserData = ((WDI_FinishScanReqParamsType*)pEvent->pEventData)->pUserData;
25055 break;
25056 case WDI_JOIN_REQ:
25057 *ppfnReqCB = ((WDI_JoinReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25058 *ppUserData = ((WDI_JoinReqParamsType*)pEvent->pEventData)->pUserData;
25059 break;
25060 case WDI_CONFIG_BSS_REQ:
25061 *ppfnReqCB = ((WDI_ConfigBSSReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25062 *ppUserData = ((WDI_ConfigBSSReqParamsType*)pEvent->pEventData)->pUserData;
25063 break;
25064 case WDI_DEL_BSS_REQ:
25065 *ppfnReqCB = ((WDI_DelBSSReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25066 *ppUserData = ((WDI_DelBSSReqParamsType*)pEvent->pEventData)->pUserData;
25067 break;
25068 case WDI_POST_ASSOC_REQ:
25069 *ppfnReqCB = ((WDI_PostAssocReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25070 *ppUserData = ((WDI_PostAssocReqParamsType*)pEvent->pEventData)->pUserData;
25071 break;
25072 case WDI_DEL_STA_REQ:
25073 *ppfnReqCB = ((WDI_DelSTAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25074 *ppUserData = ((WDI_DelSTAReqParamsType*)pEvent->pEventData)->pUserData;
25075 break;
25076 case WDI_DEL_STA_SELF_REQ:
25077 *ppfnReqCB = ((WDI_DelSTASelfReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25078 *ppUserData = ((WDI_DelSTASelfReqParamsType*)pEvent->pEventData)->pUserData;
25079 break;
25080
25081 case WDI_SET_BSS_KEY_REQ:
25082 *ppfnReqCB = ((WDI_SetBSSKeyReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25083 *ppUserData = ((WDI_SetBSSKeyReqParamsType*)pEvent->pEventData)->pUserData;
25084 break;
25085 case WDI_RMV_BSS_KEY_REQ:
25086 *ppfnReqCB = ((WDI_RemoveBSSKeyReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25087 *ppUserData = ((WDI_RemoveBSSKeyReqParamsType*)pEvent->pEventData)->pUserData;
25088 break;
25089 case WDI_SET_STA_KEY_REQ:
25090 *ppfnReqCB = ((WDI_SetSTAKeyReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25091 *ppUserData = ((WDI_SetSTAKeyReqParamsType*)pEvent->pEventData)->pUserData;
25092 break;
25093 case WDI_RMV_STA_KEY_REQ:
25094 *ppfnReqCB = ((WDI_RemoveSTAKeyReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25095 *ppUserData = ((WDI_RemoveSTAKeyReqParamsType*)pEvent->pEventData)->pUserData;
25096 break;
25097 case WDI_ADD_TS_REQ:
25098 *ppfnReqCB = ((WDI_AddTSReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25099 *ppUserData = ((WDI_AddTSReqParamsType*)pEvent->pEventData)->pUserData;
25100 break;
25101 case WDI_DEL_TS_REQ:
25102 *ppfnReqCB = ((WDI_DelTSReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25103 *ppUserData = ((WDI_DelTSReqParamsType*)pEvent->pEventData)->pUserData;
25104 break;
25105 case WDI_UPD_EDCA_PRMS_REQ:
25106 *ppfnReqCB = ((WDI_UpdateEDCAParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25107 *ppUserData = ((WDI_UpdateEDCAParamsType*)pEvent->pEventData)->pUserData;
25108 break;
25109 case WDI_ADD_BA_SESSION_REQ:
25110 *ppfnReqCB = ((WDI_AddBASessionReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25111 *ppUserData = ((WDI_AddBASessionReqParamsType*)pEvent->pEventData)->pUserData;
25112 break;
25113 case WDI_DEL_BA_REQ:
25114 *ppfnReqCB = ((WDI_DelBAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25115 *ppUserData = ((WDI_DelBAReqParamsType*)pEvent->pEventData)->pUserData;
25116 break;
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -080025117#ifdef FEATURE_WLAN_ESE
Jeff Johnson295189b2012-06-20 16:38:30 -070025118 case WDI_TSM_STATS_REQ:
25119 *ppfnReqCB = ((WDI_TSMStatsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25120 *ppUserData = ((WDI_TSMStatsReqParamsType*)pEvent->pEventData)->pUserData;
25121 break;
25122#endif
25123 case WDI_CH_SWITCH_REQ:
25124 *ppfnReqCB = ((WDI_SwitchChReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25125 *ppUserData = ((WDI_SwitchChReqParamsType*)pEvent->pEventData)->pUserData;
25126 break;
Kalikinkar dhara1e83b772014-02-06 12:59:22 -080025127 case WDI_CH_SWITCH_REQ_V1:
25128 *ppfnReqCB = ((WDI_SwitchChReqParamsType_V1*)pEvent->pEventData)->wdiReqStatusCB;
25129 *ppUserData = ((WDI_SwitchChReqParamsType_V1*)pEvent->pEventData)->pUserData;
25130 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070025131 case WDI_CONFIG_STA_REQ:
25132 *ppfnReqCB = ((WDI_ConfigSTAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25133 *ppUserData = ((WDI_ConfigSTAReqParamsType*)pEvent->pEventData)->pUserData;
25134 break;
25135 case WDI_SET_LINK_ST_REQ:
25136 *ppfnReqCB = ((WDI_SetLinkReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25137 *ppUserData = ((WDI_SetLinkReqParamsType*)pEvent->pEventData)->pUserData;
25138 break;
25139 case WDI_GET_STATS_REQ:
25140 *ppfnReqCB = ((WDI_GetStatsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25141 *ppUserData = ((WDI_GetStatsReqParamsType*)pEvent->pEventData)->pUserData;
25142 break;
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -080025143#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_ESE || defined(FEATURE_WLAN_LFR)
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -080025144 case WDI_GET_ROAM_RSSI_REQ:
25145 *ppfnReqCB = ((WDI_GetRoamRssiReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25146 *ppUserData = ((WDI_GetRoamRssiReqParamsType*)pEvent->pEventData)->pUserData;
25147 break;
25148#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070025149 case WDI_UPDATE_CFG_REQ:
25150 *ppfnReqCB = ((WDI_UpdateCfgReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25151 *ppUserData = ((WDI_UpdateCfgReqParamsType*)pEvent->pEventData)->pUserData;
25152 break;
25153 case WDI_ADD_BA_REQ:
25154 *ppfnReqCB = ((WDI_AddBAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25155 *ppUserData = ((WDI_AddBAReqParamsType*)pEvent->pEventData)->pUserData;
25156 break;
25157 case WDI_TRIGGER_BA_REQ:
25158 *ppfnReqCB = ((WDI_TriggerBAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25159 *ppUserData = ((WDI_TriggerBAReqParamsType*)pEvent->pEventData)->pUserData;
25160 break;
25161 case WDI_UPD_BCON_PRMS_REQ:
25162 *ppfnReqCB = ((WDI_UpdateBeaconParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25163 *ppUserData = ((WDI_UpdateBeaconParamsType*)pEvent->pEventData)->pUserData;
25164 break;
25165 case WDI_SND_BCON_REQ:
25166 *ppfnReqCB = ((WDI_SendBeaconParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25167 *ppUserData = ((WDI_SendBeaconParamsType*)pEvent->pEventData)->pUserData;
25168 break;
25169 case WDI_ENTER_BMPS_REQ:
25170 *ppfnReqCB = ((WDI_EnterBmpsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25171 *ppUserData = ((WDI_EnterBmpsReqParamsType*)pEvent->pEventData)->pUserData;
25172 break;
25173 case WDI_EXIT_BMPS_REQ:
25174 *ppfnReqCB = ((WDI_ExitBmpsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25175 *ppUserData = ((WDI_ExitBmpsReqParamsType*)pEvent->pEventData)->pUserData;
25176 break;
Mihir Shetea4306052014-03-25 00:02:54 +053025177 case WDI_ENTER_IMPS_REQ:
25178 *ppfnReqCB = ((WDI_EnterImpsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25179 *ppUserData = ((WDI_EnterImpsReqParamsType*)pEvent->pEventData)->pUserData;
25180 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070025181 case WDI_ENTER_UAPSD_REQ:
25182 *ppfnReqCB = ((WDI_EnterUapsdReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25183 *ppUserData = ((WDI_EnterUapsdReqParamsType*)pEvent->pEventData)->pUserData;
25184 break;
Yue Ma7f44bbe2013-04-12 11:47:39 -070025185 case WDI_EXIT_UAPSD_REQ:
25186 *ppfnReqCB = ((WDI_ExitUapsdReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25187 *ppUserData = ((WDI_ExitUapsdReqParamsType*)pEvent->pEventData)->pUserData;
25188 break;
25189 case WDI_SET_UAPSD_PARAM_REQ:
25190 *ppfnReqCB = ((WDI_SetUapsdAcParamsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25191 *ppUserData = ((WDI_SetUapsdAcParamsReqParamsType*)pEvent->pEventData)->pUserData;
25192 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070025193 case WDI_UPDATE_UAPSD_PARAM_REQ:
25194 *ppfnReqCB = ((WDI_UpdateUapsdReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25195 *ppUserData = ((WDI_UpdateUapsdReqParamsType*)pEvent->pEventData)->pUserData;
25196 break;
25197 case WDI_CONFIGURE_RXP_FILTER_REQ:
25198 *ppfnReqCB = ((WDI_ConfigureRxpFilterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25199 *ppUserData = ((WDI_ConfigureRxpFilterReqParamsType*)pEvent->pEventData)->pUserData;
25200 break;
25201 case WDI_SET_BEACON_FILTER_REQ:
25202 *ppfnReqCB = ((WDI_BeaconFilterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25203 *ppUserData = ((WDI_BeaconFilterReqParamsType*)pEvent->pEventData)->pUserData;
25204 break;
25205 case WDI_REM_BEACON_FILTER_REQ:
25206 *ppfnReqCB = ((WDI_RemBeaconFilterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25207 *ppUserData = ((WDI_RemBeaconFilterReqParamsType*)pEvent->pEventData)->pUserData;
Jeff Johnsone7245742012-09-05 17:12:55 -070025208 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070025209 case WDI_SET_RSSI_THRESHOLDS_REQ:
25210 *ppfnReqCB = ((WDI_SetRSSIThresholdsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25211 *ppUserData = ((WDI_SetRSSIThresholdsReqParamsType*)pEvent->pEventData)->pUserData;
25212 break;
25213 case WDI_HOST_OFFLOAD_REQ:
25214 *ppfnReqCB = ((WDI_HostOffloadReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25215 *ppUserData = ((WDI_HostOffloadReqParamsType*)pEvent->pEventData)->pUserData;
25216 break;
25217 case WDI_WOWL_ADD_BC_PTRN_REQ:
25218 *ppfnReqCB = ((WDI_WowlAddBcPtrnReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25219 *ppUserData = ((WDI_WowlAddBcPtrnReqParamsType*)pEvent->pEventData)->pUserData;
25220 break;
25221 case WDI_WOWL_DEL_BC_PTRN_REQ:
25222 *ppfnReqCB = ((WDI_WowlDelBcPtrnReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25223 *ppUserData = ((WDI_WowlDelBcPtrnReqParamsType*)pEvent->pEventData)->pUserData;
25224 break;
25225 case WDI_WOWL_ENTER_REQ:
25226 *ppfnReqCB = ((WDI_WowlEnterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25227 *ppUserData = ((WDI_WowlEnterReqParamsType*)pEvent->pEventData)->pUserData;
25228 break;
Yue Ma7f44bbe2013-04-12 11:47:39 -070025229 case WDI_WOWL_EXIT_REQ:
25230 *ppfnReqCB = ((WDI_WowlExitReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25231 *ppUserData = ((WDI_WowlExitReqParamsType*)pEvent->pEventData)->pUserData;
25232 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070025233 case WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ:
25234 *ppfnReqCB = ((WDI_ConfigureAppsCpuWakeupStateReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25235 *ppUserData = ((WDI_ConfigureAppsCpuWakeupStateReqParamsType*)pEvent->pEventData)->pUserData;
25236 break;
25237 case WDI_FLUSH_AC_REQ:
25238 *ppfnReqCB = ((WDI_FlushAcReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25239 *ppUserData = ((WDI_FlushAcReqParamsType*)pEvent->pEventData)->pUserData;
25240 break;
25241 case WDI_BTAMP_EVENT_REQ:
25242 *ppfnReqCB = ((WDI_BtAmpEventParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25243 *ppUserData = ((WDI_BtAmpEventParamsType*)pEvent->pEventData)->pUserData;
25244 break;
25245 case WDI_KEEP_ALIVE_REQ:
25246 *ppfnReqCB = ((WDI_KeepAliveReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25247 *ppUserData = ((WDI_KeepAliveReqParamsType*)pEvent->pEventData)->pUserData;
25248 break;
Yue Ma7f44bbe2013-04-12 11:47:39 -070025249#if defined FEATURE_WLAN_SCAN_PNO
25250 case WDI_SET_PREF_NETWORK_REQ:
25251 *ppfnReqCB = ((WDI_PNOScanReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25252 *ppUserData = ((WDI_PNOScanReqParamsType*)pEvent->pEventData)->pUserData;
25253 break;
25254 case WDI_SET_RSSI_FILTER_REQ:
25255 *ppfnReqCB = ((WDI_SetRssiFilterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25256 *ppUserData = ((WDI_SetRssiFilterReqParamsType*)pEvent->pEventData)->pUserData;
25257 break;
25258 case WDI_UPDATE_SCAN_PARAMS_REQ:
25259 *ppfnReqCB = ((WDI_UpdateScanParamsInfoType*)pEvent->pEventData)->wdiReqStatusCB;
25260 *ppUserData = ((WDI_UpdateScanParamsInfoType*)pEvent->pEventData)->pUserData;
25261 break;
25262#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070025263 case WDI_SET_TX_PER_TRACKING_REQ:
25264 *ppfnReqCB = ((WDI_SetTxPerTrackingReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25265 *ppUserData = ((WDI_SetTxPerTrackingReqParamsType*)pEvent->pEventData)->pUserData;
Tushnim Bhattacharyya4858ab62013-03-08 10:15:42 -080025266 break;
Yue Ma7f44bbe2013-04-12 11:47:39 -070025267#if defined WLAN_FEATURE_PACKET_FILTERING
25268 case WDI_8023_MULTICAST_LIST_REQ:
25269 *ppfnReqCB = ((WDI_RcvFltPktSetMcListReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25270 *ppUserData = ((WDI_RcvFltPktSetMcListReqParamsType*)pEvent->pEventData)->pUserData;
25271 break;
Tushnim Bhattacharyya4858ab62013-03-08 10:15:42 -080025272 case WDI_RECEIVE_FILTER_SET_FILTER_REQ:
25273 *ppfnReqCB = ((WDI_SetRcvPktFilterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25274 *ppUserData = ((WDI_SetRcvPktFilterReqParamsType*)pEvent->pEventData)->pUserData;
25275 break;
25276 case WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ:
25277 *ppfnReqCB = ((WDI_RcvFltPktMatchCntReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25278 *ppUserData = ((WDI_RcvFltPktMatchCntReqParamsType*)pEvent->pEventData)->pUserData;
25279 break;
25280 case WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ:
25281 *ppfnReqCB = ((WDI_RcvFltPktClearReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25282 *ppUserData = ((WDI_RcvFltPktClearReqParamsType*)pEvent->pEventData)->pUserData;
25283 break;
Yue Ma7f44bbe2013-04-12 11:47:39 -070025284#endif
25285 case WDI_SET_POWER_PARAMS_REQ:
25286 *ppfnReqCB = ((WDI_SetPowerParamsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25287 *ppUserData = ((WDI_SetPowerParamsReqParamsType*)pEvent->pEventData)->pUserData;
25288 break;
25289#if defined WLAN_FEATURE_GTK_OFFLOAD
25290 case WDI_GTK_OFFLOAD_REQ:
25291 *ppfnReqCB = ((WDI_GtkOffloadReqMsg*)pEvent->pEventData)->wdiReqStatusCB;
25292 *ppUserData = ((WDI_GtkOffloadReqMsg*)pEvent->pEventData)->pUserData;
25293 break;
25294 case WDI_GTK_OFFLOAD_GETINFO_REQ:
25295 *ppfnReqCB = ((WDI_GtkOffloadGetInfoReqMsg*)pEvent->pEventData)->wdiReqStatusCB;
25296 *ppUserData = ((WDI_GtkOffloadGetInfoReqMsg*)pEvent->pEventData)->pUserData;
25297 break;
25298#endif
Tushnim Bhattacharyya4858ab62013-03-08 10:15:42 -080025299
Jeff Johnson295189b2012-06-20 16:38:30 -070025300 default:
25301 *ppfnReqCB = NULL;
25302 *ppUserData = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070025303 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070025304 }
25305}/*WDI_ExtractRequestCBFromEvent*/
25306
25307
25308/**
Jeff Johnsone7245742012-09-05 17:12:55 -070025309 @brief WDI_IsHwFrameTxTranslationCapable checks to see if HW
Jeff Johnson295189b2012-06-20 16:38:30 -070025310 frame xtl is enabled for a particular STA.
25311
25312 WDI_PostAssocReq must have been called.
25313
Jeff Johnsone7245742012-09-05 17:12:55 -070025314 @param uSTAIdx: STA index
25315
Jeff Johnson295189b2012-06-20 16:38:30 -070025316 @see WDI_PostAssocReq
25317 @return Result of the function call
25318*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025319wpt_boolean
Jeff Johnson295189b2012-06-20 16:38:30 -070025320WDI_IsHwFrameTxTranslationCapable
25321(
25322 wpt_uint8 uSTAIdx
25323)
25324{
Jeff Johnsone7245742012-09-05 17:12:55 -070025325 /*!! FIX ME - this must eventually be per station - for now just feedback
Jeff Johnson295189b2012-06-20 16:38:30 -070025326 uma value*/
25327 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025328 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070025329 ------------------------------------------------------------------------*/
25330 if ( eWLAN_PAL_FALSE == gWDIInitialized )
25331 {
25332 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25333 "WDI API call before module is initialized - Fail request");
25334
Jeff Johnsone7245742012-09-05 17:12:55 -070025335 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070025336 }
25337
Gopichand Nakkala976e3252013-01-03 15:45:56 -080025338#ifdef WLAN_SOFTAP_VSTA_FEATURE
25339 if (IS_VSTA_IDX(uSTAIdx))
25340 {
25341 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
25342 "STA %d is a Virtual STA, "
25343 "HW frame translation disabled", uSTAIdx);
25344 return eWLAN_PAL_FALSE;
25345 }
25346#endif
Jeff Johnsone7245742012-09-05 17:12:55 -070025347
Jeff Johnson295189b2012-06-20 16:38:30 -070025348 return gWDICb.bFrameTransEnabled;
25349}/*WDI_IsHwFrameTxTranslationCapable*/
25350
Katya Nigam6201c3e2014-05-27 17:51:42 +053025351
25352/**
25353 @brief WDI_IsSelfSTA - check if staid is self sta index
25354
25355
25356 @param pWDICtx: pointer to the WLAN DAL context
25357 ucSTAIdx: station index
25358
25359 @return Result of the function call
25360*/
25361wpt_boolean WDI_IsSelfSTA( void* pWDICtx, wpt_uint8 ucSTAIdx )
25362{
25363 wpt_uint8 ucSTAType;
25364
25365 if( WDI_STATableGetStaType( (WDI_ControlBlockType*)pWDICtx,
25366 ucSTAIdx,&ucSTAType) == WDI_STATUS_SUCCESS)
25367 {
25368 if( ucSTAType == WDI_STA_ENTRY_SELF )
25369 return eWLAN_PAL_TRUE;
25370 }
25371
25372 return eWLAN_PAL_FALSE;
25373}
25374
25375
25376
Jeff Johnson295189b2012-06-20 16:38:30 -070025377#ifdef FEATURE_WLAN_SCAN_PNO
25378/**
25379 @brief WDI_SetPreferredNetworkList
25380
Jeff Johnsone7245742012-09-05 17:12:55 -070025381 @param pwdiPNOScanReqParams: the Set PNO as specified
Jeff Johnson295189b2012-06-20 16:38:30 -070025382 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -070025383
Jeff Johnson295189b2012-06-20 16:38:30 -070025384 wdiPNOScanCb: callback for passing back the response
25385 of the Set PNO operation received from the
25386 device
Jeff Johnsone7245742012-09-05 17:12:55 -070025387
Jeff Johnson295189b2012-06-20 16:38:30 -070025388 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -070025389 callback
25390
Jeff Johnson295189b2012-06-20 16:38:30 -070025391 @return Result of the function call
25392*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025393WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070025394WDI_SetPreferredNetworkReq
25395(
25396 WDI_PNOScanReqParamsType* pwdiPNOScanReqParams,
25397 WDI_PNOScanCb wdiPNOScanCb,
25398 void* pUserData
25399)
25400{
25401 WDI_EventInfoType wdiEventData = {{0}};
25402 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25403
25404 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025405 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070025406 ------------------------------------------------------------------------*/
25407 if ( eWLAN_PAL_FALSE == gWDIInitialized )
25408 {
25409 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25410 "WDI API call before module is initialized - Fail request");
25411
Jeff Johnsone7245742012-09-05 17:12:55 -070025412 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070025413 }
25414
25415 /*------------------------------------------------------------------------
25416 Fill in Event data and post to the Main FSM
25417 ------------------------------------------------------------------------*/
25418 wdiEventData.wdiRequest = WDI_SET_PREF_NETWORK_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070025419 wdiEventData.pEventData = pwdiPNOScanReqParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070025420 wdiEventData.uEventDataSize = sizeof(*pwdiPNOScanReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -070025421 wdiEventData.pCBfnc = wdiPNOScanCb;
Jeff Johnson295189b2012-06-20 16:38:30 -070025422 wdiEventData.pUserData = pUserData;
25423
25424 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
25425}
25426
25427
25428/**
25429 @brief WDI_SetRssiFilterReq
25430
Jeff Johnsone7245742012-09-05 17:12:55 -070025431 @param pwdiRssiFilterReqParams: the Set RSSI Filter as
Jeff Johnson295189b2012-06-20 16:38:30 -070025432 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -070025433
Jeff Johnson295189b2012-06-20 16:38:30 -070025434 wdiRssiFilterCb: callback for passing back the response
25435 of the Set RSSI Filter operation received from the
25436 device
Jeff Johnsone7245742012-09-05 17:12:55 -070025437
Jeff Johnson295189b2012-06-20 16:38:30 -070025438 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -070025439 callback
25440
Jeff Johnson295189b2012-06-20 16:38:30 -070025441 @return Result of the function call
25442*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025443WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070025444WDI_SetRssiFilterReq
25445(
25446 WDI_SetRssiFilterReqParamsType* pwdiRssiFilterReqParams,
25447 WDI_RssiFilterCb wdiRssiFilterCb,
25448 void* pUserData
25449)
25450{
25451 WDI_EventInfoType wdiEventData = {{0}};
25452 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25453
25454 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025455 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070025456 ------------------------------------------------------------------------*/
25457 if ( eWLAN_PAL_FALSE == gWDIInitialized )
25458 {
25459 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25460 "WDI API call before module is initialized - Fail request");
25461
Jeff Johnsone7245742012-09-05 17:12:55 -070025462 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070025463 }
25464
25465 /*------------------------------------------------------------------------
25466 Fill in Event data and post to the Main FSM
25467 ------------------------------------------------------------------------*/
25468 wdiEventData.wdiRequest = WDI_SET_RSSI_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070025469 wdiEventData.pEventData = pwdiRssiFilterReqParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070025470 wdiEventData.uEventDataSize = sizeof(*pwdiRssiFilterReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -070025471 wdiEventData.pCBfnc = wdiRssiFilterCb;
Jeff Johnson295189b2012-06-20 16:38:30 -070025472 wdiEventData.pUserData = pUserData;
25473
25474 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
25475}/*WDI_SetRssiFilterReq*/
25476
25477/**
25478 @brief WDI_UpdateScanParamsReq
25479
Jeff Johnsone7245742012-09-05 17:12:55 -070025480 @param pwdiUpdateScanParamsInfoType: the Update Scan Params as specified
Jeff Johnson295189b2012-06-20 16:38:30 -070025481 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -070025482
Jeff Johnson295189b2012-06-20 16:38:30 -070025483 wdiUpdateScanParamsCb: callback for passing back the response
25484 of the Set PNO operation received from the
25485 device
Jeff Johnsone7245742012-09-05 17:12:55 -070025486
Jeff Johnson295189b2012-06-20 16:38:30 -070025487 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -070025488 callback
25489
Jeff Johnson295189b2012-06-20 16:38:30 -070025490 @return Result of the function call
25491*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025492WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070025493WDI_UpdateScanParamsReq
25494(
25495 WDI_UpdateScanParamsInfoType* pwdiUpdateScanParamsInfoType,
25496 WDI_UpdateScanParamsCb wdiUpdateScanParamsCb,
25497 void* pUserData
25498)
25499{
25500 WDI_EventInfoType wdiEventData = {{0}};
25501 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25502
25503 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025504 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070025505 ------------------------------------------------------------------------*/
25506 if ( eWLAN_PAL_FALSE == gWDIInitialized )
25507 {
25508 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25509 "WDI API call before module is initialized - Fail request");
25510
Jeff Johnsone7245742012-09-05 17:12:55 -070025511 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070025512 }
25513
25514 /*------------------------------------------------------------------------
25515 Fill in Event data and post to the Main FSM
25516 ------------------------------------------------------------------------*/
25517 wdiEventData.wdiRequest = WDI_UPDATE_SCAN_PARAMS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070025518 wdiEventData.pEventData = pwdiUpdateScanParamsInfoType;
Jeff Johnson295189b2012-06-20 16:38:30 -070025519 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateScanParamsInfoType);
Jeff Johnsone7245742012-09-05 17:12:55 -070025520 wdiEventData.pCBfnc = wdiUpdateScanParamsCb;
Jeff Johnson295189b2012-06-20 16:38:30 -070025521 wdiEventData.pUserData = pUserData;
25522
25523 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
25524}
25525
25526/**
Jeff Johnsone7245742012-09-05 17:12:55 -070025527 @brief Helper function to pack Set Preferred Network List
Jeff Johnson295189b2012-06-20 16:38:30 -070025528 Request parameters
Jeff Johnsone7245742012-09-05 17:12:55 -070025529
25530 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070025531 pwdiPNOScanReqParams: pointer to the info received
25532 from upper layers
25533 ppSendBuffer, pSize - out pointers of the packed buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070025534 and its size
25535
Jeff Johnson295189b2012-06-20 16:38:30 -070025536 @return Result of the function call
25537*/
25538
25539WDI_Status
25540WDI_PackPreferredNetworkList
25541(
25542 WDI_ControlBlockType* pWDICtx,
25543 WDI_PNOScanReqParamsType* pwdiPNOScanReqParams,
25544 wpt_uint8** ppSendBuffer,
25545 wpt_uint16* pSize
25546)
25547{
Jeff Johnsone7245742012-09-05 17:12:55 -070025548 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070025549 wpt_uint16 usDataOffset = 0;
25550 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025551 tpPrefNetwListParams pPrefNetwListParams = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070025552 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070025553 /*-----------------------------------------------------------------------
25554 Get message buffer
25555 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025556 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_PREF_NETWORK_REQ,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025557 sizeof(tPrefNetwListParams),
Jeff Johnson295189b2012-06-20 16:38:30 -070025558 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025559 ( usSendSize < (usDataOffset + sizeof(tPrefNetwListParams) )))
Jeff Johnson295189b2012-06-20 16:38:30 -070025560 {
25561 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080025562 "Unable to get send buffer in Set PNO req %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070025563 pwdiPNOScanReqParams);
25564 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070025565 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025566 }
25567
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025568 pPrefNetwListParams = (tpPrefNetwListParams)(pSendBuffer + usDataOffset);
25569
Jeff Johnson295189b2012-06-20 16:38:30 -070025570 /*-------------------------------------------------------------------------
25571 Fill prefNetwListParams from pwdiPNOScanReqParams->wdiPNOScanInfo
25572 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025573 pPrefNetwListParams->enable =
Jeff Johnson295189b2012-06-20 16:38:30 -070025574 pwdiPNOScanReqParams->wdiPNOScanInfo.bEnable;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025575 pPrefNetwListParams->modePNO =
Jeff Johnson295189b2012-06-20 16:38:30 -070025576 pwdiPNOScanReqParams->wdiPNOScanInfo.wdiModePNO;
25577
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025578 pPrefNetwListParams->ucNetworksCount =
Jeff Johnsone7245742012-09-05 17:12:55 -070025579 (pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount <
Jeff Johnson295189b2012-06-20 16:38:30 -070025580 WLAN_HAL_PNO_MAX_SUPP_NETWORKS)?
Jeff Johnsone7245742012-09-05 17:12:55 -070025581 pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount :
Jeff Johnson295189b2012-06-20 16:38:30 -070025582 WLAN_HAL_PNO_MAX_SUPP_NETWORKS;
25583
25584 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070025585 "WDI SET PNO: Enable %d, Mode %d, Netw Count %d",
Jeff Johnson295189b2012-06-20 16:38:30 -070025586 pwdiPNOScanReqParams->wdiPNOScanInfo.bEnable,
25587 pwdiPNOScanReqParams->wdiPNOScanInfo.wdiModePNO,
25588 pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount);
25589
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025590 for ( i = 0; i < pPrefNetwListParams->ucNetworksCount; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070025591 {
25592 /*SSID of the BSS*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025593 pPrefNetwListParams->aNetworks[i].ssId.length
Jeff Johnson295189b2012-06-20 16:38:30 -070025594 = pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ssId.ucLength;
25595
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025596 wpalMemoryCopy( pPrefNetwListParams->aNetworks[i].ssId.ssId,
Jeff Johnson295189b2012-06-20 16:38:30 -070025597 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ssId.sSSID,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025598 pPrefNetwListParams->aNetworks[i].ssId.length);
Jeff Johnson295189b2012-06-20 16:38:30 -070025599
25600 /*Authentication type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025601 pPrefNetwListParams->aNetworks[i].authentication =
Jeff Johnsone7245742012-09-05 17:12:55 -070025602 (tAuthType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiAuth;
Jeff Johnson295189b2012-06-20 16:38:30 -070025603
25604 /*Encryption type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025605 pPrefNetwListParams->aNetworks[i].encryption =
Jeff Johnsone7245742012-09-05 17:12:55 -070025606 (tEdType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiEncryption;
Jeff Johnson295189b2012-06-20 16:38:30 -070025607
Jeff Johnsone7245742012-09-05 17:12:55 -070025608 /*Indicate the channel on which the Network can be found
Jeff Johnson295189b2012-06-20 16:38:30 -070025609 0 - if all channels */
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025610 pPrefNetwListParams->aNetworks[i].ucChannelCount =
Madan Mohan Koyyalamudia208d102012-10-15 15:18:18 -070025611 (pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ucChannelCount <
25612 WLAN_HAL_PNO_MAX_NETW_CHANNELS)?
25613 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ucChannelCount :
25614 WLAN_HAL_PNO_MAX_NETW_CHANNELS;
Jeff Johnson295189b2012-06-20 16:38:30 -070025615
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025616 wpalMemoryCopy(pPrefNetwListParams->aNetworks[i].aChannels,
Jeff Johnson295189b2012-06-20 16:38:30 -070025617 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].aChannels,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025618 pPrefNetwListParams->aNetworks[i].ucChannelCount);
Jeff Johnson295189b2012-06-20 16:38:30 -070025619
25620 /*Indicates the RSSI threshold for the network to be considered*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025621 pPrefNetwListParams->aNetworks[i].rssiThreshold =
Jeff Johnson295189b2012-06-20 16:38:30 -070025622 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].rssiThreshold;
25623
25624 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070025625 "WDI SET PNO: SSID %d %s",
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025626 pPrefNetwListParams->aNetworks[i].ssId.length,
25627 pPrefNetwListParams->aNetworks[i].ssId.ssId);
Jeff Johnson295189b2012-06-20 16:38:30 -070025628 }
25629
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025630 pPrefNetwListParams->scanTimers.ucScanTimersCount =
Jeff Johnsone7245742012-09-05 17:12:55 -070025631 (pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.ucScanTimersCount <
Jeff Johnson295189b2012-06-20 16:38:30 -070025632 WLAN_HAL_PNO_MAX_SCAN_TIMERS)?
25633 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.ucScanTimersCount :
25634 WLAN_HAL_PNO_MAX_SCAN_TIMERS;
25635
25636 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070025637 "WDI SET PNO: Scan timers count %d 24G P %d 5G Probe %d",
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025638 pPrefNetwListParams->scanTimers.ucScanTimersCount,
Jeff Johnson295189b2012-06-20 16:38:30 -070025639 pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize,
25640 pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize);
25641
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025642 for ( i = 0; i < pPrefNetwListParams->scanTimers.ucScanTimersCount; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070025643 {
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025644 pPrefNetwListParams->scanTimers.aTimerValues[i].uTimerValue =
Jeff Johnson295189b2012-06-20 16:38:30 -070025645 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.aTimerValues[i].uTimerValue;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025646 pPrefNetwListParams->scanTimers.aTimerValues[i].uTimerRepeat =
Jeff Johnson295189b2012-06-20 16:38:30 -070025647 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.aTimerValues[i].uTimerRepeat;
25648 }
25649
25650 /*Copy the probe template*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025651 pPrefNetwListParams->us24GProbeSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070025652 (pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize<
25653 WLAN_HAL_PNO_MAX_PROBE_SIZE)?
25654 pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize:
Jeff Johnsone7245742012-09-05 17:12:55 -070025655 WLAN_HAL_PNO_MAX_PROBE_SIZE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025656
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025657 wpalMemoryCopy(pPrefNetwListParams->a24GProbeTemplate,
Jeff Johnsone7245742012-09-05 17:12:55 -070025658 pwdiPNOScanReqParams->wdiPNOScanInfo.a24GProbeTemplate,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025659 pPrefNetwListParams->us24GProbeSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070025660
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025661 pPrefNetwListParams->us5GProbeSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070025662 (pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize <
25663 WLAN_HAL_PNO_MAX_PROBE_SIZE)?
25664 pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize:
Jeff Johnsone7245742012-09-05 17:12:55 -070025665 WLAN_HAL_PNO_MAX_PROBE_SIZE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025666
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025667 wpalMemoryCopy(pPrefNetwListParams->a5GProbeTemplate,
Jeff Johnsone7245742012-09-05 17:12:55 -070025668 pwdiPNOScanReqParams->wdiPNOScanInfo.a5GProbeTemplate,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025669 pPrefNetwListParams->us5GProbeSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070025670
25671 /*Set the output values*/
25672 *ppSendBuffer = pSendBuffer;
Jeff Johnsone7245742012-09-05 17:12:55 -070025673 *pSize = usSendSize;
Jeff Johnson295189b2012-06-20 16:38:30 -070025674
25675 return WDI_STATUS_SUCCESS;
25676}/*WDI_PackPreferredNetworkList*/
25677
25678/**
Jeff Johnsone7245742012-09-05 17:12:55 -070025679 @brief Helper function to pack Set Preferred Network List
Jeff Johnson295189b2012-06-20 16:38:30 -070025680 Request parameters
Jeff Johnsone7245742012-09-05 17:12:55 -070025681
25682 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070025683 pwdiPNOScanReqParams: pointer to the info received
25684 from upper layers
25685 ppSendBuffer, pSize - out pointers of the packed buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070025686 and its size
25687
Jeff Johnson295189b2012-06-20 16:38:30 -070025688 @return Result of the function call
25689*/
25690
25691WDI_Status
25692WDI_PackPreferredNetworkListNew
25693(
25694 WDI_ControlBlockType* pWDICtx,
25695 WDI_PNOScanReqParamsType* pwdiPNOScanReqParams,
25696 wpt_uint8** ppSendBuffer,
25697 wpt_uint16* pSize
25698)
25699{
Jeff Johnsone7245742012-09-05 17:12:55 -070025700 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070025701 wpt_uint16 usDataOffset = 0;
25702 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025703 tpPrefNetwListParamsNew pPrefNetwListParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070025704 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070025705
25706 /*-----------------------------------------------------------------------
25707 Get message buffer
25708 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025709 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_PREF_NETWORK_REQ,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025710 sizeof(tPrefNetwListParamsNew),
Jeff Johnson295189b2012-06-20 16:38:30 -070025711 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025712 ( usSendSize < (usDataOffset + sizeof(tPrefNetwListParamsNew) )))
Jeff Johnson295189b2012-06-20 16:38:30 -070025713 {
25714 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080025715 "Unable to get send buffer in Set PNO req %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070025716 pwdiPNOScanReqParams);
25717 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070025718 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025719 }
25720
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025721 pPrefNetwListParams = (tpPrefNetwListParamsNew)(pSendBuffer + usDataOffset);
25722
Jeff Johnson295189b2012-06-20 16:38:30 -070025723 /*-------------------------------------------------------------------------
25724 Fill prefNetwListParams from pwdiPNOScanReqParams->wdiPNOScanInfo
25725 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025726 pPrefNetwListParams->enable =
Jeff Johnson295189b2012-06-20 16:38:30 -070025727 pwdiPNOScanReqParams->wdiPNOScanInfo.bEnable;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025728 pPrefNetwListParams->modePNO =
Jeff Johnson295189b2012-06-20 16:38:30 -070025729 pwdiPNOScanReqParams->wdiPNOScanInfo.wdiModePNO;
25730
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025731 pPrefNetwListParams->ucNetworksCount =
Jeff Johnsone7245742012-09-05 17:12:55 -070025732 (pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount <
Jeff Johnson295189b2012-06-20 16:38:30 -070025733 WLAN_HAL_PNO_MAX_SUPP_NETWORKS)?
Jeff Johnsone7245742012-09-05 17:12:55 -070025734 pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount :
Jeff Johnson295189b2012-06-20 16:38:30 -070025735 WLAN_HAL_PNO_MAX_SUPP_NETWORKS;
25736
25737 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070025738 "WDI SET PNO: Enable %d, Mode %d, Netw Count %d",
Jeff Johnson295189b2012-06-20 16:38:30 -070025739 pwdiPNOScanReqParams->wdiPNOScanInfo.bEnable,
25740 pwdiPNOScanReqParams->wdiPNOScanInfo.wdiModePNO,
25741 pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount);
25742
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025743 for ( i = 0; i < pPrefNetwListParams->ucNetworksCount; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070025744 {
25745 /*SSID of the BSS*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025746 pPrefNetwListParams->aNetworks[i].ssId.length
Jeff Johnson295189b2012-06-20 16:38:30 -070025747 = pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ssId.ucLength;
25748
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025749 wpalMemoryCopy( pPrefNetwListParams->aNetworks[i].ssId.ssId,
Jeff Johnson295189b2012-06-20 16:38:30 -070025750 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ssId.sSSID,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025751 pPrefNetwListParams->aNetworks[i].ssId.length);
Jeff Johnson295189b2012-06-20 16:38:30 -070025752
25753 /*Authentication type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025754 pPrefNetwListParams->aNetworks[i].authentication =
Jeff Johnsone7245742012-09-05 17:12:55 -070025755 (tAuthType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiAuth;
Jeff Johnson295189b2012-06-20 16:38:30 -070025756
25757 /*Encryption type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025758 pPrefNetwListParams->aNetworks[i].encryption =
Jeff Johnsone7245742012-09-05 17:12:55 -070025759 (tEdType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiEncryption;
Jeff Johnson295189b2012-06-20 16:38:30 -070025760
25761 /*SSID bcast type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025762 pPrefNetwListParams->aNetworks[i].bcastNetworkType =
Jeff Johnsone7245742012-09-05 17:12:55 -070025763 (tSSIDBcastType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiBcastNetworkType;
Jeff Johnson295189b2012-06-20 16:38:30 -070025764
Jeff Johnsone7245742012-09-05 17:12:55 -070025765 /*Indicate the channel on which the Network can be found
Jeff Johnson295189b2012-06-20 16:38:30 -070025766 0 - if all channels */
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025767 pPrefNetwListParams->aNetworks[i].ucChannelCount =
Jeff Johnson295189b2012-06-20 16:38:30 -070025768 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ucChannelCount;
25769
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025770 wpalMemoryCopy(pPrefNetwListParams->aNetworks[i].aChannels,
Jeff Johnson295189b2012-06-20 16:38:30 -070025771 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].aChannels,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025772 pPrefNetwListParams->aNetworks[i].ucChannelCount);
Jeff Johnson295189b2012-06-20 16:38:30 -070025773
25774 /*Indicates the RSSI threshold for the network to be considered*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025775 pPrefNetwListParams->aNetworks[i].rssiThreshold =
Jeff Johnson295189b2012-06-20 16:38:30 -070025776 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].rssiThreshold;
25777
25778 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070025779 "WDI SET PNO: SSID %d %s",
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025780 pPrefNetwListParams->aNetworks[i].ssId.length,
25781 pPrefNetwListParams->aNetworks[i].ssId.ssId);
Jeff Johnson295189b2012-06-20 16:38:30 -070025782 }
25783
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025784 pPrefNetwListParams->scanTimers.ucScanTimersCount =
Jeff Johnsone7245742012-09-05 17:12:55 -070025785 (pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.ucScanTimersCount <
Jeff Johnson295189b2012-06-20 16:38:30 -070025786 WLAN_HAL_PNO_MAX_SCAN_TIMERS)?
25787 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.ucScanTimersCount :
25788 WLAN_HAL_PNO_MAX_SCAN_TIMERS;
25789
25790 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070025791 "WDI SET PNO: Scan timers count %d 24G P %d 5G Probe %d",
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025792 pPrefNetwListParams->scanTimers.ucScanTimersCount,
Jeff Johnson295189b2012-06-20 16:38:30 -070025793 pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize,
25794 pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize);
25795
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025796 for ( i = 0; i < pPrefNetwListParams->scanTimers.ucScanTimersCount; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070025797 {
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025798 pPrefNetwListParams->scanTimers.aTimerValues[i].uTimerValue =
Jeff Johnson295189b2012-06-20 16:38:30 -070025799 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.aTimerValues[i].uTimerValue;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025800 pPrefNetwListParams->scanTimers.aTimerValues[i].uTimerRepeat =
Jeff Johnson295189b2012-06-20 16:38:30 -070025801 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.aTimerValues[i].uTimerRepeat;
25802 }
25803
25804 /*Copy the probe template*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025805 pPrefNetwListParams->us24GProbeSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070025806 (pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize<
25807 WLAN_HAL_PNO_MAX_PROBE_SIZE)?
25808 pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize:
Jeff Johnsone7245742012-09-05 17:12:55 -070025809 WLAN_HAL_PNO_MAX_PROBE_SIZE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025810
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025811 wpalMemoryCopy(pPrefNetwListParams->a24GProbeTemplate,
Jeff Johnsone7245742012-09-05 17:12:55 -070025812 pwdiPNOScanReqParams->wdiPNOScanInfo.a24GProbeTemplate,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025813 pPrefNetwListParams->us24GProbeSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070025814
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025815 pPrefNetwListParams->us5GProbeSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070025816 (pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize <
25817 WLAN_HAL_PNO_MAX_PROBE_SIZE)?
25818 pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize:
Jeff Johnsone7245742012-09-05 17:12:55 -070025819 WLAN_HAL_PNO_MAX_PROBE_SIZE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025820
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025821 wpalMemoryCopy(pPrefNetwListParams->a5GProbeTemplate,
Jeff Johnsone7245742012-09-05 17:12:55 -070025822 pwdiPNOScanReqParams->wdiPNOScanInfo.a5GProbeTemplate,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025823 pPrefNetwListParams->us5GProbeSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070025824
Jeff Johnson295189b2012-06-20 16:38:30 -070025825
25826 /*Set the output values*/
25827 *ppSendBuffer = pSendBuffer;
Jeff Johnsone7245742012-09-05 17:12:55 -070025828 *pSize = usSendSize;
Jeff Johnson295189b2012-06-20 16:38:30 -070025829
25830 return WDI_STATUS_SUCCESS;
25831}/*WDI_PackPreferredNetworkListNew*/
25832
25833/**
25834 @brief Process Set Preferred Network List Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070025835
25836 @param pWDICtx: pointer to the WLAN DAL context
25837 pEventData: pointer to the event information structure
25838
Jeff Johnson295189b2012-06-20 16:38:30 -070025839 @return Result of the function call
25840*/
25841WDI_Status
25842WDI_ProcessSetPreferredNetworkReq
Jeff Johnsone7245742012-09-05 17:12:55 -070025843(
Jeff Johnson295189b2012-06-20 16:38:30 -070025844 WDI_ControlBlockType* pWDICtx,
25845 WDI_EventInfoType* pEventData
25846)
25847{
25848 WDI_PNOScanReqParamsType* pwdiPNOScanReqParams = NULL;
25849 WDI_PNOScanCb wdiPNOScanCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070025850 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070025851 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070025852 WDI_Status wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070025853
25854 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025855 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070025856 -------------------------------------------------------------------------*/
25857 if (( NULL == pEventData ) ||
25858 ( NULL == (pwdiPNOScanReqParams = (WDI_PNOScanReqParamsType*)pEventData->pEventData)) ||
25859 ( NULL == (wdiPNOScanCb = (WDI_PNOScanCb)pEventData->pCBfnc)))
25860 {
25861 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025862 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025863 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070025864 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025865 }
25866
Mahesh A Saptasagar3604e792014-04-23 20:47:26 +053025867 /*----------------------------------------------------------------------
25868 Avoid Enable PNO during any active session or an ongoing session
25869 ----------------------------------------------------------------------*/
25870 if ( (pwdiPNOScanReqParams->wdiPNOScanInfo.bEnable &&
25871 WDI_GetActiveSessionsCount(pWDICtx, NULL, eWLAN_PAL_FALSE)) )
25872 {
25873 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25874 "%s:(Active/Ongoing Session) - Fail request", __func__);
25875
25876 return WDI_STATUS_E_FAILURE;
25877 }
25878
Jeff Johnson295189b2012-06-20 16:38:30 -070025879 /*-------------------------------------------------------------------------
25880 Pack the PNO request structure based on version
25881 -------------------------------------------------------------------------*/
25882 if ( pWDICtx->wdiPNOVersion > 0 )
25883 {
25884 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025885 "%s: PNO new version %d ", __func__,
Jeff Johnson295189b2012-06-20 16:38:30 -070025886 pWDICtx->wdiPNOVersion);
25887
25888 wdiStatus = WDI_PackPreferredNetworkListNew( pWDICtx, pwdiPNOScanReqParams,
25889 &pSendBuffer, &usSendSize);
25890 }
25891 else
25892 {
25893 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025894 "%s: PNO old version %d ", __func__,
Jeff Johnson295189b2012-06-20 16:38:30 -070025895 pWDICtx->wdiPNOVersion);
25896
25897 wdiStatus = WDI_PackPreferredNetworkList( pWDICtx, pwdiPNOScanReqParams,
25898 &pSendBuffer, &usSendSize);
25899 }
25900
25901 if (( WDI_STATUS_SUCCESS != wdiStatus )||
25902 ( NULL == pSendBuffer )||( 0 == usSendSize ))
25903 {
25904 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025905 "%s: failed to pack request parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025906 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070025907 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070025908 }
25909
25910 pWDICtx->wdiReqStatusCB = pwdiPNOScanReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070025911 pWDICtx->pReqStatusUserData = pwdiPNOScanReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070025912
25913 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025914 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070025915 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025916 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
25917 wdiPNOScanCb, pEventData->pUserData, WDI_SET_PREF_NETWORK_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070025918}
25919
25920/**
25921 @brief Process Set RSSI Filter Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070025922
25923 @param pWDICtx: pointer to the WLAN DAL context
25924 pEventData: pointer to the event information structure
25925
Jeff Johnson295189b2012-06-20 16:38:30 -070025926 @see
25927 @return Result of the function call
25928*/
25929WDI_Status
25930WDI_ProcessSetRssiFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070025931(
Jeff Johnson295189b2012-06-20 16:38:30 -070025932 WDI_ControlBlockType* pWDICtx,
25933 WDI_EventInfoType* pEventData
25934)
25935{
25936 WDI_SetRssiFilterReqParamsType* pwdiRssiFilterReqParams = NULL;
25937 WDI_RssiFilterCb wdiRssiFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070025938 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070025939 wpt_uint16 usDataOffset = 0;
25940 wpt_uint16 usSendSize = 0;
25941 wpt_uint8 ucRssiThreshold;
25942
25943 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025944 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070025945 -------------------------------------------------------------------------*/
25946 if (( NULL == pEventData ) ||
25947 ( NULL == (pwdiRssiFilterReqParams = (WDI_SetRssiFilterReqParamsType*)pEventData->pEventData)) ||
25948 ( NULL == (wdiRssiFilterCb = (WDI_RssiFilterCb)pEventData->pCBfnc)))
25949 {
25950 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025951 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025952 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070025953 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025954 }
25955
25956 /*-----------------------------------------------------------------------
25957 Get message buffer
25958 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025959 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_PREF_NETWORK_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070025960 sizeof(ucRssiThreshold),
25961 &pSendBuffer, &usDataOffset, &usSendSize))||
25962 ( usSendSize < (usDataOffset + sizeof(ucRssiThreshold) )))
25963 {
25964 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080025965 "Unable to get send buffer in Set PNO req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070025966 pEventData, pwdiRssiFilterReqParams, wdiRssiFilterCb);
25967 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070025968 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025969 }
25970
25971 ucRssiThreshold = pwdiRssiFilterReqParams->rssiThreshold;
25972
Jeff Johnsone7245742012-09-05 17:12:55 -070025973 wpalMemoryCopy( pSendBuffer+usDataOffset,
25974 &ucRssiThreshold,
25975 sizeof(ucRssiThreshold));
Jeff Johnson295189b2012-06-20 16:38:30 -070025976
25977 pWDICtx->wdiReqStatusCB = pwdiRssiFilterReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070025978 pWDICtx->pReqStatusUserData = pwdiRssiFilterReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070025979
25980 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025981 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070025982 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025983 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
25984 wdiRssiFilterCb, pEventData->pUserData, WDI_SET_RSSI_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070025985}
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025986#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
25987/**
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025988 @brief WDI_RoamScanOffloadReq
Jeff Johnson295189b2012-06-20 16:38:30 -070025989
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025990 @param pwdiRoamScanOffloadReqParams: the LookupReq as specified
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025991 by the Device Interface
25992
25993 wdiRoamOffloadScancb: callback for passing back the response
25994 of the Roam Candidate Lookup Req operation received from the
25995 device
25996
25997 pUserData: user data will be passed back with the
25998 callback
25999 @return Result of the function call
26000*/
26001WDI_Status
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026002WDI_RoamScanOffloadReq
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026003(
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026004 WDI_RoamScanOffloadReqParamsType* pwdiRoamScanOffloadReqParams,
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026005 WDI_RoamOffloadScanCb wdiRoamOffloadScancb,
26006 void* pUserData
26007)
26008{
26009 WDI_EventInfoType wdiEventData = {{0}};
26010 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26011
26012 /*------------------------------------------------------------------------
26013 Sanity Check
26014 ------------------------------------------------------------------------*/
26015 if ( eWLAN_PAL_FALSE == gWDIInitialized )
26016 {
26017 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
26018 "WDI API call before module is initialized - Fail request");
26019
26020 return WDI_STATUS_E_NOT_ALLOWED;
26021 }
26022
26023 /*------------------------------------------------------------------------
26024 Fill in Event data and post to the Main FSM
26025 ------------------------------------------------------------------------*/
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026026 wdiEventData.wdiRequest = WDI_ROAM_SCAN_OFFLOAD_REQ;
26027 wdiEventData.pEventData = pwdiRoamScanOffloadReqParams;
26028 wdiEventData.uEventDataSize = sizeof(*pwdiRoamScanOffloadReqParams);
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026029 wdiEventData.pCBfnc = wdiRoamOffloadScancb;
26030 wdiEventData.pUserData = pUserData;
26031
26032 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
26033}
26034
26035void
26036WDI_wdiEdTypeEncToEdTypeEnc(tEdType *EdType, WDI_EdType wdiEdType)
26037{
26038 switch (wdiEdType)
26039 {
26040 case WDI_ED_NONE:
26041 *EdType = eED_NONE;
26042 break;
26043 case WDI_ED_WEP40:
26044 case WDI_ED_WEP104:
26045 *EdType = eED_WEP;
26046 break;
26047 case WDI_ED_TKIP:
26048 *EdType = eED_TKIP;
26049 break;
26050 case WDI_ED_CCMP:
26051#ifdef WLAN_FEATURE_11W
26052 case WDI_ED_AES_128_CMAC:
26053#endif
26054 *EdType = eED_CCMP;
26055 break;
26056#ifdef FEATURE_WLAN_WAPI
26057 case WDI_ED_WPI:
26058 *EdType = eED_WPI;
26059 break;
26060#endif
26061 case WDI_ED_ANY:
26062 *EdType = eED_ANY;
26063 break;
26064
26065 default:
26066 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
26067 "%s: Unknown Encryption Type", __func__);
26068 break;
26069 }
26070}
26071
26072/**
26073 @brief Helper function to pack Start Roam Candidate Lookup
26074 Request parameters
26075
26076 @param pWDICtx: pointer to the WLAN DAL context
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026077 pwdiRoamScanOffloadReqParams: pointer to the info received
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026078 from upper layers
26079 ppSendBuffer, pSize - out pointers of the packed buffer
26080 and its size
26081
26082 @return Result of the function call
26083*/
26084
26085WDI_Status
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026086WDI_PackRoamScanOffloadParams
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026087(
26088 WDI_ControlBlockType* pWDICtx,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026089 WDI_RoamScanOffloadReqParamsType* pwdiRoamScanOffloadReqParams,
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026090 wpt_uint8** ppSendBuffer,
26091 wpt_uint16* pSize
26092)
26093{
26094 wpt_uint8* pSendBuffer = NULL;
26095 wpt_uint16 usDataOffset = 0;
26096 wpt_uint16 usSendSize = 0;
26097 tpRoamCandidateListParams pRoamCandidateListParams = NULL;
26098 wpt_uint8 i;
26099 /*-----------------------------------------------------------------------
26100 Get message buffer
26101 -----------------------------------------------------------------------*/
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026102 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ROAM_SCAN_OFFLOAD_REQ,
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026103 sizeof(tRoamCandidateListParams),
26104 &pSendBuffer, &usDataOffset, &usSendSize))||
Varun Reddy Yeturu83952072013-06-03 11:31:52 -070026105 ( usSendSize < (usDataOffset + sizeof(tRoamCandidateListParams) )))
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026106 {
26107 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080026108 "Unable to get send buffer in Start Roam Candidate Lookup Req %p",
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026109 pwdiRoamScanOffloadReqParams);
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026110 WDI_ASSERT(0);
26111 return WDI_STATUS_E_FAILURE;
26112 }
26113 pRoamCandidateListParams = (tpRoamCandidateListParams)(pSendBuffer + usDataOffset);
Varun Reddy Yeturu83952072013-06-03 11:31:52 -070026114 wpalMemoryZero(pRoamCandidateListParams, sizeof(tRoamCandidateListParams));
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026115 pRoamCandidateListParams->RoamScanOffloadEnabled = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.RoamScanOffloadEnabled;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026116 wpalMemoryCopy(pRoamCandidateListParams->ConnectedNetwork.currAPbssid,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026117 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.currAPbssid,
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026118 HAL_MAC_ADDR_LEN);
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026119 pRoamCandidateListParams->ConnectedNetwork.authentication = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.authentication;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026120 WDI_wdiEdTypeEncToEdTypeEnc(&pRoamCandidateListParams->ConnectedNetwork.encryption,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026121 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.encryption);
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026122 WDI_wdiEdTypeEncToEdTypeEnc(&pRoamCandidateListParams->ConnectedNetwork.mcencryption,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026123 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.mcencryption);
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026124
26125 pRoamCandidateListParams->ConnectedNetwork.ssId.length
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026126 = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.ssId.ucLength;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026127 wpalMemoryCopy( pRoamCandidateListParams->ConnectedNetwork.ssId.ssId,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026128 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.ssId.sSSID,
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026129 pRoamCandidateListParams->ConnectedNetwork.ssId.length);
26130 wpalMemoryCopy(pRoamCandidateListParams->ConnectedNetwork.ChannelCache,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026131 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.ChannelCache,
26132 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.ChannelCount );
26133 pRoamCandidateListParams->ConnectedNetwork.ChannelCount = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.ChannelCount;
26134 pRoamCandidateListParams->ChannelCacheType = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ChannelCacheType ;
26135 pRoamCandidateListParams->LookupThreshold = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.LookupThreshold;
Varun Reddy Yeturu6c5e25c2014-01-09 21:55:37 -080026136 pRoamCandidateListParams->RxSensitivityThreshold = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.RxSensitivityThreshold;
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026137 pRoamCandidateListParams->RoamRssiDiff = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.RoamRssiDiff ;
Sameer Thalappil4ae66ec2013-11-05 14:17:35 -080026138 pRoamCandidateListParams->MAWCEnabled = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.MAWCEnabled ;
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026139 pRoamCandidateListParams->Command = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.Command ;
26140 pRoamCandidateListParams->StartScanReason = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.StartScanReason ;
26141 pRoamCandidateListParams->NeighborScanTimerPeriod = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.NeighborScanTimerPeriod ;
26142 pRoamCandidateListParams->NeighborRoamScanRefreshPeriod = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.NeighborRoamScanRefreshPeriod ;
26143 pRoamCandidateListParams->NeighborScanChannelMinTime = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.NeighborScanChannelMinTime ;
26144 pRoamCandidateListParams->NeighborScanChannelMaxTime = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.NeighborScanChannelMaxTime ;
26145 pRoamCandidateListParams->EmptyRefreshScanPeriod = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.EmptyRefreshScanPeriod ;
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -080026146 pRoamCandidateListParams->IsESEEnabled = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.IsESEEnabled ;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026147 wpalMemoryCopy(pRoamCandidateListParams->ValidChannelList,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026148 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ValidChannelList,
26149 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ValidChannelCount);
26150 pRoamCandidateListParams->ValidChannelCount = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ValidChannelCount;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026151
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026152 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO_HIGH,
26153 "Values are ssid = %s, RoamOffloadScan=%d,Command=%d,"
26154 "StartScanReason=%d,NeighborScanTimerPeriod=%d,"
26155 "NeighborRoamScanRefreshPeriod=%d,NeighborScanChannelMinTime=%d,"
26156 "NeighborScanChannelMaxTime = %d,EmptyRefreshScanPeriod=%d,"
26157 "mdiePresent=%d,MDID=%d, auth=%d, uce=%d, mce=%d, nProbes=%d,"
Arif Hussain9a5d5382013-11-17 22:05:35 -080026158 "HomeAwayTime=%d",
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026159 pRoamCandidateListParams->ConnectedNetwork.ssId.ssId,
26160 pRoamCandidateListParams->RoamScanOffloadEnabled,
26161 pRoamCandidateListParams->Command,
26162 pRoamCandidateListParams->StartScanReason,
26163 pRoamCandidateListParams->NeighborScanTimerPeriod,
26164 pRoamCandidateListParams->NeighborRoamScanRefreshPeriod,
26165 pRoamCandidateListParams->NeighborScanChannelMinTime,
26166 pRoamCandidateListParams->NeighborScanChannelMaxTime,
26167 pRoamCandidateListParams->EmptyRefreshScanPeriod,
26168 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.MDID.mdiePresent,
26169 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.MDID.mobilityDomain,
26170 pRoamCandidateListParams->ConnectedNetwork.authentication,
26171 pRoamCandidateListParams->ConnectedNetwork.encryption,
26172 pRoamCandidateListParams->ConnectedNetwork.mcencryption,
26173 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.nProbes,
26174 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.HomeAwayTime);
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026175 pRoamCandidateListParams->us24GProbeSize =
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026176 (pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.us24GProbeSize<
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026177 WLAN_HAL_ROAM_SCAN_MAX_PROBE_SIZE)?
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026178 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.us24GProbeSize:
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026179 WLAN_HAL_ROAM_SCAN_MAX_PROBE_SIZE;
26180 wpalMemoryCopy(pRoamCandidateListParams->a24GProbeTemplate,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026181 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.a24GProbeTemplate,
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026182 pRoamCandidateListParams->us24GProbeSize);
26183 pRoamCandidateListParams->us5GProbeSize =
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026184 (pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.us5GProbeSize<
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026185 WLAN_HAL_ROAM_SCAN_MAX_PROBE_SIZE)?
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026186 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.us5GProbeSize:
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026187 WLAN_HAL_ROAM_SCAN_MAX_PROBE_SIZE;
26188 wpalMemoryCopy(pRoamCandidateListParams->a5GProbeTemplate,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026189 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.a5GProbeTemplate,
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026190 pRoamCandidateListParams->us5GProbeSize);
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026191 pRoamCandidateListParams->MDID.mdiePresent = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.MDID.mdiePresent;
26192 pRoamCandidateListParams->MDID.mobilityDomain = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.MDID.mobilityDomain;
26193 pRoamCandidateListParams->nProbes =
26194 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.nProbes;
26195 pRoamCandidateListParams->HomeAwayTime =
26196 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.HomeAwayTime;
26197 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO_HIGH,"Valid Channel List");
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026198 for (i=0; i<pRoamCandidateListParams->ValidChannelCount ; i++)
26199 {
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026200 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO_HIGH,"%d", pRoamCandidateListParams->ValidChannelList[i]);
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026201 }
26202
26203
26204 /*Set the output values*/
26205 *ppSendBuffer = pSendBuffer;
26206 *pSize = usSendSize;
26207 return WDI_STATUS_SUCCESS;
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026208}/*WDI_PackRoamScanOffloadParams*/
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026209
26210/**
26211 @brief Process Start Roam Candidate Lookup Request function
26212
26213 @param pWDICtx: pointer to the WLAN DAL context
26214 pEventData: pointer to the event information structure
26215
26216 @return Result of the function call
26217*/
26218WDI_Status
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026219WDI_ProcessRoamScanOffloadReq
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026220(
26221 WDI_ControlBlockType* pWDICtx,
26222 WDI_EventInfoType* pEventData
26223)
26224{
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026225 WDI_RoamScanOffloadReqParamsType* pwdiRoamScanOffloadReqParams = NULL;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026226 WDI_RoamOffloadScanCb wdiRoamOffloadScancb = NULL;
26227 wpt_uint8* pSendBuffer = NULL;
26228 wpt_uint16 usSendSize = 0;
26229 WDI_Status wdiStatus;
26230 /*-------------------------------------------------------------------------
26231 Sanity check
26232 -------------------------------------------------------------------------*/
26233 if (( NULL == pEventData ) ||
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026234 ( NULL == (pwdiRoamScanOffloadReqParams = (WDI_RoamScanOffloadReqParamsType*)pEventData->pEventData)) ||
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026235 ( NULL == (wdiRoamOffloadScancb = (WDI_RoamOffloadScanCb)pEventData->pCBfnc)))
26236 {
26237 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
26238 "%s: Invalid parameters", __func__);
26239 WDI_ASSERT(0);
26240 return WDI_STATUS_E_FAILURE;
26241 }
26242
26243 /*-------------------------------------------------------------------------
26244 Pack the Start Roam Candidate Lookup request structure based on version
26245 -------------------------------------------------------------------------*/
26246 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
26247 "%s: Packing Roam Candidate Lookup request ", __func__);
26248
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026249 wdiStatus = WDI_PackRoamScanOffloadParams( pWDICtx, pwdiRoamScanOffloadReqParams,
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026250 &pSendBuffer, &usSendSize);
26251
26252 if (( WDI_STATUS_SUCCESS != wdiStatus )||
26253 ( NULL == pSendBuffer )||( 0 == usSendSize ))
26254 {
26255 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
26256 "%s: failed to pack request parameters", __func__);
26257 WDI_ASSERT(0);
26258 return wdiStatus;
26259 }
26260
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026261 pWDICtx->wdiReqStatusCB = pwdiRoamScanOffloadReqParams->wdiReqStatusCB;
26262 pWDICtx->pReqStatusUserData = pwdiRoamScanOffloadReqParams->pUserData;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026263
26264 /*-------------------------------------------------------------------------
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026265 Send WDI_ROAM_SCAN_OFFLOAD_REQ to HAL
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026266 -------------------------------------------------------------------------*/
26267 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026268 wdiRoamOffloadScancb, pEventData->pUserData, WDI_ROAM_SCAN_OFFLOAD_RESP);
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026269}
26270
26271/**
26272 @brief Process Start Roam Candidate Lookup Rsp function (called when a
26273 response is being received over the bus from HAL)
26274
26275 @param pWDICtx: pointer to the WLAN DAL context
26276 pEventData: pointer to the event information structure
26277
26278 @see
26279 @return Result of the function call
26280*/
26281WDI_Status
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026282WDI_ProcessRoamScanOffloadRsp
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026283(
26284 WDI_ControlBlockType* pWDICtx,
26285 WDI_EventInfoType* pEventData
26286)
26287{
26288 WDI_Status wdiStatus;
26289 eHalStatus halStatus;
26290 WDI_RoamOffloadScanCb wdiRoamOffloadScancb = NULL;
26291
26292 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26293
26294 /*-------------------------------------------------------------------------
26295 Sanity check
26296 -------------------------------------------------------------------------*/
26297 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
26298 ( NULL == pEventData->pEventData ))
26299 {
26300 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
26301 "%s: Invalid parameters", __func__);
26302 WDI_ASSERT(0);
26303 return WDI_STATUS_E_FAILURE;
26304 }
26305
26306 wdiRoamOffloadScancb = (WDI_RoamOffloadScanCb)pWDICtx->pfncRspCB;
26307
26308 /*-------------------------------------------------------------------------
26309 Extract response and send it to UMAC
26310 -------------------------------------------------------------------------*/
26311 halStatus = *((eHalStatus*)pEventData->pEventData);
26312 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
26313
26314 /*Notify UMAC*/
26315 wdiRoamOffloadScancb(wdiStatus, pWDICtx->pRspCBUserData);
26316
26317 return WDI_STATUS_SUCCESS;
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026318}/* WDI_ProcessRoamScanOffloadRsp */
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026319#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070026320
26321/**
26322 @brief Process Update Scan Params function
Jeff Johnsone7245742012-09-05 17:12:55 -070026323
26324 @param pWDICtx: pointer to the WLAN DAL context
26325 pEventData: pointer to the event information structure
26326
Jeff Johnson295189b2012-06-20 16:38:30 -070026327 @see
26328 @return Result of the function call
26329*/
26330WDI_Status
Pratik Bhalgatd4404592012-11-22 17:49:14 +053026331WDI_PackUpdateScanParamsReq
26332(
26333 WDI_ControlBlockType* pWDICtx,
26334 WDI_UpdateScanParamsInfoType* pwdiUpdateScanParams,
26335 wpt_uint8** ppSendBuffer,
26336 wpt_uint16* pSize
26337)
26338{
26339 wpt_uint8* pSendBuffer = NULL;
26340 wpt_uint16 usDataOffset = 0;
26341 wpt_uint16 usSendSize = 0;
26342 tUpdateScanParams updateScanParams = {0};
26343
26344
Varun Reddy Yeturuf68abd62013-02-11 14:05:06 -080026345 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Pratik Bhalgatd4404592012-11-22 17:49:14 +053026346 "Begin WDI Update Scan Parameters Old Style Params");
26347 /*-----------------------------------------------------------------------
26348 Get message buffer
26349 -----------------------------------------------------------------------*/
26350 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_SCAN_PARAMS_REQ,
26351 sizeof(updateScanParams),
26352 &pSendBuffer, &usDataOffset, &usSendSize))||
26353 ( usSendSize < (usDataOffset + sizeof(updateScanParams) )))
26354 {
26355 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080026356 "Unable to get send buffer in Update Scan Params req %p",
Pratik Bhalgatd4404592012-11-22 17:49:14 +053026357 pwdiUpdateScanParams);
26358 WDI_ASSERT(0);
26359 return WDI_STATUS_E_FAILURE;
26360 }
26361
26362 //
26363 // Fill updateScanParams from pwdiUpdateScanParams->wdiUpdateScanParamsInfo
26364 //
26365
26366 updateScanParams.b11dEnabled = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.b11dEnabled;
26367 updateScanParams.b11dResolved = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.b11dResolved;
26368
26369 updateScanParams.ucChannelCount =
26370 (pwdiUpdateScanParams->wdiUpdateScanParamsInfo.ucChannelCount <
26371 WLAN_HAL_PNO_MAX_NETW_CHANNELS)?
26372 pwdiUpdateScanParams->wdiUpdateScanParamsInfo.ucChannelCount :
26373 WLAN_HAL_PNO_MAX_NETW_CHANNELS;
26374
26375 wpalMemoryCopy( updateScanParams.aChannels,
26376 pwdiUpdateScanParams->wdiUpdateScanParamsInfo.aChannels,
26377 updateScanParams.ucChannelCount);
26378
26379
26380 updateScanParams.usActiveMinChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usActiveMinChTime;
26381 updateScanParams.usActiveMaxChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usActiveMaxChTime;
26382 updateScanParams.usPassiveMinChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usPassiveMinChTime;
26383 updateScanParams.usPassiveMaxChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usPassiveMaxChTime;
26384 updateScanParams.cbState = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.cbState;
26385
26386 wpalMemoryCopy( pSendBuffer+usDataOffset,
26387 &updateScanParams,
26388 sizeof(updateScanParams));
26389
26390 pWDICtx->wdiReqStatusCB = pwdiUpdateScanParams->wdiReqStatusCB;
26391 pWDICtx->pReqStatusUserData = pwdiUpdateScanParams->pUserData;
26392
Varun Reddy Yeturuf68abd62013-02-11 14:05:06 -080026393 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Pratik Bhalgatd4404592012-11-22 17:49:14 +053026394 "End Update Scan Parameters Old Style");
26395
26396 /*Set the output values*/
26397 *ppSendBuffer = pSendBuffer;
26398 *pSize = usSendSize;
26399
26400 return WDI_STATUS_SUCCESS;
26401}
26402
26403/**
26404 @brief Process Update Scan Params function
26405
26406 @param pWDICtx: pointer to the WLAN DAL context
26407 pEventData: pointer to the event information structure
26408
26409 @see
26410 @return Result of the function call
26411*/
26412WDI_Status
26413WDI_PackUpdateScanParamsReqEx
26414(
26415 WDI_ControlBlockType* pWDICtx,
26416 WDI_UpdateScanParamsInfoType* pwdiUpdateScanParams,
26417 wpt_uint8** ppSendBuffer,
26418 wpt_uint16* pSize
26419)
26420{
26421 wpt_uint8* pSendBuffer = NULL;
26422 wpt_uint16 usDataOffset = 0;
26423 wpt_uint16 usSendSize = 0;
26424 tUpdateScanParamsEx updateScanParams = {0};
26425
26426
Pratik Bhalgatd4404592012-11-22 17:49:14 +053026427 /*-----------------------------------------------------------------------
26428 Get message buffer
26429 -----------------------------------------------------------------------*/
26430 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_SCAN_PARAMS_REQ,
26431 sizeof(updateScanParams),
26432 &pSendBuffer, &usDataOffset, &usSendSize))||
26433 ( usSendSize < (usDataOffset + sizeof(updateScanParams) )))
26434 {
26435 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080026436 "Unable to get send buffer in Update Scan Params Ex req %p",
Pratik Bhalgatd4404592012-11-22 17:49:14 +053026437 pwdiUpdateScanParams);
26438 WDI_ASSERT(0);
26439 return WDI_STATUS_E_FAILURE;
26440 }
26441
26442 //
26443 // Fill updateScanParams from pwdiUpdateScanParams->wdiUpdateScanParamsInfo
26444 //
26445
26446 updateScanParams.b11dEnabled = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.b11dEnabled;
26447 updateScanParams.b11dResolved = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.b11dResolved;
26448
26449 updateScanParams.ucChannelCount =
26450 (pwdiUpdateScanParams->wdiUpdateScanParamsInfo.ucChannelCount <
26451 WLAN_HAL_PNO_MAX_NETW_CHANNELS_EX)?
26452 pwdiUpdateScanParams->wdiUpdateScanParamsInfo.ucChannelCount :
26453 WLAN_HAL_PNO_MAX_NETW_CHANNELS_EX;
26454
26455 wpalMemoryCopy( updateScanParams.aChannels,
26456 pwdiUpdateScanParams->wdiUpdateScanParamsInfo.aChannels,
26457 updateScanParams.ucChannelCount);
26458
26459
26460 updateScanParams.usActiveMinChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usActiveMinChTime;
26461 updateScanParams.usActiveMaxChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usActiveMaxChTime;
26462 updateScanParams.usPassiveMinChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usPassiveMinChTime;
26463 updateScanParams.usPassiveMaxChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usPassiveMaxChTime;
26464 updateScanParams.cbState = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.cbState;
26465
26466 wpalMemoryCopy( pSendBuffer+usDataOffset,
26467 &updateScanParams,
26468 sizeof(updateScanParams));
26469
26470 pWDICtx->wdiReqStatusCB = pwdiUpdateScanParams->wdiReqStatusCB;
26471 pWDICtx->pReqStatusUserData = pwdiUpdateScanParams->pUserData;
26472
Pratik Bhalgatd4404592012-11-22 17:49:14 +053026473 /*Set the output values*/
26474 *ppSendBuffer = pSendBuffer;
26475 *pSize = usSendSize;
26476
26477 return WDI_STATUS_SUCCESS;
26478}
26479
26480/**
26481 @brief Process Update Scan Params function
26482
26483 @param pWDICtx: pointer to the WLAN DAL context
26484 pEventData: pointer to the event information structure
26485
26486 @see
26487 @return Result of the function call
26488*/
26489WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070026490WDI_ProcessUpdateScanParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070026491(
Jeff Johnson295189b2012-06-20 16:38:30 -070026492 WDI_ControlBlockType* pWDICtx,
26493 WDI_EventInfoType* pEventData
26494)
26495{
26496 WDI_UpdateScanParamsInfoType* pwdiUpdateScanParams = NULL;
26497 WDI_UpdateScanParamsCb wdiUpdateScanParamsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070026498 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070026499 wpt_uint16 usSendSize = 0;
Pullela Naga Venkata Sai Ravaliab91c6b2012-12-27 17:31:42 -080026500 WDI_Status wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070026501
26502 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026503 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070026504 -------------------------------------------------------------------------*/
26505 if (( NULL == pEventData ) ||
26506 ( NULL == (pwdiUpdateScanParams = (WDI_UpdateScanParamsInfoType*)pEventData->pEventData)) ||
26507 ( NULL == (wdiUpdateScanParamsCb = (WDI_UpdateScanParamsCb)pEventData->pCBfnc)))
26508 {
26509 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026510 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026511 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026512 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026513 }
26514
26515 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
26516 "Begin WDI Update Scan Parameters");
Jeff Johnson295189b2012-06-20 16:38:30 -070026517
26518 //
26519 // Fill updateScanParams from pwdiUpdateScanParams->wdiUpdateScanParamsInfo
26520 //
Pratik Bhalgatd4404592012-11-22 17:49:14 +053026521 if ( pWDICtx->wlanVersion.revision < 1 )
26522 {
Pullela Naga Venkata Sai Ravaliab91c6b2012-12-27 17:31:42 -080026523 wdiStatus = WDI_PackUpdateScanParamsReq( pWDICtx, pwdiUpdateScanParams,
Pratik Bhalgatd4404592012-11-22 17:49:14 +053026524 &pSendBuffer, &usSendSize);
26525 }
26526 else
26527 {
Pullela Naga Venkata Sai Ravaliab91c6b2012-12-27 17:31:42 -080026528 wdiStatus = WDI_PackUpdateScanParamsReqEx( pWDICtx, pwdiUpdateScanParams,
26529 &pSendBuffer, &usSendSize);
26530 }
26531
26532 if(WDI_STATUS_SUCCESS != wdiStatus)
26533 {
26534 //memory allocation failed
26535 return WDI_STATUS_E_FAILURE;
Pratik Bhalgatd4404592012-11-22 17:49:14 +053026536 }
Jeff Johnson295189b2012-06-20 16:38:30 -070026537
Jeff Johnson295189b2012-06-20 16:38:30 -070026538 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026539 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070026540 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070026541 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Pratik Bhalgatd4404592012-11-22 17:49:14 +053026542 wdiUpdateScanParamsCb, pEventData->pUserData,
26543 WDI_UPDATE_SCAN_PARAMS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070026544}
26545
26546/**
Manjunathappa Prakash86f78ca2014-02-10 18:09:15 -080026547 @brief Process Update Channel Params function
26548
26549 @param pWDICtx: pointer to the WLAN DAL context
26550 pEventData: pointer to the event information structure
26551
26552 @see
26553 @return Result of the function call
26554*/
26555WDI_Status
26556WDI_ProcessUpdateChannelParamsReq
26557(
26558 WDI_ControlBlockType* pWDICtx,
26559 WDI_EventInfoType* pEventData
26560)
26561{
26562 WDI_UpdateChReqParamsType *pwdiUpdateChanListParams = NULL;
26563 WDI_UpdateChannelRspCb wdiUpdateChanParamsCb = NULL;
26564 wpt_uint8* pSendBuffer = NULL;
26565 wpt_uint16 usDataOffset = 0;
26566 wpt_uint16 usSendSize = 0;
26567 tUpdateChannelReqType *updateChannelParams;
26568 wpt_uint32 usUpdateChanParamSize;
26569 wpt_uint8 num_channels = 0;
26570
26571 /*-------------------------------------------------------------------------
26572 Sanity check
26573 -------------------------------------------------------------------------*/
26574 if (( NULL == pEventData ) ||
26575 ( NULL == (pwdiUpdateChanListParams = (WDI_UpdateChReqParamsType*)pEventData->pEventData)) ||
26576 ( NULL == (wdiUpdateChanParamsCb = (WDI_UpdateChannelRspCb)pEventData->pCBfnc)))
26577 {
26578 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
26579 "%s: Invalid parameters", __func__);
26580 WDI_ASSERT(0);
26581 return WDI_STATUS_E_FAILURE;
26582 }
26583 num_channels = pwdiUpdateChanListParams->wdiUpdateChanParams.numchan;
Abhishek Singhf644b272014-08-21 02:59:39 +053026584 usUpdateChanParamSize = sizeof(tUpdateChannelReqType);
Manjunathappa Prakash86f78ca2014-02-10 18:09:15 -080026585
26586 /*-----------------------------------------------------------------------
26587 Get message buffer
26588 -----------------------------------------------------------------------*/
26589 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
26590 WDI_UPDATE_CHAN_REQ, usUpdateChanParamSize,
26591 &pSendBuffer, &usDataOffset, &usSendSize))||
26592 ( usSendSize < (usDataOffset + usUpdateChanParamSize)))
26593 {
26594 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
26595 "Unable to get send buffer in Update Channel Params req %p",
26596 pwdiUpdateChanListParams);
26597 WDI_ASSERT(0);
26598 return WDI_STATUS_E_FAILURE;
26599 }
26600 updateChannelParams = (tUpdateChannelReqType *)(pSendBuffer + usDataOffset);
26601
26602 updateChannelParams->numChan = num_channels;
26603 wpalMemoryCopy(&updateChannelParams->chanParam,
26604 pwdiUpdateChanListParams->wdiUpdateChanParams.pchanParam,
26605 sizeof(WDI_UpdateChannelReqinfoType) * num_channels);
26606
26607 pWDICtx->wdiReqStatusCB = pwdiUpdateChanListParams->wdiReqStatusCB;
26608 pWDICtx->pReqStatusUserData = pwdiUpdateChanListParams->pUserData;
26609
26610 /*-------------------------------------------------------------------------
26611 Send Update channel request to fw
26612 -------------------------------------------------------------------------*/
26613 return WDI_SendMsg(pWDICtx, pSendBuffer, usSendSize,
26614 wdiUpdateChanParamsCb, pEventData->pUserData,
26615 WDI_UPDATE_CHAN_RESP);
26616}
26617
26618/**
Jeff Johnson295189b2012-06-20 16:38:30 -070026619 @brief Process Preferred Network Found Indication function
Jeff Johnsone7245742012-09-05 17:12:55 -070026620
26621 @param pWDICtx: pointer to the WLAN DAL context
26622 pEventData: pointer to the event information structure
26623
Jeff Johnson295189b2012-06-20 16:38:30 -070026624 @see
26625 @return Result of the function call
26626*/
26627WDI_Status
26628WDI_ProcessPrefNetworkFoundInd
Jeff Johnsone7245742012-09-05 17:12:55 -070026629(
Jeff Johnson295189b2012-06-20 16:38:30 -070026630 WDI_ControlBlockType* pWDICtx,
26631 WDI_EventInfoType* pEventData
26632)
26633{
Srikant Kuppa066904f2013-05-07 13:56:02 -070026634 WDI_LowLevelIndType wdiInd;
26635 tpPrefNetwFoundParams pNetwFoundParams;
26636 wpt_uint32 msgsize;
Jeff Johnson295189b2012-06-20 16:38:30 -070026637
26638
26639 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026640 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070026641 -------------------------------------------------------------------------*/
26642 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
26643 ( NULL == pEventData->pEventData ))
26644 {
26645 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026646 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026647 WDI_ASSERT( 0 );
Jeff Johnsone7245742012-09-05 17:12:55 -070026648 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026649 }
26650
26651 /*-------------------------------------------------------------------------
26652 Extract indication and send it to UMAC
26653 -------------------------------------------------------------------------*/
Srikant Kuppa066904f2013-05-07 13:56:02 -070026654 pNetwFoundParams = (tpPrefNetwFoundParams)(pEventData->pEventData);
26655
26656 msgsize = sizeof(tPrefNetwFoundParams) + pNetwFoundParams->frameLength;
26657 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.pData =
26658 (wpt_uint8 *)wpalMemoryAllocate(msgsize);
26659
26660 if (NULL == wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.pData)
26661 {
26662 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
26663 "%s: fail to allocate memory", __func__);
26664 return WDI_STATUS_MEM_FAILURE;
26665 }
26666
26667 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.ucLength =
26668 (pNetwFoundParams->ssId.length < 32 )?
26669 pNetwFoundParams->ssId.length : 32;
26670 wpalMemoryCopy( wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.sSSID,
26671 pNetwFoundParams->ssId.ssId,
26672 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.ucLength);
26673 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.rssi = pNetwFoundParams->rssi;
26674 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.frameLength =
26675 pNetwFoundParams->frameLength;
26676 wpalMemoryCopy( wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.pData,
26677 (wpt_uint8 *)pEventData->pEventData + sizeof(tPrefNetwFoundParams),
26678 pNetwFoundParams->frameLength);
Jeff Johnson295189b2012-06-20 16:38:30 -070026679
26680 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070026681 wdiInd.wdiIndicationType = WDI_PREF_NETWORK_FOUND_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070026682
Jeff Johnson295189b2012-06-20 16:38:30 -070026683 // DEBUG
26684 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Sushant Kaushik1b645382014-10-13 16:39:36 +053026685 "[PNO WDI] PREF_NETWORK_FOUND_IND Type (%d) data (SSID=%.*s, LENGTH=%u, RSSI=%u)",
Jeff Johnson295189b2012-06-20 16:38:30 -070026686 wdiInd.wdiIndicationType,
Wilson Yang56002a22013-08-28 17:55:56 -070026687 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.ucLength,
Jeff Johnson295189b2012-06-20 16:38:30 -070026688 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.sSSID,
Wilson Yang56002a22013-08-28 17:55:56 -070026689 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.ucLength,
Jeff Johnson295189b2012-06-20 16:38:30 -070026690 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.rssi );
26691
ltimariub77f24b2013-01-24 18:54:33 -080026692 if ( pWDICtx->wdiLowLevelIndCB )
26693 {
26694 /*Notify UMAC*/
26695 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
26696 }
Jeff Johnsone7245742012-09-05 17:12:55 -070026697
26698 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070026699}
26700
26701/**
26702 @brief Process PNO Rsp function (called when a
26703 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070026704
26705 @param pWDICtx: pointer to the WLAN DAL context
26706 pEventData: pointer to the event information structure
26707
Jeff Johnson295189b2012-06-20 16:38:30 -070026708 @see
26709 @return Result of the function call
26710*/
26711WDI_Status
26712WDI_ProcessSetPreferredNetworkRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070026713(
Jeff Johnson295189b2012-06-20 16:38:30 -070026714 WDI_ControlBlockType* pWDICtx,
26715 WDI_EventInfoType* pEventData
26716)
26717{
26718 WDI_Status wdiStatus;
26719 eHalStatus halStatus;
26720 WDI_PNOScanCb wdiPNOScanCb = NULL;
26721 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26722
26723 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026724 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070026725 -------------------------------------------------------------------------*/
26726 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
26727 ( NULL == pEventData->pEventData ))
26728 {
26729 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026730 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026731 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026732 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026733 }
26734
26735
Jeff Johnsone7245742012-09-05 17:12:55 -070026736 wdiPNOScanCb = (WDI_PNOScanCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070026737
26738 /*-------------------------------------------------------------------------
26739 Extract response and send it to UMAC
26740 -------------------------------------------------------------------------*/
26741 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070026742 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070026743
26744 /*Notify UMAC*/
26745 wdiPNOScanCb(wdiStatus, pWDICtx->pRspCBUserData);
26746
Jeff Johnsone7245742012-09-05 17:12:55 -070026747 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070026748}/*WDI_ProcessSetPreferredNetworkRsp*/
26749
26750/**
26751 @brief Process RSSI Filter Rsp function (called when a
26752 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070026753
26754 @param pWDICtx: pointer to the WLAN DAL context
26755 pEventData: pointer to the event information structure
26756
Jeff Johnson295189b2012-06-20 16:38:30 -070026757 @see
26758 @return Result of the function call
26759*/
26760WDI_Status
26761WDI_ProcessSetRssiFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070026762(
Jeff Johnson295189b2012-06-20 16:38:30 -070026763 WDI_ControlBlockType* pWDICtx,
26764 WDI_EventInfoType* pEventData
26765)
26766{
26767 WDI_Status wdiStatus;
26768 eHalStatus halStatus;
26769 WDI_RssiFilterCb wdiRssiFilterCb;
26770 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26771
26772 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026773 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070026774 -------------------------------------------------------------------------*/
26775 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
26776 ( NULL == pEventData->pEventData ))
26777 {
26778 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026779 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026780 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026781 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026782 }
26783
Jeff Johnsone7245742012-09-05 17:12:55 -070026784 wdiRssiFilterCb = (WDI_RssiFilterCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070026785
26786 /*-------------------------------------------------------------------------
26787 Extract response and send it to UMAC
26788 -------------------------------------------------------------------------*/
26789 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070026790 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070026791
26792 /*Notify UMAC*/
26793 wdiRssiFilterCb(wdiStatus, pWDICtx->pRspCBUserData);
26794
Jeff Johnsone7245742012-09-05 17:12:55 -070026795 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070026796}/*WDI_ProcessSetRssiFilterRsp*/
26797
26798/**
26799 @brief Process Update Scan Params Rsp function (called when a
26800 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070026801
26802 @param pWDICtx: pointer to the WLAN DAL context
26803 pEventData: pointer to the event information structure
26804
Jeff Johnson295189b2012-06-20 16:38:30 -070026805 @see
26806 @return Result of the function call
26807*/
26808WDI_Status
26809WDI_ProcessUpdateScanParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070026810(
Jeff Johnson295189b2012-06-20 16:38:30 -070026811 WDI_ControlBlockType* pWDICtx,
26812 WDI_EventInfoType* pEventData
26813)
26814{
26815 WDI_Status wdiStatus;
Jeff Johnsone7245742012-09-05 17:12:55 -070026816 tUpdateScanParamsResp halUpdScanParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070026817 WDI_UpdateScanParamsCb wdiUpdateScanParamsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070026818 wpt_uint32 uStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070026819 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26820
26821 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026822 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070026823 -------------------------------------------------------------------------*/
26824 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
26825 ( NULL == pEventData->pEventData ))
26826 {
26827 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026828 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026829 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026830 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026831 }
26832
26833 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080026834 "%s: Process UPD scan params ptr : %p",
26835 __func__, pEventData->pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070026836
Jeff Johnsone7245742012-09-05 17:12:55 -070026837 wdiUpdateScanParamsCb = (WDI_UpdateScanParamsCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070026838
26839 /*-------------------------------------------------------------------------
26840 Extract response and send it to UMAC
26841 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070026842 wpalMemoryCopy( (void *)&halUpdScanParams.status,
26843 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070026844 sizeof(halUpdScanParams.status));
26845
26846 uStatus = halUpdScanParams.status;
26847
26848 /*Extract PNO version - 1st bit of the status */
Jeff Johnsone7245742012-09-05 17:12:55 -070026849 pWDICtx->wdiPNOVersion = (uStatus & WDI_PNO_VERSION_MASK)? 1:0;
Jeff Johnson295189b2012-06-20 16:38:30 -070026850
26851 /*Remove version bit*/
Jeff Johnsone7245742012-09-05 17:12:55 -070026852 uStatus = uStatus & ( ~(WDI_PNO_VERSION_MASK));
Jeff Johnson295189b2012-06-20 16:38:30 -070026853
Jeff Johnsone7245742012-09-05 17:12:55 -070026854 wdiStatus = WDI_HAL_2_WDI_STATUS(uStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070026855
26856 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070026857 "UPD Scan Parameters rsp with status: %d",
Jeff Johnson295189b2012-06-20 16:38:30 -070026858 halUpdScanParams.status);
26859
26860 /*Notify UMAC*/
26861 wdiUpdateScanParamsCb(wdiStatus, pWDICtx->pRspCBUserData);
26862
Jeff Johnsone7245742012-09-05 17:12:55 -070026863 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070026864}
26865#endif // FEATURE_WLAN_SCAN_PNO
26866
26867#ifdef WLAN_FEATURE_PACKET_FILTERING
Jeff Johnsone7245742012-09-05 17:12:55 -070026868WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070026869WDI_8023MulticastListReq
26870(
26871 WDI_RcvFltPktSetMcListReqParamsType* pwdiRcvFltPktSetMcListReqInfo,
26872 WDI_8023MulticastListCb wdi8023MulticastListCallback,
26873 void* pUserData
26874)
26875{
26876 WDI_EventInfoType wdiEventData;
26877 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26878
26879 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026880 "%s", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026881
26882 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026883 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070026884 ------------------------------------------------------------------------*/
26885 if ( eWLAN_PAL_FALSE == gWDIInitialized )
26886 {
26887 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
26888 "WDI API call before module is initialized - Fail request");
26889
Jeff Johnsone7245742012-09-05 17:12:55 -070026890 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070026891 }
26892
26893 /*------------------------------------------------------------------------
26894 Fill in Event data and post to the Main FSM
26895 ------------------------------------------------------------------------*/
26896 wdiEventData.wdiRequest = WDI_8023_MULTICAST_LIST_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070026897 wdiEventData.pEventData = pwdiRcvFltPktSetMcListReqInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070026898 wdiEventData.uEventDataSize = sizeof(*pwdiRcvFltPktSetMcListReqInfo);
Jeff Johnsone7245742012-09-05 17:12:55 -070026899 wdiEventData.pCBfnc = wdi8023MulticastListCallback;
Jeff Johnson295189b2012-06-20 16:38:30 -070026900 wdiEventData.pUserData = pUserData;
26901
26902 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
26903}
26904
Jeff Johnsone7245742012-09-05 17:12:55 -070026905WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070026906WDI_ReceiveFilterSetFilterReq
26907(
26908 WDI_SetRcvPktFilterReqParamsType* pwdiSetRcvPktFilterReqInfo,
26909 WDI_ReceiveFilterSetFilterCb wdiReceiveFilterSetFilterCallback,
26910 void* pUserData
26911)
26912{
26913 WDI_EventInfoType wdiEventData;
26914 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26915
26916 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026917 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026918
26919 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026920 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070026921 ------------------------------------------------------------------------*/
26922 if ( eWLAN_PAL_FALSE == gWDIInitialized )
26923 {
26924 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
26925 "WDI API call before module is initialized - Fail request");
26926
Jeff Johnsone7245742012-09-05 17:12:55 -070026927 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070026928 }
26929
26930 /*------------------------------------------------------------------------
26931 Fill in Event data and post to the Main FSM
26932 ------------------------------------------------------------------------*/
26933 wdiEventData.wdiRequest = WDI_RECEIVE_FILTER_SET_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070026934 wdiEventData.pEventData = pwdiSetRcvPktFilterReqInfo;
26935 wdiEventData.uEventDataSize = sizeof(*pwdiSetRcvPktFilterReqInfo) +
Yue Ma13cf95c2013-03-18 18:05:27 -070026936 (pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams - 1)
26937 * sizeof(WDI_RcvPktFilterFieldParams);
Jeff Johnsone7245742012-09-05 17:12:55 -070026938 wdiEventData.pCBfnc = wdiReceiveFilterSetFilterCallback;
Jeff Johnson295189b2012-06-20 16:38:30 -070026939 wdiEventData.pUserData = pUserData;
26940
26941
26942 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
26943}
26944
Jeff Johnsone7245742012-09-05 17:12:55 -070026945WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070026946WDI_FilterMatchCountReq
26947(
26948 WDI_RcvFltPktMatchCntReqParamsType* pwdiRcvFltPktMatchCntReqInfo,
26949 WDI_FilterMatchCountCb wdiFilterMatchCountCallback,
26950 void* pUserData
26951)
26952{
26953 WDI_EventInfoType wdiEventData;
26954 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26955
26956 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026957 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026958
26959 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026960 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070026961 ------------------------------------------------------------------------*/
26962 if ( eWLAN_PAL_FALSE == gWDIInitialized )
26963 {
26964 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
26965 "WDI API call before module is initialized - Fail request");
26966
Jeff Johnsone7245742012-09-05 17:12:55 -070026967 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070026968 }
26969
26970 /*------------------------------------------------------------------------
26971 Fill in Event data and post to the Main FSM
26972 ------------------------------------------------------------------------*/
26973 wdiEventData.wdiRequest = WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070026974 wdiEventData.pEventData = pwdiRcvFltPktMatchCntReqInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070026975 wdiEventData.uEventDataSize = sizeof(*pwdiRcvFltPktMatchCntReqInfo);
Jeff Johnsone7245742012-09-05 17:12:55 -070026976 wdiEventData.pCBfnc = wdiFilterMatchCountCallback;
Jeff Johnson295189b2012-06-20 16:38:30 -070026977 wdiEventData.pUserData = pUserData;
26978
26979
26980 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
26981}
26982
Jeff Johnsone7245742012-09-05 17:12:55 -070026983WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070026984WDI_ReceiveFilterClearFilterReq
26985(
26986 WDI_RcvFltPktClearReqParamsType* pwdiRcvFltPktClearReqInfo,
26987 WDI_ReceiveFilterClearFilterCb wdiReceiveFilterClearFilterCallback,
26988 void* pUserData
26989)
26990{
26991 WDI_EventInfoType wdiEventData;
26992 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26993
26994 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026995 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026996
26997 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026998 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070026999 ------------------------------------------------------------------------*/
27000 if ( eWLAN_PAL_FALSE == gWDIInitialized )
27001 {
27002 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
27003 "WDI API call before module is initialized - Fail request");
27004
Jeff Johnsone7245742012-09-05 17:12:55 -070027005 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070027006 }
27007
27008 /*------------------------------------------------------------------------
27009 Fill in Event data and post to the Main FSM
27010 ------------------------------------------------------------------------*/
27011 wdiEventData.wdiRequest = WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070027012 wdiEventData.pEventData = pwdiRcvFltPktClearReqInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070027013 wdiEventData.uEventDataSize = sizeof(*pwdiRcvFltPktClearReqInfo);
Jeff Johnsone7245742012-09-05 17:12:55 -070027014 wdiEventData.pCBfnc = wdiReceiveFilterClearFilterCallback;
Jeff Johnson295189b2012-06-20 16:38:30 -070027015 wdiEventData.pUserData = pUserData;
27016
27017
27018 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
27019}
27020
27021/**
27022 @brief Process 8023 Multicast List Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070027023
27024 @param pWDICtx: pointer to the WLAN DAL context
27025 pEventData: pointer to the event information structure
27026
Jeff Johnson295189b2012-06-20 16:38:30 -070027027 @see
27028 @return Result of the function call
27029*/
27030WDI_Status
27031WDI_Process8023MulticastListReq
Jeff Johnsone7245742012-09-05 17:12:55 -070027032(
Jeff Johnson295189b2012-06-20 16:38:30 -070027033 WDI_ControlBlockType* pWDICtx,
27034 WDI_EventInfoType* pEventData
27035)
27036{
27037 WDI_RcvFltPktSetMcListReqParamsType* pwdiFltPktSetMcListReqParamsType = NULL;
27038 WDI_8023MulticastListCb wdi8023MulticastListCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070027039 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070027040 wpt_uint16 usDataOffset = 0;
27041 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070027042 tpHalRcvFltMcAddrListType pRcvFltMcAddrListType;
Jeff Johnson295189b2012-06-20 16:38:30 -070027043 wpt_uint8 i;
Jeff Johnsone7245742012-09-05 17:12:55 -070027044 wpt_uint8 ucCurrentBSSSesIdx = 0;
27045 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070027046
27047 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027048 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027049
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070027050 pRcvFltMcAddrListType = wpalMemoryAllocate(sizeof(tHalRcvFltMcAddrListType)) ;
27051 if( NULL == pRcvFltMcAddrListType )
27052 {
27053 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
27054 "Failed to alloc in WDI_Process8023MulticastListReq");
27055 return WDI_STATUS_E_FAILURE;
27056 }
27057
Jeff Johnson295189b2012-06-20 16:38:30 -070027058 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027059 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070027060 -------------------------------------------------------------------------*/
27061 if (( NULL == pEventData ) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070027062 ( NULL == (pwdiFltPktSetMcListReqParamsType =
Jeff Johnson295189b2012-06-20 16:38:30 -070027063 (WDI_RcvFltPktSetMcListReqParamsType*)pEventData->pEventData)) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070027064 ( NULL == (wdi8023MulticastListCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070027065 (WDI_8023MulticastListCb)pEventData->pCBfnc)))
27066 {
27067 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027068 "%s: Invalid parameters", __func__);
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070027069 wpalMemoryFree(pRcvFltMcAddrListType);
Jeff Johnson295189b2012-06-20 16:38:30 -070027070 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070027071 return WDI_STATUS_E_FAILURE;
27072 }
27073
27074 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
27075 pwdiFltPktSetMcListReqParamsType->mcAddrList.bssId,
27076 &pBSSSes);
27077 if ( NULL == pBSSSes )
27078 {
27079 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027080 " %s : Association for this BSSID does not exist",__func__);
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070027081 wpalMemoryFree(pRcvFltMcAddrListType);
Jeff Johnsone7245742012-09-05 17:12:55 -070027082 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070027083 }
27084
27085 /*-----------------------------------------------------------------------
27086 Get message buffer
27087 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070027088 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
27089 WDI_8023_MULTICAST_LIST_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070027090 sizeof(tHalRcvFltMcAddrListType),
27091 &pSendBuffer, &usDataOffset, &usSendSize))||
27092 ( usSendSize < (usDataOffset + sizeof(tHalRcvFltMcAddrListType))))
27093 {
27094 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
27095 "Unable to get send buffer in "
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080027096 "WDI_Process8023MulticastListReq() %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070027097 pEventData, pwdiFltPktSetMcListReqParamsType,
27098 wdi8023MulticastListCb);
Yue Mad8cac142013-03-28 11:33:46 -070027099 wpalMemoryFree(pRcvFltMcAddrListType);
Jeff Johnson295189b2012-06-20 16:38:30 -070027100 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070027101 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070027102 }
27103
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070027104 pRcvFltMcAddrListType->cMulticastAddr =
Jeff Johnsone7245742012-09-05 17:12:55 -070027105 pwdiFltPktSetMcListReqParamsType->mcAddrList.ulMulticastAddrCnt;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070027106 for( i = 0; i < pRcvFltMcAddrListType->cMulticastAddr; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070027107 {
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070027108 wpalMemoryCopy(pRcvFltMcAddrListType->multicastAddr[i],
Jeff Johnson295189b2012-06-20 16:38:30 -070027109 pwdiFltPktSetMcListReqParamsType->mcAddrList.multicastAddr[i],
27110 sizeof(tSirMacAddr));
27111 }
27112
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070027113 pRcvFltMcAddrListType->bssIdx = pBSSSes->ucBSSIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070027114 wpalMemoryCopy( pSendBuffer+usDataOffset,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070027115 pRcvFltMcAddrListType,
27116 sizeof(tHalRcvFltMcAddrListType));
Jeff Johnson295189b2012-06-20 16:38:30 -070027117
27118 pWDICtx->wdiReqStatusCB = pwdiFltPktSetMcListReqParamsType->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070027119 pWDICtx->pReqStatusUserData = pwdiFltPktSetMcListReqParamsType->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070027120
27121
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070027122 wpalMemoryFree(pRcvFltMcAddrListType);
Jeff Johnson295189b2012-06-20 16:38:30 -070027123 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027124 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070027125 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070027126 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070027127 wdi8023MulticastListCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -070027128 WDI_8023_MULTICAST_LIST_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070027129}
27130
27131/**
27132 @brief Process Receive Filter Set Filter Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070027133
27134 @param pWDICtx: pointer to the WLAN DAL context
27135 pEventData: pointer to the event information structure
27136
Jeff Johnson295189b2012-06-20 16:38:30 -070027137 @see
27138 @return Result of the function call
27139*/
27140WDI_Status
27141WDI_ProcessReceiveFilterSetFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070027142(
Jeff Johnson295189b2012-06-20 16:38:30 -070027143 WDI_ControlBlockType* pWDICtx,
27144 WDI_EventInfoType* pEventData
27145)
27146{
27147 WDI_SetRcvPktFilterReqParamsType* pwdiSetRcvPktFilterReqInfo = NULL;
27148 WDI_ReceiveFilterSetFilterCb wdiReceiveFilterSetFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070027149 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070027150 wpt_uint16 usDataOffset = 0;
27151 wpt_uint16 usSendSize = 0;
27152 wpt_uint32 usRcvPktFilterCfgSize;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027153 tHalRcvPktFilterCfgType *pRcvPktFilterCfg = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070027154 wpt_uint8 i;
Jeff Johnsone7245742012-09-05 17:12:55 -070027155 wpt_uint8 ucCurrentBSSSesIdx = 0;
27156 WDI_BSSSessionType* pBSSSes = NULL;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027157 tHalSessionizedRcvPktFilterCfgType *pSessRcvPktFilterCfg = NULL;
27158 wpt_uint32 usSessRcvPktFilterCfgSize;
Jeff Johnson295189b2012-06-20 16:38:30 -070027159
27160 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027161 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027162
27163 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027164 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070027165 -------------------------------------------------------------------------*/
27166 if (( NULL == pEventData ) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070027167 ( NULL == (pwdiSetRcvPktFilterReqInfo =
Jeff Johnson295189b2012-06-20 16:38:30 -070027168 (WDI_SetRcvPktFilterReqParamsType*)pEventData->pEventData)) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070027169 ( NULL == (wdiReceiveFilterSetFilterCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070027170 (WDI_ReceiveFilterSetFilterCb)pEventData->pCBfnc)))
27171 {
27172 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027173 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027174 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070027175 return WDI_STATUS_E_FAILURE;
27176 }
27177
27178 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
27179 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.bssId,
27180 &pBSSSes);
27181 if ( NULL == pBSSSes )
27182 {
27183 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027184 " %s : Association for this BSSID does not exist",__func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070027185 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070027186 }
27187
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027188 if( WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION) )
27189 {
Jeff Johnson295189b2012-06-20 16:38:30 -070027190
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027191 usSessRcvPktFilterCfgSize = sizeof(tHalSessionizedRcvPktFilterCfgType) +
27192 ((pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams - 1)
27193 * sizeof(tHalSessionizedRcvPktFilterCfgType));
27194
27195 pSessRcvPktFilterCfg = (tHalSessionizedRcvPktFilterCfgType *)wpalMemoryAllocate(
27196 usSessRcvPktFilterCfgSize);
27197
27198 if(NULL == pSessRcvPktFilterCfg)
27199 {
27200 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
27201 "%s: Failed to allocate memory for "
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080027202 "tHalRcvPktFilterCfgType: %p %p %p ",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027203 __func__, pWDICtx, pEventData, pEventData->pEventData);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027204 WDI_ASSERT(0);
27205 return WDI_STATUS_E_FAILURE;
27206 }
27207
27208 wpalMemoryZero(pSessRcvPktFilterCfg, usSessRcvPktFilterCfgSize);
27209
27210 /*-----------------------------------------------------------------------
27211 Get message buffer
27212 -----------------------------------------------------------------------*/
27213
27214 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_RECEIVE_FILTER_SET_FILTER_REQ,
27215 usSessRcvPktFilterCfgSize,
27216 &pSendBuffer, &usDataOffset, &usSendSize))||
27217 ( usSendSize < (usDataOffset + usSessRcvPktFilterCfgSize)))
27218 {
27219 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
27220 "Unable to get send buffer in "
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080027221 "WDI_ProcessReceiveFilterSetFilterReq() %p %p %p",
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027222 pEventData, pwdiSetRcvPktFilterReqInfo,
27223 wdiReceiveFilterSetFilterCb);
27224 WDI_ASSERT(0);
27225 wpalMemoryFree(pSessRcvPktFilterCfg);
27226 return WDI_STATUS_E_FAILURE;
27227 }
27228
27229 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080027230 "UsData Off %d UsSend %d cfg %p",usDataOffset,
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027231 usSendSize,pSessRcvPktFilterCfg);
27232
27233 pSessRcvPktFilterCfg->filterId = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.filterId;
27234 pSessRcvPktFilterCfg->filterType = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.filterType;
27235 pSessRcvPktFilterCfg->numParams = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams;
27236 pSessRcvPktFilterCfg->coleasceTime = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.coalesceTime;
27237
27238 pSessRcvPktFilterCfg->bssIdx = pBSSSes->ucBSSIdx;
27239
27240 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
27241 "Out: FID %d FT %d",pSessRcvPktFilterCfg->filterId,
27242 pSessRcvPktFilterCfg->filterType);
27243 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
27244 "NParams %d CT %d",pSessRcvPktFilterCfg->numParams,
27245 pSessRcvPktFilterCfg->coleasceTime);
27246
27247 for ( i = 0; i < pSessRcvPktFilterCfg->numParams; i++ )
27248 {
27249 pSessRcvPktFilterCfg->paramsData[i].protocolLayer =
27250 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].protocolLayer;
27251 pSessRcvPktFilterCfg->paramsData[i].cmpFlag =
27252 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].cmpFlag;
27253 pSessRcvPktFilterCfg->paramsData[i].dataOffset =
27254 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataOffset;
27255 pSessRcvPktFilterCfg->paramsData[i].dataLength =
27256 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataLength;
27257
27258 wpalMemoryCopy(&pSessRcvPktFilterCfg->paramsData[i].compareData,
27259 &pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].compareData,
27260 8);
27261 wpalMemoryCopy(&pSessRcvPktFilterCfg->paramsData[i].dataMask,
27262 &pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataMask,
27263 8);
27264
27265 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Arif Hussain9a5d5382013-11-17 22:05:35 -080027266 "Out:Proto %d Comp Flag %d",
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027267 pSessRcvPktFilterCfg->paramsData[i].protocolLayer,
27268 pSessRcvPktFilterCfg->paramsData[i].cmpFlag);
27269
27270 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Arif Hussain9a5d5382013-11-17 22:05:35 -080027271 "Data Offset %d Data Len %d",
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027272 pSessRcvPktFilterCfg->paramsData[i].dataOffset,
27273 pSessRcvPktFilterCfg->paramsData[i].dataLength);
27274
27275 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Arif Hussain9a5d5382013-11-17 22:05:35 -080027276 "CData: %d:%d:%d:%d:%d:%d",
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027277 pSessRcvPktFilterCfg->paramsData[i].compareData[0],
27278 pSessRcvPktFilterCfg->paramsData[i].compareData[1],
27279 pSessRcvPktFilterCfg->paramsData[i].compareData[2],
27280 pSessRcvPktFilterCfg->paramsData[i].compareData[3],
27281 pSessRcvPktFilterCfg->paramsData[i].compareData[4],
27282 pSessRcvPktFilterCfg->paramsData[i].compareData[5]);
27283
27284 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Arif Hussain9a5d5382013-11-17 22:05:35 -080027285 "MData: %d:%d:%d:%d:%d:%d",
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027286 pSessRcvPktFilterCfg->paramsData[i].dataMask[0],
27287 pSessRcvPktFilterCfg->paramsData[i].dataMask[1],
27288 pSessRcvPktFilterCfg->paramsData[i].dataMask[2],
27289 pSessRcvPktFilterCfg->paramsData[i].dataMask[3],
27290 pSessRcvPktFilterCfg->paramsData[i].dataMask[4],
27291 pSessRcvPktFilterCfg->paramsData[i].dataMask[5]);
27292 }
27293
27294 wpalMemoryCopy( pSendBuffer+usDataOffset,
27295 pSessRcvPktFilterCfg,
27296 usSessRcvPktFilterCfgSize);
27297
27298
27299 pWDICtx->wdiReqStatusCB = pwdiSetRcvPktFilterReqInfo->wdiReqStatusCB;
27300 pWDICtx->pReqStatusUserData = pwdiSetRcvPktFilterReqInfo->pUserData;
27301
27302 wpalMemoryFree(pSessRcvPktFilterCfg);
27303
27304 }
27305 /*If SLM_SESSIONIZATION is not supported then do this */
27306 else
27307 {
27308 usRcvPktFilterCfgSize = sizeof(tHalRcvPktFilterCfgType) +
27309 ((pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams - 1)
27310 * sizeof(tHalRcvPktFilterParams));
27311
27312 pRcvPktFilterCfg = (tHalRcvPktFilterCfgType *)wpalMemoryAllocate(
Jeff Johnson295189b2012-06-20 16:38:30 -070027313 usRcvPktFilterCfgSize);
27314
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027315 if(NULL == pRcvPktFilterCfg)
27316 {
27317 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
27318 "%s: Failed to allocate memory for "
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080027319 "tHalRcvPktFilterCfgType: %p %p %p ",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027320 __func__, pWDICtx, pEventData, pEventData->pEventData);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027321 WDI_ASSERT(0);
27322 return WDI_STATUS_E_FAILURE;
27323 }
Jeff Johnson295189b2012-06-20 16:38:30 -070027324
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027325 wpalMemoryZero(pRcvPktFilterCfg, usRcvPktFilterCfgSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070027326
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027327 /*-----------------------------------------------------------------------
27328 Get message buffer
27329 -----------------------------------------------------------------------*/
27330 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_RECEIVE_FILTER_SET_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070027331 usRcvPktFilterCfgSize,
27332 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027333 ( usSendSize < (usDataOffset + usRcvPktFilterCfgSize)))
27334 {
27335 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson295189b2012-06-20 16:38:30 -070027336 "Unable to get send buffer in "
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080027337 "WDI_ProcessReceiveFilterSetFilterReq() %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070027338 pEventData, pwdiSetRcvPktFilterReqInfo,
27339 wdiReceiveFilterSetFilterCb);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027340 WDI_ASSERT(0);
27341 wpalMemoryFree(pRcvPktFilterCfg);
27342 return WDI_STATUS_E_FAILURE;
27343 }
Jeff Johnson295189b2012-06-20 16:38:30 -070027344
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027345 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070027346 "UsData Off %d UsSend %d cfg %d",usDataOffset,
Jeff Johnson295189b2012-06-20 16:38:30 -070027347 usSendSize,usRcvPktFilterCfgSize);
27348
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027349 pRcvPktFilterCfg->filterId = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.filterId;
27350 pRcvPktFilterCfg->filterType = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.filterType;
27351 pRcvPktFilterCfg->numParams = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams;
27352 pRcvPktFilterCfg->coalesceTime = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.coalesceTime;
Jeff Johnson295189b2012-06-20 16:38:30 -070027353
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027354 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070027355 "Out: FID %d FT %d",pRcvPktFilterCfg->filterId,
Jeff Johnson295189b2012-06-20 16:38:30 -070027356 pRcvPktFilterCfg->filterType);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027357 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnson295189b2012-06-20 16:38:30 -070027358 "NParams %d CT %d",pRcvPktFilterCfg->numParams,
Jeff Johnsone7245742012-09-05 17:12:55 -070027359 pRcvPktFilterCfg->coalesceTime);
Jeff Johnson295189b2012-06-20 16:38:30 -070027360
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027361 for ( i = 0; i < pRcvPktFilterCfg->numParams; i++ )
27362 {
27363 pRcvPktFilterCfg->paramsData[i].protocolLayer =
27364 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].protocolLayer;
27365 pRcvPktFilterCfg->paramsData[i].cmpFlag =
27366 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].cmpFlag;
27367 pRcvPktFilterCfg->paramsData[i].dataOffset =
27368 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataOffset;
27369 pRcvPktFilterCfg->paramsData[i].dataLength =
27370 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataLength;
Jeff Johnson295189b2012-06-20 16:38:30 -070027371
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027372 wpalMemoryCopy(&pRcvPktFilterCfg->paramsData[i].compareData,
Jeff Johnson295189b2012-06-20 16:38:30 -070027373 &pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].compareData,
27374 8);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027375 wpalMemoryCopy(&pRcvPktFilterCfg->paramsData[i].dataMask,
Jeff Johnson295189b2012-06-20 16:38:30 -070027376 &pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataMask,
27377 8);
27378
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027379 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Arif Hussain9a5d5382013-11-17 22:05:35 -080027380 "Out:Proto %d Comp Flag %d",
Jeff Johnsone7245742012-09-05 17:12:55 -070027381 pRcvPktFilterCfg->paramsData[i].protocolLayer,
Jeff Johnson295189b2012-06-20 16:38:30 -070027382 pRcvPktFilterCfg->paramsData[i].cmpFlag);
27383
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027384 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Arif Hussain9a5d5382013-11-17 22:05:35 -080027385 "Data Offset %d Data Len %d",
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027386 pRcvPktFilterCfg->paramsData[i].dataOffset,
27387 pRcvPktFilterCfg->paramsData[i].dataLength);
Jeff Johnson295189b2012-06-20 16:38:30 -070027388
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027389 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Arif Hussain9a5d5382013-11-17 22:05:35 -080027390 "CData: %d:%d:%d:%d:%d:%d",
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027391 pRcvPktFilterCfg->paramsData[i].compareData[0],
27392 pRcvPktFilterCfg->paramsData[i].compareData[1],
27393 pRcvPktFilterCfg->paramsData[i].compareData[2],
27394 pRcvPktFilterCfg->paramsData[i].compareData[3],
27395 pRcvPktFilterCfg->paramsData[i].compareData[4],
27396 pRcvPktFilterCfg->paramsData[i].compareData[5]);
Jeff Johnson295189b2012-06-20 16:38:30 -070027397
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027398 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Arif Hussain9a5d5382013-11-17 22:05:35 -080027399 "MData: %d:%d:%d:%d:%d:%d",
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027400 pRcvPktFilterCfg->paramsData[i].dataMask[0],
27401 pRcvPktFilterCfg->paramsData[i].dataMask[1],
27402 pRcvPktFilterCfg->paramsData[i].dataMask[2],
27403 pRcvPktFilterCfg->paramsData[i].dataMask[3],
27404 pRcvPktFilterCfg->paramsData[i].dataMask[4],
27405 pRcvPktFilterCfg->paramsData[i].dataMask[5]);
27406 }
Jeff Johnson295189b2012-06-20 16:38:30 -070027407
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027408 wpalMemoryCopy( pSendBuffer+usDataOffset,
Jeff Johnsone7245742012-09-05 17:12:55 -070027409 pRcvPktFilterCfg,
27410 usRcvPktFilterCfgSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070027411
27412
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027413 pWDICtx->wdiReqStatusCB = pwdiSetRcvPktFilterReqInfo->wdiReqStatusCB;
27414 pWDICtx->pReqStatusUserData = pwdiSetRcvPktFilterReqInfo->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070027415
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027416 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027417 "%s",__func__);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027418 wpalMemoryFree(pRcvPktFilterCfg);
27419 }
Jeff Johnson295189b2012-06-20 16:38:30 -070027420 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027421 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070027422 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070027423 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070027424 wdiReceiveFilterSetFilterCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -070027425 WDI_RECEIVE_FILTER_SET_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070027426}
27427
27428/**
27429 @brief Process Packet Filter Match Count Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070027430
27431 @param pWDICtx: pointer to the WLAN DAL context
27432 pEventData: pointer to the event information structure
27433
Jeff Johnson295189b2012-06-20 16:38:30 -070027434 @see
27435 @return Result of the function call
27436*/
27437WDI_Status
27438WDI_ProcessFilterMatchCountReq
Jeff Johnsone7245742012-09-05 17:12:55 -070027439(
Jeff Johnson295189b2012-06-20 16:38:30 -070027440 WDI_ControlBlockType* pWDICtx,
27441 WDI_EventInfoType* pEventData
27442)
27443{
27444 WDI_RcvFltPktMatchCntReqParamsType* pwdiRcvFltPktMatchCntReqParamsType =
27445 NULL;
27446 WDI_FilterMatchCountCb wdiFilterMatchCountCb =
27447 NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070027448 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070027449 wpt_uint16 usDataOffset = 0;
27450 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027451 tHalRcvFltPktMatchCntReqParams rcvFltPktMatchCntReqParam = {0};
27452 wpt_uint8 ucCurrentBSSSesIdx = 0;
27453 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070027454
27455 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027456 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027457
27458 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027459 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070027460 -------------------------------------------------------------------------*/
27461 if (( NULL == pEventData ) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070027462 ( NULL == (pwdiRcvFltPktMatchCntReqParamsType =
Jeff Johnson295189b2012-06-20 16:38:30 -070027463 (WDI_RcvFltPktMatchCntReqParamsType*)pEventData->pEventData)) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070027464 ( NULL == (wdiFilterMatchCountCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070027465 (WDI_FilterMatchCountCb)pEventData->pCBfnc)))
27466 {
27467 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027468 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027469 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070027470 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070027471 }
27472
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027473 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
27474 pwdiRcvFltPktMatchCntReqParamsType->bssId,
27475 &pBSSSes);
27476 if ( NULL == pBSSSes )
27477 {
27478 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027479 " %s : Association for this BSSID does not exist",__func__);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027480 return WDI_STATUS_E_FAILURE;
27481 }
27482
Jeff Johnson295189b2012-06-20 16:38:30 -070027483 /*-----------------------------------------------------------------------
27484 Get message buffer
27485 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070027486 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
27487 WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ,
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027488 sizeof(tHalRcvFltPktMatchCntReqParams),
Jeff Johnson295189b2012-06-20 16:38:30 -070027489 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027490 ( usSendSize < (usDataOffset + sizeof(tHalRcvFltPktMatchCntReqParams))))
Jeff Johnson295189b2012-06-20 16:38:30 -070027491 {
27492 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
27493 "Unable to get send buffer in "
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080027494 "WDI_ProcessFilterMatchCountReq() %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070027495 pEventData, pwdiRcvFltPktMatchCntReqParamsType,
27496 wdiFilterMatchCountCb);
27497 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070027498 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070027499 }
27500
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027501 rcvFltPktMatchCntReqParam.bssIdx = pBSSSes->ucBSSIdx;
27502 wpalMemoryCopy( pSendBuffer+usDataOffset,
27503 &rcvFltPktMatchCntReqParam,
27504 sizeof(rcvFltPktMatchCntReqParam));
27505
Jeff Johnson295189b2012-06-20 16:38:30 -070027506 //
27507 // Don't need to fill send buffer other than header
27508 //
27509 pWDICtx->wdiReqStatusCB = pwdiRcvFltPktMatchCntReqParamsType->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070027510 pWDICtx->pReqStatusUserData = pwdiRcvFltPktMatchCntReqParamsType->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070027511
27512
27513 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027514 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070027515 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070027516 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
27517 wdiFilterMatchCountCb,
27518 pEventData->pUserData,
27519 WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070027520}
27521
27522/**
27523 @brief Process Receive Filter Clear Filter Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070027524
27525 @param pWDICtx: pointer to the WLAN DAL context
27526 pEventData: pointer to the event information structure
27527
Jeff Johnson295189b2012-06-20 16:38:30 -070027528 @see
27529 @return Result of the function call
27530*/
27531WDI_Status
27532WDI_ProcessReceiveFilterClearFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070027533(
Jeff Johnson295189b2012-06-20 16:38:30 -070027534 WDI_ControlBlockType* pWDICtx,
27535 WDI_EventInfoType* pEventData
27536)
Jeff Johnsone7245742012-09-05 17:12:55 -070027537{
Jeff Johnson295189b2012-06-20 16:38:30 -070027538 WDI_RcvFltPktClearReqParamsType* pwdiRcvFltPktClearReqParamsType = NULL;
27539 WDI_ReceiveFilterClearFilterCb wdiRcvFltPktClearFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070027540 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070027541 wpt_uint16 usDataOffset = 0;
27542 wpt_uint16 usSendSize = 0;
27543 tHalRcvFltPktClearParam rcvFltPktClearParam;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027544 wpt_uint8 ucCurrentSessionId = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070027545 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070027546
27547 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027548 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027549
27550 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027551 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070027552 -------------------------------------------------------------------------*/
27553 if (( NULL == pEventData ) ||
27554 ( NULL == (pwdiRcvFltPktClearReqParamsType =
27555 (WDI_RcvFltPktClearReqParamsType*)pEventData->pEventData)) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070027556 ( NULL == (wdiRcvFltPktClearFilterCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070027557 (WDI_ReceiveFilterClearFilterCb)pEventData->pCBfnc)))
27558 {
27559 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027560 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027561 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070027562 return WDI_STATUS_E_FAILURE;
27563 }
27564
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027565 ucCurrentSessionId = WDI_FindAssocSession( pWDICtx,
Jeff Johnsone7245742012-09-05 17:12:55 -070027566 pwdiRcvFltPktClearReqParamsType->filterClearParam.bssId,
27567 &pBSSSes);
27568 if ( NULL == pBSSSes )
27569 {
27570 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027571 " %s : Association for this BSSID does not exist",__func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070027572 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070027573 }
27574
27575 /*-----------------------------------------------------------------------
27576 Get message buffer
27577 -----------------------------------------------------------------------*/
27578 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
Jeff Johnsone7245742012-09-05 17:12:55 -070027579 WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070027580 sizeof(tHalRcvFltPktClearParam),
27581 &pSendBuffer, &usDataOffset, &usSendSize))||
27582 ( usSendSize < (usDataOffset + sizeof(tHalRcvFltPktClearParam))))
27583 {
27584 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
27585 "Unable to get send buffer in "
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080027586 "WDI_ProcessReceiveFilterClearFilterReq() %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070027587 pEventData, pwdiRcvFltPktClearReqParamsType,
27588 wdiRcvFltPktClearFilterCb);
27589 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070027590 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070027591 }
27592
27593
27594 rcvFltPktClearParam.status = pwdiRcvFltPktClearReqParamsType->
Jeff Johnsone7245742012-09-05 17:12:55 -070027595 filterClearParam.status;
Jeff Johnson295189b2012-06-20 16:38:30 -070027596 rcvFltPktClearParam.filterId = pwdiRcvFltPktClearReqParamsType->
Jeff Johnsone7245742012-09-05 17:12:55 -070027597 filterClearParam.filterId;
Jeff Johnson295189b2012-06-20 16:38:30 -070027598
Jeff Johnsone7245742012-09-05 17:12:55 -070027599 rcvFltPktClearParam.bssIdx = pBSSSes->ucBSSIdx;
27600 wpalMemoryCopy( pSendBuffer+usDataOffset,
27601 &rcvFltPktClearParam,
27602 sizeof(rcvFltPktClearParam));
Jeff Johnson295189b2012-06-20 16:38:30 -070027603
27604 pWDICtx->wdiReqStatusCB = pwdiRcvFltPktClearReqParamsType->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070027605 pWDICtx->pReqStatusUserData = pwdiRcvFltPktClearReqParamsType->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070027606
27607
27608 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027609 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070027610 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070027611 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070027612 wdiRcvFltPktClearFilterCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -070027613 WDI_RECEIVE_FILTER_CLEAR_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070027614}
27615
27616/**
27617 @brief Process 8023 Multicast List Response function
Jeff Johnsone7245742012-09-05 17:12:55 -070027618
27619 @param pWDICtx: pointer to the WLAN DAL context
27620 pEventData: pointer to the event information structure
27621
Jeff Johnson295189b2012-06-20 16:38:30 -070027622 @see
27623 @return Result of the function call
27624*/
27625WDI_Status
27626WDI_Process8023MulticastListRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070027627(
Jeff Johnson295189b2012-06-20 16:38:30 -070027628 WDI_ControlBlockType* pWDICtx,
27629 WDI_EventInfoType* pEventData
27630)
27631{
Jeff Johnson295189b2012-06-20 16:38:30 -070027632 eHalStatus halStatus;
27633 WDI_8023MulticastListCb wdi8023MulticastListCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027634 tHalRcvFltPktSetMcListRspType halRcvFltPktSetMcListRsp;
27635 WDI_RcvFltPktSetMcListRspParamsType wdiRcvFltPktSetMcListRspInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070027636 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27637
27638 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027639 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027640
27641 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027642 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070027643 -------------------------------------------------------------------------*/
27644 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
27645 ( NULL == pEventData->pEventData ))
27646 {
27647 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027648 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027649 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070027650 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070027651 }
27652
Jeff Johnsone7245742012-09-05 17:12:55 -070027653 wdi8023MulticastListCb = (WDI_8023MulticastListCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070027654
27655 /*-------------------------------------------------------------------------
27656 Extract response and send it to UMAC
27657 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027658 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
27659 {
27660 wpalMemoryCopy( &halRcvFltPktSetMcListRsp,
27661 pEventData->pEventData,
27662 sizeof(halRcvFltPktSetMcListRsp));
27663
27664 wdiRcvFltPktSetMcListRspInfo.wdiStatus =
27665 WDI_HAL_2_WDI_STATUS(halRcvFltPktSetMcListRsp.status);
27666 wdiRcvFltPktSetMcListRspInfo.bssIdx =
27667 halRcvFltPktSetMcListRsp.bssIdx;
27668 }
27669 else
27670 {
27671 halStatus = *((eHalStatus*)pEventData->pEventData);
27672 wdiRcvFltPktSetMcListRspInfo.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
27673 }
Jeff Johnson295189b2012-06-20 16:38:30 -070027674
27675 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027676 wdi8023MulticastListCb(&wdiRcvFltPktSetMcListRspInfo, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070027677
Jeff Johnsone7245742012-09-05 17:12:55 -070027678 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070027679}
27680
27681/**
27682 @brief Process Set Rsp function (called when a
27683 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070027684
27685 @param pWDICtx: pointer to the WLAN DAL context
27686 pEventData: pointer to the event information structure
27687
Jeff Johnson295189b2012-06-20 16:38:30 -070027688 @see
27689 @return Result of the function call
27690*/
27691WDI_Status
27692WDI_ProcessReceiveFilterSetFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070027693(
Jeff Johnson295189b2012-06-20 16:38:30 -070027694 WDI_ControlBlockType* pWDICtx,
27695 WDI_EventInfoType* pEventData
27696)
27697{
Jeff Johnson295189b2012-06-20 16:38:30 -070027698 eHalStatus halStatus;
27699 WDI_ReceiveFilterSetFilterCb wdiReceiveFilterSetFilterCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027700 tHalSetPktFilterRspParams halSetPktFilterRspParams;
27701 WDI_SetRcvPktFilterRspParamsType wdiSetRcvPktFilterRspInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070027702 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27703
27704 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027705 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027706
27707 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027708 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070027709 -------------------------------------------------------------------------*/
27710 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
27711 ( NULL == pEventData->pEventData ))
27712 {
27713 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027714 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027715 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070027716 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070027717 }
27718
27719 wdiReceiveFilterSetFilterCb = (WDI_ReceiveFilterSetFilterCb)pWDICtx->
Jeff Johnsone7245742012-09-05 17:12:55 -070027720 pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070027721
27722 /*-------------------------------------------------------------------------
27723 Extract response and send it to UMAC
27724 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027725 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
27726 {
27727 wpalMemoryCopy( &halSetPktFilterRspParams,
27728 pEventData->pEventData,
27729 sizeof(halSetPktFilterRspParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070027730
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027731 wdiSetRcvPktFilterRspInfo.bssIdx = halSetPktFilterRspParams.bssIdx;
27732 wdiSetRcvPktFilterRspInfo.wdiStatus = WDI_HAL_2_WDI_STATUS(halSetPktFilterRspParams.status);
27733 }
27734 else
27735 {
27736 halStatus = *((eHalStatus*)pEventData->pEventData);
27737 wdiSetRcvPktFilterRspInfo.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
27738 }
Jeff Johnson295189b2012-06-20 16:38:30 -070027739 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027740 wdiReceiveFilterSetFilterCb(&wdiSetRcvPktFilterRspInfo, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070027741
Jeff Johnsone7245742012-09-05 17:12:55 -070027742 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070027743}
27744
27745/**
27746 @brief Process Packet Filter Match Count Response function
Jeff Johnsone7245742012-09-05 17:12:55 -070027747
27748 @param pWDICtx: pointer to the WLAN DAL context
27749 pEventData: pointer to the event information structure
27750
Jeff Johnson295189b2012-06-20 16:38:30 -070027751 @see
27752 @return Result of the function call
27753*/
27754WDI_Status
27755WDI_ProcessFilterMatchCountRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070027756(
Jeff Johnson295189b2012-06-20 16:38:30 -070027757 WDI_ControlBlockType* pWDICtx,
27758 WDI_EventInfoType* pEventData
27759)
27760{
Jeff Johnson295189b2012-06-20 16:38:30 -070027761 eHalStatus halStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070027762 WDI_FilterMatchCountCb wdiFilterMatchCountCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027763 tHalRcvFltPktMatchRspParams halRcvFltrPktMatachRsp;
27764 WDI_RcvFltPktMatchCntRspParamsType wdiRcvFltPktMatchRspParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070027765
27766 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27767
27768 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027769 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027770
27771 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027772 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070027773 -------------------------------------------------------------------------*/
27774 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
27775 ( NULL == pEventData->pEventData ))
27776 {
27777 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027778 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027779 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070027780 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070027781 }
27782
Jeff Johnsone7245742012-09-05 17:12:55 -070027783 wdiFilterMatchCountCb = (WDI_FilterMatchCountCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070027784
27785 /*-------------------------------------------------------------------------
27786 Extract response and send it to UMAC
27787 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027788 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
27789 {
27790 wpalMemoryCopy( &halRcvFltrPktMatachRsp,
27791 pEventData->pEventData,
27792 sizeof(halRcvFltrPktMatachRsp));
27793
27794 wdiRcvFltPktMatchRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halRcvFltrPktMatachRsp.status);
27795 wdiRcvFltPktMatchRspParams.bssIdx = halRcvFltrPktMatachRsp.bssIdx;
27796 }
27797 else
27798 {
27799 halStatus = *((eHalStatus*)pEventData->pEventData);
27800 wdiRcvFltPktMatchRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
27801 }
Jeff Johnson295189b2012-06-20 16:38:30 -070027802
27803 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027804 wdiFilterMatchCountCb(&wdiRcvFltPktMatchRspParams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070027805
Jeff Johnsone7245742012-09-05 17:12:55 -070027806 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070027807}
27808
27809/**
27810 @brief Process Receive Filter Clear Filter Response function
Jeff Johnsone7245742012-09-05 17:12:55 -070027811
27812 @param pWDICtx: pointer to the WLAN DAL context
27813 pEventData: pointer to the event information structure
27814
Jeff Johnson295189b2012-06-20 16:38:30 -070027815 @see
27816 @return Result of the function call
27817*/
27818WDI_Status
27819WDI_ProcessReceiveFilterClearFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070027820(
Jeff Johnson295189b2012-06-20 16:38:30 -070027821 WDI_ControlBlockType* pWDICtx,
27822 WDI_EventInfoType* pEventData
27823)
27824{
Jeff Johnson295189b2012-06-20 16:38:30 -070027825 eHalStatus halStatus;
27826 WDI_ReceiveFilterClearFilterCb wdiReceiveFilterClearFilterCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027827 tHalRcvFltPktClearParam halRcvFltPktClearRspMsg;
27828 WDI_RcvFltPktClearRspParamsType wdiRcvFltPktClearRspParamsType;
Jeff Johnson295189b2012-06-20 16:38:30 -070027829 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27830
27831 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027832 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027833
27834 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027835 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070027836 -------------------------------------------------------------------------*/
27837 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
27838 ( NULL == pEventData->pEventData ))
27839 {
27840 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027841 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027842 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070027843 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070027844 }
27845
27846 wdiReceiveFilterClearFilterCb = (WDI_ReceiveFilterClearFilterCb)pWDICtx->
Jeff Johnsone7245742012-09-05 17:12:55 -070027847 pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070027848
27849 /*-------------------------------------------------------------------------
27850 Extract response and send it to UMAC
27851 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027852 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
27853 {
27854 wpalMemoryCopy( &halRcvFltPktClearRspMsg,
27855 pEventData->pEventData,
27856 sizeof(halRcvFltPktClearRspMsg));
27857
27858 wdiRcvFltPktClearRspParamsType.wdiStatus =
27859 WDI_HAL_2_WDI_STATUS(halRcvFltPktClearRspMsg.status);
27860 wdiRcvFltPktClearRspParamsType.bssIdx =
27861 halRcvFltPktClearRspMsg.bssIdx;
27862 }
27863 else
27864 {
27865 halStatus = *((eHalStatus*)pEventData->pEventData);
27866 wdiRcvFltPktClearRspParamsType.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
27867 }
Jeff Johnson295189b2012-06-20 16:38:30 -070027868
27869 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027870 wdiReceiveFilterClearFilterCb(&wdiRcvFltPktClearRspParamsType, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070027871
Jeff Johnsone7245742012-09-05 17:12:55 -070027872 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070027873}
27874#endif // WLAN_FEATURE_PACKET_FILTERING
27875
27876/**
27877 @brief Process Shutdown Rsp function
27878 There is no shutdown response comming from HAL
27879 - function just kept for simmetry
Jeff Johnsone7245742012-09-05 17:12:55 -070027880
Jeff Johnson295189b2012-06-20 16:38:30 -070027881 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnsone7245742012-09-05 17:12:55 -070027882 pEventData: pointer to the event information structure
Jeff Johnson295189b2012-06-20 16:38:30 -070027883
27884 @see
27885 @return Result of the function call
27886*/
27887WDI_Status
27888WDI_ProcessShutdownRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070027889(
Jeff Johnson295189b2012-06-20 16:38:30 -070027890 WDI_ControlBlockType* pWDICtx,
27891 WDI_EventInfoType* pEventData
27892)
27893{
27894 /*There is no shutdown response comming from HAL - function just kept for
27895 simmetry */
27896 WDI_ASSERT(0);
27897 return WDI_STATUS_SUCCESS;
27898}/*WDI_ProcessShutdownRsp*/
27899
27900/**
27901 @brief WDI_SetPowerParamsReq
27902
Jeff Johnsone7245742012-09-05 17:12:55 -070027903 @param pwdiPowerParamsReqParams: the Set Power Params as
Jeff Johnson295189b2012-06-20 16:38:30 -070027904 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -070027905
Jeff Johnson295189b2012-06-20 16:38:30 -070027906 wdiPowerParamsCb: callback for passing back the response
27907 of the Set Power Params operation received from the
27908 device
Jeff Johnsone7245742012-09-05 17:12:55 -070027909
Jeff Johnson295189b2012-06-20 16:38:30 -070027910 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -070027911 callback
27912
Jeff Johnson295189b2012-06-20 16:38:30 -070027913 @return Result of the function call
27914*/
Jeff Johnsone7245742012-09-05 17:12:55 -070027915WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070027916WDI_SetPowerParamsReq
27917(
27918 WDI_SetPowerParamsReqParamsType* pwdiPowerParamsReqParams,
27919 WDI_SetPowerParamsCb wdiPowerParamsCb,
27920 void* pUserData
27921)
27922{
27923 WDI_EventInfoType wdiEventData;
27924 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27925
27926 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027927 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070027928 ------------------------------------------------------------------------*/
27929 if ( eWLAN_PAL_FALSE == gWDIInitialized )
27930 {
27931 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
27932 "WDI API call before module is initialized - Fail request");
27933
Jeff Johnsone7245742012-09-05 17:12:55 -070027934 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070027935 }
27936
27937 /*------------------------------------------------------------------------
27938 Fill in Event data and post to the Main FSM
27939 ------------------------------------------------------------------------*/
27940 wdiEventData.wdiRequest = WDI_SET_POWER_PARAMS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070027941 wdiEventData.pEventData = pwdiPowerParamsReqParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070027942 wdiEventData.uEventDataSize = sizeof(*pwdiPowerParamsReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -070027943 wdiEventData.pCBfnc = wdiPowerParamsCb;
Jeff Johnson295189b2012-06-20 16:38:30 -070027944 wdiEventData.pUserData = pUserData;
27945
27946 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
27947}/*WDI_SetPowerParamsReq*/
27948
27949/**
27950 @brief Process Set Power Params Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070027951
27952 @param pWDICtx: pointer to the WLAN DAL context
27953 pEventData: pointer to the event information structure
27954
Jeff Johnson295189b2012-06-20 16:38:30 -070027955 @see
27956 @return Result of the function call
27957*/
27958WDI_Status
27959WDI_ProcessSetPowerParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070027960(
Jeff Johnson295189b2012-06-20 16:38:30 -070027961 WDI_ControlBlockType* pWDICtx,
27962 WDI_EventInfoType* pEventData
27963)
27964{
27965 WDI_SetPowerParamsReqParamsType* pwdiPowerParamsReqParams = NULL;
27966 WDI_SetPowerParamsCb wdiPowerParamsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070027967 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070027968 wpt_uint16 usDataOffset = 0;
27969 wpt_uint16 usSendSize = 0;
27970 tSetPowerParamsType powerParams;
27971
27972 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027973 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070027974 -------------------------------------------------------------------------*/
27975 if (( NULL == pEventData ) ||
27976 ( NULL == (pwdiPowerParamsReqParams = (WDI_SetPowerParamsReqParamsType*)pEventData->pEventData)) ||
27977 ( NULL == (wdiPowerParamsCb = (WDI_SetPowerParamsCb)pEventData->pCBfnc)))
27978 {
27979 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027980 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027981 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070027982 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070027983 }
27984
27985 /*-----------------------------------------------------------------------
27986 Get message buffer
27987 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070027988 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_POWER_PARAMS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070027989 sizeof(powerParams),
27990 &pSendBuffer, &usDataOffset, &usSendSize))||
27991 ( usSendSize < (usDataOffset + sizeof(powerParams) )))
27992 {
27993 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080027994 "Unable to get send buffer in Set PNO req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070027995 pEventData, pwdiPowerParamsReqParams, wdiPowerParamsCb);
27996 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070027997 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070027998 }
27999
28000 /* Ignore DTIM */
Jeff Johnsone7245742012-09-05 17:12:55 -070028001 powerParams.uIgnoreDTIM =
Jeff Johnson295189b2012-06-20 16:38:30 -070028002 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uIgnoreDTIM;
28003
28004 /*DTIM Period*/
Jeff Johnsone7245742012-09-05 17:12:55 -070028005 powerParams.uDTIMPeriod =
Jeff Johnson295189b2012-06-20 16:38:30 -070028006 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uDTIMPeriod;
28007
28008 /* Listen Interval */
Jeff Johnsone7245742012-09-05 17:12:55 -070028009 powerParams.uListenInterval=
Jeff Johnson295189b2012-06-20 16:38:30 -070028010 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uListenInterval;
28011
28012 /* Broadcast Multicas Filter */
Jeff Johnsone7245742012-09-05 17:12:55 -070028013 powerParams.uBcastMcastFilter =
Jeff Johnson295189b2012-06-20 16:38:30 -070028014 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uBcastMcastFilter;
28015
28016 /* Beacon Early Termination */
Jeff Johnsone7245742012-09-05 17:12:55 -070028017 powerParams.uEnableBET =
Jeff Johnson295189b2012-06-20 16:38:30 -070028018 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uEnableBET;
28019
28020 /* Beacon Early Termination Interval */
Jeff Johnsone7245742012-09-05 17:12:55 -070028021 powerParams.uBETInterval =
28022 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uBETInterval;
Jeff Johnson295189b2012-06-20 16:38:30 -070028023
Yue Mac24062f2013-05-13 17:01:29 -070028024 /* MAX LI for modulated DTIM */
28025 powerParams.uMaxLIModulatedDTIM =
28026 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uMaxLIModulatedDTIM;
Jeff Johnsone7245742012-09-05 17:12:55 -070028027
28028 wpalMemoryCopy( pSendBuffer+usDataOffset,
28029 &powerParams,
28030 sizeof(powerParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070028031
28032 pWDICtx->wdiReqStatusCB = pwdiPowerParamsReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070028033 pWDICtx->pReqStatusUserData = pwdiPowerParamsReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070028034
28035 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070028036 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070028037 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070028038 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
28039 wdiPowerParamsCb, pEventData->pUserData, WDI_SET_POWER_PARAMS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070028040}
28041
28042/**
28043 @brief Process Power Params Rsp function (called when a
28044 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070028045
28046 @param pWDICtx: pointer to the WLAN DAL context
28047 pEventData: pointer to the event information structure
28048
Jeff Johnson295189b2012-06-20 16:38:30 -070028049 @see
28050 @return Result of the function call
28051*/
28052WDI_Status
28053WDI_ProcessSetPowerParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070028054(
Jeff Johnson295189b2012-06-20 16:38:30 -070028055 WDI_ControlBlockType* pWDICtx,
28056 WDI_EventInfoType* pEventData
28057)
28058{
28059 WDI_Status wdiStatus;
28060 eHalStatus halStatus;
28061 WDI_SetPowerParamsCb wdiPowerParamsCb;
28062 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28063
28064 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070028065 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070028066 -------------------------------------------------------------------------*/
28067 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
28068 ( NULL == pEventData->pEventData ))
28069 {
28070 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028071 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028072 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070028073 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070028074 }
28075
Jeff Johnsone7245742012-09-05 17:12:55 -070028076 wdiPowerParamsCb = (WDI_SetPowerParamsCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070028077
28078 /*-------------------------------------------------------------------------
28079 Extract response and send it to UMAC
28080 -------------------------------------------------------------------------*/
28081 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070028082 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070028083
28084 /*Notify UMAC*/
28085 wdiPowerParamsCb(wdiStatus, pWDICtx->pRspCBUserData);
28086
Jeff Johnsone7245742012-09-05 17:12:55 -070028087 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070028088}/*WDI_ProcessSetPowerParamsRsp*/
28089
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +053028090/**
28091 @brief WDI_dhcpStartInd
28092 Host will send an event to the FW when DHCP is initiated
28093
28094 @param
28095 WDI_DHCPInd: DHCP Indication
28096 @see
28097 @return Result of the function call
28098*/
28099WDI_Status
28100WDI_dhcpStartInd
28101(
28102 WDI_DHCPInd *wdiDHCPInd
28103)
28104{
28105 WDI_EventInfoType wdiEventData;
28106
28107 /*------------------------------------------------------------------------
28108 Sanity Check
28109 ------------------------------------------------------------------------*/
28110 if ( eWLAN_PAL_FALSE == gWDIInitialized )
28111 {
28112 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
28113 "WDI API call before module is initialized - Fail request");
28114
28115 return WDI_STATUS_E_NOT_ALLOWED;
28116 }
28117
28118 wdiEventData.wdiRequest = WDI_DHCP_START_IND;
28119 wdiEventData.pEventData = wdiDHCPInd;
c_hpothu0b0cab72014-02-13 21:52:40 +053028120 wdiEventData.uEventDataSize = sizeof(WDI_DHCPInd);
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +053028121 wdiEventData.pCBfnc = NULL;
28122 wdiEventData.pUserData = NULL;
28123
28124 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
28125}
28126
28127
28128/**
28129 @brief WDI_dhcpStopInd
28130 Host will send an event to the FW when DHCP is completed
28131
28132 @param
28133 WDI_DHCPInd: DHCP Indication
28134 @see
28135 @return Result of the function call
28136*/
28137WDI_Status
28138WDI_dhcpStopInd
28139(
28140 WDI_DHCPInd *wdiDHCPInd
28141)
28142{
28143 WDI_EventInfoType wdiEventData;
28144
28145 /*------------------------------------------------------------------------
28146 Sanity Check
28147 ------------------------------------------------------------------------*/
28148 if ( eWLAN_PAL_FALSE == gWDIInitialized )
28149 {
28150 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
28151 "WDI API call before module is initialized - Fail request");
28152
28153 return WDI_STATUS_E_NOT_ALLOWED;
28154 }
28155
28156 wdiEventData.wdiRequest = WDI_DHCP_STOP_IND;
28157 wdiEventData.pEventData = wdiDHCPInd;
c_hpothu0b0cab72014-02-13 21:52:40 +053028158 wdiEventData.uEventDataSize = sizeof(WDI_DHCPInd);
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +053028159 wdiEventData.pCBfnc = NULL;
28160 wdiEventData.pUserData = NULL;
28161
28162 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
28163}
28164
28165
28166/**
28167 @brief Process DHCP Start Indication message and post it to HAL
28168
28169 @param pWDICtx: pointer to the WLAN DAL context
28170 pEventData: pointer to the event information structure
28171
28172 @see
28173 @return Result of the function call
28174*/
28175WDI_Status
28176WDI_ProcessDHCPStartInd
28177(
28178 WDI_ControlBlockType* pWDICtx,
28179 WDI_EventInfoType* pEventData
28180)
28181{
28182 wpt_uint8* pSendBuffer = NULL;
28183 wpt_uint16 usDataOffset = 0;
28184 wpt_uint16 usSendSize = 0;
28185 wpt_uint16 usLen = 0;
28186 WDI_DHCPInd* pwdiDHCPInd = NULL;
28187 tDHCPInfo* pDHCPInfo;
Sandeep Puligillaee789512014-02-13 19:14:52 +053028188 WDI_Status wdiStatus;
28189
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +053028190
28191 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28192
28193 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
28194 "%s", __func__);
28195
28196 /*-------------------------------------------------------------------------
28197 Sanity check
28198 -------------------------------------------------------------------------*/
28199 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
28200 {
28201 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
28202 "%s: Invalid parameters", __func__);
28203 WDI_ASSERT(0);
28204 return WDI_STATUS_E_FAILURE;
28205 }
28206 pwdiDHCPInd = (WDI_DHCPInd*)pEventData->pEventData;
28207 /*-----------------------------------------------------------------------
28208 Get message buffer
28209 -----------------------------------------------------------------------*/
28210
28211 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
28212 WDI_DHCP_START_IND,
28213 sizeof(tDHCPInfo),
28214 &pSendBuffer, &usDataOffset, &usSendSize))||
28215 ( usSendSize < (usDataOffset + usLen )))
28216 {
28217 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
28218 "Unable to get send buffer in DHCP Start req %p ",
28219 pEventData);
28220 WDI_ASSERT(0);
28221 return WDI_STATUS_E_FAILURE;
28222 }
28223
Sandeep Puligillaee789512014-02-13 19:14:52 +053028224 pDHCPInfo = (tDHCPInfo*)(pSendBuffer+usDataOffset);
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +053028225 pDHCPInfo->device_mode = pwdiDHCPInd->device_mode;
28226 wpalMemoryCopy(pDHCPInfo->macAddr, pwdiDHCPInd->macAddr,
28227 WDI_MAC_ADDR_LEN);
28228
28229 pWDICtx->pReqStatusUserData = NULL;
28230 pWDICtx->pfncRspCB = NULL;
28231
28232 /*-------------------------------------------------------------------------
28233 Send DHCP Start Indication to HAL
28234 -------------------------------------------------------------------------*/
Sandeep Puligillaee789512014-02-13 19:14:52 +053028235 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
28236 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus:WDI_STATUS_SUCCESS_SYNC;
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +053028237}/*WDI_ProcessDHCPStartInd*/
28238
28239/**
28240 @brief Process DHCP Stop indication message and post it to HAL
28241
28242 @param pWDICtx: pointer to the WLAN DAL context
28243 pEventData: pointer to the event information structure
28244
28245 @see
28246 @return Result of the function call
28247*/
28248WDI_Status
28249WDI_ProcessDHCPStopInd
28250(
28251 WDI_ControlBlockType* pWDICtx,
28252 WDI_EventInfoType* pEventData
28253)
28254{
28255 wpt_uint8* pSendBuffer = NULL;
28256 wpt_uint16 usDataOffset = 0;
28257 wpt_uint16 usSendSize = 0;
28258 wpt_uint16 usLen = 0;
28259 WDI_DHCPInd* pwdiDHCPInd = NULL;
28260 tDHCPInfo* pDHCPInfo;
Sandeep Puligillaee789512014-02-13 19:14:52 +053028261 WDI_Status wdiStatus;
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +053028262
28263 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28264
28265 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
28266 "%s", __func__);
28267
28268 /*-------------------------------------------------------------------------
28269 Sanity check
28270 -------------------------------------------------------------------------*/
28271
28272 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
28273 {
28274 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
28275 "%s: Invalid parameters", __func__);
28276 WDI_ASSERT(0);
28277 return WDI_STATUS_E_FAILURE;
28278 }
28279 pwdiDHCPInd = (WDI_DHCPInd*)pEventData->pEventData;
28280 /*-----------------------------------------------------------------------
28281 Get message buffer
28282 -----------------------------------------------------------------------*/
28283
28284 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
28285 WDI_DHCP_STOP_IND,
28286 sizeof(tDHCPInfo),
28287 &pSendBuffer, &usDataOffset, &usSendSize))||
28288 ( usSendSize < (usDataOffset + usLen )))
28289 {
28290 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
28291 "Unable to get send buffer in DHCP Start req %p ",
28292 pEventData);
28293 WDI_ASSERT(0);
28294 return WDI_STATUS_E_FAILURE;
28295 }
28296
Sandeep Puligillaee789512014-02-13 19:14:52 +053028297 pDHCPInfo = (tDHCPInfo*)(pSendBuffer+usDataOffset);
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +053028298 pDHCPInfo->device_mode = pwdiDHCPInd->device_mode;
28299 wpalMemoryCopy(pDHCPInfo->macAddr, pwdiDHCPInd->macAddr,
28300 WDI_MAC_ADDR_LEN);
28301
28302 pWDICtx->pReqStatusUserData = NULL;
28303 pWDICtx->pfncRspCB = NULL;
28304 /*-------------------------------------------------------------------------
28305 Send DHCP Stop indication to HAL
28306 -------------------------------------------------------------------------*/
Sandeep Puligillaee789512014-02-13 19:14:52 +053028307 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
28308 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus:WDI_STATUS_SUCCESS_SYNC;
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +053028309
28310}/*WDI_ProcessDHCPStopInd*/
28311
28312
Jeff Johnson295189b2012-06-20 16:38:30 -070028313#ifdef WLAN_FEATURE_GTK_OFFLOAD
28314/**
28315 @brief WDI_GTKOffloadReq will be called when the upper MAC
28316 wants to set GTK Rekey Counter while in power save. Upon
28317 the call of this API the WLAN DAL will pack and send a
28318 HAL GTK offload request message to the lower RIVA
28319 sub-system if DAL is in state STARTED.
28320
28321 In state BUSY this request will be queued. Request won't
28322 be allowed in any other state.
28323
28324 WDI_PostAssocReq must have been called.
28325
28326 @param pwdiGtkOffloadParams: the GTK offload as specified
28327 by the Device Interface
28328
28329 wdiGtkOffloadCb: callback for passing back the response
28330 of the GTK offload operation received from the device
28331
28332 pUserData: user data will be passed back with the
28333 callback
28334
28335 @see WDI_PostAssocReq
28336 @return Result of the function call
28337*/
28338WDI_Status
28339WDI_GTKOffloadReq
28340(
28341 WDI_GtkOffloadReqMsg* pwdiGtkOffloadReqMsg,
28342 WDI_GtkOffloadCb wdiGtkOffloadCb,
28343 void* pUserData
28344)
28345{
Gopichand Nakkala870cbae2013-03-15 21:16:09 +053028346 WDI_EventInfoType wdiEventData;
Jeff Johnson295189b2012-06-20 16:38:30 -070028347 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28348
28349 /*------------------------------------------------------------------------
28350 Sanity Check
28351 ------------------------------------------------------------------------*/
28352 if ( eWLAN_PAL_FALSE == gWDIInitialized )
28353 {
28354 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
28355 "WDI API call before module is initialized - Fail request");
28356
28357 return WDI_STATUS_E_NOT_ALLOWED;
28358 }
28359
28360 /*------------------------------------------------------------------------
28361 Fill in Event data and post to the Main FSM
28362 ------------------------------------------------------------------------*/
28363 wdiEventData.wdiRequest = WDI_GTK_OFFLOAD_REQ;
28364 wdiEventData.pEventData = pwdiGtkOffloadReqMsg;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -070028365 wdiEventData.uEventDataSize = sizeof(*pwdiGtkOffloadReqMsg);
Jeff Johnson295189b2012-06-20 16:38:30 -070028366 wdiEventData.pCBfnc = wdiGtkOffloadCb;
28367 wdiEventData.pUserData = pUserData;
28368
28369 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
28370}
28371
28372
28373/**
28374 @brief WDI_GTKOffloadGetInfoReq will be called when the upper
28375 MAC wants to get GTK Rekey Counter while in power save.
28376 Upon the call of this API the WLAN DAL will pack and
28377 send a HAL GTK offload request message to the lower RIVA
28378 sub-system if DAL is in state STARTED.
28379
28380 In state BUSY this request will be queued. Request won't
28381 be allowed in any other state.
28382
28383 WDI_PostAssocReq must have been called.
28384
28385 @param pwdiGtkOffloadGetInfoReqMsg: the GTK Offload
28386 Information Message as specified by the
28387 Device Interface
28388
28389 wdiGtkOffloadGetInfoCb: callback for passing back the
28390 response of the GTK offload operation received from the
28391 device
28392
28393 pUserData: user data will be passed back with the
28394 callback
28395
28396 @see WDI_PostAssocReq
28397 @return Result of the function call
28398*/
28399WDI_Status
28400WDI_GTKOffloadGetInfoReq
28401(
28402 WDI_GtkOffloadGetInfoReqMsg* pwdiGtkOffloadGetInfoReqMsg,
28403 WDI_GtkOffloadGetInfoCb wdiGtkOffloadGetInfoCb,
28404 void* pUserData
28405)
28406{
Gopichand Nakkala870cbae2013-03-15 21:16:09 +053028407 WDI_EventInfoType wdiEventData;
Jeff Johnson295189b2012-06-20 16:38:30 -070028408 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28409
28410 /*------------------------------------------------------------------------
28411 Sanity Check
28412 ------------------------------------------------------------------------*/
28413 if ( eWLAN_PAL_FALSE == gWDIInitialized )
28414 {
28415 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
28416 "WDI API call before module is initialized - Fail request");
28417
28418 return WDI_STATUS_E_NOT_ALLOWED;
28419 }
28420
28421 /*------------------------------------------------------------------------
28422 Fill in Event data and post to the Main FSM
28423 ------------------------------------------------------------------------*/
28424 wdiEventData.wdiRequest = WDI_GTK_OFFLOAD_GETINFO_REQ;
28425 wdiEventData.pEventData = pwdiGtkOffloadGetInfoReqMsg;
28426 wdiEventData.uEventDataSize = sizeof(*pwdiGtkOffloadGetInfoReqMsg);
28427 wdiEventData.pCBfnc = wdiGtkOffloadGetInfoCb;
28428 wdiEventData.pUserData = pUserData;
28429
28430 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
28431}
28432
28433
28434/**
28435 @brief Process set GTK Offload Request function
28436
28437 @param pWDICtx: pointer to the WLAN DAL context
28438 pEventData: pointer to the event information structure
28439
28440 @see
28441 @return Result of the function call
28442*/
28443WDI_Status
28444WDI_ProcessGTKOffloadReq
28445(
28446 WDI_ControlBlockType* pWDICtx,
28447 WDI_EventInfoType* pEventData
28448)
28449{
28450 WDI_GtkOffloadReqMsg* pwdiGtkOffloadReqMsg = NULL;
28451 WDI_GtkOffloadCb wdiGtkOffloadCb = NULL;
28452 wpt_uint8* pSendBuffer = NULL;
28453 wpt_uint16 usDataOffset = 0;
28454 wpt_uint16 usSendSize = 0;
28455 tHalGtkOffloadReqParams gtkOffloadReqParams = {0};
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028456 wpt_uint8 ucCurrentSessionId = 0;
28457 WDI_BSSSessionType* pBSSSes = NULL;
28458
Jeff Johnson295189b2012-06-20 16:38:30 -070028459 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28460
28461 /*-------------------------------------------------------------------------
28462 Sanity check
28463 -------------------------------------------------------------------------*/
28464 if (( NULL == pEventData ) ||
28465 ( NULL == (pwdiGtkOffloadReqMsg = (WDI_GtkOffloadReqMsg*)pEventData->pEventData)) ||
28466 ( NULL == (wdiGtkOffloadCb = (WDI_GtkOffloadCb)pEventData->pCBfnc)))
28467 {
28468 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028469 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028470 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080028471 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070028472 }
28473
28474 /*-----------------------------------------------------------------------
28475 Get message buffer
28476 -----------------------------------------------------------------------*/
28477 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_GTK_OFFLOAD_REQ,
28478 sizeof(gtkOffloadReqParams),
28479 &pSendBuffer, &usDataOffset, &usSendSize))||
28480 ( usSendSize < (usDataOffset + sizeof(gtkOffloadReqParams) )))
28481 {
28482 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080028483 "Unable to get send buffer in GTK offload req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070028484 pEventData, pwdiGtkOffloadReqMsg, wdiGtkOffloadCb);
28485 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080028486 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070028487 }
28488
28489 //
28490 // Fill gtkOffloadReqParams from pwdiGtkOffloadReqMsg->gtkOffloadReqParams
28491 //
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028492 ucCurrentSessionId = WDI_FindAssocSession( pWDICtx,
28493 pwdiGtkOffloadReqMsg->gtkOffloadReqParams.bssId,
28494 &pBSSSes);
28495 if ( NULL == pBSSSes )
28496 {
28497 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028498 " %s : Association for this BSSID does not exist", __func__);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080028499 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028500 }
28501
28502 gtkOffloadReqParams.bssIdx = pBSSSes->ucBSSIdx;
28503
Jeff Johnson295189b2012-06-20 16:38:30 -070028504 gtkOffloadReqParams.ulFlags = pwdiGtkOffloadReqMsg->gtkOffloadReqParams.ulFlags;
28505 // Copy KCK
28506 wpalMemoryCopy(&(gtkOffloadReqParams.aKCK[0]), &(pwdiGtkOffloadReqMsg->gtkOffloadReqParams.aKCK[0]), 16);
28507 // Copy KEK
28508 wpalMemoryCopy(&(gtkOffloadReqParams.aKEK[0]), &(pwdiGtkOffloadReqMsg->gtkOffloadReqParams.aKEK[0]), 16);
28509 // Copy KeyReplayCounter
28510 wpalMemoryCopy(&(gtkOffloadReqParams.ullKeyReplayCounter), &(pwdiGtkOffloadReqMsg->gtkOffloadReqParams.ullKeyReplayCounter), sizeof(v_U64_t));
28511
28512 wpalMemoryCopy( pSendBuffer+usDataOffset,
28513 &gtkOffloadReqParams,
28514 sizeof(gtkOffloadReqParams));
28515
28516 pWDICtx->wdiReqStatusCB = pwdiGtkOffloadReqMsg->wdiReqStatusCB;
28517 pWDICtx->pReqStatusUserData = pwdiGtkOffloadReqMsg->pUserData;
28518
28519 /*-------------------------------------------------------------------------
28520 Send Get STA Request to HAL
28521 -------------------------------------------------------------------------*/
28522 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
28523 wdiGtkOffloadCb, pEventData->pUserData, WDI_GTK_OFFLOAD_RESP);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080028524
28525fail:
28526 // Release the message buffer so we don't leak
28527 wpalMemoryFree(pSendBuffer);
28528
28529failRequest:
28530 //WDA should have failure check to avoid the memory leak
28531 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070028532}
28533
28534
28535/**
28536 @brief Process GTK Offload Get Information Request function
28537
28538 @param pWDICtx: pointer to the WLAN DAL context
28539 pEventData: pointer to the event information structure
28540
28541 @see
28542 @return Result of the function call
28543*/
28544WDI_Status
28545WDI_ProcessGTKOffloadGetInfoReq
28546(
28547 WDI_ControlBlockType* pWDICtx,
28548 WDI_EventInfoType* pEventData
28549)
28550{
28551 WDI_GtkOffloadGetInfoReqMsg* pwdiGtkOffloadGetInfoReqMsg = NULL;
28552 WDI_GtkOffloadGetInfoCb wdiGtkOffloadGetInfoCb = NULL;
28553 wpt_uint8* pSendBuffer = NULL;
28554 wpt_uint16 usDataOffset = 0;
28555 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028556 tHalGtkOffloadGetInfoReqParams halGtkOffloadGetInfoReqParams;
28557 wpt_uint8 ucCurrentSessionId = 0;
28558 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070028559
28560 /*-------------------------------------------------------------------------
28561 Sanity check
28562 -------------------------------------------------------------------------*/
28563 if (( NULL == pEventData ) ||
28564 ( NULL == (pwdiGtkOffloadGetInfoReqMsg = (WDI_GtkOffloadGetInfoReqMsg*)pEventData->pEventData)) ||
28565 ( NULL == (wdiGtkOffloadGetInfoCb = (WDI_GtkOffloadGetInfoCb)pEventData->pCBfnc)))
28566 {
28567 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028568 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028569 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080028570 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070028571 }
28572
28573 /*-----------------------------------------------------------------------
28574 Get message buffer
28575 -----------------------------------------------------------------------*/
28576 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_GTK_OFFLOAD_GETINFO_REQ,
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028577 sizeof(halGtkOffloadGetInfoReqParams),
Jeff Johnson295189b2012-06-20 16:38:30 -070028578 &pSendBuffer, &usDataOffset, &usSendSize))||
Gopichand Nakkala870cbae2013-03-15 21:16:09 +053028579 ( usSendSize < ( usDataOffset + sizeof(halGtkOffloadGetInfoReqParams))))
Jeff Johnson295189b2012-06-20 16:38:30 -070028580 {
28581 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080028582 "Unable to get send buffer in WDI_ProcessGTKOffloadGetInfoReq() %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070028583 pEventData, pwdiGtkOffloadGetInfoReqMsg, wdiGtkOffloadGetInfoCb);
28584 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080028585 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070028586 }
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028587 ucCurrentSessionId = WDI_FindAssocSession( pWDICtx,
28588 pwdiGtkOffloadGetInfoReqMsg->WDI_GtkOffloadGetInfoReqParams.bssId,
28589 &pBSSSes);
28590 if ( NULL == pBSSSes )
28591 {
28592 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028593 " %s : Association for this BSSID does not exist",__func__);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080028594 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028595 }
28596 halGtkOffloadGetInfoReqParams.bssIdx = pBSSSes->ucBSSIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070028597
28598 //
28599 // Don't need to fill send buffer other than header
28600 //
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028601 wpalMemoryCopy( pSendBuffer+usDataOffset,
28602 &halGtkOffloadGetInfoReqParams,
28603 sizeof(halGtkOffloadGetInfoReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070028604
28605 pWDICtx->wdiReqStatusCB = pwdiGtkOffloadGetInfoReqMsg->wdiReqStatusCB;
28606 pWDICtx->pReqStatusUserData = pwdiGtkOffloadGetInfoReqMsg->pUserData;
28607
28608 /*-------------------------------------------------------------------------
28609 Send Get STA Request to HAL
28610 -------------------------------------------------------------------------*/
28611 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
28612 wdiGtkOffloadGetInfoCb, pEventData->pUserData, WDI_GTK_OFFLOAD_GETINFO_RESP);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080028613fail:
28614 // Release the message buffer so we don't leak
28615 wpalMemoryFree(pSendBuffer);
28616
28617failRequest:
28618 //WDA should have failure check to avoid the memory leak
28619 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070028620}
28621
28622/**
28623 @brief Process host offload Rsp function (called when a
28624 response is being received over the bus from HAL)
28625
28626 @param pWDICtx: pointer to the WLAN DAL context
28627 pEventData: pointer to the event information structure
28628
28629 @see
28630 @return Result of the function call
28631*/
28632WDI_Status
28633WDI_ProcessGtkOffloadRsp
28634(
28635 WDI_ControlBlockType* pWDICtx,
28636 WDI_EventInfoType* pEventData
28637)
28638{
Jeff Johnson295189b2012-06-20 16:38:30 -070028639 eHalStatus halStatus;
28640 WDI_GtkOffloadCb wdiGtkOffloadCb = NULL;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028641 tHalGtkOffloadRspParams halGtkOffloadRspParams;
28642 WDI_GtkOffloadRspParams wdiGtkOffloadRsparams;
Jeff Johnson295189b2012-06-20 16:38:30 -070028643
28644 /*-------------------------------------------------------------------------
28645 Sanity check
28646 -------------------------------------------------------------------------*/
28647 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
28648 ( NULL == pEventData->pEventData))
28649 {
28650 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028651 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028652 WDI_ASSERT(0);
28653 return WDI_STATUS_E_FAILURE;
28654 }
28655
Wilson Yang00256342013-10-10 23:13:38 -070028656 wdiGtkOffloadCb = (WDI_GtkOffloadCb)pWDICtx->pfncRspCB;
28657
Jeff Johnson295189b2012-06-20 16:38:30 -070028658 /*-------------------------------------------------------------------------
28659 Extract response and send it to UMAC
28660 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028661 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
28662 {
28663 wpalMemoryCopy( &halGtkOffloadRspParams,
28664 pEventData->pEventData,
28665 sizeof(halGtkOffloadRspParams));
28666
28667 wdiGtkOffloadRsparams.ulStatus =
Gopichand Nakkala870cbae2013-03-15 21:16:09 +053028668 WDI_HAL_2_WDI_STATUS(halGtkOffloadRspParams.ulStatus);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028669 wdiGtkOffloadRsparams.bssIdx =
28670 halGtkOffloadRspParams.bssIdx;
28671 }
28672 else
28673 {
28674 halStatus = *((eHalStatus*)pEventData->pEventData);
28675 wdiGtkOffloadRsparams.ulStatus = WDI_HAL_2_WDI_STATUS(halStatus);
28676 }
Jeff Johnson295189b2012-06-20 16:38:30 -070028677
28678 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028679 wdiGtkOffloadCb( &wdiGtkOffloadRsparams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070028680
28681 return WDI_STATUS_SUCCESS;
28682}
28683
28684/**
28685 @brief Process GTK Offload Get Information Response function
28686
28687 @param pWDICtx: pointer to the WLAN DAL context
28688 pEventData: pointer to the event information structure
28689
28690 @see
28691 @return Result of the function call
28692*/
28693WDI_Status
28694WDI_ProcessGTKOffloadGetInfoRsp
28695(
28696 WDI_ControlBlockType* pWDICtx,
28697 WDI_EventInfoType* pEventData
28698)
28699{
Jeff Johnson295189b2012-06-20 16:38:30 -070028700 eHalStatus halStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070028701 WDI_GtkOffloadGetInfoCb wdiGtkOffloadGetInfoCb = NULL;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028702 tHalGtkOffloadGetInfoRspParams halGtkOffloadGetInfoRspParams;
28703 WDI_GtkOffloadGetInfoRspParams wdiGtkOffloadGetInfoRsparams;
Gopichand Nakkala870cbae2013-03-15 21:16:09 +053028704 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070028705
Jeff Johnson295189b2012-06-20 16:38:30 -070028706
28707 /*-------------------------------------------------------------------------
28708 Sanity check
28709 -------------------------------------------------------------------------*/
28710 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
28711 ( NULL == pEventData->pEventData ))
28712 {
28713 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028714 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028715 WDI_ASSERT(0);
28716 return WDI_STATUS_E_FAILURE;
28717 }
28718
Wilson Yang00256342013-10-10 23:13:38 -070028719 wdiGtkOffloadGetInfoCb = (WDI_GtkOffloadGetInfoCb)pWDICtx->pfncRspCB;
28720
28721 /*-------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -070028722 Extract response and send it to UMAC
28723 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028724 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
28725 {
28726 wpalMemoryCopy( &halGtkOffloadGetInfoRspParams,
28727 pEventData->pEventData,
28728 sizeof(halGtkOffloadGetInfoRspParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070028729
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028730 wdiGtkOffloadGetInfoRsparams.ulStatus =
Gopichand Nakkala870cbae2013-03-15 21:16:09 +053028731 WDI_HAL_2_WDI_STATUS(halGtkOffloadGetInfoRspParams.ulStatus);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028732 wdiGtkOffloadGetInfoRsparams.ullKeyReplayCounter =
28733 halGtkOffloadGetInfoRspParams.ullKeyReplayCounter;
28734 wdiGtkOffloadGetInfoRsparams.ulTotalRekeyCount =
28735 halGtkOffloadGetInfoRspParams.ulTotalRekeyCount;
28736 wdiGtkOffloadGetInfoRsparams.ulGTKRekeyCount =
28737 halGtkOffloadGetInfoRspParams.ulGTKRekeyCount;
28738 wdiGtkOffloadGetInfoRsparams.ulIGTKRekeyCount =
28739 halGtkOffloadGetInfoRspParams.ulIGTKRekeyCount;
Gopichand Nakkala870cbae2013-03-15 21:16:09 +053028740
28741 wpalMutexAcquire(&pWDICtx->wptMutex);
28742 WDI_FindAssocSessionByBSSIdx(pWDICtx, halGtkOffloadGetInfoRspParams.bssIdx,
28743 &pBSSSes);
28744
28745 if ( NULL == pBSSSes )
28746 {
28747 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
28748 "Association sequence for this BSS does not exist or "
28749 "association no longer in progress - mysterious HAL response");
28750 wpalMutexRelease(&pWDICtx->wptMutex);
28751 return WDI_STATUS_E_NOT_ALLOWED;
28752 }
28753
28754 wpalMemoryCopy(wdiGtkOffloadGetInfoRsparams.bssId, pBSSSes->macBSSID,
28755 sizeof (wpt_macAddr));
28756 wpalMutexRelease(&pWDICtx->wptMutex);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028757 }
28758 else
28759 {
28760 halStatus = *((eHalStatus*)pEventData->pEventData);
28761 wdiGtkOffloadGetInfoRsparams.ulStatus = WDI_HAL_2_WDI_STATUS(halStatus);
28762 }
Jeff Johnson295189b2012-06-20 16:38:30 -070028763 /*Notify UMAC*/
28764 //wdiUpdateScanParamsCb(wdiStatus, pWDICtx->pRspCBUserData);
28765 //wdiReceiveFilterClearFilterCb(wdiStatus, pWDICtx->pRspCBUserData);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028766 wdiGtkOffloadGetInfoCb(&wdiGtkOffloadGetInfoRsparams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070028767
28768 return WDI_STATUS_SUCCESS;
28769}
28770#endif // WLAN_FEATURE_GTK_OFFLOAD
28771
28772#ifdef WLAN_WAKEUP_EVENTS
28773WDI_Status
28774WDI_ProcessWakeReasonInd
28775(
28776 WDI_ControlBlockType* pWDICtx,
28777 WDI_EventInfoType* pEventData
28778)
28779{
28780 WDI_LowLevelIndType *pWdiInd;
28781 tpWakeReasonParams pWakeReasonParams;
28782 wpt_uint32 allocSize = 0;
28783
28784 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028785 "+%s", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028786
28787 /*-------------------------------------------------------------------------
28788 Sanity check
28789 -------------------------------------------------------------------------*/
28790 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
28791 ( NULL == pEventData->pEventData ))
28792 {
28793 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028794 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028795 WDI_ASSERT( 0 );
28796 return WDI_STATUS_E_FAILURE;
28797 }
28798
28799 /*-------------------------------------------------------------------------
28800 Extract indication and send it to UMAC
28801 -------------------------------------------------------------------------*/
28802 pWakeReasonParams = (tpWakeReasonParams)(pEventData->pEventData);
28803
28804 allocSize = sizeof(WDI_LowLevelIndType) + (pWakeReasonParams->ulStoredDataLen - 1);
28805
28806 //Allocate memory for WDI_WakeReasonIndType structure
28807 pWdiInd = wpalMemoryAllocate(allocSize) ;
28808
28809 if(NULL == pWdiInd)
28810 {
28811 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080028812 "%s: Failed to allocate memory for WDI_WakeReasonIndType: %p %p %p ",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028813 __func__, pWDICtx, pEventData, pEventData->pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070028814 WDI_ASSERT(0);
28815 return WDI_STATUS_E_FAILURE;
28816 }
28817
28818 wpalMemoryZero(pWdiInd, allocSize);
28819
28820 /* Fill in the indication parameters*/
28821 // Fill wdiInd.wdiIndicationData.wakeReasonInd structure from wakeReasonInd.wakeReasonParams
28822 pWdiInd->wdiIndicationType = WDI_WAKE_REASON_IND;
28823 pWdiInd->wdiIndicationData.wdiWakeReasonInd.ulReason = pWakeReasonParams->ulReason;
28824 pWdiInd->wdiIndicationData.wdiWakeReasonInd.ulReasonArg = pWakeReasonParams->ulReasonArg;
28825 pWdiInd->wdiIndicationData.wdiWakeReasonInd.ulStoredDataLen = pWakeReasonParams->ulStoredDataLen;
28826 pWdiInd->wdiIndicationData.wdiWakeReasonInd.ulActualDataLen = pWakeReasonParams->ulActualDataLen;
28827 wpalMemoryCopy( (void *)&(pWdiInd->wdiIndicationData.wdiWakeReasonInd.aDataStart[0]),
28828 &(pWakeReasonParams->aDataStart[0]),
28829 pWakeReasonParams->ulStoredDataLen);
28830
ltimariub77f24b2013-01-24 18:54:33 -080028831
28832 if ( pWDICtx->wdiLowLevelIndCB )
28833 {
28834 /*Notify UMAC*/
28835 pWDICtx->wdiLowLevelIndCB( pWdiInd, pWDICtx->pIndUserData );
28836 }
Jeff Johnson295189b2012-06-20 16:38:30 -070028837
28838 //Free memory allocated for WDI_WakeReasonIndType structure
28839 wpalMemoryFree(pWdiInd);
28840
28841 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028842 "-%s", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028843
28844 return WDI_STATUS_SUCCESS;
28845}
28846#endif // WLAN_WAKEUP_EVENTS
28847
28848void WDI_GetWcnssCompiledApiVersion
28849(
28850 WDI_WlanVersionType *pWcnssApiVersion
28851)
28852{
28853 pWcnssApiVersion->major = WLAN_HAL_VER_MAJOR;
28854 pWcnssApiVersion->minor = WLAN_HAL_VER_MINOR;
28855 pWcnssApiVersion->version = WLAN_HAL_VER_VERSION;
28856 pWcnssApiVersion->revision = WLAN_HAL_VER_REVISION;
28857}
28858
28859/**
28860 @brief Process Set TM Level Rsp function (called when a
28861 response is being received over the bus from HAL)
28862
28863 @param pWDICtx: pointer to the WLAN DAL context
28864 pEventData: pointer to the event information structure
28865
28866 @see
28867 @return Result of the function call
28868*/
28869WDI_Status
28870WDI_ProcessSetTmLevelRsp
28871(
28872 WDI_ControlBlockType* pWDICtx,
28873 WDI_EventInfoType* pEventData
28874)
28875{
28876 WDI_Status wdiStatus;
28877 eHalStatus halStatus;
28878 WDI_SetTmLevelCb wdiSetTmLevelCb;
28879 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28880
28881 /*-------------------------------------------------------------------------
28882 Sanity check
28883 -------------------------------------------------------------------------*/
28884 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
28885 ( NULL == pEventData->pEventData ))
28886 {
28887 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028888 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028889 WDI_ASSERT(0);
28890 return WDI_STATUS_E_FAILURE;
28891 }
28892
28893 wdiSetTmLevelCb = (WDI_SetPowerParamsCb)pWDICtx->pfncRspCB;
28894
28895 /*-------------------------------------------------------------------------
28896 Extract response and send it to UMAC
28897 -------------------------------------------------------------------------*/
28898 halStatus = *((eHalStatus*)pEventData->pEventData);
28899 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
28900
28901 /*Notify UMAC*/
28902 wdiSetTmLevelCb(wdiStatus, pWDICtx->pRspCBUserData);
28903
28904 return WDI_STATUS_SUCCESS;
28905}/*WDI_ProcessSetTmLevelRsp*/
28906
28907/**
28908 @brief Process Set Thermal Mitigation level Changed request
28909
28910 @param pWDICtx: pointer to the WLAN DAL context
28911 pEventData: pointer to the event information structure
28912
28913 @see
28914 @return Result of the function call
28915*/
28916WDI_Status
28917WDI_ProcessSetTmLevelReq
28918(
28919 WDI_ControlBlockType* pWDICtx,
28920 WDI_EventInfoType* pEventData
28921)
28922{
28923 WDI_SetTmLevelReqType *pwdiSetTmLevelReq = NULL;
28924 WDI_SetTmLevelCb wdiSetTmLevelCb = NULL;
28925 wpt_uint8* pSendBuffer = NULL;
28926 wpt_uint16 usDataOffset = 0;
28927 wpt_uint16 usSendSize = 0;
28928 tSetThermalMitgationType halTmMsg;
28929
28930 /*-------------------------------------------------------------------------
28931 Sanity check
28932 -------------------------------------------------------------------------*/
28933 if (( NULL == pEventData ) ||
28934 ( NULL == (pwdiSetTmLevelReq = (WDI_SetTmLevelReqType*)pEventData->pEventData)) ||
28935 ( NULL == (wdiSetTmLevelCb = (WDI_SetTmLevelCb)pEventData->pCBfnc)))
28936 {
28937 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028938 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028939 WDI_ASSERT(0);
28940 return WDI_STATUS_E_FAILURE;
28941 }
28942
28943 /*-----------------------------------------------------------------------
28944 Get message buffer
28945 -----------------------------------------------------------------------*/
28946 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_TM_LEVEL_REQ,
28947 sizeof(halTmMsg),
28948 &pSendBuffer, &usDataOffset, &usSendSize))||
28949 ( usSendSize < (usDataOffset + sizeof(halTmMsg) )))
28950 {
28951 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080028952 "Unable to get send buffer in Set PNO req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070028953 pEventData, pwdiSetTmLevelReq, wdiSetTmLevelCb);
28954 WDI_ASSERT(0);
28955 return WDI_STATUS_E_FAILURE;
28956 }
28957
28958 halTmMsg.thermalMitMode = pwdiSetTmLevelReq->tmMode;
28959 halTmMsg.thermalMitLevel = pwdiSetTmLevelReq->tmLevel;
28960
28961 wpalMemoryCopy( pSendBuffer+usDataOffset,
28962 &halTmMsg,
28963 sizeof(halTmMsg));
28964
28965 pWDICtx->pReqStatusUserData = pwdiSetTmLevelReq->pUserData;
28966 pWDICtx->pfncRspCB = NULL;
28967 /*-------------------------------------------------------------------------
28968 Send Get STA Request to HAL
28969 -------------------------------------------------------------------------*/
28970 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
28971 wdiSetTmLevelCb, pEventData->pUserData, WDI_SET_TM_LEVEL_RESP);
28972}
28973
28974/* Fill the value from the global features enabled array to the global capabilities
28975 * bitmap struct
28976 */
28977static void
28978FillAllFeatureCaps(tWlanFeatCaps *fCaps, placeHolderInCapBitmap *enabledFeat, wpt_int8 len)
28979{
28980 wpt_int8 i;
28981 for (i=0; i<len; i++)
28982 {
28983 setFeatCaps(fCaps, enabledFeat[i]);
28984 }
28985}
28986
28987/**
28988 @brief WDI_featureCapsExchangeReq
28989 Post feature capability bitmap exchange event.
28990 Host will send its own capability to FW in this req and
28991 expect FW to send its capability back as a bitmap in Response
28992
28993 @param
28994
28995 wdiFeatureCapsExchangeCb: callback called on getting the response.
28996 It is kept to mantain similarity between WDI reqs and if needed, can
28997 be used in future. Currently, It is set to NULL
28998
28999 pUserData: user data will be passed back with the
29000 callback
29001
29002 @see
29003 @return Result of the function call
29004*/
29005WDI_Status
29006WDI_featureCapsExchangeReq
29007(
29008 WDI_featureCapsExchangeCb wdiFeatureCapsExchangeCb,
29009 void* pUserData
29010)
29011{
29012 WDI_EventInfoType wdiEventData;
29013 wpt_int32 fCapsStructSize;
29014
29015 /*------------------------------------------------------------------------
29016 Sanity Check
29017 ------------------------------------------------------------------------*/
29018 if ( eWLAN_PAL_FALSE == gWDIInitialized )
29019 {
29020 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
29021 "WDI API call before module is initialized - Fail request");
29022
29023 return WDI_STATUS_E_NOT_ALLOWED;
29024 }
29025
29026 /* Allocate memory separately for global variable carrying FW caps */
29027 fCapsStructSize = sizeof(tWlanFeatCaps);
29028 gpHostWlanFeatCaps = wpalMemoryAllocate(fCapsStructSize);
29029 if ( NULL == gpHostWlanFeatCaps )
29030 {
29031 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Arif Hussain9a5d5382013-11-17 22:05:35 -080029032 "Cannot allocate memory for host capability info");
Jeff Johnson295189b2012-06-20 16:38:30 -070029033 WDI_ASSERT(0);
29034 return WDI_STATUS_MEM_FAILURE;
29035 }
29036
29037 wpalMemoryZero(gpHostWlanFeatCaps, fCapsStructSize);
29038
29039 /*------------------------------------------------------------------------
29040 Fill in Event data and post to the Main FSM
29041 ------------------------------------------------------------------------*/
29042 FillAllFeatureCaps(gpHostWlanFeatCaps, supportEnabledFeatures,
29043 (sizeof(supportEnabledFeatures)/sizeof(supportEnabledFeatures[0])));
Madan Mohan Koyyalamudif8d3b3f2013-07-30 19:10:54 +053029044 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Arif Hussain9a5d5382013-11-17 22:05:35 -080029045 "Host caps %x %x %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -070029046 gpHostWlanFeatCaps->featCaps[0],
29047 gpHostWlanFeatCaps->featCaps[1],
29048 gpHostWlanFeatCaps->featCaps[2],
29049 gpHostWlanFeatCaps->featCaps[3]
29050 );
Madan Mohan Koyyalamudif8d3b3f2013-07-30 19:10:54 +053029051 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR, "Host Capability");
29052 WDI_TraceHostFWCapabilities(gpHostWlanFeatCaps->featCaps);
Jeff Johnson295189b2012-06-20 16:38:30 -070029053 wdiEventData.wdiRequest = WDI_FEATURE_CAPS_EXCHANGE_REQ;
29054 wdiEventData.pEventData = gpHostWlanFeatCaps;
29055 wdiEventData.uEventDataSize = fCapsStructSize;
29056 wdiEventData.pCBfnc = wdiFeatureCapsExchangeCb;
29057 wdiEventData.pUserData = pUserData;
29058
29059 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
29060}
29061
29062/**
Yathish9f22e662012-12-10 14:21:35 -080029063 @brief Disable Active mode offload in Host
29064
29065 @param void
29066 @see
29067 @return void
29068*/
29069void
29070WDI_disableCapablityFeature(wpt_uint8 feature_index)
29071{
29072 supportEnabledFeatures[feature_index] = 0;
29073 return;
29074}
29075
29076/**
Jeff Johnson295189b2012-06-20 16:38:30 -070029077 @brief Process Host-FW Capability Exchange Request function
29078
29079 @param pWDICtx: pointer to the WLAN DAL context
29080 pEventData: pointer to the event information structure
29081
29082 @see
29083 @return Result of the function call
29084*/
29085WDI_Status
29086WDI_ProcessFeatureCapsExchangeReq
29087(
29088 WDI_ControlBlockType* pWDICtx,
29089 WDI_EventInfoType* pEventData
29090)
29091{
29092 wpt_uint8* pSendBuffer = NULL;
29093 wpt_uint16 usDataOffset = 0;
29094 wpt_uint16 usSendSize = 0;
29095 wpt_uint16 usLen = 0;
29096
29097 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
29098
29099 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070029100 "%s", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070029101
29102 /*-------------------------------------------------------------------------
29103 Sanity check
29104 -------------------------------------------------------------------------*/
29105 /* Call back function is NULL since not required for cap exchange req */
29106 if (( NULL == pEventData ) ||
29107 ( NULL == (tWlanFeatCaps *)pEventData->pEventData))
29108 {
29109 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070029110 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070029111 WDI_ASSERT(0);
29112 return WDI_STATUS_E_FAILURE;
29113 }
29114
29115 /*-----------------------------------------------------------------------
29116 Get message buffer
29117 -----------------------------------------------------------------------*/
29118 usLen = sizeof(tWlanFeatCaps);
29119
29120 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
29121 WDI_FEATURE_CAPS_EXCHANGE_REQ,
29122 usLen,
29123 &pSendBuffer, &usDataOffset, &usSendSize))||
29124 ( usSendSize < (usDataOffset + usLen )))
29125 {
29126 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080029127 "Unable to get send buffer in feat caps exchange req %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070029128 pEventData, (tWlanFeatCaps *)pEventData->pEventData);
29129 WDI_ASSERT(0);
29130 return WDI_STATUS_E_FAILURE;
29131 }
29132
29133 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Arif Hussain9a5d5382013-11-17 22:05:35 -080029134 "Host Caps - %x %x %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -070029135 ((tWlanFeatCaps *)pEventData->pEventData)->featCaps[0],
29136 ((tWlanFeatCaps *)pEventData->pEventData)->featCaps[1],
29137 ((tWlanFeatCaps *)pEventData->pEventData)->featCaps[2],
29138 ((tWlanFeatCaps *)pEventData->pEventData)->featCaps[3]
29139 );
29140
29141 /* Copy host caps after the offset in the send buffer */
29142 wpalMemoryCopy( pSendBuffer+usDataOffset,
29143 (tWlanFeatCaps *)pEventData->pEventData,
29144 usLen);
29145
29146 /*-------------------------------------------------------------------------
29147 Send Start Request to HAL
29148 -------------------------------------------------------------------------*/
29149 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
29150 (WDI_StartRspCb)pEventData->pCBfnc,
29151 pEventData->pUserData, WDI_FEATURE_CAPS_EXCHANGE_RESP);
29152
29153}/*WDI_ProcessFeatureCapsExchangeReq*/
29154
29155/**
29156 @brief Process Host-FW Capability Exchange Response function
29157
29158 @param pWDICtx: pointer to the WLAN DAL context
29159 pEventData: pointer to the event information structure
29160
29161 @see
29162 @return Result of the function call
29163*/
29164WDI_Status
29165WDI_ProcessFeatureCapsExchangeRsp
29166(
29167 WDI_ControlBlockType* pWDICtx,
29168 WDI_EventInfoType* pEventData
29169)
29170{
29171 WDI_featureCapsExchangeCb wdiFeatureCapsExchangeCb;
29172 wpt_int32 fCapsStructSize;
29173 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
29174
29175 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070029176 "%s", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070029177
29178 /*-------------------------------------------------------------------------
29179 Sanity check
29180 -------------------------------------------------------------------------*/
29181 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
29182 ( NULL == pEventData->pEventData ))
29183 {
29184 /* It will go here when riva is old (doesn't understand this msg) and host is new */
29185 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070029186 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070029187 WDI_ASSERT(0);
29188 return WDI_STATUS_E_FAILURE;
29189 }
29190
29191 /* Allocate memory separately for global variable carrying FW caps */
29192 fCapsStructSize = sizeof(tWlanFeatCaps);
29193 gpFwWlanFeatCaps = wpalMemoryAllocate(fCapsStructSize);
29194 if ( NULL == gpFwWlanFeatCaps )
29195 {
29196 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Arif Hussain9a5d5382013-11-17 22:05:35 -080029197 "Cannot allocate memory for host capability info");
Jeff Johnson295189b2012-06-20 16:38:30 -070029198 WDI_ASSERT(0);
29199 return WDI_STATUS_MEM_FAILURE;
29200 }
29201
29202 /*-------------------------------------------------------------------------
29203 Unpack HAL Response Message - the header was already extracted by the
29204 main Response Handling procedure
29205 -------------------------------------------------------------------------*/
29206 /*-------------------------------------------------------------------------
29207 Extract response and send it to UMAC
29208 -------------------------------------------------------------------------*/
29209
29210 wpalMemoryCopy(gpFwWlanFeatCaps,(tWlanFeatCaps *) pEventData -> pEventData,
29211 fCapsStructSize);
Madan Mohan Koyyalamudif8d3b3f2013-07-30 19:10:54 +053029212 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Arif Hussain9a5d5382013-11-17 22:05:35 -080029213 "FW caps %x %x %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -070029214 gpFwWlanFeatCaps->featCaps[0],
29215 gpFwWlanFeatCaps->featCaps[1],
29216 gpFwWlanFeatCaps->featCaps[2],
29217 gpFwWlanFeatCaps->featCaps[3]
Madan Mohan Koyyalamudif8d3b3f2013-07-30 19:10:54 +053029218 );
29219 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR, "Firmware Capability");
29220 WDI_TraceHostFWCapabilities(gpFwWlanFeatCaps->featCaps);
Jeff Johnson295189b2012-06-20 16:38:30 -070029221 wdiFeatureCapsExchangeCb = (WDI_featureCapsExchangeCb) pWDICtx -> pfncRspCB;
29222
29223 /*Notify UMAC - there is no callback right now but can be used in future if reqd */
29224 if (wdiFeatureCapsExchangeCb != NULL)
29225 wdiFeatureCapsExchangeCb(NULL, NULL);
29226
29227 return WDI_STATUS_SUCCESS;
29228}
29229
Mohit Khanna4a70d262012-09-11 16:30:12 -070029230#ifdef WLAN_FEATURE_11AC
29231WDI_Status
29232WDI_ProcessUpdateVHTOpModeRsp
29233(
29234 WDI_ControlBlockType* pWDICtx,
29235 WDI_EventInfoType* pEventData
29236)
29237{
29238 WDI_UpdateVHTOpModeCb wdiVHTOpModeCb = NULL;
29239 WDI_Status wdiStatus;
29240 eHalStatus halStatus;
29241
29242 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
29243
29244 /*-------------------------------------------------------------------------
29245 Sanity check
29246 -------------------------------------------------------------------------*/
29247 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
29248 ( NULL == pEventData->pEventData))
29249 {
29250 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070029251 "%s: Invalid parameters", __func__);
Mohit Khanna4a70d262012-09-11 16:30:12 -070029252 WDI_ASSERT(0);
29253 return WDI_STATUS_E_FAILURE;
29254 }
29255 wdiVHTOpModeCb = (WDI_UpdateVHTOpModeCb)pEventData->pCBfnc;
29256
29257 /*-------------------------------------------------------------------------
29258 Extract response and send it to UMAC
29259 -------------------------------------------------------------------------*/
29260 halStatus = *((eHalStatus*)pEventData->pEventData);
29261 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
29262
29263 /*Notify UMAC*/
29264 wdiVHTOpModeCb( wdiStatus, pEventData->pUserData);
29265
29266 return WDI_STATUS_SUCCESS;
29267}
29268#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070029269/**
29270 @brief WDI_getHostWlanFeatCaps
29271 WDI API that returns whether the feature passed to it as enum value in
29272 "placeHolderInCapBitmap" is supported by Host or not. It uses WDI global
29273 variable storing host capability bitmap to find this. This can be used by
29274 other moduels to decide certain things like call different APIs based on
29275 whether a particular feature is supported.
29276
29277 @param
29278
29279 feat_enum_value: enum value for the feature as in placeHolderInCapBitmap in wlan_hal_msg.h.
29280
29281 @see
29282 @return
29283 0 - if the feature is NOT supported in host
29284 any non-zero value - if the feature is SUPPORTED in host.
29285*/
29286wpt_uint8 WDI_getHostWlanFeatCaps(wpt_uint8 feat_enum_value)
29287{
29288 wpt_uint8 featSupported = 0;
29289 if (gpHostWlanFeatCaps != NULL)
29290 {
29291 getFeatCaps(gpHostWlanFeatCaps, feat_enum_value, featSupported);
29292 }
29293 else
29294 {
Madan Mohan Koyyalamudi8b7f1e62012-10-05 14:56:51 -070029295 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi8bdd3112012-09-24 13:55:14 -070029296 "Caps exchange feature NOT supported. Return NOT SUPPORTED for %u feature", feat_enum_value);
Jeff Johnson295189b2012-06-20 16:38:30 -070029297 }
29298 return featSupported;
29299}
29300
29301/**
29302 @brief WDI_getFwWlanFeatCaps
29303 WDI API that returns whether the feature passed to it as enum value in
29304 "placeHolderInCapBitmap" is supported by FW or not. It uses WDI global
29305 variable storing host capability bitmap to find this. This can be used by
29306 other moduels to decide certain things like call different APIs based on
29307 whether a particular feature is supported.
29308
29309 @param
29310
29311 feat_enum_value: enum value for the feature as in placeHolderInCapBitmap
29312 in wlan_hal_msg.h.
29313
29314 @see
29315 @return
29316 0 - if the feature is NOT supported in FW
29317 any non-zero value - if the feature is SUPPORTED in FW.
29318*/
29319wpt_uint8 WDI_getFwWlanFeatCaps(wpt_uint8 feat_enum_value)
29320{
29321 wpt_uint8 featSupported = 0;
29322 if (gpFwWlanFeatCaps != NULL)
29323 {
29324 getFeatCaps(gpFwWlanFeatCaps, feat_enum_value, featSupported);
29325 }
29326 else
29327 {
Madan Mohan Koyyalamudi8b7f1e62012-10-05 14:56:51 -070029328 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi8bdd3112012-09-24 13:55:14 -070029329 "Caps exchange feature NOT supported. Return NOT SUPPORTED for %u feature", feat_enum_value);
Jeff Johnson295189b2012-06-20 16:38:30 -070029330 }
29331 return featSupported;
29332}
Mohit Khanna4a70d262012-09-11 16:30:12 -070029333
29334#ifdef WLAN_FEATURE_11AC
29335WDI_Status
29336WDI_ProcessUpdateVHTOpModeReq
29337(
29338 WDI_ControlBlockType* pWDICtx,
29339 WDI_EventInfoType* pEventData
29340)
29341{
29342 WDI_UpdateVHTOpMode* pwdiVHTOpModeParams = NULL;
29343 WDI_UpdateVHTOpModeCb wdiVHTOpModeCb = NULL;
29344 wpt_uint8* pSendBuffer = NULL;
29345 wpt_uint16 usDataOffset = 0;
29346 wpt_uint16 usSendSize = 0;
29347
29348 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
29349
29350 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070029351 "%s", __func__);
Mohit Khanna4a70d262012-09-11 16:30:12 -070029352
29353 /*-------------------------------------------------------------------------
29354 Sanity check
29355 -------------------------------------------------------------------------*/
29356 if (( NULL == pEventData ) ||
29357 ( NULL == (pwdiVHTOpModeParams = (WDI_UpdateVHTOpMode*)pEventData->pEventData)) ||
29358 ( NULL == (wdiVHTOpModeCb = (WDI_UpdateVHTOpModeCb)pEventData->pCBfnc)))
29359 {
29360 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070029361 "%s: Invalid parameters", __func__);
Mohit Khanna4a70d262012-09-11 16:30:12 -070029362 WDI_ASSERT(0);
29363 return WDI_STATUS_E_FAILURE;
29364 }
29365
29366 /*-----------------------------------------------------------------------
29367 Get message buffer
29368 -----------------------------------------------------------------------*/
29369 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_VHT_OP_MODE_REQ,
29370 sizeof(WDI_UpdateVHTOpMode),
29371 &pSendBuffer, &usDataOffset, &usSendSize))||
29372 ( usSendSize < (usDataOffset + sizeof(WDI_UpdateVHTOpMode) )))
29373 {
29374 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
29375 "Unable to get send buffer in update vht opMode req");
29376 WDI_ASSERT(0);
29377 return WDI_STATUS_E_FAILURE;
29378 }
29379
29380 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Arif Hussain9a5d5382013-11-17 22:05:35 -080029381 "pwdiVHTOpModeParams->opMode=%d, pwdiVHTOpModeParams->staId=%d", pwdiVHTOpModeParams->opMode, pwdiVHTOpModeParams->staId);
Mohit Khanna4a70d262012-09-11 16:30:12 -070029382
29383 wpalMemoryCopy( pSendBuffer+usDataOffset, pwdiVHTOpModeParams,
29384 sizeof(WDI_UpdateVHTOpMode));
29385
29386 /*-------------------------------------------------------------------------
29387 Send Start Request to HAL
29388 -------------------------------------------------------------------------*/
29389 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
29390 wdiVHTOpModeCb,
29391 pEventData->pUserData, WDI_UPDATE_VHT_OP_MODE_RESP);
29392
29393}
29394
29395WDI_Status
29396WDI_UpdateVHTOpModeReq
29397(
29398 WDI_UpdateVHTOpMode *pData,
29399 WDI_UpdateVHTOpModeCb wdiUpdateVHTOpModeCb,
29400 void* pUserData
29401)
29402{
29403 WDI_EventInfoType wdiEventData;
29404
29405 /*------------------------------------------------------------------------
29406 Sanity Check
29407 ------------------------------------------------------------------------*/
29408 if ( eWLAN_PAL_FALSE == gWDIInitialized )
29409 {
29410 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
29411 "WDI API call before module is initialized - Fail request");
29412
29413 return WDI_STATUS_E_NOT_ALLOWED;
29414 }
29415
29416 /*------------------------------------------------------------------------
29417 Fill in Event data and post to the Main FSM
29418 ------------------------------------------------------------------------*/
29419 wdiEventData.wdiRequest = WDI_UPDATE_VHT_OP_MODE_REQ;
29420 wdiEventData.pEventData = pData;
29421 wdiEventData.uEventDataSize = sizeof(WDI_UpdateVHTOpMode);
29422 wdiEventData.pCBfnc = wdiUpdateVHTOpModeCb;
29423 wdiEventData.pUserData = pUserData;
29424
29425 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Arif Hussain9a5d5382013-11-17 22:05:35 -080029426 "pData->opMode=%d, pData->staId=%d", pData->opMode, pData->staId);
Mohit Khanna4a70d262012-09-11 16:30:12 -070029427
29428 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
29429
29430}
29431#endif
Madan Mohan Koyyalamudi8cb53982012-09-28 14:34:47 -070029432
29433/**
29434 @brief WDI_TransportChannelDebug -
29435 Display DXE Channel debugging information
29436 User may request to display DXE channel snapshot
29437 Or if host driver detects any abnormal stcuk may display
Madan Mohan Koyyalamudi8b7f1e62012-10-05 14:56:51 -070029438
Jeff Johnsonb88db982012-12-10 13:34:59 -080029439 @param displaySnapshot : Display DXE snapshot option
Mihir Shete40a55652014-03-02 14:14:47 +053029440 @param debugFlags : Enable stall detect features
29441 defined by WPAL_DeviceDebugFlags
29442 These features may effect
29443 data performance.
Madan Mohan Koyyalamudi8cb53982012-09-28 14:34:47 -070029444 @see
29445 @return none
29446*/
29447void WDI_TransportChannelDebug
29448(
29449 wpt_boolean displaySnapshot,
Mihir Shete40a55652014-03-02 14:14:47 +053029450 wpt_uint8 debugFlags
Madan Mohan Koyyalamudi8cb53982012-09-28 14:34:47 -070029451)
29452{
Mihir Shete40a55652014-03-02 14:14:47 +053029453 WDTS_ChannelDebug(displaySnapshot, debugFlags);
Madan Mohan Koyyalamudi8cb53982012-09-28 14:34:47 -070029454 return;
Madan Mohan Koyyalamudi3352adb2012-09-28 14:57:24 -070029455}
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -070029456/**
29457 @brief WDI_SsrTimerCB
29458 Callback function for SSR timer, if this is called then the graceful
29459 shutdown for Riva did not happen.
29460
29461 @param pUserData : user data to timer
29462
29463 @see
29464 @return none
29465*/
29466void
29467WDI_SsrTimerCB
29468(
29469 void *pUserData
29470)
29471{
29472 WDI_ControlBlockType* pWDICtx = (WDI_ControlBlockType*)pUserData;
29473 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
29474
29475 if (NULL == pWDICtx )
29476 {
29477 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070029478 "%s: Invalid parameters", __func__);
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -070029479 WDI_ASSERT(0);
29480 return;
29481 }
29482 wpalRivaSubystemRestart();
29483
29484 return;
29485
29486}/*WDI_SsrTimerCB*/
Gopichand Nakkalae620d5a2013-04-26 05:45:57 -070029487
29488/**
29489 @brief WDI_SetEnableSSR -
29490 This API is called to enable/disable SSR on WDI timeout.
29491
29492 @param enableSSR : enable/disable SSR
29493
29494 @see
29495 @return none
29496*/
29497void WDI_SetEnableSSR(wpt_boolean enableSSR)
29498{
29499 gWDICb.bEnableSSR = enableSSR;
29500}
Leo Chang9056f462013-08-01 19:21:11 -070029501
29502
29503#ifdef FEATURE_WLAN_LPHB
29504/**
Leo Changd9df8aa2013-09-26 13:32:26 -070029505 @brief WDI_ProcessLphbInd -
Leo Chang9056f462013-08-01 19:21:11 -070029506 This function will be invoked when FW detects low power
29507 heart beat failure
29508
29509 @param pWDICtx : wdi context
29510 pEventData : indication data
Leo Chang9056f462013-08-01 19:21:11 -070029511 @see
29512 @return Result of the function call
29513*/
29514WDI_Status
Leo Changd9df8aa2013-09-26 13:32:26 -070029515WDI_ProcessLphbInd
Leo Chang9056f462013-08-01 19:21:11 -070029516(
29517 WDI_ControlBlockType* pWDICtx,
29518 WDI_EventInfoType* pEventData
29519)
29520{
29521 WDI_LowLevelIndType wdiInd;
Leo Changd9df8aa2013-09-26 13:32:26 -070029522 tHalLowPowerHeartBeatIndParam lphbIndicationParam;
Leo Chang9056f462013-08-01 19:21:11 -070029523 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
29524
29525 /*-------------------------------------------------------------------------
29526 Sanity check
29527 -------------------------------------------------------------------------*/
29528 if ((NULL == pWDICtx) || (NULL == pEventData) ||
29529 (NULL == pEventData->pEventData))
29530 {
29531 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
29532 "%s: Invalid parameters", __func__);
29533 WDI_ASSERT(0);
29534 return WDI_STATUS_E_FAILURE;
29535 }
29536
29537 /*-------------------------------------------------------------------------
29538 Extract indication and send it to UMAC
29539 -------------------------------------------------------------------------*/
Leo Changd9df8aa2013-09-26 13:32:26 -070029540 wpalMemoryCopy(&lphbIndicationParam,
29541 pEventData->pEventData,
29542 sizeof(tHalLowPowerHeartBeatIndParam));
Leo Chang9056f462013-08-01 19:21:11 -070029543
Leo Changd9df8aa2013-09-26 13:32:26 -070029544 wdiInd.wdiIndicationType = WDI_LPHB_IND;
Leo Chang9056f462013-08-01 19:21:11 -070029545 wdiInd.wdiIndicationData.wdiLPHBTimeoutInd.bssIdx =
Leo Changd9df8aa2013-09-26 13:32:26 -070029546 lphbIndicationParam.bssIdx;
Leo Chang9056f462013-08-01 19:21:11 -070029547 wdiInd.wdiIndicationData.wdiLPHBTimeoutInd.sessionIdx =
Leo Changd9df8aa2013-09-26 13:32:26 -070029548 lphbIndicationParam.sessionIdx;
Leo Chang9056f462013-08-01 19:21:11 -070029549 wdiInd.wdiIndicationData.wdiLPHBTimeoutInd.protocolType =
Leo Changd9df8aa2013-09-26 13:32:26 -070029550 lphbIndicationParam.protocolType;
Leo Chang9056f462013-08-01 19:21:11 -070029551 wdiInd.wdiIndicationData.wdiLPHBTimeoutInd.eventReason =
Leo Changd9df8aa2013-09-26 13:32:26 -070029552 lphbIndicationParam.eventReason;
Leo Chang9056f462013-08-01 19:21:11 -070029553 /*Notify UMAC*/
29554 if (pWDICtx->wdiLowLevelIndCB)
29555 {
29556 pWDICtx->wdiLowLevelIndCB(&wdiInd, pWDICtx->pIndUserData);
29557 }
29558
29559 return WDI_STATUS_SUCCESS;
29560}
29561
29562/**
29563 @brief WDI_ProcessLphbCfgRsp -
29564 LPHB configuration response from FW
29565
29566 @param pWDICtx : wdi context
29567 pEventData : indication data
29568
29569 @see
29570 @return Result of the function call
29571*/
29572WDI_Status WDI_ProcessLphbCfgRsp
29573(
29574 WDI_ControlBlockType* pWDICtx,
29575 WDI_EventInfoType* pEventData
29576)
29577{
29578 WDI_Status wdiStatus;
29579 eHalStatus halStatus;
29580 WDI_LphbCfgCb wdiLphbCfgCb;
29581 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
29582
29583 /*-------------------------------------------------------------------------
29584 Sanity check
29585 -------------------------------------------------------------------------*/
29586 if ((NULL == pWDICtx) || (NULL == pEventData) ||
29587 (NULL == pEventData->pEventData))
29588 {
29589 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
29590 "%s: Invalid parameters", __func__);
29591 WDI_ASSERT(0);
29592 return WDI_STATUS_E_FAILURE;
29593 }
29594
29595 wdiLphbCfgCb = (WDI_LphbCfgCb)pWDICtx->pfncRspCB;
29596
29597 /*-------------------------------------------------------------------------
29598 Extract response and send it to UMAC
29599 -------------------------------------------------------------------------*/
29600 halStatus = *((eHalStatus*)pEventData->pEventData);
29601 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
29602
29603 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
29604 "LPHB Cfg Rsp Return status %d", wdiStatus);
29605 /*Notify UMAC*/
29606 if (NULL != wdiLphbCfgCb)
29607 {
29608 wdiLphbCfgCb(wdiStatus, pWDICtx->pRspCBUserData);
29609 }
29610
29611 return WDI_STATUS_SUCCESS;
29612}
29613
29614/**
29615 @brief WDI_ProcessLPHBConfReq -
29616 LPHB configuration request to FW
29617
29618 @param pWDICtx : wdi context
29619 pEventData : indication data
29620
29621 @see
29622 @return none
29623*/
29624WDI_Status WDI_ProcessLPHBConfReq
29625(
29626 WDI_ControlBlockType* pWDICtx,
29627 WDI_EventInfoType* pEventData
29628)
29629{
29630 WDI_LPHBReq *pLphbReqParams;
29631 WDI_Status wdiStatus;
29632 wpt_uint8* pSendBuffer = NULL;
29633 wpt_uint16 usDataOffset = 0;
29634 wpt_uint16 usSendSize = 0;
29635 tHalLowPowerHeartBeatReq *halLphbReqRarams;
29636 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
29637
29638 /*-------------------------------------------------------------------------
29639 Sanity check
29640 -------------------------------------------------------------------------*/
29641 if ((NULL == pEventData) || (NULL == pEventData->pEventData))
29642 {
29643 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
29644 "%s: Invalid parameters in Suspend ind",__func__);
29645 WDI_ASSERT(0);
29646 return WDI_STATUS_E_FAILURE;
29647 }
29648
29649 pLphbReqParams = (WDI_LPHBReq *)pEventData->pEventData;
29650
29651 /*-----------------------------------------------------------------------
29652 Get message buffer
29653 -----------------------------------------------------------------------*/
29654 if ((WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(pWDICtx,
29655 WDI_LPHB_CFG_REQ,
29656 sizeof(tHalLowPowerHeartBeatReqMsg),
29657 &pSendBuffer, &usDataOffset, &usSendSize))||
29658 (usSendSize < (usDataOffset + sizeof(tHalLowPowerHeartBeatReqMsg))))
29659 {
29660 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
29661 "Unable to get send buffer in LPHB Ind ");
29662 WDI_ASSERT(0);
29663 return WDI_STATUS_E_FAILURE;
29664 }
29665
29666 halLphbReqRarams = (tHalLowPowerHeartBeatReq *)(pSendBuffer + usDataOffset);
29667 wpalMemoryZero(halLphbReqRarams, sizeof(tHalLowPowerHeartBeatReq));
29668
29669 halLphbReqRarams->lowPowerHeartBeatCmdType =
29670 (tANI_U16)(++pLphbReqParams->cmd);
29671 switch ((tANI_U16)pLphbReqParams->cmd)
29672 {
29673 case WDI_LPHB_SET_EN_PARAMS_INDID:
29674 halLphbReqRarams->sessionIdx =
29675 pLphbReqParams->params.lphbEnableReq.session;
29676 halLphbReqRarams->options.control.heartBeatEnable =
29677 pLphbReqParams->params.lphbEnableReq.enable;
29678 halLphbReqRarams->options.control.heartBeatType =
29679 pLphbReqParams->params.lphbEnableReq.item;
29680 break;
29681
29682 case WDI_LPHB_SET_TCP_PARAMS_INDID:
29683 halLphbReqRarams->sessionIdx =
29684 pLphbReqParams->params.lphbTcpParamReq.session;
29685 halLphbReqRarams->options.tcpParams.timeOutSec =
29686 pLphbReqParams->params.lphbTcpParamReq.timeout;
29687 wpalMemoryCopy(&halLphbReqRarams->options.tcpParams.hostIpv4Addr,
29688 &pLphbReqParams->params.lphbTcpParamReq.dev_ip,
29689 sizeof(v_U32_t));
29690 wpalMemoryCopy(&halLphbReqRarams->options.tcpParams.destIpv4Addr,
29691 &pLphbReqParams->params.lphbTcpParamReq.srv_ip,
29692 sizeof(v_U32_t));
29693
29694 wpalMemoryCopy(halLphbReqRarams->options.tcpParams.gatewayMacAddr,
29695 pLphbReqParams->params.lphbTcpParamReq.gateway_mac,
29696 WDI_MAC_ADDR_LEN);
29697
29698 halLphbReqRarams->options.tcpParams.hostPort =
29699 pLphbReqParams->params.lphbTcpParamReq.src_port;
29700 halLphbReqRarams->options.tcpParams.destPort =
29701 pLphbReqParams->params.lphbTcpParamReq.dst_port;
Leo Changd9df8aa2013-09-26 13:32:26 -070029702 halLphbReqRarams->options.tcpParams.timePeriodSec =
29703 pLphbReqParams->params.lphbTcpParamReq.timePeriodSec;
29704 halLphbReqRarams->options.tcpParams.tcpSn =
29705 pLphbReqParams->params.lphbTcpParamReq.tcpSn;
Leo Chang9056f462013-08-01 19:21:11 -070029706 break;
29707
29708 case WDI_LPHB_SET_TCP_PKT_FILTER_INDID:
29709 halLphbReqRarams->sessionIdx =
29710 pLphbReqParams->params.lphbTcpFilterReq.session;
29711 halLphbReqRarams->options.tcpUdpFilter.offset =
29712 pLphbReqParams->params.lphbTcpFilterReq.offset;
29713 halLphbReqRarams->options.tcpUdpFilter.filterLength =
29714 pLphbReqParams->params.lphbTcpFilterReq.length;
29715 wpalMemoryCopy(halLphbReqRarams->options.tcpUdpFilter.filter,
29716 pLphbReqParams->params.lphbTcpFilterReq.filter,
29717 WDI_LPHB_FILTER_LEN);
29718 break;
29719
29720 case WDI_LPHB_SET_UDP_PARAMS_INDID:
29721 halLphbReqRarams->sessionIdx =
29722 pLphbReqParams->params.lphbUdpParamReq.session;
29723 halLphbReqRarams->options.udpParams.timeOutSec =
29724 pLphbReqParams->params.lphbUdpParamReq.timeout;
29725 halLphbReqRarams->options.udpParams.timePeriodSec =
29726 pLphbReqParams->params.lphbUdpParamReq.interval;
29727 wpalMemoryCopy(&halLphbReqRarams->options.udpParams.hostIpv4Addr,
29728 &pLphbReqParams->params.lphbUdpParamReq.dev_ip,
29729 sizeof(v_U32_t));
29730 wpalMemoryCopy(&halLphbReqRarams->options.udpParams.destIpv4Addr,
29731 &pLphbReqParams->params.lphbUdpParamReq.srv_ip,
29732 sizeof(v_U32_t));
29733
29734 wpalMemoryCopy(halLphbReqRarams->options.udpParams.gatewayMacAddr,
29735 pLphbReqParams->params.lphbUdpParamReq.gateway_mac,
29736 WDI_MAC_ADDR_LEN);
29737
29738 halLphbReqRarams->options.udpParams.hostPort =
29739 pLphbReqParams->params.lphbUdpParamReq.src_port;
29740 halLphbReqRarams->options.udpParams.destPort =
29741 pLphbReqParams->params.lphbUdpParamReq.dst_port;
29742 break;
29743
29744 case WDI_LPHB_SET_UDP_PKT_FILTER_INDID:
29745 halLphbReqRarams->sessionIdx =
29746 pLphbReqParams->params.lphbUdpFilterReq.session;
29747 halLphbReqRarams->options.tcpUdpFilter.offset =
29748 pLphbReqParams->params.lphbUdpFilterReq.offset;
29749 halLphbReqRarams->options.tcpUdpFilter.filterLength =
29750 pLphbReqParams->params.lphbUdpFilterReq.length;
29751 wpalMemoryCopy(halLphbReqRarams->options.tcpUdpFilter.filter,
29752 pLphbReqParams->params.lphbUdpFilterReq.filter,
29753 WDI_LPHB_FILTER_LEN);
29754 break;
29755
29756 case WDI_LPHB_SET_NETWORK_INFO_INDID:
29757 /* NA */
29758 break;
29759
29760 default:
29761 break;
29762 }
29763
29764 /*-------------------------------------------------------------------------
29765 Send Suspend Request to HAL
29766 -------------------------------------------------------------------------*/
29767 pWDICtx->pfncRspCB = pEventData->pCBfnc;
29768 pWDICtx->pReqStatusUserData = pEventData->pUserData;
29769
29770 wdiStatus = WDI_SendMsg(pWDICtx, pSendBuffer,
29771 usSendSize, pWDICtx->pfncRspCB,
29772 pWDICtx->pReqStatusUserData,
29773 WDI_LPHB_CFG_RESP);
29774
29775 return wdiStatus;
29776}
29777
29778/**
29779 @brief WDI_LPHBConfReq -
29780 LPHB configuration request API
29781
29782 @param lphbconfParam : configuration parameter
29783 usrData : client context
29784 lphbCfgCb : callback function pointer
29785
29786 @see
29787 @return Success or fail status code
29788*/
29789WDI_Status WDI_LPHBConfReq(void *lphbconfParam,
29790 void *usrData, WDI_LphbCfgCb lphbCfgCb)
29791{
29792 WDI_EventInfoType wdiEventData;
29793
29794 /*------------------------------------------------------------------------
29795 Sanity Check
29796 ------------------------------------------------------------------------*/
29797 if (eWLAN_PAL_FALSE == gWDIInitialized)
29798 {
29799 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
29800 "WDI API call before module is initialized - Fail request");
29801
29802 return WDI_STATUS_E_NOT_ALLOWED;
29803 }
29804
29805 /*------------------------------------------------------------------------
29806 Fill in Event data and post to the Main FSM
29807 ------------------------------------------------------------------------*/
29808 wdiEventData.wdiRequest = WDI_LPHB_CFG_REQ;
29809 wdiEventData.pEventData = lphbconfParam;
29810 wdiEventData.uEventDataSize = sizeof(WDI_LPHBReq);
29811 wdiEventData.pCBfnc = lphbCfgCb;
29812 wdiEventData.pUserData = usrData;
29813
29814 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
29815}
29816#endif /* FEATURE_WLAN_LPHB */
29817
Ravi Joshid2ca7c42013-07-23 08:37:49 -070029818/**
29819 @brief WDI_ProcessIbssPeerInactivityInd
29820 Process peer inactivity indication coming from HAL
29821
29822 @param pWDICtx: pointer to the WLAN DAL context
29823 pEventData: pointer to the event information structure
29824 @see
29825 @return Result of the function call
29826*/
29827WDI_Status
29828WDI_ProcessIbssPeerInactivityInd
29829(
29830 WDI_ControlBlockType* pWDICtx,
29831 WDI_EventInfoType* pEventData
29832)
29833{
29834 WDI_LowLevelIndType wdiInd;
29835 tIbssPeerInactivityIndMsg halIbssIndMsg;
29836
29837 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
29838
29839 /*-------------------------------------------------------------------------
29840 Sanity check
29841 -------------------------------------------------------------------------*/
29842 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
29843 ( NULL == pEventData->pEventData ))
29844 {
29845 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
29846 "%s: Invalid parameters", __func__);
29847 WDI_ASSERT( 0 );
29848 return WDI_STATUS_E_FAILURE;
29849 }
29850
29851 /*-------------------------------------------------------------------------
29852 Extract indication and send it to UMAC
29853 -------------------------------------------------------------------------*/
29854 wpalMemoryCopy( &halIbssIndMsg.ibssPeerInactivityIndParams,
29855 pEventData->pEventData,
29856 sizeof(halIbssIndMsg.ibssPeerInactivityIndParams) );
29857
29858 /*Fill in the indication parameters*/
29859 wdiInd.wdiIndicationType = WDI_IBSS_PEER_INACTIVITY_IND;
29860
29861 wdiInd.wdiIndicationData.wdiIbssPeerInactivityInd.bssIdx
29862 = halIbssIndMsg.ibssPeerInactivityIndParams.bssIdx;
29863
29864 wdiInd.wdiIndicationData.wdiIbssPeerInactivityInd.staIdx
29865 = halIbssIndMsg.ibssPeerInactivityIndParams.staIdx;
29866
29867 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiIbssPeerInactivityInd.staMacAddr,
29868 halIbssIndMsg.ibssPeerInactivityIndParams.staAddr,
29869 sizeof(tSirMacAddr));
29870
29871 /*Notify UMAC*/
29872 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
29873
29874 return WDI_STATUS_SUCCESS;
29875
29876} /*WDI_ProcessIbssPeerInactivityInd*/
Rajeev79dbe4c2013-10-05 11:03:42 +053029877
Chittajit Mitraf5413a42013-10-18 14:20:08 -070029878/**
29879*@brief WDI_RateUpdateInd will be called when the upper MAC
29880 requests the device to set rates.
Rajeev79dbe4c2013-10-05 11:03:42 +053029881
Chittajit Mitraf5413a42013-10-18 14:20:08 -070029882
29883 @param wdiRateUpdateIndParams:
29884
29885
29886 @see
29887 @return Result of the function call
29888*/
29889WDI_Status
29890WDI_RateUpdateInd
29891(
29892 WDI_RateUpdateIndParams *wdiRateUpdateIndParams
29893)
29894{
29895 WDI_EventInfoType wdiEventData;
29896 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
29897
29898 /*------------------------------------------------------------------------
29899 Sanity Check
29900 ------------------------------------------------------------------------*/
29901 if ( eWLAN_PAL_FALSE == gWDIInitialized )
29902 {
29903 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
29904 "WDI API call before module is initialized - Fail request");
29905
29906 return WDI_STATUS_E_NOT_ALLOWED;
29907 }
29908
29909 /*------------------------------------------------------------------------
29910 Fill in Event data and post to the Main FSM
29911 ------------------------------------------------------------------------*/
29912 wdiEventData.wdiRequest = WDI_RATE_UPDATE_IND;
29913 wdiEventData.pEventData = wdiRateUpdateIndParams;
29914 wdiEventData.uEventDataSize = sizeof(WDI_RateUpdateIndParams);
29915 wdiEventData.pCBfnc = NULL;
29916 wdiEventData.pUserData = NULL;
29917
29918 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
29919
29920}/* WDI_RateUpdateInd */
29921
29922/**
29923 @brief Process Rate Update Indication and post it to HAL
29924
29925 @param pWDICtx: pointer to the WLAN DAL context
29926 pEventData: pointer to the event information structure
29927
29928 @see
29929 @return Result of the function call
29930*/
29931WDI_Status
29932WDI_ProcessRateUpdateInd
29933(
29934 WDI_ControlBlockType* pWDICtx,
29935 WDI_EventInfoType* pEventData
29936)
29937{
29938 wpt_uint8* pSendBuffer = NULL;
29939 wpt_uint16 usDataOffset = 0;
29940 wpt_uint16 usSendSize = 0;
29941 WDI_RateUpdateIndParams *pwdiRateUpdateInd = NULL;
29942 tHalRateUpdateInd *pRateUpdateInd;
29943 WDI_Status wdiStatus;
29944
29945 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
29946
29947 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
29948 "%s", __func__);
29949
29950 /*-------------------------------------------------------------------------
29951 Sanity check
29952 -------------------------------------------------------------------------*/
29953 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
29954 {
29955 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
29956 "%s: Invalid parameters", __func__);
29957 WDI_ASSERT(0);
29958 return WDI_STATUS_E_FAILURE;
29959 }
29960 pwdiRateUpdateInd = (WDI_RateUpdateIndParams *)pEventData->pEventData;
29961 /*-----------------------------------------------------------------------
29962 Get message buffer
29963 -----------------------------------------------------------------------*/
29964
29965 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
29966 WDI_RATE_UPDATE_IND,
29967 sizeof(tHalRateUpdateParams),
29968 &pSendBuffer, &usDataOffset, &usSendSize))||
29969 ( usSendSize < (usDataOffset +
29970 sizeof(tHalRateUpdateParams) )))
29971 {
29972 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
29973 "Unable to get send buffer in Rate Update Indication %p ",
29974 pEventData);
29975 WDI_ASSERT(0);
29976 return WDI_STATUS_E_FAILURE;
29977 }
29978
29979 pRateUpdateInd = (tHalRateUpdateInd *)pSendBuffer;
29980
29981 /* Copy the bssid */
29982 wpalMemoryCopy(pRateUpdateInd->halRateUpdateParams.bssid,
29983 pwdiRateUpdateInd->bssid, WDI_MAC_ADDR_LEN);
29984
29985 /* Copy the tx flags */
29986 pRateUpdateInd->halRateUpdateParams.ucastDataRateTxFlag =
29987 pwdiRateUpdateInd->ucastDataRateTxFlag;
29988 pRateUpdateInd->halRateUpdateParams.reliableMcastDataRateTxFlag =
29989 pwdiRateUpdateInd->reliableMcastDataRateTxFlag;
29990 pRateUpdateInd->halRateUpdateParams.mcastDataRate24GHzTxFlag =
29991 pwdiRateUpdateInd->mcastDataRate24GHzTxFlag;
29992 pRateUpdateInd->halRateUpdateParams.mcastDataRate5GHzTxFlag =
29993 pwdiRateUpdateInd->mcastDataRate5GHzTxFlag;
29994
29995 /* Copy the tx rates */
29996 pRateUpdateInd->halRateUpdateParams.ucastDataRate =
29997 pwdiRateUpdateInd->ucastDataRate;
29998 pRateUpdateInd->halRateUpdateParams.reliableMcastDataRate =
29999 pwdiRateUpdateInd->reliableMcastDataRate;
30000 pRateUpdateInd->halRateUpdateParams.mcastDataRate24GHz =
30001 pwdiRateUpdateInd->mcastDataRate24GHz;
30002 pRateUpdateInd->halRateUpdateParams.mcastDataRate5GHz =
30003 pwdiRateUpdateInd->mcastDataRate5GHz;
30004
30005 /*-------------------------------------------------------------------------
30006 Send Rate Update Indication to HAL
30007 -------------------------------------------------------------------------*/
30008 pWDICtx->wdiReqStatusCB = pwdiRateUpdateInd->wdiReqStatusCB;
30009 pWDICtx->pReqStatusUserData = pwdiRateUpdateInd->pUserData;
30010
30011 wdiStatus = WDI_SendIndication(pWDICtx, pSendBuffer, usSendSize);
30012
30013 return (wdiStatus != WDI_STATUS_SUCCESS) ?
30014 wdiStatus : WDI_STATUS_SUCCESS_SYNC;
30015
30016} /* WDI_ProcessRateUpdateInd */
30017
30018#ifdef FEATURE_WLAN_BATCH_SCAN
Rajeev79dbe4c2013-10-05 11:03:42 +053030019/**
30020 @brief Process stop batch indication from WDA
30021
30022 @param pWDICtx: pointer to the WLAN DAL context
30023 pEventData: pointer to the event information structure
30024
30025 @see
30026 @return Result of the function call
30027*/
30028WDI_Status
30029WDI_ProcessStopBatchScanInd
30030(
30031 WDI_ControlBlockType* pWDICtx,
30032 WDI_EventInfoType* pEventData
30033)
30034{
30035 wpt_uint8* pSendBuffer = NULL;
30036 wpt_uint16 usDataOffset = 0;
30037 wpt_uint16 usSendSize = 0;
30038 WDI_Status wdiStatus;
30039 tHalBatchScanStopIndParam *pHalInd = NULL;
30040 WDI_StopBatchScanIndType *pWdiInd = NULL;
30041
30042
30043 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
30044
30045 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
30046 "%s", __func__);
30047
30048 /*-------------------------------------------------------------------------
30049 Sanity check
30050 -------------------------------------------------------------------------*/
30051
30052 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
30053 {
30054 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
30055 "%s: Invalid parameters", __func__);
30056 WDI_ASSERT(0);
30057 return WDI_STATUS_E_FAILURE;
30058 }
30059 pWdiInd = (WDI_StopBatchScanIndType *)pEventData->pEventData;
30060 /*-----------------------------------------------------------------------
30061 Get message buffer
30062 -----------------------------------------------------------------------*/
30063
30064 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
30065 WDI_STOP_BATCH_SCAN_IND,
30066 sizeof(tHalBatchScanStopIndParam),
30067 &pSendBuffer, &usDataOffset, &usSendSize))||
30068 ( usSendSize < (usDataOffset + sizeof(tHalBatchScanStopIndParam))))
30069 {
30070 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
30071 "Unable to get send buffer in stop batch scan ind %p ",
30072 pEventData);
30073 WDI_ASSERT(0);
30074 return WDI_STATUS_E_FAILURE;
30075 }
30076
30077 pHalInd = (tHalBatchScanStopIndParam *)(pSendBuffer + usDataOffset);
30078 pHalInd->param = pWdiInd->param;
30079
30080 pWDICtx->pReqStatusUserData = NULL;
30081 pWDICtx->pfncRspCB = NULL;
30082 /*-------------------------------------------------------------------------
30083 Send Stop batch scan indication to HAL
30084 -------------------------------------------------------------------------*/
30085 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
30086 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus:WDI_STATUS_SUCCESS_SYNC;
30087}
30088
30089/**
30090 @brief This API is called to trigger batch scan results from FW
30091
30092 @param pWDICtx: pointer to the WLAN DAL context
30093 pEventData: pointer to the event information structure
30094
30095 @see
30096 @return Result of the function call
30097*/
30098WDI_Status
30099WDI_ProcessTriggerBatchScanResultInd
30100(
30101 WDI_ControlBlockType* pWDICtx,
30102 WDI_EventInfoType* pEventData
30103)
30104{
30105 WDI_Status wdiStatus;
30106 wpt_uint8* pSendBuffer = NULL;
30107 wpt_uint16 usDataOffset = 0;
30108 wpt_uint16 usSendSize = 0;
30109 tHalBatchScanTriggerResultParam *pHalInd = NULL;
30110 WDI_TriggerBatchScanResultIndType *pWdiInd = NULL;
30111
30112
30113 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
30114
30115 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
30116 "%s", __func__);
30117
30118 /*-------------------------------------------------------------------------
30119 Sanity check
30120 -------------------------------------------------------------------------*/
30121
30122 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
30123 {
30124 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
30125 "%s: Invalid parameters", __func__);
30126 WDI_ASSERT(0);
30127 return WDI_STATUS_E_FAILURE;
30128 }
30129 pWdiInd = (WDI_TriggerBatchScanResultIndType *)pEventData->pEventData;
30130 /*-----------------------------------------------------------------------
30131 Get message buffer
30132 -----------------------------------------------------------------------*/
30133
30134 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
30135 WDI_TRIGGER_BATCH_SCAN_RESULT_IND,
30136 sizeof(tHalBatchScanTriggerResultParam),
30137 &pSendBuffer, &usDataOffset, &usSendSize))||
30138 ( usSendSize < (usDataOffset + sizeof(tHalBatchScanTriggerResultParam))))
30139 {
30140 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
30141 "Unable to get send buffer in stop batch scan ind %p ",
30142 pEventData);
30143 WDI_ASSERT(0);
30144 return WDI_STATUS_E_FAILURE;
30145 }
30146
30147 pHalInd = (tHalBatchScanTriggerResultParam *)(pSendBuffer + usDataOffset);
30148 pHalInd->param = pWdiInd->param;
30149
30150 pWDICtx->pReqStatusUserData = NULL;
30151 pWDICtx->pfncRspCB = NULL;
30152 /*-------------------------------------------------------------------------
30153 Send trigger batch scan result indication to HAL
30154 -------------------------------------------------------------------------*/
30155 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
30156 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus:WDI_STATUS_SUCCESS_SYNC;
30157}
30158
30159
30160/**
30161 @brief Process set batch scan response from FW
30162
30163 @param pWDICtx: pointer to the WLAN DAL context
30164 pEventData: pointer to the event information structure
30165
30166 @see
30167 @return Result of the function call
30168*/
30169WDI_Status
30170WDI_ProcessSetBatchScanRsp
30171(
30172 WDI_ControlBlockType* pWDICtx,
30173 WDI_EventInfoType* pEventData
30174)
30175{
30176 WDI_SetBatchScanCb wdiSetBatchScanCb;
30177 WDI_SetBatchScanRspType *pSetBatchScanRsp;
30178
30179 tHalBatchScanSetRspParam *pHalSetBatchScanRsp;
30180 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
30181
30182 /*sanity check*/
30183 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
30184 ( NULL == pEventData->pEventData))
30185 {
30186 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
30187 "%s: Invalid parameters", __func__);
30188 WDI_ASSERT(0);
30189 return WDI_STATUS_E_FAILURE;
30190 }
30191
30192 wdiSetBatchScanCb = (WDI_SetBatchScanCb)pWDICtx->pfncRspCB;
30193 if ( NULL == wdiSetBatchScanCb)
30194 {
30195 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
30196 "%s: call back function is NULL", __func__);
30197 WDI_ASSERT(0);
30198 return WDI_STATUS_E_FAILURE;
30199 }
30200
30201 pSetBatchScanRsp = wpalMemoryAllocate(sizeof(WDI_SetBatchScanRspType));
30202
30203 if (NULL == pSetBatchScanRsp)
30204 {
30205 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080030206 "Failed to allocate memory in set batch scan response %p %p %p ",
Rajeev79dbe4c2013-10-05 11:03:42 +053030207 pWDICtx, pEventData, pEventData->pEventData);
30208 WDI_ASSERT(0);
30209 return WDI_STATUS_E_FAILURE;
30210 }
30211
Sunil Duttbd736ed2014-05-26 21:19:41 +053030212 /* extract response and send it to UMAC */
Rajeev79dbe4c2013-10-05 11:03:42 +053030213 pHalSetBatchScanRsp = (tHalBatchScanSetRspParam *)pEventData->pEventData;
30214
30215 pSetBatchScanRsp->nScansToBatch = pHalSetBatchScanRsp->supportedMscan;
30216
Sunil Duttbd736ed2014-05-26 21:19:41 +053030217 /* Notify UMAC */
Rajeev79dbe4c2013-10-05 11:03:42 +053030218 wdiSetBatchScanCb(pSetBatchScanRsp, pWDICtx->pRspCBUserData);
30219
30220 wpalMemoryFree(pSetBatchScanRsp);
30221
30222 return WDI_STATUS_SUCCESS;
Sunil Duttbd736ed2014-05-26 21:19:41 +053030223}/* WDI_ProcessSetBatchScanRsp */
Rajeev79dbe4c2013-10-05 11:03:42 +053030224
30225/**
30226 @brief Process batch scan result indication from FW
30227
30228 @param pWDICtx: pointer to the WLAN DAL context
30229 pEventData: pointer to the event information structure
30230
30231 @see
30232 @return Result of the function call
30233*/
30234WDI_Status
30235WDI_ProcessBatchScanResultInd
30236(
30237 WDI_ControlBlockType* pWDICtx,
30238 WDI_EventInfoType* pEventData
30239)
30240{
30241 void *pBatchScanResultInd;
30242 WDI_LowLevelIndType wdiInd;
30243 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
30244
Sunil Duttbd736ed2014-05-26 21:19:41 +053030245 /* sanity check */
Rajeev79dbe4c2013-10-05 11:03:42 +053030246 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
30247 ( NULL == pEventData->pEventData))
30248 {
30249 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
30250 "%s: Invalid parameters", __func__);
30251 WDI_ASSERT(0);
30252 return WDI_STATUS_E_FAILURE;
30253 }
30254
Sunil Duttbd736ed2014-05-26 21:19:41 +053030255 /* extract response and send it to UMAC */
Rajeev79dbe4c2013-10-05 11:03:42 +053030256 pBatchScanResultInd = (void *)pEventData->pEventData;
30257
Sunil Duttbd736ed2014-05-26 21:19:41 +053030258 /* Fill in the indication parameters */
Rajeev79dbe4c2013-10-05 11:03:42 +053030259 wdiInd.wdiIndicationType = WDI_BATCH_SCAN_RESULT_IND;
30260
30261 wdiInd.wdiIndicationData.pBatchScanResult = pBatchScanResultInd;
30262
Sunil Duttbd736ed2014-05-26 21:19:41 +053030263 /* Notify UMAC */
Rajeev79dbe4c2013-10-05 11:03:42 +053030264 if (pWDICtx->wdiLowLevelIndCB)
30265 {
30266 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
30267 }
30268 else
30269 {
30270 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
30271 "%s: WDILowLevelIndCb is null", __func__);
30272 WDI_ASSERT(0);
30273 return WDI_STATUS_E_FAILURE;
30274 }
30275
30276 return WDI_STATUS_SUCCESS;
30277} /*End of WDI_ProcessBatchScanResultInd*/
30278
Sunil Duttbd736ed2014-05-26 21:19:41 +053030279#ifdef WLAN_FEATURE_LINK_LAYER_STATS
30280/**
30281 @brief Process Link Layer Statistics Result indication from FW
30282
30283 @param pWDICtx: pointer to the WLAN DAL context
30284 pEventData: pointer to the event information structure
30285
30286 @see
30287 @return Result of the function call
30288*/
30289WDI_Status
30290WDI_ProcessLinkLayerStatsResultsInd
30291(
30292 WDI_ControlBlockType* pWDICtx,
30293 WDI_EventInfoType* pEventData
30294)
30295{
30296 void *pLinkLayerStatsInd;
Dino Mycled3d50022014-07-07 12:58:25 +053030297 WDI_LLstatsResultsType *halLLStatsResults;
30298 wpt_macAddr macAddr;
Sunil Duttbd736ed2014-05-26 21:19:41 +053030299 WDI_LowLevelIndType wdiInd;
30300 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
30301
30302 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
30303 "%s: Event RESULTS Indication", __func__);
30304
30305 /* sanity check */
30306 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
30307 ( NULL == pEventData->pEventData))
30308 {
30309 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
30310 "%s: Invalid parameters", __func__);
30311 WDI_ASSERT(0);
30312 return WDI_STATUS_E_FAILURE;
30313 }
30314
30315 /* extract response and send it to UMAC */
30316 pLinkLayerStatsInd = (void *)pEventData->pEventData;
30317
30318 /* Fill in the indication parameters */
30319 wdiInd.wdiIndicationType = WDI_LL_STATS_RESULTS_IND;
30320
Dino Mycled3d50022014-07-07 12:58:25 +053030321 wdiInd.wdiIndicationData.wdiLinkLayerStatsResults.pLinkLayerStatsResults
30322 = pLinkLayerStatsInd;
30323
30324 halLLStatsResults = (WDI_LLstatsResultsType *) pLinkLayerStatsInd;
30325
30326
30327 /* Need to fill in the MAC address */
30328 if ( WDI_STATUS_SUCCESS !=
30329 WDI_STATableGetStaMacAddr(pWDICtx,
30330 halLLStatsResults->iface_id,
30331 &macAddr))
30332 {
30333 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
30334 " ifaceId: %u does not exist in the WDI Station Table",
30335 halLLStatsResults->iface_id);
30336
30337 return WDI_STATUS_E_FAILURE;
30338 }
30339 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiLinkLayerStatsResults.macAddr,
30340 macAddr, WDI_MAC_ADDR_LEN);
30341
30342 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
30343 "ifaceId: %u, macAddr: %pM \n", halLLStatsResults->iface_id,
30344 wdiInd.wdiIndicationData.wdiLinkLayerStatsResults.macAddr);
Sunil Duttbd736ed2014-05-26 21:19:41 +053030345
30346 /* Notify UMAC */
30347 if (pWDICtx->wdiLowLevelIndCB)
30348 {
30349 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
30350 }
30351 else
30352 {
30353 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
30354 "%s: WDILowLevelIndCb is null", __func__);
30355 WDI_ASSERT(0);
30356 return WDI_STATUS_E_FAILURE;
30357 }
30358
30359 return WDI_STATUS_SUCCESS;
30360} /* End of WDI_ProcessLinkLayerStatsResultsInd */
30361#endif /* WLAN_FEATURE_LINK_LAYER_STATS */
30362
Rajeev79dbe4c2013-10-05 11:03:42 +053030363/**
30364 @brief WDI_ProcessSetBatchScanReq -
30365 Set batch scan request to FW
30366
30367 @param pWDICtx : wdi context
30368 pEventData : indication data
30369
30370 @see
30371 @return none
30372*/
30373WDI_Status WDI_ProcessSetBatchScanReq
30374(
30375 WDI_ControlBlockType* pWDICtx,
30376 WDI_EventInfoType* pEventData
30377)
30378{
30379 WDI_SetBatchScanReqType *pWdiReq;
30380 WDI_Status wdiStatus;
30381 wpt_uint8* pSendBuffer = NULL;
30382 wpt_uint16 usDataOffset = 0;
30383 wpt_uint16 usSendSize = 0;
30384 tHalBatchScanSetParams *pHalReq;
30385 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
30386
30387 /*sanity check*/
30388 if ((NULL == pEventData) || (NULL == pEventData->pEventData))
30389 {
30390 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
30391 "%s: Invalid parameters in set batch scan request", __func__);
30392 WDI_ASSERT(0);
30393 return WDI_STATUS_E_FAILURE;
30394 }
30395
30396
30397 pWdiReq = (WDI_SetBatchScanReqType *)pEventData->pEventData;
30398
30399
30400 /*get message buffer*/
30401 if ((WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(pWDICtx,
30402 WDI_SET_BATCH_SCAN_REQ,
30403 sizeof(tHalBatchScanSetParams),
30404 &pSendBuffer, &usDataOffset, &usSendSize))||
30405 (usSendSize < (usDataOffset + sizeof(tHalBatchScanSetParams))))
30406 {
30407 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
30408 "Unable to get send buffer for SET_BATCH_SCAN_REQ ");
30409 WDI_ASSERT(0);
30410 return WDI_STATUS_E_FAILURE;
30411 }
30412
30413 pHalReq = (tHalBatchScanSetParams *)(pSendBuffer + usDataOffset);
30414
30415 pHalReq->rtt = pWdiReq->rtt;
30416 pHalReq->rfBand = pWdiReq->rfBand;
30417 pHalReq->bestNetworks = pWdiReq->bestNetwork;
30418 pHalReq->scanInterval = pWdiReq->scanFrequency;
30419 pHalReq->numScan2Batch = pWdiReq->numberOfScansToBatch;
30420
30421 /*send set batch scan request to fw*/
30422 pWDICtx->pfncRspCB = pEventData->pCBfnc;
30423 pWDICtx->pReqStatusUserData = pEventData->pUserData;
30424
30425 wdiStatus = WDI_SendMsg(pWDICtx, pSendBuffer,
30426 usSendSize, pWDICtx->pfncRspCB,
30427 pWDICtx->pReqStatusUserData,
30428 WDI_SET_BATCH_SCAN_RESP);
30429
30430 return wdiStatus;
30431}
30432
30433/**
30434 @brief WDI_SetBatchScanReq
30435 This API is called to set batch scan request in FW
30436
30437 @param pBatchScanReqParam : pointer to set batch scan re param
30438 usrData : Client context
30439 setBatchScanRspCb : set batch scan resp callback
30440 @see
30441 @return SUCCESS or FAIL
30442*/
30443WDI_Status WDI_SetBatchScanReq
30444(
30445 void *pBatchScanReqParam,
30446 void *usrData,
30447 WDI_SetBatchScanCb setBatchScanRspCb
30448)
30449{
30450 WDI_EventInfoType wdiEventData;
30451
30452 /*sanity check*/
30453 if (eWLAN_PAL_FALSE == gWDIInitialized)
30454 {
30455 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
30456 "WDI API call before module is initialized - Fail request");
30457
30458 return WDI_STATUS_E_NOT_ALLOWED;
30459 }
30460
30461 /* fill in event data and post to the main FSM */
30462 wdiEventData.wdiRequest = WDI_SET_BATCH_SCAN_REQ;
30463 wdiEventData.pEventData = pBatchScanReqParam;
30464 wdiEventData.uEventDataSize = sizeof(WDI_SetBatchScanReqType);
30465 wdiEventData.pCBfnc = setBatchScanRspCb;
30466 wdiEventData.pUserData = usrData;
30467
30468 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
30469}
30470
30471/**
30472 @brief WDI_StopbatchScanInd: Send stop batch scan indication to FW
30473
30474 @param None
30475
30476 @see
30477
30478 @return Status of the request
30479*/
30480WDI_Status
30481WDI_StopBatchScanInd(WDI_StopBatchScanIndType *pWdiReq)
30482{
30483 WDI_EventInfoType wdiEventData;
30484
30485 /*-------------------------------------------------------------------------
30486 Sanity Check
30487 ------------------------------------------------------------------------*/
30488 if (eWLAN_PAL_FALSE == gWDIInitialized)
30489 {
30490 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
30491 "WDI API call before module is initialized - Fail request!");
30492
30493 return WDI_STATUS_E_NOT_ALLOWED;
30494 }
30495
30496 /*-------------------------------------------------------------------------
30497 Fill in Event data and post to the Main FSM
30498 ------------------------------------------------------------------------*/
30499 wdiEventData.wdiRequest = WDI_STOP_BATCH_SCAN_IND;
30500 wdiEventData.pEventData = pWdiReq;
30501 wdiEventData.uEventDataSize = sizeof(WDI_StopBatchScanIndType);
30502 wdiEventData.pCBfnc = NULL;
30503 wdiEventData.pUserData = NULL;
30504
30505 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
30506}
30507
30508/**
30509 @brief WDI_TriggerBatchScanResultInd
30510 This API is called to pull batch scan result from FW
30511
30512 @param pWdiReq : pointer to get batch scan ind param
30513 @see
30514 @return SUCCESS or FAIL
30515*/
30516WDI_Status WDI_TriggerBatchScanResultInd
30517(
30518 WDI_TriggerBatchScanResultIndType *pWdiReq
30519)
30520{
30521 WDI_EventInfoType wdiEventData;
30522 /*-------------------------------------------------------------------------
30523 Sanity Check
30524 ------------------------------------------------------------------------*/
30525 if (eWLAN_PAL_FALSE == gWDIInitialized)
30526 {
30527 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
30528 "WDI API call before module is initialized - Fail request!");
30529
30530 return WDI_STATUS_E_NOT_ALLOWED;
30531 }
30532
30533 /*-------------------------------------------------------------------------
30534 Fill in Event data and post to the Main FSM
30535 ------------------------------------------------------------------------*/
30536 wdiEventData.wdiRequest = WDI_TRIGGER_BATCH_SCAN_RESULT_IND;
30537 wdiEventData.pEventData = pWdiReq;
30538 wdiEventData.uEventDataSize = sizeof(WDI_TriggerBatchScanResultIndType);
30539 wdiEventData.pCBfnc = NULL;
30540 wdiEventData.pUserData = NULL;
30541
30542 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
30543}
Rajeev79dbe4c2013-10-05 11:03:42 +053030544#endif /*FEATURE_WLAN_BATCH_SCAN*/
Leo Chang0b0e45a2013-12-15 15:18:55 -080030545
Manjunathappa Prakash86f78ca2014-02-10 18:09:15 -080030546/**
30547 @brief Process Update Channel Rsp function (called when a response is
30548 being received over the bus from HAL)
30549
30550 @param pWDICtx: pointer to the WLAN DAL context
30551 pEventData: pointer to the event information structure
30552
30553 @see
30554 @return Result of the function call
30555*/
30556WDI_Status
30557WDI_ProcessUpdateChanRsp
30558(
30559 WDI_ControlBlockType* pWDICtx,
30560 WDI_EventInfoType* pEventData
30561)
30562{
30563 WDI_Status wdiStatus;
30564 eHalStatus halStatus;
30565 WDI_UpdateChannelRspCb wdiUpdateChanRspCb;
30566 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
30567
30568 /*-------------------------------------------------------------------------
30569 Sanity check
30570 -------------------------------------------------------------------------*/
30571 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
30572 ( NULL == pEventData->pEventData))
30573 {
30574 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
30575 "%s: Invalid parameters", __func__);
30576 WDI_ASSERT(0);
30577 return WDI_STATUS_E_FAILURE;
30578 }
30579
30580 wdiUpdateChanRspCb = (WDI_UpdateChannelRspCb)pWDICtx->pfncRspCB;
30581
30582 /*-------------------------------------------------------------------------
30583 Extract response and send it to UMAC
30584 -------------------------------------------------------------------------*/
30585 halStatus = *((eHalStatus*)pEventData->pEventData);
30586 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
30587
30588 wdiUpdateChanRspCb( wdiStatus, pWDICtx->pRspCBUserData);
30589
30590 return WDI_STATUS_SUCCESS;
30591}/*WDI_ProcessUpdateChanRsp*/
30592
Leo Chang0b0e45a2013-12-15 15:18:55 -080030593#ifdef FEATURE_WLAN_CH_AVOID
30594/**
30595 @brief v -WDI_ProcessChAvoidInd
30596
30597
30598 @param pWDICtx : wdi context
30599 pEventData : indication data
30600 @see
30601 @return Result of the function call
30602*/
30603WDI_Status
30604WDI_ProcessChAvoidInd
30605(
30606 WDI_ControlBlockType* pWDICtx,
30607 WDI_EventInfoType* pEventData
30608)
30609{
30610 WDI_LowLevelIndType wdiInd;
30611 tHalAvoidFreqRangeIndParams chAvoidIndicationParam;
30612 wpt_uint16 rangeLoop;
30613 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
30614
30615 /*-------------------------------------------------------------------------
30616 Sanity check
30617 -------------------------------------------------------------------------*/
30618 if ((NULL == pWDICtx) || (NULL == pEventData) ||
30619 (NULL == pEventData->pEventData))
30620 {
30621 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
30622 "%s: Invalid parameters", __func__);
30623 WDI_ASSERT(0);
30624 return WDI_STATUS_E_FAILURE;
30625 }
30626
30627 /*-------------------------------------------------------------------------
30628 Extract indication and send it to UMAC
30629 -------------------------------------------------------------------------*/
30630 wpalMemoryCopy(&chAvoidIndicationParam,
30631 pEventData->pEventData,
30632 sizeof(tHalAvoidFreqRangeIndParams));
30633
30634 wdiInd.wdiIndicationType = WDI_CH_AVOID_IND;
30635 wdiInd.wdiIndicationData.wdiChAvoidInd.avoidRangeCount =
30636 chAvoidIndicationParam.avoidCnt;
30637 wpalMemoryCopy((void *)wdiInd.wdiIndicationData.wdiChAvoidInd.avoidFreqRange,
30638 (void *)chAvoidIndicationParam.avoidRange,
30639 wdiInd.wdiIndicationData.wdiChAvoidInd.avoidRangeCount *
30640 sizeof(WDI_ChAvoidFreqType));
30641 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
30642 "%s: band count %d", __func__,
30643 wdiInd.wdiIndicationData.wdiChAvoidInd.avoidRangeCount);
30644 for (rangeLoop = 0; rangeLoop < chAvoidIndicationParam.avoidCnt; rangeLoop++)
30645 {
30646 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
30647 "%s: srart freq %d, end freq %d", __func__,
30648 wdiInd.wdiIndicationData.wdiChAvoidInd.avoidFreqRange[rangeLoop].startFreq,
30649 wdiInd.wdiIndicationData.wdiChAvoidInd.avoidFreqRange[rangeLoop].endFreq);
30650 }
30651
30652 /*Notify UMAC*/
30653 if (pWDICtx->wdiLowLevelIndCB)
30654 {
30655 pWDICtx->wdiLowLevelIndCB(&wdiInd, pWDICtx->pIndUserData);
30656 }
30657
30658 return WDI_STATUS_SUCCESS;
30659}
Atul Mittalc0f739f2014-07-31 13:47:47 +053030660
Leo Chang0b0e45a2013-12-15 15:18:55 -080030661#endif /* FEATURE_WLAN_CH_AVOID */
30662
Sandeep Puligilla8b8b74b2014-02-10 16:39:05 +053030663/**
30664 @brief Process OBSS Start scan result indication
30665
30666 @param pWDICtx: pointer to the WLAN DAL context
30667 pEventData: pointer to the event information structure
30668
30669 @see
30670 @return Result of the function call
30671*/
30672WDI_Status
30673WDI_ProcessHT40OBSSScanInd
30674(
30675 WDI_ControlBlockType* pWDICtx,
30676 WDI_EventInfoType* pEventData
30677)
30678{
30679 wpt_uint8* pSendBuffer = NULL;
30680 wpt_uint16 usDataOffset = 0;
30681 wpt_uint16 usSendSize = 0;
30682 wpt_uint16 usLen = 0;
30683 WDI_HT40ObssScanIndType *pwdiHT40OBSSScanInd = NULL;
30684 WDI_HT40ObssScanParamsType *pwdiHT40OBSSScanParams = NULL;
30685 tHT40ObssScanIndType* pHT40ObssScanInd = NULL;
30686 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
30687
30688 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
30689
30690 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
30691 "%s", __func__);
30692
30693 /*-------------------------------------------------------------------------
30694 Sanity check
30695 -------------------------------------------------------------------------*/
30696 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
30697 {
30698 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
30699 "%s: Invalid parameters", __func__);
30700 WDI_ASSERT(0);
30701 return WDI_STATUS_E_FAILURE;
30702 }
30703 pwdiHT40OBSSScanParams = (WDI_HT40ObssScanParamsType*)pEventData->pEventData;
30704
30705 pwdiHT40OBSSScanInd = &pwdiHT40OBSSScanParams->wdiHT40ObssScanParam;
30706 /*-----------------------------------------------------------------------
30707 Get message buffer
30708 -----------------------------------------------------------------------*/
30709
30710 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
30711 WDI_START_HT40_OBSS_SCAN_IND,
30712 sizeof(tHT40ObssScanIndType),
30713 &pSendBuffer, &usDataOffset, &usSendSize))||
30714 ( usSendSize < (usDataOffset + usLen )))
30715 {
30716 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
30717 "Unable to get send buffer in HT40 OBSS Start req %p ",
30718 pEventData);
30719 WDI_ASSERT(0);
30720 return WDI_STATUS_E_FAILURE;
30721 }
30722 pHT40ObssScanInd = (tHT40ObssScanIndType*)(pSendBuffer+usDataOffset);
30723 pHT40ObssScanInd->cmdType = pwdiHT40OBSSScanInd->cmdType;
30724 pHT40ObssScanInd->scanType = pwdiHT40OBSSScanInd->scanType;
30725 pHT40ObssScanInd->OBSSScanPassiveDwellTime =
30726 pwdiHT40OBSSScanInd->OBSSScanPassiveDwellTime;
30727 pHT40ObssScanInd->OBSSScanActiveDwellTime =
30728 pwdiHT40OBSSScanInd->OBSSScanActiveDwellTime;
30729 pHT40ObssScanInd->BSSChannelWidthTriggerScanInterval =
30730 pwdiHT40OBSSScanInd->BSSChannelWidthTriggerScanInterval;
30731 pHT40ObssScanInd->OBSSScanPassiveTotalPerChannel =
30732 pwdiHT40OBSSScanInd->OBSSScanPassiveTotalPerChannel;
30733 pHT40ObssScanInd->OBSSScanActiveTotalPerChannel =
30734 pwdiHT40OBSSScanInd->OBSSScanActiveTotalPerChannel;
30735 pHT40ObssScanInd->BSSWidthChannelTransitionDelayFactor =
30736 pwdiHT40OBSSScanInd->BSSWidthChannelTransitionDelayFactor;
30737 pHT40ObssScanInd->OBSSScanActivityThreshold =
30738 pwdiHT40OBSSScanInd->OBSSScanActivityThreshold;
30739 pHT40ObssScanInd->selfStaIdx =
30740 pwdiHT40OBSSScanInd->selfStaIdx;
30741 pHT40ObssScanInd->bssIdx =
30742 pwdiHT40OBSSScanInd->bssIdx;
Hardik Kantilal Pateld3912032014-11-21 16:54:07 +053030743 pHT40ObssScanInd->currentOperatingClass =
30744 pwdiHT40OBSSScanInd->currentOperatingClass;
Sandeep Puligilla8b8b74b2014-02-10 16:39:05 +053030745 pHT40ObssScanInd->fortyMHZIntolerent =
30746 pwdiHT40OBSSScanInd->fortyMHZIntolerent;
30747 pHT40ObssScanInd->channelCount =
30748 pwdiHT40OBSSScanInd->channelCount;
30749
30750 wpalMemoryCopy(pHT40ObssScanInd->channels, pwdiHT40OBSSScanInd->channels,
30751 WDI_ROAM_SCAN_MAX_CHANNELS);
30752 pHT40ObssScanInd->ieFieldLen =
30753 pwdiHT40OBSSScanInd->ieFieldLen;
30754
30755 wpalMemoryCopy(pHT40ObssScanInd->ieField, pwdiHT40OBSSScanInd->ieField,
30756 WDI_ROAM_SCAN_MAX_PROBE_SIZE);
30757 pWDICtx->pReqStatusUserData = NULL;
30758 pWDICtx->pfncRspCB = NULL;
30759
30760 pWDICtx->wdiReqStatusCB = pwdiHT40OBSSScanParams->wdiReqStatusCB;
30761 pWDICtx->pReqStatusUserData = pwdiHT40OBSSScanParams->pUserData;
30762
30763 /*-------------------------------------------------------------------------
30764 Send OBSS Start Indication to HAL
30765 -------------------------------------------------------------------------*/
30766 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
30767 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus:WDI_STATUS_SUCCESS_SYNC;
30768
30769} /*End of WDI_ProcessHT40OBSSStartScanInd*/
30770
30771
30772/**
30773 @brief wdi_HT40OBSSScanInd
30774 This API is called to start OBSS scan
30775
30776 @param pWdiReq : pointer to get ind param
30777 @see
30778 @return SUCCESS or FAIL
30779*/
30780WDI_Status WDI_HT40OBSSScanInd
30781(
30782 WDI_HT40ObssScanParamsType *pWdiReq
30783)
30784{
30785 WDI_EventInfoType wdiEventData;
30786
30787 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
30788 "%s", __func__);
30789 /*-------------------------------------------------------------------------
30790 Sanity Check
30791 ------------------------------------------------------------------------*/
30792 if (eWLAN_PAL_FALSE == gWDIInitialized)
30793 {
30794 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
30795 "WDI API call before module is initialized - Fail request!");
30796
30797 return WDI_STATUS_E_NOT_ALLOWED;
30798 }
30799
30800 /*-------------------------------------------------------------------------
30801 Fill in Event data and post to the Main FSM
30802 ------------------------------------------------------------------------*/
30803 wdiEventData.wdiRequest = WDI_START_HT40_OBSS_SCAN_IND;
30804 wdiEventData.pEventData = pWdiReq;
30805 wdiEventData.uEventDataSize = sizeof(WDI_HT40ObssScanParamsType);
30806 wdiEventData.pCBfnc = NULL;
30807 wdiEventData.pUserData = NULL;
30808
30809
30810 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
30811}
30812
30813/**
30814 @brief Process OBSS Stop scan result
30815
30816 @param pWDICtx: pointer to the WLAN DAL context
30817 pEventData: pointer to the event information structure
30818
30819 @see
30820 @return Result of the function call
30821*/
30822WDI_Status
30823WDI_ProcessHT40OBSSStopScanInd
30824(
30825 WDI_ControlBlockType* pWDICtx,
30826 WDI_EventInfoType* pEventData
30827)
30828{
30829 wpt_uint8* pSendBuffer = NULL;
30830 wpt_uint16 usDataOffset = 0;
30831 wpt_uint16 usSendSize = 0;
30832 wpt_uint16 usLen = 0;
30833 wpt_uint8 *wdiBssIdx = 0;
30834 tANI_U8 *bssIdx = 0;
30835 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
30836
30837 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
30838
30839 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
30840 "%s", __func__);
30841
30842 /*-------------------------------------------------------------------------
30843 Sanity check
30844 -------------------------------------------------------------------------*/
30845 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
30846 {
30847 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
30848 "%s: Invalid parameters", __func__);
30849 WDI_ASSERT(0);
30850 return WDI_STATUS_E_FAILURE;
30851 }
30852 bssIdx = (wpt_uint8*)pEventData->pEventData;
30853 /*-----------------------------------------------------------------------
30854 Get message buffer
30855 -----------------------------------------------------------------------*/
30856
30857 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
30858 WDI_STOP_HT40_OBSS_SCAN_IND,
30859 sizeof(tANI_U8),
30860 &pSendBuffer, &usDataOffset, &usSendSize))||
30861 ( usSendSize < (usDataOffset + usLen )))
30862 {
30863 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
30864 "Unable to get send buffer in HT40 OBSS Start req %p ",
30865 pEventData);
30866 WDI_ASSERT(0);
30867 return WDI_STATUS_E_FAILURE;
30868 }
30869
30870 bssIdx = (tANI_U8*)pSendBuffer+usDataOffset;
30871 bssIdx = wdiBssIdx;
30872
30873 pWDICtx->pReqStatusUserData = NULL;
30874 pWDICtx->pfncRspCB = NULL;
30875
30876 /*-------------------------------------------------------------------------
30877 Send DHCP Start Indication to HAL
30878 -------------------------------------------------------------------------*/
30879 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
30880 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus:WDI_STATUS_SUCCESS_SYNC;
30881} /*End of WDI_ProcessHT40OBSSStopScanInd*/
30882
30883/**
30884 @brief WDI_HT40OBSSStopScanInd
30885 This API is called to start OBSS scan
30886 @param pWdiReq : pointer to get ind param
30887 @see
30888 @return SUCCESS or FAIL
30889*/
30890WDI_Status WDI_HT40OBSSStopScanInd
30891(
30892 wpt_uint8 bssIdx
30893)
30894{
30895 WDI_EventInfoType wdiEventData;
30896
30897 /*-------------------------------------------------------------------------
30898 Sanity Check
30899 ------------------------------------------------------------------------*/
30900 if (eWLAN_PAL_FALSE == gWDIInitialized)
30901 {
30902 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
30903 "WDI API call before module is initialized - Fail request!");
30904
30905 return WDI_STATUS_E_NOT_ALLOWED;
30906 }
30907
30908 /*-------------------------------------------------------------------------
30909 Fill in Event data and post to the Main FSM
30910 ------------------------------------------------------------------------*/
30911 wdiEventData.wdiRequest = WDI_STOP_HT40_OBSS_SCAN_IND;
30912 wdiEventData.pEventData = &bssIdx;
30913 wdiEventData.uEventDataSize = sizeof(wpt_uint8);
30914 wdiEventData.pCBfnc = NULL;
30915 wdiEventData.pUserData = NULL;
30916
30917 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
30918}
30919
c_hpothu86041002014-04-14 19:06:51 +053030920WDI_Status
30921WDI_printRegInfo
30922(
30923 WDI_ControlBlockType* pWDICtx,
30924 WDI_EventInfoType* pEventData
30925)
30926{
30927 tHalRegDebugInfo *pRegTable;
30928 tHalRegDebugInfoParams *pRegParams;
30929 uint32 cnt=0;
30930
30931 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
30932 "%s: ", __func__);
30933 /*-------------------------------------------------------------------------
30934 Sanity check
30935 -------------------------------------------------------------------------*/
30936 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
30937 ( NULL == pEventData->pEventData))
30938 {
30939 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
30940 "%s: Invalid parameters", __func__);
30941 WDI_ASSERT(0);
30942 return WDI_STATUS_E_FAILURE;
30943 }
30944
30945 pRegParams = (tHalRegDebugInfoParams *)pEventData->pEventData;
30946
30947 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
30948 "%s: regCount: %x scenario: %x reasonCode: %x", __func__,
30949 pRegParams->regCount, pRegParams->scenario, pRegParams->reasonCode);
30950
30951 pRegTable = (tHalRegDebugInfo *)(pRegParams+1); //data starts after regParams
30952
30953 if (pRegParams->regCount <= 0)
30954 {
30955 WPAL_TRACE (eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
30956 "%s incorrect parameters passed", __func__);
30957 return WDI_STATUS_E_FAILURE;
30958 }
30959
30960 while(pRegParams->regCount--)
30961 {
30962 WPAL_TRACE (eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
30963 "%x: %x", pRegTable[cnt].regAddr, pRegTable[cnt].regValue);
30964 cnt++;
30965 }
30966
30967 return WDI_STATUS_SUCCESS;
30968}
c_hpothu92367912014-05-01 15:18:17 +053030969
30970/*
Abhishek Singh66c16762014-08-14 19:13:19 +053030971 * FUNCTION: WDI_delBaInd
30972 * send the delBA to peer.
30973 */
30974
30975WDI_Status
30976WDI_delBaInd
30977(
30978 WDI_ControlBlockType* pWDICtx,
30979 WDI_EventInfoType* pEventData
30980
30981)
30982{
30983 tHalWlanDelBaIndMsg halDelBaInd;
30984 WDI_LowLevelIndType wdiInd;
30985 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
30986
30987 /*-------------------------------------------------------------------------
30988 Sanity check
30989 -------------------------------------------------------------------------*/
30990 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
30991 ( NULL == pEventData->pEventData))
30992 {
30993 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
30994 "%s: Invalid parameters", __func__);
30995 WDI_ASSERT(0);
30996 return WDI_STATUS_E_FAILURE;
30997 }
30998
30999 /*-------------------------------------------------------------------------
31000 Extract indication and send it to UMAC
31001 -------------------------------------------------------------------------*/
31002
31003 /* Parameters need to be unpacked according to HAL struct*/
31004 wpalMemoryCopy( &halDelBaInd,
31005 pEventData->pEventData,
31006 sizeof(halDelBaInd));
31007
31008 /*Fill in the indication parameters*/
31009 wdiInd.wdiIndicationType = WDI_DEL_BA_IND;
31010
31011 wdiInd.wdiIndicationData.wdiDeleteBAInd.staIdx = halDelBaInd.staIdx;
31012 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiDeleteBAInd.peerMacAddr,
31013 halDelBaInd.peerMacAddr, WDI_MAC_ADDR_LEN);
31014
31015 wdiInd.wdiIndicationData.wdiDeleteBAInd.baTID = halDelBaInd.baTID;
31016 wdiInd.wdiIndicationData.wdiDeleteBAInd.baDirection = halDelBaInd.baDirection;
31017 wdiInd.wdiIndicationData.wdiDeleteBAInd.reasonCode = halDelBaInd.reasonCode;
31018
31019 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiDeleteBAInd.bssId,
31020 halDelBaInd.bssId, WDI_MAC_ADDR_LEN);
31021 if ( pWDICtx->wdiLowLevelIndCB )
31022 {
31023 /*Notify UMAC*/
31024 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
31025 }
31026
31027 return WDI_STATUS_SUCCESS;
31028
31029
31030}
31031
31032/*
c_hpothu92367912014-05-01 15:18:17 +053031033 * FUNCTION: WDI_ProcessGetBcnMissRateRsp
31034 * send the response to PE with beacon miss count
31035 * received from WDI.
31036 */
31037WDI_Status
31038WDI_ProcessGetBcnMissRateRsp
31039(
31040 WDI_ControlBlockType* pWDICtx,
31041 WDI_EventInfoType* pEventData
31042)
31043{
31044 WDI_GetBcnMissRateCb wdiGetBcnMissRateCb;
31045 tpHalBcnMissRateRspParams pHalBcnMissRateRsp;
31046
31047 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
31048 "In %s",__func__);
31049 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
31050
31051 /*-------------------------------------------------------------------------
31052 Sanity check
31053 -------------------------------------------------------------------------*/
31054 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
31055 ( NULL == pEventData->pEventData))
31056 {
31057 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
31058 "%s: Invalid parameters", __func__);
31059 WDI_ASSERT(0);
31060 return WDI_STATUS_E_FAILURE;
31061 }
31062
31063 pHalBcnMissRateRsp = (tHalBcnMissRateRspParams *)pEventData->pEventData;
31064 wdiGetBcnMissRateCb = (WDI_GetBcnMissRateCb)pWDICtx->pfncRspCB;
31065
31066 /*Notify UMAC*/
31067 wdiGetBcnMissRateCb(pHalBcnMissRateRsp->status,
31068 pHalBcnMissRateRsp->bcnMissCnt, pWDICtx->pRspCBUserData);
31069 return WDI_STATUS_SUCCESS;
31070}
31071
31072/*
31073 * FUNCTION: WDI_ProcessGetBcnMissRateReq
31074 * Request to WDI to get missed beacon rate.
31075 */
31076WDI_Status
31077WDI_ProcessGetBcnMissRateReq
31078(
31079 WDI_ControlBlockType* pWDICtx,
31080 WDI_EventInfoType* pEventData
31081)
31082{
31083 wpt_uint8* pSendBuffer = NULL;
31084 wpt_uint16 usDataOffset = 0;
31085 wpt_uint16 usSendSize = 0;
31086 wpt_uint8 ucCurrentBSSSesIdx = 0;
31087 WDI_BSSSessionType* pBSSSes = NULL;
c_hpothu92367912014-05-01 15:18:17 +053031088 WDI_GetBcnMissRateCb *wdiGetBcnMissRateCb;
31089 tHalBcnMissRateReqParams halBcnMissRateReq;
31090
31091/*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
31092
31093 /*-------------------------------------------------------------------------
31094 Sanity check
31095 -------------------------------------------------------------------------*/
31096 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData) ||
31097 ( NULL == pEventData->pCBfnc ) )
31098 {
31099 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
31100 "%s: Invalid parameters", __func__);
31101 WDI_ASSERT(0);
31102 return WDI_STATUS_E_FAILURE;
31103 }
31104
31105 wdiGetBcnMissRateCb = (WDI_GetBcnMissRateCb *)pEventData->pCBfnc;
31106
31107 wpalMutexAcquire(&pWDICtx->wptMutex);
31108
31109 ucCurrentBSSSesIdx = WDI_FindAssocSession(pWDICtx,
31110 pEventData->pEventData, &pBSSSes);
31111 if ( NULL == pBSSSes )
31112 {
31113 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
31114 "%s: Association sequence for this BSS does not yet exist. macBSSID"
c_hpothu3c986b22014-07-09 14:45:09 +053031115 MAC_ADDRESS_STR, __func__,
31116 MAC_ADDR_ARRAY((wpt_uint8 *)(pEventData->pEventData)));
c_hpothu92367912014-05-01 15:18:17 +053031117 wpalMutexRelease(&pWDICtx->wptMutex);
31118 return WDI_STATUS_E_NOT_ALLOWED;
31119 }
31120 wpalMutexRelease(&pWDICtx->wptMutex);
31121
31122 /*-----------------------------------------------------------------------
31123 Get message buffer
31124 -----------------------------------------------------------------------*/
31125 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
31126 pWDICtx, WDI_GET_BCN_MISS_RATE_REQ,
31127 sizeof(tHalBcnMissRateReqParams),
31128 &pSendBuffer, &usDataOffset, &usSendSize)) ||
31129 ( usSendSize < (usDataOffset + sizeof(tHalBcnMissRateReqParams))))
31130 {
31131 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
31132 "Unable to get send buffer in get WDI_GET_BCN_MISS_RATE_REQ %p",
31133 pEventData);
31134 WDI_ASSERT(0);
31135 return WDI_STATUS_E_FAILURE;
31136 }
31137
31138 pWDICtx->wdiReqStatusCB = NULL;
31139 pWDICtx->pReqStatusUserData = pEventData->pUserData;
31140
31141 halBcnMissRateReq.bssIdx = ucCurrentBSSSesIdx;
31142
31143 wpalMemoryCopy( pSendBuffer+usDataOffset,
31144 &halBcnMissRateReq,
31145 sizeof(tHalBcnMissRateReqParams));
31146 /*-------------------------------------------------------------------------
31147 Send Get STA Request to HAL
31148 -------------------------------------------------------------------------*/
31149 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize, wdiGetBcnMissRateCb,
31150 pEventData->pUserData, WDI_GET_BCN_MISS_RATE_RSP);
31151}
31152
31153/**
31154 @brief WDI_GetBcnMissRate
31155
31156 @param pUserData: user data will be passed back with the
31157 callback
31158 WDI_GetBcnMissRateCb: callback for passing back the response
31159 of the get stats operation received from the device
31160 bssid: bssid, to send bssIdx to FW
31161
31162 @return SUCCESS or FAIL
31163*/
31164WDI_Status WDI_GetBcnMissRate( void *pUserData,
31165 WDI_GetBcnMissRateCb wdiGetBcnMissRateCb,
31166 tANI_U8 *bssid )
31167{
31168 WDI_EventInfoType wdiEventData;
31169
31170 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
31171
31172 /*------------------------------------------------------------------------
31173 Sanity Check
31174 ------------------------------------------------------------------------*/
31175 if ( eWLAN_PAL_FALSE == gWDIInitialized )
31176 {
31177 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
31178 "WDI API call before module is initialized - Fail request");
31179
31180 return WDI_STATUS_E_NOT_ALLOWED;
31181 }
31182
31183 /*------------------------------------------------------------------------
31184 Fill in Event data and post to the Main FSM
31185 ------------------------------------------------------------------------*/
31186 wdiEventData.wdiRequest = WDI_GET_BCN_MISS_RATE_REQ;
31187 wdiEventData.pEventData = bssid;
31188 wdiEventData.uEventDataSize = sizeof(tSirMacAddr);
31189 wdiEventData.pCBfnc = wdiGetBcnMissRateCb;
31190 wdiEventData.pUserData = pUserData;
31191
31192 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
31193}
Abhishek Singh85b74712014-10-08 11:38:19 +053031194
31195/*
31196 * FUNCTION: WDI_ProcessGetFwStatsRsp
31197 * send the response with FW stats asked.
31198 */
31199WDI_Status
31200 WDI_ProcessGetFwStatsRsp
31201(
31202 WDI_ControlBlockType* pWDICtx,
31203 WDI_EventInfoType* pEventData
31204)
31205{
31206 WDI_FWStatsGetRspCb wdiGetFwstatsCb;
31207 tpHalfwStatsRspParams pHalFwstatsRsp;
31208 WDI_FWStatsResults fwStats;
31209
31210 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
31211
31212 /*-------------------------------------------------------------------------
31213 Sanity check
31214 -------------------------------------------------------------------------*/
31215 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
31216 ( NULL == pEventData->pEventData))
31217 {
31218 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
31219 "%s: Invalid parameters", __func__);
31220 WDI_ASSERT(0);
31221 return WDI_STATUS_E_FAILURE;
31222 }
31223 pHalFwstatsRsp = (tHalfwStatsRspParams *)pEventData->pEventData;
31224 wdiGetFwstatsCb = (WDI_FWStatsGetRspCb) pWDICtx->pfncRspCB;
31225
31226 if(pHalFwstatsRsp->length)
31227 {
31228 switch( pHalFwstatsRsp->type )
31229 {
31230 case FW_UBSP_STATS:
31231 {
31232 ubspFwStats *ubspStatsfromFw;
31233
31234 fwStats.type = pHalFwstatsRsp->type;
31235 ubspStatsfromFw = (ubspFwStats *) pHalFwstatsRsp->data;
31236 fwStats.wdiFwStatsData.ubspStats.ubsp_enter_cnt =
31237 ubspStatsfromFw->ubsp_enter_cnt;
31238 fwStats.wdiFwStatsData.ubspStats.ubsp_jump_ddr_cnt =
31239 ubspStatsfromFw->ubsp_jump_ddr_cnt;
31240 }
31241 break;
31242 default:
31243 {
31244 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
31245 "%s: No handling for stats type %d", __func__,
31246 pHalFwstatsRsp->type);
31247 wdiGetFwstatsCb(WDI_STATUS_E_FAILURE,
31248 NULL, pWDICtx->pRspCBUserData);
31249 return WDI_STATUS_E_FAILURE;
31250 }
31251 }
31252 wdiGetFwstatsCb(WDI_STATUS_SUCCESS, &fwStats , pWDICtx->pRspCBUserData);
31253 }
31254 else
31255 {
31256 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
31257 "%s: Length = 0 for type %d return failure ", __func__,
31258 pHalFwstatsRsp->type);
31259 wdiGetFwstatsCb(WDI_STATUS_E_FAILURE,
31260 NULL, pWDICtx->pRspCBUserData);
31261 return WDI_STATUS_E_FAILURE;
31262 }
31263 return WDI_STATUS_SUCCESS;
31264}
31265
31266/*
31267 * FUNCTION: WDI_ProcessGetFwStatsReq
31268 * Request to WDI to get FW Stats.
31269 */
31270WDI_Status
31271 WDI_ProcessGetFwStatsReq
31272(
31273 WDI_ControlBlockType* pWDICtx,
31274 WDI_EventInfoType* pEventData
31275)
31276{
31277 wpt_uint8* pSendBuffer = NULL;
31278 wpt_uint16 usDataOffset = 0;
31279 wpt_uint16 usSendSize = 0;
31280 WDI_FWStatsGetRspCb *wdiGetFwstatsCb;
31281 tHalfwStatsReqParams halFwStatsReq;
31282
31283 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
31284
31285 /*-------------------------------------------------------------------------
31286 Sanity check
31287 -------------------------------------------------------------------------*/
31288 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData) ||
31289 ( NULL == pEventData->pCBfnc ) )
31290 {
31291 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
31292 "%s: Invalid parameters", __func__);
31293 WDI_ASSERT(0);
31294 return WDI_STATUS_E_FAILURE;
31295 }
31296
31297 wdiGetFwstatsCb = (WDI_FWStatsGetRspCb *)pEventData->pCBfnc;
31298
31299 /*-----------------------------------------------------------------------
31300 Get message buffer
31301 -----------------------------------------------------------------------*/
31302 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
31303 pWDICtx, WDI_GET_FW_STATS_REQ,
31304 sizeof(tHalfwStatsReqParams),
31305 &pSendBuffer, &usDataOffset, &usSendSize)) ||
31306 ( usSendSize < (usDataOffset + sizeof(tHalfwStatsReqParams))))
31307 {
31308 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
31309 "Unable to get send buffer in get WDI_GET_FW_STAS_REQ %p",
31310 pEventData);
31311 WDI_ASSERT(0);
31312 return WDI_STATUS_E_FAILURE;
31313 }
31314
31315 pWDICtx->wdiReqStatusCB = NULL;
31316 pWDICtx->pReqStatusUserData = pEventData->pEventData;
31317 halFwStatsReq.type = *((wpt_uint32 *)(pEventData->pEventData));
31318 wpalMemoryCopy( pSendBuffer+usDataOffset,
31319 &halFwStatsReq,
31320 sizeof(tHalfwStatsReqParams));
31321 /*-------------------------------------------------------------------------
31322 Send Get STA Request to HAL
31323 -------------------------------------------------------------------------*/
31324 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize, wdiGetFwstatsCb,
31325 pEventData->pUserData, WDI_GET_FW_STATS_RSP);
31326}
31327
Sunil Duttbd736ed2014-05-26 21:19:41 +053031328#ifdef WLAN_FEATURE_LINK_LAYER_STATS
31329
31330/**
31331 @brief WDI_LLStatsSetReq
31332 This API is called to set link layer stats request in FW
31333
31334 @param pwdiLLStatsSetReqParams : pointer to set link layer request params
31335 wdiLLStatsSetRspCb : set link layer stats resp callback
31336 usrData : Client context
31337 @see
31338 @return SUCCESS or FAIL
31339*/
31340WDI_Status
31341WDI_LLStatsSetReq(WDI_LLStatsSetReqType* pwdiLLStatsSetReqParams,
31342 WDI_LLStatsSetRspCb wdiLLStatsSetRspCb,
31343 void* pUserData)
31344{
31345 WDI_EventInfoType wdiEventData;
31346
31347 /*------------------------------------------------------------------------
31348 Sanity Check
31349 ------------------------------------------------------------------------*/
31350 if ( eWLAN_PAL_FALSE == gWDIInitialized )
31351 {
31352 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
31353 "WDI API call before module is initialized - Fail request");
31354
31355 return WDI_STATUS_E_NOT_ALLOWED;
31356 }
31357
31358 wdiEventData.wdiRequest = WDI_LL_STATS_SET_REQ;
31359 wdiEventData.pEventData = pwdiLLStatsSetReqParams;
31360 wdiEventData.uEventDataSize = sizeof(*pwdiLLStatsSetReqParams);
31361 wdiEventData.pCBfnc = wdiLLStatsSetRspCb;
31362 wdiEventData.pUserData = pUserData;
31363
31364 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
31365}
31366
31367/**
31368 @brief WDI_ProcessLLStatsSetReq -
31369 Set Link Layer Stats request to FW
31370
31371 @param pWDICtx : wdi context
31372 pEventData : indication data
31373
31374 @see
31375 @return none
31376*/
31377WDI_Status
31378WDI_ProcessLLStatsSetReq
31379(
31380 WDI_ControlBlockType* pWDICtx,
31381 WDI_EventInfoType* pEventData
31382)
31383{
31384 WDI_LLStatsSetReqType* pwdiLLStatsSetReqParams;
31385 WDI_LLStatsSetRspCb wdiLLStatsSetCb;
31386 wpt_uint8* pSendBuffer = NULL;
31387 wpt_uint16 usSendSize = 0;
31388 wpt_uint16 usDataOffset = 0;
31389 tHalMacLlSetStatsReqParams halLLStatsSetParams;
31390
31391 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
31392 ( NULL == pEventData->pCBfnc ))
31393 {
31394 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
31395 "%s: Invalid parameters", __func__);
31396 WDI_ASSERT(0);
31397 return WDI_STATUS_E_FAILURE;
31398 }
31399
31400 pwdiLLStatsSetReqParams = (WDI_LLStatsSetReqType*)pEventData->pEventData;
31401 wdiLLStatsSetCb = (WDI_LLStatsSetRspCb)pEventData->pCBfnc;
31402
31403 /*-----------------------------------------------------------------------
31404 Get message buffer
31405 ! TO DO : proper conversion into the HAL Message Request Format
31406 -----------------------------------------------------------------------*/
31407 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
31408 pWDICtx,
31409 WDI_LL_STATS_SET_REQ,
31410 sizeof(tHalMacLlSetStatsReqParams),
31411 &pSendBuffer, &usDataOffset,
31412 &usSendSize))||
31413 ( usSendSize < (usDataOffset + sizeof(halLLStatsSetParams) )))
31414 {
31415 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
31416 "Unable to get send buffer in %s %p %p %p", __func__,
31417 pEventData, pwdiLLStatsSetReqParams, wdiLLStatsSetCb);
31418 WDI_ASSERT(0);
31419 return WDI_STATUS_E_FAILURE;
31420 }
31421
31422
Dino Mycled3d50022014-07-07 12:58:25 +053031423 /* Need to fill in the self STA Index */
31424 if ( WDI_STATUS_SUCCESS !=
31425 WDI_STATableFindStaidByAddr(pWDICtx,
31426 pwdiLLStatsSetReqParams->macAddr,
31427 &halLLStatsSetParams.sta_id))
31428 {
31429 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
31430 MAC_ADDRESS_STR
31431 ": This station does not exist in the WDI Station Table",
31432 MAC_ADDR_ARRAY(pwdiLLStatsSetReqParams->macAddr));
31433
31434 wpalMemoryFree(pSendBuffer);
31435 return WDI_STATUS_E_FAILURE;
31436 }
Sunil Duttbd736ed2014-05-26 21:19:41 +053031437
31438 halLLStatsSetParams.req_id = pwdiLLStatsSetReqParams->reqId;
Sunil Duttbd736ed2014-05-26 21:19:41 +053031439 halLLStatsSetParams.mpdu_size_threshold =
31440 pwdiLLStatsSetReqParams->mpduSizeThreshold;
31441 halLLStatsSetParams.aggressive_statistics_gathering =
31442 pwdiLLStatsSetReqParams->aggressiveStatisticsGathering;
31443
31444 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
31445 " halLLStatsSetParams.req_id = %u",
31446 halLLStatsSetParams.req_id);
31447 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
31448 " halLLStatsSetParams.sta_id = %u",
31449 halLLStatsSetParams.sta_id);
31450 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
31451 " halLLStatsSetParams.mpdu_size_threshold = %u",
31452 halLLStatsSetParams.mpdu_size_threshold);
31453 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
31454 " halLLStatsSetParams.aggressive_statistics_gathering = %u",
31455 halLLStatsSetParams.aggressive_statistics_gathering);
31456
31457 wpalMemoryCopy(pSendBuffer+usDataOffset,
31458 &halLLStatsSetParams,
31459 sizeof(halLLStatsSetParams));
31460
31461 pWDICtx->pReqStatusUserData = pEventData->pUserData;
31462
31463 /*-------------------------------------------------------------------------
31464 Send Clear Link Layer Stats Request to HAL
31465 -------------------------------------------------------------------------*/
31466 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
31467 wdiLLStatsSetCb, pEventData->pUserData,
31468 WDI_LL_STATS_SET_RSP);
31469}
31470
31471/**
31472 @brief WDI_LLStatsGetReq
31473 This API is called to get link layer stats request in FW
31474
31475 @param pwdiLLStatsGetReqParams : pointer to set link layer request params
31476 wdiLLStatsGetRspCb : get link layer stats resp callback
31477 usrData : Client context
31478 @see
31479 @return SUCCESS or FAIL
31480*/
31481WDI_Status
31482WDI_LLStatsGetReq(WDI_LLStatsGetReqType* pwdiLLStatsGetReqParams,
31483 WDI_LLStatsGetRspCb wdiLLStatsGetRspCb,
31484 void* pUserData)
31485{
31486 WDI_EventInfoType wdiEventData;
31487
31488 /*------------------------------------------------------------------------
31489 Sanity Check
31490 ------------------------------------------------------------------------*/
31491 if ( eWLAN_PAL_FALSE == gWDIInitialized )
31492 {
31493 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
31494 "WDI API call before module is initialized - Fail request");
31495
31496 return WDI_STATUS_E_NOT_ALLOWED;
31497 }
31498
31499 wdiEventData.wdiRequest = WDI_LL_STATS_GET_REQ;
31500 wdiEventData.pEventData = pwdiLLStatsGetReqParams;
31501 wdiEventData.uEventDataSize = sizeof(*pwdiLLStatsGetReqParams);
31502 wdiEventData.pCBfnc = wdiLLStatsGetRspCb;
31503 wdiEventData.pUserData = pUserData;
31504
31505 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
31506}
31507
31508/**
31509 @brief WDI_ProcessLLStatsGetReq -
31510 Get Link Layer Stats request to FW
31511
31512 @param pWDICtx : wdi context
31513 pEventData : indication data
31514
31515 @see
31516 @return none
31517*/
31518WDI_Status
31519WDI_ProcessLLStatsGetReq
31520(
31521 WDI_ControlBlockType* pWDICtx,
31522 WDI_EventInfoType* pEventData
31523)
31524{
31525 WDI_LLStatsGetReqType* pwdiLLStatsGetReqParams;
31526 WDI_LLStatsGetRspCb wdiLLStatsGetCb;
31527 wpt_uint8* pSendBuffer = NULL;
31528 wpt_uint16 usSendSize = 0;
31529 wpt_uint16 usDataOffset = 0;
31530 tHalMacLlGetStatsReqParams halLLStatsGetParams;
31531
31532 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
31533 ( NULL == pEventData->pCBfnc ))
31534 {
31535 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
31536 "%s: Invalid parameters", __func__);
31537 WDI_ASSERT(0);
31538 return WDI_STATUS_E_FAILURE;
31539 }
31540
31541 pwdiLLStatsGetReqParams = (WDI_LLStatsGetReqType*)pEventData->pEventData;
31542 wdiLLStatsGetCb = (WDI_LLStatsGetRspCb)pEventData->pCBfnc;
31543
31544 /*-----------------------------------------------------------------------
31545 Get message buffer
31546 ! TO DO : proper conversion into the HAL Message Request Format
31547 -----------------------------------------------------------------------*/
31548 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
31549 pWDICtx,
31550 WDI_LL_STATS_GET_REQ,
31551 sizeof(tHalMacLlGetStatsReqParams),
31552 &pSendBuffer, &usDataOffset,
31553 &usSendSize))||
31554 ( usSendSize < (usDataOffset + sizeof(halLLStatsGetParams) )))
31555 {
31556 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
31557 "Unable to get send buffer in %s %p %p %p", __func__,
31558 pEventData, pwdiLLStatsGetReqParams, wdiLLStatsGetCb);
31559 WDI_ASSERT(0);
31560 return WDI_STATUS_E_FAILURE;
31561 }
Dino Mycled3d50022014-07-07 12:58:25 +053031562 /* Need to fill in the self STA Index */
31563 if ( WDI_STATUS_SUCCESS !=
31564 WDI_STATableFindStaidByAddr(pWDICtx,
31565 pwdiLLStatsGetReqParams->macAddr,
31566 &halLLStatsGetParams.sta_id))
31567 {
31568 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
31569 MAC_ADDRESS_STR
31570 ": This station does not exist in the WDI Station Table",
31571 MAC_ADDR_ARRAY(pwdiLLStatsGetReqParams->macAddr));
31572
31573 wpalMemoryFree(pSendBuffer);
31574 return WDI_STATUS_E_FAILURE;
31575 }
Sunil Duttbd736ed2014-05-26 21:19:41 +053031576
31577 halLLStatsGetParams.req_id = pwdiLLStatsGetReqParams->reqId;
Sunil Duttbd736ed2014-05-26 21:19:41 +053031578 halLLStatsGetParams.param_id_mask = pwdiLLStatsGetReqParams->paramIdMask;
31579
31580 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
31581 " halLLStatsGetParams.req_id = %u",
31582 halLLStatsGetParams.req_id);
31583 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
31584 " halLLStatsGetParams.staId = %u",
31585 halLLStatsGetParams.sta_id);
31586 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
31587 " halLLStatsGetParams.Mask = %u",
31588 halLLStatsGetParams.param_id_mask);
31589
31590 wpalMemoryCopy(pSendBuffer+usDataOffset,
31591 &halLLStatsGetParams,
31592 sizeof(halLLStatsGetParams));
31593
31594 pWDICtx->pReqStatusUserData = pEventData->pUserData;
31595
31596 /*-------------------------------------------------------------------------
31597 Send Clear Link Layer Stats Request to HAL
31598 -------------------------------------------------------------------------*/
31599 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
31600 wdiLLStatsGetCb, pEventData->pUserData,
31601 WDI_LL_STATS_GET_RSP);
31602}
31603
31604/**
31605 @brief WDI_LLStatsClearReq
31606 This API is called to clear link layer stats request in FW
31607
31608 @param pwdiLLStatsClearReqParams : pointer to clear link layer request params
31609 wdiLLStatsSetRspCb : clear link layer stats resp callback
31610 usrData : Client context
31611 @see
31612 @return SUCCESS or FAIL
31613*/
31614WDI_Status
31615WDI_LLStatsClearReq(WDI_LLStatsClearReqType* pwdiLLStatsClearReqParams,
31616 WDI_LLStatsClearRspCb wdiLLStatsClearRspCb,
31617 void* pUserData)
31618{
31619 WDI_EventInfoType wdiEventData;
31620
31621 /*------------------------------------------------------------------------
31622 Sanity Check
31623 ------------------------------------------------------------------------*/
31624 if ( eWLAN_PAL_FALSE == gWDIInitialized )
31625 {
31626 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
31627 "WDI API call before module is initialized - Fail request");
31628
31629 return WDI_STATUS_E_NOT_ALLOWED;
31630 }
31631
31632 wdiEventData.wdiRequest = WDI_LL_STATS_CLEAR_REQ;
31633 wdiEventData.pEventData = pwdiLLStatsClearReqParams;
31634 wdiEventData.uEventDataSize = sizeof(*pwdiLLStatsClearReqParams);
31635 wdiEventData.pCBfnc = wdiLLStatsClearRspCb;
31636 wdiEventData.pUserData = pUserData;
31637
31638 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
31639 "%s:%d Enter", __func__, __LINE__);
31640
31641 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
31642}
31643
31644/**
31645 @brief WDI_ProcessLLStatsClearReq -
31646 Clear Link Layer Stats request to FW
31647
31648 @param pWDICtx : wdi context
31649 pEventData : indication data
31650
31651 @see
31652 @return none
31653*/
31654WDI_Status
31655WDI_ProcessLLStatsClearReq
31656(
31657 WDI_ControlBlockType* pWDICtx,
31658 WDI_EventInfoType* pEventData
31659)
31660{
31661 WDI_LLStatsClearReqType* pwdiLLStatsClearReqParams;
31662 WDI_LLStatsClearRspCb wdiLLStatsClearCb;
31663 wpt_uint8* pSendBuffer = NULL;
31664 wpt_uint16 usSendSize = 0;
31665 wpt_uint16 usDataOffset = 0;
31666 tHalMacLlClearStatsReqParams halLLStatsClearParams;
31667
31668 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
31669 ( NULL == pEventData->pCBfnc ))
31670 {
31671 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
31672 "%s: Invalid parameters", __func__);
31673 WDI_ASSERT(0);
31674 return WDI_STATUS_E_FAILURE;
31675 }
31676
31677 pwdiLLStatsClearReqParams = (WDI_LLStatsClearReqType*)pEventData->pEventData;
31678 wdiLLStatsClearCb = (WDI_LLStatsClearRspCb)pEventData->pCBfnc;
31679
31680 /*-----------------------------------------------------------------------
31681 Get message buffer
31682 ! TO DO : proper conversion into the HAL Message Request Format
31683 -----------------------------------------------------------------------*/
31684 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
31685 pWDICtx,
31686 WDI_LL_STATS_CLEAR_REQ,
31687 sizeof(tHalMacLlClearStatsReqParams),
31688 &pSendBuffer, &usDataOffset,
31689 &usSendSize))||
31690 ( usSendSize < (usDataOffset + sizeof(halLLStatsClearParams) )))
31691 {
31692 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
31693 "Unable to get send buffer in %s %p %p %p", __func__,
31694 pEventData, pwdiLLStatsClearReqParams, wdiLLStatsClearCb);
31695 WDI_ASSERT(0);
31696 return WDI_STATUS_E_FAILURE;
31697 }
Dino Mycled3d50022014-07-07 12:58:25 +053031698 /* Need to fill in the self STA Index */
31699 if ( WDI_STATUS_SUCCESS !=
31700 WDI_STATableFindStaidByAddr(pWDICtx,
31701 pwdiLLStatsClearReqParams->macAddr,
31702 &halLLStatsClearParams.sta_id))
31703 {
31704 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
31705 MAC_ADDRESS_STR
31706 ": This station does not exist in the WDI Station Table",
31707 MAC_ADDR_ARRAY(pwdiLLStatsClearReqParams->macAddr));
31708
31709 wpalMemoryFree(pSendBuffer);
31710 return WDI_STATUS_E_FAILURE;
31711 }
Sunil Duttbd736ed2014-05-26 21:19:41 +053031712
31713 halLLStatsClearParams.req_id = pwdiLLStatsClearReqParams->reqId;
Sunil Duttbd736ed2014-05-26 21:19:41 +053031714 halLLStatsClearParams.stats_clear_req_mask =
31715 pwdiLLStatsClearReqParams->statsClearReqMask;
31716 halLLStatsClearParams.stop_req = pwdiLLStatsClearReqParams->stopReq;
31717
31718 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
31719 "%s:HAL req_id = %d", __func__, halLLStatsClearParams.req_id);
31720 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
31721 "%s: HAL sta_id = %d", __func__, halLLStatsClearParams.sta_id);
31722 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
31723 "%s: HAL stats_clear_req_mask = 0x%X", __func__,
31724 halLLStatsClearParams.stats_clear_req_mask);
31725 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
31726 "%s: HAL stop_req = %d", __func__, halLLStatsClearParams.stop_req);
31727
31728 wpalMemoryCopy(pSendBuffer+usDataOffset,
31729 &halLLStatsClearParams,
31730 sizeof(halLLStatsClearParams));
31731
31732 pWDICtx->pReqStatusUserData = pEventData->pUserData;
31733
31734 /*-------------------------------------------------------------------------
31735 Send Clear Link Layer Stats Request to HAL
31736 -------------------------------------------------------------------------*/
31737 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
31738 wdiLLStatsClearCb, pEventData->pUserData,
31739 WDI_LL_STATS_CLEAR_RSP);
31740}
31741#endif /* WLAN_FEATURE_LINK_LAYER_STATS */
Dino Mycle41bdc942014-06-10 11:30:24 +053031742
Abhishek Singh85b74712014-10-08 11:38:19 +053031743WDI_Status WDI_FWStatsGetReq( void* pUserData,
31744 WDI_FWStatsGetRspCb wdiFWStatsGetRspCb,
31745 wpt_uint32 stats)
31746{
31747 WDI_EventInfoType wdiEventData;
31748
31749 /*------------------------------------------------------------------------
31750 Sanity Check
31751 ------------------------------------------------------------------------*/
31752 if ( eWLAN_PAL_FALSE == gWDIInitialized )
31753 {
31754 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
31755 "WDI API call before module is initialized - Fail request");
31756 return WDI_STATUS_E_NOT_ALLOWED;
31757 }
31758 /*------------------------------------------------------------------------
31759 Fill in Event data and post to the Main FSM
31760 ------------------------------------------------------------------------*/
31761 wdiEventData.wdiRequest = WDI_GET_FW_STATS_REQ;
31762 wdiEventData.pEventData = (void *)&stats;
31763 wdiEventData.uEventDataSize = sizeof(wpt_uint32);
31764 wdiEventData.pCBfnc = wdiFWStatsGetRspCb;
31765 wdiEventData.pUserData = pUserData;
31766
31767 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
31768
31769}
31770
Dino Mycle41bdc942014-06-10 11:30:24 +053031771#ifdef WLAN_FEATURE_EXTSCAN
31772
31773/**
31774 @brief Process EXTSCAN BUffer full indication from FW
31775
31776 @param pWDICtx: pointer to the WLAN DAL context
31777 pEventData: pointer to the event information structure
31778
31779 @see
31780 @return Result of the function call
31781*/
31782WDI_Status
31783WDI_ProcessEXTScanProgressInd
31784(
31785 WDI_ControlBlockType* pWDICtx,
31786 WDI_EventInfoType* pEventData
31787)
31788{
31789 WDI_LowLevelIndType wdiInd;
31790 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
31791
31792 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
31793 "%s: ", __func__);
31794
31795 /* sanity check */
31796 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
31797 ( NULL == pEventData->pEventData))
31798 {
31799 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
31800 "%s: Invalid parameters", __func__);
31801 WDI_ASSERT(0);
31802 return WDI_STATUS_E_FAILURE;
31803 }
31804
31805 /* Fill in the indication parameters */
31806 wdiInd.wdiIndicationType = WDI_EXTSCAN_PROGRESS_IND;
31807
31808 /* extract response and send it to UMAC */
31809 wdiInd.wdiIndicationData.pEXTScanIndData = (void *)pEventData->pEventData;
31810
31811 /* Notify UMAC */
31812 if (pWDICtx->wdiLowLevelIndCB)
31813 {
31814 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
31815 }
31816 else
31817 {
Dino Mycled3d50022014-07-07 12:58:25 +053031818 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
Dino Mycle41bdc942014-06-10 11:30:24 +053031819 "%s: WDILowLevelIndCb is null", __func__);
31820 WDI_ASSERT(0);
31821 return WDI_STATUS_E_FAILURE;
31822 }
31823 return WDI_STATUS_SUCCESS;
31824
31825} /* End of WDI_ProcessEXTScanProgressInd */
31826
31827
31828/**
31829 @brief Process EXTScan Scan Available indication from FW
31830
31831 @param pWDICtx: pointer to the WLAN DAL context
31832 pEventData: pointer to the event information structure
31833
31834 @see
31835 @return Result of the function call
31836*/
31837WDI_Status
31838WDI_ProcessEXTScanScanAvailableInd
31839(
31840 WDI_ControlBlockType* pWDICtx,
31841 WDI_EventInfoType* pEventData
31842)
31843{
31844 WDI_LowLevelIndType wdiInd;
31845 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
31846
31847 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
31848 "%s: ", __func__);
31849
31850 /* sanity check */
31851 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
31852 ( NULL == pEventData->pEventData))
31853 {
31854 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
31855 "%s: Invalid parameters", __func__);
31856 WDI_ASSERT(0);
31857 return WDI_STATUS_E_FAILURE;
31858 }
31859
31860
31861
31862 /* Fill in the indication parameters */
31863 wdiInd.wdiIndicationType = WDI_EXTSCAN_SCAN_AVAILABLE_IND;
31864
31865 /* extract response and send it to UMAC */
31866 wdiInd.wdiIndicationData.pEXTScanIndData = (void *)pEventData->pEventData;
31867
31868 /* Notify UMAC */
31869 if (pWDICtx->wdiLowLevelIndCB)
31870 {
31871 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
31872 }
31873 else
31874 {
31875 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
31876 "%s: WDILowLevelIndCb is null", __func__);
31877 WDI_ASSERT(0);
31878 return WDI_STATUS_E_FAILURE;
31879 }
31880 return WDI_STATUS_SUCCESS;
31881} /* End of WDI_ProcessEXTScanScanDoneInd */
31882
31883/**
31884 @brief Process EXTScan Result Indication indication from FW
31885
31886 @param pWDICtx: pointer to the WLAN DAL context
31887 pEventData: pointer to the event information structure
31888
31889 @see
31890 @return Result of the function call
31891*/
31892WDI_Status
31893WDI_ProcessEXTScanResultInd
31894(
31895 WDI_ControlBlockType* pWDICtx,
31896 WDI_EventInfoType* pEventData
31897)
31898{
31899 WDI_LowLevelIndType wdiInd;
31900 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
31901
31902 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
31903 "%s: ", __func__);
31904
31905 /* sanity check */
31906 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
31907 ( NULL == pEventData->pEventData))
31908 {
31909 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
31910 "%s: Invalid parameters", __func__);
31911 WDI_ASSERT(0);
31912 return WDI_STATUS_E_FAILURE;
31913 }
31914
31915 /* Fill in the indication parameters */
31916 wdiInd.wdiIndicationType = WDI_EXTSCAN_SCAN_RESULT_IND;
31917
31918 /* extract response and send it to UMAC */
31919 wdiInd.wdiIndicationData.pEXTScanIndData = (void *)pEventData->pEventData;
31920
31921 /* Notify UMAC */
31922 if (pWDICtx->wdiLowLevelIndCB)
31923 {
31924 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
31925 }
31926 else
31927 {
31928 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
31929 "%s: WDILowLevelIndCb is null", __func__);
31930 WDI_ASSERT(0);
31931 return WDI_STATUS_E_FAILURE;
31932 }
31933 return WDI_STATUS_SUCCESS;
31934} /* End of WDI_ProcessEXTScanResultInd */
31935
31936/**
31937 @brief Process EXTScan BSSID Hotlist Result Indication indication from FW
31938
31939 @param pWDICtx: pointer to the WLAN DAL context
31940 pEventData: pointer to the event information structure
31941
31942 @see
31943 @return Result of the function call
31944*/
31945WDI_Status
31946WDI_ProcessEXTScanBssidHotListResultInd
31947(
31948 WDI_ControlBlockType* pWDICtx,
31949 WDI_EventInfoType* pEventData
31950)
31951{
31952 WDI_LowLevelIndType wdiInd;
31953 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
31954
31955 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
31956 "%s: ", __func__);
31957
31958 /* sanity check */
31959 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
31960 ( NULL == pEventData->pEventData))
31961 {
31962 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
31963 "%s: Invalid parameters", __func__);
31964 WDI_ASSERT(0);
31965 return WDI_STATUS_E_FAILURE;
31966 }
31967
31968 /* Fill in the indication parameters */
31969 wdiInd.wdiIndicationType = WDI_EXTSCAN_BSSID_HOTLIST_RESULT_IND;
31970
31971 /* extract response and send it to UMAC */
31972 wdiInd.wdiIndicationData.pEXTScanIndData = (void *)pEventData->pEventData;
31973
31974 /* Notify UMAC */
31975 if (pWDICtx->wdiLowLevelIndCB)
31976 {
31977 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
31978 }
31979 else
31980 {
31981 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
31982 "%s: WDILowLevelIndCb is null", __func__);
31983 WDI_ASSERT(0);
31984 return WDI_STATUS_E_FAILURE;
31985 }
31986 return WDI_STATUS_SUCCESS;
31987} /* End of WDI_ProcessEXTScanBssidHotListResultInd */
31988
31989/**
31990 @brief Process EXTScan Significant RSSI Result Indication indication from FW
31991
31992 @param pWDICtx: pointer to the WLAN DAL context
31993 pEventData: pointer to the event information structure
31994
31995 @see
31996 @return Result of the function call
31997*/
31998WDI_Status
31999WDI_ProcessEXTScanSignfRssiResultInd
32000(
32001 WDI_ControlBlockType* pWDICtx,
32002 WDI_EventInfoType* pEventData
32003)
32004{
32005 WDI_LowLevelIndType wdiInd;
32006 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
32007
32008 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32009 "%s: ", __func__);
32010
32011 /* sanity check */
32012 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
32013 ( NULL == pEventData->pEventData))
32014 {
32015 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
32016 "%s: Invalid parameters", __func__);
32017 WDI_ASSERT(0);
32018 return WDI_STATUS_E_FAILURE;
32019 }
32020
32021 /* Fill in the indication parameters */
32022 wdiInd.wdiIndicationType = WDI_EXTSCAN_SIGN_RSSI_RESULT_IND;
32023
32024 /* extract response and send it to UMAC */
32025 wdiInd.wdiIndicationData.pEXTScanIndData = (void *)pEventData->pEventData;
32026
32027 /* Notify UMAC */
32028 if (pWDICtx->wdiLowLevelIndCB)
32029 {
32030 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
32031 }
32032 else
32033 {
32034 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32035 "%s: WDILowLevelIndCb is null", __func__);
32036 WDI_ASSERT(0);
32037 return WDI_STATUS_E_FAILURE;
32038 }
32039 return WDI_STATUS_SUCCESS;
32040} /* End of WDI_ProcessEXTScanSignfRssiResultInd */
32041
32042/**
32043 @brief WDI_EXTScanGetCapabilitiesReq
32044
32045 @param WDI_EXTScanGetCapabilitiesReqParams: Req parameter for the FW
32046 WDI_EXTScanGetCapabilitiesRspCb: callback for passing back the response
32047 of the Req operation received from the device
32048 pUserData: user data will be passed back with the callback
32049
32050 @return SUCCESS or FAIL
32051*/
32052WDI_Status
32053WDI_EXTScanGetCapabilitiesReq(
32054 WDI_EXTScanGetCapabilitiesReqParams* pwdiEXTScanGetCapabilitiesReqParams,
32055 WDI_EXTScanGetCapabilitiesRspCb wdiEXTScanGetCapabilitiesRspCb,
32056 void* pUserData)
32057{
32058 WDI_EventInfoType wdiEventData;
32059
32060 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32061 "%s: %d ",__func__, __LINE__);
32062 /*------------------------------------------------------------------------
32063 Sanity Check
32064 ------------------------------------------------------------------------*/
32065 if ( eWLAN_PAL_FALSE == gWDIInitialized )
32066 {
32067 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
32068 "WDI API call before module is initialized - Fail request");
32069
32070 return WDI_STATUS_E_NOT_ALLOWED;
32071 }
32072
32073 wdiEventData.wdiRequest = WDI_EXTSCAN_GET_CAPABILITIES_REQ;
32074 wdiEventData.pEventData = pwdiEXTScanGetCapabilitiesReqParams;
32075 wdiEventData.uEventDataSize = sizeof(*pwdiEXTScanGetCapabilitiesReqParams);
32076 wdiEventData.pCBfnc = wdiEXTScanGetCapabilitiesRspCb;
32077 wdiEventData.pUserData = pUserData;
32078
32079 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
32080}
32081
32082/**
32083 @brief WDI_ProcessEXTScanGetCapabilitiesReq -
32084 Extended Scan Get Capability request to FW
32085
32086 @param pWDICtx : wdi context
32087 pEventData : indication data
32088
32089 @see
32090 @return none
32091*/
32092WDI_Status
32093WDI_ProcessEXTScanGetCapabilitiesReq
32094(
32095 WDI_ControlBlockType* pWDICtx,
32096 WDI_EventInfoType* pEventData
32097)
32098{
32099 WDI_EXTScanGetCapabilitiesReqParams* pwdiEXTScanGetCapabilitiesReqParams;
32100 WDI_EXTScanGetCapabilitiesRspCb wdiEXTScanGetCapabilitiesRspCb;
32101 wpt_uint8* pSendBuffer = NULL;
32102 wpt_uint16 usSendSize = 0;
32103 wpt_uint16 usDataOffset = 0;
32104 tHalExtScanGetCapReq halEXTScanGetCapReqParams;
32105
32106 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32107 "%s: %d Enter",__func__, __LINE__);
32108
32109 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
32110 ( NULL == pEventData->pCBfnc ))
32111 {
32112 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32113 "%s: Invalid parameters", __func__);
32114 WDI_ASSERT(0);
32115 return WDI_STATUS_E_FAILURE;
32116 }
32117
32118 pwdiEXTScanGetCapabilitiesReqParams =
32119 (WDI_EXTScanGetCapabilitiesReqParams* )pEventData->pEventData;
32120 wdiEXTScanGetCapabilitiesRspCb =
32121 (WDI_EXTScanGetCapabilitiesRspCb)pEventData->pCBfnc;
32122
32123 /*-----------------------------------------------------------------------
32124 Get message buffer
32125 ! TO DO : proper conversion into the HAL Message Request Format
32126 -----------------------------------------------------------------------*/
32127 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
32128 pWDICtx,
32129 WDI_EXTSCAN_GET_CAPABILITIES_REQ,
32130 sizeof(halEXTScanGetCapReqParams),
32131 &pSendBuffer, &usDataOffset,
32132 &usSendSize))||
32133 ( usSendSize < (usDataOffset + sizeof(halEXTScanGetCapReqParams) )))
32134 {
32135 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32136 "Unable to get send buffer in %s %p %p %p", __func__,
32137 pEventData, pwdiEXTScanGetCapabilitiesReqParams,
32138 wdiEXTScanGetCapabilitiesRspCb);
32139 WDI_ASSERT(0);
32140 return WDI_STATUS_E_FAILURE;
32141 }
32142
32143 halEXTScanGetCapReqParams.requestId =
32144 pwdiEXTScanGetCapabilitiesReqParams->requestId;
32145 halEXTScanGetCapReqParams.sessionId =
32146 pwdiEXTScanGetCapabilitiesReqParams->sessionId;
32147
32148 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32149 " requestId %u "
32150 " sessionId %u ",
32151 halEXTScanGetCapReqParams.requestId,
32152 halEXTScanGetCapReqParams.sessionId);
32153
32154 wpalMemoryCopy(pSendBuffer+usDataOffset,
32155 &halEXTScanGetCapReqParams,
32156 sizeof(halEXTScanGetCapReqParams));
32157
32158 pWDICtx->pReqStatusUserData = pEventData->pUserData;
32159
32160
32161 /*-------------------------------------------------------------------------
32162 Send EXTScan Stop Request to HAL
32163 -------------------------------------------------------------------------*/
32164 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
32165 wdiEXTScanGetCapabilitiesRspCb, pEventData->pUserData,
32166 WDI_EXTSCAN_GET_CAPABILITIES_RSP);
32167}
32168
32169/**
32170 @brief WDI_EXTScanGetCachedResultsReq
32171
32172 @param WDI_EXTScanGetCachedResultsReqParams: Req parameter for the FW
32173 WDI_EXTScanGetCachedResultsRspCb: callback for passing back the response
32174 of the Req operation received from the device
32175 pUserData: user data will be passed back with the callback
32176
32177 @return SUCCESS or FAIL
32178*/
32179
32180WDI_Status
32181WDI_EXTScanGetCachedResultsReq(
32182 WDI_EXTScanGetCachedResultsReqParams* pwdiEXTScanGetCachedResultsReqParams,
32183 WDI_EXTScanGetCachedResultsRspCb wdiEXTScanGetCachedResultsRspCb,
32184 void* pUserData)
32185{
32186 WDI_EventInfoType wdiEventData;
32187
32188 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32189 "%s: %d Enter",__func__, __LINE__);
32190 /*------------------------------------------------------------------------
32191 Sanity Check
32192 ------------------------------------------------------------------------*/
32193 if ( eWLAN_PAL_FALSE == gWDIInitialized )
32194 {
32195 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
32196 "WDI API call before module is initialized - Fail request");
32197
32198 return WDI_STATUS_E_NOT_ALLOWED;
32199 }
32200
32201 wdiEventData.wdiRequest = WDI_EXTSCAN_GET_CACHED_RESULTS_REQ;
32202 wdiEventData.pEventData = pwdiEXTScanGetCachedResultsReqParams;
32203 wdiEventData.uEventDataSize = sizeof(*pwdiEXTScanGetCachedResultsReqParams);
32204 wdiEventData.pCBfnc = wdiEXTScanGetCachedResultsRspCb;
32205 wdiEventData.pUserData = pUserData;
32206
32207 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
32208}
32209
32210/**
32211 @brief WDI_ProcessEXTScanGetCachedResultsReq -
32212 Extended Scan Get Cached Result request to FW
32213
32214 @param pWDICtx : wdi context
32215 pEventData : indication data
32216
32217 @see
32218 @return none
32219*/
32220WDI_Status
32221WDI_ProcessEXTScanGetCachedResultsReq
32222(
32223 WDI_ControlBlockType* pWDICtx,
32224 WDI_EventInfoType* pEventData
32225)
32226{
32227 WDI_EXTScanGetCachedResultsReqParams* pwdiEXTScanGetCachedResultsReqParams;
32228 WDI_EXTScanGetCachedResultsRspCb wdiEXTScanGetCachedResultsCb;
32229 wpt_uint8* pSendBuffer = NULL;
32230 wpt_uint16 usSendSize = 0;
32231 wpt_uint16 usDataOffset = 0;
32232 tHalExtScanGetScanReq halEXTScanGetScanReqParams;
32233
32234 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32235 "%s: %d Enter",__func__, __LINE__);
32236
32237 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
32238 ( NULL == pEventData->pCBfnc ))
32239 {
32240 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32241 "%s: Invalid parameters", __func__);
32242 WDI_ASSERT(0);
32243 return WDI_STATUS_E_FAILURE;
32244 }
32245
32246 pwdiEXTScanGetCachedResultsReqParams =
32247 (WDI_EXTScanGetCachedResultsReqParams*)pEventData->pEventData;
32248 wdiEXTScanGetCachedResultsCb =
32249 (WDI_EXTScanGetCachedResultsRspCb)pEventData->pCBfnc;
32250
32251 /*-----------------------------------------------------------------------
32252 Get message buffer
32253 ! TO DO : proper conversion into the HAL Message Request Format
32254 -----------------------------------------------------------------------*/
32255 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
32256 pWDICtx,
32257 WDI_EXTSCAN_GET_CACHED_RESULTS_REQ,
32258 sizeof(tHalExtScanGetScanReq),
32259 &pSendBuffer, &usDataOffset,
32260 &usSendSize))||
32261 ( usSendSize < (usDataOffset + sizeof(halEXTScanGetScanReqParams) )))
32262 {
32263 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32264 "Unable to get send buffer in %s %p %p %p", __func__,
32265 pEventData, pwdiEXTScanGetCachedResultsReqParams,
32266 wdiEXTScanGetCachedResultsCb);
32267 WDI_ASSERT(0);
32268 return WDI_STATUS_E_FAILURE;
32269 }
32270
32271 halEXTScanGetScanReqParams.requestId =
32272 pwdiEXTScanGetCachedResultsReqParams->requestId;
32273 halEXTScanGetScanReqParams.sessionId =
32274 pwdiEXTScanGetCachedResultsReqParams->sessionId;
32275 halEXTScanGetScanReqParams.flush =
32276 pwdiEXTScanGetCachedResultsReqParams->flush;
32277
32278 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32279 " requestId %u "
32280 " sessionId %u "
32281 " flush %u ",
32282 halEXTScanGetScanReqParams.requestId,
32283 halEXTScanGetScanReqParams.sessionId,
32284 halEXTScanGetScanReqParams.flush);
32285
32286 wpalMemoryCopy(pSendBuffer+usDataOffset,
32287 &halEXTScanGetScanReqParams,
32288 sizeof(halEXTScanGetScanReqParams));
32289
32290 pWDICtx->pReqStatusUserData = pEventData->pUserData;
32291
32292
32293 /*-------------------------------------------------------------------------
32294 Send EXTScan Stop Request to HAL
32295 -------------------------------------------------------------------------*/
32296 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
32297 wdiEXTScanGetCachedResultsCb, pEventData->pUserData,
32298 WDI_EXTSCAN_GET_CACHED_RESULTS_RSP);
32299}
32300
32301/**
32302 @brief WDI_EXTScanStopReq
32303
32304 @param WDI_EXTScanStopReqParams: Req parameter for the FW
32305 WDI_EXTScanStopRspCb: callback for passing back the response
32306 of the Req operation received from the device
32307 pUserData: user data will be passed back with the callback
32308
32309 @return SUCCESS or FAIL
32310*/
32311WDI_Status
32312WDI_EXTScanStopReq(WDI_EXTScanStopReqParams* pwdiEXTScanStopReqParams,
32313 WDI_EXTScanStopRspCb wdiEXTScanStopRspCb,
32314 void* pUserData)
32315{
32316 WDI_EventInfoType wdiEventData;
32317
32318 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32319 "%s: %d ",__func__, __LINE__);
32320 /*------------------------------------------------------------------------
32321 Sanity Check
32322 ------------------------------------------------------------------------*/
32323 if ( eWLAN_PAL_FALSE == gWDIInitialized )
32324 {
32325 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
32326 "WDI API call before module is initialized - Fail request");
32327
32328 return WDI_STATUS_E_NOT_ALLOWED;
32329 }
32330
32331 wdiEventData.wdiRequest = WDI_EXTSCAN_STOP_REQ;
32332 wdiEventData.pEventData = pwdiEXTScanStopReqParams;
32333 wdiEventData.uEventDataSize = sizeof(*pwdiEXTScanStopReqParams);
32334 wdiEventData.pCBfnc = wdiEXTScanStopRspCb;
32335 wdiEventData.pUserData = pUserData;
32336
32337 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
32338}
32339
32340/**
32341 @brief WDI_ProcessEXTScanStopReq -
32342 Extended Scan Stop request to FW
32343
32344 @param pWDICtx : wdi context
32345 pEventData : indication data
32346
32347 @see
32348 @return none
32349*/
32350WDI_Status
32351WDI_ProcessEXTScanStopReq
32352(
32353 WDI_ControlBlockType* pWDICtx,
32354 WDI_EventInfoType* pEventData
32355)
32356{
32357 WDI_EXTScanStopReqParams* pwdiEXTScanStopReqParams;
32358 WDI_EXTScanStopRspCb wdiEXTScanStopCb;
32359 wpt_uint8* pSendBuffer = NULL;
32360 wpt_uint16 usSendSize = 0;
32361 wpt_uint16 usDataOffset = 0;
32362 tHalExtScanStopReq halEXTScanStopReqParams;
32363
32364 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32365 "%s: %d ",__func__, __LINE__);
32366
32367 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
32368 ( NULL == pEventData->pCBfnc ))
32369 {
32370 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32371 "%s: Invalid parameters", __func__);
32372 WDI_ASSERT(0);
32373 return WDI_STATUS_E_FAILURE;
32374 }
32375
32376 pwdiEXTScanStopReqParams = (WDI_EXTScanStopReqParams*)pEventData->pEventData;
32377 wdiEXTScanStopCb = (WDI_EXTScanStopRspCb)pEventData->pCBfnc;
32378
32379 /*-----------------------------------------------------------------------
32380 Get message buffer
32381 ! TO DO : proper conversion into the HAL Message Request Format
32382 -----------------------------------------------------------------------*/
32383 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
32384 pWDICtx,
32385 WDI_EXTSCAN_STOP_REQ,
32386 sizeof(tHalExtScanStopReq),
32387 &pSendBuffer, &usDataOffset,
32388 &usSendSize))||
32389 ( usSendSize < (usDataOffset + sizeof(halEXTScanStopReqParams) )))
32390 {
32391 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32392 "Unable to get send buffer in %s %p %p %p", __func__,
32393 pEventData, pwdiEXTScanStopReqParams, wdiEXTScanStopCb);
32394 WDI_ASSERT(0);
32395 return WDI_STATUS_E_FAILURE;
32396 }
32397
32398 halEXTScanStopReqParams.requestId =
32399 pwdiEXTScanStopReqParams->requestId;
32400 halEXTScanStopReqParams.sessionId =
32401 pwdiEXTScanStopReqParams->sessionId;
32402
32403 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32404 " halEXTScanStopReqParams.requestId %u "
32405 " halEXTScanStopReqParams.sessionId %u ",
32406 halEXTScanStopReqParams.requestId,
32407 halEXTScanStopReqParams.sessionId);
32408
32409 wpalMemoryCopy(pSendBuffer+usDataOffset,
32410 &halEXTScanStopReqParams,
32411 sizeof(halEXTScanStopReqParams));
32412
32413 pWDICtx->pReqStatusUserData = pEventData->pUserData;
32414
32415
32416 /*-------------------------------------------------------------------------
32417 Send EXTScan Stop Request to HAL
32418 -------------------------------------------------------------------------*/
32419 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
32420 wdiEXTScanStopCb, pEventData->pUserData,
32421 WDI_EXTSCAN_STOP_RSP);
32422}
32423
32424/**
32425 @brief WDI_EXTScanStartReq
32426
32427 @param WDI_EXTScanStartReqParams: Req parameter for the FW
32428 WDI_EXTScanStartRspCb: callback for passing back the response
32429 of the Req operation received from the device
32430 pUserData: user data will be passed back with the callback
32431
32432 @return SUCCESS or FAIL
32433*/
32434WDI_Status
32435WDI_EXTScanStartReq(WDI_EXTScanStartReqParams* pwdiEXTScanStartReqParams,
32436 WDI_EXTScanStartRspCb wdiEXTScanStartRspCb,
32437 void* pUserData)
32438{
32439 WDI_EventInfoType wdiEventData;
32440
32441 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32442 "%s: %d Enter",__func__, __LINE__);
32443 /*------------------------------------------------------------------------
32444 Sanity Check
32445 ------------------------------------------------------------------------*/
32446 if ( eWLAN_PAL_FALSE == gWDIInitialized )
32447 {
32448 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
32449 "WDI API call before module is initialized - Fail request");
32450
32451 return WDI_STATUS_E_NOT_ALLOWED;
32452 }
32453
32454 wdiEventData.wdiRequest = WDI_EXTSCAN_START_REQ;
32455 wdiEventData.pEventData = pwdiEXTScanStartReqParams;
32456 wdiEventData.uEventDataSize = sizeof(*pwdiEXTScanStartReqParams);
32457 wdiEventData.pCBfnc = wdiEXTScanStartRspCb;
32458 wdiEventData.pUserData = pUserData;
32459
32460 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
32461}
32462
32463/**
32464 @brief WDI_ProcessEXTScanStartReq -
32465 Extended Scan Start Request to FW
32466
32467 @param pWDICtx : wdi context
32468 pEventData : indication data
32469
32470 @see
32471 @return none
32472*/
32473WDI_Status
32474WDI_ProcessEXTScanStartReq
32475(
32476 WDI_ControlBlockType* pWDICtx,
32477 WDI_EventInfoType* pEventData
32478)
32479{
32480 WDI_EXTScanStartReqParams* pwdiEXTScanStartReqParams;
32481 WDI_EXTScanStartRspCb wdiEXTScanStartCb;
32482 wpt_uint8* pSendBuffer = NULL;
32483 wpt_uint16 usSendSize = 0;
32484 wpt_uint16 usDataOffset = 0;
32485 tpHalExtScanStartReq pHalExtScanStartReqParams;
32486 int i = 0;
32487 int j = 0;
32488
32489 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32490 "%s: %d Enter",__func__, __LINE__);
32491
32492 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
32493 ( NULL == pEventData->pCBfnc ))
32494 {
32495 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32496 "%s: Invalid parameters", __func__);
32497 WDI_ASSERT(0);
32498 return WDI_STATUS_E_FAILURE;
32499 }
32500
32501 pwdiEXTScanStartReqParams =
32502 (WDI_EXTScanStartReqParams*)pEventData->pEventData;
32503 wdiEXTScanStartCb = (WDI_EXTScanStartRspCb)pEventData->pCBfnc;
32504
32505 /*-----------------------------------------------------------------------
32506 Get message buffer
32507 ! TO DO : proper conversion into the HAL Message Request Format
32508 -----------------------------------------------------------------------*/
32509 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
32510 pWDICtx,
32511 WDI_EXTSCAN_START_REQ,
32512 sizeof(tHalExtScanStartReq),
32513 &pSendBuffer, &usDataOffset,
32514 &usSendSize))||
32515 ( usSendSize < (usDataOffset + sizeof(tHalExtScanStartReq) )))
32516 {
32517 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32518 "Unable to get send buffer in %s %p %p %p", __func__,
32519 pEventData, pwdiEXTScanStartReqParams, wdiEXTScanStartCb);
32520 WDI_ASSERT(0);
32521 return WDI_STATUS_E_FAILURE;
32522 }
32523
32524 pHalExtScanStartReqParams =
32525 (tpHalExtScanStartReq ) (pSendBuffer + usDataOffset);
32526
32527 pHalExtScanStartReqParams->basePeriod = pwdiEXTScanStartReqParams->basePeriod;
32528 pHalExtScanStartReqParams->maxApPerScan =
32529 pwdiEXTScanStartReqParams->maxAPperScan;
32530 pHalExtScanStartReqParams->reportThreshold =
32531 pwdiEXTScanStartReqParams->reportThreshold;
32532 pHalExtScanStartReqParams->requestId = pwdiEXTScanStartReqParams->requestId;
32533 pHalExtScanStartReqParams->sessionId = pwdiEXTScanStartReqParams->sessionId;
32534 pHalExtScanStartReqParams->numBuckets = pwdiEXTScanStartReqParams->numBuckets;
32535
32536 for( i = 0; i < WDI_WLAN_EXTSCAN_MAX_BUCKETS ; i++ )
32537 {
32538 pHalExtScanStartReqParams->bucketData[i].bucketId =
32539 pwdiEXTScanStartReqParams->buckets[i].bucket;
32540 pHalExtScanStartReqParams->bucketData[i].channelBand =
32541 pwdiEXTScanStartReqParams->buckets[i].band;
32542 pHalExtScanStartReqParams->bucketData[i].period =
32543 pwdiEXTScanStartReqParams->buckets[i].period;
32544 pHalExtScanStartReqParams->bucketData[i].reportEvents =
32545 pwdiEXTScanStartReqParams->buckets[i].reportEvents;
32546 pHalExtScanStartReqParams->bucketData[i].numChannels =
32547 pwdiEXTScanStartReqParams->buckets[i].numChannels;
32548
32549 for( j = 0; j< WDI_WLAN_EXTSCAN_MAX_CHANNELS; j++)
32550 {
32551 pHalExtScanStartReqParams->bucketData[i].channelList[j].channel =
32552 pwdiEXTScanStartReqParams->buckets[i].channels[j].channel;
32553 pHalExtScanStartReqParams->bucketData[i].channelList[j].dwellTimeMs =
32554 pwdiEXTScanStartReqParams->buckets[i].channels[j].dwellTimeMs;
32555 pHalExtScanStartReqParams->bucketData[i].channelList[j].passive =
32556 pwdiEXTScanStartReqParams->buckets[i].channels[j].passive;
32557 }
32558
32559 }
32560
32561
32562 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32563 " basePeriod %u maxApPerScan %u reportThreshold %u requestId %u"
32564 " sessionId %u numBuckets%u ",
32565 pHalExtScanStartReqParams->basePeriod,
32566 pHalExtScanStartReqParams->maxApPerScan,
32567 pHalExtScanStartReqParams->reportThreshold,
32568 pHalExtScanStartReqParams->requestId,
32569 pHalExtScanStartReqParams->sessionId,
32570 pHalExtScanStartReqParams->numBuckets);
32571
32572 for( i = 0; i < pHalExtScanStartReqParams->numBuckets ; i++ )
32573 {
32574 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO ,
32575 " %d) bucketId %u channelBand %u period %u "
32576 " reportEvents %u numChannels %u ",i,
32577 pHalExtScanStartReqParams->bucketData[i].bucketId,
32578 pHalExtScanStartReqParams->bucketData[i].channelBand,
32579 pHalExtScanStartReqParams->bucketData[i].period,
32580 pHalExtScanStartReqParams->bucketData[i].reportEvents,
32581 pHalExtScanStartReqParams->bucketData[i].numChannels);
32582
32583 for( j = 0; j< pHalExtScanStartReqParams->bucketData[i].numChannels; j++)
32584 {
32585 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32586 "%d) channel %u dwellTimeMs %u passive %u ",j,
32587 pHalExtScanStartReqParams->bucketData[i].channelList[j].channel,
32588 pHalExtScanStartReqParams->bucketData[i].channelList[j].dwellTimeMs,
32589 pHalExtScanStartReqParams->bucketData[i].channelList[j].passive);
32590 }
32591
32592 }
32593
Dino Mycle41bdc942014-06-10 11:30:24 +053032594 pWDICtx->pReqStatusUserData = pEventData->pUserData;
32595
32596 /*-------------------------------------------------------------------------
32597 Send EXTSCAN Start Request to HAL
32598 -------------------------------------------------------------------------*/
32599 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
32600 wdiEXTScanStartCb, pEventData->pUserData,
32601 WDI_EXTSCAN_START_RSP);
32602}
32603
32604/**
32605 @brief WDI_EXTScanSetBSSIDHotlistReq
32606
32607 @param WDI_EXTScanSetBSSIDHotlistReqParams: Req parameter for the FW
32608 WDI_EXTScanSetBSSIDHotlistRspCb: callback for passing back the response
32609 of the Req operation received from the device
32610 pUserData: user data will be passed back with the callback
32611
32612 @return SUCCESS or FAIL
32613*/
32614WDI_Status
32615WDI_EXTScanSetBSSIDHotlistReq(
32616 WDI_EXTScanSetBSSIDHotlistReqParams* pwdiEXTScanSetBSSIDHotlistReqParams,
32617 WDI_EXTScanSetBSSIDHotlistRspCb wdiEXTScanSetBSSIDHotlistRspCb,
32618 void* pUserData)
32619{
32620 WDI_EventInfoType wdiEventData;
32621
32622 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32623 "%s: %d Enter ",__func__, __LINE__);
32624 /*------------------------------------------------------------------------
32625 Sanity Check
32626 ------------------------------------------------------------------------*/
32627 if ( eWLAN_PAL_FALSE == gWDIInitialized )
32628 {
32629 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
32630 "WDI API call before module is initialized - Fail request");
32631
32632 return WDI_STATUS_E_NOT_ALLOWED;
32633 }
32634
32635 wdiEventData.wdiRequest = WDI_EXTSCAN_SET_BSSID_HOTLIST_REQ;
32636 wdiEventData.pEventData = pwdiEXTScanSetBSSIDHotlistReqParams;
32637 wdiEventData.uEventDataSize = sizeof(*pwdiEXTScanSetBSSIDHotlistReqParams);
32638 wdiEventData.pCBfnc = wdiEXTScanSetBSSIDHotlistRspCb;
32639 wdiEventData.pUserData = pUserData;
32640
32641 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
32642}
32643
32644/**
32645 @brief WDI_ProcessEXTScanSetBSSIDHotlistReq -
32646 Extended Scan Set BSSSID Hotlist Request to FW
32647
32648 @param pWDICtx : wdi context
32649 pEventData : indication data
32650
32651 @see
32652 @return none
32653*/
32654WDI_Status
32655WDI_ProcessEXTScanSetBSSIDHotlistReq
32656(
32657 WDI_ControlBlockType* pWDICtx,
32658 WDI_EventInfoType* pEventData
32659)
32660{
32661 WDI_EXTScanSetBSSIDHotlistReqParams* pwdiEXTScanSetBSSIDHotlistReqParams;
32662 WDI_EXTScanSetBSSIDHotlistRspCb wdiEXTScanSetBSSIDHotlistRspCb;
32663 wpt_uint8* pSendBuffer = NULL;
32664 wpt_uint16 usSendSize = 0;
32665 wpt_uint16 usDataOffset = 0;
32666 tpHalBssidHotlistSetReq pHalBssidHotlistSetReqParams;
32667 int i;
32668
32669 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32670 "%s: %d Enter",__func__, __LINE__);
32671
32672 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
32673 ( NULL == pEventData->pCBfnc ))
32674 {
32675 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32676 "%s: Invalid parameters", __func__);
32677 WDI_ASSERT(0);
32678 return WDI_STATUS_E_FAILURE;
32679 }
32680
32681 pwdiEXTScanSetBSSIDHotlistReqParams =
32682 (WDI_EXTScanSetBSSIDHotlistReqParams *)pEventData->pEventData;
32683 wdiEXTScanSetBSSIDHotlistRspCb =
32684 (WDI_EXTScanSetBSSIDHotlistRspCb)pEventData->pCBfnc;
32685
32686 /*-----------------------------------------------------------------------
32687 Get message buffer
32688 ! TO DO : proper conversion into the HAL Message Request Format
32689 -----------------------------------------------------------------------*/
32690 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
32691 pWDICtx,
32692 WDI_EXTSCAN_SET_BSSID_HOTLIST_REQ,
32693 sizeof(tHalBssidHotlistSetReq),
32694 &pSendBuffer, &usDataOffset,
32695 &usSendSize))||
32696 ( usSendSize < (usDataOffset + sizeof(tHalBssidHotlistSetReq) )))
32697 {
32698 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32699 "Unable to get send buffer in %s %p %p %p", __func__,
32700 pEventData, pwdiEXTScanSetBSSIDHotlistReqParams,
32701 wdiEXTScanSetBSSIDHotlistRspCb);
32702 WDI_ASSERT(0);
32703 return WDI_STATUS_E_FAILURE;
32704 }
32705 pHalBssidHotlistSetReqParams =
32706 (tpHalBssidHotlistSetReq) (pSendBuffer + usDataOffset);
32707
32708 pHalBssidHotlistSetReqParams->requestId =
32709 pwdiEXTScanSetBSSIDHotlistReqParams->requestId;
32710
32711 pHalBssidHotlistSetReqParams->sessionId =
32712 pwdiEXTScanSetBSSIDHotlistReqParams->sessionId;
32713
32714 pHalBssidHotlistSetReqParams->numAp =
32715 pwdiEXTScanSetBSSIDHotlistReqParams->numAp;
32716
32717 for( i = 0; i < WLAN_HAL_EXT_SCAN_MAX_HOTLIST_APS; i++){
32718
32719 wpalMemoryCopy(pHalBssidHotlistSetReqParams->ap[i].bssid,
32720 pwdiEXTScanSetBSSIDHotlistReqParams->ap[i].bssid,
32721 WDI_MAC_ADDR_LEN);
32722
32723 pHalBssidHotlistSetReqParams->ap[i].lowRssiThreshold =
32724 pwdiEXTScanSetBSSIDHotlistReqParams->ap[i].low;
32725
32726 pHalBssidHotlistSetReqParams->ap[i].highRssiThreshold =
32727 pwdiEXTScanSetBSSIDHotlistReqParams->ap[i].high;
32728
32729 pHalBssidHotlistSetReqParams->ap[i].channel =
32730 pwdiEXTScanSetBSSIDHotlistReqParams->ap[i].channel;
32731
32732 }
32733
32734 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32735 "ReqID %u sessionId %u numAp %u ",
32736 pHalBssidHotlistSetReqParams->requestId,
32737 pHalBssidHotlistSetReqParams->sessionId,
32738 pHalBssidHotlistSetReqParams->numAp);
32739
32740 for( i = 0; i < pHalBssidHotlistSetReqParams->numAp; i++){
32741
32742 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32743 "%s %d %d) BSSID: %pM lowRssiThreshold %d highRssiThreshold %d Channel %u ",
32744 __func__, __LINE__, i,
32745 pHalBssidHotlistSetReqParams->ap[i].bssid,
32746 pHalBssidHotlistSetReqParams->ap[i].lowRssiThreshold,
32747 pHalBssidHotlistSetReqParams->ap[i].highRssiThreshold,
32748 pHalBssidHotlistSetReqParams->ap[i].channel);
32749
32750 }
32751
32752 pWDICtx->pReqStatusUserData = pEventData->pUserData;
32753
32754
32755 /*-------------------------------------------------------------------------
32756 Send EXTScan Stop Request to HAL
32757 -------------------------------------------------------------------------*/
32758 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
32759 wdiEXTScanSetBSSIDHotlistRspCb, pEventData->pUserData,
32760 WDI_EXTSCAN_SET_HOTLIST_BSSID_RSP);
32761}
32762
32763/**
32764 @brief WDI_EXTScanResetBSSIDHotlistReq
32765
32766 @param WDI_EXTScanResetBSSIDHotlistReqParams: Req parameter for the FW
32767 WDI_EXTScanResetBSSIDHotlistRspCb: callback for passing back the response
32768 of the Req operation received from the device
32769 pUserData: user data will be passed back with the callback
32770
32771 @return SUCCESS or FAIL
32772*/
32773WDI_Status
32774WDI_EXTScanResetBSSIDHotlistReq(
32775 WDI_EXTScanResetBSSIDHotlistReqParams* pwdiEXTScanResetBSSIDHotlistReqParams,
32776 WDI_EXTScanResetBSSIDHotlistRspCb wdiEXTScanResetBSSIDHotlistRspCb,
32777 void* pUserData)
32778{
32779 WDI_EventInfoType wdiEventData;
32780
32781 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32782 "%s: %d",__func__, __LINE__);
32783 /*------------------------------------------------------------------------
32784 Sanity Check
32785 ------------------------------------------------------------------------*/
32786 if ( eWLAN_PAL_FALSE == gWDIInitialized )
32787 {
32788 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
32789 "WDI API call before module is initialized - Fail request");
32790
32791 return WDI_STATUS_E_NOT_ALLOWED;
32792 }
32793
32794 wdiEventData.wdiRequest = WDI_EXTSCAN_RESET_BSSID_HOTLIST_REQ;
32795 wdiEventData.pEventData = pwdiEXTScanResetBSSIDHotlistReqParams;
32796 wdiEventData.uEventDataSize = sizeof(*pwdiEXTScanResetBSSIDHotlistReqParams);
32797 wdiEventData.pCBfnc = wdiEXTScanResetBSSIDHotlistRspCb;
32798 wdiEventData.pUserData = pUserData;
32799
32800 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
32801}
32802
32803/**
32804 @brief WDI_ProcessEXTScanResetBSSIDHotlistReq -
32805 Extended Scan reset BSSID hotlist Request to FW
32806
32807 @param pWDICtx : wdi context
32808 pEventData : indication data
32809
32810 @see
32811 @return none
32812*/
32813WDI_Status
32814WDI_ProcessEXTScanResetBSSIDHotlistReq
32815(
32816 WDI_ControlBlockType* pWDICtx,
32817 WDI_EventInfoType* pEventData
32818)
32819{
32820 WDI_EXTScanResetBSSIDHotlistReqParams* pwdiEXTScanResetBSSIDHotlistReqParams;
32821 WDI_EXTScanResetBSSIDHotlistRspCb wdiEXTScanResetBSSIDHotlistRspCb;
32822 wpt_uint8* pSendBuffer = NULL;
32823 wpt_uint16 usSendSize = 0;
32824 wpt_uint16 usDataOffset = 0;
32825 tpHalHotlistResetReq pHalHotlistResetReqParams;
32826
32827 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32828 "%s: %d",__func__, __LINE__);
32829
32830 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
32831 ( NULL == pEventData->pCBfnc ))
32832 {
32833 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32834 "%s: Invalid parameters", __func__);
32835 WDI_ASSERT(0);
32836 return WDI_STATUS_E_FAILURE;
32837 }
32838
32839 pwdiEXTScanResetBSSIDHotlistReqParams =
32840 (WDI_EXTScanResetBSSIDHotlistReqParams *)pEventData->pEventData;
32841 wdiEXTScanResetBSSIDHotlistRspCb =
32842 (WDI_EXTScanResetBSSIDHotlistRspCb)pEventData->pCBfnc;
32843
32844 /*-----------------------------------------------------------------------
32845 Get message buffer
32846 ! TO DO : proper conversion into the HAL Message Request Format
32847 -----------------------------------------------------------------------*/
32848 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
32849 pWDICtx,
32850 WDI_EXTSCAN_RESET_BSSID_HOTLIST_REQ,
32851 sizeof(tHalHotlistResetReq),
32852 &pSendBuffer, &usDataOffset,
32853 &usSendSize))||
32854 ( usSendSize < (usDataOffset + sizeof(tHalHotlistResetReq) )))
32855 {
32856 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32857 "Unable to get send buffer in %s %p %p %p", __func__,
32858 pEventData, pwdiEXTScanResetBSSIDHotlistReqParams,
32859 wdiEXTScanResetBSSIDHotlistRspCb);
32860 WDI_ASSERT(0);
32861 return WDI_STATUS_E_FAILURE;
32862 }
32863 pHalHotlistResetReqParams =
32864 (tpHalHotlistResetReq) (pSendBuffer+usDataOffset);
32865
32866 pHalHotlistResetReqParams->requestId =
32867 pwdiEXTScanResetBSSIDHotlistReqParams->requestId;
32868
32869 pWDICtx->pReqStatusUserData = pEventData->pUserData;
32870
32871 /*-------------------------------------------------------------------------
32872 Send EXTScan Stop Request to HAL
32873 -------------------------------------------------------------------------*/
32874 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
32875 wdiEXTScanResetBSSIDHotlistRspCb, pEventData->pUserData,
32876 WDI_EXTSCAN_RESET_HOTLIST_BSSID_RSP);
32877}
32878
32879/**
32880 @brief WDI_EXTScanSetSignfRSSIChangeReq
32881
32882 @param WDI_EXTScanSetSignfRSSIChangeReqParams: Req parameter for the FW
32883 WDI_EXTScanSetSignfRSSIChangeRspCb: callback for passing back the response
32884 of the Req operation received from the device
32885 pUserData: user data will be passed back with the callback
32886
32887 @return SUCCESS or FAIL
32888*/
32889WDI_Status
32890WDI_EXTScanSetSignfRSSIChangeReq(
32891 WDI_EXTScanSetSignfRSSIChangeReqParams* pwdiEXTScanSetSignfRSSIChangeReqParams,
32892 WDI_EXTScanSetSignfRSSIChangeRspCb wdiEXTScanSetSignfRSSIChangeRspCb,
32893 void* pUserData)
32894{
32895 WDI_EventInfoType wdiEventData;
32896
32897 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32898 "%s: %d ",__func__, __LINE__);
32899 /*------------------------------------------------------------------------
32900 Sanity Check
32901 ------------------------------------------------------------------------*/
32902 if ( eWLAN_PAL_FALSE == gWDIInitialized )
32903 {
32904 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
32905 "WDI API call before module is initialized - Fail request");
32906
32907 return WDI_STATUS_E_NOT_ALLOWED;
32908 }
32909
32910 wdiEventData.wdiRequest = WDI_EXTSCAN_SET_SIGNF_RSSI_CHANGE_REQ;
32911 wdiEventData.pEventData = pwdiEXTScanSetSignfRSSIChangeReqParams;
32912 wdiEventData.uEventDataSize =
32913 sizeof(*pwdiEXTScanSetSignfRSSIChangeReqParams);
32914 wdiEventData.pCBfnc = wdiEXTScanSetSignfRSSIChangeRspCb;
32915 wdiEventData.pUserData = pUserData;
32916
32917 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
32918}
32919
32920/**
32921 @brief WDI_ProcessEXTScanSetSignifRSSIChangeReq -
32922 Extended Scan set Significant RSSI change Request to FW
32923
32924 @param pWDICtx : wdi context
32925 pEventData : indication data
32926
32927 @see
32928 @return none
32929*/
32930WDI_Status
32931WDI_ProcessEXTScanSetSignifRSSIChangeReq
32932(
32933 WDI_ControlBlockType* pWDICtx,
32934 WDI_EventInfoType* pEventData
32935)
32936{
32937 WDI_EXTScanSetSignfRSSIChangeReqParams*
32938 pwdiEXTScanSetSignfRSSIChangeReqParams;
32939 WDI_EXTScanSetSignfRSSIChangeRspCb wdiEXTScanSetSignfRSSIChangeRspCb;
32940 wpt_uint8* pSendBuffer = NULL;
32941 wpt_uint16 usSendSize = 0;
32942 wpt_uint16 usDataOffset = 0;
32943 tpHalSigRssiSetReq pHalSigRssiSetReqParams;
32944 int i;
32945
32946 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32947 "%s: %d Enter",__func__, __LINE__);
32948
32949 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
32950 ( NULL == pEventData->pCBfnc ))
32951 {
32952 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32953 "%s: Invalid parameters", __func__);
32954 WDI_ASSERT(0);
32955 return WDI_STATUS_E_FAILURE;
32956 }
32957
32958 pwdiEXTScanSetSignfRSSIChangeReqParams =
32959 (WDI_EXTScanSetSignfRSSIChangeReqParams *)pEventData->pEventData;
32960 wdiEXTScanSetSignfRSSIChangeRspCb =
32961 (WDI_EXTScanSetSignfRSSIChangeRspCb)pEventData->pCBfnc;
32962
32963 /*-----------------------------------------------------------------------
32964 Get message buffer
32965 ! TO DO : proper conversion into the HAL Message Request Format
32966 -----------------------------------------------------------------------*/
32967 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
32968 pWDICtx,
32969 WDI_EXTSCAN_SET_SIGNF_RSSI_CHANGE_REQ,
32970 sizeof(tHalSigRssiSetReq),
32971 &pSendBuffer, &usDataOffset,
32972 &usSendSize))||
32973 ( usSendSize < (usDataOffset + sizeof(tHalSigRssiSetReq) )))
32974 {
32975 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32976 "Unable to get send buffer in %s %p %p %p", __func__,
32977 pEventData, pwdiEXTScanSetSignfRSSIChangeReqParams,
32978 wdiEXTScanSetSignfRSSIChangeRspCb);
32979 WDI_ASSERT(0);
32980 return WDI_STATUS_E_FAILURE;
32981 }
32982
32983 pHalSigRssiSetReqParams =
32984 (tpHalSigRssiSetReq) (pSendBuffer + usDataOffset);
32985
32986 pHalSigRssiSetReqParams->requestId =
32987 pwdiEXTScanSetSignfRSSIChangeReqParams->requestId;
32988 pHalSigRssiSetReqParams->sessionId =
32989 pwdiEXTScanSetSignfRSSIChangeReqParams->sessionId;
32990 pHalSigRssiSetReqParams->rssiSampleSize =
32991 pwdiEXTScanSetSignfRSSIChangeReqParams->rssiSampleSize;
32992 pHalSigRssiSetReqParams->lostApSampleSize =
32993 pwdiEXTScanSetSignfRSSIChangeReqParams->lostApSampleSize;
32994 pHalSigRssiSetReqParams->minBreaching =
32995 pwdiEXTScanSetSignfRSSIChangeReqParams->minBreaching;
32996 pHalSigRssiSetReqParams->numAp =
32997 pwdiEXTScanSetSignfRSSIChangeReqParams->numAp;
32998
32999
33000 for( i = 0; i < WLAN_HAL_EXT_SCAN_MAX_SIG_CHANGE_APS; i++){
33001
33002 wpalMemoryCopy(pHalSigRssiSetReqParams->ap[i].bssid,
33003 pwdiEXTScanSetSignfRSSIChangeReqParams->ap[i].bssid,
33004 WDI_MAC_ADDR_LEN);
33005
33006 pHalSigRssiSetReqParams->ap[i].lowRssiThreshold =
33007 pwdiEXTScanSetSignfRSSIChangeReqParams->ap[i].low;
33008
33009 pHalSigRssiSetReqParams->ap[i].highRssiThreshold =
33010 pwdiEXTScanSetSignfRSSIChangeReqParams->ap[i].high;
33011
33012 pHalSigRssiSetReqParams->ap[i].channel =
33013 pwdiEXTScanSetSignfRSSIChangeReqParams->ap[i].channel;
33014
33015 }
33016
33017
33018 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33019 "ReqID %u sessionId %u rssiSampleSize %u lostApSampleSize %u "
33020 " minBreaching %u numAp %u ",
33021 pHalSigRssiSetReqParams->requestId,
33022 pHalSigRssiSetReqParams->sessionId,
33023 pHalSigRssiSetReqParams->rssiSampleSize,
33024 pHalSigRssiSetReqParams->lostApSampleSize,
33025 pHalSigRssiSetReqParams->minBreaching,
33026 pHalSigRssiSetReqParams->numAp);
33027
33028 for( i = 0; i < pHalSigRssiSetReqParams->numAp; i++){
33029
33030 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33031 "%d) BSSID: %pM lowRssiThreshold %d highRssiThreshold %d Channel %u ",
33032 i,
33033 pHalSigRssiSetReqParams->ap[i].bssid,
33034 pHalSigRssiSetReqParams->ap[i].lowRssiThreshold,
33035 pHalSigRssiSetReqParams->ap[i].highRssiThreshold,
33036 pHalSigRssiSetReqParams->ap[i].channel);
33037
33038 }
33039
33040 pWDICtx->pReqStatusUserData = pEventData->pUserData;
33041
33042
33043 /*-------------------------------------------------------------------------
33044 Send EXTScan Stop Request to HAL
33045 -------------------------------------------------------------------------*/
33046 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
33047 wdiEXTScanSetSignfRSSIChangeRspCb, pEventData->pUserData,
33048 WDI_EXTSCAN_SET_SIGNF_RSSI_CHANGE_RSP);
33049}
33050
33051/**
33052 @brief WDI_EXTScanResetSignfRSSIChangeReq
33053
33054 @param WDI_EXTScanResetSignfRSSIChangeReqParams: Req parameter for the FW
33055 WDI_EXTScanResetSignfRSSIChangeRspCb: callback for passing back the response
33056 of the Req operation received from the device
33057 pUserData: user data will be passed back with the callback
33058
33059 @return SUCCESS or FAIL
33060*/
33061WDI_Status
33062WDI_EXTScanResetSignfRSSIChangeReq(
33063 WDI_EXTScanResetSignfRSSIChangeReqParams*
33064 pwdiEXTScanResetSignfRSSIChangeReqParams,
33065 WDI_EXTScanResetSignfRSSIChangeRspCb
33066 wdiEXTScanResetSignfRSSIChangeRspCb,
33067 void* pUserData)
33068{
33069 WDI_EventInfoType wdiEventData;
33070
33071 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33072 "%s: %d ",__func__, __LINE__);
33073 /*------------------------------------------------------------------------
33074 Sanity Check
33075 ------------------------------------------------------------------------*/
33076 if ( eWLAN_PAL_FALSE == gWDIInitialized )
33077 {
33078 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
33079 "WDI API call before module is initialized - Fail request");
33080
33081 return WDI_STATUS_E_NOT_ALLOWED;
33082 }
33083
33084 wdiEventData.wdiRequest = WDI_EXTSCAN_RESET_SIGNF_RSSI_CHANGE_REQ;
33085 wdiEventData.pEventData = pwdiEXTScanResetSignfRSSIChangeReqParams;
33086 wdiEventData.uEventDataSize =
33087 sizeof(*pwdiEXTScanResetSignfRSSIChangeReqParams);
33088 wdiEventData.pCBfnc = wdiEXTScanResetSignfRSSIChangeRspCb;
33089 wdiEventData.pUserData = pUserData;
33090
33091 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
33092}
33093
33094/**
33095 @brief WDI_ProcessEXTScanResetSignfRSSIChangeReq -
33096 Extended Scana reset Significant RSSI change Request to FW
33097
33098 @param pWDICtx : wdi context
33099 pEventData : indication data
33100
33101 @see
33102 @return none
33103*/
33104WDI_Status
33105WDI_ProcessEXTScanResetSignfRSSIChangeReq
33106(
33107 WDI_ControlBlockType* pWDICtx,
33108 WDI_EventInfoType* pEventData
33109)
33110{
33111 WDI_EXTScanResetSignfRSSIChangeReqParams*
33112 pwdiEXTScanResetSignfRSSIChangeReqParams;
33113 WDI_EXTScanResetSignfRSSIChangeRspCb wdiEXTScanResetSignfRSSIChangeRspCb;
33114 wpt_uint8* pSendBuffer = NULL;
33115 wpt_uint16 usSendSize = 0;
33116 wpt_uint16 usDataOffset = 0;
33117 tpHalSigRssiResetReq pHalSigRssiResetReqParams;
33118
33119 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33120 "%s: %d ",__func__, __LINE__);
33121
33122 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
33123 ( NULL == pEventData->pCBfnc ))
33124 {
33125 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33126 "%s: Invalid parameters", __func__);
33127 WDI_ASSERT(0);
33128 return WDI_STATUS_E_FAILURE;
33129 }
33130
33131 pwdiEXTScanResetSignfRSSIChangeReqParams =
33132 (WDI_EXTScanResetSignfRSSIChangeReqParams *)pEventData->pEventData;
33133 wdiEXTScanResetSignfRSSIChangeRspCb =
33134 (WDI_EXTScanResetSignfRSSIChangeRspCb)pEventData->pCBfnc;
33135
33136 /*-----------------------------------------------------------------------
33137 Get message buffer
33138 ! TO DO : proper conversion into the HAL Message Request Format
33139 -----------------------------------------------------------------------*/
33140 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
33141 pWDICtx,
33142 WDI_EXTSCAN_RESET_SIGNF_RSSI_CHANGE_REQ,
33143 sizeof(tHalSigRssiResetReq),
33144 &pSendBuffer, &usDataOffset,
33145 &usSendSize))||
33146 ( usSendSize < (usDataOffset + sizeof(tHalSigRssiResetReq) )))
33147 {
33148 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33149 "Unable to get send buffer in %s %p %p %p", __func__,
33150 pEventData, pwdiEXTScanResetSignfRSSIChangeReqParams,
33151 wdiEXTScanResetSignfRSSIChangeRspCb);
33152 WDI_ASSERT(0);
33153 return WDI_STATUS_E_FAILURE;
33154 }
33155 pHalSigRssiResetReqParams =
33156 (tpHalSigRssiResetReq) (pSendBuffer+usDataOffset);
33157
33158 pHalSigRssiResetReqParams->requestId =
33159 pwdiEXTScanResetSignfRSSIChangeReqParams->requestId;
33160
33161 pWDICtx->pReqStatusUserData = pEventData->pUserData;
33162
33163
33164 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
33165 wdiEXTScanResetSignfRSSIChangeRspCb,
33166 pEventData->pUserData,
33167 WDI_EXTSCAN_RESET_SIGNF_RSSI_CHANGE_RSP);
33168}
33169
33170/**
33171 @brief Process Extended Scan Start Rsp function (called when a response
33172 is being received over the bus from HAL)
33173
33174 @param pWDICtx: pointer to the WLAN DAL context
33175 pEventData: pointer to the event information structure
33176
33177 @see
33178 @return Result of the function call
33179*/
33180WDI_Status
33181WDI_ProcessEXTScanStartRsp
33182(
33183 WDI_ControlBlockType* pWDICtx,
33184 WDI_EventInfoType* pEventData
33185)
33186{
33187 WDI_EXTScanStartRspCb wdiEXTScanStartRspCb;
33188
33189 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33190 "%s: %d",__func__, __LINE__);
33191 /*-------------------------------------------------------------------------
33192 Sanity check
33193 -------------------------------------------------------------------------*/
33194 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
33195 ( NULL == pEventData->pEventData))
33196 {
33197 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33198 "%s: Invalid parameters", __func__);
33199 WDI_ASSERT(0);
33200 return WDI_STATUS_E_FAILURE;
33201 }
33202
33203 wdiEXTScanStartRspCb = (WDI_EXTScanStartRspCb)pWDICtx->pfncRspCB;
33204 if ( NULL == wdiEXTScanStartRspCb)
33205 {
33206 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33207 "%s: Callback function Invalid", __func__);
33208 WDI_ASSERT(0);
33209 return WDI_STATUS_E_FAILURE;
33210 }
33211
33212 wdiEXTScanStartRspCb((void *)pEventData->pEventData, pWDICtx->pRspCBUserData);
33213
33214 return WDI_STATUS_SUCCESS;
33215}
33216
33217
33218/**
33219 @brief Process Extended Scan Stop Rsp function (called when a response
33220 is being received over the bus from HAL)
33221
33222 @param pWDICtx: pointer to the WLAN DAL context
33223 pEventData: pointer to the event information structure
33224
33225 @see
33226 @return Result of the function call
33227*/
33228WDI_Status
33229WDI_ProcessEXTScanStopRsp
33230(
33231 WDI_ControlBlockType* pWDICtx,
33232 WDI_EventInfoType* pEventData
33233)
33234{
33235 WDI_EXTScanStopRspCb wdiEXTScanStopRspCb;
33236
33237 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33238 "%s: %d",__func__, __LINE__);
33239
33240
33241 /*-------------------------------------------------------------------------
33242 Sanity check
33243 -------------------------------------------------------------------------*/
33244 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
33245 ( NULL == pEventData->pEventData))
33246 {
33247 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33248 "%s: Invalid parameters", __func__);
33249 WDI_ASSERT(0);
33250 return WDI_STATUS_E_FAILURE;
33251 }
33252
33253 wdiEXTScanStopRspCb = (WDI_EXTScanStartRspCb)pWDICtx->pfncRspCB;
33254 if ( NULL == wdiEXTScanStopRspCb)
33255 {
33256 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33257 "%s: Callback function Invalid", __func__);
33258 WDI_ASSERT(0);
33259 return WDI_STATUS_E_FAILURE;
33260 }
33261
33262 wdiEXTScanStopRspCb((void *) pEventData->pEventData, pWDICtx->pRspCBUserData);
33263
33264 return WDI_STATUS_SUCCESS;
33265}
33266
33267/**
33268 @brief Process Extended Scan Get Cached Rsp function (called when a response
33269 is being received over the bus from HAL)
33270
33271 @param pWDICtx: pointer to the WLAN DAL context
33272 pEventData: pointer to the event information structure
33273
33274 @see
33275 @return Result of the function call
33276*/
33277WDI_Status
33278WDI_ProcessEXTScanGetCachedResultsRsp
33279(
33280 WDI_ControlBlockType* pWDICtx,
33281 WDI_EventInfoType* pEventData
33282)
33283{
33284 WDI_EXTScanGetCachedResultsRspCb wdiEXTScanGetCachedResultsRspCb;
33285
33286 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33287 "%s: %d Enter",__func__, __LINE__);
33288
33289
33290 /*-------------------------------------------------------------------------
33291 Sanity check
33292 -------------------------------------------------------------------------*/
33293 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
33294 ( NULL == pEventData->pEventData))
33295 {
33296 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33297 "%s: Invalid parameters", __func__);
33298 WDI_ASSERT(0);
33299 return WDI_STATUS_E_FAILURE;
33300 }
33301
33302 wdiEXTScanGetCachedResultsRspCb = (WDI_EXTScanStartRspCb)pWDICtx->pfncRspCB;
33303 if ( NULL == wdiEXTScanGetCachedResultsRspCb)
33304 {
33305 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33306 "%s: Callback function Invalid", __func__);
33307 WDI_ASSERT(0);
33308 return WDI_STATUS_E_FAILURE;
33309 }
33310
33311 wdiEXTScanGetCachedResultsRspCb(
33312 (void *) pEventData->pEventData, pWDICtx->pRspCBUserData);
33313
33314 return WDI_STATUS_SUCCESS;
33315}
33316
33317/**
33318 @brief Process Extended Scan Get Capabilityu Rsp function (called when a response
33319 is being received over the bus from HAL)
33320
33321 @param pWDICtx: pointer to the WLAN DAL context
33322 pEventData: pointer to the event information structure
33323
33324 @see
33325 @return Result of the function call
33326*/
33327WDI_Status
33328WDI_ProcessEXTScanGetCapabilitiesRsp
33329(
33330 WDI_ControlBlockType* pWDICtx,
33331 WDI_EventInfoType* pEventData
33332)
33333{
33334 WDI_EXTScanGetCapabilitiesRspCb wdiEXTScanGetCapabilitiesRspCb;
33335
33336 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33337 "%s: %d ",__func__, __LINE__);
33338
33339
33340 /*-------------------------------------------------------------------------
33341 Sanity check
33342 -------------------------------------------------------------------------*/
33343 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
33344 ( NULL == pEventData->pEventData))
33345 {
33346 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33347 "%s: Invalid parameters", __func__);
33348 WDI_ASSERT(0);
33349 return WDI_STATUS_E_FAILURE;
33350 }
33351
33352 wdiEXTScanGetCapabilitiesRspCb =
33353 (WDI_EXTScanGetCapabilitiesRspCb)pWDICtx->pfncRspCB;
33354 if ( NULL == wdiEXTScanGetCapabilitiesRspCb)
33355 {
33356 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33357 "%s: Callback function Invalid", __func__);
33358 WDI_ASSERT(0);
33359 return WDI_STATUS_E_FAILURE;
33360 }
33361
33362 wdiEXTScanGetCapabilitiesRspCb(
33363 (void *) pEventData->pEventData, pWDICtx->pRspCBUserData);
33364
33365 return WDI_STATUS_SUCCESS;
33366}
33367
33368/**
33369 @brief Process Extended Scan Set hotlist BSSID Rsp function (called when a
33370 response is being received over the bus from HAL)
33371
33372 @param pWDICtx: pointer to the WLAN DAL context
33373 pEventData: pointer to the event information structure
33374
33375 @see
33376 @return Result of the function call
33377*/
33378WDI_Status
33379WDI_ProcessEXTScanSetHotlistBSSIDRsp
33380(
33381 WDI_ControlBlockType* pWDICtx,
33382 WDI_EventInfoType* pEventData
33383)
33384{
33385 WDI_EXTScanSetBSSIDHotlistRspCb wdiEXTScanSetBSSIDHotlistRspCb;
33386
33387 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33388 "%s: %d ",__func__, __LINE__);
33389
33390
33391 /*-------------------------------------------------------------------------
33392 Sanity check
33393 -------------------------------------------------------------------------*/
33394 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
33395 ( NULL == pEventData->pEventData))
33396 {
33397 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33398 "%s: Invalid parameters", __func__);
33399 WDI_ASSERT(0);
33400 return WDI_STATUS_E_FAILURE;
33401 }
33402
33403 wdiEXTScanSetBSSIDHotlistRspCb =
33404 (WDI_EXTScanSetBSSIDHotlistRspCb)pWDICtx->pfncRspCB;
33405 if ( NULL == wdiEXTScanSetBSSIDHotlistRspCb)
33406 {
33407 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33408 "%s: Callback function Invalid", __func__);
33409 WDI_ASSERT(0);
33410 return WDI_STATUS_E_FAILURE;
33411 }
33412
33413 wdiEXTScanSetBSSIDHotlistRspCb(
33414 (void *) pEventData->pEventData, pWDICtx->pRspCBUserData);
33415
33416 return WDI_STATUS_SUCCESS;
33417}
33418
33419/**
33420 @brief Process Extended Scan Reset Hotlist BSSID Rsp function (called
33421 when a response is being received over the bus from HAL)
33422
33423 @param pWDICtx: pointer to the WLAN DAL context
33424 pEventData: pointer to the event information structure
33425
33426 @see
33427 @return Result of the function call
33428*/
33429WDI_Status
33430WDI_ProcessEXTScanResetHotlistBSSIDRsp
33431(
33432 WDI_ControlBlockType* pWDICtx,
33433 WDI_EventInfoType* pEventData
33434)
33435{
33436 WDI_EXTScanResetBSSIDHotlistRspCb wdiEXTScanResetBSSIDHotlistRspCb;
33437
33438 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33439 "%s: %d ",__func__, __LINE__);
33440
33441
33442 /*-------------------------------------------------------------------------
33443 Sanity check
33444 -------------------------------------------------------------------------*/
33445 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
33446 ( NULL == pEventData->pEventData))
33447 {
33448 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33449 "%s: Invalid parameters", __func__);
33450 WDI_ASSERT(0);
33451 return WDI_STATUS_E_FAILURE;
33452 }
33453
33454 wdiEXTScanResetBSSIDHotlistRspCb =
33455 (WDI_EXTScanResetBSSIDHotlistRspCb)pWDICtx->pfncRspCB;
33456 if ( NULL == wdiEXTScanResetBSSIDHotlistRspCb)
33457 {
33458 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33459 "%s: Callback function Invalid", __func__);
33460 WDI_ASSERT(0);
33461 return WDI_STATUS_E_FAILURE;
33462 }
33463
33464 wdiEXTScanResetBSSIDHotlistRspCb(
33465 (void *) pEventData->pEventData, pWDICtx->pRspCBUserData);
33466
33467 return WDI_STATUS_SUCCESS;
33468}
33469
33470/**
33471 @brief Process Extended Scan Set Significant RSSI Change Rsp function (called
33472 when a response is being received over the bus from HAL)
33473
33474 @param pWDICtx: pointer to the WLAN DAL context
33475 pEventData: pointer to the event information structure
33476
33477 @see
33478 @return Result of the function call
33479*/
33480WDI_Status
33481WDI_ProcessEXTScanSetSignfRSSIChangeRsp
33482(
33483 WDI_ControlBlockType* pWDICtx,
33484 WDI_EventInfoType* pEventData
33485)
33486{
33487 WDI_EXTScanSetSignfRSSIChangeRspCb wdiEXTScanSetSignfRSSIChangeRspCb;
33488
33489 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33490 "%s: %d",__func__, __LINE__);
33491
33492
33493 /*-------------------------------------------------------------------------
33494 Sanity check
33495 -------------------------------------------------------------------------*/
33496 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
33497 ( NULL == pEventData->pEventData))
33498 {
33499 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33500 "%s: Invalid parameters", __func__);
33501 WDI_ASSERT(0);
33502 return WDI_STATUS_E_FAILURE;
33503 }
33504
33505 wdiEXTScanSetSignfRSSIChangeRspCb =
33506 (WDI_EXTScanSetSignfRSSIChangeRspCb)pWDICtx->pfncRspCB;
33507 if ( NULL == wdiEXTScanSetSignfRSSIChangeRspCb)
33508 {
33509 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33510 "%s: Callback function Invalid", __func__);
33511 WDI_ASSERT(0);
33512 return WDI_STATUS_E_FAILURE;
33513 }
33514
33515 wdiEXTScanSetSignfRSSIChangeRspCb(
33516 (void *) pEventData->pEventData, pWDICtx->pRspCBUserData);
33517
33518 return WDI_STATUS_SUCCESS;
33519}
33520
33521/**
33522 @brief Process Extended Scan Reset Significant RSSI Change Rsp function
33523 (called when a response is being received over the bus from HAL)
33524
33525 @param pWDICtx: pointer to the WLAN DAL context
33526 pEventData: pointer to the event information structure
33527
33528 @see
33529 @return Result of the function call
33530*/
33531WDI_Status
33532WDI_ProcessEXTScanResetSignfRSSIChangeRsp
33533(
33534 WDI_ControlBlockType* pWDICtx,
33535 WDI_EventInfoType* pEventData
33536)
33537{
33538 WDI_EXTScanResetSignfRSSIChangeRspCb wdiEXTScanResetSignfRSSIChangeRspCb;
33539
33540 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33541 "%s: %d Enter",__func__, __LINE__);
33542
33543
33544 /*-------------------------------------------------------------------------
33545 Sanity check
33546 -------------------------------------------------------------------------*/
33547 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
33548 ( NULL == pEventData->pEventData))
33549 {
33550 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33551 "%s: Invalid parameters", __func__);
33552 WDI_ASSERT(0);
33553 return WDI_STATUS_E_FAILURE;
33554 }
33555
33556 wdiEXTScanResetSignfRSSIChangeRspCb =
33557 (WDI_EXTScanResetSignfRSSIChangeRspCb)pWDICtx->pfncRspCB;
33558 if ( NULL == wdiEXTScanResetSignfRSSIChangeRspCb)
33559 {
33560 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33561 "%s: Callback function Invalid", __func__);
33562 WDI_ASSERT(0);
33563 return WDI_STATUS_E_FAILURE;
33564 }
33565
33566 wdiEXTScanResetSignfRSSIChangeRspCb(
33567 (void *) pEventData->pEventData, pWDICtx->pRspCBUserData);
33568
33569 return WDI_STATUS_SUCCESS;
33570}
33571#endif /* WLAN_FEATURE_EXTSCAN */
Siddharth Bhal171788a2014-09-29 21:02:40 +053033572
33573/**
33574 @brief WDI_SetSpoofMacAddrReq: Send Spoof Mac Addr request to FW
33575
33576 @param None
33577
33578 @see
33579
33580 @return Status of the request
33581*/
33582WDI_Status
33583WDI_SetSpoofMacAddrReq
33584(
33585 WDI_SpoofMacAddrInfoType* pWdiReq,
33586 WDI_SetSpoofMacAddrRspCb spoofMacAddrRspCb,
33587 void* pUserData)
33588{
33589 WDI_EventInfoType wdiEventData;
33590
33591 /*-------------------------------------------------------------------------
33592 Sanity Check
33593 ------------------------------------------------------------------------*/
33594 if (eWLAN_PAL_FALSE == gWDIInitialized)
33595 {
33596 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
33597 "WDI API call before module is initialized - Fail request!");
33598
33599 return WDI_STATUS_E_NOT_ALLOWED;
33600 }
33601
33602 /*-------------------------------------------------------------------------
33603 Fill in Event data and post to the Main FSM
33604 ------------------------------------------------------------------------*/
33605 wdiEventData.wdiRequest = WDI_SPOOF_MAC_ADDR_REQ;
33606 wdiEventData.pEventData = pWdiReq;
33607 wdiEventData.uEventDataSize = sizeof(WDI_SpoofMacAddrInfoType);
33608 wdiEventData.pCBfnc = spoofMacAddrRspCb;
33609 wdiEventData.pUserData = pUserData;
33610
33611 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
33612}
33613
33614/**
33615 @brief Process SpoofMacAddr Request
33616
33617 @param pWDICtx: pointer to the WLAN DAL context
33618 pEventData: pointer to the event information structure
33619
33620 @see
33621 @return Result of the function call
33622*/
33623WDI_Status
33624WDI_ProcessSpoofMacAddrReq
33625(
33626 WDI_ControlBlockType* pWDICtx,
33627 WDI_EventInfoType* pEventData
33628)
33629{
33630 WDI_SpoofMacAddrInfoType* wdiSpoofMacAddr;
33631 wpt_uint8* pSendBuffer = NULL;
33632 wpt_uint16 usDataOffset = 0;
33633 wpt_uint16 usSendSize = 0;
33634 WDI_Status wdiStatus;
33635 tMacSpoofedScanReqMsg halWlanSpoofMacAddr;
33636 WDI_SetSpoofMacAddrRspCb wdiMacAddrSpoofCb;
33637
33638
33639 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33640 "%s: %d Enter",__func__, __LINE__);
33641
33642 /*-------------------------------------------------------------------------
33643 Sanity check
33644 -------------------------------------------------------------------------*/
33645 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
33646 ( NULL == pEventData->pEventData))
33647 {
33648 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33649 "%s: Invalid parameters", __func__);
33650 WDI_ASSERT(0);
33651 return WDI_STATUS_E_FAILURE;
33652 }
33653 wdiSpoofMacAddr = (WDI_SpoofMacAddrInfoType *)pEventData->pEventData;
33654
33655 /*-----------------------------------------------------------------------
33656 Get message buffer
33657 -----------------------------------------------------------------------*/
33658 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
33659 WDI_SPOOF_MAC_ADDR_REQ,
33660 sizeof(halWlanSpoofMacAddr.tMacSpoofedScanReqParams),
33661 &pSendBuffer, &usDataOffset, &usSendSize))||
33662 (usSendSize < (usDataOffset +
33663 sizeof(halWlanSpoofMacAddr.tMacSpoofedScanReqParams))))
33664 {
33665 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
33666 "Unable to get send buffer in Process Spoof Mac Addr Req");
33667 WDI_ASSERT(0);
33668 return WDI_STATUS_E_FAILURE;
33669 }
33670
33671 wpalMemoryCopy(halWlanSpoofMacAddr.tMacSpoofedScanReqParams.macAddr,
33672 wdiSpoofMacAddr->macAddr,
33673 sizeof(halWlanSpoofMacAddr.tMacSpoofedScanReqParams.macAddr));
33674
33675 wdiMacAddrSpoofCb = (WDI_SetSpoofMacAddrRspCb)pEventData->pCBfnc;
33676
33677 wpalMemoryCopy( pSendBuffer+usDataOffset,
33678 &halWlanSpoofMacAddr.tMacSpoofedScanReqParams,
33679 sizeof(halWlanSpoofMacAddr.tMacSpoofedScanReqParams));
33680
33681 /*-------------------------------------------------------------------------
33682 Send Suspend Request to HAL
33683 -------------------------------------------------------------------------*/
33684 wdiStatus = WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
33685 wdiMacAddrSpoofCb, pEventData->pUserData, WDI_SPOOF_MAC_ADDR_RSP);
33686
33687 return wdiStatus;
33688}
33689
33690/**
33691 @brief Process Spoof Mac Address Rsp function
33692 (called when a response is being received over the bus from HAL)
33693
33694 @param pWDICtx: pointer to the WLAN DAL context
33695 pEventData: pointer to the event information structure
33696
33697 @see
33698 @return Result of the function call
33699*/
33700WDI_Status
33701WDI_ProcessSpoofMacAddrRsp
33702(
33703 WDI_ControlBlockType* pWDICtx,
33704 WDI_EventInfoType* pEventData
33705)
33706{
33707 tMacSpoofedScanResp halRsp;
33708 WDI_SetSpoofMacAddrRspCb wdiSpoofMacAddrRspCb;
33709 WDI_SpoofMacAddrRspParamType wdiSpoofMacAddrRsp;
33710
33711 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33712 "%s: %d Enter",__func__, __LINE__);
33713
33714 /*-------------------------------------------------------------------------
33715 Sanity check
33716 -------------------------------------------------------------------------*/
33717 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
33718 ( NULL == pEventData->pEventData))
33719 {
33720 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33721 "%s: Invalid parameters", __func__);
33722 WDI_ASSERT(0);
33723 return WDI_STATUS_E_FAILURE;
33724 }
33725 wdiSpoofMacAddrRspCb = (WDI_SetSpoofMacAddrRspCb)pWDICtx->pfncRspCB;
33726
33727 /*-------------------------------------------------------------------------
33728 Extract response and send it to UMAC
33729 -------------------------------------------------------------------------*/
33730 wpalMemoryCopy( &halRsp,
33731 pEventData->pEventData, sizeof(halRsp));
33732
33733 wdiSpoofMacAddrRsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halRsp.status);
33734
33735 /*Notify UMAC*/
33736 wdiSpoofMacAddrRspCb(
33737 &wdiSpoofMacAddrRsp, pWDICtx->pRspCBUserData);
33738
33739 return WDI_STATUS_SUCCESS;
33740}
Srinivas Dasari4dae48f2014-11-26 21:14:16 +053033741
33742/**
33743 @brief WDI_EncryptMsgReq
33744
33745 @param pwdiEncryptMsgParams: Req parameter for the FW
33746 wdiEncryptMsgCbRsp: callback for passing back the response
33747 of the Req operation received from the device
33748 pUserData: user data will be passed back with the callback
33749
33750 @return SUCCESS or FAIL
33751*/
33752WDI_Status
33753WDI_EncryptMsgReq(void* pwdiEncryptMsgParams,
33754 WDI_EncryptMsgRspCb wdiEncryptMsgCbRsp,
33755 void* pUserData)
33756{
33757 WDI_EventInfoType wdiEventData;
33758
33759 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33760 "%s: %d Enter" ,__func__, __LINE__);
33761 /*------------------------------------------------------------------------
33762 Sanity Check
33763 ------------------------------------------------------------------------*/
33764 if ( eWLAN_PAL_FALSE == gWDIInitialized )
33765 {
33766 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
33767 "WDI API call before module is initialized - Fail request");
33768
33769 return WDI_STATUS_E_NOT_ALLOWED;
33770 }
33771
33772 wdiEventData.wdiRequest = WDI_ENCRYPT_MSG_REQ;
33773 wdiEventData.pEventData = pwdiEncryptMsgParams;
33774 wdiEventData.uEventDataSize = sizeof(wpt_pkt80211);
33775 wdiEventData.pCBfnc = wdiEncryptMsgCbRsp;
33776 wdiEventData.pUserData = pUserData;
33777
33778 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
33779}
33780
33781/*
33782 * FUNCTION: WDI_ProcessEncryptMsgReq
33783 * Request to WDI to encrypt the given message.
33784 *
33785 * @param pWDICtx: pointer to the WLAN DAL context
33786 * pEventData: pointer to the event information structure
33787 *
33788 * @return Result of the function call
33789 */
33790
33791WDI_Status
33792WDI_ProcessEncryptMsgReq
33793(
33794 WDI_ControlBlockType* pWDICtx,
33795 WDI_EventInfoType* pEventData
33796)
33797{
33798 wpt_uint8* pSendBuffer = NULL;
33799 wpt_uint16 usDataOffset = 0;
33800 wpt_uint16 usSendSize = 0;
33801 WDI_EncryptMsgRspCb* wdiEncMsgCb;
33802 tSetEncryptedDataParams *pHalEncryptDataReq;
33803 wpt_pkt80211 *pkt = NULL;
33804
33805 /*-------------------------------------------------------------------------
33806 Sanity check
33807 -------------------------------------------------------------------------*/
33808 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData) ||
33809 ( NULL == pEventData->pCBfnc ) )
33810 {
33811 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33812 "%s: Invalid parameters", __func__);
33813 WDI_ASSERT(0);
33814 return WDI_STATUS_E_FAILURE;
33815 }
33816
33817 wdiEncMsgCb = (WDI_EncryptMsgRspCb*)pEventData->pCBfnc;
33818
33819 /*-----------------------------------------------------------------------
33820 Get message buffer
33821 -----------------------------------------------------------------------*/
33822 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
33823 pWDICtx, WDI_ENCRYPT_MSG_REQ,
33824 sizeof(tSetEncryptedDataReqMsg),
33825 &pSendBuffer, &usDataOffset, &usSendSize)) ||
33826 ( usSendSize < (usDataOffset + sizeof(tSetEncryptedDataReqMsg))))
33827 {
33828 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33829 "Unable to get send buffer in get WDI_ENCRYPT_MSG_REQ %p",
33830 pEventData);
33831 WDI_ASSERT(0);
33832 return WDI_STATUS_E_FAILURE;
33833 }
33834
33835 pWDICtx->wdiReqStatusCB = NULL;
33836 pWDICtx->pReqStatusUserData = pEventData->pUserData;
33837 pkt = (wpt_pkt80211 *)pEventData->pEventData;
33838
33839 pHalEncryptDataReq = &((tSetEncryptedDataReqMsg *)(pSendBuffer))->encryptedDataParams;
33840 wpalMemoryZero(pHalEncryptDataReq, sizeof(tSetEncryptedDataParams));
33841
33842 wpalMemoryCopy(&pHalEncryptDataReq->macHeader, &pkt->macHeader, 32);
33843
33844 pHalEncryptDataReq->encParams.keyParams.key[0].keyId =
33845 pkt->encParams.keyParams.key[0].keyId;
33846
33847 wpalMemoryCopy(&pHalEncryptDataReq->encParams.keyParams.key[0].key[0],
33848 &pkt->encParams.keyParams.key[0].key[0], 16);
33849
33850 wpalMemoryCopy(&pHalEncryptDataReq->encParams.pn, &pkt->encParams.pn, 6);
33851
33852 pHalEncryptDataReq->data.length = pkt->data.length;
33853 wpalMemoryCopy(&pHalEncryptDataReq->data.data[0], &pkt->data.data[0], pkt->data.length);
33854
33855 /*-------------------------------------------------------------------------
33856 Send Get STA Request to HAL
33857 -------------------------------------------------------------------------*/
33858 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize, wdiEncMsgCb,
33859 pEventData->pUserData, WDI_ENCRYPT_MSG_RSP);
33860}
33861
33862/*
33863 * FUNCTION: WDI_ProcessEncryptMsgRsp
33864 * Receives the encrypted message from the firmware
33865 * @param pWDICtx: pointer to the WLAN DAL context
33866 * pEventData: pointer to the event information structure
33867 *
33868 * @return Result of the function call
33869 */
33870WDI_Status
33871WDI_ProcessEncryptMsgRsp
33872(
33873 WDI_ControlBlockType* pWDICtx,
33874 WDI_EventInfoType* pEventData
33875)
33876{
33877 tpSetEncryptedDataRspParams pSetEncryptedDataRsp;
33878 WDI_EncryptMsgRspCb wdiEncryptMsgRspCb;
33879
33880 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
33881 "In %s",__func__);
33882
33883 /*-------------------------------------------------------------------------
33884 Sanity check
33885 -------------------------------------------------------------------------*/
33886 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
33887 ( NULL == pEventData->pEventData))
33888 {
33889 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33890 "%s: Invalid parameters", __func__);
33891 WDI_ASSERT(0);
33892 return WDI_STATUS_E_FAILURE;
33893 }
33894
33895 pSetEncryptedDataRsp = (tpSetEncryptedDataRspParams)pEventData->pEventData;
33896
33897 wdiEncryptMsgRspCb = (WDI_EncryptMsgRspCb)pWDICtx->pfncRspCB;
33898
33899 wdiEncryptMsgRspCb(WDI_STATUS_SUCCESS,
33900 pEventData->pEventData,
33901 pWDICtx->pRspCBUserData);
33902 return WDI_STATUS_SUCCESS;
33903}