blob: 14e1ad692b5e935d0e1aa4e95f1f84cf80f1ad8e [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(
Mahesh A Saptasagar329813b2014-12-15 12:16:51 +05303779 WDI_ExitImpsReqParamsType *pwdiExitImpsReqParams,
Jeff Johnson295189b2012-06-20 16:38:30 -07003780 WDI_ExitImpsRspCb wdiExitImpsRspCb,
3781 void* pUserData
3782)
3783{
3784 WDI_EventInfoType wdiEventData;
3785 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3786
3787 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003788 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003789 ------------------------------------------------------------------------*/
3790 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3791 {
3792 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3793 "WDI API call before module is initialized - Fail request");
3794
Jeff Johnsone7245742012-09-05 17:12:55 -07003795 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003796 }
3797
3798 /*------------------------------------------------------------------------
3799 Fill in Event data and post to the Main FSM
3800 ------------------------------------------------------------------------*/
3801 wdiEventData.wdiRequest = WDI_EXIT_IMPS_REQ;
Mahesh A Saptasagar329813b2014-12-15 12:16:51 +05303802 wdiEventData.pEventData = pwdiExitImpsReqParams;
3803 wdiEventData.uEventDataSize = sizeof(*pwdiExitImpsReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07003804 wdiEventData.pCBfnc = wdiExitImpsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003805 wdiEventData.pUserData = pUserData;
3806
3807 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3808
3809}/*WDI_ExitImpsReq*/
3810
3811/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003812 @brief WDI_EnterBmpsReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07003813 request the device to get into BMPS power state. Upon
3814 the call of this API the WLAN DAL will pack and send a
3815 HAL Enter BMPS request message to the lower RIVA
3816 sub-system if DAL is in state STARTED.
3817
3818 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003819 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003820
3821 WDI_PostAssocReq must have been called.
3822
Jeff Johnsone7245742012-09-05 17:12:55 -07003823 @param pwdiEnterBmpsReqParams: the Enter BMPS parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07003824 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003825
Jeff Johnson295189b2012-06-20 16:38:30 -07003826 wdiEnterBmpsRspCb: callback for passing back the
3827 response of the Enter BMPS operation received from the
3828 device
Jeff Johnsone7245742012-09-05 17:12:55 -07003829
Jeff Johnson295189b2012-06-20 16:38:30 -07003830 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003831 callback
3832
Jeff Johnson295189b2012-06-20 16:38:30 -07003833 @see WDI_PostAssocReq
3834 @return Result of the function call
3835*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003836WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003837WDI_EnterBmpsReq
3838(
3839 WDI_EnterBmpsReqParamsType *pwdiEnterBmpsReqParams,
3840 WDI_EnterBmpsRspCb wdiEnterBmpsRspCb,
3841 void* pUserData
3842)
3843{
3844 WDI_EventInfoType wdiEventData;
3845 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3846
3847 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003848 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003849 ------------------------------------------------------------------------*/
3850 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3851 {
3852 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3853 "WDI API call before module is initialized - Fail request");
3854
Jeff Johnsone7245742012-09-05 17:12:55 -07003855 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003856 }
3857
3858 /*------------------------------------------------------------------------
3859 Fill in Event data and post to the Main FSM
3860 ------------------------------------------------------------------------*/
3861 wdiEventData.wdiRequest = WDI_ENTER_BMPS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003862 wdiEventData.pEventData = pwdiEnterBmpsReqParams;
3863 wdiEventData.uEventDataSize = sizeof(*pwdiEnterBmpsReqParams);
3864 wdiEventData.pCBfnc = wdiEnterBmpsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003865 wdiEventData.pUserData = pUserData;
3866
3867 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3868
3869}/*WDI_EnterBmpsReq*/
3870
3871/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003872 @brief WDI_ExitBmpsReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07003873 request the device to get out of BMPS power state. Upon
3874 the call of this API the WLAN DAL will pack and send a
3875 HAL Exit BMPS request message to the lower RIVA
3876 sub-system if DAL is in state STARTED.
3877
3878 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003879 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003880
3881 WDI_PostAssocReq must have been called.
3882
Jeff Johnsone7245742012-09-05 17:12:55 -07003883 @param pwdiExitBmpsReqParams: the Exit BMPS parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07003884 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003885
Jeff Johnson295189b2012-06-20 16:38:30 -07003886 wdiExitBmpsRspCb: callback for passing back the response
3887 of the Exit BMPS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003888
Jeff Johnson295189b2012-06-20 16:38:30 -07003889 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003890 callback
3891
Jeff Johnson295189b2012-06-20 16:38:30 -07003892 @see WDI_PostAssocReq
3893 @return Result of the function call
3894*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003895WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003896WDI_ExitBmpsReq
3897(
3898 WDI_ExitBmpsReqParamsType *pwdiExitBmpsReqParams,
3899 WDI_ExitBmpsRspCb wdiExitBmpsRspCb,
3900 void* pUserData
3901)
3902{
3903 WDI_EventInfoType wdiEventData;
3904 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3905
3906 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003907 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003908 ------------------------------------------------------------------------*/
3909 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3910 {
3911 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3912 "WDI API call before module is initialized - Fail request");
3913
Jeff Johnsone7245742012-09-05 17:12:55 -07003914 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003915 }
3916
3917 /*------------------------------------------------------------------------
3918 Fill in Event data and post to the Main FSM
3919 ------------------------------------------------------------------------*/
3920 wdiEventData.wdiRequest = WDI_EXIT_BMPS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003921 wdiEventData.pEventData = pwdiExitBmpsReqParams;
3922 wdiEventData.uEventDataSize = sizeof(*pwdiExitBmpsReqParams);
3923 wdiEventData.pCBfnc = wdiExitBmpsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003924 wdiEventData.pUserData = pUserData;
3925
3926 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3927
3928}/*WDI_ExitBmpsReq*/
3929
3930/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003931 @brief WDI_EnterUapsdReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07003932 request the device to get into UAPSD power state. Upon
3933 the call of this API the WLAN DAL will pack and send a
3934 HAL Enter UAPSD request message to the lower RIVA
3935 sub-system if DAL is in state STARTED.
3936
3937 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003938 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003939
3940 WDI_PostAssocReq must have been called.
3941 WDI_SetUapsdAcParamsReq must have been called.
Jeff Johnsone7245742012-09-05 17:12:55 -07003942
3943 @param pwdiEnterUapsdReqParams: the Enter UAPSD parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07003944 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003945
Jeff Johnson295189b2012-06-20 16:38:30 -07003946 wdiEnterUapsdRspCb: callback for passing back the
3947 response of the Enter UAPSD operation received from the
3948 device
Jeff Johnsone7245742012-09-05 17:12:55 -07003949
Jeff Johnson295189b2012-06-20 16:38:30 -07003950 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003951 callback
3952
Jeff Johnson295189b2012-06-20 16:38:30 -07003953 @see WDI_PostAssocReq, WDI_SetUapsdAcParamsReq
3954 @return Result of the function call
3955*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003956WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003957WDI_EnterUapsdReq
3958(
3959 WDI_EnterUapsdReqParamsType *pwdiEnterUapsdReqParams,
3960 WDI_EnterUapsdRspCb wdiEnterUapsdRspCb,
3961 void* pUserData
3962)
3963{
3964 WDI_EventInfoType wdiEventData;
3965 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3966
3967 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003968 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003969 ------------------------------------------------------------------------*/
3970 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3971 {
3972 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3973 "WDI API call before module is initialized - Fail request");
3974
Jeff Johnsone7245742012-09-05 17:12:55 -07003975 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003976 }
3977
3978 /*------------------------------------------------------------------------
3979 Fill in Event data and post to the Main FSM
3980 ------------------------------------------------------------------------*/
3981 wdiEventData.wdiRequest = WDI_ENTER_UAPSD_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003982 wdiEventData.pEventData = pwdiEnterUapsdReqParams;
3983 wdiEventData.uEventDataSize = sizeof(*pwdiEnterUapsdReqParams);
3984 wdiEventData.pCBfnc = wdiEnterUapsdRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003985 wdiEventData.pUserData = pUserData;
3986
3987 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3988
3989}/*WDI_EnterUapsdReq*/
3990
3991/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003992 @brief WDI_ExitUapsdReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07003993 request the device to get out of UAPSD power state. Upon
3994 the call of this API the WLAN DAL will send a HAL Exit
3995 UAPSD request message to the lower RIVA sub-system if
3996 DAL is in state STARTED.
3997
3998 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003999 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004000
4001 WDI_PostAssocReq must have been called.
4002
Jeff Johnsone7245742012-09-05 17:12:55 -07004003 @param wdiExitUapsdRspCb: callback for passing back the
Jeff Johnson295189b2012-06-20 16:38:30 -07004004 response of the Exit UAPSD operation received from the
4005 device
Jeff Johnsone7245742012-09-05 17:12:55 -07004006
Jeff Johnson295189b2012-06-20 16:38:30 -07004007 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004008 callback
4009
Jeff Johnson295189b2012-06-20 16:38:30 -07004010 @see WDI_PostAssocReq
4011 @return Result of the function call
4012*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004013WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004014WDI_ExitUapsdReq
4015(
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -07004016 WDI_ExitUapsdReqParamsType *pwdiExitUapsdReqParams,
Jeff Johnson295189b2012-06-20 16:38:30 -07004017 WDI_ExitUapsdRspCb wdiExitUapsdRspCb,
4018 void* pUserData
4019)
4020{
4021 WDI_EventInfoType wdiEventData;
4022 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4023
4024 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004025 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004026 ------------------------------------------------------------------------*/
4027 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4028 {
4029 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4030 "WDI API call before module is initialized - Fail request");
4031
Jeff Johnsone7245742012-09-05 17:12:55 -07004032 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004033 }
4034
4035 /*------------------------------------------------------------------------
4036 Fill in Event data and post to the Main FSM
4037 ------------------------------------------------------------------------*/
4038 wdiEventData.wdiRequest = WDI_EXIT_UAPSD_REQ;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -07004039 wdiEventData.pEventData = pwdiExitUapsdReqParams;
4040 wdiEventData.uEventDataSize = sizeof(*pwdiExitUapsdReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004041 wdiEventData.pCBfnc = wdiExitUapsdRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004042 wdiEventData.pUserData = pUserData;
4043
4044 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4045
4046}/*WDI_ExitUapsdReq*/
4047
4048/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004049 @brief WDI_UpdateUapsdParamsReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07004050 MAC wants to set the UAPSD related configurations
4051 of an associated STA (while acting as an AP) to the WLAN
4052 Device. Upon the call of this API the WLAN DAL will pack
4053 and send a HAL Update UAPSD params request message to
4054 the lower RIVA sub-system if DAL is in state STARTED.
4055
4056 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004057 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004058
4059 WDI_ConfigBSSReq must have been called.
4060
Jeff Johnsone7245742012-09-05 17:12:55 -07004061 @param pwdiUpdateUapsdReqParams: the UAPSD parameters
Jeff Johnson295189b2012-06-20 16:38:30 -07004062 as specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004063
Jeff Johnson295189b2012-06-20 16:38:30 -07004064 wdiUpdateUapsdParamsCb: callback for passing back the
4065 response of the update UAPSD params operation received
4066 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004067
Jeff Johnson295189b2012-06-20 16:38:30 -07004068 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004069 callback
4070
Jeff Johnson295189b2012-06-20 16:38:30 -07004071 @see WDI_ConfigBSSReq
4072 @return Result of the function call
4073*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004074WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004075WDI_UpdateUapsdParamsReq
4076(
4077 WDI_UpdateUapsdReqParamsType *pwdiUpdateUapsdReqParams,
4078 WDI_UpdateUapsdParamsCb wdiUpdateUapsdParamsCb,
4079 void* pUserData
4080)
4081{
4082 WDI_EventInfoType wdiEventData;
4083 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4084
4085 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004086 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004087 ------------------------------------------------------------------------*/
4088 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4089 {
4090 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4091 "WDI API call before module is initialized - Fail request");
4092
Jeff Johnsone7245742012-09-05 17:12:55 -07004093 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004094 }
4095
4096 /*------------------------------------------------------------------------
4097 Fill in Event data and post to the Main FSM
4098 ------------------------------------------------------------------------*/
4099 wdiEventData.wdiRequest = WDI_UPDATE_UAPSD_PARAM_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004100 wdiEventData.pEventData = pwdiUpdateUapsdReqParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07004101 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateUapsdReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004102 wdiEventData.pCBfnc = wdiUpdateUapsdParamsCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004103 wdiEventData.pUserData = pUserData;
4104
4105 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4106
4107}/*WDI_UpdateUapsdParamsReq*/
4108
4109/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004110 @brief WDI_SetUapsdAcParamsReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07004111 MAC wants to set the UAPSD related configurations before
4112 requesting for enter UAPSD power state to the WLAN
4113 Device. Upon the call of this API the WLAN DAL will pack
4114 and send a HAL Set UAPSD params request message to
4115 the lower RIVA sub-system if DAL is in state STARTED.
4116
4117 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004118 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004119
4120 WDI_PostAssocReq must have been called.
4121
4122 @param pwdiUapsdInfo: the UAPSD parameters as specified by
4123 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004124
Jeff Johnson295189b2012-06-20 16:38:30 -07004125 wdiSetUapsdAcParamsCb: callback for passing back the
4126 response of the set UAPSD params operation received from
4127 the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004128
Jeff Johnson295189b2012-06-20 16:38:30 -07004129 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004130 callback
4131
Jeff Johnson295189b2012-06-20 16:38:30 -07004132 @see WDI_PostAssocReq
4133 @return Result of the function call
4134*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004135WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004136WDI_SetUapsdAcParamsReq
4137(
4138 WDI_SetUapsdAcParamsReqParamsType* pwdiUapsdInfo,
4139 WDI_SetUapsdAcParamsCb wdiSetUapsdAcParamsCb,
4140 void* pUserData
4141)
4142{
4143 WDI_EventInfoType wdiEventData;
4144 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4145
4146 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004147 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004148 ------------------------------------------------------------------------*/
4149 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4150 {
4151 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4152 "WDI API call before module is initialized - Fail request");
4153
Jeff Johnsone7245742012-09-05 17:12:55 -07004154 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004155 }
4156
4157 /*------------------------------------------------------------------------
4158 Fill in Event data and post to the Main FSM
4159 ------------------------------------------------------------------------*/
4160 wdiEventData.wdiRequest = WDI_SET_UAPSD_PARAM_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004161 wdiEventData.pEventData = pwdiUapsdInfo;
4162 wdiEventData.uEventDataSize = sizeof(*pwdiUapsdInfo);
4163 wdiEventData.pCBfnc = wdiSetUapsdAcParamsCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004164 wdiEventData.pUserData = pUserData;
4165
4166 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4167
4168}/*WDI_SetUapsdAcParamsReq*/
4169
4170/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004171 @brief WDI_ConfigureRxpFilterReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07004172 MAC wants to set/reset the RXP filters for received pkts
4173 (MC, BC etc.). Upon the call of this API the WLAN DAL will pack
4174 and send a HAL configure RXP filter request message to
4175 the lower RIVA sub-system.
4176
4177 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004178 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004179
Jeff Johnsone7245742012-09-05 17:12:55 -07004180
4181 @param pwdiConfigureRxpFilterReqParams: the RXP
Jeff Johnson295189b2012-06-20 16:38:30 -07004182 filter as specified by the Device
4183 Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004184
Jeff Johnson295189b2012-06-20 16:38:30 -07004185 wdiConfigureRxpFilterCb: callback for passing back the
4186 response of the configure RXP filter operation received
4187 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004188
Jeff Johnson295189b2012-06-20 16:38:30 -07004189 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004190 callback
4191
Jeff Johnson295189b2012-06-20 16:38:30 -07004192 @return Result of the function call
4193*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004194WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004195WDI_ConfigureRxpFilterReq
4196(
4197 WDI_ConfigureRxpFilterReqParamsType *pwdiConfigureRxpFilterReqParams,
4198 WDI_ConfigureRxpFilterCb wdiConfigureRxpFilterCb,
4199 void* pUserData
4200)
4201{
4202 WDI_EventInfoType wdiEventData;
4203 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4204
4205 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004206 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004207 ------------------------------------------------------------------------*/
4208 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4209 {
4210 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4211 "WDI API call before module is initialized - Fail request");
4212
Jeff Johnsone7245742012-09-05 17:12:55 -07004213 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004214 }
4215
4216 /*------------------------------------------------------------------------
4217 Fill in Event data and post to the Main FSM
4218 ------------------------------------------------------------------------*/
4219 wdiEventData.wdiRequest = WDI_CONFIGURE_RXP_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004220 wdiEventData.pEventData = pwdiConfigureRxpFilterReqParams;
4221 wdiEventData.uEventDataSize = sizeof(*pwdiConfigureRxpFilterReqParams);
4222 wdiEventData.pCBfnc = wdiConfigureRxpFilterCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004223 wdiEventData.pUserData = pUserData;
4224
4225 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4226}/*WDI_ConfigureRxpFilterReq*/
4227
4228/**
4229 @brief WDI_SetBeaconFilterReq will be called when the upper MAC
4230 wants to set the beacon filters while in power save.
4231 Upon the call of this API the WLAN DAL will pack and
4232 send a Beacon filter request message to the
4233 lower RIVA sub-system.
4234
4235 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004236 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004237
Jeff Johnsone7245742012-09-05 17:12:55 -07004238
4239 @param pwdiBeaconFilterReqParams: the beacon
Jeff Johnson295189b2012-06-20 16:38:30 -07004240 filter as specified by the Device
4241 Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004242
Jeff Johnson295189b2012-06-20 16:38:30 -07004243 wdiBeaconFilterCb: callback for passing back the
4244 response of the set beacon filter operation received
4245 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004246
Jeff Johnson295189b2012-06-20 16:38:30 -07004247 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004248 callback
4249
Jeff Johnson295189b2012-06-20 16:38:30 -07004250 @return Result of the function call
4251*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004252WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004253WDI_SetBeaconFilterReq
4254(
4255 WDI_BeaconFilterReqParamsType *pwdiBeaconFilterReqParams,
4256 WDI_SetBeaconFilterCb wdiBeaconFilterCb,
4257 void* pUserData
4258)
4259{
4260 WDI_EventInfoType wdiEventData;
4261 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4262
4263 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004264 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004265 ------------------------------------------------------------------------*/
4266 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4267 {
4268 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4269 "WDI API call before module is initialized - Fail request");
4270
Jeff Johnsone7245742012-09-05 17:12:55 -07004271 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004272 }
4273
4274 /*------------------------------------------------------------------------
4275 Fill in Event data and post to the Main FSM
4276 ------------------------------------------------------------------------*/
4277 wdiEventData.wdiRequest = WDI_SET_BEACON_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004278 wdiEventData.pEventData = pwdiBeaconFilterReqParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07004279 wdiEventData.uEventDataSize = sizeof(*pwdiBeaconFilterReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004280 wdiEventData.pCBfnc = wdiBeaconFilterCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004281 wdiEventData.pUserData = pUserData;
4282
4283 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4284}/*WDI_SetBeaconFilterReq*/
4285
4286/**
4287 @brief WDI_RemBeaconFilterReq will be called when the upper MAC
4288 wants to remove the beacon filter for particular IE
4289 while in power save. Upon the call of this API the WLAN
4290 DAL will pack and send a remove Beacon filter request
4291 message to the lower RIVA sub-system.
4292
4293 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004294 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004295
Jeff Johnsone7245742012-09-05 17:12:55 -07004296
4297 @param pwdiBeaconFilterReqParams: the beacon
Jeff Johnson295189b2012-06-20 16:38:30 -07004298 filter as specified by the Device
4299 Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004300
Jeff Johnson295189b2012-06-20 16:38:30 -07004301 wdiBeaconFilterCb: callback for passing back the
4302 response of the remove beacon filter operation received
4303 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004304
Jeff Johnson295189b2012-06-20 16:38:30 -07004305 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004306 callback
4307
Jeff Johnson295189b2012-06-20 16:38:30 -07004308 @return Result of the function call
4309*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004310WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004311WDI_RemBeaconFilterReq
4312(
4313 WDI_RemBeaconFilterReqParamsType *pwdiBeaconFilterReqParams,
4314 WDI_RemBeaconFilterCb wdiBeaconFilterCb,
4315 void* pUserData
4316)
4317{
4318 WDI_EventInfoType wdiEventData;
4319 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4320
4321 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004322 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004323 ------------------------------------------------------------------------*/
4324 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4325 {
4326 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4327 "WDI API call before module is initialized - Fail request");
4328
Jeff Johnsone7245742012-09-05 17:12:55 -07004329 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004330 }
4331
4332 /*------------------------------------------------------------------------
4333 Fill in Event data and post to the Main FSM
4334 ------------------------------------------------------------------------*/
4335 wdiEventData.wdiRequest = WDI_REM_BEACON_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004336 wdiEventData.pEventData = pwdiBeaconFilterReqParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07004337 wdiEventData.uEventDataSize = sizeof(*pwdiBeaconFilterReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004338 wdiEventData.pCBfnc = wdiBeaconFilterCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004339 wdiEventData.pUserData = pUserData;
4340
4341 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4342}/*WDI_RemBeaconFilterReq*/
4343
4344/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004345 @brief WDI_SetRSSIThresholdsReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07004346 MAC wants to set the RSSI thresholds related
4347 configurations while in power save. Upon the call of
4348 this API the WLAN DAL will pack and send a HAL Set RSSI
4349 thresholds request message to the lower RIVA
4350 sub-system if DAL is in state STARTED.
4351
4352 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004353 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004354
4355 WDI_PostAssocReq must have been called.
4356
4357 @param pwdiUapsdInfo: the UAPSD parameters as specified by
4358 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004359
Jeff Johnson295189b2012-06-20 16:38:30 -07004360 wdiSetUapsdAcParamsCb: callback for passing back the
4361 response of the set UAPSD params operation received from
4362 the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004363
Jeff Johnson295189b2012-06-20 16:38:30 -07004364 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004365 callback
4366
Jeff Johnson295189b2012-06-20 16:38:30 -07004367 @see WDI_PostAssocReq
4368 @return Result of the function call
4369*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004370WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004371WDI_SetRSSIThresholdsReq
4372(
4373 WDI_SetRSSIThresholdsReqParamsType* pwdiRSSIThresholdsParams,
4374 WDI_SetRSSIThresholdsCb wdiSetRSSIThresholdsCb,
4375 void* pUserData
4376)
4377{
4378 WDI_EventInfoType wdiEventData;
4379 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4380
4381 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004382 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004383 ------------------------------------------------------------------------*/
4384 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4385 {
4386 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4387 "WDI API call before module is initialized - Fail request");
4388
Jeff Johnsone7245742012-09-05 17:12:55 -07004389 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004390 }
4391
4392 /*------------------------------------------------------------------------
4393 Fill in Event data and post to the Main FSM
4394 ------------------------------------------------------------------------*/
4395 wdiEventData.wdiRequest = WDI_SET_RSSI_THRESHOLDS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004396 wdiEventData.pEventData = pwdiRSSIThresholdsParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07004397 wdiEventData.uEventDataSize = sizeof(*pwdiRSSIThresholdsParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004398 wdiEventData.pCBfnc = wdiSetRSSIThresholdsCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004399 wdiEventData.pUserData = pUserData;
4400
4401 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4402}/* WDI_SetRSSIThresholdsReq*/
4403
4404/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004405 @brief WDI_HostOffloadReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004406 wants to set the filter to minimize unnecessary host
4407 wakeup due to broadcast traffic while in power save.
4408 Upon the call of this API the WLAN DAL will pack and
4409 send a HAL host offload request message to the
4410 lower RIVA sub-system if DAL is in state STARTED.
4411
4412 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004413 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004414
4415 WDI_PostAssocReq must have been called.
4416
Jeff Johnsone7245742012-09-05 17:12:55 -07004417 @param pwdiHostOffloadParams: the host offload as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07004418 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004419
Jeff Johnson295189b2012-06-20 16:38:30 -07004420 wdiHostOffloadCb: callback for passing back the response
4421 of the host offload operation received from the
4422 device
Jeff Johnsone7245742012-09-05 17:12:55 -07004423
Jeff Johnson295189b2012-06-20 16:38:30 -07004424 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004425 callback
4426
Jeff Johnson295189b2012-06-20 16:38:30 -07004427 @see WDI_PostAssocReq
4428 @return Result of the function call
4429*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004430WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004431WDI_HostOffloadReq
4432(
4433 WDI_HostOffloadReqParamsType* pwdiHostOffloadParams,
4434 WDI_HostOffloadCb wdiHostOffloadCb,
4435 void* pUserData
4436)
4437{
4438 WDI_EventInfoType wdiEventData;
4439 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4440
4441 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004442 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004443 ------------------------------------------------------------------------*/
4444 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4445 {
4446 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4447 "WDI API call before module is initialized - Fail request");
4448
Jeff Johnsone7245742012-09-05 17:12:55 -07004449 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004450 }
4451
4452 /*------------------------------------------------------------------------
4453 Fill in Event data and post to the Main FSM
4454 ------------------------------------------------------------------------*/
4455 wdiEventData.wdiRequest = WDI_HOST_OFFLOAD_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004456 wdiEventData.pEventData = pwdiHostOffloadParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07004457 wdiEventData.uEventDataSize = sizeof(*pwdiHostOffloadParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004458 wdiEventData.pCBfnc = wdiHostOffloadCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004459 wdiEventData.pUserData = pUserData;
4460
4461 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4462}/*WDI_HostOffloadReq*/
4463
4464/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004465 @brief WDI_KeepAliveReq will be called when the upper MAC
4466 wants to set the filter to send NULL or unsolicited ARP responses
Jeff Johnson295189b2012-06-20 16:38:30 -07004467 and minimize unnecessary host wakeups due to while in power save.
4468 Upon the call of this API the WLAN DAL will pack and
4469 send a HAL Keep Alive request message to the
4470 lower RIVA sub-system if DAL is in state STARTED.
4471
4472 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004473 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004474
4475 WDI_PostAssocReq must have been called.
4476
Jeff Johnsone7245742012-09-05 17:12:55 -07004477 @param pwdiKeepAliveParams: the Keep Alive as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07004478 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004479
Jeff Johnson295189b2012-06-20 16:38:30 -07004480 wdiKeepAliveCb: callback for passing back the response
4481 of the Keep Alive operation received from the
4482 device
Jeff Johnsone7245742012-09-05 17:12:55 -07004483
Jeff Johnson295189b2012-06-20 16:38:30 -07004484 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004485 callback
4486
Jeff Johnson295189b2012-06-20 16:38:30 -07004487 @see WDI_PostAssocReq
4488 @return Result of the function call
4489*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004490WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004491WDI_KeepAliveReq
4492(
4493 WDI_KeepAliveReqParamsType* pwdiKeepAliveParams,
4494 WDI_KeepAliveCb wdiKeepAliveCb,
4495 void* pUserData
4496)
4497{
4498 WDI_EventInfoType wdiEventData;
4499 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4500
4501 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004502 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004503 ------------------------------------------------------------------------*/
4504 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4505 {
4506 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4507 "WDI_KeepAliveReq: WDI API call before module "
4508 "is initialized - Fail request");
4509
Jeff Johnsone7245742012-09-05 17:12:55 -07004510 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004511 }
4512
4513 /*------------------------------------------------------------------------
4514 Fill in Event data and post to the Main FSM
4515 ------------------------------------------------------------------------*/
4516 wdiEventData.wdiRequest = WDI_KEEP_ALIVE_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004517 wdiEventData.pEventData = pwdiKeepAliveParams;
4518 wdiEventData.uEventDataSize = sizeof(*pwdiKeepAliveParams);
4519 wdiEventData.pCBfnc = wdiKeepAliveCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004520 wdiEventData.pUserData = pUserData;
4521
4522 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4523}/*WDI_KeepAliveReq*/
4524
4525/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004526 @brief WDI_WowlAddBcPtrnReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004527 wants to set the Wowl Bcast ptrn to minimize unnecessary
4528 host wakeup due to broadcast traffic while in power
4529 save. Upon the call of this API the WLAN DAL will pack
4530 and send a HAL Wowl Bcast ptrn request message to the
4531 lower RIVA sub-system if DAL is in state STARTED.
4532
4533 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004534 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004535
4536 WDI_PostAssocReq must have been called.
4537
Jeff Johnsone7245742012-09-05 17:12:55 -07004538 @param pwdiWowlAddBcPtrnParams: the Wowl bcast ptrn as
Jeff Johnson295189b2012-06-20 16:38:30 -07004539 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004540
Jeff Johnson295189b2012-06-20 16:38:30 -07004541 wdiWowlAddBcPtrnCb: callback for passing back the
4542 response of the add Wowl bcast ptrn operation received
4543 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004544
Jeff Johnson295189b2012-06-20 16:38:30 -07004545 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004546 callback
4547
Jeff Johnson295189b2012-06-20 16:38:30 -07004548 @see WDI_PostAssocReq
4549 @return Result of the function call
4550*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004551WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004552WDI_WowlAddBcPtrnReq
4553(
4554 WDI_WowlAddBcPtrnReqParamsType* pwdiWowlAddBcPtrnParams,
4555 WDI_WowlAddBcPtrnCb wdiWowlAddBcPtrnCb,
4556 void* pUserData
4557)
4558{
4559 WDI_EventInfoType wdiEventData;
4560 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4561
4562 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004563 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004564 ------------------------------------------------------------------------*/
4565 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4566 {
4567 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4568 "WDI API call before module is initialized - Fail request");
4569
Jeff Johnsone7245742012-09-05 17:12:55 -07004570 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004571 }
4572
4573 /*------------------------------------------------------------------------
4574 Fill in Event data and post to the Main FSM
4575 ------------------------------------------------------------------------*/
4576 wdiEventData.wdiRequest = WDI_WOWL_ADD_BC_PTRN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004577 wdiEventData.pEventData = pwdiWowlAddBcPtrnParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07004578 wdiEventData.uEventDataSize = sizeof(*pwdiWowlAddBcPtrnParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004579 wdiEventData.pCBfnc = wdiWowlAddBcPtrnCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004580 wdiEventData.pUserData = pUserData;
4581
4582 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4583}/*WDI_WowlAddBcPtrnReq*/
4584
4585/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004586 @brief WDI_WowlDelBcPtrnReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004587 wants to clear the Wowl Bcast ptrn. Upon the call of
4588 this API the WLAN DAL will pack and send a HAL delete
4589 Wowl Bcast ptrn request message to the lower RIVA
4590 sub-system if DAL is in state STARTED.
4591
4592 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004593 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004594
4595 WDI_WowlAddBcPtrnReq must have been called.
4596
Jeff Johnsone7245742012-09-05 17:12:55 -07004597 @param pwdiWowlDelBcPtrnParams: the Wowl bcast ptrn as
Jeff Johnson295189b2012-06-20 16:38:30 -07004598 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004599
Jeff Johnson295189b2012-06-20 16:38:30 -07004600 wdiWowlDelBcPtrnCb: callback for passing back the
4601 response of the del Wowl bcast ptrn operation received
4602 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004603
Jeff Johnson295189b2012-06-20 16:38:30 -07004604 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004605 callback
4606
Jeff Johnson295189b2012-06-20 16:38:30 -07004607 @see WDI_WowlAddBcPtrnReq
4608 @return Result of the function call
4609*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004610WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004611WDI_WowlDelBcPtrnReq
4612(
4613 WDI_WowlDelBcPtrnReqParamsType* pwdiWowlDelBcPtrnParams,
4614 WDI_WowlDelBcPtrnCb wdiWowlDelBcPtrnCb,
4615 void* pUserData
4616)
4617{
4618 WDI_EventInfoType wdiEventData;
4619 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4620
4621 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004622 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004623 ------------------------------------------------------------------------*/
4624 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4625 {
4626 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4627 "WDI API call before module is initialized - Fail request");
4628
Jeff Johnsone7245742012-09-05 17:12:55 -07004629 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004630 }
4631
4632 /*------------------------------------------------------------------------
4633 Fill in Event data and post to the Main FSM
4634 ------------------------------------------------------------------------*/
4635 wdiEventData.wdiRequest = WDI_WOWL_DEL_BC_PTRN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004636 wdiEventData.pEventData = pwdiWowlDelBcPtrnParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07004637 wdiEventData.uEventDataSize = sizeof(*pwdiWowlDelBcPtrnParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004638 wdiEventData.pCBfnc = wdiWowlDelBcPtrnCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004639 wdiEventData.pUserData = pUserData;
4640
4641 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4642}/*WDI_WowlDelBcPtrnReq*/
4643
4644/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004645 @brief WDI_WowlEnterReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004646 wants to enter the Wowl state to minimize unnecessary
4647 host wakeup while in power save. Upon the call of this
4648 API the WLAN DAL will pack and send a HAL Wowl enter
4649 request message to the lower RIVA sub-system if DAL is
4650 in state STARTED.
4651
4652 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004653 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004654
4655 WDI_PostAssocReq must have been called.
4656
Jeff Johnsone7245742012-09-05 17:12:55 -07004657 @param pwdiWowlEnterReqParams: the Wowl enter info as
Jeff Johnson295189b2012-06-20 16:38:30 -07004658 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004659
Jeff Johnson295189b2012-06-20 16:38:30 -07004660 wdiWowlEnterReqCb: callback for passing back the
4661 response of the enter Wowl operation received from the
4662 device
Jeff Johnsone7245742012-09-05 17:12:55 -07004663
Jeff Johnson295189b2012-06-20 16:38:30 -07004664 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004665 callback
4666
Jeff Johnson295189b2012-06-20 16:38:30 -07004667 @see WDI_PostAssocReq
4668 @return Result of the function call
4669*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004670WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004671WDI_WowlEnterReq
4672(
4673 WDI_WowlEnterReqParamsType* pwdiWowlEnterParams,
4674 WDI_WowlEnterReqCb wdiWowlEnterCb,
4675 void* pUserData
4676)
4677{
4678 WDI_EventInfoType wdiEventData;
4679 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4680
4681 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004682 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004683 ------------------------------------------------------------------------*/
4684 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4685 {
4686 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4687 "WDI API call before module is initialized - Fail request");
4688
Jeff Johnsone7245742012-09-05 17:12:55 -07004689 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004690 }
4691
4692 /*------------------------------------------------------------------------
4693 Fill in Event data and post to the Main FSM
4694 ------------------------------------------------------------------------*/
4695 wdiEventData.wdiRequest = WDI_WOWL_ENTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004696 wdiEventData.pEventData = pwdiWowlEnterParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07004697 wdiEventData.uEventDataSize = sizeof(*pwdiWowlEnterParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004698 wdiEventData.pCBfnc = wdiWowlEnterCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004699 wdiEventData.pUserData = pUserData;
4700
4701 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4702}/*WDI_WowlEnterReq*/
4703
4704/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004705 @brief WDI_WowlExitReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004706 wants to exit the Wowl state. Upon the call of this API
4707 the WLAN DAL will pack and send a HAL Wowl exit request
4708 message to the lower RIVA sub-system if DAL is in state
4709 STARTED.
4710
4711 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004712 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004713
4714 WDI_WowlEnterReq must have been called.
4715
Jeff Johnsone7245742012-09-05 17:12:55 -07004716 @param pwdiWowlExitReqParams: the Wowl exit info as
Jeff Johnson295189b2012-06-20 16:38:30 -07004717 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004718
Jeff Johnson295189b2012-06-20 16:38:30 -07004719 wdiWowlExitReqCb: callback for passing back the response
4720 of the exit Wowl operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004721
Jeff Johnson295189b2012-06-20 16:38:30 -07004722 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004723 callback
4724
Jeff Johnson295189b2012-06-20 16:38:30 -07004725 @see WDI_WowlEnterReq
4726 @return Result of the function call
4727*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004728WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004729WDI_WowlExitReq
4730(
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -07004731 WDI_WowlExitReqParamsType* pwdiWowlExitParams,
Jeff Johnson295189b2012-06-20 16:38:30 -07004732 WDI_WowlExitReqCb wdiWowlExitCb,
4733 void* pUserData
4734)
4735{
4736 WDI_EventInfoType wdiEventData;
4737 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4738
4739 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004740 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004741 ------------------------------------------------------------------------*/
4742 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4743 {
4744 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4745 "WDI API call before module is initialized - Fail request");
4746
Jeff Johnsone7245742012-09-05 17:12:55 -07004747 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004748 }
4749
4750 /*------------------------------------------------------------------------
4751 Fill in Event data and post to the Main FSM
4752 ------------------------------------------------------------------------*/
4753 wdiEventData.wdiRequest = WDI_WOWL_EXIT_REQ;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -07004754 wdiEventData.pEventData = pwdiWowlExitParams;
4755 wdiEventData.uEventDataSize = sizeof(*pwdiWowlExitParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004756 wdiEventData.pCBfnc = wdiWowlExitCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004757 wdiEventData.pUserData = pUserData;
4758
4759 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4760}/*WDI_WowlExitReq*/
4761
4762/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004763 @brief WDI_ConfigureAppsCpuWakeupStateReq will be called when
Jeff Johnson295189b2012-06-20 16:38:30 -07004764 the upper MAC wants to dynamically adjusts the listen
4765 interval based on the WLAN/MSM activity. Upon the call
4766 of this API the WLAN DAL will pack and send a HAL
4767 configure Apps Cpu Wakeup State request message to the
4768 lower RIVA sub-system.
4769
4770 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004771 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004772
Jeff Johnsone7245742012-09-05 17:12:55 -07004773
4774 @param pwdiConfigureAppsCpuWakeupStateReqParams: the
Jeff Johnson295189b2012-06-20 16:38:30 -07004775 Apps Cpu Wakeup State as specified by the
4776 Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004777
Jeff Johnson295189b2012-06-20 16:38:30 -07004778 wdiConfigureAppsCpuWakeupStateCb: callback for passing
4779 back the response of the configure Apps Cpu Wakeup State
4780 operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004781
Jeff Johnson295189b2012-06-20 16:38:30 -07004782 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004783 callback
4784
Jeff Johnson295189b2012-06-20 16:38:30 -07004785 @return Result of the function call
4786*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004787WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004788WDI_ConfigureAppsCpuWakeupStateReq
4789(
4790 WDI_ConfigureAppsCpuWakeupStateReqParamsType *pwdiConfigureAppsCpuWakeupStateReqParams,
4791 WDI_ConfigureAppsCpuWakeupStateCb wdiConfigureAppsCpuWakeupStateCb,
4792 void* pUserData
4793)
4794{
4795 WDI_EventInfoType wdiEventData;
4796 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4797
4798 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004799 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004800 ------------------------------------------------------------------------*/
4801 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4802 {
4803 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4804 "WDI API call before module is initialized - Fail request");
4805
Jeff Johnsone7245742012-09-05 17:12:55 -07004806 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004807 }
4808
4809 /*------------------------------------------------------------------------
4810 Fill in Event data and post to the Main FSM
4811 ------------------------------------------------------------------------*/
4812 wdiEventData.wdiRequest = WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004813 wdiEventData.pEventData = pwdiConfigureAppsCpuWakeupStateReqParams;
4814 wdiEventData.uEventDataSize = sizeof(*pwdiConfigureAppsCpuWakeupStateReqParams);
4815 wdiEventData.pCBfnc = wdiConfigureAppsCpuWakeupStateCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004816 wdiEventData.pUserData = pUserData;
4817
4818 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4819}/*WDI_ConfigureAppsCpuWakeupStateReq*/
4820/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004821 @brief WDI_FlushAcReq will be called when the upper MAC wants
Jeff Johnson295189b2012-06-20 16:38:30 -07004822 to to perform a flush operation on a given AC. Upon the
4823 call of this API the WLAN DAL will pack and send a HAL
4824 Flush AC request message to the lower RIVA sub-system if
4825 DAL is in state STARTED.
4826
4827 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004828 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004829
4830 WDI_AddBAReq must have been called.
4831
Jeff Johnsone7245742012-09-05 17:12:55 -07004832 @param pwdiFlushAcReqParams: the Flush AC parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07004833 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004834
Jeff Johnson295189b2012-06-20 16:38:30 -07004835 wdiFlushAcRspCb: callback for passing back the response
4836 of the Flush AC operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004837
Jeff Johnson295189b2012-06-20 16:38:30 -07004838 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004839 callback
4840
Jeff Johnson295189b2012-06-20 16:38:30 -07004841 @see WDI_AddBAReq
4842 @return Result of the function call
4843*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004844WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004845WDI_FlushAcReq
4846(
4847 WDI_FlushAcReqParamsType* pwdiFlushAcReqParams,
4848 WDI_FlushAcRspCb wdiFlushAcRspCb,
4849 void* pUserData
4850)
4851{
4852 WDI_EventInfoType wdiEventData;
4853 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4854
4855 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004856 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004857 ------------------------------------------------------------------------*/
4858 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4859 {
4860 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4861 "WDI API call before module is initialized - Fail request");
4862
Jeff Johnsone7245742012-09-05 17:12:55 -07004863 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004864 }
4865
4866 /*------------------------------------------------------------------------
4867 Fill in Event data and post to the Main FSM
4868 ------------------------------------------------------------------------*/
4869 wdiEventData.wdiRequest = WDI_FLUSH_AC_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004870 wdiEventData.pEventData = pwdiFlushAcReqParams;
4871 wdiEventData.uEventDataSize = sizeof(*pwdiFlushAcReqParams);
4872 wdiEventData.pCBfnc = wdiFlushAcRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004873 wdiEventData.pUserData = pUserData;
4874
4875 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4876
4877}/*WDI_FlushAcReq*/
4878
4879/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004880 @brief WDI_BtAmpEventReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004881 wants to notify the lower mac on a BT AMP event. This is
4882 to inform BTC-SLM that some BT AMP event occurred. Upon
4883 the call of this API the WLAN DAL will pack and send a
4884 HAL BT AMP event request message to the lower RIVA
4885 sub-system if DAL is in state STARTED.
4886
4887 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004888 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004889
Jeff Johnsone7245742012-09-05 17:12:55 -07004890
4891 @param wdiBtAmpEventReqParams: the BT AMP event parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07004892 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004893
Jeff Johnson295189b2012-06-20 16:38:30 -07004894 wdiBtAmpEventRspCb: callback for passing back the
4895 response of the BT AMP event operation received from the
4896 device
Jeff Johnsone7245742012-09-05 17:12:55 -07004897
Jeff Johnson295189b2012-06-20 16:38:30 -07004898 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004899 callback
4900
Jeff Johnson295189b2012-06-20 16:38:30 -07004901 @return Result of the function call
4902*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004903WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004904WDI_BtAmpEventReq
4905(
4906 WDI_BtAmpEventParamsType* pwdiBtAmpEventReqParams,
4907 WDI_BtAmpEventRspCb wdiBtAmpEventRspCb,
4908 void* pUserData
4909)
4910{
4911 WDI_EventInfoType wdiEventData;
4912 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4913
4914 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004915 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004916 ------------------------------------------------------------------------*/
4917 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4918 {
4919 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4920 "WDI API call before module is initialized - Fail request");
4921
Jeff Johnsone7245742012-09-05 17:12:55 -07004922 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004923 }
4924
4925 /*------------------------------------------------------------------------
4926 Fill in Event data and post to the Main FSM
4927 ------------------------------------------------------------------------*/
4928 wdiEventData.wdiRequest = WDI_BTAMP_EVENT_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004929 wdiEventData.pEventData = pwdiBtAmpEventReqParams;
4930 wdiEventData.uEventDataSize = sizeof(*pwdiBtAmpEventReqParams);
4931 wdiEventData.pCBfnc = wdiBtAmpEventRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004932 wdiEventData.pUserData = pUserData;
4933
4934 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4935
4936}/*WDI_BtAmpEventReq*/
4937
Jeff Johnsone7245742012-09-05 17:12:55 -07004938#ifdef FEATURE_OEM_DATA_SUPPORT
4939/**
4940 @brief WDI_Start Oem Data Req will be called when the upper MAC
4941 wants to notify the lower mac on a oem data Req event.Upon
4942 the call of this API the WLAN DAL will pack and send a
4943 HAL OEM Data Req event request message to the lower RIVA
4944 sub-system if DAL is in state STARTED.
4945
4946 In state BUSY this request will be queued. Request won't
4947 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004948
4949
Jeff Johnsone7245742012-09-05 17:12:55 -07004950
4951 @param pwdiOemDataReqParams: the Oem Data Req as
4952 specified by the Device Interface
4953
4954 wdiStartOemDataRspCb: callback for passing back the
4955 response of the Oem Data Req received from the
4956 device
4957
4958 pUserData: user data will be passed back with the
4959 callback
4960
4961 @return Result of the function call
4962*/
4963WDI_Status
4964WDI_StartOemDataReq
4965(
4966 WDI_oemDataReqParamsType* pwdiOemDataReqParams,
4967 WDI_oemDataRspCb wdiOemDataRspCb,
4968 void* pUserData
4969)
4970{
4971 WDI_EventInfoType wdiEventData;
4972 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4973
4974 /*------------------------------------------------------------------------
4975 Sanity Check
4976 ------------------------------------------------------------------------*/
4977 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4978 {
4979 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4980 "WDI API call before module is initialized - Fail request");
4981
4982 return WDI_STATUS_E_NOT_ALLOWED;
4983 }
4984
4985 /*------------------------------------------------------------------------
4986 Fill in Event data and post to the Main FSM
4987 ------------------------------------------------------------------------*/
4988 wdiEventData.wdiRequest = WDI_START_OEM_DATA_REQ;
4989 wdiEventData.pEventData = pwdiOemDataReqParams;
4990 wdiEventData.uEventDataSize = sizeof(*pwdiOemDataReqParams);
4991 wdiEventData.pCBfnc = wdiOemDataRspCb;
4992 wdiEventData.pUserData = pUserData;
4993
4994 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4995
4996
4997}
4998
4999#endif
5000
5001
5002/*========================================================================
5003
Jeff Johnson295189b2012-06-20 16:38:30 -07005004 CONTROL APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07005005
Jeff Johnson295189b2012-06-20 16:38:30 -07005006==========================================================================*/
5007/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005008 @brief WDI_SwitchChReq will be called when the upper MAC wants
Jeff Johnson295189b2012-06-20 16:38:30 -07005009 the WLAN HW to change the current channel of operation.
5010 Upon the call of this API the WLAN DAL will pack and
5011 send a HAL Start request message to the lower RIVA
5012 sub-system if DAL is in state STARTED.
5013
5014 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005015 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005016
5017 WDI_Start must have been called.
5018
Jeff Johnsone7245742012-09-05 17:12:55 -07005019 @param wdiSwitchChReqParams: the switch ch parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07005020 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005021
Jeff Johnson295189b2012-06-20 16:38:30 -07005022 wdiSwitchChRspCb: callback for passing back the response
5023 of the switch ch operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005024
Jeff Johnson295189b2012-06-20 16:38:30 -07005025 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005026 callback
5027
Jeff Johnson295189b2012-06-20 16:38:30 -07005028 @see WDI_Start
5029 @return Result of the function call
5030*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005031WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005032WDI_SwitchChReq
5033(
5034 WDI_SwitchChReqParamsType* pwdiSwitchChReqParams,
5035 WDI_SwitchChRspCb wdiSwitchChRspCb,
5036 void* pUserData
5037)
5038{
5039 WDI_EventInfoType wdiEventData;
5040 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5041
5042 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005043 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005044 ------------------------------------------------------------------------*/
5045 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5046 {
5047 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5048 "WDI API call before module is initialized - Fail request");
5049
Jeff Johnsone7245742012-09-05 17:12:55 -07005050 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005051 }
5052
5053 /*------------------------------------------------------------------------
5054 Fill in Event data and post to the Main FSM
5055 ------------------------------------------------------------------------*/
5056 wdiEventData.wdiRequest = WDI_CH_SWITCH_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005057 wdiEventData.pEventData = pwdiSwitchChReqParams;
5058 wdiEventData.uEventDataSize = sizeof(*pwdiSwitchChReqParams);
5059 wdiEventData.pCBfnc = wdiSwitchChRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005060 wdiEventData.pUserData = pUserData;
5061
5062 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5063
5064}/*WDI_SwitchChReq*/
5065
Kalikinkar dhara1e83b772014-02-06 12:59:22 -08005066/**
5067 @brief WDI_SwitchChReq_V1 will be called when the upper MAC wants
5068 the WLAN HW to change the current channel of operation.
5069 Upon the call of this API the WLAN DAL will pack and
5070 send a HAL Start request message to the lower RIVA
5071 sub-system if DAL is in state STARTED.
5072 This request message also includes source of channel switch,
5073 like CSA,
5074
5075 In state BUSY this request will be queued. Request won't
5076 be allowed in any other state.
5077
5078 WDI_Start must have been called.
5079
5080 @param wdiSwitchChReqParams: the switch ch parameters as
5081 specified by the Device Interface
5082
5083 wdiSwitchChRspCb: callback for passing back the response
5084 of the switch ch operation received from the device
5085
5086 pUserData: user data will be passed back with the
5087 callback
5088
5089 @see WDI_Start
5090 @return Result of the function call
5091*/
5092WDI_Status
5093WDI_SwitchChReq_V1
5094(
5095 WDI_SwitchChReqParamsType_V1* pwdiSwitchChReqParams,
5096 WDI_SwitchChRspCb_V1 wdiSwitchChRspCb,
5097 void* pUserData
5098)
5099{
5100 WDI_EventInfoType wdiEventData;
5101 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5102 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
5103 "WDI API call WDI_SwitchChReq_V1");
5104 /*------------------------------------------------------------------------
5105 Sanity Check
5106 ------------------------------------------------------------------------*/
5107 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5108 {
5109 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5110 "WDI API call before module is initialized - Fail request");
5111
5112 return WDI_STATUS_E_NOT_ALLOWED;
5113 }
5114
5115 /*------------------------------------------------------------------------
5116 Fill in Event data and post to the Main FSM
5117 ------------------------------------------------------------------------*/
5118 wdiEventData.wdiRequest = WDI_CH_SWITCH_REQ_V1;
5119 wdiEventData.pEventData = pwdiSwitchChReqParams;
5120 wdiEventData.uEventDataSize = sizeof(*pwdiSwitchChReqParams);
5121 wdiEventData.pCBfnc = wdiSwitchChRspCb;
5122 wdiEventData.pUserData = pUserData;
5123
5124 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5125
5126}/*WDI_SwitchChReq_V1*/
5127
Jeff Johnson295189b2012-06-20 16:38:30 -07005128
5129/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005130 @brief WDI_ConfigSTAReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07005131 wishes to add or update a STA in HW. Upon the call of
5132 this API the WLAN DAL will pack and send a HAL Start
5133 message request message to the lower RIVA sub-system if
5134 DAL is in state STARTED.
5135
5136 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005137 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005138
5139 WDI_Start must have been called.
5140
Jeff Johnsone7245742012-09-05 17:12:55 -07005141 @param wdiConfigSTAReqParams: the config STA parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07005142 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005143
Jeff Johnson295189b2012-06-20 16:38:30 -07005144 wdiConfigSTARspCb: callback for passing back the
5145 response of the config STA operation received from the
5146 device
Jeff Johnsone7245742012-09-05 17:12:55 -07005147
Jeff Johnson295189b2012-06-20 16:38:30 -07005148 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005149 callback
5150
Jeff Johnson295189b2012-06-20 16:38:30 -07005151 @see WDI_Start
5152 @return Result of the function call
5153*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005154WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005155WDI_ConfigSTAReq
5156(
5157 WDI_ConfigSTAReqParamsType* pwdiConfigSTAReqParams,
5158 WDI_ConfigSTARspCb wdiConfigSTARspCb,
5159 void* pUserData
5160)
5161{
5162 WDI_EventInfoType wdiEventData;
5163 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5164
5165 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005166 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005167 ------------------------------------------------------------------------*/
5168 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5169 {
5170 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5171 "WDI API call before module is initialized - Fail request");
5172
Jeff Johnsone7245742012-09-05 17:12:55 -07005173 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005174 }
5175
5176 /*------------------------------------------------------------------------
5177 Fill in Event data and post to the Main FSM
5178 ------------------------------------------------------------------------*/
5179 wdiEventData.wdiRequest = WDI_CONFIG_STA_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005180 wdiEventData.pEventData = pwdiConfigSTAReqParams;
5181 wdiEventData.uEventDataSize = sizeof(*pwdiConfigSTAReqParams);
5182 wdiEventData.pCBfnc = wdiConfigSTARspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005183 wdiEventData.pUserData = pUserData;
5184
5185 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5186
5187}/*WDI_ConfigSTAReq*/
5188
Manjunathappa Prakash86f78ca2014-02-10 18:09:15 -08005189 /**
5190 @brief WDI_UpdateChannelReq will be called when the upper MAC
5191 wants to update the channel list on change in country code.
5192
5193 In state BUSY this request will be queued. Request won't
5194 be allowed in any other state.
5195
5196 WDI_UpdateChannelReq must have been called.
5197
5198 @param wdiUpdateChannelReqParams: the updated channel parameters
5199 as specified by the Device Interface
5200
5201 wdiUpdateChannelRspCb: callback for passing back the
5202 response of the update channel operation received from
5203 the device
5204
5205 pUserData: user data will be passed back with the
5206 callback
5207
5208 @return Result of the function call
5209*/
5210WDI_Status
5211WDI_UpdateChannelReq
5212(
5213 WDI_UpdateChReqParamsType *pwdiUpdateChannelReqParams,
5214 WDI_UpdateChannelRspCb wdiUpdateChannelRspCb,
5215 void* pUserData
5216)
5217{
5218 WDI_EventInfoType wdiEventData = {{0}};
5219 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5220
5221 /*------------------------------------------------------------------------
5222 Sanity Check
5223 ------------------------------------------------------------------------*/
5224 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5225 {
5226 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5227 "WDI API call before module is initialized - Fail request");
5228
5229 return WDI_STATUS_E_NOT_ALLOWED;
5230 }
5231
5232 /*------------------------------------------------------------------------
5233 Fill in Event data and post to the Main FSM
5234 ------------------------------------------------------------------------*/
5235 wdiEventData.wdiRequest = WDI_UPDATE_CHAN_REQ;
5236 wdiEventData.pEventData = pwdiUpdateChannelReqParams;
5237 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateChannelReqParams);
5238 wdiEventData.pCBfnc = wdiUpdateChannelRspCb;
5239 wdiEventData.pUserData = pUserData;
5240
5241 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5242
5243}/*WDI_UpdateChannelReq*/
5244
Jeff Johnson295189b2012-06-20 16:38:30 -07005245/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005246 @brief WDI_SetLinkStateReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07005247 wants to change the state of an ongoing link. Upon the
5248 call of this API the WLAN DAL will pack and send a HAL
5249 Start message request message to the lower RIVA
5250 sub-system if DAL is in state STARTED.
5251
5252 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005253 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005254
5255 WDI_JoinStartReq must have been called.
5256
Jeff Johnsone7245742012-09-05 17:12:55 -07005257 @param wdiSetLinkStateReqParams: the set link state parameters
Jeff Johnson295189b2012-06-20 16:38:30 -07005258 as specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005259
Jeff Johnson295189b2012-06-20 16:38:30 -07005260 wdiSetLinkStateRspCb: callback for passing back the
5261 response of the set link state operation received from
5262 the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005263
Jeff Johnson295189b2012-06-20 16:38:30 -07005264 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005265 callback
5266
Jeff Johnson295189b2012-06-20 16:38:30 -07005267 @see WDI_JoinStartReq
5268 @return Result of the function call
5269*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005270WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005271WDI_SetLinkStateReq
5272(
5273 WDI_SetLinkReqParamsType* pwdiSetLinkStateReqParams,
5274 WDI_SetLinkStateRspCb wdiSetLinkStateRspCb,
5275 void* pUserData
5276)
5277{
5278 WDI_EventInfoType wdiEventData;
5279 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5280
5281 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005282 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005283 ------------------------------------------------------------------------*/
5284 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5285 {
5286 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5287 "WDI API call before module is initialized - Fail request");
5288
Jeff Johnsone7245742012-09-05 17:12:55 -07005289 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005290 }
5291
5292 /*------------------------------------------------------------------------
5293 Fill in Event data and post to the Main FSM
5294 ------------------------------------------------------------------------*/
5295 wdiEventData.wdiRequest = WDI_SET_LINK_ST_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005296 wdiEventData.pEventData = pwdiSetLinkStateReqParams;
5297 wdiEventData.uEventDataSize = sizeof(*pwdiSetLinkStateReqParams);
5298 wdiEventData.pCBfnc = wdiSetLinkStateRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005299 wdiEventData.pUserData = pUserData;
5300
5301 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5302
5303}/*WDI_SetLinkStateReq*/
5304
5305
5306/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005307 @brief WDI_GetStatsReq will be called when the upper MAC wants
Jeff Johnson295189b2012-06-20 16:38:30 -07005308 to get statistics (MIB counters) from the device. Upon
5309 the call of this API the WLAN DAL will pack and send a
5310 HAL Start request message to the lower RIVA sub-system
5311 if DAL is in state STARTED.
5312
5313 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005314 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005315
5316 WDI_Start must have been called.
5317
Jeff Johnsone7245742012-09-05 17:12:55 -07005318 @param wdiGetStatsReqParams: the stats parameters to get as
Jeff Johnson295189b2012-06-20 16:38:30 -07005319 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005320
Jeff Johnson295189b2012-06-20 16:38:30 -07005321 wdiGetStatsRspCb: callback for passing back the response
5322 of the get stats operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005323
Jeff Johnson295189b2012-06-20 16:38:30 -07005324 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005325 callback
5326
Jeff Johnson295189b2012-06-20 16:38:30 -07005327 @see WDI_Start
5328 @return Result of the function call
5329*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005330WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005331WDI_GetStatsReq
5332(
5333 WDI_GetStatsReqParamsType* pwdiGetStatsReqParams,
5334 WDI_GetStatsRspCb wdiGetStatsRspCb,
5335 void* pUserData
5336)
5337{
5338 WDI_EventInfoType wdiEventData;
5339 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5340
5341 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005342 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005343 ------------------------------------------------------------------------*/
5344 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5345 {
5346 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5347 "WDI API call before module is initialized - Fail request");
5348
Jeff Johnsone7245742012-09-05 17:12:55 -07005349 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005350 }
5351
5352 /*------------------------------------------------------------------------
5353 Fill in Event data and post to the Main FSM
5354 ------------------------------------------------------------------------*/
5355 wdiEventData.wdiRequest = WDI_GET_STATS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005356 wdiEventData.pEventData = pwdiGetStatsReqParams;
5357 wdiEventData.uEventDataSize = sizeof(*pwdiGetStatsReqParams);
5358 wdiEventData.pCBfnc = wdiGetStatsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005359 wdiEventData.pUserData = pUserData;
5360
5361 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5362
5363}/*WDI_GetStatsReq*/
5364
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -08005365#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_ESE || defined(FEATURE_WLAN_LFR)
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -08005366/**
5367 @brief WDI_GetRoamRssiReq will be called when the upper MAC wants
5368 to get roam rssi from the device. Upon
5369 the call of this API the WLAN DAL will pack and send a
5370 HAL Start request message to the lower RIVA sub-system
5371 if DAL is in state STARTED.
5372
5373 In state BUSY this request will be queued. Request won't
5374 be allowed in any other state.
5375
5376 WDI_Start must have been called.
5377
5378 @param wdiGetRoamRssiReqParams: the stats parameters to get as
5379 specified by the Device Interface
5380
5381 wdiGetRoamRssiRspCb: callback for passing back the response
5382 of the get stats operation received from the device
5383
5384 pUserData: user data will be passed back with the
5385 callback
5386
5387 @see WDI_Start
5388 @return Result of the function call
5389*/
5390WDI_Status
5391WDI_GetRoamRssiReq
5392(
5393 WDI_GetRoamRssiReqParamsType* pwdiGetRoamRssiReqParams,
5394 WDI_GetRoamRssiRspCb wdiGetRoamRssiRspCb,
5395 void* pUserData
5396)
5397{
5398 WDI_EventInfoType wdiEventData;
5399 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5400
5401 /*------------------------------------------------------------------------
5402 Sanity Check
5403 ------------------------------------------------------------------------*/
5404 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5405 {
5406 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5407 "WDI API call before module is initialized - Fail request");
5408
5409 return WDI_STATUS_E_NOT_ALLOWED;
5410 }
5411 /*------------------------------------------------------------------------
5412 Fill in Event data and post to the Main FSM
5413 ------------------------------------------------------------------------*/
5414 wdiEventData.wdiRequest = WDI_GET_ROAM_RSSI_REQ;
5415 wdiEventData.pEventData = pwdiGetRoamRssiReqParams;
5416 wdiEventData.uEventDataSize = sizeof(*pwdiGetRoamRssiReqParams);
5417 wdiEventData.pCBfnc = wdiGetRoamRssiRspCb;
5418 wdiEventData.pUserData = pUserData;
5419
5420 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5421
5422}/*WDI_GetRoamRssiReq*/
5423#endif
5424
Jeff Johnson295189b2012-06-20 16:38:30 -07005425
5426/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005427 @brief WDI_UpdateCfgReq will be called when the upper MAC when
Jeff Johnson295189b2012-06-20 16:38:30 -07005428 it wishes to change the configuration of the WLAN
5429 Device. Upon the call of this API the WLAN DAL will pack
5430 and send a HAL Update CFG request message to the lower
5431 RIVA sub-system if DAL is in state STARTED.
5432
5433 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005434 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005435
5436 WDI_Start must have been called.
5437
Jeff Johnsone7245742012-09-05 17:12:55 -07005438 @param wdiUpdateCfgReqParams: the update cfg parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07005439 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005440
Jeff Johnson295189b2012-06-20 16:38:30 -07005441 wdiUpdateCfgsRspCb: callback for passing back the
5442 response of the update cfg operation received from the
5443 device
Jeff Johnsone7245742012-09-05 17:12:55 -07005444
Jeff Johnson295189b2012-06-20 16:38:30 -07005445 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005446 callback
5447
Jeff Johnson295189b2012-06-20 16:38:30 -07005448 @see WDI_Start
5449 @return Result of the function call
5450*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005451WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005452WDI_UpdateCfgReq
5453(
5454 WDI_UpdateCfgReqParamsType* pwdiUpdateCfgReqParams,
5455 WDI_UpdateCfgRspCb wdiUpdateCfgsRspCb,
5456 void* pUserData
5457)
5458{
5459 WDI_EventInfoType wdiEventData;
5460 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5461
5462 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005463 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005464 ------------------------------------------------------------------------*/
5465 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5466 {
5467 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5468 "WDI API call before module is initialized - Fail request");
5469
Jeff Johnsone7245742012-09-05 17:12:55 -07005470 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005471 }
5472
5473 /*------------------------------------------------------------------------
5474 Fill in Event data and post to the Main FSM
5475 ------------------------------------------------------------------------*/
5476 wdiEventData.wdiRequest = WDI_UPDATE_CFG_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005477 wdiEventData.pEventData = pwdiUpdateCfgReqParams;
5478 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateCfgReqParams);
5479 wdiEventData.pCBfnc = wdiUpdateCfgsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005480 wdiEventData.pUserData = pUserData;
5481
5482 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5483
5484}/*WDI_UpdateCfgReq*/
5485
5486
5487
5488/**
5489 @brief WDI_AddBAReq will be called when the upper MAC has setup
5490 successfully a BA session and needs to notify the HW for
5491 the appropriate settings to take place. Upon the call of
5492 this API the WLAN DAL will pack and send a HAL Add BA
5493 request message to the lower RIVA sub-system if DAL is
5494 in state STARTED.
5495
5496 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005497 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005498
5499 WDI_PostAssocReq must have been called.
5500
5501 @param wdiAddBAReqParams: the add BA parameters as specified by
5502 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005503
Jeff Johnson295189b2012-06-20 16:38:30 -07005504 wdiAddBARspCb: callback for passing back the response of
5505 the add BA operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005506
Jeff Johnson295189b2012-06-20 16:38:30 -07005507 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005508 callback
5509
Jeff Johnson295189b2012-06-20 16:38:30 -07005510 @see WDI_PostAssocReq
5511 @return Result of the function call
5512*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005513WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005514WDI_AddBAReq
5515(
5516 WDI_AddBAReqParamsType* pwdiAddBAReqParams,
5517 WDI_AddBARspCb wdiAddBARspCb,
5518 void* pUserData
5519)
5520{
5521 WDI_EventInfoType wdiEventData;
5522 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5523
5524 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005525 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005526 ------------------------------------------------------------------------*/
5527 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5528 {
5529 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5530 "WDI API call before module is initialized - Fail request");
5531
Jeff Johnsone7245742012-09-05 17:12:55 -07005532 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005533 }
5534
5535 /*------------------------------------------------------------------------
5536 Fill in Event data and post to the Main FSM
5537 ------------------------------------------------------------------------*/
5538 wdiEventData.wdiRequest = WDI_ADD_BA_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005539 wdiEventData.pEventData = pwdiAddBAReqParams;
5540 wdiEventData.uEventDataSize = sizeof(*pwdiAddBAReqParams);
5541 wdiEventData.pCBfnc = wdiAddBARspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005542 wdiEventData.pUserData = pUserData;
5543
5544 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5545
5546}/*WDI_AddBAReq*/
5547
5548
5549/**
5550 @brief WDI_TriggerBAReq will be called when the upper MAC has setup
5551 successfully a BA session and needs to notify the HW for
5552 the appropriate settings to take place. Upon the call of
5553 this API the WLAN DAL will pack and send a HAL Add BA
5554 request message to the lower RIVA sub-system if DAL is
5555 in state STARTED.
5556
5557 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005558 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005559
5560 WDI_PostAssocReq must have been called.
5561
5562 @param wdiAddBAReqParams: the add BA parameters as specified by
5563 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005564
Jeff Johnson295189b2012-06-20 16:38:30 -07005565 wdiAddBARspCb: callback for passing back the response of
5566 the add BA operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005567
Jeff Johnson295189b2012-06-20 16:38:30 -07005568 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005569 callback
5570
Jeff Johnson295189b2012-06-20 16:38:30 -07005571 @see WDI_PostAssocReq
5572 @return Result of the function call
5573*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005574WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005575WDI_TriggerBAReq
5576(
5577 WDI_TriggerBAReqParamsType* pwdiTriggerBAReqParams,
5578 WDI_TriggerBARspCb wdiTriggerBARspCb,
5579 void* pUserData
5580)
5581{
5582 WDI_EventInfoType wdiEventData;
5583 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5584
5585 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005586 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005587 ------------------------------------------------------------------------*/
5588 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5589 {
5590 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5591 "WDI API call before module is initialized - Fail request");
5592
Jeff Johnsone7245742012-09-05 17:12:55 -07005593 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005594 }
5595
5596 /*------------------------------------------------------------------------
5597 Fill in Event data and post to the Main FSM
5598 ------------------------------------------------------------------------*/
5599 wdiEventData.wdiRequest = WDI_TRIGGER_BA_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005600 wdiEventData.pEventData = pwdiTriggerBAReqParams;
5601 wdiEventData.uEventDataSize = sizeof(*pwdiTriggerBAReqParams);
5602 wdiEventData.pCBfnc = wdiTriggerBARspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005603 wdiEventData.pUserData = pUserData;
5604
5605 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5606
5607}/*WDI_AddBAReq*/
5608
5609/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005610 @brief WDI_UpdateBeaconParamsReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07005611 wishes to update any of the Beacon parameters used by HW.
5612 Upon the call of this API the WLAN DAL will pack and send a HAL Update Beacon Params request
5613 message to the lower RIVA sub-system if DAL is in state
5614 STARTED.
5615
5616 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005617 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005618
5619 WDI_PostAssocReq must have been called.
5620
Jeff Johnsone7245742012-09-05 17:12:55 -07005621 @param wdiUpdateBeaconParams: the Beacon parameters as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07005622 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005623
Jeff Johnson295189b2012-06-20 16:38:30 -07005624 wdiUpdateBeaconParamsRspCb: callback for passing back the
5625 response of the start operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005626
Jeff Johnson295189b2012-06-20 16:38:30 -07005627 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005628 callback
5629
Jeff Johnson295189b2012-06-20 16:38:30 -07005630 @see WDI_PostAssocReq
5631 @return Result of the function call
5632*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005633WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005634WDI_UpdateBeaconParamsReq
5635(
5636 WDI_UpdateBeaconParamsType* pwdiUpdateBeaconParams,
5637 WDI_UpdateBeaconParamsRspCb wdiUpdateBeaconParamsRspCb,
5638 void* pUserData
5639)
5640{
5641 WDI_EventInfoType wdiEventData;
5642 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5643
5644 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005645 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005646 ------------------------------------------------------------------------*/
5647 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5648 {
5649 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5650 "WDI API call before module is initialized - Fail request");
5651
Jeff Johnsone7245742012-09-05 17:12:55 -07005652 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005653 }
5654
5655 /*------------------------------------------------------------------------
5656 Fill in Event data and post to the Main FSM
5657 ------------------------------------------------------------------------*/
5658 wdiEventData.wdiRequest = WDI_UPD_BCON_PRMS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005659 wdiEventData.pEventData = pwdiUpdateBeaconParams;
5660 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateBeaconParams);
5661 wdiEventData.pCBfnc = wdiUpdateBeaconParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005662 wdiEventData.pUserData = pUserData;
5663
5664 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5665
5666}/*WDI_UpdateBeaconParamsReq*/
5667
5668/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005669 @brief WDI_SendBeaconParamsReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07005670 wishes to update the Beacon template used by HW.
5671 Upon the call of this API the WLAN DAL will pack and send a HAL Update Beacon template request
5672 message to the lower RIVA sub-system if DAL is in state
5673 STARTED.
5674
5675 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005676 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005677
5678 WDI_PostAssocReq must have been called.
5679
Jeff Johnsone7245742012-09-05 17:12:55 -07005680 @param wdiSendBeaconParams: the Beacon parameters as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07005681 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005682
Jeff Johnson295189b2012-06-20 16:38:30 -07005683 wdiSendBeaconParamsRspCb: callback for passing back the
5684 response of the start operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005685
Jeff Johnson295189b2012-06-20 16:38:30 -07005686 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005687 callback
5688
Jeff Johnson295189b2012-06-20 16:38:30 -07005689 @see WDI_PostAssocReq
5690 @return Result of the function call
5691*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005692WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005693WDI_SendBeaconParamsReq
5694(
5695 WDI_SendBeaconParamsType* pwdiSendBeaconParams,
5696 WDI_SendBeaconParamsRspCb wdiSendBeaconParamsRspCb,
5697 void* pUserData
5698)
5699{
5700 WDI_EventInfoType wdiEventData;
5701 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5702
5703 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005704 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005705 ------------------------------------------------------------------------*/
5706 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5707 {
5708 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5709 "WDI API call before module is initialized - Fail request");
5710
Jeff Johnsone7245742012-09-05 17:12:55 -07005711 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005712 }
5713
5714 /*------------------------------------------------------------------------
5715 Fill in Event data and post to the Main FSM
5716 ------------------------------------------------------------------------*/
5717 wdiEventData.wdiRequest = WDI_SND_BCON_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005718 wdiEventData.pEventData = pwdiSendBeaconParams;
5719 wdiEventData.uEventDataSize = sizeof(*pwdiSendBeaconParams);
5720 wdiEventData.pCBfnc = wdiSendBeaconParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005721 wdiEventData.pUserData = pUserData;
5722
5723 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5724
5725}/*WDI_SendBeaconParamsReq*/
5726
5727/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005728 @brief WDI_UpdateProbeRspTemplateReq will be called when the
Jeff Johnson295189b2012-06-20 16:38:30 -07005729 upper MAC wants to update the probe response template to
5730 be transmitted as Soft AP
5731 Upon the call of this API the WLAN DAL will
5732 pack and send the probe rsp template message to the
5733 lower RIVA sub-system if DAL is in state STARTED.
5734
5735 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005736 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005737
5738
Jeff Johnsone7245742012-09-05 17:12:55 -07005739 @param pwdiUpdateProbeRspParams: the Update Beacon parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07005740 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005741
Jeff Johnson295189b2012-06-20 16:38:30 -07005742 wdiSendBeaconParamsRspCb: callback for passing back the
5743 response of the Send Beacon Params operation received
5744 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005745
Jeff Johnson295189b2012-06-20 16:38:30 -07005746 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005747 callback
5748
Jeff Johnson295189b2012-06-20 16:38:30 -07005749 @see WDI_AddBAReq
5750 @return Result of the function call
5751*/
5752
Jeff Johnsone7245742012-09-05 17:12:55 -07005753WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005754WDI_UpdateProbeRspTemplateReq
5755(
5756 WDI_UpdateProbeRspTemplateParamsType* pwdiUpdateProbeRspParams,
5757 WDI_UpdateProbeRspTemplateRspCb wdiUpdateProbeRspParamsRspCb,
5758 void* pUserData
5759)
5760{
5761 WDI_EventInfoType wdiEventData;
5762 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5763
5764 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005765 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005766 ------------------------------------------------------------------------*/
5767 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5768 {
5769 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5770 "WDI API call before module is initialized - Fail request");
5771
Jeff Johnsone7245742012-09-05 17:12:55 -07005772 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005773 }
5774
5775 /*------------------------------------------------------------------------
5776 Fill in Event data and post to the Main FSM
5777 ------------------------------------------------------------------------*/
5778 wdiEventData.wdiRequest = WDI_UPD_PROBE_RSP_TEMPLATE_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005779 wdiEventData.pEventData = pwdiUpdateProbeRspParams;
5780 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateProbeRspParams);
5781 wdiEventData.pCBfnc = wdiUpdateProbeRspParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005782 wdiEventData.pUserData = pUserData;
5783
5784 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5785
5786}/*WDI_UpdateProbeRspTemplateReq*/
5787
5788/**
5789 @brief WDI_NvDownloadReq will be called by the UMAC to download the NV blob
5790 to the NV memory.
5791
5792
5793 @param wdiNvDownloadReqParams: the NV Download parameters as specified by
5794 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005795
Jeff Johnson295189b2012-06-20 16:38:30 -07005796 wdiNvDownloadRspCb: callback for passing back the response of
5797 the NV Download operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005798
Jeff Johnson295189b2012-06-20 16:38:30 -07005799 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005800 callback
5801
Jeff Johnson295189b2012-06-20 16:38:30 -07005802 @see WDI_PostAssocReq
5803 @return Result of the function call
5804*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005805WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005806WDI_NvDownloadReq
5807(
5808 WDI_NvDownloadReqParamsType* pwdiNvDownloadReqParams,
5809 WDI_NvDownloadRspCb wdiNvDownloadRspCb,
5810 void* pUserData
5811)
5812{
5813 WDI_EventInfoType wdiEventData;
5814
5815 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005816 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005817 ------------------------------------------------------------------------*/
5818 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5819 {
5820 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5821 "WDI API call before module is initialized - Fail request");
5822
Jeff Johnsone7245742012-09-05 17:12:55 -07005823 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005824 }
5825
5826 /*------------------------------------------------------------------------
5827 Fill in Event data and post to the Main FSM
5828 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005829 wdiEventData.wdiRequest = WDI_NV_DOWNLOAD_REQ;
5830 wdiEventData.pEventData = (void *)pwdiNvDownloadReqParams;
5831 wdiEventData.uEventDataSize = sizeof(*pwdiNvDownloadReqParams);
5832 wdiEventData.pCBfnc = wdiNvDownloadRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005833 wdiEventData.pUserData = pUserData;
5834
5835 return WDI_PostMainEvent(&gWDICb, WDI_START_EVENT, &wdiEventData);
5836
5837}/*WDI_NVDownloadReq*/
5838
Jeff Johnson295189b2012-06-20 16:38:30 -07005839/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005840 @brief WDI_SetP2PGONOAReq will be called when the
Jeff Johnson295189b2012-06-20 16:38:30 -07005841 upper MAC wants to send Notice of Absence
5842 Upon the call of this API the WLAN DAL will
5843 pack and send the probe rsp template message to the
5844 lower RIVA sub-system if DAL is in state STARTED.
5845
5846 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005847 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005848
5849
Jeff Johnsone7245742012-09-05 17:12:55 -07005850 @param pwdiUpdateProbeRspParams: the Update Beacon parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07005851 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005852
Jeff Johnson295189b2012-06-20 16:38:30 -07005853 wdiSendBeaconParamsRspCb: callback for passing back the
5854 response of the Send Beacon Params operation received
5855 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005856
Jeff Johnson295189b2012-06-20 16:38:30 -07005857 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005858 callback
5859
Jeff Johnson295189b2012-06-20 16:38:30 -07005860 @see WDI_AddBAReq
5861 @return Result of the function call
5862*/
5863WDI_Status
5864WDI_SetP2PGONOAReq
5865(
5866 WDI_SetP2PGONOAReqParamsType* pwdiP2PGONOAReqParams,
5867 WDI_SetP2PGONOAReqParamsRspCb wdiP2PGONOAReqParamsRspCb,
5868 void* pUserData
5869)
5870{
5871 WDI_EventInfoType wdiEventData;
5872 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5873
5874 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005875 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005876 ------------------------------------------------------------------------*/
5877 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5878 {
5879 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5880 "WDI API call before module is initialized - Fail request");
5881
Jeff Johnsone7245742012-09-05 17:12:55 -07005882 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005883 }
5884
5885 /*------------------------------------------------------------------------
5886 Fill in Event data and post to the Main FSM
5887 ------------------------------------------------------------------------*/
5888 wdiEventData.wdiRequest = WDI_P2P_GO_NOTICE_OF_ABSENCE_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005889 wdiEventData.pEventData = pwdiP2PGONOAReqParams;
5890 wdiEventData.uEventDataSize = sizeof(*pwdiP2PGONOAReqParams);
5891 wdiEventData.pCBfnc = wdiP2PGONOAReqParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005892 wdiEventData.pUserData = pUserData;
5893
5894 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5895
5896}/*WDI_SetP2PGONOAReq*/
Jeff Johnson295189b2012-06-20 16:38:30 -07005897
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +05305898#ifdef FEATURE_WLAN_TDLS
5899/**
5900 @brief WDI_SetTDLSLinkEstablishReq will be called when the
5901 upper MAC wants to send TDLS Link Establish Request Parameters
5902 Upon the call of this API the WLAN DAL will
5903 pack and send the TDLS Link Establish Request message to the
5904 lower RIVA sub-system if DAL is in state STARTED.
5905
5906 In state BUSY this request will be queued. Request won't
5907 be allowed in any other state.
5908
5909
5910 @param pwdiTDLSLinkEstablishReqParams: TDLS Peer Parameters
5911 for Link Establishment (Used for PUAPSD , TDLS Off Channel ...)
5912
5913 wdiTDLSLinkEstablishReqRspCb: callback for passing back the
5914 response of the TDLS Link Establish request received
5915 from the device
5916
5917 pUserData: user data will be passed back with the
5918 callback
5919
5920 @see
5921 @return Result of the function call
5922*/
5923WDI_Status
5924WDI_SetTDLSLinkEstablishReq
5925(
5926 WDI_SetTDLSLinkEstablishReqParamsType* pwdiTDLSLinkEstablishReqParams,
5927 WDI_SetTDLSLinkEstablishReqParamsRspCb wdiTDLSLinkEstablishReqRspCb,
5928 void* pUserData
5929)
5930{
5931 WDI_EventInfoType wdiEventData;
5932 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5933
5934 /*------------------------------------------------------------------------
5935 Sanity Check
5936 ------------------------------------------------------------------------*/
5937 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5938 {
5939 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5940 "WDI API call before module is initialized - Fail request");
5941
5942 return WDI_STATUS_E_NOT_ALLOWED;
5943 }
5944
5945 /*------------------------------------------------------------------------
5946 Fill in Event data and post to the Main FSM
5947 ------------------------------------------------------------------------*/
5948 wdiEventData.wdiRequest = WDI_TDLS_LINK_ESTABLISH_REQ;
5949 wdiEventData.pEventData = pwdiTDLSLinkEstablishReqParams;
5950 wdiEventData.uEventDataSize = sizeof(*pwdiTDLSLinkEstablishReqParams);
5951 wdiEventData.pCBfnc = wdiTDLSLinkEstablishReqRspCb;
5952 wdiEventData.pUserData = pUserData;
5953
5954 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5955
5956}/*WDI_SetTDLSLinkEstablishReq*/
Atul Mittalc0f739f2014-07-31 13:47:47 +05305957
5958//tdlsoffchan
5959/**
5960 @brief WDI_SetTDLSChanSwitchReq will be called when the
5961 upper MAC wants to send TDLS Chan Switch Request Parameters
5962 Upon the call of this API the WLAN DAL will
5963 pack and send the TDLS Link Establish Request message to the
5964 lower RIVA sub-system if DAL is in state STARTED.
5965
5966 In state BUSY this request will be queued. Request won't
5967 be allowed in any other state.
5968
5969
5970 @param pwdiTDLSChanSwitchReqParams: TDLS Peer Parameters
5971 for Link Establishment (Used for TDLS Off Channel ...)
5972
5973 wdiTDLSChanSwitchReqRspCb: callback for passing back the
5974 response of the TDLS Chan Switch request received
5975 from the device
5976
5977 pUserData: user data will be passed back with the
5978 callback
5979
5980 @see
5981 @return Result of the function call
5982*/
5983WDI_Status
5984WDI_SetTDLSChanSwitchReq
5985(
5986 WDI_SetTDLSChanSwitchReqParamsType* pwdiTDLSChanSwitchReqParams,
5987 WDI_SetTDLSChanSwitchReqParamsRspCb wdiTDLSChanSwitchRReqRspCb,
5988 void* pUserData
5989)
5990{
5991 WDI_EventInfoType wdiEventData;
5992 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5993
5994 /*------------------------------------------------------------------------
5995 Sanity Check
5996 ------------------------------------------------------------------------*/
5997 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5998 {
5999 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6000 "WDI API call before module is initialized - Fail request");
6001
6002 return WDI_STATUS_E_NOT_ALLOWED;
6003 }
6004
6005 /*------------------------------------------------------------------------
6006 Fill in Event data and post to the Main FSM
6007 ------------------------------------------------------------------------*/
6008 wdiEventData.wdiRequest = WDI_TDLS_CHAN_SWITCH_REQ;
6009 wdiEventData.pEventData = pwdiTDLSChanSwitchReqParams;
6010 wdiEventData.uEventDataSize = sizeof(*pwdiTDLSChanSwitchReqParams);
6011 wdiEventData.pCBfnc = wdiTDLSChanSwitchRReqRspCb;
6012 wdiEventData.pUserData = pUserData;
6013
6014 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6015
6016}/*WDI_SetTDLSChanSwitchReq*/
6017
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +05306018#endif
6019
Jeff Johnson295189b2012-06-20 16:38:30 -07006020/**
Jeff Johnsone7245742012-09-05 17:12:55 -07006021 @brief WDI_AddSTASelfReq will be called when the
Jeff Johnson295189b2012-06-20 16:38:30 -07006022 UMAC wanted to add STA self while opening any new session
6023 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07006024 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07006025
6026
Jeff Johnsone7245742012-09-05 17:12:55 -07006027 @param pwdiAddSTASelfParams: the add sta self parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07006028 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07006029
Jeff Johnson295189b2012-06-20 16:38:30 -07006030 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07006031 callback
6032
6033 @see
Jeff Johnson295189b2012-06-20 16:38:30 -07006034 @return Result of the function call
6035*/
6036WDI_Status
6037WDI_AddSTASelfReq
6038(
6039 WDI_AddSTASelfReqParamsType* pwdiAddSTASelfReqParams,
6040 WDI_AddSTASelfParamsRspCb wdiAddSTASelfReqParamsRspCb,
6041 void* pUserData
6042)
6043{
6044 WDI_EventInfoType wdiEventData;
6045 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6046
6047 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006048 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006049 ------------------------------------------------------------------------*/
6050 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6051 {
6052 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6053 "WDI API call before module is initialized - Fail request");
6054
Jeff Johnsone7245742012-09-05 17:12:55 -07006055 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006056 }
6057
6058 /*------------------------------------------------------------------------
6059 Fill in Event data and post to the Main FSM
6060 ------------------------------------------------------------------------*/
6061 wdiEventData.wdiRequest = WDI_ADD_STA_SELF_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07006062 wdiEventData.pEventData = pwdiAddSTASelfReqParams;
6063 wdiEventData.uEventDataSize = sizeof(*pwdiAddSTASelfReqParams);
6064 wdiEventData.pCBfnc = wdiAddSTASelfReqParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07006065 wdiEventData.pUserData = pUserData;
6066
6067 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6068
6069}/*WDI_AddSTASelfReq*/
6070
6071
Jeff Johnsone7245742012-09-05 17:12:55 -07006072#ifdef WLAN_FEATURE_VOWIFI_11R
Jeff Johnson295189b2012-06-20 16:38:30 -07006073/**
6074 @brief WDI_AggrAddTSReq will be called when the upper MAC to inform
6075 the device of a successful add TSpec negotiation. HW
6076 needs to receive the TSpec Info from the UMAC in order
6077 to configure properly the QoS data traffic. Upon the
6078 call of this API the WLAN DAL will pack and send a HAL
6079 Add TS request message to the lower RIVA sub-system if
6080 DAL is in state STARTED.
6081
6082 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07006083 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07006084
6085 WDI_PostAssocReq must have been called.
6086
6087 @param wdiAddTsReqParams: the add TS parameters as specified by
6088 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07006089
Jeff Johnson295189b2012-06-20 16:38:30 -07006090 wdiAddTsRspCb: callback for passing back the response of
6091 the add TS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07006092
Jeff Johnson295189b2012-06-20 16:38:30 -07006093 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07006094 callback
6095
Jeff Johnson295189b2012-06-20 16:38:30 -07006096 @see WDI_PostAssocReq
6097 @return Result of the function call
6098*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006099WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07006100WDI_AggrAddTSReq
6101(
6102 WDI_AggrAddTSReqParamsType* pwdiAggrAddTsReqParams,
6103 WDI_AggrAddTsRspCb wdiAggrAddTsRspCb,
6104 void* pUserData
6105)
6106{
6107 WDI_EventInfoType wdiEventData;
6108 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6109
6110 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006111 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006112 ------------------------------------------------------------------------*/
6113 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6114 {
6115 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6116 "WDI API call before module is initialized - Fail request");
6117
Jeff Johnsone7245742012-09-05 17:12:55 -07006118 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006119 }
6120
6121 /*------------------------------------------------------------------------
6122 Fill in Event data and post to the Main FSM
6123 ------------------------------------------------------------------------*/
6124 wdiEventData.wdiRequest = WDI_AGGR_ADD_TS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07006125 wdiEventData.pEventData = pwdiAggrAddTsReqParams;
6126 wdiEventData.uEventDataSize = sizeof(*pwdiAggrAddTsReqParams);
6127 wdiEventData.pCBfnc = wdiAggrAddTsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07006128 wdiEventData.pUserData = pUserData;
6129
6130 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6131
6132}/*WDI_AggrAddTSReq*/
6133
6134#endif /* WLAN_FEATURE_VOWIFI_11R */
6135
Jeff Johnson295189b2012-06-20 16:38:30 -07006136/**
6137 @brief WDI_FTMCommandReq
6138 Post FTM Command Event
Jeff Johnsone7245742012-09-05 17:12:55 -07006139
6140 @param ftmCommandReq: FTM Command Body
6141 @param ftmCommandRspCb: FTM Response from HAL CB
Jeff Johnson295189b2012-06-20 16:38:30 -07006142 @param pUserData: Client Data
Jeff Johnsone7245742012-09-05 17:12:55 -07006143
Jeff Johnson295189b2012-06-20 16:38:30 -07006144 @see
6145 @return Result of the function call
6146*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006147WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07006148WDI_FTMCommandReq
6149(
6150 WDI_FTMCommandReqType *ftmCommandReq,
6151 WDI_FTMCommandRspCb ftmCommandRspCb,
6152 void *pUserData
6153)
6154{
6155 WDI_EventInfoType wdiEventData;
6156 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6157
6158 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006159 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006160 ------------------------------------------------------------------------*/
6161 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6162 {
6163 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6164 "WDI API call before module is initialized - Fail request");
6165
Jeff Johnsone7245742012-09-05 17:12:55 -07006166 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006167 }
6168
6169 /*------------------------------------------------------------------------
6170 Fill in Event data and post to the Main FSM
6171 ------------------------------------------------------------------------*/
6172 wdiEventData.wdiRequest = WDI_FTM_CMD_REQ;
6173 wdiEventData.pEventData = (void *)ftmCommandReq;
6174 wdiEventData.uEventDataSize = ftmCommandReq->bodyLength + sizeof(wpt_uint32);
6175 wdiEventData.pCBfnc = ftmCommandRspCb;
6176 wdiEventData.pUserData = pUserData;
6177
6178 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6179}
Jeff Johnson295189b2012-06-20 16:38:30 -07006180/**
Jeff Johnsone7245742012-09-05 17:12:55 -07006181 @brief WDI_HostResumeReq will be called
Jeff Johnson295189b2012-06-20 16:38:30 -07006182
6183 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07006184 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07006185
6186
6187 @param pwdiResumeReqParams: as specified by
6188 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07006189
Jeff Johnson295189b2012-06-20 16:38:30 -07006190 wdiResumeReqRspCb: callback for passing back the response of
6191 the Resume Req received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07006192
Jeff Johnson295189b2012-06-20 16:38:30 -07006193 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07006194 callback
6195
6196 @see
Jeff Johnson295189b2012-06-20 16:38:30 -07006197 @return Result of the function call
6198*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006199WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07006200WDI_HostResumeReq
6201(
6202 WDI_ResumeParamsType* pwdiResumeReqParams,
6203 WDI_HostResumeEventRspCb wdiResumeReqRspCb,
6204 void* pUserData
6205)
6206{
6207 WDI_EventInfoType wdiEventData;
6208 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6209
6210 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006211 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006212 ------------------------------------------------------------------------*/
6213 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6214 {
6215 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6216 "WDI API call before module is initialized - Fail request");
6217
Jeff Johnsone7245742012-09-05 17:12:55 -07006218 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006219 }
6220
6221 /*------------------------------------------------------------------------
6222 Fill in Event data and post to the Main FSM
6223 ------------------------------------------------------------------------*/
6224 wdiEventData.wdiRequest = WDI_HOST_RESUME_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07006225 wdiEventData.pEventData = pwdiResumeReqParams;
6226 wdiEventData.uEventDataSize = sizeof(*pwdiResumeReqParams);
6227 wdiEventData.pCBfnc = wdiResumeReqRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07006228 wdiEventData.pUserData = pUserData;
6229
6230 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6231
6232}/*WDI_HostResumeReq*/
6233
6234/**
Jeff Johnsone7245742012-09-05 17:12:55 -07006235 @brief WDI_DelSTASelfReq will be called
Jeff Johnson295189b2012-06-20 16:38:30 -07006236
6237 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07006238 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07006239
6240
6241 @param pwdiDelStaSelfReqParams: as specified by
6242 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07006243
Jeff Johnson295189b2012-06-20 16:38:30 -07006244 wdiDelStaSelfRspCb: callback for passing back the response of
6245 the add TS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07006246
Jeff Johnson295189b2012-06-20 16:38:30 -07006247 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07006248 callback
6249
Jeff Johnson295189b2012-06-20 16:38:30 -07006250 @see WDI_PostAssocReq
6251 @return Result of the function call
6252*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006253WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07006254WDI_DelSTASelfReq
6255(
6256 WDI_DelSTASelfReqParamsType* pwdiDelStaSelfReqParams,
6257 WDI_DelSTASelfRspCb wdiDelStaSelfRspCb,
6258 void* pUserData
6259)
6260{
6261 WDI_EventInfoType wdiEventData;
6262 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6263
6264 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006265 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006266 ------------------------------------------------------------------------*/
6267 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6268 {
6269 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6270 "WDI API call before module is initialized - Fail request");
6271
Jeff Johnsone7245742012-09-05 17:12:55 -07006272 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006273 }
6274
6275 /*------------------------------------------------------------------------
6276 Fill in Event data and post to the Main FSM
6277 ------------------------------------------------------------------------*/
6278 wdiEventData.wdiRequest = WDI_DEL_STA_SELF_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07006279 wdiEventData.pEventData = pwdiDelStaSelfReqParams;
6280 wdiEventData.uEventDataSize = sizeof(*pwdiDelStaSelfReqParams);
6281 wdiEventData.pCBfnc = wdiDelStaSelfRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07006282 wdiEventData.pUserData = pUserData;
6283
6284 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6285
6286}/*WDI_AggrAddTSReq*/
6287
6288/**
Jeff Johnsone7245742012-09-05 17:12:55 -07006289 @brief WDI_SetTxPerTrackingReq will be called when the upper MAC
6290 wants to set the Tx Per Tracking configurations.
Jeff Johnson295189b2012-06-20 16:38:30 -07006291 Upon the call of this API the WLAN DAL will pack
6292 and send a HAL Set Tx Per Tracking request message to the
6293 lower RIVA sub-system if DAL is in state STARTED.
6294
6295 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07006296 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07006297
Jeff Johnsone7245742012-09-05 17:12:55 -07006298 @param pwdiSetTxPerTrackingReqParams: the Set Tx PER Tracking configurations as
Jeff Johnson295189b2012-06-20 16:38:30 -07006299 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07006300
Jeff Johnson295189b2012-06-20 16:38:30 -07006301 pwdiSetTxPerTrackingRspCb: callback for passing back the
6302 response of the set Tx PER Tracking configurations operation received
6303 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07006304
Jeff Johnson295189b2012-06-20 16:38:30 -07006305 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07006306 callback
6307
Jeff Johnson295189b2012-06-20 16:38:30 -07006308 @return Result of the function call
6309*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006310WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07006311WDI_SetTxPerTrackingReq
6312(
6313 WDI_SetTxPerTrackingReqParamsType* pwdiSetTxPerTrackingReqParams,
6314 WDI_SetTxPerTrackingRspCb pwdiSetTxPerTrackingRspCb,
6315 void* pUserData
6316)
6317{
6318 WDI_EventInfoType wdiEventData;
6319 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6320
6321 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006322 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006323 ------------------------------------------------------------------------*/
6324 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6325 {
6326 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6327 "WDI API call before module is initialized - Fail request");
6328
Jeff Johnsone7245742012-09-05 17:12:55 -07006329 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006330 }
6331
6332 /*------------------------------------------------------------------------
6333 Fill in Event data and post to the Main FSM
6334 ------------------------------------------------------------------------*/
6335 wdiEventData.wdiRequest = WDI_SET_TX_PER_TRACKING_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07006336 wdiEventData.pEventData = pwdiSetTxPerTrackingReqParams;
Jeff Johnson295189b2012-06-20 16:38:30 -07006337 wdiEventData.uEventDataSize = sizeof(*pwdiSetTxPerTrackingReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07006338 wdiEventData.pCBfnc = pwdiSetTxPerTrackingRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07006339 wdiEventData.pUserData = pUserData;
6340
6341 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6342
6343}/*WDI_SetTxPerTrackingReq*/
6344
6345/**
6346 @brief WDI_SetTmLevelReq
6347 If HW Thermal condition changed, driver should react based on new
6348 HW thermal condition.
6349
6350 @param pwdiSetTmLevelReq: New thermal condition information
6351
6352 pwdiSetTmLevelRspCb: callback
6353
6354 usrData: user data will be passed back with the
6355 callback
6356
6357 @return Result of the function call
6358*/
6359WDI_Status
6360WDI_SetTmLevelReq
6361(
6362 WDI_SetTmLevelReqType *pwdiSetTmLevelReq,
6363 WDI_SetTmLevelCb pwdiSetTmLevelRspCb,
6364 void *usrData
6365)
6366{
6367 WDI_EventInfoType wdiEventData;
6368 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6369
6370 /*------------------------------------------------------------------------
6371 Sanity Check
6372 ------------------------------------------------------------------------*/
6373 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6374 {
6375 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6376 "WDI API call before module is initialized - Fail request");
6377
6378 return WDI_STATUS_E_NOT_ALLOWED;
6379 }
6380
6381 /*------------------------------------------------------------------------
6382 Fill in Event data and post to the Main FSM
6383 ------------------------------------------------------------------------*/
6384 wdiEventData.wdiRequest = WDI_SET_TM_LEVEL_REQ;
6385 wdiEventData.pEventData = pwdiSetTmLevelReq;
6386 wdiEventData.uEventDataSize = sizeof(*pwdiSetTmLevelReq);
6387 wdiEventData.pCBfnc = pwdiSetTmLevelRspCb;
6388 wdiEventData.pUserData = usrData;
6389
6390 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6391}
6392
6393/**
6394 @brief WDI_HostSuspendInd
6395
6396 Suspend Indication from the upper layer will be sent
6397 down to HAL
Jeff Johnsone7245742012-09-05 17:12:55 -07006398
Jeff Johnson295189b2012-06-20 16:38:30 -07006399 @param WDI_SuspendResumeIndParamsType
Jeff Johnsone7245742012-09-05 17:12:55 -07006400
6401 @see
6402
Jeff Johnson295189b2012-06-20 16:38:30 -07006403 @return Status of the request
6404*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006405WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07006406WDI_HostSuspendInd
6407(
6408 WDI_SuspendParamsType* pwdiSuspendIndParams
6409)
6410{
6411
6412 WDI_EventInfoType wdiEventData;
6413 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6414
6415 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006416 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006417 ------------------------------------------------------------------------*/
6418 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6419 {
6420 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6421 "WDI API call before module is initialized - Fail request");
6422
Jeff Johnsone7245742012-09-05 17:12:55 -07006423 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006424 }
6425
6426 /*------------------------------------------------------------------------
6427 Fill in Event data and post to the Main FSM
6428 ------------------------------------------------------------------------*/
6429 wdiEventData.wdiRequest = WDI_HOST_SUSPEND_IND;
Jeff Johnsone7245742012-09-05 17:12:55 -07006430 wdiEventData.pEventData = pwdiSuspendIndParams;
6431 wdiEventData.uEventDataSize = sizeof(*pwdiSuspendIndParams);
6432 wdiEventData.pCBfnc = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07006433 wdiEventData.pUserData = NULL;
6434
6435 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6436
6437}/*WDI_HostSuspendInd*/
6438
6439/**
Madan Mohan Koyyalamudi01cba042013-01-10 21:56:05 -08006440 @brief WDI_TrafficStatsInd
6441 Traffic Stats from the upper layer will be sent
6442 down to HAL
6443
6444 @param WDI_TrafficStatsIndType
6445
6446 @see
6447
6448 @return Status of the request
6449*/
6450WDI_Status
6451WDI_TrafficStatsInd
6452(
6453 WDI_TrafficStatsIndType *pWdiTrafficStatsIndParams
6454)
6455{
6456
6457 WDI_EventInfoType wdiEventData;
6458 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6459
6460 /*------------------------------------------------------------------------
6461 Sanity Check
6462 ------------------------------------------------------------------------*/
6463 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6464 {
6465 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6466 "WDI API call before module is initialized - Fail request");
6467
6468 return WDI_STATUS_E_NOT_ALLOWED;
6469 }
6470
6471 /*------------------------------------------------------------------------
6472 Fill in Event data and post to the Main FSM
6473 ------------------------------------------------------------------------*/
6474 wdiEventData.wdiRequest = WDI_TRAFFIC_STATS_IND;
6475 wdiEventData.pEventData = pWdiTrafficStatsIndParams;
6476 wdiEventData.uEventDataSize = sizeof(*pWdiTrafficStatsIndParams);
6477 wdiEventData.pCBfnc = NULL;
6478 wdiEventData.pUserData = NULL;
6479
6480 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6481
6482}/*WDI_TrafficStatsInd*/
6483
Chet Lanctot186b5732013-03-18 10:26:30 -07006484#ifdef WLAN_FEATURE_11W
6485/**
6486 @brief WDI_ExcludeUnencryptedInd
6487 Register with HAL to receive/drop unencrypted frames
6488
6489 @param WDI_ExcludeUnencryptIndType
6490
6491 @see
6492
6493 @return Status of the request
6494*/
6495WDI_Status
6496WDI_ExcludeUnencryptedInd
6497(
6498 WDI_ExcludeUnencryptIndType *pWdiExcUnencParams
6499)
6500{
6501
6502 WDI_EventInfoType wdiEventData;
6503 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6504
6505 /*------------------------------------------------------------------------
6506 Sanity Check
6507 ------------------------------------------------------------------------*/
6508 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6509 {
6510 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6511 "WDI API call before module is initialized - Fail request");
6512
6513 return WDI_STATUS_E_NOT_ALLOWED;
6514 }
6515
6516 /*------------------------------------------------------------------------
6517 Fill in Event data and post to the Main FSM
6518 ------------------------------------------------------------------------*/
6519 wdiEventData.wdiRequest = WDI_EXCLUDE_UNENCRYPTED_IND;
6520 wdiEventData.pEventData = pWdiExcUnencParams;
6521 wdiEventData.uEventDataSize = sizeof(*pWdiExcUnencParams);
6522 wdiEventData.pCBfnc = NULL;
6523 wdiEventData.pUserData = NULL;
6524
6525 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6526
6527}/*WDI_TrafficStatsInd*/
6528#endif
6529
Madan Mohan Koyyalamudi01cba042013-01-10 21:56:05 -08006530/**
Yue Mab9c86f42013-08-14 15:59:08 -07006531 @brief WDI_AddPeriodicTxPtrnInd: Add Periodic TX Pattern Indication to FW
6532
6533 @param addPeriodicTxPtrnParams: Add Pattern parameters
6534
6535 @see
6536
6537 @return Status of the request
6538*/
6539WDI_Status
6540WDI_AddPeriodicTxPtrnInd
6541(
6542 WDI_AddPeriodicTxPtrnParamsType* addPeriodicTxPtrnParams
6543)
6544{
6545 WDI_EventInfoType wdiEventData;
6546
6547 /*-------------------------------------------------------------------------
6548 Sanity Check
6549 ------------------------------------------------------------------------*/
6550 if (eWLAN_PAL_FALSE == gWDIInitialized)
6551 {
6552 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6553 "WDI API call before module is initialized - Fail request!");
6554
6555 return WDI_STATUS_E_NOT_ALLOWED;
6556 }
6557
6558 /*-------------------------------------------------------------------------
6559 Fill in Event data and post to the Main FSM
6560 ------------------------------------------------------------------------*/
6561 wdiEventData.wdiRequest = WDI_ADD_PERIODIC_TX_PATTERN_IND;
6562 wdiEventData.pEventData = addPeriodicTxPtrnParams;
6563 wdiEventData.uEventDataSize = sizeof(WDI_AddPeriodicTxPtrnParamsType);
6564 wdiEventData.pCBfnc = NULL;
6565 wdiEventData.pUserData = NULL;
6566
6567 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6568}
6569
6570/**
6571 @brief WDI_DelPeriodicTxPtrnInd: Delete Periodic TX Pattern Indication to FW
6572
6573 @param delPeriodicTxPtrnParams: Delete Pattern parameters
6574
6575 @see
6576
6577 @return Status of the request
6578*/
6579WDI_Status
6580WDI_DelPeriodicTxPtrnInd
6581(
6582 WDI_DelPeriodicTxPtrnParamsType* delPeriodicTxPtrnParams
6583)
6584{
6585 WDI_EventInfoType wdiEventData;
6586
6587 /*-------------------------------------------------------------------------
6588 Sanity Check
6589 ------------------------------------------------------------------------*/
6590 if (eWLAN_PAL_FALSE == gWDIInitialized)
6591 {
6592 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6593 "WDI API call before module is initialized - Fail request!");
6594
6595 return WDI_STATUS_E_NOT_ALLOWED;
6596 }
6597
6598 /*-------------------------------------------------------------------------
6599 Fill in Event data and post to the Main FSM
6600 ------------------------------------------------------------------------*/
6601 wdiEventData.wdiRequest = WDI_DEL_PERIODIC_TX_PATTERN_IND;
6602 wdiEventData.pEventData = delPeriodicTxPtrnParams;
6603 wdiEventData.uEventDataSize = sizeof(WDI_DelPeriodicTxPtrnParamsType);
6604 wdiEventData.pCBfnc = NULL;
6605 wdiEventData.pUserData = NULL;
6606
6607 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6608}
6609
6610/**
Jeff Johnson295189b2012-06-20 16:38:30 -07006611 @brief WDI_HALDumpCmdReq
6612 Post HAL DUMP Command Event
Jeff Johnsone7245742012-09-05 17:12:55 -07006613
6614 @param halDumpCmdReqParams: Hal Dump Command Body
6615 @param halDumpCmdRspCb: HAL DUMP Response from HAL CB
Jeff Johnson295189b2012-06-20 16:38:30 -07006616 @param pUserData: Client Data
Jeff Johnsone7245742012-09-05 17:12:55 -07006617
Jeff Johnson295189b2012-06-20 16:38:30 -07006618 @see
6619 @return Result of the function call
6620*/
6621WDI_Status WDI_HALDumpCmdReq
6622(
6623 WDI_HALDumpCmdReqParamsType *halDumpCmdReqParams,
6624 WDI_HALDumpCmdRspCb halDumpCmdRspCb,
6625 void *pUserData
6626)
6627{
6628 WDI_EventInfoType wdiEventData;
6629 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6630
6631 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006632 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006633 ------------------------------------------------------------------------*/
6634 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6635 {
6636 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6637 "WDI API call before module is initialized - Fail request");
6638
Jeff Johnsone7245742012-09-05 17:12:55 -07006639 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006640 }
6641
6642 /*------------------------------------------------------------------------
6643 Fill in Event data and post to the Main FSM
6644 ------------------------------------------------------------------------*/
6645 wdiEventData.wdiRequest = WDI_HAL_DUMP_CMD_REQ;
6646 wdiEventData.pEventData = (void *)halDumpCmdReqParams;
6647 wdiEventData.uEventDataSize = sizeof(WDI_HALDumpCmdReqParamsType);
6648 wdiEventData.pCBfnc = halDumpCmdRspCb;
6649 wdiEventData.pUserData = pUserData;
6650
6651 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6652}
6653
Jeff Johnsone7245742012-09-05 17:12:55 -07006654/*============================================================================
6655
Jeff Johnson295189b2012-06-20 16:38:30 -07006656 DAL Control Path Main FSM Function Implementation
Jeff Johnsone7245742012-09-05 17:12:55 -07006657
Jeff Johnson295189b2012-06-20 16:38:30 -07006658 ============================================================================*/
6659
6660/**
6661 @brief Main FSM Start function for all states except BUSY
6662
Jeff Johnsone7245742012-09-05 17:12:55 -07006663
6664 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -07006665 wdiEV: event posted to the main DAL FSM
6666 pEventData: pointer to the event information
Jeff Johnsone7245742012-09-05 17:12:55 -07006667 structure
6668
Jeff Johnson295189b2012-06-20 16:38:30 -07006669 @see
6670 @return Result of the function call
6671*/
6672WDI_Status
6673WDI_PostMainEvent
6674(
Jeff Johnsone7245742012-09-05 17:12:55 -07006675 WDI_ControlBlockType* pWDICtx,
6676 WDI_MainEventType wdiEV,
Jeff Johnson295189b2012-06-20 16:38:30 -07006677 WDI_EventInfoType* pEventData
Jeff Johnson295189b2012-06-20 16:38:30 -07006678)
6679{
Jeff Johnsone7245742012-09-05 17:12:55 -07006680 WDI_Status wdiStatus;
6681 WDI_MainFuncType pfnWDIMainEvHdlr;
6682 WDI_MainStateType wdiOldState;
Jeff Johnson295189b2012-06-20 16:38:30 -07006683 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6684
6685 /*-------------------------------------------------------------------------
6686 Sanity check
6687 -------------------------------------------------------------------------*/
6688 if (( pWDICtx->uGlobalState >= WDI_MAX_ST ) ||
6689 ( wdiEV >= WDI_MAX_EVENT ))
6690 {
6691 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6692 "Invalid state or event in Post Main Ev function ST: %d EV: %d",
6693 pWDICtx->uGlobalState, wdiEV);
Jeff Johnsone7245742012-09-05 17:12:55 -07006694 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006695 }
6696
6697 /*Access to the global state must be locked */
6698 wpalMutexAcquire(&pWDICtx->wptMutex);
6699
6700 /*Fetch event handler for state*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006701 pfnWDIMainEvHdlr = wdiMainFSM[pWDICtx->uGlobalState].pfnMainTbl[wdiEV];
Jeff Johnson295189b2012-06-20 16:38:30 -07006702
6703 wdiOldState = pWDICtx->uGlobalState;
6704
6705 /*
Jeff Johnsone7245742012-09-05 17:12:55 -07006706 --Incase of WDI event is WDI_RESPONSE_EVENT and this is called when a
6707 response comes from CCPU for the request sent by host:
6708 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 -07006709 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 -07006710 --Incase of WDI event is WDI_RESPONSE_EVENT and it is an indication from the
Jeff Johnson295189b2012-06-20 16:38:30 -07006711 CCPU:
6712 don't change the state */
6713 if ( WDI_RESPONSE_EVENT != wdiEV)
6714 {
6715 /*Transition to BUSY State - the request is now being processed by the FSM,
6716 if the request fails we shall transition back to the old state, if not
6717 the request will manage its own state transition*/
6718 WDI_STATE_TRANSITION( pWDICtx, WDI_BUSY_ST);
6719 }
6720 /* If the state function associated with the EV is NULL it means that this
6721 event is not allowed in this state*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006722 if ( NULL != pfnWDIMainEvHdlr )
Jeff Johnson295189b2012-06-20 16:38:30 -07006723 {
6724 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -07006725 "Posting event %d in state: %d to the Main FSM",
Jeff Johnson295189b2012-06-20 16:38:30 -07006726 wdiEV, wdiOldState);
Jeff Johnsone7245742012-09-05 17:12:55 -07006727 wdiStatus = pfnWDIMainEvHdlr( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07006728 }
6729 else
6730 {
6731 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07006732 "Unexpected event %d in state: %d",
Jeff Johnson295189b2012-06-20 16:38:30 -07006733 wdiEV, wdiOldState);
Jeff Johnsone7245742012-09-05 17:12:55 -07006734 wdiStatus = WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006735 }
6736
6737 /* If a request handles itself well it will end up in a success or in a
6738 pending
6739 Success - means that the request was processed and the proper state
6740 transition already occurred or will occur when the resp is received
6741 - NO other state transition or dequeueing is required
Jeff Johnsone7245742012-09-05 17:12:55 -07006742
Jeff Johnson295189b2012-06-20 16:38:30 -07006743 Pending - means the request could not be processed at this moment in time
6744 because the FSM was already busy so no state transition or dequeueing
6745 is necessary anymore
Jeff Johnsone7245742012-09-05 17:12:55 -07006746
Jeff Johnson295189b2012-06-20 16:38:30 -07006747 Success for synchronous case means that the transition may occur and
6748 processing of pending requests may continue - so it should go through
6749 and restores the state and continue processing queued requests*/
6750 if (( WDI_STATUS_SUCCESS != wdiStatus )&&
6751 ( WDI_STATUS_PENDING != wdiStatus ))
6752 {
6753 if ( WDI_RESPONSE_EVENT != wdiEV)
6754 {
6755 /*The request has failed or could not be processed - transition back to
6756 the old state - check to see if anything was queued and try to execute
6757 The dequeue logic should post a message to a thread and return - no
6758 actual processing can occur */
6759 WDI_STATE_TRANSITION( pWDICtx, wdiOldState);
6760 }
6761 WDI_DequeuePendingReq(pWDICtx);
Jeff Johnsone7245742012-09-05 17:12:55 -07006762
Jeff Johnson295189b2012-06-20 16:38:30 -07006763 }
6764
6765 /* we have completed processing the event */
6766 wpalMutexRelease(&pWDICtx->wptMutex);
6767
Jeff Johnsone7245742012-09-05 17:12:55 -07006768 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07006769
6770}/*WDI_PostMainEvent*/
6771
6772
6773/*--------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006774 INIT State Functions
Jeff Johnson295189b2012-06-20 16:38:30 -07006775--------------------------------------------------------------------------*/
6776/**
6777 @brief Main FSM Start function for all states except BUSY
6778
Jeff Johnsone7245742012-09-05 17:12:55 -07006779
6780 @param pWDICtx: pointer to the WLAN DAL context
6781 pEventData: pointer to the event information structure
6782
Jeff Johnson295189b2012-06-20 16:38:30 -07006783 @see
6784 @return Result of the function call
6785*/
6786WDI_Status
6787WDI_MainStart
Jeff Johnsone7245742012-09-05 17:12:55 -07006788(
Jeff Johnson295189b2012-06-20 16:38:30 -07006789 WDI_ControlBlockType* pWDICtx,
6790 WDI_EventInfoType* pEventData
6791)
6792{
6793
6794 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006795 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006796 ----------------------------------------------------------------------*/
6797 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6798 {
6799 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08006800 "Invalid parameters on Main Start Started %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07006801 pWDICtx, pEventData);
6802 return WDI_STATUS_E_FAILURE;
6803 }
6804
6805 wpalMutexAcquire(&pWDICtx->wptMutex);
6806
6807 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006808 Check if the Control Transport has been opened
Jeff Johnson295189b2012-06-20 16:38:30 -07006809 ----------------------------------------------------------------------*/
6810 if ( eWLAN_PAL_FALSE == pWDICtx->bCTOpened )
6811 {
6812 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
6813 "Control Transport not yet Open - queueing the request");
6814
6815 WDI_STATE_TRANSITION( pWDICtx, WDI_INIT_ST);
Jeff Johnsone7245742012-09-05 17:12:55 -07006816 WDI_QueuePendingReq( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07006817
6818 wpalMutexRelease(&pWDICtx->wptMutex);
6819 return WDI_STATUS_PENDING;
6820 }
Jeff Johnsone7245742012-09-05 17:12:55 -07006821
Jeff Johnson295189b2012-06-20 16:38:30 -07006822 wpalMutexRelease(&pWDICtx->wptMutex);
6823
6824 /*Return Success*/
6825 return WDI_ProcessRequest( pWDICtx, pEventData );
6826
6827}/*WDI_MainStart*/
6828
6829/**
6830 @brief Main FSM Response function for state INIT
6831
Jeff Johnsone7245742012-09-05 17:12:55 -07006832
6833 @param pWDICtx: pointer to the WLAN DAL context
6834 pEventData: pointer to the event information structure
6835
Jeff Johnson295189b2012-06-20 16:38:30 -07006836 @see
6837 @return Result of the function call
6838*/
6839WDI_Status
6840WDI_MainRspInit
Jeff Johnsone7245742012-09-05 17:12:55 -07006841(
Jeff Johnson295189b2012-06-20 16:38:30 -07006842 WDI_ControlBlockType* pWDICtx,
6843 WDI_EventInfoType* pEventData
6844)
6845{
6846 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006847 Not expecting a response from the device before it is started
Jeff Johnson295189b2012-06-20 16:38:30 -07006848 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006849 WDI_ASSERT(0);
Jeff Johnson295189b2012-06-20 16:38:30 -07006850
6851 /*Return Success*/
6852 return WDI_STATUS_E_NOT_ALLOWED;
6853}/* WDI_MainRspInit */
6854
6855/**
6856 @brief Main FSM Close function for all states except BUSY
6857
Jeff Johnsone7245742012-09-05 17:12:55 -07006858
6859 @param pWDICtx: pointer to the WLAN DAL context
6860 pEventData: pointer to the event information structure
6861
Jeff Johnson295189b2012-06-20 16:38:30 -07006862 @see
6863 @return Result of the function call
6864*/
6865WDI_Status
6866WDI_MainClose
Jeff Johnsone7245742012-09-05 17:12:55 -07006867(
Jeff Johnson295189b2012-06-20 16:38:30 -07006868 WDI_ControlBlockType* pWDICtx,
6869 WDI_EventInfoType* pEventData
6870)
6871{
6872
6873 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006874 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006875 ----------------------------------------------------------------------*/
6876 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6877 {
6878 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08006879 "Invalid parameters on Main Close %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07006880 pWDICtx, pEventData);
6881 return WDI_STATUS_E_FAILURE;
6882 }
6883
6884 /*Return Success*/
6885 return WDI_ProcessRequest( pWDICtx, pEventData );
6886
6887}/*WDI_MainClose*/
6888/*--------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006889 STARTED State Functions
Jeff Johnson295189b2012-06-20 16:38:30 -07006890--------------------------------------------------------------------------*/
6891/**
6892 @brief Main FSM Start function for state STARTED
6893
Jeff Johnsone7245742012-09-05 17:12:55 -07006894
6895 @param pWDICtx: pointer to the WLAN DAL context
6896 pEventData: pointer to the event information structure
6897
Jeff Johnson295189b2012-06-20 16:38:30 -07006898 @see
6899 @return Result of the function call
6900*/
6901WDI_Status
6902WDI_MainStartStarted
Jeff Johnsone7245742012-09-05 17:12:55 -07006903(
Jeff Johnson295189b2012-06-20 16:38:30 -07006904 WDI_ControlBlockType* pWDICtx,
6905 WDI_EventInfoType* pEventData
6906)
6907{
6908 WDI_StartRspCb wdiStartRspCb = NULL;
6909 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6910
6911 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006912 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006913 ----------------------------------------------------------------------*/
6914 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6915 {
6916 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08006917 "Invalid parameters on Main Start %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07006918 pWDICtx, pEventData);
6919 return WDI_STATUS_E_FAILURE;
6920 }
6921
6922 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006923 Nothing to do transport was already started
Jeff Johnson295189b2012-06-20 16:38:30 -07006924 ----------------------------------------------------------------------*/
6925 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -07006926 "Received start while transport was already started - nothing to do");
Jeff Johnson295189b2012-06-20 16:38:30 -07006927
6928 wpalMutexAcquire(&pWDICtx->wptMutex);
6929
6930 /*Transition back to started because the post function transitioned us to
6931 busy*/
6932 WDI_STATE_TRANSITION( pWDICtx, WDI_STARTED_ST);
6933
6934 /*Check to see if any request is pending*/
6935 WDI_DequeuePendingReq(pWDICtx);
Jeff Johnsone7245742012-09-05 17:12:55 -07006936
Jeff Johnson295189b2012-06-20 16:38:30 -07006937 wpalMutexRelease(&pWDICtx->wptMutex);
6938
6939 /*Tell UMAC Success*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006940 wdiStartRspCb = (WDI_StartRspCb)pEventData->pCBfnc;
6941
Jeff Johnson295189b2012-06-20 16:38:30 -07006942 /*Notify UMAC*/
6943 wdiStartRspCb( &pWDICtx->wdiCachedStartRspParams, pWDICtx->pRspCBUserData);
6944
6945 /*Return Success*/
6946 return WDI_STATUS_SUCCESS;
6947
6948}/*WDI_MainStartStarted*/
6949
6950/**
6951 @brief Main FSM Stop function for state STARTED
6952
Jeff Johnsone7245742012-09-05 17:12:55 -07006953
6954 @param pWDICtx: pointer to the WLAN DAL context
6955 pEventData: pointer to the event information structure
6956
Jeff Johnson295189b2012-06-20 16:38:30 -07006957 @see
6958 @return Result of the function call
6959*/
6960WDI_Status
6961WDI_MainStopStarted
Jeff Johnsone7245742012-09-05 17:12:55 -07006962(
Jeff Johnson295189b2012-06-20 16:38:30 -07006963 WDI_ControlBlockType* pWDICtx,
6964 WDI_EventInfoType* pEventData
6965)
6966{
6967 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006968 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006969 ----------------------------------------------------------------------*/
6970 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6971 {
6972 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08006973 "Invalid parameters on Main Stop Started %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07006974 pWDICtx, pEventData);
6975 return WDI_STATUS_E_FAILURE;
6976 }
6977
6978 /*State at this point is BUSY - because we enter this state before posting
6979 an event to the FSM in order to prevent potential race conditions*/
6980
6981 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
6982 "Processing stop request in FSM");
6983
6984 /*Return Success*/
6985 return WDI_ProcessRequest( pWDICtx, pEventData );
6986
6987}/*WDI_MainStopStarted*/
6988/**
6989 @brief Main FSM Request function for state started
6990
Jeff Johnsone7245742012-09-05 17:12:55 -07006991
6992 @param pWDICtx: pointer to the WLAN DAL context
6993 pEventData: pointer to the event information structure
6994
Jeff Johnson295189b2012-06-20 16:38:30 -07006995 @see
6996 @return Result of the function call
6997*/
6998WDI_Status
6999WDI_MainReqStarted
Jeff Johnsone7245742012-09-05 17:12:55 -07007000(
Jeff Johnson295189b2012-06-20 16:38:30 -07007001 WDI_ControlBlockType* pWDICtx,
7002 WDI_EventInfoType* pEventData
7003)
7004{
7005
7006 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007007 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07007008 ----------------------------------------------------------------------*/
7009 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
7010 {
7011 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007012 "Invalid parameters on Main Req Started %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007013 pWDICtx, pEventData);
7014 return WDI_STATUS_E_FAILURE;
7015 }
7016
7017 /*State at this point is BUSY - because we enter this state before posting
7018 an event to the FSM in order to prevent potential race conditions*/
7019
7020 /*Return Success*/
7021 return WDI_ProcessRequest( pWDICtx, pEventData );
7022
7023}/*WDI_MainReqStarted*/
7024
7025/**
7026 @brief Main FSM Response function for all states except INIT
7027
Jeff Johnsone7245742012-09-05 17:12:55 -07007028
7029 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -07007030 pEventData: pointer to the event information structure
Jeff Johnsone7245742012-09-05 17:12:55 -07007031
Jeff Johnson295189b2012-06-20 16:38:30 -07007032 @see
7033 @return Result of the function call
7034*/
7035WDI_Status
7036WDI_MainRsp
Jeff Johnsone7245742012-09-05 17:12:55 -07007037(
Jeff Johnson295189b2012-06-20 16:38:30 -07007038 WDI_ControlBlockType* pWDICtx,
7039 WDI_EventInfoType* pEventData
7040)
7041{
Jeff Johnsone7245742012-09-05 17:12:55 -07007042 WDI_Status wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07007043 wpt_boolean expectedResponse;
7044
7045 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007046 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07007047 ----------------------------------------------------------------------*/
7048 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
7049 {
7050 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007051 "Invalid parameters on Main Response %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007052 pWDICtx, pEventData);
7053 return WDI_STATUS_E_FAILURE;
7054 }
7055
7056 if ( pEventData->wdiResponse == pWDICtx->wdiExpectedResponse )
7057 {
7058 /* we received an expected response */
7059 expectedResponse = eWLAN_PAL_TRUE;
7060
7061 /*We expect that we will transition to started after this processing*/
7062 pWDICtx->ucExpectedStateTransition = WDI_STARTED_ST;
7063
7064 /* we are no longer expecting a response */
7065 pWDICtx->wdiExpectedResponse = WDI_MAX_RESP;
7066 }
7067 else
7068 {
7069 /* we received an indication or unexpected response */
7070 expectedResponse = eWLAN_PAL_FALSE;
7071 /* for indications no need to update state from what it is right
7072 now, unless it explicitly does it in the indication handler (say
7073 for device failure ind) */
7074 pWDICtx->ucExpectedStateTransition = pWDICtx->uGlobalState;
7075 }
7076
7077 /*Process the response and indication */
7078 wdiStatus = WDI_ProcessResponse( pWDICtx, pEventData );
7079
7080 /*Lock the CB as we are about to do a state transition*/
7081 wpalMutexAcquire(&pWDICtx->wptMutex);
7082
7083 /*Transition to the expected state after the response processing
7084 - this should always be started state with the following exceptions:
7085 1. processing of a failed start response
7086 2. device failure detected while processing response
7087 3. stop response received*/
7088 WDI_STATE_TRANSITION( pWDICtx, pWDICtx->ucExpectedStateTransition);
Jeff Johnsone7245742012-09-05 17:12:55 -07007089
Jeff Johnson295189b2012-06-20 16:38:30 -07007090 /*Dequeue request that may have been queued while we were waiting for the
7091 response */
7092 if ( expectedResponse )
7093 {
Jeff Johnsone7245742012-09-05 17:12:55 -07007094 WDI_DequeuePendingReq(pWDICtx);
Jeff Johnson295189b2012-06-20 16:38:30 -07007095 }
7096
7097 wpalMutexRelease(&pWDICtx->wptMutex);
7098
7099 /*Return Success - always */
Jeff Johnsone7245742012-09-05 17:12:55 -07007100 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07007101
7102}/*WDI_MainRsp*/
7103
7104/*--------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007105 STOPPED State Functions
Jeff Johnson295189b2012-06-20 16:38:30 -07007106--------------------------------------------------------------------------*/
7107/**
7108 @brief Main FSM Stop function for state STOPPED
7109
Jeff Johnsone7245742012-09-05 17:12:55 -07007110
7111 @param pWDICtx: pointer to the WLAN DAL context
7112 pEventData: pointer to the event information structure
7113
Jeff Johnson295189b2012-06-20 16:38:30 -07007114 @see
7115 @return Result of the function call
7116*/
7117WDI_Status
7118WDI_MainStopStopped
Jeff Johnsone7245742012-09-05 17:12:55 -07007119(
Jeff Johnson295189b2012-06-20 16:38:30 -07007120 WDI_ControlBlockType* pWDICtx,
7121 WDI_EventInfoType* pEventData
7122)
7123{
7124 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007125 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07007126 ----------------------------------------------------------------------*/
7127 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
7128 {
7129 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007130 "Invalid parameters on Main Stop Stopped %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007131 pWDICtx, pEventData);
7132 return WDI_STATUS_E_FAILURE;
7133 }
7134
7135 /*We should normally not get a STOP request if we are already stopped
7136 since we should normally be stopped by the UMAC. However in some
7137 error situations we put ourselves in the stopped state without the
7138 UMAC knowing, so when we get a STOP request in this state we still
7139 process it since we need to clean up the underlying state */
7140 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
7141 "Processing stop request while stopped in FSM");
7142
7143 /*Return Success*/
7144 return WDI_ProcessRequest( pWDICtx, pEventData );
7145
7146}/*WDI_MainStopStopped*/
7147
7148/*--------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007149 BUSY State Functions
Jeff Johnson295189b2012-06-20 16:38:30 -07007150--------------------------------------------------------------------------*/
7151/**
7152 @brief Main FSM Start function for state BUSY
7153
Jeff Johnsone7245742012-09-05 17:12:55 -07007154
7155 @param pWDICtx: pointer to the WLAN DAL context
7156 pEventData: pointer to the event information structure
7157
Jeff Johnson295189b2012-06-20 16:38:30 -07007158 @see
7159 @return Result of the function call
7160*/
7161WDI_Status
7162WDI_MainStartBusy
Jeff Johnsone7245742012-09-05 17:12:55 -07007163(
Jeff Johnson295189b2012-06-20 16:38:30 -07007164 WDI_ControlBlockType* pWDICtx,
7165 WDI_EventInfoType* pEventData
7166)
7167{
7168 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007169 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07007170 ----------------------------------------------------------------------*/
7171 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
7172 {
7173 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007174 "Invalid parameters on Main Start in BUSY %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007175 pWDICtx, pEventData);
7176 return WDI_STATUS_E_FAILURE;
7177 }
7178
7179 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007180 Check if the Control Transport has been opened
Jeff Johnson295189b2012-06-20 16:38:30 -07007181 ----------------------------------------------------------------------*/
7182 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7183 "WDI Busy state - queue start request");
7184
7185 /*Queue the start request*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007186 WDI_QueuePendingReq( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07007187
7188 /*Return Success*/
7189 return WDI_STATUS_PENDING;
7190}/*WDI_MainStartBusy*/
7191
7192/**
7193 @brief Main FSM Stop function for state BUSY
7194
Jeff Johnsone7245742012-09-05 17:12:55 -07007195
7196 @param pWDICtx: pointer to the WLAN DAL context
7197 pEventData: pointer to the event information structure
7198
Jeff Johnson295189b2012-06-20 16:38:30 -07007199 @see
7200 @return Result of the function call
7201*/
7202WDI_Status
7203WDI_MainStopBusy
Jeff Johnsone7245742012-09-05 17:12:55 -07007204(
Jeff Johnson295189b2012-06-20 16:38:30 -07007205 WDI_ControlBlockType* pWDICtx,
7206 WDI_EventInfoType* pEventData
7207)
7208{
7209 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007210 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07007211 ----------------------------------------------------------------------*/
7212 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
7213 {
7214 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007215 "Invalid parameters on Main Stop in BUSY %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007216 pWDICtx, pEventData);
7217 return WDI_STATUS_E_FAILURE;
7218 }
7219
7220 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007221 Check if the Control Transport has been opened
Jeff Johnson295189b2012-06-20 16:38:30 -07007222 ----------------------------------------------------------------------*/
7223 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7224 "WDI Busy state - queue stop request");
7225
Jeff Johnsone7245742012-09-05 17:12:55 -07007226 WDI_QueuePendingReq( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07007227 return WDI_STATUS_PENDING;
Jeff Johnsone7245742012-09-05 17:12:55 -07007228
Jeff Johnson295189b2012-06-20 16:38:30 -07007229}/*WDI_MainStopBusy*/
7230
7231/**
7232 @brief Main FSM Request function for state BUSY
7233
Jeff Johnsone7245742012-09-05 17:12:55 -07007234
7235 @param pWDICtx: pointer to the WLAN DAL context
7236 pEventData: pointer to the event information structure
7237
Jeff Johnson295189b2012-06-20 16:38:30 -07007238 @see
7239 @return Result of the function call
7240*/
7241WDI_Status
7242WDI_MainReqBusy
Jeff Johnsone7245742012-09-05 17:12:55 -07007243(
Jeff Johnson295189b2012-06-20 16:38:30 -07007244 WDI_ControlBlockType* pWDICtx,
7245 WDI_EventInfoType* pEventData
7246)
7247{
7248 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007249 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07007250 ----------------------------------------------------------------------*/
7251 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
7252 {
7253 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007254 "Invalid parameters on Main Request in BUSY %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007255 pWDICtx, pEventData);
7256 return WDI_STATUS_E_FAILURE;
7257 }
7258
7259 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007260 Check if the Control Transport has been opened
Jeff Johnson295189b2012-06-20 16:38:30 -07007261 ----------------------------------------------------------------------*/
7262 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7263 "WDI Busy state - queue request %d because waiting for response %d",
7264 pEventData->wdiRequest, pWDICtx->wdiExpectedResponse);
7265
Jeff Johnsone7245742012-09-05 17:12:55 -07007266 WDI_QueuePendingReq( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07007267 return WDI_STATUS_PENDING;
Jeff Johnsone7245742012-09-05 17:12:55 -07007268
Jeff Johnson295189b2012-06-20 16:38:30 -07007269}/*WDI_MainReqBusy*/
7270/**
7271 @brief Main FSM Close function for state BUSY
7272
Jeff Johnsone7245742012-09-05 17:12:55 -07007273
7274 @param pWDICtx: pointer to the WLAN DAL context
7275 pEventData: pointer to the event information structure
7276
Jeff Johnson295189b2012-06-20 16:38:30 -07007277 @see
7278 @return Result of the function call
7279*/
7280WDI_Status
7281WDI_MainCloseBusy
Jeff Johnsone7245742012-09-05 17:12:55 -07007282(
Jeff Johnson295189b2012-06-20 16:38:30 -07007283 WDI_ControlBlockType* pWDICtx,
7284 WDI_EventInfoType* pEventData
7285)
7286{
7287 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007288 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07007289 ----------------------------------------------------------------------*/
7290 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
7291 {
7292 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007293 "Invalid parameters on Main Close in BUSY %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007294 pWDICtx, pEventData);
7295 return WDI_STATUS_E_FAILURE;
7296 }
7297
7298 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007299 Check if the Control Transport has been opened
Jeff Johnson295189b2012-06-20 16:38:30 -07007300 ----------------------------------------------------------------------*/
7301 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7302 "WDI Busy state - queue close request");
7303
Jeff Johnsone7245742012-09-05 17:12:55 -07007304 WDI_QueuePendingReq( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07007305 return WDI_STATUS_PENDING;
Jeff Johnsone7245742012-09-05 17:12:55 -07007306
Jeff Johnson295189b2012-06-20 16:38:30 -07007307}/*WDI_MainCloseBusy*/
7308
7309/**
7310 @brief Main FSM Shutdown function for INIT & STARTED states
7311
7312
7313 @param pWDICtx: pointer to the WLAN DAL context
7314 pEventData: pointer to the event information structure
7315
7316 @see
7317 @return Result of the function call
7318*/
7319WDI_Status
7320WDI_MainShutdown
7321(
7322 WDI_ControlBlockType* pWDICtx,
7323 WDI_EventInfoType* pEventData
7324)
7325{
7326 /*--------------------------------------------------------------------
7327 Sanity Check
7328 ----------------------------------------------------------------------*/
7329 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
7330 {
7331 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007332 "Invalid parameters on Main Start %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007333 pWDICtx, pEventData);
7334 return WDI_STATUS_E_FAILURE;
7335 }
7336
7337 /*State at this point is BUSY - because we enter this state before posting
7338 an event to the FSM in order to prevent potential race conditions*/
7339
7340 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
7341 "Processing shutdown request in FSM");
7342
7343 /*Return Success*/
7344 return WDI_ProcessRequest( pWDICtx, pEventData );
7345
7346}/*WDI_MainShutdown*/
7347
7348/**
7349 @brief Main FSM Shutdown function for BUSY state
7350
7351
7352 @param pWDICtx: pointer to the WLAN DAL context
7353 pEventData: pointer to the event information structure
7354
7355 @see
7356 @return Result of the function call
7357*/
7358WDI_Status
7359WDI_MainShutdownBusy
7360(
7361 WDI_ControlBlockType* pWDICtx,
7362 WDI_EventInfoType* pEventData
7363)
7364{
7365 /*--------------------------------------------------------------------
7366 Sanity Check
7367 ----------------------------------------------------------------------*/
7368 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
7369 {
7370 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007371 "Invalid parameters on Main Start %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007372 pWDICtx, pEventData);
7373 return WDI_STATUS_E_FAILURE;
7374 }
7375
7376 /* If you are waiting for a HAL response at this stage, you are not
7377 * going to get it. Riva is already shutdown/crashed.
7378 */
7379 wpalTimerStop(&gWDICb.wptResponseTimer);
7380
7381 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
7382 "Processing shutdown request in FSM: Busy state ");
7383
7384 return WDI_ProcessRequest( pWDICtx, pEventData );
7385
7386}/*WDI_MainShutdownBusy*/
7387
7388
Jeff Johnsone7245742012-09-05 17:12:55 -07007389/*=======================================================================
7390
Jeff Johnson295189b2012-06-20 16:38:30 -07007391 WLAN DAL Control Path Main Processing Functions
Jeff Johnsone7245742012-09-05 17:12:55 -07007392
Jeff Johnson295189b2012-06-20 16:38:30 -07007393*=======================================================================*/
7394
7395/*========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -07007396 Main DAL Control Path Request Processing API
Jeff Johnson295189b2012-06-20 16:38:30 -07007397========================================================================*/
7398/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007399 @brief Process Start Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07007400 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007401
7402 @param pWDICtx: pointer to the WLAN DAL context
7403 pEventData: pointer to the event information structure
7404
Jeff Johnson295189b2012-06-20 16:38:30 -07007405 @see
7406 @return Result of the function call
7407*/
7408WDI_Status
7409WDI_ProcessStartReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007410(
Jeff Johnson295189b2012-06-20 16:38:30 -07007411 WDI_ControlBlockType* pWDICtx,
7412 WDI_EventInfoType* pEventData
7413)
7414{
7415 WDI_StartReqParamsType* pwdiStartParams = NULL;
7416 WDI_StartRspCb wdiStartRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07007417 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07007418 wpt_uint16 usDataOffset = 0;
7419 wpt_uint16 usSendSize = 0;
7420
Jeff Johnsone7245742012-09-05 17:12:55 -07007421 tHalMacStartReqMsg halStartReq;
7422 wpt_uint16 usLen = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07007423 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7424
7425 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007426 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07007427 -------------------------------------------------------------------------*/
7428 if (( NULL == pEventData ) ||
7429 ( NULL == (pwdiStartParams = (WDI_StartReqParamsType*)pEventData->pEventData)) ||
7430 ( NULL == (wdiStartRspCb = (WDI_StartRspCb)pEventData->pCBfnc)))
7431 {
7432 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07007433 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07007434 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007435 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007436 }
7437
7438 /*-----------------------------------------------------------------------
7439 Get message buffer
7440 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007441 usLen = sizeof(halStartReq.startReqParams) +
Jeff Johnson295189b2012-06-20 16:38:30 -07007442 pwdiStartParams->usConfigBufferLen;
7443
Jeff Johnsone7245742012-09-05 17:12:55 -07007444 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_START_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07007445 usLen,
7446 &pSendBuffer, &usDataOffset, &usSendSize))||
7447 ( usSendSize < (usDataOffset + usLen )))
7448 {
7449 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007450 "Unable to get send buffer in start req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007451 pEventData, pwdiStartParams, wdiStartRspCb);
7452 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007453 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007454 }
7455
7456 /*-----------------------------------------------------------------------
7457 Fill in the message
7458 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007459 halStartReq.startReqParams.driverType =
7460 WDI_2_HAL_DRV_TYPE(pwdiStartParams->wdiDriverType);
Jeff Johnson295189b2012-06-20 16:38:30 -07007461
Jeff Johnsone7245742012-09-05 17:12:55 -07007462 halStartReq.startReqParams.uConfigBufferLen =
7463 pwdiStartParams->usConfigBufferLen;
7464 wpalMemoryCopy( pSendBuffer+usDataOffset,
7465 &halStartReq.startReqParams,
7466 sizeof(halStartReq.startReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07007467
Jeff Johnsone7245742012-09-05 17:12:55 -07007468 usDataOffset += sizeof(halStartReq.startReqParams);
7469 wpalMemoryCopy( pSendBuffer+usDataOffset,
7470 pwdiStartParams->pConfigBuffer,
7471 pwdiStartParams->usConfigBufferLen);
Jeff Johnson295189b2012-06-20 16:38:30 -07007472
7473 pWDICtx->wdiReqStatusCB = pwdiStartParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07007474 pWDICtx->pReqStatusUserData = pwdiStartParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07007475
7476 /*Save Low Level Ind CB and associated user data - it will be used further
7477 on when an indication is coming from the lower MAC*/
7478 pWDICtx->wdiLowLevelIndCB = pwdiStartParams->wdiLowLevelIndCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07007479 pWDICtx->pIndUserData = pwdiStartParams->pIndUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07007480
Jeff Johnsone7245742012-09-05 17:12:55 -07007481 pWDICtx->bFrameTransEnabled = pwdiStartParams->bFrameTransEnabled;
Jeff Johnson295189b2012-06-20 16:38:30 -07007482 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007483 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07007484 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007485 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07007486 wdiStartRspCb, pEventData->pUserData, WDI_START_RESP);
7487
Jeff Johnsone7245742012-09-05 17:12:55 -07007488
Jeff Johnson295189b2012-06-20 16:38:30 -07007489}/*WDI_ProcessStartReq*/
7490
7491/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007492 @brief Process Stop Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07007493 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007494
7495 @param pWDICtx: pointer to the WLAN DAL context
7496 pEventData: pointer to the event information structure
7497
Jeff Johnson295189b2012-06-20 16:38:30 -07007498 @see
7499 @return Result of the function call
7500*/
7501WDI_Status
7502WDI_ProcessStopReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007503(
Jeff Johnson295189b2012-06-20 16:38:30 -07007504 WDI_ControlBlockType* pWDICtx,
7505 WDI_EventInfoType* pEventData
7506)
7507{
7508 WDI_StopReqParamsType* pwdiStopParams = NULL;
7509 WDI_StopRspCb wdiStopRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07007510 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07007511 wpt_uint16 usDataOffset = 0;
7512 wpt_uint16 usSendSize = 0;
Jeff Johnson43971f52012-07-17 12:26:56 -07007513 wpt_status status;
Jeff Johnsone7245742012-09-05 17:12:55 -07007514 tHalMacStopReqMsg halStopReq;
Jeff Johnson295189b2012-06-20 16:38:30 -07007515 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7516
7517 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007518 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07007519 -------------------------------------------------------------------------*/
7520 if (( NULL == pEventData ) ||
7521 ( NULL == (pwdiStopParams = (WDI_StopReqParamsType*)pEventData->pEventData)) ||
7522 ( NULL == (wdiStopRspCb = (WDI_StopRspCb)pEventData->pCBfnc)))
7523 {
7524 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07007525 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07007526 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -08007527 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -07007528 }
7529
7530 /*-----------------------------------------------------------------------
7531 Get message buffer
7532 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007533 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_STOP_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07007534 sizeof(halStopReq.stopReqParams),
7535 &pSendBuffer, &usDataOffset, &usSendSize))||
7536 ( usSendSize < (usDataOffset + sizeof(halStopReq.stopReqParams) )))
7537 {
7538 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007539 "Unable to get send buffer in stop req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007540 pEventData, pwdiStopParams, wdiStopRspCb);
7541 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -08007542 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -07007543 }
7544
7545 /*-----------------------------------------------------------------------
7546 Fill in the message
7547 -----------------------------------------------------------------------*/
7548 halStopReq.stopReqParams.reason = WDI_2_HAL_STOP_REASON(
7549 pwdiStopParams->wdiStopReason);
7550
Jeff Johnsone7245742012-09-05 17:12:55 -07007551 wpalMemoryCopy( pSendBuffer+usDataOffset,
7552 &halStopReq.stopReqParams,
7553 sizeof(halStopReq.stopReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07007554
7555 pWDICtx->wdiReqStatusCB = pwdiStopParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07007556 pWDICtx->pReqStatusUserData = pwdiStopParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07007557
7558 /*! TO DO: stop the data services */
7559 if ( eDRIVER_TYPE_MFG != pWDICtx->driverMode )
7560 {
7561 /*Stop the STA Table !UT- check this logic again
7562 It is safer to do it here than on the response - because a stop is imminent*/
7563 WDI_STATableStop(pWDICtx);
7564
7565 /* Reset the event to be not signalled */
Jeff Johnson43971f52012-07-17 12:26:56 -07007566 status = wpalEventReset(&pWDICtx->setPowerStateEvent);
7567 if (eWLAN_PAL_STATUS_SUCCESS != status)
Jeff Johnson295189b2012-06-20 16:38:30 -07007568 {
7569 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7570 "WDI Init failed to reset power state event");
7571
Jeff Johnsone7245742012-09-05 17:12:55 -07007572 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -08007573 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -07007574 }
7575 /* Stop Transport Driver, DXE */
Ravali85acf6b2012-12-12 14:01:38 -08007576 status = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_DOWN, WDI_SetPowerStateCb);
7577 if( eWLAN_PAL_STATUS_SUCCESS != status )
7578 {
7579 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain9a5d5382013-11-17 22:05:35 -08007580 "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 -08007581 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -08007582 goto fail;
Ravali85acf6b2012-12-12 14:01:38 -08007583 }
Jeff Johnson295189b2012-06-20 16:38:30 -07007584 /*
Jeff Johnsone7245742012-09-05 17:12:55 -07007585 * Wait for the event to be set once the ACK comes back from DXE
Jeff Johnson295189b2012-06-20 16:38:30 -07007586 */
Jeff Johnson43971f52012-07-17 12:26:56 -07007587 status = wpalEventWait(&pWDICtx->setPowerStateEvent,
7588 WDI_SET_POWER_STATE_TIMEOUT);
7589 if (eWLAN_PAL_STATUS_SUCCESS != status)
Jeff Johnson295189b2012-06-20 16:38:30 -07007590 {
7591 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7592 "WDI Init failed to wait on an event");
7593
Jeff Johnsone7245742012-09-05 17:12:55 -07007594 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -08007595 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -07007596 }
7597 }
7598
7599 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007600 Send Stop Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07007601 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007602 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07007603 wdiStopRspCb, pEventData->pUserData, WDI_STOP_RESP);
7604
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -08007605fail:
7606 // Release the message buffer so we don't leak
7607 wpalMemoryFree(pSendBuffer);
7608
7609failRequest:
7610 //WDA should have failure check to avoid the memory leak
7611 return WDI_STATUS_E_FAILURE;
7612
Jeff Johnson295189b2012-06-20 16:38:30 -07007613}/*WDI_ProcessStopReq*/
7614
7615/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007616 @brief Process Close Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07007617 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007618
7619 @param pWDICtx: pointer to the WLAN DAL context
7620 pEventData: pointer to the event information structure
7621
Jeff Johnson295189b2012-06-20 16:38:30 -07007622 @see
7623 @return Result of the function call
7624*/
7625WDI_Status
7626WDI_ProcessCloseReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007627(
Jeff Johnson295189b2012-06-20 16:38:30 -07007628 WDI_ControlBlockType* pWDICtx,
7629 WDI_EventInfoType* pEventData
7630)
7631{
Jeff Johnsone7245742012-09-05 17:12:55 -07007632 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07007633 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7634
7635 /*Lock control block for cleanup*/
7636 wpalMutexAcquire(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07007637
Jeff Johnson295189b2012-06-20 16:38:30 -07007638 /*Clear all pending request*/
7639 WDI_ClearPendingRequests(pWDICtx);
7640
7641 /* Close Control transport*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007642 WCTS_CloseTransport(pWDICtx->wctsHandle);
Jeff Johnson295189b2012-06-20 16:38:30 -07007643
7644 /* Close Data transport*/
7645 /* FTM mode does not open Data Path */
7646 if ( eDRIVER_TYPE_MFG != pWDICtx->driverMode )
7647 {
7648 WDTS_Close(pWDICtx);
7649 }
7650
7651 /*Close the STA Table !UT- check this logic again*/
7652 WDI_STATableClose(pWDICtx);
7653
7654 /*close the PAL */
7655 wptStatus = wpalClose(pWDICtx->pPALContext);
7656 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
7657 {
7658 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
7659 "Failed to wpal Close %d", wptStatus);
7660 WDI_ASSERT(0);
7661 }
7662
7663 /*Transition back to init state*/
7664 WDI_STATE_TRANSITION( pWDICtx, WDI_INIT_ST);
7665
7666 wpalMutexRelease(&pWDICtx->wptMutex);
7667
7668 /*Make sure the expected state is properly defaulted to Init*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007669 pWDICtx->ucExpectedStateTransition = WDI_INIT_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07007670
Jeff Johnsone7245742012-09-05 17:12:55 -07007671 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07007672}/*WDI_ProcessCloseReq*/
7673
7674
7675/*===========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -07007676 SCANING REQUEST PROCESSING API
Jeff Johnson295189b2012-06-20 16:38:30 -07007677===========================================================================*/
7678
7679/**
7680 @brief Process Init Scan Request function (called when Main FSM
7681 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007682
7683 @param pWDICtx: pointer to the WLAN DAL context
7684 pEventData: pointer to the event information structure
7685
Jeff Johnson295189b2012-06-20 16:38:30 -07007686 @see
7687 @return Result of the function call
7688*/
7689WDI_Status
7690WDI_ProcessInitScanReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007691(
Jeff Johnson295189b2012-06-20 16:38:30 -07007692 WDI_ControlBlockType* pWDICtx,
7693 WDI_EventInfoType* pEventData
7694)
7695{
7696 WDI_InitScanReqParamsType* pwdiInitScanParams = NULL;
7697 WDI_InitScanRspCb wdiInitScanRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07007698 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07007699 wpt_uint16 usDataOffset = 0;
7700 wpt_uint16 usSendSize = 0;
7701 wpt_uint8 i = 0;
7702
7703 tHalInitScanReqMsg halInitScanReqMsg;
7704
Jeff Johnsone7245742012-09-05 17:12:55 -07007705 /*This is temporary fix.
Jeff Johnson295189b2012-06-20 16:38:30 -07007706 * It shold be removed once host and riva changes are in sync*/
7707 tHalInitScanConReqMsg halInitScanConReqMsg;
7708
7709 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7710
7711 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007712 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07007713 -------------------------------------------------------------------------*/
7714 if (( NULL == pEventData ) ||
7715 ( NULL == (pwdiInitScanParams = (WDI_InitScanReqParamsType*)pEventData->pEventData)) ||
7716 ( NULL == (wdiInitScanRspCb = (WDI_InitScanRspCb)pEventData->pCBfnc)))
7717 {
7718 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07007719 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07007720 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007721 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007722 }
7723
7724#if 0
7725 wpalMutexAcquire(&pWDICtx->wptMutex);
7726 /*-----------------------------------------------------------------------
7727 Check to see if SCAN is already in progress - if so reject the req
7728 We only allow one scan at a time
Jeff Johnsone7245742012-09-05 17:12:55 -07007729 ! TO DO: - revisit this constraint
Jeff Johnson295189b2012-06-20 16:38:30 -07007730 -----------------------------------------------------------------------*/
7731 if ( pWDICtx->bScanInProgress )
7732 {
7733 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
7734 "Scan is already in progress - subsequent scan is not allowed"
7735 " until the first scan completes");
7736
7737 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07007738 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07007739 }
7740
Jeff Johnsone7245742012-09-05 17:12:55 -07007741 pWDICtx->bScanInProgress = eWLAN_PAL_TRUE;
7742 pWDICtx->uScanState = WDI_SCAN_INITIALIZED_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07007743
7744 wpalMutexRelease(&pWDICtx->wptMutex);
7745#endif
Viral Modid86bde22012-12-10 13:09:21 -08007746 if ((pwdiInitScanParams->wdiReqInfo.bUseNOA) && (!WDI_getFwWlanFeatCaps(P2P_GO_NOA_DECOUPLE_INIT_SCAN)))
Jeff Johnson295189b2012-06-20 16:38:30 -07007747 {
Jeff Johnsone7245742012-09-05 17:12:55 -07007748 /*This is temporary fix.
Jeff Johnson295189b2012-06-20 16:38:30 -07007749 * It shold be removed once host and riva changes are in sync*/
7750 /*-----------------------------------------------------------------------
7751 Get message buffer
7752 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007753 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_INIT_SCAN_CON_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07007754 sizeof(halInitScanConReqMsg.initScanParams),
7755 &pSendBuffer, &usDataOffset, &usSendSize))||
7756 ( usSendSize < (usDataOffset + sizeof(halInitScanConReqMsg.initScanParams) )))
7757 {
7758 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007759 "Unable to get send buffer in init scan req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007760 pEventData, pwdiInitScanParams, wdiInitScanRspCb);
7761 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007762 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007763 }
7764
7765
7766 /*-----------------------------------------------------------------------
7767 Fill in the message
7768 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007769 halInitScanConReqMsg.initScanParams.scanMode =
Jeff Johnson295189b2012-06-20 16:38:30 -07007770 WDI_2_HAL_SCAN_MODE(pwdiInitScanParams->wdiReqInfo.wdiScanMode);
7771
7772 wpalMemoryCopy(halInitScanConReqMsg.initScanParams.bssid,
7773 pwdiInitScanParams->wdiReqInfo.macBSSID, WDI_MAC_ADDR_LEN);
7774
Jeff Johnsone7245742012-09-05 17:12:55 -07007775 halInitScanConReqMsg.initScanParams.notifyBss =
Jeff Johnson295189b2012-06-20 16:38:30 -07007776 pwdiInitScanParams->wdiReqInfo.bNotifyBSS;
Jeff Johnsone7245742012-09-05 17:12:55 -07007777 halInitScanConReqMsg.initScanParams.frameType =
Jeff Johnson295189b2012-06-20 16:38:30 -07007778 pwdiInitScanParams->wdiReqInfo.ucFrameType;
Jeff Johnsone7245742012-09-05 17:12:55 -07007779 halInitScanConReqMsg.initScanParams.frameLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07007780 pwdiInitScanParams->wdiReqInfo.ucFrameLength;
7781
7782 WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr( &halInitScanConReqMsg.initScanParams.macMgmtHdr,
7783 &pwdiInitScanParams->wdiReqInfo.wdiMACMgmtHdr);
7784
Jeff Johnson295189b2012-06-20 16:38:30 -07007785 halInitScanConReqMsg.initScanParams.useNoA = pwdiInitScanParams->wdiReqInfo.bUseNOA;
7786 halInitScanConReqMsg.initScanParams.scanDuration = pwdiInitScanParams->wdiReqInfo.scanDuration;
Jeff Johnson295189b2012-06-20 16:38:30 -07007787
Jeff Johnsone7245742012-09-05 17:12:55 -07007788 halInitScanConReqMsg.initScanParams.scanEntry.activeBSScnt =
Jeff Johnson295189b2012-06-20 16:38:30 -07007789 pwdiInitScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt;
7790
7791 for (i=0; i < pwdiInitScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt; i++)
7792 {
Jeff Johnsone7245742012-09-05 17:12:55 -07007793 halInitScanConReqMsg.initScanParams.scanEntry.bssIdx[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -07007794 pwdiInitScanParams->wdiReqInfo.wdiScanEntry.bssIdx[i];
7795 }
7796
Jeff Johnsone7245742012-09-05 17:12:55 -07007797 wpalMemoryCopy( pSendBuffer+usDataOffset,
7798 &halInitScanConReqMsg.initScanParams,
7799 sizeof(halInitScanConReqMsg.initScanParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07007800 }
7801 else
7802 {
7803 /*-----------------------------------------------------------------------
7804 Get message buffer
7805 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007806 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_INIT_SCAN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07007807 sizeof(halInitScanReqMsg.initScanParams),
7808 &pSendBuffer, &usDataOffset, &usSendSize))||
7809 ( usSendSize < (usDataOffset + sizeof(halInitScanReqMsg.initScanParams) )))
7810 {
7811 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007812 "Unable to get send buffer in init scan req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007813 pEventData, pwdiInitScanParams, wdiInitScanRspCb);
7814 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007815 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007816 }
7817
7818
7819 /*-----------------------------------------------------------------------
7820 Fill in the message
7821 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007822 halInitScanReqMsg.initScanParams.scanMode =
Jeff Johnson295189b2012-06-20 16:38:30 -07007823 WDI_2_HAL_SCAN_MODE(pwdiInitScanParams->wdiReqInfo.wdiScanMode);
7824
7825 wpalMemoryCopy(halInitScanReqMsg.initScanParams.bssid,
7826 pwdiInitScanParams->wdiReqInfo.macBSSID, WDI_MAC_ADDR_LEN);
7827
Jeff Johnsone7245742012-09-05 17:12:55 -07007828 halInitScanReqMsg.initScanParams.notifyBss =
Jeff Johnson295189b2012-06-20 16:38:30 -07007829 pwdiInitScanParams->wdiReqInfo.bNotifyBSS;
Jeff Johnsone7245742012-09-05 17:12:55 -07007830 halInitScanReqMsg.initScanParams.frameType =
Jeff Johnson295189b2012-06-20 16:38:30 -07007831 pwdiInitScanParams->wdiReqInfo.ucFrameType;
Jeff Johnsone7245742012-09-05 17:12:55 -07007832 halInitScanReqMsg.initScanParams.frameLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07007833 pwdiInitScanParams->wdiReqInfo.ucFrameLength;
7834
7835 WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr( &halInitScanReqMsg.initScanParams.macMgmtHdr,
7836 &pwdiInitScanParams->wdiReqInfo.wdiMACMgmtHdr);
7837
Jeff Johnsone7245742012-09-05 17:12:55 -07007838 halInitScanReqMsg.initScanParams.scanEntry.activeBSScnt =
Jeff Johnson295189b2012-06-20 16:38:30 -07007839 pwdiInitScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt;
7840
7841 for (i=0; i < pwdiInitScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt; i++)
7842 {
Jeff Johnsone7245742012-09-05 17:12:55 -07007843 halInitScanReqMsg.initScanParams.scanEntry.bssIdx[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -07007844 pwdiInitScanParams->wdiReqInfo.wdiScanEntry.bssIdx[i];
7845 }
7846
Jeff Johnsone7245742012-09-05 17:12:55 -07007847 wpalMemoryCopy( pSendBuffer+usDataOffset,
7848 &halInitScanReqMsg.initScanParams,
7849 sizeof(halInitScanReqMsg.initScanParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07007850 }
7851
7852 pWDICtx->wdiReqStatusCB = pwdiInitScanParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07007853 pWDICtx->pReqStatusUserData = pwdiInitScanParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07007854
7855 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007856 Send Init Scan Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07007857 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007858 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07007859 wdiInitScanRspCb, pEventData->pUserData, WDI_INIT_SCAN_RESP);
7860
7861}/*WDI_ProcessInitScanReq*/
7862
7863/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007864 @brief Process Start Scan Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -07007865 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007866
7867 @param pWDICtx: pointer to the WLAN DAL context
7868 pEventData: pointer to the event information structure
7869
Jeff Johnson295189b2012-06-20 16:38:30 -07007870 @see
7871 @return Result of the function call
7872*/
7873WDI_Status
7874WDI_ProcessStartScanReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007875(
Jeff Johnson295189b2012-06-20 16:38:30 -07007876 WDI_ControlBlockType* pWDICtx,
7877 WDI_EventInfoType* pEventData
7878)
7879{
7880 WDI_StartScanReqParamsType* pwdiStartScanParams = NULL;
7881 WDI_StartScanRspCb wdiStartScanRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07007882 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07007883 wpt_uint16 usDataOffset = 0;
7884 wpt_uint16 usSendSize = 0;
7885
Jeff Johnsone7245742012-09-05 17:12:55 -07007886 tHalStartScanReqMsg halStartScanReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07007887 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7888
7889 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007890 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07007891 -------------------------------------------------------------------------*/
7892 if (( NULL == pEventData ) ||
7893 ( NULL == (pwdiStartScanParams = (WDI_StartScanReqParamsType*)pEventData->pEventData)) ||
7894 ( NULL == (wdiStartScanRspCb = (WDI_StartScanRspCb)pEventData->pCBfnc)))
7895 {
7896 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07007897 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07007898 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007899 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007900 }
7901
7902#if 0
7903 wpalMutexAcquire(&pWDICtx->wptMutex);
7904 /*-----------------------------------------------------------------------
7905 Check to see if SCAN is already in progress - start scan is only
7906 allowed when a scan is ongoing and the state of the scan procedure
Jeff Johnsone7245742012-09-05 17:12:55 -07007907 is either init or end
Jeff Johnson295189b2012-06-20 16:38:30 -07007908 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007909 if (( !pWDICtx->bScanInProgress ) ||
Jeff Johnson295189b2012-06-20 16:38:30 -07007910 (( WDI_SCAN_INITIALIZED_ST != pWDICtx->uScanState ) &&
7911 ( WDI_SCAN_ENDED_ST != pWDICtx->uScanState )))
7912 {
7913 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
7914 "Scan start not allowed in this state %d %d",
7915 pWDICtx->bScanInProgress, pWDICtx->uScanState);
Jeff Johnsone7245742012-09-05 17:12:55 -07007916
Jeff Johnson295189b2012-06-20 16:38:30 -07007917 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07007918 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07007919 }
7920
Jeff Johnsone7245742012-09-05 17:12:55 -07007921 pWDICtx->uScanState = WDI_SCAN_STARTED_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07007922
7923 wpalMutexRelease(&pWDICtx->wptMutex);
7924#endif
7925
7926 /*-----------------------------------------------------------------------
7927 Get message buffer
7928 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007929 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_START_SCAN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07007930 sizeof(halStartScanReqMsg.startScanParams),
7931 &pSendBuffer, &usDataOffset, &usSendSize))||
7932 ( usSendSize < (usDataOffset + sizeof(halStartScanReqMsg.startScanParams) )))
7933 {
7934 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007935 "Unable to get send buffer in start scan req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007936 pEventData, pwdiStartScanParams, wdiStartScanRspCb);
7937 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007938 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007939 }
7940
Jeff Johnsone7245742012-09-05 17:12:55 -07007941 halStartScanReqMsg.startScanParams.scanChannel =
Jeff Johnson295189b2012-06-20 16:38:30 -07007942 pwdiStartScanParams->ucChannel;
Jeff Johnsone7245742012-09-05 17:12:55 -07007943 wpalMemoryCopy( pSendBuffer+usDataOffset,
7944 &halStartScanReqMsg.startScanParams,
7945 sizeof(halStartScanReqMsg.startScanParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07007946
7947 pWDICtx->wdiReqStatusCB = pwdiStartScanParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07007948 pWDICtx->pReqStatusUserData = pwdiStartScanParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07007949
7950 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007951 Send Start Scan Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07007952 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007953 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07007954 wdiStartScanRspCb, pEventData->pUserData, WDI_START_SCAN_RESP);
7955}/*WDI_ProcessStartScanReq*/
7956
7957
7958/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007959 @brief Process End Scan Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07007960 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007961
7962 @param pWDICtx: pointer to the WLAN DAL context
7963 pEventData: pointer to the event information structure
7964
Jeff Johnson295189b2012-06-20 16:38:30 -07007965 @see
7966 @return Result of the function call
7967*/
7968WDI_Status
7969WDI_ProcessEndScanReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007970(
Jeff Johnson295189b2012-06-20 16:38:30 -07007971 WDI_ControlBlockType* pWDICtx,
7972 WDI_EventInfoType* pEventData
7973)
7974{
7975 WDI_EndScanReqParamsType* pwdiEndScanParams = NULL;
7976 WDI_EndScanRspCb wdiEndScanRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07007977 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07007978 wpt_uint16 usDataOffset = 0;
7979 wpt_uint16 usSendSize = 0;
7980
Jeff Johnsone7245742012-09-05 17:12:55 -07007981 tHalEndScanReqMsg halEndScanReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07007982 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7983
7984 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007985 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07007986 -------------------------------------------------------------------------*/
7987 if (( NULL == pEventData ) ||
7988 ( NULL == (pwdiEndScanParams = (WDI_EndScanReqParamsType*)pEventData->pEventData)) ||
7989 ( NULL == (wdiEndScanRspCb = (WDI_EndScanRspCb)pEventData->pCBfnc)))
7990 {
7991 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07007992 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07007993 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007994 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007995 }
7996
Jeff Johnsone7245742012-09-05 17:12:55 -07007997 /* commenting this check as UMAC is sending END_SCAN_REQ after FINISH_SCAN
7998 * sometimes because of this check the scan request is not being
Jeff Johnson295189b2012-06-20 16:38:30 -07007999 * forwarded to HAL and result in hang*/
8000#if 0
8001 wpalMutexAcquire(&pWDICtx->wptMutex);
8002 /*-----------------------------------------------------------------------
8003 Check to see if SCAN is already in progress - end scan is only
8004 allowed when a scan is ongoing and the state of the scan procedure
8005 is started
8006 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008007 if (( !pWDICtx->bScanInProgress ) ||
Jeff Johnson295189b2012-06-20 16:38:30 -07008008 ( WDI_SCAN_STARTED_ST != pWDICtx->uScanState ))
8009 {
8010 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8011 "End start not allowed in this state %d %d",
8012 pWDICtx->bScanInProgress, pWDICtx->uScanState);
Jeff Johnsone7245742012-09-05 17:12:55 -07008013
Jeff Johnson295189b2012-06-20 16:38:30 -07008014 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008015 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008016 }
8017
Jeff Johnsone7245742012-09-05 17:12:55 -07008018 pWDICtx->uScanState = WDI_SCAN_ENDED_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07008019
8020 wpalMutexRelease(&pWDICtx->wptMutex);
8021#endif
8022
8023 /*-----------------------------------------------------------------------
8024 Get message buffer
8025 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008026 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_END_SCAN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008027 sizeof(halEndScanReqMsg.endScanParams),
8028 &pSendBuffer, &usDataOffset, &usSendSize))||
8029 ( usSendSize < (usDataOffset + sizeof(halEndScanReqMsg.endScanParams) )))
8030 {
8031 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08008032 "Unable to get send buffer in start scan req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07008033 pEventData, pwdiEndScanParams, wdiEndScanRspCb);
8034 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008035 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008036 }
8037
8038 halEndScanReqMsg.endScanParams.scanChannel = pwdiEndScanParams->ucChannel;
8039
Jeff Johnsone7245742012-09-05 17:12:55 -07008040 wpalMemoryCopy( pSendBuffer+usDataOffset,
8041 &halEndScanReqMsg.endScanParams,
8042 sizeof(halEndScanReqMsg.endScanParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008043
8044 pWDICtx->wdiReqStatusCB = pwdiEndScanParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008045 pWDICtx->pReqStatusUserData = pwdiEndScanParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008046
8047 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008048 Send End Scan Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008049 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008050 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07008051 wdiEndScanRspCb, pEventData->pUserData, WDI_END_SCAN_RESP);
8052}/*WDI_ProcessEndScanReq*/
8053
8054
8055/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008056 @brief Process Finish Scan Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -07008057 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008058
8059 @param pWDICtx: pointer to the WLAN DAL context
8060 pEventData: pointer to the event information structure
8061
Jeff Johnson295189b2012-06-20 16:38:30 -07008062 @see
8063 @return Result of the function call
8064*/
8065WDI_Status
8066WDI_ProcessFinishScanReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008067(
Jeff Johnson295189b2012-06-20 16:38:30 -07008068 WDI_ControlBlockType* pWDICtx,
8069 WDI_EventInfoType* pEventData
8070)
8071{
8072 WDI_FinishScanReqParamsType* pwdiFinishScanParams;
8073 WDI_FinishScanRspCb wdiFinishScanRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07008074 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008075 wpt_uint16 usDataOffset = 0;
8076 wpt_uint16 usSendSize = 0;
8077 wpt_uint8 i = 0;
Ravali85acf6b2012-12-12 14:01:38 -08008078 wpt_status wptStatus;
Jeff Johnsone7245742012-09-05 17:12:55 -07008079 tHalFinishScanReqMsg halFinishScanReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07008080 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8081
8082 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008083 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008084 -------------------------------------------------------------------------*/
8085 if (( NULL == pEventData ) ||
8086 ( NULL == pEventData->pEventData) ||
8087 ( NULL == pEventData->pCBfnc))
8088 {
8089 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008090 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008091 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008092 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008093 }
8094
8095 pwdiFinishScanParams = (WDI_FinishScanReqParamsType*)pEventData->pEventData;
8096 wdiFinishScanRspCb = (WDI_FinishScanRspCb)pEventData->pCBfnc;
Jeff Johnsone7245742012-09-05 17:12:55 -07008097 /* commenting this check as UMAC is sending END_SCAN_REQ after FINISH_SCAN
8098 * sometimes because of this check the scan request is not being
Jeff Johnson295189b2012-06-20 16:38:30 -07008099 * forwarded to HAL and result in hang*/
8100#if 0
8101 wpalMutexAcquire(&pWDICtx->wptMutex);
8102 /*-----------------------------------------------------------------------
8103 Check to see if SCAN is already in progress
8104 Finish scan gets invoked any scan states. ie. abort scan
8105 It should be allowed in any states.
8106 -----------------------------------------------------------------------*/
8107 if ( !pWDICtx->bScanInProgress )
8108 {
8109 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8110 "Finish start not allowed in this state %d",
8111 pWDICtx->bScanInProgress );
8112
8113 wpalMutexRelease(&pWDICtx->wptMutex);
Ravali85acf6b2012-12-12 14:01:38 -08008114 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008115 }
8116
8117 /*-----------------------------------------------------------------------
8118 It is safe to reset the scan flags here because until the response comes
Jeff Johnsone7245742012-09-05 17:12:55 -07008119 back all subsequent requests will be blocked at BUSY state
Jeff Johnson295189b2012-06-20 16:38:30 -07008120 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008121 pWDICtx->uScanState = WDI_SCAN_FINISHED_ST;
8122 pWDICtx->bScanInProgress = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008123 wpalMutexRelease(&pWDICtx->wptMutex);
8124#endif
8125
8126 if ( pWDICtx->bInBmps )
8127 {
8128 // notify DTS that we are entering BMPS
Ravali85acf6b2012-12-12 14:01:38 -08008129 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_BMPS, NULL);
8130 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
8131 {
8132 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain9a5d5382013-11-17 22:05:35 -08008133 "WDTS_SetPowerState returned with status %d when trying to notify DTS that host is entering BMPS", wptStatus);
Ravali85acf6b2012-12-12 14:01:38 -08008134 WDI_ASSERT(0);
8135 }
Jeff Johnson295189b2012-06-20 16:38:30 -07008136 }
8137
8138 /*-----------------------------------------------------------------------
8139 Get message buffer
8140 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008141 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_FINISH_SCAN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008142 sizeof(halFinishScanReqMsg.finishScanParams),
8143 &pSendBuffer, &usDataOffset, &usSendSize))||
8144 ( usSendSize < (usDataOffset + sizeof(halFinishScanReqMsg.finishScanParams) )))
8145 {
8146 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08008147 "Unable to get send buffer in start scan req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07008148 pEventData, pwdiFinishScanParams, wdiFinishScanRspCb);
8149 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008150 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008151 }
8152
Jeff Johnsone7245742012-09-05 17:12:55 -07008153 halFinishScanReqMsg.finishScanParams.scanMode =
Jeff Johnson295189b2012-06-20 16:38:30 -07008154 WDI_2_HAL_SCAN_MODE(pwdiFinishScanParams->wdiReqInfo.wdiScanMode);
8155
Jeff Johnsone7245742012-09-05 17:12:55 -07008156 halFinishScanReqMsg.finishScanParams.currentOperChannel =
Jeff Johnson295189b2012-06-20 16:38:30 -07008157 pwdiFinishScanParams->wdiReqInfo.ucCurrentOperatingChannel;
8158
Jeff Johnsone7245742012-09-05 17:12:55 -07008159 halFinishScanReqMsg.finishScanParams.cbState =
Jeff Johnson295189b2012-06-20 16:38:30 -07008160 WDI_2_HAL_CB_STATE(pwdiFinishScanParams->wdiReqInfo.wdiCBState);
8161
8162 wpalMemoryCopy(halFinishScanReqMsg.finishScanParams.bssid,
8163 pwdiFinishScanParams->wdiReqInfo.macBSSID, WDI_MAC_ADDR_LEN);
8164
Jeff Johnsone7245742012-09-05 17:12:55 -07008165 halFinishScanReqMsg.finishScanParams.notifyBss =
Jeff Johnson295189b2012-06-20 16:38:30 -07008166 pwdiFinishScanParams->wdiReqInfo.bNotifyBSS ;
Jeff Johnsone7245742012-09-05 17:12:55 -07008167 halFinishScanReqMsg.finishScanParams.frameType =
Jeff Johnson295189b2012-06-20 16:38:30 -07008168 pwdiFinishScanParams->wdiReqInfo.ucFrameType ;
Jeff Johnsone7245742012-09-05 17:12:55 -07008169 halFinishScanReqMsg.finishScanParams.frameLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07008170 pwdiFinishScanParams->wdiReqInfo.ucFrameLength ;
8171
Jeff Johnsone7245742012-09-05 17:12:55 -07008172 halFinishScanReqMsg.finishScanParams.scanEntry.activeBSScnt =
Jeff Johnson295189b2012-06-20 16:38:30 -07008173 pwdiFinishScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt ;
8174
8175 for (i = 0; i < pwdiFinishScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt; i++)
8176 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008177 halFinishScanReqMsg.finishScanParams.scanEntry.bssIdx[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -07008178 pwdiFinishScanParams->wdiReqInfo.wdiScanEntry.bssIdx[i] ;
8179 }
8180
8181 WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr( &halFinishScanReqMsg.finishScanParams.macMgmtHdr,
8182 &pwdiFinishScanParams->wdiReqInfo.wdiMACMgmtHdr);
8183
Jeff Johnsone7245742012-09-05 17:12:55 -07008184 wpalMemoryCopy( pSendBuffer+usDataOffset,
8185 &halFinishScanReqMsg.finishScanParams,
8186 sizeof(halFinishScanReqMsg.finishScanParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008187
8188 pWDICtx->wdiReqStatusCB = pwdiFinishScanParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008189 pWDICtx->pReqStatusUserData = pwdiFinishScanParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008190
8191 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008192 Send Finish Scan Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008193 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008194 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07008195 wdiFinishScanRspCb, pEventData->pUserData, WDI_FINISH_SCAN_RESP);
8196}/*WDI_ProcessFinishScanReq*/
8197
8198
8199/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -07008200 ASSOCIATION REQUEST API
Jeff Johnson295189b2012-06-20 16:38:30 -07008201==========================================================================*/
8202/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008203 @brief Process BSS Join for a given Session
8204
8205 @param pWDICtx: pointer to the WLAN DAL context
8206 pEventData: pointer to the event information structure
8207
Jeff Johnson295189b2012-06-20 16:38:30 -07008208 @see
8209 @return Result of the function call
8210*/
8211WDI_Status
8212WDI_ProcessBSSSessionJoinReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008213(
Jeff Johnson295189b2012-06-20 16:38:30 -07008214 WDI_ControlBlockType* pWDICtx,
8215 WDI_JoinReqParamsType* pwdiJoinParams,
8216 WDI_JoinRspCb wdiJoinRspCb,
8217 void* pUserData
8218)
8219{
8220 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008221 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008222 wpt_uint16 usDataOffset = 0;
8223 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07008224 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07008225
Jeff Johnsone7245742012-09-05 17:12:55 -07008226 tHalJoinReqMsg halJoinReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07008227 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8228
Madan Mohan Koyyalamudi35287862012-10-22 14:52:46 -07008229 wpalMutexAcquire(&pWDICtx->wptMutex);
8230
Jeff Johnson295189b2012-06-20 16:38:30 -07008231 /*------------------------------------------------------------------------
8232 Check to see if we have any session with this BSSID already stored, we
8233 should not
8234 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008235 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
8236 pwdiJoinParams->wdiReqInfo.macBSSID,
8237 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07008238
8239 if ( NULL != pBSSSes )
8240 {
8241 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi35287862012-10-22 14:52:46 -07008242 "Association for this BSSID: " MAC_ADDRESS_STR " is already in place",
8243 MAC_ADDR_ARRAY(pwdiJoinParams->wdiReqInfo.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07008244
Madan Mohan Koyyalamudi35287862012-10-22 14:52:46 -07008245 /*reset the bAssociationInProgress otherwise the next
8246 *join request will be queued*/
8247 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
8248 wpalMutexRelease(&pWDICtx->wptMutex);
8249 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008250 }
8251
Jeff Johnson295189b2012-06-20 16:38:30 -07008252 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008253 Fetch an empty session block
Jeff Johnson295189b2012-06-20 16:38:30 -07008254 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008255 ucCurrentBSSSesIdx = WDI_FindEmptySession( pWDICtx, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07008256 if ( NULL == pBSSSes )
8257 {
8258
8259 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
8260 "DAL has no free sessions - cannot run another join");
8261
Madan Mohan Koyyalamudi35287862012-10-22 14:52:46 -07008262 /*reset the bAssociationInProgress otherwise the next
8263 *join request will be queued*/
8264 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008265 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008266 return WDI_STATUS_RES_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008267 }
8268
8269 /*Save BSS Session Info*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008270 pBSSSes->bInUse = eWLAN_PAL_TRUE;
8271 wpalMemoryCopy( pBSSSes->macBSSID, pwdiJoinParams->wdiReqInfo.macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -07008272 WDI_MAC_ADDR_LEN);
8273
8274 /*Transition to state Joining*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008275 pBSSSes->wdiAssocState = WDI_ASSOC_JOINING_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07008276 pWDICtx->ucCurrentBSSSesIdx = ucCurrentBSSSesIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -07008277
Jeff Johnson295189b2012-06-20 16:38:30 -07008278 wpalMutexRelease(&pWDICtx->wptMutex);
8279
8280 /*-----------------------------------------------------------------------
8281 Get message buffer
8282 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008283 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_JOIN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008284 sizeof(halJoinReqMsg.joinReqParams),
8285 &pSendBuffer, &usDataOffset, &usSendSize))||
8286 ( usSendSize < (usDataOffset + sizeof(halJoinReqMsg.joinReqParams) )))
8287 {
8288 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08008289 "Unable to get send buffer in join req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07008290 pUserData, pwdiJoinParams, wdiJoinRspCb);
8291 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008292 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008293 }
8294
8295 wpalMemoryCopy(halJoinReqMsg.joinReqParams.bssId,
Jeff Johnsone7245742012-09-05 17:12:55 -07008296 pwdiJoinParams->wdiReqInfo.macBSSID, WDI_MAC_ADDR_LEN);
Jeff Johnson295189b2012-06-20 16:38:30 -07008297
8298 wpalMemoryCopy(halJoinReqMsg.joinReqParams.selfStaMacAddr,
Jeff Johnsone7245742012-09-05 17:12:55 -07008299 pwdiJoinParams->wdiReqInfo.macSTASelf,
8300 WDI_MAC_ADDR_LEN);
Jeff Johnson295189b2012-06-20 16:38:30 -07008301
Jeff Johnsone7245742012-09-05 17:12:55 -07008302 halJoinReqMsg.joinReqParams.ucChannel =
Jeff Johnson295189b2012-06-20 16:38:30 -07008303 pwdiJoinParams->wdiReqInfo.wdiChannelInfo.ucChannel;
8304
8305 halJoinReqMsg.joinReqParams.linkState = pwdiJoinParams->wdiReqInfo.linkState;
8306
Madan Mohan Koyyalamudi83b12822012-11-02 12:43:10 -07008307#ifdef WLAN_FEATURE_VOWIFI
8308 halJoinReqMsg.joinReqParams.maxTxPower =
8309 pwdiJoinParams->wdiReqInfo.wdiChannelInfo.cMaxTxPower;
8310#else
Jeff Johnsone7245742012-09-05 17:12:55 -07008311 halJoinReqMsg.joinReqParams.ucLocalPowerConstraint =
Jeff Johnson295189b2012-06-20 16:38:30 -07008312 pwdiJoinParams->wdiReqInfo.wdiChannelInfo.ucLocalPowerConstraint;
8313#endif
8314
Jeff Johnsone7245742012-09-05 17:12:55 -07008315 halJoinReqMsg.joinReqParams.secondaryChannelOffset =
Jeff Johnson295189b2012-06-20 16:38:30 -07008316 WDI_2_HAL_SEC_CH_OFFSET(pwdiJoinParams->wdiReqInfo.wdiChannelInfo.
8317 wdiSecondaryChannelOffset);
8318
Jeff Johnsone7245742012-09-05 17:12:55 -07008319 wpalMemoryCopy( pSendBuffer+usDataOffset,
8320 &halJoinReqMsg.joinReqParams,
8321 sizeof(halJoinReqMsg.joinReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008322
8323 pWDICtx->wdiReqStatusCB = pwdiJoinParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008324 pWDICtx->pReqStatusUserData = pwdiJoinParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008325
8326 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008327 Send Join Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008328 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008329 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
8330 wdiJoinRspCb, pUserData, WDI_JOIN_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07008331
8332}/*WDI_ProcessBSSSessionJoinReq*/
8333
8334/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008335 @brief Process Join Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07008336 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008337
8338 @param pWDICtx: pointer to the WLAN DAL context
8339 pEventData: pointer to the event information structure
8340
Jeff Johnson295189b2012-06-20 16:38:30 -07008341 @see
8342 @return Result of the function call
8343*/
8344WDI_Status
8345WDI_ProcessJoinReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008346(
Jeff Johnson295189b2012-06-20 16:38:30 -07008347 WDI_ControlBlockType* pWDICtx,
8348 WDI_EventInfoType* pEventData
8349)
8350{
8351 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
8352 WDI_JoinReqParamsType* pwdiJoinParams = NULL;
8353 WDI_JoinRspCb wdiJoinRspCb = NULL;
8354 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8355
8356 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008357 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008358 -------------------------------------------------------------------------*/
8359 if (( NULL == pEventData ) ||
8360 ( NULL == (pwdiJoinParams = (WDI_JoinReqParamsType*)pEventData->pEventData)) ||
8361 ( NULL == (wdiJoinRspCb = (WDI_JoinRspCb)pEventData->pCBfnc)))
8362 {
8363 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008364 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008365 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008366 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008367 }
Jeff Johnsone7245742012-09-05 17:12:55 -07008368
Jeff Johnson295189b2012-06-20 16:38:30 -07008369 /*-------------------------------------------------------------------------
8370 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07008371 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07008372 -------------------------------------------------------------------------*/
8373 wpalMutexAcquire(&pWDICtx->wptMutex);
8374
8375 if ( eWLAN_PAL_FALSE != pWDICtx->bAssociationInProgress )
8376 {
8377 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8378 "Association is currently in progress, queueing new join req");
8379
8380 /*Association is in progress - queue current one*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008381 wdiStatus = WDI_QueueNewAssocRequest(pWDICtx, pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -07008382 pwdiJoinParams->wdiReqInfo.macBSSID);
8383
8384 wpalMutexRelease(&pWDICtx->wptMutex);
8385
Jeff Johnsone7245742012-09-05 17:12:55 -07008386 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07008387 }
8388
8389 /*Starting a new association */
8390 pWDICtx->bAssociationInProgress = eWLAN_PAL_TRUE;
8391 wpalMutexRelease(&pWDICtx->wptMutex);
8392
8393 /*Process the Join Request*/
8394 return WDI_ProcessBSSSessionJoinReq( pWDICtx, pwdiJoinParams,
8395 wdiJoinRspCb,pEventData->pUserData);
8396
8397}/*WDI_ProcessJoinReq*/
8398
8399
8400/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008401 @brief Process Config BSS Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -07008402 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008403
8404 @param pWDICtx: pointer to the WLAN DAL context
8405 pEventData: pointer to the event information structure
8406
Jeff Johnson295189b2012-06-20 16:38:30 -07008407 @see
8408 @return Result of the function call
8409*/
8410WDI_Status
8411WDI_ProcessConfigBSSReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008412(
Jeff Johnson295189b2012-06-20 16:38:30 -07008413 WDI_ControlBlockType* pWDICtx,
8414 WDI_EventInfoType* pEventData
8415)
8416{
8417 WDI_ConfigBSSReqParamsType* pwdiConfigBSSParams;
8418 WDI_ConfigBSSRspCb wdiConfigBSSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07008419 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07008420 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008421 wpt_uint16 uMsgSize = 0;
8422 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008423 wpt_uint16 usDataOffset = 0;
8424 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07008425 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07008426
Jeff Johnsone7245742012-09-05 17:12:55 -07008427 tConfigBssReqMsg halConfigBssReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07008428 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8429
8430 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008431 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008432 -------------------------------------------------------------------------*/
8433 if (( NULL == pEventData ) ||
8434 ( NULL == pEventData->pEventData ) ||
8435 ( NULL == pEventData->pCBfnc ))
8436 {
8437 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008438 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008439 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008440 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008441 }
8442
Abhishek Singh6927fa02014-06-27 17:19:55 +05308443 wpalMemoryZero(&halConfigBssReqMsg, sizeof(tConfigBssReqMsg));
Jeff Johnson295189b2012-06-20 16:38:30 -07008444 pwdiConfigBSSParams = (WDI_ConfigBSSReqParamsType*)pEventData->pEventData;
8445 wdiConfigBSSRspCb = (WDI_ConfigBSSRspCb)pEventData->pCBfnc;
8446 /*-------------------------------------------------------------------------
8447 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07008448 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07008449 -------------------------------------------------------------------------*/
8450 wpalMutexAcquire(&pWDICtx->wptMutex);
8451
8452 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008453 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07008454 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008455 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
8456 pwdiConfigBSSParams->wdiReqInfo.macBSSID,
8457 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07008458
Jeff Johnsone7245742012-09-05 17:12:55 -07008459 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07008460 {
8461#ifdef WLAN_FEATURE_VOWIFI_11R
8462 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008463 Fetch an empty session block
Jeff Johnson295189b2012-06-20 16:38:30 -07008464 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008465 ucCurrentBSSSesIdx = WDI_FindEmptySession( pWDICtx, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07008466 if ( NULL == pBSSSes )
8467 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008468
Jeff Johnson295189b2012-06-20 16:38:30 -07008469 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
8470 "DAL has no free sessions - cannot run another join");
Jeff Johnsone7245742012-09-05 17:12:55 -07008471
Jeff Johnson295189b2012-06-20 16:38:30 -07008472 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008473 return WDI_STATUS_RES_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008474 }
Jeff Johnsone7245742012-09-05 17:12:55 -07008475
Jeff Johnson295189b2012-06-20 16:38:30 -07008476 /*Save BSS Session Info*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008477 pBSSSes->bInUse = eWLAN_PAL_TRUE;
8478 wpalMemoryCopy( pBSSSes->macBSSID, pwdiConfigBSSParams->wdiReqInfo.macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -07008479 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -07008480
Jeff Johnson295189b2012-06-20 16:38:30 -07008481 /*Transition to state Joining*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008482 pBSSSes->wdiAssocState = WDI_ASSOC_JOINING_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07008483 pWDICtx->ucCurrentBSSSesIdx = ucCurrentBSSSesIdx;
8484#else
Jeff Johnsone7245742012-09-05 17:12:55 -07008485 /* If the BSS type is IBSS create the session here as there is no Join
Jeff Johnson295189b2012-06-20 16:38:30 -07008486 * Request in case of IBSS*/
8487 if((pwdiConfigBSSParams->wdiReqInfo.wdiBSSType == WDI_IBSS_MODE) ||
8488 (pwdiConfigBSSParams->wdiReqInfo.wdiBSSType == WDI_INFRA_AP_MODE) ||
8489 (pwdiConfigBSSParams->wdiReqInfo.wdiBSSType == WDI_BTAMP_AP_MODE) ||
8490 (pwdiConfigBSSParams->wdiReqInfo.wdiBSSType == WDI_BTAMP_STA_MODE))
8491 {
8492 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008493 Fetch an empty session block
Jeff Johnson295189b2012-06-20 16:38:30 -07008494 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008495 ucCurrentBSSSesIdx = WDI_FindEmptySession( pWDICtx, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07008496 if ( NULL == pBSSSes )
8497 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008498
Jeff Johnson295189b2012-06-20 16:38:30 -07008499 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
8500 "DAL has no free sessions - cannot run another join");
Jeff Johnsone7245742012-09-05 17:12:55 -07008501
Jeff Johnson295189b2012-06-20 16:38:30 -07008502 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008503 return WDI_STATUS_RES_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008504 }
Jeff Johnsone7245742012-09-05 17:12:55 -07008505
Jeff Johnson295189b2012-06-20 16:38:30 -07008506 /*Save BSS Session Info*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008507 pBSSSes->bInUse = eWLAN_PAL_TRUE;
8508 wpalMemoryCopy( pBSSSes->macBSSID, pwdiConfigBSSParams->wdiReqInfo.macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -07008509 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -07008510
Jeff Johnson295189b2012-06-20 16:38:30 -07008511 /*Transition to state Joining*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008512 pBSSSes->wdiAssocState = WDI_ASSOC_JOINING_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07008513 pWDICtx->ucCurrentBSSSesIdx = ucCurrentBSSSesIdx;
8514 }
8515 else
8516 {
8517 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07008518 "%s: Association sequence for this BSS does not yet exist." MAC_ADDRESS_STR "wdiBssType %d",
8519 __func__, MAC_ADDR_ARRAY(pwdiConfigBSSParams->wdiReqInfo.macBSSID),
8520 pwdiConfigBSSParams->wdiReqInfo.wdiBSSType);
8521
Jeff Johnson295189b2012-06-20 16:38:30 -07008522 /* for IBSS testing */
8523 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008524 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008525 }
8526#endif
8527 }
8528
8529 /*------------------------------------------------------------------------
8530 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07008531 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07008532 ------------------------------------------------------------------------*/
8533 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
8534 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008535 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8536 "%s: Association sequence for this BSS exists but currently queued. " MAC_ADDRESS_STR " bssIdx %d",
8537 __func__, MAC_ADDR_ARRAY(pwdiConfigBSSParams->wdiReqInfo.macBSSID),
8538 ucCurrentBSSSesIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07008539
Jeff Johnsone7245742012-09-05 17:12:55 -07008540 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07008541
8542 wpalMutexRelease(&pWDICtx->wptMutex);
8543
Jeff Johnsone7245742012-09-05 17:12:55 -07008544 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07008545 }
8546
8547 /* Cache the request for response processing */
Jeff Johnsone7245742012-09-05 17:12:55 -07008548 wpalMemoryCopy(&pWDICtx->wdiCachedConfigBssReq,
8549 pwdiConfigBSSParams,
Jeff Johnson295189b2012-06-20 16:38:30 -07008550 sizeof(pWDICtx->wdiCachedConfigBssReq));
8551
8552 wpalMutexRelease(&pWDICtx->wptMutex);
8553
Jeff Johnsone7245742012-09-05 17:12:55 -07008554 /* Allocation of BssReqMsg Memory Based on Firmware Capabilities */
8555#ifdef WLAN_FEATURE_11AC
8556 if (WDI_getFwWlanFeatCaps(DOT11AC))
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -07008557 uMsgSize = sizeof(halConfigBssReqMsg.uBssParams.configBssParams_V1); // Version - 1 For 11AC
Jeff Johnsone7245742012-09-05 17:12:55 -07008558 else
8559#endif
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -07008560 uMsgSize = sizeof(halConfigBssReqMsg.uBssParams.configBssParams); // default Version - 0 Structure
Jeff Johnson295189b2012-06-20 16:38:30 -07008561
8562 /*-----------------------------------------------------------------------
8563 Get message buffer
8564 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008565 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_CONFIG_BSS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008566 uMsgSize, &pSendBuffer, &usDataOffset, &usSendSize))||
8567 ( usSendSize < (usDataOffset + uMsgSize )))
8568 {
8569 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08008570 "Unable to get send buffer in config bss req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07008571 pEventData, pwdiConfigBSSParams, wdiConfigBSSRspCb);
8572 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008573 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008574 }
8575
8576 /*Copy the BSS request */
Madan Mohan Koyyalamudia208d102012-10-15 15:18:18 -07008577#ifdef WLAN_FEATURE_11AC
8578 if (WDI_getFwWlanFeatCaps(DOT11AC))
8579 WDI_CopyWDIConfigBSSToHALConfigBSS( (tConfigBssParams*)&halConfigBssReqMsg.uBssParams.configBssParams_V1,
8580 &pwdiConfigBSSParams->wdiReqInfo);
8581 else
8582#endif
Jeff Johnsone7245742012-09-05 17:12:55 -07008583 WDI_CopyWDIConfigBSSToHALConfigBSS( &halConfigBssReqMsg.uBssParams.configBssParams,
Jeff Johnson295189b2012-06-20 16:38:30 -07008584 &pwdiConfigBSSParams->wdiReqInfo);
8585
8586 /* Need to fill in the STA Index to invalid, since at this point we have not
8587 yet received it from HAL */
Jeff Johnsone7245742012-09-05 17:12:55 -07008588 halConfigBssReqMsg.uBssParams.configBssParams.staContext.staIdx = WDI_STA_INVALID_IDX;
Jeff Johnson295189b2012-06-20 16:38:30 -07008589
8590 /* Need to fill in the BSS index */
Jeff Johnsone7245742012-09-05 17:12:55 -07008591 halConfigBssReqMsg.uBssParams.configBssParams.staContext.bssIdx = pBSSSes->ucBSSIdx;
8592
Madan Mohan Koyyalamudif244d8f2012-11-29 11:21:05 -08008593#ifdef WLAN_FEATURE_11AC
8594 if (WDI_getFwWlanFeatCaps(DOT11AC)){
8595 wpalMemoryCopy( pSendBuffer+usDataOffset,
8596 &halConfigBssReqMsg.uBssParams.configBssParams_V1,
8597 uMsgSize);
8598 }else
8599#endif
Tushnim Bhattacharyya5dd94562013-03-20 20:15:03 -07008600 {
8601 if ( uMsgSize <= sizeof(tConfigBssParams) )
8602 {
Tushnim Bhattacharyyaf64c5dc2013-03-21 15:11:31 -07008603 wpalMemoryCopy( pSendBuffer+usDataOffset,
Tushnim Bhattacharyya5dd94562013-03-20 20:15:03 -07008604 &halConfigBssReqMsg.uBssParams.configBssParams,
8605 uMsgSize);
8606 }
8607 else
8608 {
8609 return WDI_STATUS_E_FAILURE;
8610 }
8611 }
Jeff Johnson295189b2012-06-20 16:38:30 -07008612
8613 pWDICtx->wdiReqStatusCB = pwdiConfigBSSParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008614 pWDICtx->pReqStatusUserData = pwdiConfigBSSParams->pUserData;
Vinay Krishna Eranna6f22c1f2014-10-13 16:03:06 +05308615 wpalMemoryZero(&halConfigBssReqMsg, sizeof(halConfigBssReqMsg));
Jeff Johnson295189b2012-06-20 16:38:30 -07008616 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008617 Send Config BSS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008618 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008619 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
8620 wdiConfigBSSRspCb, pEventData->pUserData,
Jeff Johnson295189b2012-06-20 16:38:30 -07008621 WDI_CONFIG_BSS_RESP);
8622
8623}/*WDI_ProcessConfigBSSReq*/
8624
8625
8626/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008627 @brief Process Del BSS Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07008628 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008629
8630 @param pWDICtx: pointer to the WLAN DAL context
8631 pEventData: pointer to the event information structure
8632
Jeff Johnson295189b2012-06-20 16:38:30 -07008633 @see
8634 @return Result of the function call
8635*/
8636WDI_Status
8637WDI_ProcessDelBSSReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008638(
Jeff Johnson295189b2012-06-20 16:38:30 -07008639 WDI_ControlBlockType* pWDICtx,
8640 WDI_EventInfoType* pEventData
8641)
8642{
8643 WDI_DelBSSReqParamsType* pwdiDelBSSParams = NULL;
8644 WDI_DelBSSRspCb wdiDelBSSRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008645 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07008646 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008647 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008648 wpt_uint16 usDataOffset = 0;
8649 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07008650 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07008651
Jeff Johnsone7245742012-09-05 17:12:55 -07008652 tDeleteBssReqMsg halBssReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07008653 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8654
8655 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008656 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008657 -------------------------------------------------------------------------*/
8658 if (( NULL == pEventData ) ||
8659 ( NULL == (pwdiDelBSSParams = (WDI_DelBSSReqParamsType*)pEventData->pEventData)) ||
8660 ( NULL == (wdiDelBSSRspCb = (WDI_DelBSSRspCb)pEventData->pCBfnc)))
8661 {
8662 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008663 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008664 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008665 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008666 }
8667
8668 /*-------------------------------------------------------------------------
8669 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07008670 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07008671 -------------------------------------------------------------------------*/
8672 wpalMutexAcquire(&pWDICtx->wptMutex);
8673
8674 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008675 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07008676 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008677 ucCurrentBSSSesIdx = WDI_FindAssocSessionByBSSIdx( pWDICtx,
8678 pwdiDelBSSParams->ucBssIdx,
8679 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07008680
Jeff Johnsone7245742012-09-05 17:12:55 -07008681 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07008682 {
8683 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07008684 "%s: BSS does not yet exist. ucBssIdx %d",
8685 __func__, pwdiDelBSSParams->ucBssIdx);
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -08008686
8687 wpalMutexRelease(&pWDICtx->wptMutex);
8688
8689 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008690 }
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -08008691
8692 /*------------------------------------------------------------------------
8693 Check if this BSS is being currently processed or queued,
8694 if queued - queue the new request as well
8695 ------------------------------------------------------------------------*/
8696 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
Jeff Johnson295189b2012-06-20 16:38:30 -07008697 {
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -08008698 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8699 "%s: Association sequence for this BSS exists but currently queued. ucBssIdx %d",
8700 __func__, pwdiDelBSSParams->ucBssIdx);
8701
8702 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
8703
8704 wpalMutexRelease(&pWDICtx->wptMutex);
8705
8706 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07008707 }
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -08008708
Jeff Johnson295189b2012-06-20 16:38:30 -07008709 /*-----------------------------------------------------------------------
8710 If we receive a Del BSS request for an association that is already in
8711 progress, it indicates that the assoc has failed => we no longer have
8712 an association in progress => we must check for pending associations
Jeff Johnsone7245742012-09-05 17:12:55 -07008713 that were queued and start as soon as the Del BSS response is received
Jeff Johnson295189b2012-06-20 16:38:30 -07008714 -----------------------------------------------------------------------*/
8715 if ( ucCurrentBSSSesIdx == pWDICtx->ucCurrentBSSSesIdx )
8716 {
8717 /*We can switch to false here because even if a subsequent Join comes in
8718 it will only be processed when DAL transitions out of BUSY state which
8719 happens when the Del BSS request comes */
8720 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
8721
8722 /*Former association is complete - prepare next pending assoc for
8723 processing */
8724 WDI_DequeueAssocRequest(pWDICtx);
8725 }
8726
8727 wpalMutexRelease(&pWDICtx->wptMutex);
8728 /*-----------------------------------------------------------------------
8729 Get message buffer
8730 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008731 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_DEL_BSS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008732 sizeof(halBssReqMsg.deleteBssParams),
8733 &pSendBuffer, &usDataOffset, &usSendSize))||
8734 ( usSendSize < (usDataOffset + sizeof(halBssReqMsg.deleteBssParams) )))
8735 {
8736 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08008737 "Unable to get send buffer in start req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07008738 pEventData, pwdiDelBSSParams, wdiDelBSSRspCb);
8739 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008740 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008741 }
8742
8743 /*Fill in the message request structure*/
8744
8745 /*BSS Index is saved on config BSS response and Post Assoc Response */
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -08008746 halBssReqMsg.deleteBssParams.bssIdx = pBSSSes->ucBSSIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -07008747
Jeff Johnsone7245742012-09-05 17:12:55 -07008748 wpalMemoryCopy( pSendBuffer+usDataOffset,
8749 &halBssReqMsg.deleteBssParams,
8750 sizeof(halBssReqMsg.deleteBssParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008751
8752 pWDICtx->wdiReqStatusCB = pwdiDelBSSParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008753 pWDICtx->pReqStatusUserData = pwdiDelBSSParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008754
Jeff Johnsone7245742012-09-05 17:12:55 -07008755
Jeff Johnson295189b2012-06-20 16:38:30 -07008756 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008757 Send Del BSS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008758 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008759 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07008760 wdiDelBSSRspCb, pEventData->pUserData, WDI_DEL_BSS_RESP);
8761
Jeff Johnsone7245742012-09-05 17:12:55 -07008762
Jeff Johnson295189b2012-06-20 16:38:30 -07008763}/*WDI_ProcessDelBSSReq*/
8764
8765/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008766 @brief Process Post Assoc Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -07008767 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008768
8769 @param pWDICtx: pointer to the WLAN DAL context
8770 pEventData: pointer to the event information structure
8771
Jeff Johnson295189b2012-06-20 16:38:30 -07008772 @see
8773 @return Result of the function call
8774*/
8775WDI_Status
8776WDI_ProcessPostAssocReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008777(
Jeff Johnson295189b2012-06-20 16:38:30 -07008778 WDI_ControlBlockType* pWDICtx,
8779 WDI_EventInfoType* pEventData
8780)
8781{
8782 WDI_PostAssocReqParamsType* pwdiPostAssocParams = NULL;
8783 WDI_PostAssocRspCb wdiPostAssocRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008784 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07008785 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008786 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008787 wpt_uint16 usDataOffset = 0;
8788 wpt_uint16 usSendSize = 0;
8789 wpt_uint16 uMsgSize = 0;
8790 wpt_uint16 uOffset = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07008791 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07008792
Jeff Johnsone7245742012-09-05 17:12:55 -07008793 tPostAssocReqMsg halPostAssocReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07008794 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8795
8796 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008797 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008798 -------------------------------------------------------------------------*/
8799 if (( NULL == pEventData ) ||
8800 ( NULL == (pwdiPostAssocParams = (WDI_PostAssocReqParamsType*)pEventData->pEventData)) ||
8801 ( NULL == (wdiPostAssocRspCb = (WDI_PostAssocRspCb)pEventData->pCBfnc)))
8802 {
8803 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008804 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008805 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008806 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008807 }
8808
8809 /*-------------------------------------------------------------------------
8810 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07008811 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07008812 -------------------------------------------------------------------------*/
8813 wpalMutexAcquire(&pWDICtx->wptMutex);
8814
8815 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008816 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07008817 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008818 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
8819 pwdiPostAssocParams->wdiBSSParams.macBSSID,
8820 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07008821
8822 if ( NULL == pBSSSes )
8823 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008824 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
8825 "%s: Association sequence for this BSS does not yet exist - "
8826 "operation not allowed. macBSSID " MAC_ADDRESS_STR,
8827 __func__, MAC_ADDR_ARRAY(pwdiPostAssocParams->wdiBSSParams.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07008828
8829 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008830 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008831 }
8832
8833 /*------------------------------------------------------------------------
8834 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07008835 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07008836 ------------------------------------------------------------------------*/
8837 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
8838 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008839 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8840 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
8841 __func__, MAC_ADDR_ARRAY(pwdiPostAssocParams->wdiBSSParams.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07008842
Jeff Johnsone7245742012-09-05 17:12:55 -07008843 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07008844
8845 wpalMutexRelease(&pWDICtx->wptMutex);
8846
Jeff Johnsone7245742012-09-05 17:12:55 -07008847 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07008848 }
8849
8850 /*-----------------------------------------------------------------------
8851 If Post Assoc was not yet received - the current association must
8852 be in progress
8853 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008854 if (( ucCurrentBSSSesIdx != pWDICtx->ucCurrentBSSSesIdx ) ||
Jeff Johnson295189b2012-06-20 16:38:30 -07008855 ( eWLAN_PAL_FALSE == pWDICtx->bAssociationInProgress ))
8856 {
8857 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
8858 "Association sequence for this BSS association no longer in "
8859 "progress - not allowed");
8860
8861 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008862 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008863 }
8864
8865 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008866 Post Assoc Request is only allowed in Joining state
Jeff Johnson295189b2012-06-20 16:38:30 -07008867 -----------------------------------------------------------------------*/
8868 if ( WDI_ASSOC_JOINING_ST != pBSSSes->wdiAssocState)
8869 {
8870 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
8871 "Post Assoc not allowed before JOIN - failing request");
8872
8873 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008874 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008875 }
8876
8877 wpalMutexRelease(&pWDICtx->wptMutex);
8878
8879 uMsgSize = sizeof(halPostAssocReqMsg.postAssocReqParams.configStaParams) +
8880 sizeof(halPostAssocReqMsg.postAssocReqParams.configBssParams) ;
8881 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008882 Fill message for tx over the bus
Jeff Johnson295189b2012-06-20 16:38:30 -07008883 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008884 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_POST_ASSOC_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008885 uMsgSize,&pSendBuffer, &usDataOffset, &usSendSize))||
8886 ( usSendSize < (usDataOffset + uMsgSize )))
8887 {
8888 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08008889 "Unable to get send buffer in start req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07008890 pEventData, pwdiPostAssocParams, wdiPostAssocRspCb);
8891 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008892 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008893 }
8894
8895 /*Copy the STA parameters */
8896 WDI_CopyWDIStaCtxToHALStaCtx(&halPostAssocReqMsg.postAssocReqParams.configStaParams,
8897 &pwdiPostAssocParams->wdiSTAParams );
8898
8899 /* Need to fill in the self STA Index */
Jeff Johnsone7245742012-09-05 17:12:55 -07008900 if ( WDI_STATUS_SUCCESS !=
Jeff Johnson295189b2012-06-20 16:38:30 -07008901 WDI_STATableFindStaidByAddr(pWDICtx,
8902 pwdiPostAssocParams->wdiSTAParams.macSTA,
8903 (wpt_uint8*)&halPostAssocReqMsg.postAssocReqParams.configStaParams.staIdx ))
8904 {
8905 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08008906 MAC_ADDRESS_STR
8907 ": This station does not exist in the WDI Station Table",
8908 MAC_ADDR_ARRAY(pwdiPostAssocParams->wdiSTAParams.macSTA));
Jeff Johnson295189b2012-06-20 16:38:30 -07008909 wpalMutexRelease(&pWDICtx->wptMutex);
Madan Mohan Koyyalamudif244d8f2012-11-29 11:21:05 -08008910 wpalMemoryFree(pSendBuffer);
Jeff Johnsone7245742012-09-05 17:12:55 -07008911 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008912 }
8913
8914 /* Need to fill in the BSS index */
Jeff Johnsone7245742012-09-05 17:12:55 -07008915 halPostAssocReqMsg.postAssocReqParams.configStaParams.bssIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -07008916 pBSSSes->ucBSSIdx;
8917
8918 /*Copy the BSS parameters */
8919 WDI_CopyWDIConfigBSSToHALConfigBSS( &halPostAssocReqMsg.postAssocReqParams.configBssParams,
8920 &pwdiPostAssocParams->wdiBSSParams);
8921
8922 /* Need to fill in the STA index of the peer */
Jeff Johnsone7245742012-09-05 17:12:55 -07008923 if ( WDI_STATUS_SUCCESS !=
Jeff Johnson295189b2012-06-20 16:38:30 -07008924 WDI_STATableFindStaidByAddr(pWDICtx,
8925 pwdiPostAssocParams->wdiBSSParams.wdiSTAContext.macSTA,
Jeff Johnsone7245742012-09-05 17:12:55 -07008926 (wpt_uint8*)&halPostAssocReqMsg.postAssocReqParams.configBssParams.staContext.staIdx))
Jeff Johnson295189b2012-06-20 16:38:30 -07008927 {
8928 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08008929 MAC_ADDRESS_STR
8930 ": This station does not exist in the WDI Station Table",
8931 MAC_ADDR_ARRAY(pwdiPostAssocParams->wdiBSSParams.wdiSTAContext.macSTA));
Jeff Johnson295189b2012-06-20 16:38:30 -07008932 wpalMutexRelease(&pWDICtx->wptMutex);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -08008933 wpalMemoryFree(pSendBuffer);
Jeff Johnsone7245742012-09-05 17:12:55 -07008934 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008935 }
8936
8937 /* Need to fill in the BSS index */
Jeff Johnsone7245742012-09-05 17:12:55 -07008938 halPostAssocReqMsg.postAssocReqParams.configStaParams.bssIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -07008939 pBSSSes->ucBSSIdx;
8940
Jeff Johnsone7245742012-09-05 17:12:55 -07008941
8942 wpalMemoryCopy( pSendBuffer+usDataOffset,
8943 &halPostAssocReqMsg.postAssocReqParams.configStaParams,
8944 sizeof(halPostAssocReqMsg.postAssocReqParams.configStaParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008945
8946 uOffset = sizeof(halPostAssocReqMsg.postAssocReqParams.configStaParams);
8947
Jeff Johnsone7245742012-09-05 17:12:55 -07008948 wpalMemoryCopy( pSendBuffer+usDataOffset + uOffset,
8949 &halPostAssocReqMsg.postAssocReqParams.configBssParams,
8950 sizeof(halPostAssocReqMsg.postAssocReqParams.configBssParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008951
Jeff Johnsone7245742012-09-05 17:12:55 -07008952
Jeff Johnson295189b2012-06-20 16:38:30 -07008953 pWDICtx->wdiReqStatusCB = pwdiPostAssocParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008954 pWDICtx->pReqStatusUserData = pwdiPostAssocParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008955
Jeff Johnsone7245742012-09-05 17:12:55 -07008956
8957 wpalMemoryCopy( &pWDICtx->wdiCachedPostAssocReq,
Jeff Johnson295189b2012-06-20 16:38:30 -07008958 pwdiPostAssocParams,
Jeff Johnsone7245742012-09-05 17:12:55 -07008959 sizeof(pWDICtx->wdiCachedPostAssocReq));
Jeff Johnson295189b2012-06-20 16:38:30 -07008960
Vinay Krishna Eranna6f22c1f2014-10-13 16:03:06 +05308961 wpalMemoryZero(&halPostAssocReqMsg, sizeof(halPostAssocReqMsg));
Jeff Johnson295189b2012-06-20 16:38:30 -07008962 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008963 Send Post Assoc Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008964 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008965 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07008966 wdiPostAssocRspCb, pEventData->pUserData, WDI_POST_ASSOC_RESP);
8967
Jeff Johnsone7245742012-09-05 17:12:55 -07008968
Jeff Johnson295189b2012-06-20 16:38:30 -07008969}/*WDI_ProcessPostAssocReq*/
8970
8971/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008972 @brief Process Del STA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07008973 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008974
8975 @param pWDICtx: pointer to the WLAN DAL context
8976 pEventData: pointer to the event information structure
8977
Jeff Johnson295189b2012-06-20 16:38:30 -07008978 @see
8979 @return Result of the function call
8980*/
8981WDI_Status
8982WDI_ProcessDelSTAReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008983(
Jeff Johnson295189b2012-06-20 16:38:30 -07008984 WDI_ControlBlockType* pWDICtx,
8985 WDI_EventInfoType* pEventData
8986)
8987{
8988 WDI_DelSTAReqParamsType* pwdiDelSTAParams;
8989 WDI_DelSTARspCb wdiDelSTARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07008990 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07008991 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008992 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008993 wpt_uint16 usDataOffset = 0;
8994 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07008995 wpt_macAddr macBSSID;
Jeff Johnson295189b2012-06-20 16:38:30 -07008996 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
8997
Jeff Johnsone7245742012-09-05 17:12:55 -07008998 tDeleteStaReqMsg halDelStaReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07008999 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9000
9001 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009002 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009003 -------------------------------------------------------------------------*/
9004 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9005 ( NULL == pEventData->pCBfnc ))
9006 {
9007 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009008 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009009 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009010 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009011 }
9012
9013 pwdiDelSTAParams = (WDI_DelSTAReqParamsType*)pEventData->pEventData;
9014 wdiDelSTARspCb = (WDI_DelSTARspCb)pEventData->pCBfnc;
9015 /*-------------------------------------------------------------------------
9016 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009017 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009018 -------------------------------------------------------------------------*/
9019 wpalMutexAcquire(&pWDICtx->wptMutex);
9020
9021 /*------------------------------------------------------------------------
9022 Find the BSS for which the request is made and identify WDI session
9023 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009024 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
9025 pwdiDelSTAParams->ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07009026 &macBSSID))
9027 {
9028 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009029 "This station does not exist in the WDI Station Table %d",
9030 pwdiDelSTAParams->ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07009031 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009032 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009033 }
9034
Jeff Johnsone7245742012-09-05 17:12:55 -07009035 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
9036 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009037 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009038 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
9039 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
9040 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009041
9042 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009043 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009044 }
9045
9046 /*------------------------------------------------------------------------
9047 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009048 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009049 ------------------------------------------------------------------------*/
9050 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9051 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009052 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9053 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
9054 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009055
Jeff Johnsone7245742012-09-05 17:12:55 -07009056 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009057 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009058 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009059 }
9060
9061 wpalMutexRelease(&pWDICtx->wptMutex);
9062 /*-----------------------------------------------------------------------
9063 Get message buffer
9064 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009065 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_DEL_STA_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009066 sizeof(halDelStaReqMsg.delStaParams),
9067 &pSendBuffer, &usDataOffset, &usSendSize))||
9068 ( usSendSize < (usDataOffset + sizeof(halDelStaReqMsg.delStaParams) )))
9069 {
9070 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009071 "Unable to get send buffer in start req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07009072 pEventData, pwdiDelSTAParams, wdiDelSTARspCb);
9073 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009074 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009075 }
9076
Jeff Johnsone7245742012-09-05 17:12:55 -07009077 halDelStaReqMsg.delStaParams.staIdx = pwdiDelSTAParams->ucSTAIdx;
9078 wpalMemoryCopy( pSendBuffer+usDataOffset,
9079 &halDelStaReqMsg.delStaParams,
9080 sizeof(halDelStaReqMsg.delStaParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07009081
9082 pWDICtx->wdiReqStatusCB = pwdiDelSTAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009083 pWDICtx->pReqStatusUserData = pwdiDelSTAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009084
9085 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009086 Send Del STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009087 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009088 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07009089 wdiDelSTARspCb, pEventData->pUserData, WDI_DEL_STA_RESP);
9090
9091}/*WDI_ProcessDelSTAReq*/
9092
9093
9094/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -07009095 SECURITY REQUEST PROCESSING API
Jeff Johnson295189b2012-06-20 16:38:30 -07009096==========================================================================*/
9097/**
9098 @brief Process Set BSS Key Request function (called when Main FSM
9099 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009100
9101 @param pWDICtx: pointer to the WLAN DAL context
9102 pEventData: pointer to the event information structure
9103
Jeff Johnson295189b2012-06-20 16:38:30 -07009104 @see
9105 @return Result of the function call
9106*/
9107WDI_Status
9108WDI_ProcessSetBssKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009109(
Jeff Johnson295189b2012-06-20 16:38:30 -07009110 WDI_ControlBlockType* pWDICtx,
9111 WDI_EventInfoType* pEventData
9112)
9113{
9114 WDI_SetBSSKeyReqParamsType* pwdiSetBSSKeyParams;
9115 WDI_SetBSSKeyRspCb wdiSetBSSKeyRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07009116 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07009117 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009118 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009119 wpt_uint16 usDataOffset = 0;
9120 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009121 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07009122 tSetBssKeyReqMsg halSetBssKeyReqMsg = {{0}};
9123 wpt_uint8 keyIndex = 0;
Srinivas Dasari9b57b112014-11-27 12:25:23 +05309124 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -07009125
9126 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9127
9128 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009129 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009130 -------------------------------------------------------------------------*/
9131 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9132 ( NULL == pEventData->pCBfnc ))
9133 {
9134 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009135 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009136 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009137 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009138 }
9139
9140 pwdiSetBSSKeyParams = (WDI_SetBSSKeyReqParamsType*)pEventData->pEventData;
9141 wdiSetBSSKeyRspCb = (WDI_SetBSSKeyRspCb)pEventData->pCBfnc;
9142 /*-------------------------------------------------------------------------
9143 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009144 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009145 -------------------------------------------------------------------------*/
9146 wpalMutexAcquire(&pWDICtx->wptMutex);
9147
9148 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009149 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07009150 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009151 ucCurrentBSSSesIdx = WDI_FindAssocSessionByBSSIdx( pWDICtx,
9152 pwdiSetBSSKeyParams->wdiBSSKeyInfo.ucBssIdx,
9153 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07009154
Jeff Johnsone7245742012-09-05 17:12:55 -07009155 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009156 {
9157 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07009158 "%s: Association sequence for this BSS does not yet exist. ucBssIdx %d",
9159 __func__, pwdiSetBSSKeyParams->wdiBSSKeyInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07009160
9161 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009162 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009163 }
9164
9165 /*------------------------------------------------------------------------
9166 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009167 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009168 ------------------------------------------------------------------------*/
9169 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9170 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009171 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9172 "%s: Association sequence for this BSS exists but currently queued. ucBssIdx %d",
9173 __func__, pwdiSetBSSKeyParams->wdiBSSKeyInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07009174
Jeff Johnsone7245742012-09-05 17:12:55 -07009175 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009176 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009177 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009178 }
9179
9180
9181 wpalMutexRelease(&pWDICtx->wptMutex);
9182 /*-----------------------------------------------------------------------
9183 Get message buffer
9184 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009185 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_BSS_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009186 sizeof(halSetBssKeyReqMsg.setBssKeyParams),
9187 &pSendBuffer, &usDataOffset, &usSendSize))||
9188 ( usSendSize < (usDataOffset + sizeof(halSetBssKeyReqMsg.setBssKeyParams) )))
9189 {
9190 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009191 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07009192 pEventData, pwdiSetBSSKeyParams, wdiSetBSSKeyRspCb);
9193 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009194 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009195 }
9196
9197 /*-----------------------------------------------------------------------
9198 Copy the Key parameters into the HAL message
9199 -----------------------------------------------------------------------*/
9200
Jeff Johnsone7245742012-09-05 17:12:55 -07009201 halSetBssKeyReqMsg.setBssKeyParams.bssIdx = ucCurrentBSSSesIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -07009202
Jeff Johnsone7245742012-09-05 17:12:55 -07009203 halSetBssKeyReqMsg.setBssKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -07009204 WDI_2_HAL_ENC_TYPE (pwdiSetBSSKeyParams->wdiBSSKeyInfo.wdiEncType);
9205
Jeff Johnsone7245742012-09-05 17:12:55 -07009206 halSetBssKeyReqMsg.setBssKeyParams.numKeys =
Jeff Johnson295189b2012-06-20 16:38:30 -07009207 pwdiSetBSSKeyParams->wdiBSSKeyInfo.ucNumKeys;
9208
9209 for(keyIndex = 0; keyIndex < pwdiSetBSSKeyParams->wdiBSSKeyInfo.ucNumKeys ;
9210 keyIndex++)
9211 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009212 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -07009213 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].keyId;
9214 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].unicast =
9215 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].unicast;
9216 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].keyDirection =
9217 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].keyDirection;
Srinivas Dasari9b57b112014-11-27 12:25:23 +05309218
9219 if(WDI_getHostWlanFeatCaps(DISA) && WDI_getFwWlanFeatCaps(DISA))
9220 {
9221 for (i = 0; i < WDI_MAX_KEY_RSC_LEN; i++)
9222 {
9223 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].keyRsc[i] =
9224 ~(pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].keyRsc[i]);
9225 }
9226
9227 for (i = 0; i < WDI_MAX_KEY_LENGTH; i++)
9228 {
9229 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].key[i] =
9230 ~(pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].key[i]);
9231 }
9232
9233 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
9234 "%s: Negated Keys", __func__);
9235 }
9236 else
9237 {
9238 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
9239 "%s: No change in Keys", __func__);
9240 wpalMemoryCopy(halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].keyRsc,
Jeff Johnsone7245742012-09-05 17:12:55 -07009241 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].keyRsc,
Jeff Johnson295189b2012-06-20 16:38:30 -07009242 WDI_MAX_KEY_RSC_LEN);
Srinivas Dasari9b57b112014-11-27 12:25:23 +05309243 wpalMemoryCopy(halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].key,
9244 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].key,
9245 WDI_MAX_KEY_LENGTH);
9246 }
Jeff Johnsone7245742012-09-05 17:12:55 -07009247 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].paeRole =
Jeff Johnson295189b2012-06-20 16:38:30 -07009248 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].paeRole;
Jeff Johnsone7245742012-09-05 17:12:55 -07009249 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].keyLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07009250 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].keyLength;
Srinivas Dasari9b57b112014-11-27 12:25:23 +05309251 }
Jeff Johnsone7245742012-09-05 17:12:55 -07009252
9253 wpalMemoryCopy( pSendBuffer+usDataOffset,
9254 &halSetBssKeyReqMsg.setBssKeyParams,
9255 sizeof(halSetBssKeyReqMsg.setBssKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07009256
9257 pWDICtx->wdiReqStatusCB = pwdiSetBSSKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009258 pWDICtx->pReqStatusUserData = pwdiSetBSSKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009259
9260 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009261 Send Set BSS Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009262 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009263 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
9264 wdiSetBSSKeyRspCb, pEventData->pUserData,
9265 WDI_SET_BSS_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009266
9267}/*WDI_ProcessSetBssKeyReq*/
9268
9269/**
Jeff Johnsone7245742012-09-05 17:12:55 -07009270 @brief Process Remove BSS Key Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -07009271 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009272
9273 @param pWDICtx: pointer to the WLAN DAL context
9274 pEventData: pointer to the event information structure
9275
Jeff Johnson295189b2012-06-20 16:38:30 -07009276 @see
9277 @return Result of the function call
9278*/
9279WDI_Status
9280WDI_ProcessRemoveBssKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009281(
Jeff Johnson295189b2012-06-20 16:38:30 -07009282 WDI_ControlBlockType* pWDICtx,
9283 WDI_EventInfoType* pEventData
9284)
9285{
9286 WDI_RemoveBSSKeyReqParamsType* pwdiRemoveBSSKeyParams;
9287 WDI_RemoveBSSKeyRspCb wdiRemoveBSSKeyRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07009288 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07009289 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009290 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009291 wpt_uint16 usDataOffset = 0;
9292 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009293 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07009294 tRemoveBssKeyReqMsg halRemoveBssKeyReqMsg = {{0}};
9295 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9296
9297 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009298 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009299 -------------------------------------------------------------------------*/
9300 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9301 ( NULL == pEventData->pCBfnc ))
9302 {
9303 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009304 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009305 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009306 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009307 }
9308
9309 pwdiRemoveBSSKeyParams = (WDI_RemoveBSSKeyReqParamsType*)pEventData->pEventData;
9310 wdiRemoveBSSKeyRspCb = (WDI_RemoveBSSKeyRspCb)pEventData->pCBfnc;
9311 /*-------------------------------------------------------------------------
9312 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009313 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009314 -------------------------------------------------------------------------*/
9315 wpalMutexAcquire(&pWDICtx->wptMutex);
9316
9317 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009318 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07009319 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009320 ucCurrentBSSSesIdx = WDI_FindAssocSessionByBSSIdx( pWDICtx,
9321 pwdiRemoveBSSKeyParams->wdiKeyInfo.ucBssIdx,
9322 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07009323
Jeff Johnsone7245742012-09-05 17:12:55 -07009324 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009325 {
9326 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07009327 "%s: Association sequence for this BSS does not yet exist. ucBssIdx %d",
9328 __func__, pwdiRemoveBSSKeyParams->wdiKeyInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07009329
9330 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009331 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009332 }
9333
9334 /*------------------------------------------------------------------------
9335 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009336 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009337 ------------------------------------------------------------------------*/
9338 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9339 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009340 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9341 "%s: Association sequence for this BSS exists but currently queued. ucBssIdx %d",
9342 __func__, pwdiRemoveBSSKeyParams->wdiKeyInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07009343
Jeff Johnsone7245742012-09-05 17:12:55 -07009344 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009345 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009346 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009347 }
9348
9349
9350 wpalMutexRelease(&pWDICtx->wptMutex);
9351
9352 /*-----------------------------------------------------------------------
9353 Get message buffer
9354 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009355 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_RMV_BSS_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009356 sizeof(halRemoveBssKeyReqMsg.removeBssKeyParams),
9357 &pSendBuffer, &usDataOffset, &usSendSize))||
9358 ( usSendSize < (usDataOffset + sizeof(halRemoveBssKeyReqMsg.removeBssKeyParams) )))
9359 {
9360 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009361 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07009362 pEventData, pwdiRemoveBSSKeyParams, wdiRemoveBSSKeyRspCb);
9363 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009364 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009365 }
9366 /*-----------------------------------------------------------------------
9367 Copy the Key parameters into the HAL message
9368 -----------------------------------------------------------------------*/
9369 halRemoveBssKeyReqMsg.removeBssKeyParams.bssIdx = ucCurrentBSSSesIdx;
9370
Jeff Johnsone7245742012-09-05 17:12:55 -07009371 halRemoveBssKeyReqMsg.removeBssKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -07009372 WDI_2_HAL_ENC_TYPE (pwdiRemoveBSSKeyParams->wdiKeyInfo.wdiEncType);
9373
9374 halRemoveBssKeyReqMsg.removeBssKeyParams.keyId = pwdiRemoveBSSKeyParams->wdiKeyInfo.ucKeyId;
9375
Jeff Johnsone7245742012-09-05 17:12:55 -07009376 halRemoveBssKeyReqMsg.removeBssKeyParams.wepType =
Jeff Johnson295189b2012-06-20 16:38:30 -07009377 WDI_2_HAL_WEP_TYPE(pwdiRemoveBSSKeyParams->wdiKeyInfo.wdiWEPType);
9378
Jeff Johnsone7245742012-09-05 17:12:55 -07009379 wpalMemoryCopy( pSendBuffer+usDataOffset,
9380 &halRemoveBssKeyReqMsg.removeBssKeyParams,
9381 sizeof(halRemoveBssKeyReqMsg.removeBssKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07009382
9383 pWDICtx->wdiReqStatusCB = pwdiRemoveBSSKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009384 pWDICtx->pReqStatusUserData = pwdiRemoveBSSKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009385
9386 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009387 Send Remove BSS Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009388 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009389 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07009390 wdiRemoveBSSKeyRspCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -07009391 WDI_RMV_BSS_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009392}/*WDI_ProcessRemoveBssKeyReq*/
9393
9394/**
Jeff Johnsone7245742012-09-05 17:12:55 -07009395 @brief Process Set STA KeyRequest function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07009396 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009397
9398 @param pWDICtx: pointer to the WLAN DAL context
9399 pEventData: pointer to the event information structure
9400
Jeff Johnson295189b2012-06-20 16:38:30 -07009401 @see
9402 @return Result of the function call
9403*/
9404WDI_Status
9405WDI_ProcessSetStaKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009406(
Jeff Johnson295189b2012-06-20 16:38:30 -07009407 WDI_ControlBlockType* pWDICtx,
9408 WDI_EventInfoType* pEventData
9409)
9410{
9411 WDI_SetSTAKeyReqParamsType* pwdiSetSTAKeyParams;
9412 WDI_SetSTAKeyRspCb wdiSetSTAKeyRspCb;
9413 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009414 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009415 wpt_uint16 usDataOffset = 0;
9416 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009417 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07009418 wpt_macAddr macBSSID;
Jeff Johnsone7245742012-09-05 17:12:55 -07009419 wpt_uint8 ucCurrentBSSSesIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -07009420 tSetStaKeyReqMsg halSetStaKeyReqMsg = {{0}};
9421 wpt_uint8 keyIndex = 0;
Srinivas Dasari9b57b112014-11-27 12:25:23 +05309422 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -07009423
9424 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9425
9426 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009427 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009428 -------------------------------------------------------------------------*/
9429 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9430 ( NULL == pEventData->pCBfnc ))
9431 {
9432 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009433 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009434 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009435 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009436 }
9437
9438 pwdiSetSTAKeyParams = (WDI_SetSTAKeyReqParamsType*)pEventData->pEventData;
9439 wdiSetSTAKeyRspCb = (WDI_SetSTAKeyRspCb)pEventData->pCBfnc;
9440 /*-------------------------------------------------------------------------
9441 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009442 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009443 -------------------------------------------------------------------------*/
9444 wpalMutexAcquire(&pWDICtx->wptMutex);
9445
9446 /*------------------------------------------------------------------------
9447 Find the BSS for which the request is made and identify WDI session
9448 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009449 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
9450 pwdiSetSTAKeyParams->wdiKeyInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07009451 &macBSSID))
9452 {
9453 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009454 "This station does not exist in the WDI Station Table %d",
9455 pwdiSetSTAKeyParams->wdiKeyInfo.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07009456 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009457 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009458 }
9459
Jeff Johnsone7245742012-09-05 17:12:55 -07009460 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
9461 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009462 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009463 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
9464 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
9465 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009466
9467 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009468 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009469 }
Jeff Johnsone7245742012-09-05 17:12:55 -07009470
Jeff Johnson295189b2012-06-20 16:38:30 -07009471 /*------------------------------------------------------------------------
9472 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009473 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009474 ------------------------------------------------------------------------*/
9475 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9476 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009477 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9478 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
9479 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009480
Jeff Johnsone7245742012-09-05 17:12:55 -07009481 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009482 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009483 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009484 }
9485
9486
9487 wpalMutexRelease(&pWDICtx->wptMutex);
9488 /*-----------------------------------------------------------------------
9489 Get message buffer
9490 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009491 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_STA_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009492 sizeof(halSetStaKeyReqMsg.setStaKeyParams),
9493 &pSendBuffer, &usDataOffset, &usSendSize))||
9494 ( usSendSize < (usDataOffset + sizeof(halSetStaKeyReqMsg.setStaKeyParams) )))
9495 {
9496 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009497 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07009498 pEventData, pwdiSetSTAKeyParams, wdiSetSTAKeyRspCb);
9499 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009500 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009501 }
9502 /*-----------------------------------------------------------------------
9503 Copy the STA Key parameters into the HAL message
9504 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009505 halSetStaKeyReqMsg.setStaKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -07009506 WDI_2_HAL_ENC_TYPE (pwdiSetSTAKeyParams->wdiKeyInfo.wdiEncType);
9507
Jeff Johnsone7245742012-09-05 17:12:55 -07009508 halSetStaKeyReqMsg.setStaKeyParams.wepType =
Jeff Johnson295189b2012-06-20 16:38:30 -07009509 WDI_2_HAL_WEP_TYPE (pwdiSetSTAKeyParams->wdiKeyInfo.wdiWEPType );
9510
9511 halSetStaKeyReqMsg.setStaKeyParams.staIdx = pwdiSetSTAKeyParams->wdiKeyInfo.ucSTAIdx;
9512
9513 halSetStaKeyReqMsg.setStaKeyParams.defWEPIdx = pwdiSetSTAKeyParams->wdiKeyInfo.ucDefWEPIdx;
9514
9515 halSetStaKeyReqMsg.setStaKeyParams.singleTidRc = pwdiSetSTAKeyParams->wdiKeyInfo.ucSingleTidRc;
9516
Jeff Johnson295189b2012-06-20 16:38:30 -07009517 for(keyIndex = 0; keyIndex < pwdiSetSTAKeyParams->wdiKeyInfo.ucNumKeys ;
9518 keyIndex++)
9519 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009520 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -07009521 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyId;
9522 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].unicast =
9523 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].unicast;
9524 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyDirection =
9525 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyDirection;
Srinivas Dasari9b57b112014-11-27 12:25:23 +05309526
9527 if(WDI_getHostWlanFeatCaps(DISA) && WDI_getFwWlanFeatCaps(DISA))
9528 {
9529 for (i = 0; i < WDI_MAX_KEY_RSC_LEN; i++)
9530 {
9531 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyRsc[i] =
9532 ~(pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyRsc[i]);
9533 }
9534
9535 for (i = 0; i< WDI_MAX_KEY_LENGTH; i++)
9536 {
9537 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].key[i] =
9538 ~(pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].key[i]);
9539 }
9540
9541 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
9542 "%s: Negated Keys", __func__);
9543 }
9544 else
9545 {
9546 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
9547 "%s: No change in Keys", __func__);
9548 wpalMemoryCopy(halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyRsc,
Jeff Johnsone7245742012-09-05 17:12:55 -07009549 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyRsc,
Jeff Johnson295189b2012-06-20 16:38:30 -07009550 WDI_MAX_KEY_RSC_LEN);
Srinivas Dasari9b57b112014-11-27 12:25:23 +05309551 wpalMemoryCopy(halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].key,
9552 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].key,
9553 WDI_MAX_KEY_LENGTH);
9554 }
Jeff Johnsone7245742012-09-05 17:12:55 -07009555 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].paeRole =
Jeff Johnson295189b2012-06-20 16:38:30 -07009556 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].paeRole;
Jeff Johnsone7245742012-09-05 17:12:55 -07009557 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07009558 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyLength;
Srinivas Dasari9b57b112014-11-27 12:25:23 +05309559 }
Jeff Johnson295189b2012-06-20 16:38:30 -07009560
Jeff Johnsone7245742012-09-05 17:12:55 -07009561 wpalMemoryCopy( pSendBuffer+usDataOffset,
9562 &halSetStaKeyReqMsg.setStaKeyParams,
9563 sizeof(halSetStaKeyReqMsg.setStaKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07009564
9565 pWDICtx->wdiReqStatusCB = pwdiSetSTAKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009566 pWDICtx->pReqStatusUserData = pwdiSetSTAKeyParams->pUserData;
Vinay Krishna Eranna6f22c1f2014-10-13 16:03:06 +05309567 wpalMemoryZero(&halSetStaKeyReqMsg, sizeof(halSetStaKeyReqMsg));
Jeff Johnson295189b2012-06-20 16:38:30 -07009568 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009569 Send Set STA Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009570 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009571 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
9572 wdiSetSTAKeyRspCb, pEventData->pUserData,
9573 WDI_SET_STA_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009574
9575}/*WDI_ProcessSetSTAKeyReq*/
9576
9577/**
Jeff Johnsone7245742012-09-05 17:12:55 -07009578 @brief Process Remove STA Key Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -07009579 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009580
9581 @param pWDICtx: pointer to the WLAN DAL context
9582 pEventData: pointer to the event information structure
9583
Jeff Johnson295189b2012-06-20 16:38:30 -07009584 @see
9585 @return Result of the function call
9586*/
9587WDI_Status
9588WDI_ProcessRemoveStaKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009589(
Jeff Johnson295189b2012-06-20 16:38:30 -07009590 WDI_ControlBlockType* pWDICtx,
9591 WDI_EventInfoType* pEventData
9592)
9593{
9594 WDI_RemoveSTAKeyReqParamsType* pwdiRemoveSTAKeyParams;
9595 WDI_RemoveSTAKeyRspCb wdiRemoveSTAKeyRspCb;
9596 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009597 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009598 wpt_uint16 usDataOffset = 0;
9599 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009600 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07009601 wpt_macAddr macBSSID;
9602 wpt_uint8 ucCurrentBSSSesIdx;
9603 tRemoveStaKeyReqMsg halRemoveStaKeyReqMsg = {{0}};
9604 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9605
9606 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009607 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009608 -------------------------------------------------------------------------*/
9609 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9610 ( NULL == pEventData->pCBfnc ))
9611 {
9612 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009613 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009614 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009615 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009616 }
9617
9618 pwdiRemoveSTAKeyParams = (WDI_RemoveSTAKeyReqParamsType*)pEventData->pEventData;
9619 wdiRemoveSTAKeyRspCb = (WDI_RemoveSTAKeyRspCb)pEventData->pCBfnc;
9620 /*-------------------------------------------------------------------------
9621 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009622 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009623 -------------------------------------------------------------------------*/
9624 wpalMutexAcquire(&pWDICtx->wptMutex);
9625
9626 /*------------------------------------------------------------------------
9627 Find the BSS for which the request is made and identify WDI session
9628 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009629 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
9630 pwdiRemoveSTAKeyParams->wdiKeyInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07009631 &macBSSID))
9632 {
9633 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009634 "This station does not exist in the WDI Station Table %d",
9635 pwdiRemoveSTAKeyParams->wdiKeyInfo.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07009636 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009637 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009638 }
9639
Jeff Johnsone7245742012-09-05 17:12:55 -07009640 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
9641 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009642 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009643 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
9644 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
9645 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009646
9647 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009648 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009649 }
Jeff Johnsone7245742012-09-05 17:12:55 -07009650
Jeff Johnson295189b2012-06-20 16:38:30 -07009651 /*------------------------------------------------------------------------
9652 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009653 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009654 ------------------------------------------------------------------------*/
9655 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9656 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009657 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9658 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
9659 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009660
Jeff Johnsone7245742012-09-05 17:12:55 -07009661 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009662 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009663 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009664 }
9665
9666
9667
9668 wpalMutexRelease(&pWDICtx->wptMutex);
9669 /*-----------------------------------------------------------------------
9670 Get message buffer
9671 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009672 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_RMV_STA_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009673 sizeof(halRemoveStaKeyReqMsg.removeStaKeyParams),
9674 &pSendBuffer, &usDataOffset, &usSendSize))||
9675 ( usSendSize < (usDataOffset + sizeof(halRemoveStaKeyReqMsg.removeStaKeyParams) )))
9676 {
9677 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009678 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07009679 pEventData, pwdiRemoveSTAKeyParams, wdiRemoveSTAKeyRspCb);
9680 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009681 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009682 }
9683
9684 /*-----------------------------------------------------------------------
9685 Copy the Key parameters into the HAL message
9686 -----------------------------------------------------------------------*/
9687
Jeff Johnsone7245742012-09-05 17:12:55 -07009688 halRemoveStaKeyReqMsg.removeStaKeyParams.staIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -07009689 pwdiRemoveSTAKeyParams->wdiKeyInfo.ucSTAIdx;
9690
Jeff Johnsone7245742012-09-05 17:12:55 -07009691 halRemoveStaKeyReqMsg.removeStaKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -07009692 WDI_2_HAL_ENC_TYPE (pwdiRemoveSTAKeyParams->wdiKeyInfo.wdiEncType);
9693
Jeff Johnsone7245742012-09-05 17:12:55 -07009694 halRemoveStaKeyReqMsg.removeStaKeyParams.keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -07009695 pwdiRemoveSTAKeyParams->wdiKeyInfo.ucKeyId;
9696
Jeff Johnsone7245742012-09-05 17:12:55 -07009697 halRemoveStaKeyReqMsg.removeStaKeyParams.unicast =
Jeff Johnson295189b2012-06-20 16:38:30 -07009698 pwdiRemoveSTAKeyParams->wdiKeyInfo.ucUnicast;
9699
Jeff Johnsone7245742012-09-05 17:12:55 -07009700 wpalMemoryCopy( pSendBuffer+usDataOffset,
9701 &halRemoveStaKeyReqMsg.removeStaKeyParams,
9702 sizeof(halRemoveStaKeyReqMsg.removeStaKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07009703
9704 pWDICtx->wdiReqStatusCB = pwdiRemoveSTAKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009705 pWDICtx->pReqStatusUserData = pwdiRemoveSTAKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009706
9707 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009708 Send Remove STA Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009709 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009710 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07009711 wdiRemoveSTAKeyRspCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -07009712 WDI_RMV_STA_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009713
9714}/*WDI_ProcessRemoveSTAKeyReq*/
9715
9716/**
Jeff Johnsone7245742012-09-05 17:12:55 -07009717 @brief Process Set STA KeyRequest function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07009718 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009719
9720 @param pWDICtx: pointer to the WLAN DAL context
9721 pEventData: pointer to the event information structure
9722
Jeff Johnson295189b2012-06-20 16:38:30 -07009723 @see
9724 @return Result of the function call
9725*/
9726WDI_Status
9727WDI_ProcessSetStaBcastKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009728(
Jeff Johnson295189b2012-06-20 16:38:30 -07009729 WDI_ControlBlockType* pWDICtx,
9730 WDI_EventInfoType* pEventData
9731)
9732{
9733 WDI_SetSTAKeyReqParamsType* pwdiSetSTAKeyParams;
9734 WDI_SetSTAKeyRspCb wdiSetSTAKeyRspCb;
9735 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009736 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009737 wpt_uint16 usDataOffset = 0;
9738 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009739 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07009740 wpt_macAddr macBSSID;
Jeff Johnsone7245742012-09-05 17:12:55 -07009741 wpt_uint8 ucCurrentBSSSesIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -07009742 tSetStaKeyReqMsg halSetStaKeyReqMsg = {{0}};
9743 wpt_uint8 keyIndex = 0;
Srinivas Dasari9b57b112014-11-27 12:25:23 +05309744 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -07009745
9746 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9747
9748 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009749 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009750 -------------------------------------------------------------------------*/
9751 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9752 ( NULL == pEventData->pCBfnc ))
9753 {
9754 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009755 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009756 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009757 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009758 }
9759
9760 pwdiSetSTAKeyParams = (WDI_SetSTAKeyReqParamsType*)pEventData->pEventData;
9761 wdiSetSTAKeyRspCb = (WDI_SetSTAKeyRspCb)pEventData->pCBfnc;
9762 /*-------------------------------------------------------------------------
9763 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009764 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009765 -------------------------------------------------------------------------*/
9766 wpalMutexAcquire(&pWDICtx->wptMutex);
9767
9768 /*------------------------------------------------------------------------
9769 Find the BSS for which the request is made and identify WDI session
9770 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009771 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
9772 pwdiSetSTAKeyParams->wdiKeyInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07009773 &macBSSID))
9774 {
9775 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009776 "This station does not exist in the WDI Station Table %d",
9777 pwdiSetSTAKeyParams->wdiKeyInfo.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07009778 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009779 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009780 }
9781
Jeff Johnsone7245742012-09-05 17:12:55 -07009782 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
9783 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009784 {
9785 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009786 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
Jeff Johnsone7245742012-09-05 17:12:55 -07009787 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009788
9789 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009790 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009791 }
Jeff Johnsone7245742012-09-05 17:12:55 -07009792
Jeff Johnson295189b2012-06-20 16:38:30 -07009793 /*------------------------------------------------------------------------
9794 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009795 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009796 ------------------------------------------------------------------------*/
9797 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9798 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009799 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9800 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
9801 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009802
Jeff Johnsone7245742012-09-05 17:12:55 -07009803 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009804 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009805 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009806 }
9807
9808
9809 wpalMutexRelease(&pWDICtx->wptMutex);
9810 /*-----------------------------------------------------------------------
9811 Get message buffer
9812 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009813 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_STA_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009814 sizeof(halSetStaKeyReqMsg.setStaKeyParams),
9815 &pSendBuffer, &usDataOffset, &usSendSize))||
9816 ( usSendSize < (usDataOffset + sizeof(halSetStaKeyReqMsg.setStaKeyParams) )))
9817 {
9818 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009819 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07009820 pEventData, pwdiSetSTAKeyParams, wdiSetSTAKeyRspCb);
9821 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009822 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009823 }
9824 /*-----------------------------------------------------------------------
9825 Copy the STA Key parameters into the HAL message
9826 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009827 halSetStaKeyReqMsg.setStaKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -07009828 WDI_2_HAL_ENC_TYPE (pwdiSetSTAKeyParams->wdiKeyInfo.wdiEncType);
9829
Jeff Johnsone7245742012-09-05 17:12:55 -07009830 halSetStaKeyReqMsg.setStaKeyParams.wepType =
Jeff Johnson295189b2012-06-20 16:38:30 -07009831 WDI_2_HAL_WEP_TYPE (pwdiSetSTAKeyParams->wdiKeyInfo.wdiWEPType );
9832
9833 halSetStaKeyReqMsg.setStaKeyParams.staIdx = pwdiSetSTAKeyParams->wdiKeyInfo.ucSTAIdx;
9834
9835 halSetStaKeyReqMsg.setStaKeyParams.defWEPIdx = pwdiSetSTAKeyParams->wdiKeyInfo.ucDefWEPIdx;
9836
9837 halSetStaKeyReqMsg.setStaKeyParams.singleTidRc = pwdiSetSTAKeyParams->wdiKeyInfo.ucSingleTidRc;
9838
Jeff Johnson295189b2012-06-20 16:38:30 -07009839 for(keyIndex = 0; keyIndex < pwdiSetSTAKeyParams->wdiKeyInfo.ucNumKeys ;
9840 keyIndex++)
9841 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009842 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -07009843 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyId;
9844 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].unicast =
9845 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].unicast;
9846 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyDirection =
9847 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyDirection;
Srinivas Dasari9b57b112014-11-27 12:25:23 +05309848
9849 if(WDI_getHostWlanFeatCaps(DISA) && WDI_getFwWlanFeatCaps(DISA))
9850 {
9851 for (i = 0; i < WDI_MAX_KEY_RSC_LEN; i++)
9852 {
9853 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyRsc[i] =
9854 ~(pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyRsc[i]);
9855 }
9856
9857 for (i = 0; i< WDI_MAX_KEY_LENGTH; i++)
9858 {
9859 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].key[i] =
9860 ~(pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].key[i]);
9861 }
9862
9863 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
9864 "%s: Negated Keys", __func__);
9865 }
9866 else
9867 {
9868 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
9869 "%s: No change in Keys", __func__);
9870 wpalMemoryCopy(halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyRsc,
Jeff Johnsone7245742012-09-05 17:12:55 -07009871 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyRsc,
Jeff Johnson295189b2012-06-20 16:38:30 -07009872 WDI_MAX_KEY_RSC_LEN);
Srinivas Dasari9b57b112014-11-27 12:25:23 +05309873 wpalMemoryCopy(halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].key,
9874 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].key,
9875 WDI_MAX_KEY_LENGTH);
9876 }
Jeff Johnsone7245742012-09-05 17:12:55 -07009877 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].paeRole =
Jeff Johnson295189b2012-06-20 16:38:30 -07009878 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].paeRole;
Jeff Johnsone7245742012-09-05 17:12:55 -07009879 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07009880 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyLength;
Srinivas Dasari9b57b112014-11-27 12:25:23 +05309881 }
Jeff Johnsone7245742012-09-05 17:12:55 -07009882 wpalMemoryCopy( pSendBuffer+usDataOffset,
9883 &halSetStaKeyReqMsg.setStaKeyParams,
9884 sizeof(halSetStaKeyReqMsg.setStaKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07009885
9886 pWDICtx->wdiReqStatusCB = pwdiSetSTAKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009887 pWDICtx->pReqStatusUserData = pwdiSetSTAKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009888
9889 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009890 Send Set STA Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009891 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009892 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
9893 wdiSetSTAKeyRspCb, pEventData->pUserData,
9894 WDI_SET_STA_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009895
9896}/*WDI_ProcessSetSTABcastKeyReq*/
9897
9898/**
Jeff Johnsone7245742012-09-05 17:12:55 -07009899 @brief Process Remove STA Key Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -07009900 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009901
9902 @param pWDICtx: pointer to the WLAN DAL context
9903 pEventData: pointer to the event information structure
9904
Jeff Johnson295189b2012-06-20 16:38:30 -07009905 @see
9906 @return Result of the function call
9907*/
9908WDI_Status
9909WDI_ProcessRemoveStaBcastKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009910(
Jeff Johnson295189b2012-06-20 16:38:30 -07009911 WDI_ControlBlockType* pWDICtx,
9912 WDI_EventInfoType* pEventData
9913)
9914{
9915 WDI_RemoveSTAKeyReqParamsType* pwdiRemoveSTABcastKeyParams;
9916 WDI_RemoveSTAKeyRspCb wdiRemoveSTAKeyRspCb;
9917 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009918 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009919 wpt_uint16 usDataOffset = 0;
9920 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009921 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07009922 wpt_macAddr macBSSID;
9923 wpt_uint8 ucCurrentBSSSesIdx;
9924 tRemoveStaKeyReqMsg halRemoveStaBcastKeyReqMsg = {{0}};
9925 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9926
9927 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009928 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009929 -------------------------------------------------------------------------*/
9930 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9931 ( NULL == pEventData->pCBfnc ))
9932 {
9933 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009934 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009935 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009936 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009937 }
9938
9939 pwdiRemoveSTABcastKeyParams = (WDI_RemoveSTAKeyReqParamsType*)pEventData->pEventData;
9940 wdiRemoveSTAKeyRspCb = (WDI_RemoveSTAKeyRspCb)pEventData->pCBfnc;
9941 /*-------------------------------------------------------------------------
9942 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009943 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009944 -------------------------------------------------------------------------*/
9945 wpalMutexAcquire(&pWDICtx->wptMutex);
9946
9947 /*------------------------------------------------------------------------
9948 Find the BSS for which the request is made and identify WDI session
9949 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009950 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
9951 pwdiRemoveSTABcastKeyParams->wdiKeyInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07009952 &macBSSID))
9953 {
9954 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009955 "This station does not exist in the WDI Station Table %d",
9956 pwdiRemoveSTABcastKeyParams->wdiKeyInfo.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07009957 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009958 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009959 }
9960
Jeff Johnsone7245742012-09-05 17:12:55 -07009961 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
9962 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009963 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009964 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
9965 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
9966 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009967
9968 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009969 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009970 }
Jeff Johnsone7245742012-09-05 17:12:55 -07009971
Jeff Johnson295189b2012-06-20 16:38:30 -07009972 /*------------------------------------------------------------------------
9973 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009974 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009975 ------------------------------------------------------------------------*/
9976 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9977 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009978 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9979 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
9980 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009981
Jeff Johnsone7245742012-09-05 17:12:55 -07009982 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009983 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009984 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009985 }
9986
9987
9988
9989 wpalMutexRelease(&pWDICtx->wptMutex);
9990 /*-----------------------------------------------------------------------
9991 Get message buffer
9992 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009993 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_RMV_STA_BCAST_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009994 sizeof(halRemoveStaBcastKeyReqMsg.removeStaKeyParams),
9995 &pSendBuffer, &usDataOffset, &usSendSize))||
9996 ( usSendSize < (usDataOffset + sizeof(halRemoveStaBcastKeyReqMsg.removeStaKeyParams) )))
9997 {
9998 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009999 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070010000 pEventData, pwdiRemoveSTABcastKeyParams, wdiRemoveSTAKeyRspCb);
10001 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010002 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010003 }
10004
10005 /*-----------------------------------------------------------------------
10006 Copy the Key parameters into the HAL message
10007 -----------------------------------------------------------------------*/
10008
Jeff Johnsone7245742012-09-05 17:12:55 -070010009 halRemoveStaBcastKeyReqMsg.removeStaKeyParams.staIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070010010 pwdiRemoveSTABcastKeyParams->wdiKeyInfo.ucSTAIdx;
10011
Jeff Johnsone7245742012-09-05 17:12:55 -070010012 halRemoveStaBcastKeyReqMsg.removeStaKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -070010013 WDI_2_HAL_ENC_TYPE (pwdiRemoveSTABcastKeyParams->wdiKeyInfo.wdiEncType);
10014
Jeff Johnsone7245742012-09-05 17:12:55 -070010015 halRemoveStaBcastKeyReqMsg.removeStaKeyParams.keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -070010016 pwdiRemoveSTABcastKeyParams->wdiKeyInfo.ucKeyId;
10017
Jeff Johnsone7245742012-09-05 17:12:55 -070010018 halRemoveStaBcastKeyReqMsg.removeStaKeyParams.unicast =
Jeff Johnson295189b2012-06-20 16:38:30 -070010019 pwdiRemoveSTABcastKeyParams->wdiKeyInfo.ucUnicast;
10020
Jeff Johnsone7245742012-09-05 17:12:55 -070010021 wpalMemoryCopy( pSendBuffer+usDataOffset,
10022 &halRemoveStaBcastKeyReqMsg.removeStaKeyParams,
10023 sizeof(halRemoveStaBcastKeyReqMsg.removeStaKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070010024
10025 pWDICtx->wdiReqStatusCB = pwdiRemoveSTABcastKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010026 pWDICtx->pReqStatusUserData = pwdiRemoveSTABcastKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010027
10028 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010029 Send Remove STA Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010030 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010031 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070010032 wdiRemoveSTAKeyRspCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -070010033 WDI_RMV_STA_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010034
10035}/*WDI_ProcessRemoveSTABcastKeyReq*/
10036
10037/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070010038 QOS and BA PROCESSING REQUEST API
Jeff Johnson295189b2012-06-20 16:38:30 -070010039==========================================================================*/
10040/**
10041 @brief Process Add TSpec Request function (called when Main FSM
10042 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010043
10044 @param pWDICtx: pointer to the WLAN DAL context
10045 pEventData: pointer to the event information structure
10046
Jeff Johnson295189b2012-06-20 16:38:30 -070010047 @see
10048 @return Result of the function call
10049*/
10050WDI_Status
10051WDI_ProcessAddTSpecReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010052(
Jeff Johnson295189b2012-06-20 16:38:30 -070010053 WDI_ControlBlockType* pWDICtx,
10054 WDI_EventInfoType* pEventData
10055)
10056{
10057 WDI_AddTSReqParamsType* pwdiAddTSParams;
10058 WDI_AddTsRspCb wdiAddTSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010059 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070010060 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070010061 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010062 wpt_uint16 usDataOffset = 0;
10063 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070010064 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070010065 wpt_macAddr macBSSID;
10066 tAddTsParams halAddTsParams = {0};
Jeff Johnsone7245742012-09-05 17:12:55 -070010067
Jeff Johnson295189b2012-06-20 16:38:30 -070010068 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10069
10070 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010071 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010072 -------------------------------------------------------------------------*/
10073 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10074 ( NULL == pEventData->pCBfnc ))
10075 {
10076 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010077 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010078 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010079 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010080 }
10081
10082 pwdiAddTSParams = (WDI_AddTSReqParamsType*)pEventData->pEventData;
10083 wdiAddTSRspCb = (WDI_AddTsRspCb)pEventData->pCBfnc;
10084 /*-------------------------------------------------------------------------
10085 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070010086 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070010087 -------------------------------------------------------------------------*/
10088 wpalMutexAcquire(&pWDICtx->wptMutex);
10089
10090 /*------------------------------------------------------------------------
10091 Find the BSS for which the request is made and identify WDI session
10092 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010093 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
10094 pwdiAddTSParams->wdiTsInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070010095 &macBSSID))
10096 {
10097 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010098 "This station does not exist in the WDI Station Table %d",
10099 pwdiAddTSParams->wdiTsInfo.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070010100 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010101 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010102 }
10103
Jeff Johnsone7245742012-09-05 17:12:55 -070010104 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
10105 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070010106 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010107 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
10108 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
10109 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010110
10111 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010112 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070010113 }
Jeff Johnsone7245742012-09-05 17:12:55 -070010114
Jeff Johnson295189b2012-06-20 16:38:30 -070010115 /*------------------------------------------------------------------------
10116 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070010117 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070010118 ------------------------------------------------------------------------*/
10119 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
10120 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010121 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10122 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
10123 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010124
Jeff Johnsone7245742012-09-05 17:12:55 -070010125 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070010126 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010127 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070010128 }
10129
10130 wpalMutexRelease(&pWDICtx->wptMutex);
10131 /*-----------------------------------------------------------------------
10132 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070010133 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070010134 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010135 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ADD_TS_REQ,
10136 sizeof(halAddTsParams),
10137 &pSendBuffer, &usDataOffset,
Jeff Johnson295189b2012-06-20 16:38:30 -070010138 &usSendSize))||
10139 ( usSendSize < (usDataOffset + sizeof(halAddTsParams) )))
10140 {
10141 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010142 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070010143 pEventData, pwdiAddTSParams, wdiAddTSRspCb);
10144 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010145 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010146 }
10147
10148 halAddTsParams.staIdx = pwdiAddTSParams->wdiTsInfo.ucSTAIdx;
10149 halAddTsParams.tspecIdx = pwdiAddTSParams->wdiTsInfo.ucTspecIdx;
10150
10151 //TSPEC IE
10152 halAddTsParams.tspec.type = pwdiAddTSParams->wdiTsInfo.wdiTspecIE.ucType;
10153 halAddTsParams.tspec.length = pwdiAddTSParams->wdiTsInfo.wdiTspecIE.ucLength;
Jeff Johnsone7245742012-09-05 17:12:55 -070010154 halAddTsParams.tspec.nomMsduSz =
Jeff Johnson295189b2012-06-20 16:38:30 -070010155 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.usNomMsduSz;
Jeff Johnsone7245742012-09-05 17:12:55 -070010156 halAddTsParams.tspec.maxMsduSz =
Jeff Johnson295189b2012-06-20 16:38:30 -070010157 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.usMaxMsduSz;
Jeff Johnsone7245742012-09-05 17:12:55 -070010158 halAddTsParams.tspec.minSvcInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070010159 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMinSvcInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070010160 halAddTsParams.tspec.maxSvcInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070010161 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMaxSvcInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070010162 halAddTsParams.tspec.inactInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070010163 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uInactInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070010164 halAddTsParams.tspec.suspendInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070010165 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uSuspendInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070010166 halAddTsParams.tspec.svcStartTime =
Jeff Johnson295189b2012-06-20 16:38:30 -070010167 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uSvcStartTime;
Jeff Johnsone7245742012-09-05 17:12:55 -070010168 halAddTsParams.tspec.minDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070010169 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMinDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070010170 halAddTsParams.tspec.meanDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070010171 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMeanDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070010172 halAddTsParams.tspec.peakDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070010173 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uPeakDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070010174 halAddTsParams.tspec.maxBurstSz =
Jeff Johnson295189b2012-06-20 16:38:30 -070010175 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMaxBurstSz;
Jeff Johnsone7245742012-09-05 17:12:55 -070010176 halAddTsParams.tspec.delayBound =
Jeff Johnson295189b2012-06-20 16:38:30 -070010177 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uDelayBound;
Jeff Johnsone7245742012-09-05 17:12:55 -070010178 halAddTsParams.tspec.minPhyRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070010179 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMinPhyRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070010180 halAddTsParams.tspec.surplusBw =
Jeff Johnson295189b2012-06-20 16:38:30 -070010181 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.usSurplusBw;
Jeff Johnsone7245742012-09-05 17:12:55 -070010182 halAddTsParams.tspec.mediumTime =
Jeff Johnson295189b2012-06-20 16:38:30 -070010183 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.usMediumTime;
10184
10185 //TSPEC IE : TS INFO : TRAFFIC
Jeff Johnsone7245742012-09-05 17:12:55 -070010186 halAddTsParams.tspec.tsinfo.traffic.ackPolicy =
Jeff Johnson295189b2012-06-20 16:38:30 -070010187 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.accessPolicy;
Jeff Johnsone7245742012-09-05 17:12:55 -070010188 halAddTsParams.tspec.tsinfo.traffic.userPrio =
Jeff Johnson295189b2012-06-20 16:38:30 -070010189 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.userPrio;
Jeff Johnsone7245742012-09-05 17:12:55 -070010190 halAddTsParams.tspec.tsinfo.traffic.psb =
Jeff Johnson295189b2012-06-20 16:38:30 -070010191 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.psb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010192 halAddTsParams.tspec.tsinfo.traffic.aggregation =
Jeff Johnson295189b2012-06-20 16:38:30 -070010193 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.aggregation;
Jeff Johnsone7245742012-09-05 17:12:55 -070010194 halAddTsParams.tspec.tsinfo.traffic.direction =
Jeff Johnson295189b2012-06-20 16:38:30 -070010195 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.direction;
Jeff Johnsone7245742012-09-05 17:12:55 -070010196 halAddTsParams.tspec.tsinfo.traffic.tsid =
Jeff Johnson295189b2012-06-20 16:38:30 -070010197 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.tsid;
Jeff Johnsone7245742012-09-05 17:12:55 -070010198 halAddTsParams.tspec.tsinfo.traffic.trafficType =
Jeff Johnson295189b2012-06-20 16:38:30 -070010199 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.trafficType;
10200
10201 //TSPEC IE : TS INFO : SCHEDULE
Jeff Johnsone7245742012-09-05 17:12:55 -070010202 halAddTsParams.tspec.tsinfo.schedule.rsvd =
Jeff Johnson295189b2012-06-20 16:38:30 -070010203 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiSchedule.rsvd;
Jeff Johnsone7245742012-09-05 17:12:55 -070010204 halAddTsParams.tspec.tsinfo.schedule.schedule =
Jeff Johnson295189b2012-06-20 16:38:30 -070010205 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiSchedule.schedule;
10206
Jeff Johnsone7245742012-09-05 17:12:55 -070010207 wpalMemoryCopy( pSendBuffer+usDataOffset,
10208 &halAddTsParams,
10209 sizeof(halAddTsParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070010210
10211 pWDICtx->wdiReqStatusCB = pwdiAddTSParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010212 pWDICtx->pReqStatusUserData = pwdiAddTSParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010213
10214 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010215 Send Add TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010216 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010217 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070010218 wdiAddTSRspCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -070010219 WDI_ADD_TS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010220}/*WDI_ProcessAddTSpecReq*/
10221
10222
10223/**
10224 @brief Process Del TSpec Request function (called when Main FSM
10225 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010226
10227 @param pWDICtx: pointer to the WLAN DAL context
10228 pEventData: pointer to the event information structure
10229
Jeff Johnson295189b2012-06-20 16:38:30 -070010230 @see
10231 @return Result of the function call
10232*/
10233WDI_Status
10234WDI_ProcessDelTSpecReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010235(
Jeff Johnson295189b2012-06-20 16:38:30 -070010236 WDI_ControlBlockType* pWDICtx,
10237 WDI_EventInfoType* pEventData
10238)
10239{
10240 WDI_DelTSReqParamsType* pwdiDelTSParams;
10241 WDI_DelTsRspCb wdiDelTSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010242 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070010243 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070010244 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010245 wpt_uint16 usDataOffset = 0;
10246 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070010247 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070010248 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10249
10250 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010251 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010252 -------------------------------------------------------------------------*/
10253 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10254 ( NULL == pEventData->pCBfnc ))
10255 {
10256 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010257 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010258 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010259 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010260 }
10261
10262 pwdiDelTSParams = (WDI_DelTSReqParamsType*)pEventData->pEventData;
10263 wdiDelTSRspCb = (WDI_DelTsRspCb)pEventData->pCBfnc;
10264
10265 /*-------------------------------------------------------------------------
10266 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070010267 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070010268 -------------------------------------------------------------------------*/
10269 wpalMutexAcquire(&pWDICtx->wptMutex);
10270
10271 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010272 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070010273 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010274 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
10275 pwdiDelTSParams->wdiDelTSInfo.macBSSID,
10276 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070010277
Jeff Johnsone7245742012-09-05 17:12:55 -070010278 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070010279 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010280 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
10281 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
10282 __func__, MAC_ADDR_ARRAY(pwdiDelTSParams->wdiDelTSInfo.macBSSID));
10283
Jeff Johnson295189b2012-06-20 16:38:30 -070010284 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010285 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070010286 }
10287
10288 /*------------------------------------------------------------------------
10289 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070010290 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070010291 ------------------------------------------------------------------------*/
10292 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
10293 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010294 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10295 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
10296 __func__, MAC_ADDR_ARRAY(pwdiDelTSParams->wdiDelTSInfo.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010297
Jeff Johnsone7245742012-09-05 17:12:55 -070010298 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070010299 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010300 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070010301 }
10302
10303
10304 wpalMutexRelease(&pWDICtx->wptMutex);
10305 /*-----------------------------------------------------------------------
10306 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070010307 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070010308 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010309 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_DEL_TS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010310 sizeof(pwdiDelTSParams->wdiDelTSInfo),
10311 &pSendBuffer, &usDataOffset, &usSendSize))||
10312 ( usSendSize < (usDataOffset + sizeof(pwdiDelTSParams->wdiDelTSInfo) )))
10313 {
10314 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010315 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070010316 pEventData, pwdiDelTSParams, wdiDelTSRspCb);
10317 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010318 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010319 }
10320
Jeff Johnsone7245742012-09-05 17:12:55 -070010321 wpalMemoryCopy( pSendBuffer+usDataOffset,
10322 &pwdiDelTSParams->wdiDelTSInfo,
10323 sizeof(pwdiDelTSParams->wdiDelTSInfo));
Jeff Johnson295189b2012-06-20 16:38:30 -070010324
10325 pWDICtx->wdiReqStatusCB = pwdiDelTSParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010326 pWDICtx->pReqStatusUserData = pwdiDelTSParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010327
10328 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010329 Send Del TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010330 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010331 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10332 wdiDelTSRspCb, pEventData->pUserData, WDI_DEL_TS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010333}/*WDI_ProcessDelTSpecReq*/
10334
10335/**
10336 @brief Process Update EDCA Params Request function (called when
10337 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010338
10339 @param pWDICtx: pointer to the WLAN DAL context
10340 pEventData: pointer to the event information structure
10341
Jeff Johnson295189b2012-06-20 16:38:30 -070010342 @see
10343 @return Result of the function call
10344*/
10345WDI_Status
10346WDI_ProcessUpdateEDCAParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010347(
Jeff Johnson295189b2012-06-20 16:38:30 -070010348 WDI_ControlBlockType* pWDICtx,
10349 WDI_EventInfoType* pEventData
10350)
10351{
10352 WDI_UpdateEDCAParamsType* pwdiUpdateEDCAParams;
10353 WDI_UpdateEDCAParamsRspCb wdiUpdateEDCARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010354 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070010355 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070010356 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010357 wpt_uint16 usDataOffset = 0;
10358 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070010359 WDI_Status wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070010360 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10361
10362 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010363 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010364 -------------------------------------------------------------------------*/
10365 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10366 ( NULL == pEventData->pCBfnc ))
10367 {
10368 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010369 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010370 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010371 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010372 }
10373
10374 pwdiUpdateEDCAParams = (WDI_UpdateEDCAParamsType*)pEventData->pEventData;
10375 wdiUpdateEDCARspCb = (WDI_UpdateEDCAParamsRspCb)pEventData->pCBfnc;
10376 /*-------------------------------------------------------------------------
10377 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070010378 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070010379 -------------------------------------------------------------------------*/
10380 wpalMutexAcquire(&pWDICtx->wptMutex);
10381
10382 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010383 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070010384 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010385 ucCurrentBSSSesIdx = WDI_FindAssocSessionByBSSIdx( pWDICtx,
10386 pwdiUpdateEDCAParams->wdiEDCAInfo.ucBssIdx,
10387 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070010388
Jeff Johnsone7245742012-09-05 17:12:55 -070010389 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070010390 {
10391 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070010392 "%s: Association sequence for this BSS does not yet exist. ucBssIdx %d",
10393 __func__, pwdiUpdateEDCAParams->wdiEDCAInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070010394
10395 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010396 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070010397 }
10398
10399 /*------------------------------------------------------------------------
10400 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070010401 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070010402 ------------------------------------------------------------------------*/
10403 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
10404 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010405 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10406 "%s: Association sequence for this BSS exists but currently queued. ucBssIdx %d",
10407 __func__, pwdiUpdateEDCAParams->wdiEDCAInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070010408
Jeff Johnsone7245742012-09-05 17:12:55 -070010409 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070010410 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010411 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070010412 }
10413
10414
10415 wpalMutexRelease(&pWDICtx->wptMutex);
10416 /*-----------------------------------------------------------------------
10417 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070010418 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070010419 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010420 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPD_EDCA_PRMS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010421 sizeof(pwdiUpdateEDCAParams->wdiEDCAInfo),
10422 &pSendBuffer, &usDataOffset, &usSendSize))||
10423 ( usSendSize < (usDataOffset + sizeof(pwdiUpdateEDCAParams->wdiEDCAInfo) )))
10424 {
10425 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010426 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070010427 pEventData, pwdiUpdateEDCAParams, wdiUpdateEDCARspCb);
10428 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010429 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010430 }
10431
Jeff Johnsone7245742012-09-05 17:12:55 -070010432 wpalMemoryCopy( pSendBuffer+usDataOffset,
10433 &pwdiUpdateEDCAParams->wdiEDCAInfo,
10434 sizeof(pwdiUpdateEDCAParams->wdiEDCAInfo));
Jeff Johnson295189b2012-06-20 16:38:30 -070010435
10436 pWDICtx->wdiReqStatusCB = pwdiUpdateEDCAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010437 pWDICtx->pReqStatusUserData = pwdiUpdateEDCAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010438
10439 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010440 Send Update EDCA Params Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010441 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010442 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10443 wdiUpdateEDCARspCb, pEventData->pUserData,
10444 WDI_UPD_EDCA_PRMS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010445}/*WDI_ProcessUpdateEDCAParamsReq*/
10446
10447/**
Jeff Johnsone7245742012-09-05 17:12:55 -070010448 @brief Process Add BA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070010449 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010450
10451 @param pWDICtx: pointer to the WLAN DAL context
10452 pEventData: pointer to the event information structure
10453
Jeff Johnson295189b2012-06-20 16:38:30 -070010454 @see
10455 @return Result of the function call
10456*/
10457WDI_Status
10458WDI_ProcessAddBASessionReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010459(
Jeff Johnson295189b2012-06-20 16:38:30 -070010460 WDI_ControlBlockType* pWDICtx,
10461 WDI_EventInfoType* pEventData
10462)
10463{
10464 WDI_AddBASessionReqParamsType* pwdiAddBASessionParams;
10465 WDI_AddBASessionRspCb wdiAddBASessionRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010466 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070010467 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070010468 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010469 wpt_uint16 usDataOffset = 0;
10470 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070010471 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070010472 wpt_macAddr macBSSID;
10473
10474 tAddBASessionReqMsg halAddBASessionReq;
10475 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10476
10477 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010478 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010479 -------------------------------------------------------------------------*/
10480 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10481 ( NULL == pEventData->pCBfnc ))
10482 {
10483 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010484 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010485 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010486 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010487 }
10488
Jeff Johnsone7245742012-09-05 17:12:55 -070010489 pwdiAddBASessionParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070010490 (WDI_AddBASessionReqParamsType*)pEventData->pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070010491 wdiAddBASessionRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070010492 (WDI_AddBASessionRspCb)pEventData->pCBfnc;
10493 /*-------------------------------------------------------------------------
10494 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070010495 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070010496 -------------------------------------------------------------------------*/
10497 wpalMutexAcquire(&pWDICtx->wptMutex);
10498
10499 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010500 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070010501 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010502 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
10503 pwdiAddBASessionParams->wdiBASessionInfoType.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070010504 &macBSSID))
10505 {
10506 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010507 "This station does not exist in the WDI Station Table %d",
10508 pwdiAddBASessionParams->wdiBASessionInfoType.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070010509 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010510 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010511 }
10512
10513
Jeff Johnsone7245742012-09-05 17:12:55 -070010514 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070010515
Jeff Johnsone7245742012-09-05 17:12:55 -070010516 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070010517 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010518 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
10519 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
10520 __func__, MAC_ADDR_ARRAY(macBSSID));
10521
Jeff Johnson295189b2012-06-20 16:38:30 -070010522 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010523 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070010524 }
10525
10526 /*------------------------------------------------------------------------
10527 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070010528 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070010529 ------------------------------------------------------------------------*/
10530 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
10531 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010532 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10533 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
10534 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010535
Jeff Johnsone7245742012-09-05 17:12:55 -070010536 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070010537 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010538 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070010539 }
10540
10541
10542 wpalMutexRelease(&pWDICtx->wptMutex);
10543 /*-----------------------------------------------------------------------
10544 Get message buffer
10545 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010546 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
10547 WDI_ADD_BA_SESSION_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010548 sizeof(halAddBASessionReq.addBASessionParams),
10549 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070010550 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070010551 (usDataOffset + sizeof(halAddBASessionReq.addBASessionParams) )))
10552 {
10553 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010554 "Unable to get send buffer in Add BA session req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070010555 pEventData, pwdiAddBASessionParams, wdiAddBASessionRspCb);
10556 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010557 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010558 }
10559
10560 halAddBASessionReq.addBASessionParams.staIdx =
10561 pwdiAddBASessionParams->wdiBASessionInfoType.ucSTAIdx;
10562 wpalMemoryCopy(halAddBASessionReq.addBASessionParams.peerMacAddr,
10563 pwdiAddBASessionParams->wdiBASessionInfoType.macPeerAddr,
10564 WDI_MAC_ADDR_LEN);
10565 halAddBASessionReq.addBASessionParams.baTID =
10566 pwdiAddBASessionParams->wdiBASessionInfoType.ucBaTID;
10567 halAddBASessionReq.addBASessionParams.baPolicy =
10568 pwdiAddBASessionParams->wdiBASessionInfoType.ucBaPolicy;
10569 halAddBASessionReq.addBASessionParams.baBufferSize =
10570 pwdiAddBASessionParams->wdiBASessionInfoType.usBaBufferSize;
10571 halAddBASessionReq.addBASessionParams.baTimeout =
10572 pwdiAddBASessionParams->wdiBASessionInfoType.usBaTimeout;
10573 halAddBASessionReq.addBASessionParams.baSSN =
10574 pwdiAddBASessionParams->wdiBASessionInfoType.usBaSSN;
10575 halAddBASessionReq.addBASessionParams.baDirection =
10576 pwdiAddBASessionParams->wdiBASessionInfoType.ucBaDirection;
10577
Jeff Johnsone7245742012-09-05 17:12:55 -070010578 wpalMemoryCopy( pSendBuffer+usDataOffset,
10579 &halAddBASessionReq.addBASessionParams,
10580 sizeof(halAddBASessionReq.addBASessionParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070010581
10582 pWDICtx->wdiReqStatusCB = pwdiAddBASessionParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010583 pWDICtx->pReqStatusUserData = pwdiAddBASessionParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010584
10585 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010586 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010587 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010588 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10589 wdiAddBASessionRspCb, pEventData->pUserData,
10590 WDI_ADD_BA_SESSION_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010591}/*WDI_ProcessAddBASessionReq*/
10592
10593/**
Jeff Johnsone7245742012-09-05 17:12:55 -070010594 @brief Process Del BA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070010595 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010596
10597 @param pWDICtx: pointer to the WLAN DAL context
10598 pEventData: pointer to the event information structure
10599
Jeff Johnson295189b2012-06-20 16:38:30 -070010600 @see
10601 @return Result of the function call
10602*/
10603WDI_Status
10604WDI_ProcessDelBAReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010605(
Jeff Johnson295189b2012-06-20 16:38:30 -070010606 WDI_ControlBlockType* pWDICtx,
10607 WDI_EventInfoType* pEventData
10608)
10609{
10610 WDI_DelBAReqParamsType* pwdiDelBAParams;
10611 WDI_DelBARspCb wdiDelBARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010612 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070010613 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070010614 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010615 wpt_uint16 usDataOffset = 0;
10616 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070010617 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070010618 wpt_macAddr macBSSID;
10619 tDelBAParams halDelBAparam;
10620 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10621
10622 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010623 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010624 -------------------------------------------------------------------------*/
10625 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10626 ( NULL == pEventData->pCBfnc ))
10627 {
10628 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010629 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010630 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010631 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010632 }
10633
10634 pwdiDelBAParams = (WDI_DelBAReqParamsType*)pEventData->pEventData;
10635 wdiDelBARspCb = (WDI_DelBARspCb)pEventData->pCBfnc;
10636 /*-------------------------------------------------------------------------
10637 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070010638 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070010639 -------------------------------------------------------------------------*/
10640 wpalMutexAcquire(&pWDICtx->wptMutex);
10641
10642 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010643 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070010644 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010645 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
10646 pwdiDelBAParams->wdiBAInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070010647 &macBSSID))
10648 {
10649 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010650 "This station does not exist in the WDI Station Table %d",
10651 pwdiDelBAParams->wdiBAInfo.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070010652 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010653 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010654 }
10655
Jeff Johnsone7245742012-09-05 17:12:55 -070010656 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070010657
Jeff Johnsone7245742012-09-05 17:12:55 -070010658 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070010659 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010660 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
10661 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
10662 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010663
10664 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010665 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070010666 }
10667
10668 /*------------------------------------------------------------------------
10669 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070010670 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070010671 ------------------------------------------------------------------------*/
10672 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
10673 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010674 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10675 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
10676 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010677
Jeff Johnsone7245742012-09-05 17:12:55 -070010678 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070010679 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010680 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070010681 }
10682
10683 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010684 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_DEL_BA_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010685 sizeof(halDelBAparam),
10686 &pSendBuffer, &usDataOffset, &usSendSize))||
10687 ( usSendSize < (usDataOffset + sizeof(halDelBAparam) )))
10688 {
10689 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010690 "Unable to get send buffer for DEL BA req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070010691 pEventData, pwdiDelBAParams, wdiDelBARspCb);
10692 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010693 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010694 }
10695
10696 halDelBAparam.staIdx = pwdiDelBAParams->wdiBAInfo.ucSTAIdx;
10697 halDelBAparam.baTID = pwdiDelBAParams->wdiBAInfo.ucBaTID;
10698 halDelBAparam.baDirection = pwdiDelBAParams->wdiBAInfo.ucBaDirection;
10699
Jeff Johnsone7245742012-09-05 17:12:55 -070010700 wpalMemoryCopy( pSendBuffer+usDataOffset,
10701 &halDelBAparam,
10702 sizeof(halDelBAparam));
Jeff Johnson295189b2012-06-20 16:38:30 -070010703
10704 pWDICtx->wdiReqStatusCB = pwdiDelBAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010705 pWDICtx->pReqStatusUserData = pwdiDelBAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010706
10707 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010708 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010709 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010710 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10711 wdiDelBARspCb, pEventData->pUserData, WDI_DEL_BA_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010712}/*WDI_ProcessDelBAReq*/
10713
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -080010714#ifdef FEATURE_WLAN_ESE
Jeff Johnson295189b2012-06-20 16:38:30 -070010715
10716WDI_Status
10717WDI_ProcessTSMStatsReq
10718(
10719 WDI_ControlBlockType* pWDICtx,
10720 WDI_EventInfoType* pEventData
10721)
10722{
10723 WDI_TSMStatsReqParamsType* pwdiTSMParams;
10724 WDI_TsmRspCb wdiTSMRspCb;
10725 wpt_uint8 ucCurrentBSSSesIdx = 0;
10726 WDI_BSSSessionType* pBSSSes = NULL;
10727 wpt_uint8* pSendBuffer = NULL;
10728 wpt_uint16 usDataOffset = 0;
10729 wpt_uint16 usSendSize = 0;
10730 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
10731 tTsmStatsParams halTsmStatsReqParams = {0};
10732
10733 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10734
10735 /*-------------------------------------------------------------------------
10736 Sanity check
10737 -------------------------------------------------------------------------*/
10738 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10739 ( NULL == pEventData->pCBfnc ))
10740 {
10741 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010742 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010743 WDI_ASSERT(0);
10744 return WDI_STATUS_E_FAILURE;
10745 }
10746
10747 pwdiTSMParams = (WDI_TSMStatsReqParamsType*)pEventData->pEventData;
10748 wdiTSMRspCb = (WDI_TsmRspCb)pEventData->pCBfnc;
10749 /*-------------------------------------------------------------------------
10750 Check to see if we are in the middle of an association, if so queue, if
10751 not it means it is free to process request
10752 -------------------------------------------------------------------------*/
10753 wpalMutexAcquire(&pWDICtx->wptMutex);
10754
10755 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, pwdiTSMParams->wdiTsmStatsParamsInfo.bssid, &pBSSSes);
10756 if ( NULL == pBSSSes )
10757 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010758 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
10759 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
10760 __func__, MAC_ADDR_ARRAY(pwdiTSMParams->wdiTsmStatsParamsInfo.bssid));
Jeff Johnson295189b2012-06-20 16:38:30 -070010761
10762 wpalMutexRelease(&pWDICtx->wptMutex);
10763 return WDI_STATUS_E_NOT_ALLOWED;
10764 }
10765
10766 /*------------------------------------------------------------------------
10767 Check if this BSS is being currently processed or queued,
10768 if queued - queue the new request as well
10769 ------------------------------------------------------------------------*/
10770 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
10771 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010772 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Srinivas Girigowda6d1f9062014-02-03 18:15:54 -080010773 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
Jeff Johnsone7245742012-09-05 17:12:55 -070010774 __func__, MAC_ADDR_ARRAY(pwdiTSMParams->wdiTsmStatsParamsInfo.bssid));
Jeff Johnson295189b2012-06-20 16:38:30 -070010775
10776 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
10777 wpalMutexRelease(&pWDICtx->wptMutex);
10778 return wdiStatus;
10779 }
10780
10781 wpalMutexRelease(&pWDICtx->wptMutex);
10782 /*-----------------------------------------------------------------------
10783 Get message buffer
10784 ! TO DO : proper conversion into the HAL Message Request Format
10785 -----------------------------------------------------------------------*/
10786 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_TSM_STATS_REQ,
10787 sizeof(halTsmStatsReqParams),
10788 &pSendBuffer, &usDataOffset, &usSendSize))||
10789 ( usSendSize < (usDataOffset + sizeof(halTsmStatsReqParams) )))
10790 {
10791 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010792 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070010793 pEventData, pwdiTSMParams, wdiTSMRspCb);
10794 WDI_ASSERT(0);
10795 return WDI_STATUS_E_FAILURE;
10796 }
10797
10798 halTsmStatsReqParams.tsmTID = pwdiTSMParams->wdiTsmStatsParamsInfo.ucTid;
10799 wpalMemoryCopy(halTsmStatsReqParams.bssId,
10800 pwdiTSMParams->wdiTsmStatsParamsInfo.bssid,
10801 WDI_MAC_ADDR_LEN);
10802 wpalMemoryCopy( pSendBuffer+usDataOffset,
10803 &halTsmStatsReqParams,
10804 sizeof(halTsmStatsReqParams));
10805
10806 pWDICtx->wdiReqStatusCB = pwdiTSMParams->wdiReqStatusCB;
10807 pWDICtx->pReqStatusUserData = pwdiTSMParams->pUserData;
10808
10809 /*-------------------------------------------------------------------------
10810 Send TSM Stats Request to HAL
10811 -------------------------------------------------------------------------*/
10812 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10813 wdiTSMRspCb, pEventData->pUserData,
10814 WDI_TSM_STATS_RESP);
10815}/*WDI_ProcessTSMStatsReq*/
10816
10817#endif
10818
10819
10820/**
Jeff Johnsone7245742012-09-05 17:12:55 -070010821 @brief Process Flush AC Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070010822 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010823
10824 @param pWDICtx: pointer to the WLAN DAL context
10825 pEventData: pointer to the event information structure
10826
Jeff Johnson295189b2012-06-20 16:38:30 -070010827 @see
10828 @return Result of the function call
10829*/
10830WDI_Status
10831WDI_ProcessFlushAcReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010832(
Jeff Johnson295189b2012-06-20 16:38:30 -070010833 WDI_ControlBlockType* pWDICtx,
10834 WDI_EventInfoType* pEventData
10835)
10836{
10837 WDI_FlushAcReqParamsType* pwdiFlushAcParams = NULL;
10838 WDI_FlushAcRspCb wdiFlushAcRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010839 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010840 wpt_uint16 usDataOffset = 0;
10841 wpt_uint16 usSendSize = 0;
10842 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10843
10844 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010845 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010846 -------------------------------------------------------------------------*/
10847 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10848 ( NULL == pEventData->pCBfnc ))
10849 {
10850 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010851 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010852 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010853 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010854 }
10855
10856 pwdiFlushAcParams = (WDI_FlushAcReqParamsType*)pEventData->pEventData;
10857 wdiFlushAcRspCb = (WDI_FlushAcRspCb)pEventData->pCBfnc;
10858 /*-----------------------------------------------------------------------
10859 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070010860 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070010861 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010862 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_FLUSH_AC_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010863 sizeof(pwdiFlushAcParams->wdiFlushAcInfo),
10864 &pSendBuffer, &usDataOffset, &usSendSize))||
10865 ( usSendSize < (usDataOffset + sizeof(pwdiFlushAcParams->wdiFlushAcInfo) )))
10866 {
10867 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010868 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070010869 pEventData, pwdiFlushAcParams, wdiFlushAcRspCb);
10870 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010871 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010872 }
10873
Jeff Johnsone7245742012-09-05 17:12:55 -070010874 wpalMemoryCopy( pSendBuffer+usDataOffset,
10875 &pwdiFlushAcParams->wdiFlushAcInfo,
10876 sizeof(pwdiFlushAcParams->wdiFlushAcInfo));
Jeff Johnson295189b2012-06-20 16:38:30 -070010877
10878 pWDICtx->wdiReqStatusCB = pwdiFlushAcParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010879 pWDICtx->pReqStatusUserData = pwdiFlushAcParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010880
10881 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010882 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010883 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010884 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10885 wdiFlushAcRspCb, pEventData->pUserData, WDI_FLUSH_AC_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010886}/*WDI_ProcessFlushAcReq*/
10887
10888/**
Jeff Johnsone7245742012-09-05 17:12:55 -070010889 @brief Process BT AMP event Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070010890 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010891
10892 @param pWDICtx: pointer to the WLAN DAL context
10893 pEventData: pointer to the event information structure
10894
Jeff Johnson295189b2012-06-20 16:38:30 -070010895 @see
10896 @return Result of the function call
10897*/
10898WDI_Status
10899WDI_ProcessBtAmpEventReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010900(
Jeff Johnson295189b2012-06-20 16:38:30 -070010901 WDI_ControlBlockType* pWDICtx,
10902 WDI_EventInfoType* pEventData
10903)
10904{
10905 WDI_BtAmpEventParamsType* pwdiBtAmpEventParams = NULL;
10906 WDI_BtAmpEventRspCb wdiBtAmpEventRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010907 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010908 wpt_uint16 usDataOffset = 0;
10909 wpt_uint16 usSendSize = 0;
10910
10911 tBtAmpEventMsg haltBtAmpEventMsg;
10912 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10913
10914 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010915 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010916 -------------------------------------------------------------------------*/
10917 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10918 ( NULL == pEventData->pCBfnc ))
10919 {
10920 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010921 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010922 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010923 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010924 }
10925
10926 pwdiBtAmpEventParams = (WDI_BtAmpEventParamsType*)pEventData->pEventData;
10927 wdiBtAmpEventRspCb = (WDI_BtAmpEventRspCb)pEventData->pCBfnc;
10928 /*-----------------------------------------------------------------------
10929 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070010930 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070010931 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010932 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_BTAMP_EVENT_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010933 sizeof(haltBtAmpEventMsg.btAmpEventParams),
10934 &pSendBuffer, &usDataOffset, &usSendSize))||
10935 ( usSendSize < (usDataOffset + sizeof(haltBtAmpEventMsg.btAmpEventParams) )))
10936 {
10937 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010938 "Unable to get send buffer in BT AMP event req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070010939 pEventData, pwdiBtAmpEventParams, wdiBtAmpEventRspCb);
10940 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010941 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010942 }
10943
Jeff Johnsone7245742012-09-05 17:12:55 -070010944 haltBtAmpEventMsg.btAmpEventParams.btAmpEventType =
Jeff Johnson295189b2012-06-20 16:38:30 -070010945 pwdiBtAmpEventParams->wdiBtAmpEventInfo.ucBtAmpEventType;
Jeff Johnsone7245742012-09-05 17:12:55 -070010946 wpalMemoryCopy( pSendBuffer+usDataOffset,
10947 &haltBtAmpEventMsg.btAmpEventParams,
10948 sizeof(haltBtAmpEventMsg.btAmpEventParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070010949
10950 pWDICtx->wdiReqStatusCB = pwdiBtAmpEventParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010951 pWDICtx->pReqStatusUserData = pwdiBtAmpEventParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010952
10953 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010954 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010955 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010956 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10957 wdiBtAmpEventRspCb, pEventData->pUserData, WDI_BTAMP_EVENT_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010958}/*WDI_ProcessBtAmpEventReq*/
10959
10960/**
10961 @brief Process Add STA self Request function (called when Main FSM
10962 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010963
10964 @param pWDICtx: pointer to the WLAN DAL context
10965 pEventData: pointer to the event information structure
10966
Jeff Johnson295189b2012-06-20 16:38:30 -070010967 @see
10968 @return Result of the function call
10969*/
10970WDI_Status
10971WDI_ProcessAddSTASelfReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010972(
Jeff Johnson295189b2012-06-20 16:38:30 -070010973 WDI_ControlBlockType* pWDICtx,
10974 WDI_EventInfoType* pEventData
10975)
10976{
10977 WDI_AddSTASelfReqParamsType* pwdiAddSTASelfReqParams;
10978 WDI_AddSTASelfParamsRspCb wdiAddSTASelfReqRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010979 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010980 wpt_uint16 usDataOffset = 0;
10981 wpt_uint16 usSendSize = 0;
Kiran Kumar Lokere0ad5cd32013-06-25 11:26:22 -070010982 tAddStaSelfParams_V1 halAddSTASelfParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070010983 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10984
10985 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010986 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010987 -------------------------------------------------------------------------*/
10988 if (( NULL == pEventData ) ||
10989 ( NULL == pEventData->pEventData) ||
10990 ( NULL == pEventData->pCBfnc))
10991 {
10992 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010993 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010994 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010995 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010996 }
10997
Jeff Johnsone7245742012-09-05 17:12:55 -070010998 pwdiAddSTASelfReqParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070010999 (WDI_AddSTASelfReqParamsType*)pEventData->pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070011000 wdiAddSTASelfReqRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070011001 (WDI_AddSTASelfParamsRspCb)pEventData->pCBfnc;
11002 /*-----------------------------------------------------------------------
11003 Get message buffer
11004 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011005 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
11006 WDI_ADD_STA_SELF_REQ,
Kiran Kumar Lokere0ad5cd32013-06-25 11:26:22 -070011007 sizeof(tAddStaSelfParams_V1),
Jeff Johnson295189b2012-06-20 16:38:30 -070011008 &pSendBuffer, &usDataOffset, &usSendSize))||
Kiran Kumar Lokere0ad5cd32013-06-25 11:26:22 -070011009 ( usSendSize < (usDataOffset + sizeof(tAddStaSelfParams_V1) )))
Jeff Johnson295189b2012-06-20 16:38:30 -070011010 {
11011 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080011012 "Unable to get send buffer in ADD STA SELF REQ %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070011013 pEventData, pwdiAddSTASelfReqParams, wdiAddSTASelfReqRspCb);
11014 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011015 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011016 }
11017
11018 /* Cache the request for response processing */
Jeff Johnsone7245742012-09-05 17:12:55 -070011019 wpalMemoryCopy(&pWDICtx->wdiCacheAddSTASelfReq, pwdiAddSTASelfReqParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070011020 sizeof(pWDICtx->wdiCacheAddSTASelfReq));
11021
Jeff Johnsone7245742012-09-05 17:12:55 -070011022 wpalMemoryCopy(halAddSTASelfParams.selfMacAddr,
Kiran Kumar Lokere0ad5cd32013-06-25 11:26:22 -070011023 pwdiAddSTASelfReqParams->wdiAddSTASelfInfo.selfMacAddr, 6);
11024 halAddSTASelfParams.iface_persona = HAL_IFACE_UNKNOWN;
11025 if (pwdiAddSTASelfReqParams->wdiAddSTASelfInfo.currDeviceMode == VOS_STA_MODE)
11026 {
11027 halAddSTASelfParams.iface_persona = HAL_IFACE_STA_MODE;
11028 }
11029 else if ((pwdiAddSTASelfReqParams->wdiAddSTASelfInfo.currDeviceMode ==
11030 VOS_P2P_CLIENT_MODE) ||
11031 (pwdiAddSTASelfReqParams->wdiAddSTASelfInfo.currDeviceMode ==
11032 VOS_P2P_DEVICE))
11033 {
11034 halAddSTASelfParams.iface_persona = HAL_IFACE_P2P_MODE;
11035 }
Jeff Johnsone7245742012-09-05 17:12:55 -070011036 wpalMemoryCopy( pSendBuffer+usDataOffset, &halAddSTASelfParams,
Kiran Kumar Lokere0ad5cd32013-06-25 11:26:22 -070011037 sizeof(tAddStaSelfParams_V1));
Jeff Johnson295189b2012-06-20 16:38:30 -070011038
11039 pWDICtx->wdiReqStatusCB = pwdiAddSTASelfReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011040 pWDICtx->pReqStatusUserData = pwdiAddSTASelfReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011041
11042 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011043 Send Update Probe Resp Template Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011044 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011045 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11046 wdiAddSTASelfReqRspCb, pEventData->pUserData,
11047 WDI_ADD_STA_SELF_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011048}/*WDI_ProcessAddSTASelfReq*/
11049
11050
11051
11052/**
Jeff Johnsone7245742012-09-05 17:12:55 -070011053 @brief Process Del Sta Self Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070011054 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011055
11056 @param pWDICtx: pointer to the WLAN DAL context
11057 pEventData: pointer to the event information structure
11058
Jeff Johnson295189b2012-06-20 16:38:30 -070011059 @see
11060 @return Result of the function call
11061*/
11062WDI_Status
11063WDI_ProcessDelSTASelfReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011064(
Jeff Johnson295189b2012-06-20 16:38:30 -070011065 WDI_ControlBlockType* pWDICtx,
11066 WDI_EventInfoType* pEventData
11067)
11068{
11069 WDI_DelSTASelfReqParamsType* pwdiDelStaSelfReqParams;
11070 WDI_DelSTASelfRspCb wdiDelStaSelfRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011071 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011072 wpt_uint16 usDataOffset = 0;
11073 wpt_uint16 usSendSize = 0;
11074 tDelStaSelfParams halSetDelSelfSTAParams;
11075 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11076
11077 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011078 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011079 -------------------------------------------------------------------------*/
11080 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
11081 ( NULL == pEventData->pCBfnc ))
11082 {
11083 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011084 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011085 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011086 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011087 }
11088
Jeff Johnsone7245742012-09-05 17:12:55 -070011089 pwdiDelStaSelfReqParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070011090 (WDI_DelSTASelfReqParamsType*)pEventData->pEventData;
11091 wdiDelStaSelfRspCb = (WDI_DelSTASelfRspCb)pEventData->pCBfnc;
11092
11093 /*-----------------------------------------------------------------------
11094 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070011095 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070011096 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011097 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_DEL_STA_SELF_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011098 sizeof(pwdiDelStaSelfReqParams->wdiDelStaSelfInfo),
11099 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070011100 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070011101 (usDataOffset + sizeof(pwdiDelStaSelfReqParams->wdiDelStaSelfInfo) )))
11102 {
11103 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080011104 "Unable to get send buffer in Del Sta Self req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070011105 pEventData, pwdiDelStaSelfReqParams, wdiDelStaSelfRspCb);
11106 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011107 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011108 }
11109
Jeff Johnsone7245742012-09-05 17:12:55 -070011110 wpalMemoryCopy(halSetDelSelfSTAParams.selfMacAddr,
Jeff Johnson295189b2012-06-20 16:38:30 -070011111 pwdiDelStaSelfReqParams->wdiDelStaSelfInfo.selfMacAddr, 6) ;
11112
Jeff Johnsone7245742012-09-05 17:12:55 -070011113 wpalMemoryCopy( pSendBuffer+usDataOffset, &halSetDelSelfSTAParams,
11114 sizeof(tDelStaSelfParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070011115
11116 pWDICtx->wdiReqStatusCB = pwdiDelStaSelfReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011117 pWDICtx->pReqStatusUserData = pwdiDelStaSelfReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011118
11119 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011120 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011121 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011122 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11123 wdiDelStaSelfRspCb, pEventData->pUserData,
Jeff Johnson295189b2012-06-20 16:38:30 -070011124 WDI_DEL_STA_SELF_RESP);
11125
11126}
11127
Jeff Johnsone7245742012-09-05 17:12:55 -070011128#ifdef FEATURE_OEM_DATA_SUPPORT
11129/**
11130 @brief Process Start Oem Data Request function (called when Main
11131 FSM allows it)
11132
11133 @param pWDICtx: pointer to the WLAN DAL context
11134 pEventData: pointer to the event information structure
11135
11136 @see
11137 @return Result of the function call
11138*/
11139WDI_Status
11140WDI_ProcessStartOemDataReq
11141(
11142 WDI_ControlBlockType* pWDICtx,
11143 WDI_EventInfoType* pEventData
11144)
11145{
11146 WDI_oemDataReqParamsType* pwdiOemDataReqParams = NULL;
11147 WDI_oemDataRspCb wdiOemDataRspCb;
11148 wpt_uint8* pSendBuffer = NULL;
11149 wpt_uint16 usDataOffset = 0;
11150 wpt_uint16 usSendSize = 0;
11151 wpt_uint16 reqLen;
11152 tStartOemDataReqParams* halStartOemDataReqParams;
11153
11154 /*-------------------------------------------------------------------------
11155 Sanity check
11156 -------------------------------------------------------------------------*/
11157 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
11158 ( NULL == pEventData->pCBfnc ))
11159 {
11160 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011161 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070011162 WDI_ASSERT(0);
11163 return WDI_STATUS_E_FAILURE;
11164 }
11165
11166 pwdiOemDataReqParams = (WDI_oemDataReqParamsType*)pEventData->pEventData;
11167 wdiOemDataRspCb = (WDI_oemDataRspCb)pEventData->pCBfnc;
11168
11169 /*-----------------------------------------------------------------------
11170 Get message buffer
11171 -----------------------------------------------------------------------*/
11172
11173 reqLen = sizeof(tStartOemDataReqParams);
11174
11175 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
11176 WDI_START_OEM_DATA_REQ, reqLen,
11177 &pSendBuffer, &usDataOffset, &usSendSize))||
11178 (usSendSize < (usDataOffset + reqLen)))
11179 {
11180 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080011181 "Unable to get send buffer in Start Oem Data req %p %p %p",
Jeff Johnsone7245742012-09-05 17:12:55 -070011182 pEventData, pwdiOemDataReqParams, wdiOemDataRspCb);
11183 WDI_ASSERT(0);
11184 return WDI_STATUS_E_FAILURE;
11185 }
11186
11187 //copying WDI OEM DATA REQ PARAMS to shared memory
11188 halStartOemDataReqParams = (tStartOemDataReqParams *)(pSendBuffer + usDataOffset );
11189
11190 wpalMemoryCopy(&halStartOemDataReqParams->selfMacAddr, &pwdiOemDataReqParams->wdiOemDataReqInfo.selfMacAddr, sizeof(wpt_macAddr));
11191 wpalMemoryCopy(&halStartOemDataReqParams->oemDataReq, &pwdiOemDataReqParams->wdiOemDataReqInfo.oemDataReq, OEM_DATA_REQ_SIZE);
11192
11193 pWDICtx->wdiReqStatusCB = pwdiOemDataReqParams->wdiReqStatusCB;
11194 pWDICtx->pReqStatusUserData = pwdiOemDataReqParams->pUserData;
11195
11196 /*-------------------------------------------------------------------------
11197 Send Start Request to HAL
11198 -------------------------------------------------------------------------*/
11199 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11200 wdiOemDataRspCb, pEventData->pUserData,
11201 WDI_START_OEM_DATA_RESP);
11202}/*WDI_ProcessStartOemDataReq*/
11203#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070011204
11205/**
Jeff Johnsone7245742012-09-05 17:12:55 -070011206 @brief Process Host Resume Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070011207 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011208
11209 @param pWDICtx: pointer to the WLAN DAL context
11210 pEventData: pointer to the event information structure
11211
Jeff Johnson295189b2012-06-20 16:38:30 -070011212 @see
11213 @return Result of the function call
11214*/
11215WDI_Status
11216WDI_ProcessHostResumeReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011217(
Jeff Johnson295189b2012-06-20 16:38:30 -070011218 WDI_ControlBlockType* pWDICtx,
11219 WDI_EventInfoType* pEventData
11220)
11221{
11222 WDI_ResumeParamsType* pwdiHostResumeParams = NULL;
11223 WDI_HostResumeEventRspCb wdiHostResumeRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011224 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011225 wpt_uint16 usDataOffset = 0;
11226 wpt_uint16 usSendSize = 0;
11227 tHalWlanHostResumeReqParam halResumeReqParams;
11228
11229 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11230
11231 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011232 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011233 -------------------------------------------------------------------------*/
11234 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
11235 ( NULL == pEventData->pCBfnc ))
11236 {
11237 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011238 "%s: Invalid parameters ",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011239 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011240 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011241 }
11242
11243 pwdiHostResumeParams = (WDI_ResumeParamsType*)pEventData->pEventData;
11244 wdiHostResumeRspCb = (WDI_HostResumeEventRspCb)pEventData->pCBfnc;
11245
11246 /*-----------------------------------------------------------------------
11247 Get message buffer
11248 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011249 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
Jeff Johnson295189b2012-06-20 16:38:30 -070011250 WDI_HOST_RESUME_REQ, sizeof(halResumeReqParams),
11251 &pSendBuffer, &usDataOffset, &usSendSize))||
11252 (usSendSize < (usDataOffset + sizeof(halResumeReqParams))))
11253 {
11254 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080011255 "Unable to get send buffer in Start Oem Data req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070011256 pEventData, pwdiHostResumeParams, wdiHostResumeRspCb);
11257 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011258 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011259 }
11260
Jeff Johnsone7245742012-09-05 17:12:55 -070011261 halResumeReqParams.configuredMcstBcstFilterSetting =
Jeff Johnson295189b2012-06-20 16:38:30 -070011262 pwdiHostResumeParams->wdiResumeParams.ucConfiguredMcstBcstFilterSetting;
Jeff Johnsone7245742012-09-05 17:12:55 -070011263
11264 wpalMemoryCopy( pSendBuffer+usDataOffset,
11265 &halResumeReqParams,
11266 sizeof(halResumeReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070011267
11268 pWDICtx->wdiReqStatusCB = pwdiHostResumeParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011269 pWDICtx->pReqStatusUserData = pwdiHostResumeParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011270
11271 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011272 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011273 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011274 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11275 wdiHostResumeRspCb, pEventData->pUserData,
11276 WDI_HOST_RESUME_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011277}/*WDI_ProcessHostResumeReq*/
11278
11279/**
Jeff Johnsone7245742012-09-05 17:12:55 -070011280 @brief Process set Tx Per Tracking Parameters Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070011281 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011282
11283 @param pWDICtx: pointer to the WLAN DAL context
11284 pEventData: pointer to the event information structure
11285
Jeff Johnson295189b2012-06-20 16:38:30 -070011286 @see
11287 @return Result of the function call
11288*/
11289WDI_Status
11290WDI_ProcessSetTxPerTrackingReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011291(
Jeff Johnson295189b2012-06-20 16:38:30 -070011292 WDI_ControlBlockType* pWDICtx,
11293 WDI_EventInfoType* pEventData
11294)
11295{
11296 WDI_SetTxPerTrackingReqParamsType* pwdiSetTxPerTrackingReqParams = NULL;
11297 WDI_SetTxPerTrackingRspCb pwdiSetTxPerTrackingRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070011298 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011299 wpt_uint16 usDataOffset = 0;
11300 wpt_uint16 usSendSize = 0;
11301 tHalTxPerTrackingReqParam halTxPerTrackingReqParam;
11302 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11303
11304 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011305 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011306 -------------------------------------------------------------------------*/
11307 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
11308 ( NULL == pEventData->pCBfnc ))
11309 {
11310 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011311 "%s: Invalid parameters ",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011312 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011313 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011314 }
11315
11316 pwdiSetTxPerTrackingReqParams = (WDI_SetTxPerTrackingReqParamsType*)pEventData->pEventData;
11317 pwdiSetTxPerTrackingRspCb = (WDI_SetTxPerTrackingRspCb)pEventData->pCBfnc;
Jeff Johnsone7245742012-09-05 17:12:55 -070011318
Jeff Johnson295189b2012-06-20 16:38:30 -070011319 /*-----------------------------------------------------------------------
11320 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070011321 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070011322 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011323 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_TX_PER_TRACKING_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011324 sizeof(halTxPerTrackingReqParam),
11325 &pSendBuffer, &usDataOffset, &usSendSize))||
11326 ( usSendSize < (usDataOffset + sizeof(halTxPerTrackingReqParam) )))
11327 {
11328 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080011329 "Unable to get send buffer in set tx per tracking req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070011330 pEventData, pwdiSetTxPerTrackingReqParams, pwdiSetTxPerTrackingRspCb);
11331 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011332 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011333 }
Jeff Johnsone7245742012-09-05 17:12:55 -070011334
Jeff Johnson295189b2012-06-20 16:38:30 -070011335 halTxPerTrackingReqParam.ucTxPerTrackingEnable = pwdiSetTxPerTrackingReqParams->wdiTxPerTrackingParam.ucTxPerTrackingEnable;
11336 halTxPerTrackingReqParam.ucTxPerTrackingPeriod = pwdiSetTxPerTrackingReqParams->wdiTxPerTrackingParam.ucTxPerTrackingPeriod;
11337 halTxPerTrackingReqParam.ucTxPerTrackingRatio = pwdiSetTxPerTrackingReqParams->wdiTxPerTrackingParam.ucTxPerTrackingRatio;
11338 halTxPerTrackingReqParam.uTxPerTrackingWatermark = pwdiSetTxPerTrackingReqParams->wdiTxPerTrackingParam.uTxPerTrackingWatermark;
Jeff Johnsone7245742012-09-05 17:12:55 -070011339
11340 wpalMemoryCopy( pSendBuffer+usDataOffset,
11341 &halTxPerTrackingReqParam,
11342 sizeof(halTxPerTrackingReqParam));
Jeff Johnson295189b2012-06-20 16:38:30 -070011343
11344 pWDICtx->wdiReqStatusCB = pwdiSetTxPerTrackingReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011345 pWDICtx->pReqStatusUserData = pwdiSetTxPerTrackingReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011346
11347 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011348 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011349 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011350 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11351 pwdiSetTxPerTrackingRspCb, pEventData->pUserData, WDI_SET_TX_PER_TRACKING_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011352}/*WDI_ProcessSetTxPerTrackingReq*/
11353
11354/*=========================================================================
11355 Indications
11356=========================================================================*/
11357
11358/**
11359 @brief Process Suspend Indications function (called when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011360
11361 @param pWDICtx: pointer to the WLAN DAL context
11362 pEventData: pointer to the event information structure
11363
Jeff Johnson295189b2012-06-20 16:38:30 -070011364 @see
11365 @return Result of the function call
11366*/
11367WDI_Status
11368WDI_ProcessHostSuspendInd
Jeff Johnsone7245742012-09-05 17:12:55 -070011369(
Jeff Johnson295189b2012-06-20 16:38:30 -070011370 WDI_ControlBlockType* pWDICtx,
11371 WDI_EventInfoType* pEventData
11372)
11373{
11374 WDI_SuspendParamsType *pSuspendIndParams;
Jeff Johnsone7245742012-09-05 17:12:55 -070011375 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011376 wpt_uint16 usDataOffset = 0;
11377 wpt_uint16 usSendSize = 0;
11378 WDI_Status wdiStatus;
11379 tHalWlanHostSuspendIndParam halWlanSuspendIndparams;
11380 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11381
11382 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011383 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011384 -------------------------------------------------------------------------*/
11385 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
11386 {
11387 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011388 "%s: Invalid parameters in Suspend ind",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011389 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011390 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011391 }
11392
11393 pSuspendIndParams = (WDI_SuspendParamsType *)pEventData->pEventData;
11394
11395 /*-----------------------------------------------------------------------
11396 Get message buffer
11397 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011398 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
11399 WDI_HOST_SUSPEND_IND,
Jeff Johnson295189b2012-06-20 16:38:30 -070011400 sizeof(halWlanSuspendIndparams),
11401 &pSendBuffer, &usDataOffset, &usSendSize))||
11402 (usSendSize < (usDataOffset + sizeof(halWlanSuspendIndparams))))
11403 {
11404 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11405 "Unable to get send buffer in Suspend Ind ");
11406 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011407 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011408 }
11409
11410 halWlanSuspendIndparams.configuredMcstBcstFilterSetting =
11411 pSuspendIndParams->wdiSuspendParams.ucConfiguredMcstBcstFilterSetting;
11412
Jeff Johnsone7245742012-09-05 17:12:55 -070011413 halWlanSuspendIndparams.activeSessionCount =
Hoonki Lee9af07cf2013-04-24 01:21:58 -070011414 WDI_GetActiveSessionsCount(pWDICtx, NULL, eWLAN_PAL_TRUE);
Jeff Johnson295189b2012-06-20 16:38:30 -070011415
Jeff Johnsone7245742012-09-05 17:12:55 -070011416 wpalMemoryCopy( pSendBuffer+usDataOffset, &halWlanSuspendIndparams,
11417 sizeof(tHalWlanHostSuspendIndParam));
Jeff Johnson295189b2012-06-20 16:38:30 -070011418
11419 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011420 Send Suspend Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011421 -------------------------------------------------------------------------*/
11422 pWDICtx->wdiReqStatusCB = pSuspendIndParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011423 pWDICtx->pReqStatusUserData = pSuspendIndParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011424
Jeff Johnsone7245742012-09-05 17:12:55 -070011425 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070011426 return ( wdiStatus != WDI_STATUS_SUCCESS )?wdiStatus:WDI_STATUS_SUCCESS_SYNC;
11427}/*WDI_ProcessHostSuspendInd*/
11428
Madan Mohan Koyyalamudi01cba042013-01-10 21:56:05 -080011429
11430
11431/**
11432 @brief Process Traffic Stats Indications function (called when Main FSM allows it)
11433
11434 @param pWDICtx: pointer to the WLAN DAL context
11435 pEventData: pointer to the event information structure
11436
11437 @see
11438 @return Result of the function call
11439*/
11440WDI_Status
11441WDI_ProcessTrafficStatsInd
11442(
11443 WDI_ControlBlockType* pWDICtx,
11444 WDI_EventInfoType* pEventData
11445)
11446{
11447 WDI_TrafficStatsIndType* pTrafficStatsIndParams;
11448 wpt_uint8* pSendBuffer = NULL;
11449 wpt_uint16 usDataOffset = 0;
11450 wpt_uint16 usSendSize = 0;
11451 WDI_Status wdiStatus;
11452 tStatsClassBIndParams* pStatsClassBIndParams;
11453 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11454
11455 /*-------------------------------------------------------------------------
11456 Sanity check
11457 -------------------------------------------------------------------------*/
11458 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
11459 {
11460 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11461 "%s: Invalid parameters in Traffic Stats ind",__func__);
11462 WDI_ASSERT(0);
11463 return WDI_STATUS_E_FAILURE;
11464 }
11465
11466 pTrafficStatsIndParams = (WDI_TrafficStatsIndType *)pEventData->pEventData;
11467
11468 if(pTrafficStatsIndParams->length != sizeof(tStaStatsClassB)*(HAL_NUM_STA))
11469 {
11470 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11471 "%s: Invalid parameters in Traffic Stats ind",__func__);
11472 WDI_ASSERT(0);
11473 return WDI_STATUS_E_FAILURE;
11474 }
11475
11476 /*-----------------------------------------------------------------------
11477 Get message buffer
11478 -----------------------------------------------------------------------*/
11479 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
11480 WDI_TRAFFIC_STATS_IND,
11481 sizeof(tStatsClassBIndParams),
11482 &pSendBuffer, &usDataOffset, &usSendSize))||
11483 (usSendSize < (usDataOffset + sizeof(tStatsClassBIndParams))))
11484 {
11485 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
11486 "Unable to get send buffer in Traffic Stats Ind ");
11487 WDI_ASSERT(0);
11488 return WDI_STATUS_E_FAILURE;
11489 }
11490
11491 pStatsClassBIndParams = (tStatsClassBIndParams*)(pSendBuffer+usDataOffset);
11492
11493 pStatsClassBIndParams->duration = pTrafficStatsIndParams->duration;
11494
11495 wpalMemoryCopy(pStatsClassBIndParams->staStatsClassB,
11496 pTrafficStatsIndParams->pTrafficStats,
11497 pTrafficStatsIndParams->length);
11498
11499 /*-------------------------------------------------------------------------
11500 Send Suspend Request to HAL
11501 -------------------------------------------------------------------------*/
11502 pWDICtx->wdiReqStatusCB = pTrafficStatsIndParams->wdiReqStatusCB;
11503 pWDICtx->pReqStatusUserData = pTrafficStatsIndParams->pUserData;
11504
11505 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
11506 return ( wdiStatus != WDI_STATUS_SUCCESS )?wdiStatus:WDI_STATUS_SUCCESS_SYNC;
11507}/*WDI_ProcessTrafficStatsInd*/
11508
Chet Lanctot186b5732013-03-18 10:26:30 -070011509#ifdef WLAN_FEATURE_11W
11510/**
11511 @brief Process Exclude Unencrypted Indications function (called
11512 when Main FSM allows it)
11513
11514 @param pWDICtx: pointer to the WLAN DAL context
11515 pEventData: pointer to the event information structure
11516
11517 @see
11518 @return Result of the function call
11519*/
11520WDI_Status
11521WDI_ProcessExcludeUnencryptInd
11522(
11523 WDI_ControlBlockType* pWDICtx,
11524 WDI_EventInfoType* pEventData
11525)
11526{
11527 WDI_ExcludeUnencryptIndType* pWDIExcUnencIndParams;
11528 wpt_uint8* pSendBuffer = NULL;
11529 wpt_uint16 usDataOffset = 0;
11530 wpt_uint16 usSendSize = 0;
11531 WDI_Status wdiStatus;
11532 tHalWlanExcludeUnEncryptedIndParam* pHalExcUnencIndParams;
11533 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11534
11535 /*-------------------------------------------------------------------------
11536 Sanity check
11537 -------------------------------------------------------------------------*/
11538 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
11539 {
11540 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11541 "%s: Invalid parameters in Exclude Unencrypted ind",__func__);
11542 WDI_ASSERT(0);
11543 return WDI_STATUS_E_FAILURE;
11544 }
11545
11546 pWDIExcUnencIndParams = (WDI_ExcludeUnencryptIndType *)pEventData->pEventData;
11547
11548 /*-----------------------------------------------------------------------
11549 Get message buffer
11550 -----------------------------------------------------------------------*/
11551 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
11552 WDI_EXCLUDE_UNENCRYPTED_IND,
11553 sizeof(tHalWlanExcludeUnEncryptedIndParam),
11554 &pSendBuffer, &usDataOffset, &usSendSize))||
11555 (usSendSize < (usDataOffset + sizeof(tHalWlanExcludeUnEncryptedIndParam))))
11556 {
11557 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
11558 "Unable to get send buffer in Exclude Unencrypted Ind ");
11559 WDI_ASSERT(0);
11560 return WDI_STATUS_E_FAILURE;
11561 }
11562
11563 pHalExcUnencIndParams = (tHalWlanExcludeUnEncryptedIndParam*)(pSendBuffer+usDataOffset);
11564
11565 pHalExcUnencIndParams->bDot11ExcludeUnencrypted = pWDIExcUnencIndParams->bExcludeUnencrypt;
11566
11567 wpalMemoryCopy(pHalExcUnencIndParams->bssId,
11568 pWDIExcUnencIndParams->bssid, WDI_MAC_ADDR_LEN);
11569
11570 /*-------------------------------------------------------------------------
11571 Send Suspend Request to HAL
11572 -------------------------------------------------------------------------*/
11573 pWDICtx->wdiReqStatusCB = pWDIExcUnencIndParams->wdiReqStatusCB;
11574 pWDICtx->pReqStatusUserData = pWDIExcUnencIndParams->pUserData;
11575
11576 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
11577 return ( wdiStatus != WDI_STATUS_SUCCESS )?wdiStatus:WDI_STATUS_SUCCESS_SYNC;
11578}/*WDI_ProcessExcludeUnencryptInd*/
11579#endif
11580
Yue Mab9c86f42013-08-14 15:59:08 -070011581/**
11582 @brief Process Add Periodic Tx Pattern Indication function (called when
11583 Main FSM allows it)
11584
11585 @param pWDICtx: pointer to the WLAN DAL context
11586 pEventData: pointer to the event information structure
11587
11588 @see
11589 @return Result of the function call
11590*/
11591WDI_Status
11592WDI_ProcessAddPeriodicTxPtrnInd
11593(
11594 WDI_ControlBlockType* pWDICtx,
11595 WDI_EventInfoType* pEventData
11596)
11597{
11598 WDI_AddPeriodicTxPtrnParamsType *pAddPeriodicTxPtrnParams;
11599 wpt_uint8* pSendBuffer = NULL;
11600 wpt_uint16 usDataOffset = 0;
11601 wpt_uint16 usSendSize = 0;
11602 WDI_Status wdiStatus;
11603 tHalAddPeriodicTxPtrn *halAddPeriodicTxPtrn;
11604 wpt_uint8 selfStaIdx = 0;
11605
11606 /*-------------------------------------------------------------------------
11607 Sanity check
11608 -------------------------------------------------------------------------*/
11609 if ((NULL == pEventData) || (NULL == pEventData->pEventData))
11610 {
11611 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11612 "%s: Invalid parameters in AddPeriodicTxPtrnInd!", __func__);
11613 WDI_ASSERT(0);
11614 return WDI_STATUS_E_FAILURE;
11615 }
11616
11617 pAddPeriodicTxPtrnParams =
11618 (WDI_AddPeriodicTxPtrnParamsType *)pEventData->pEventData;
11619
11620 /*------------------------------------------------------------------------
11621 Get message buffer
11622 ------------------------------------------------------------------------*/
11623 if ((WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(pWDICtx,
11624 WDI_ADD_PERIODIC_TX_PATTERN_IND, sizeof(tHalAddPeriodicTxPtrn),
11625 &pSendBuffer, &usDataOffset, &usSendSize))||
11626 (usSendSize < (usDataOffset + sizeof(tHalAddPeriodicTxPtrn))))
11627 {
11628 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11629 "%s: Unable to get send buffer in AddPeriodicTxPtrnInd!",
11630 __func__);
11631 WDI_ASSERT(0);
11632 return WDI_STATUS_E_FAILURE;
11633 }
11634
11635 halAddPeriodicTxPtrn = (tHalAddPeriodicTxPtrn *)(pSendBuffer + usDataOffset);
11636
11637 if (WDI_STATUS_SUCCESS != WDI_STATableFindStaidByAddr(pWDICtx,
11638 pAddPeriodicTxPtrnParams->wdiAddPeriodicTxPtrnParams.macAddr,
11639 &selfStaIdx))
11640 {
11641 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
11642 "%s: Failed to get selfStaIdx!", __func__);
Wilson Yang00256342013-10-10 23:13:38 -070011643 wpalMemoryFree(pSendBuffer);
Yue Mab9c86f42013-08-14 15:59:08 -070011644
11645 return WDI_STATUS_E_FAILURE;
11646 }
11647
11648 halAddPeriodicTxPtrn->selfStaIdx = selfStaIdx;
11649 halAddPeriodicTxPtrn->ucPtrnId =
11650 pAddPeriodicTxPtrnParams->wdiAddPeriodicTxPtrnParams.ucPtrnId;
11651 halAddPeriodicTxPtrn->usPtrnSize =
11652 pAddPeriodicTxPtrnParams->wdiAddPeriodicTxPtrnParams.ucPtrnSize;
11653 halAddPeriodicTxPtrn->uPtrnIntervalMs =
11654 pAddPeriodicTxPtrnParams->wdiAddPeriodicTxPtrnParams.usPtrnIntervalMs;
11655
11656 wpalMemoryCopy(halAddPeriodicTxPtrn->ucPattern,
11657 pAddPeriodicTxPtrnParams->wdiAddPeriodicTxPtrnParams.ucPattern,
11658 pAddPeriodicTxPtrnParams->wdiAddPeriodicTxPtrnParams.ucPtrnSize);
11659
11660 /*-------------------------------------------------------------------------
11661 Send Indication to HAL
11662 -------------------------------------------------------------------------*/
11663 pWDICtx->wdiReqStatusCB = pAddPeriodicTxPtrnParams->wdiReqStatusCB;
11664 pWDICtx->pReqStatusUserData = pAddPeriodicTxPtrnParams->pUserData;
11665
11666 wdiStatus = WDI_SendIndication(pWDICtx, pSendBuffer, usSendSize);
11667
11668 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
11669 "%s: Sent WLAN_HAL_ADD_PERIODIC_TX_PTRN_IND to HAL.", __func__);
11670
11671 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus : WDI_STATUS_SUCCESS_SYNC;
11672} /* WDI_ProcessAddPeriodicTxPtrnInd */
11673
11674/**
11675 @brief Process Delete Periodic Tx Pattern Indication function (called when
11676 Main FSM allows it)
11677
11678 @param pWDICtx: pointer to the WLAN DAL context
11679 pEventData: pointer to the event information structure
11680
11681 @see
11682 @return Result of the function call
11683*/
11684WDI_Status
11685WDI_ProcessDelPeriodicTxPtrnInd
11686(
11687 WDI_ControlBlockType* pWDICtx,
11688 WDI_EventInfoType* pEventData
11689)
11690{
11691 WDI_DelPeriodicTxPtrnParamsType *pDelPeriodicTxPtrnParams;
11692 wpt_uint8* pSendBuffer = NULL;
11693 wpt_uint16 usDataOffset = 0;
11694 wpt_uint16 usSendSize = 0;
11695 WDI_Status wdiStatus;
11696 tHalDelPeriodicTxPtrn *halDelPeriodicTxPtrn;
11697 wpt_uint8 selfStaIdx = 0;
11698
11699 /*-------------------------------------------------------------------------
11700 Sanity check
11701 -------------------------------------------------------------------------*/
11702 if ((NULL == pEventData) || (NULL == pEventData->pEventData))
11703 {
11704 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11705 "%s: Invalid parameters in DelPeriodicTxPtrnInd!", __func__);
11706 WDI_ASSERT(0);
11707 return WDI_STATUS_E_FAILURE;
11708 }
11709
11710 pDelPeriodicTxPtrnParams =
11711 (WDI_DelPeriodicTxPtrnParamsType *)pEventData->pEventData;
11712
11713 /*------------------------------------------------------------------------
11714 Get message buffer
11715 ------------------------------------------------------------------------*/
11716 if ((WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(pWDICtx,
11717 WDI_DEL_PERIODIC_TX_PATTERN_IND, sizeof(tHalDelPeriodicTxPtrn),
11718 &pSendBuffer, &usDataOffset, &usSendSize))||
11719 (usSendSize < (usDataOffset + sizeof(tHalDelPeriodicTxPtrn))))
11720 {
11721 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11722 "%s: Unable to get send buffer in DelPeriodicTxPtrnInd!",
11723 __func__);
11724 WDI_ASSERT(0);
11725 return WDI_STATUS_E_FAILURE;
11726 }
11727
11728 halDelPeriodicTxPtrn = (tHalDelPeriodicTxPtrn *)(pSendBuffer + usDataOffset);
11729
11730 if (WDI_STATUS_SUCCESS != WDI_STATableFindStaidByAddr(pWDICtx,
11731 pDelPeriodicTxPtrnParams->wdiDelPeriodicTxPtrnParams.macAddr,
11732 &selfStaIdx))
11733 {
11734 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
11735 "%s: Failed to get selfStaIdx!", __func__);
Wilson Yang00256342013-10-10 23:13:38 -070011736 wpalMemoryFree(pSendBuffer);
Yue Mab9c86f42013-08-14 15:59:08 -070011737
11738 return WDI_STATUS_E_FAILURE;
11739 }
11740
11741 halDelPeriodicTxPtrn->selfStaIdx = selfStaIdx;
11742 halDelPeriodicTxPtrn->uPatternIdBitmap =
11743 pDelPeriodicTxPtrnParams->wdiDelPeriodicTxPtrnParams.ucPatternIdBitmap;
11744
11745 /*-------------------------------------------------------------------------
11746 Send Indication to HAL
11747 -------------------------------------------------------------------------*/
11748 pWDICtx->wdiReqStatusCB = pDelPeriodicTxPtrnParams->wdiReqStatusCB;
11749 pWDICtx->pReqStatusUserData = pDelPeriodicTxPtrnParams->pUserData;
11750
11751 wdiStatus = WDI_SendIndication(pWDICtx, pSendBuffer, usSendSize);
11752
11753 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
11754 "%s: Sent WLAN_HAL_DEL_PERIODIC_TX_PTRN_IND to HAL.", __func__);
11755
11756 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus : WDI_STATUS_SUCCESS_SYNC;
11757} /* WDI_ProcessDelPeriodicTxPtrnInd */
11758
Jeff Johnson295189b2012-06-20 16:38:30 -070011759/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070011760 MISC CONTROL PROCESSING REQUEST API
Jeff Johnson295189b2012-06-20 16:38:30 -070011761==========================================================================*/
11762/**
Jeff Johnsone7245742012-09-05 17:12:55 -070011763 @brief Process Channel Switch Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070011764 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011765
11766 @param pWDICtx: pointer to the WLAN DAL context
11767 pEventData: pointer to the event information structure
11768
Jeff Johnson295189b2012-06-20 16:38:30 -070011769 @see
11770 @return Result of the function call
11771*/
11772WDI_Status
11773WDI_ProcessChannelSwitchReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011774(
Jeff Johnson295189b2012-06-20 16:38:30 -070011775 WDI_ControlBlockType* pWDICtx,
11776 WDI_EventInfoType* pEventData
11777)
11778{
11779 WDI_SwitchChReqParamsType* pwdiSwitchChParams;
11780 WDI_SwitchChRspCb wdiSwitchChRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011781 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011782 wpt_uint16 usDataOffset = 0;
11783 wpt_uint16 usSendSize = 0;
11784 tSwitchChannelReqMsg halSwitchChannelReq = {{0}};
11785 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11786
11787 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011788 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011789 -------------------------------------------------------------------------*/
11790 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
11791 ( NULL == pEventData->pCBfnc ))
11792 {
11793 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011794 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011795 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011796 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011797 }
11798
11799 pwdiSwitchChParams = (WDI_SwitchChReqParamsType*)pEventData->pEventData;
11800 wdiSwitchChRspCb = (WDI_SwitchChRspCb)pEventData->pCBfnc;
11801 /*-----------------------------------------------------------------------
11802 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070011803 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070011804 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011805 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_CH_SWITCH_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011806 sizeof(halSwitchChannelReq.switchChannelParams),
11807 &pSendBuffer, &usDataOffset, &usSendSize))||
11808 ( usSendSize < (usDataOffset + sizeof(halSwitchChannelReq.switchChannelParams) )))
11809 {
11810 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080011811 "Unable to get send buffer in channel switch req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070011812 pEventData, pwdiSwitchChParams, wdiSwitchChRspCb);
11813 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011814 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011815 }
11816
Jeff Johnsone7245742012-09-05 17:12:55 -070011817 halSwitchChannelReq.switchChannelParams.channelNumber =
Jeff Johnson295189b2012-06-20 16:38:30 -070011818 pwdiSwitchChParams->wdiChInfo.ucChannel;
Jeff Johnsone7245742012-09-05 17:12:55 -070011819#ifndef WLAN_FEATURE_VOWIFI
11820 halSwitchChannelReq.switchChannelParams.localPowerConstraint =
Jeff Johnson295189b2012-06-20 16:38:30 -070011821 pwdiSwitchChParams->wdiChInfo.ucLocalPowerConstraint;
11822#endif
Jeff Johnsone7245742012-09-05 17:12:55 -070011823 halSwitchChannelReq.switchChannelParams.secondaryChannelOffset =
Jeff Johnson295189b2012-06-20 16:38:30 -070011824 pwdiSwitchChParams->wdiChInfo.wdiSecondaryChannelOffset;
11825
11826#ifdef WLAN_FEATURE_VOWIFI
11827 halSwitchChannelReq.switchChannelParams.maxTxPower
Jeff Johnsone7245742012-09-05 17:12:55 -070011828 = pwdiSwitchChParams->wdiChInfo.cMaxTxPower;
Jeff Johnson295189b2012-06-20 16:38:30 -070011829 wpalMemoryCopy(halSwitchChannelReq.switchChannelParams.selfStaMacAddr,
11830 pwdiSwitchChParams->wdiChInfo.macSelfStaMacAddr,
11831 WDI_MAC_ADDR_LEN);
11832 wpalMemoryCopy(halSwitchChannelReq.switchChannelParams.bssId,
11833 pwdiSwitchChParams->wdiChInfo.macBSSId,
11834 WDI_MAC_ADDR_LEN);
11835#endif
Jeff Johnsone7245742012-09-05 17:12:55 -070011836 wpalMemoryCopy( pSendBuffer+usDataOffset,
11837 &halSwitchChannelReq.switchChannelParams,
11838 sizeof(halSwitchChannelReq.switchChannelParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070011839
11840 pWDICtx->wdiReqStatusCB = pwdiSwitchChParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011841 pWDICtx->pReqStatusUserData = pwdiSwitchChParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011842
11843 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011844 Send Switch Channel Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011845 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011846 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11847 wdiSwitchChRspCb, pEventData->pUserData, WDI_CH_SWITCH_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011848}/*WDI_ProcessChannelSwitchReq*/
11849
11850/**
Kalikinkar dhara1e83b772014-02-06 12:59:22 -080011851 @brief Process Channel Switch Request function (called when
11852 Main FSM allows it)
11853
11854 @param pWDICtx: pointer to the WLAN DAL context
11855 pEventData: pointer to the event information structure
11856
11857 @see
11858 @return Result of the function call
11859*/
11860WDI_Status WDI_ProcessChannelSwitchReq_V1
11861(
11862 WDI_ControlBlockType* pWDICtx,
11863 WDI_EventInfoType* pEventData
11864)
11865{
11866 WDI_SwitchChReqParamsType_V1* pwdiSwitchChParams;
11867 WDI_SwitchChRspCb_V1 wdiSwitchChRspCb;
11868 wpt_uint8* pSendBuffer = NULL;
11869 wpt_uint16 usDataOffset = 0;
11870 wpt_uint16 usSendSize = 0;
11871 tSwitchChannelReqMsg_V1 halSwitchChannelReq = {{0}};
11872 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11873
11874 /*-------------------------------------------------------------------------
11875 Sanity check
11876 -------------------------------------------------------------------------*/
11877 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
11878 ( NULL == pEventData->pCBfnc ))
11879 {
11880 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11881 "%s: Invalid parameters", __func__);
11882 WDI_ASSERT(0);
11883 return WDI_STATUS_E_FAILURE;
11884 }
11885
11886 pwdiSwitchChParams = (WDI_SwitchChReqParamsType_V1*)pEventData->pEventData;
11887 wdiSwitchChRspCb = (WDI_SwitchChRspCb_V1)pEventData->pCBfnc;
11888 /*-----------------------------------------------------------------------
11889 Get message buffer
11890 ! TO DO : proper conversion into the HAL Message Request Format
11891 -----------------------------------------------------------------------*/
11892 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
11893 WDI_CH_SWITCH_REQ_V1,
11894 sizeof(halSwitchChannelReq.switchChannelParams_V1),
11895 &pSendBuffer, &usDataOffset, &usSendSize))||
11896 ( usSendSize < (usDataOffset +
11897 sizeof(halSwitchChannelReq.switchChannelParams_V1) )))
11898 {
11899 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11900 "Unable to get send buffer in channel switch req %p %p %p",
11901 pEventData, pwdiSwitchChParams, wdiSwitchChRspCb);
11902 WDI_ASSERT(0);
11903 return WDI_STATUS_E_FAILURE;
11904 }
11905
11906 halSwitchChannelReq.switchChannelParams_V1.channelSwitchSrc =
11907 pwdiSwitchChParams->wdiChInfo.channelSwitchSrc;
11908
11909 halSwitchChannelReq.switchChannelParams_V1.channelNumber =
11910 pwdiSwitchChParams->wdiChInfo.ucChannel;
11911#ifndef WLAN_FEATURE_VOWIFI
11912 halSwitchChannelReq.switchChannelParams_V1.localPowerConstraint =
11913 pwdiSwitchChParams->wdiChInfo.ucLocalPowerConstraint;
11914#endif
11915 halSwitchChannelReq.switchChannelParams_V1.secondaryChannelOffset =
11916 pwdiSwitchChParams->wdiChInfo.wdiSecondaryChannelOffset;
11917
11918#ifdef WLAN_FEATURE_VOWIFI
11919 halSwitchChannelReq.switchChannelParams_V1.maxTxPower
11920 = pwdiSwitchChParams->wdiChInfo.cMaxTxPower;
11921 wpalMemoryCopy(halSwitchChannelReq.switchChannelParams_V1.selfStaMacAddr,
11922 pwdiSwitchChParams->wdiChInfo.macSelfStaMacAddr,
11923 WDI_MAC_ADDR_LEN);
11924 wpalMemoryCopy(halSwitchChannelReq.switchChannelParams_V1.bssId,
11925 pwdiSwitchChParams->wdiChInfo.macBSSId,
11926 WDI_MAC_ADDR_LEN);
11927#endif
11928 wpalMemoryCopy( pSendBuffer+usDataOffset,
11929 &halSwitchChannelReq.switchChannelParams_V1,
11930 sizeof(halSwitchChannelReq.switchChannelParams_V1));
11931
11932 pWDICtx->wdiReqStatusCB = pwdiSwitchChParams->wdiReqStatusCB;
11933 pWDICtx->pReqStatusUserData = pwdiSwitchChParams->pUserData;
11934
11935 /*-------------------------------------------------------------------------
11936 Send Switch Channel Request to HAL
11937 -------------------------------------------------------------------------*/
11938 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11939 wdiSwitchChRspCb, pEventData->pUserData,
11940 WDI_CH_SWITCH_RESP_V1);
11941}/*WDI_ProcessChannelSwitchReq_V1*/
11942
11943/**
Jeff Johnsone7245742012-09-05 17:12:55 -070011944 @brief Process Config STA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070011945 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011946
11947 @param pWDICtx: pointer to the WLAN DAL context
11948 pEventData: pointer to the event information structure
11949
Jeff Johnson295189b2012-06-20 16:38:30 -070011950 @see
11951 @return Result of the function call
11952*/
11953WDI_Status
11954WDI_ProcessConfigStaReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011955(
Jeff Johnson295189b2012-06-20 16:38:30 -070011956 WDI_ControlBlockType* pWDICtx,
11957 WDI_EventInfoType* pEventData
11958)
11959{
11960 WDI_ConfigSTAReqParamsType* pwdiConfigSTAParams;
11961 WDI_ConfigSTARspCb wdiConfigSTARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011962 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070011963 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070011964 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011965 wpt_uint16 usDataOffset = 0;
11966 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070011967 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070011968
Jeff Johnsone7245742012-09-05 17:12:55 -070011969 tConfigStaReqMsg halConfigStaReqMsg;
11970 wpt_uint16 uMsgSize = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070011971 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11972
11973 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011974 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011975 -------------------------------------------------------------------------*/
11976 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
11977 ( NULL == pEventData->pCBfnc ))
11978 {
11979 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011980 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011981 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011982 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011983 }
11984
Abhishek Singh6927fa02014-06-27 17:19:55 +053011985 wpalMemoryZero(&halConfigStaReqMsg, sizeof(tConfigStaReqMsg));
Jeff Johnson295189b2012-06-20 16:38:30 -070011986 pwdiConfigSTAParams = (WDI_ConfigSTAReqParamsType*)pEventData->pEventData;
11987 wdiConfigSTARspCb = (WDI_ConfigSTARspCb)pEventData->pCBfnc;
11988 /*-------------------------------------------------------------------------
11989 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070011990 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070011991 -------------------------------------------------------------------------*/
11992 wpalMutexAcquire(&pWDICtx->wptMutex);
11993
11994 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011995 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070011996 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011997 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
11998 pwdiConfigSTAParams->wdiReqInfo.macBSSID,
11999 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070012000
Jeff Johnsone7245742012-09-05 17:12:55 -070012001 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070012002 {
Jeff Johnsone7245742012-09-05 17:12:55 -070012003 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
12004 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
12005 __func__, MAC_ADDR_ARRAY(pwdiConfigSTAParams->wdiReqInfo.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070012006
12007 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070012008 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070012009 }
12010
12011 /*------------------------------------------------------------------------
12012 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070012013 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070012014 ------------------------------------------------------------------------*/
12015 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
12016 {
Jeff Johnsone7245742012-09-05 17:12:55 -070012017 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12018 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
12019 __func__, MAC_ADDR_ARRAY(pwdiConfigSTAParams->wdiReqInfo.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070012020
Jeff Johnsone7245742012-09-05 17:12:55 -070012021 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070012022 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070012023 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070012024 }
12025
12026 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070012027
12028 /* Allocation of StaReqMsg Memory Based on Firmware Capabilities */
12029#ifdef WLAN_FEATURE_11AC
12030 if (WDI_getFwWlanFeatCaps(DOT11AC))
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070012031 uMsgSize = sizeof(halConfigStaReqMsg.uStaParams.configStaParams_V1); // Version-1 For 11AC
Jeff Johnsone7245742012-09-05 17:12:55 -070012032 else
12033#endif
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070012034 uMsgSize = sizeof(halConfigStaReqMsg.uStaParams.configStaParams); // Version-0 Default
Jeff Johnsone7245742012-09-05 17:12:55 -070012035
Jeff Johnson295189b2012-06-20 16:38:30 -070012036 /*-----------------------------------------------------------------------
12037 Get message buffer
12038 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012039 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_CONFIG_STA_REQ,
12040 uMsgSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070012041 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070012042 ( usSendSize < (usDataOffset + uMsgSize )))
Jeff Johnson295189b2012-06-20 16:38:30 -070012043 {
12044 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012045 "Unable to get send buffer in config sta req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070012046 pEventData, pwdiConfigSTAParams, wdiConfigSTARspCb);
12047 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012048 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012049 }
12050
12051 /*Copy the station context*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012052 WDI_CopyWDIStaCtxToHALStaCtx( &halConfigStaReqMsg.uStaParams.configStaParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070012053 &pwdiConfigSTAParams->wdiReqInfo);
12054
12055 if(pwdiConfigSTAParams->wdiReqInfo.wdiSTAType == WDI_STA_ENTRY_SELF)
12056 {
12057 /* Need to fill in the self STA Index */
Jeff Johnsone7245742012-09-05 17:12:55 -070012058 if ( WDI_STATUS_SUCCESS !=
Jeff Johnson295189b2012-06-20 16:38:30 -070012059 WDI_STATableFindStaidByAddr(pWDICtx,
12060 pwdiConfigSTAParams->wdiReqInfo.macSTA,
Jeff Johnsone7245742012-09-05 17:12:55 -070012061 (wpt_uint8*)&halConfigStaReqMsg.uStaParams.configStaParams.staIdx ))
Jeff Johnson295189b2012-06-20 16:38:30 -070012062 {
12063 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012064 MAC_ADDRESS_STR
12065 ": This station does not exist in the WDI Station Table",
12066 MAC_ADDR_ARRAY(pwdiConfigSTAParams->wdiReqInfo.macSTA));
Jeff Johnson295189b2012-06-20 16:38:30 -070012067 wpalMutexRelease(&pWDICtx->wptMutex);
Madan Mohan Koyyalamudif244d8f2012-11-29 11:21:05 -080012068 wpalMemoryFree(pSendBuffer);
Jeff Johnsone7245742012-09-05 17:12:55 -070012069 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012070 }
12071 }
12072 else
12073 {
12074 /* Need to fill in the STA Index to invalid, since at this point we have not
12075 yet received it from HAL */
Gopichand Nakkalae7cbc5d2013-03-27 21:09:23 -070012076 halConfigStaReqMsg.uStaParams.configStaParams.staIdx = pwdiConfigSTAParams->wdiReqInfo.staIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070012077 }
12078
12079 /* Need to fill in the BSS index */
Jeff Johnsone7245742012-09-05 17:12:55 -070012080 halConfigStaReqMsg.uStaParams.configStaParams.bssIdx = pBSSSes->ucBSSIdx;
Madan Mohan Koyyalamudi0e4acab2012-11-02 12:46:40 -070012081
Jeff Johnsone7245742012-09-05 17:12:55 -070012082 wpalMemoryCopy( pSendBuffer+usDataOffset,
12083 &halConfigStaReqMsg.uStaParams,
Madan Mohan Koyyalamudi0e4acab2012-11-02 12:46:40 -070012084 uMsgSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070012085
12086 pWDICtx->wdiReqStatusCB = pwdiConfigSTAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012087 pWDICtx->pReqStatusUserData = pwdiConfigSTAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012088
Jeff Johnsone7245742012-09-05 17:12:55 -070012089 wpalMemoryCopy( &pWDICtx->wdiCachedConfigStaReq,
12090 pwdiConfigSTAParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070012091 sizeof(pWDICtx->wdiCachedConfigStaReq));
12092
12093 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012094 Send Config STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012095 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012096 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12097 wdiConfigSTARspCb, pEventData->pUserData, WDI_CONFIG_STA_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012098}/*WDI_ProcessConfigStaReq*/
12099
12100
12101/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012102 @brief Process Set Link State Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070012103 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012104
12105 @param pWDICtx: pointer to the WLAN DAL context
12106 pEventData: pointer to the event information structure
12107
Jeff Johnson295189b2012-06-20 16:38:30 -070012108 @see
12109 @return Result of the function call
12110*/
12111WDI_Status
12112WDI_ProcessSetLinkStateReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012113(
Jeff Johnson295189b2012-06-20 16:38:30 -070012114 WDI_ControlBlockType* pWDICtx,
12115 WDI_EventInfoType* pEventData
12116)
12117{
12118 WDI_SetLinkReqParamsType* pwdiSetLinkParams;
12119 WDI_SetLinkStateRspCb wdiSetLinkRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070012120 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070012121 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070012122 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012123 wpt_uint16 usDataOffset = 0;
12124 wpt_uint16 usSendSize = 0;
12125 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnsone7245742012-09-05 17:12:55 -070012126 tLinkStateParams halLinkStateReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070012127 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12128
12129 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012130 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012131 -------------------------------------------------------------------------*/
12132 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
12133 ( NULL == pEventData->pCBfnc ))
12134 {
12135 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012136 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012137 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012138 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012139 }
12140
12141 pwdiSetLinkParams = (WDI_SetLinkReqParamsType*)pEventData->pEventData;
12142 wdiSetLinkRspCb = (WDI_SetLinkStateRspCb)pEventData->pCBfnc;
12143 /*-------------------------------------------------------------------------
12144 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070012145 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070012146 -------------------------------------------------------------------------*/
12147 wpalMutexAcquire(&pWDICtx->wptMutex);
12148
12149 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012150 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070012151 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012152 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
12153 pwdiSetLinkParams->wdiLinkInfo.macBSSID,
12154 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070012155
Jeff Johnsone7245742012-09-05 17:12:55 -070012156 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070012157 {
Madan Mohan Koyyalamudi891e9492012-10-21 12:19:31 -070012158 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070012159 "%s: Set link request received outside association session. macBSSID " MAC_ADDRESS_STR,
12160 __func__, MAC_ADDR_ARRAY(pwdiSetLinkParams->wdiLinkInfo.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070012161 }
12162 else
12163 {
12164 /*------------------------------------------------------------------------
12165 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070012166 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070012167 ------------------------------------------------------------------------*/
12168 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
12169 {
Jeff Johnsone7245742012-09-05 17:12:55 -070012170 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12171 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
12172 __func__, MAC_ADDR_ARRAY(pwdiSetLinkParams->wdiLinkInfo.macBSSID));
12173
12174 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070012175 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070012176 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070012177 }
12178 }
12179 /* If the link is set to enter IDLE - the Session allocated for this BSS
12180 will be deleted on the Set Link State response coming from HAL
12181 - cache the request for response processing */
Jeff Johnsone7245742012-09-05 17:12:55 -070012182 wpalMemoryCopy(&pWDICtx->wdiCacheSetLinkStReq, pwdiSetLinkParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070012183 sizeof(pWDICtx->wdiCacheSetLinkStReq));
12184
12185 wpalMutexRelease(&pWDICtx->wptMutex);
12186 /*-----------------------------------------------------------------------
12187 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070012188 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070012189 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012190
12191 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_LINK_ST_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012192 sizeof(halLinkStateReqMsg),
12193 &pSendBuffer, &usDataOffset, &usSendSize))||
12194 ( usSendSize < (usDataOffset + sizeof(halLinkStateReqMsg) )))
12195 {
12196 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012197 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070012198 pEventData, pwdiSetLinkParams, wdiSetLinkRspCb);
12199 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012200 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012201 }
12202
12203 wpalMemoryCopy(halLinkStateReqMsg.bssid,
12204 pwdiSetLinkParams->wdiLinkInfo.macBSSID, WDI_MAC_ADDR_LEN);
12205
12206 wpalMemoryCopy(halLinkStateReqMsg.selfMacAddr,
12207 pwdiSetLinkParams->wdiLinkInfo.macSelfStaMacAddr, WDI_MAC_ADDR_LEN);
12208
Jeff Johnsone7245742012-09-05 17:12:55 -070012209 halLinkStateReqMsg.state =
Jeff Johnson295189b2012-06-20 16:38:30 -070012210 WDI_2_HAL_LINK_STATE(pwdiSetLinkParams->wdiLinkInfo.wdiLinkState);
12211
Jeff Johnsone7245742012-09-05 17:12:55 -070012212 wpalMemoryCopy( pSendBuffer+usDataOffset,
12213 &halLinkStateReqMsg,
12214 sizeof(halLinkStateReqMsg));
Jeff Johnson295189b2012-06-20 16:38:30 -070012215
12216 pWDICtx->wdiReqStatusCB = pwdiSetLinkParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012217 pWDICtx->pReqStatusUserData = pwdiSetLinkParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012218
12219 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012220 Send Set Link State Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012221 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012222 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12223 wdiSetLinkRspCb, pEventData->pUserData, WDI_SET_LINK_ST_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012224}/*WDI_ProcessSetLinkStateReq*/
12225
12226
12227/**
12228 @brief Process Get Stats Request function (called when Main FSM
12229 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012230
12231 @param pWDICtx: pointer to the WLAN DAL context
12232 pEventData: pointer to the event information structure
12233
Jeff Johnson295189b2012-06-20 16:38:30 -070012234 @see
12235 @return Result of the function call
12236*/
12237WDI_Status
12238WDI_ProcessGetStatsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012239(
Jeff Johnson295189b2012-06-20 16:38:30 -070012240 WDI_ControlBlockType* pWDICtx,
12241 WDI_EventInfoType* pEventData
12242)
12243{
12244 WDI_GetStatsReqParamsType* pwdiGetStatsParams;
12245 WDI_GetStatsRspCb wdiGetStatsRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070012246 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012247 wpt_uint16 usDataOffset = 0;
12248 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070012249 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070012250 WDI_BSSSessionType* pBSSSes = NULL;
12251 wpt_macAddr macBSSID;
Jeff Johnsone7245742012-09-05 17:12:55 -070012252 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070012253 tHalStatsReqMsg halStatsReqMsg;
12254 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12255
12256 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012257 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012258 -------------------------------------------------------------------------*/
12259 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData) ||
12260 ( NULL == pEventData->pCBfnc ) )
12261 {
12262 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012263 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012264 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012265 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012266 }
12267
12268 pwdiGetStatsParams = (WDI_GetStatsReqParamsType*)pEventData->pEventData;
12269 wdiGetStatsRspCb = (WDI_GetStatsRspCb)pEventData->pCBfnc;
12270
12271 /*-------------------------------------------------------------------------
12272 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070012273 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070012274 -------------------------------------------------------------------------*/
12275 wpalMutexAcquire(&pWDICtx->wptMutex);
12276
12277 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012278 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070012279 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012280 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
12281 pwdiGetStatsParams->wdiGetStatsParamsInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070012282 &macBSSID))
12283 {
12284 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012285 "This station does not exist in the WDI Station Table %d",
12286 pwdiGetStatsParams->wdiGetStatsParamsInfo.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070012287 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070012288 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012289 }
12290
Jeff Johnsone7245742012-09-05 17:12:55 -070012291 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
12292 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070012293 {
Jeff Johnsone7245742012-09-05 17:12:55 -070012294 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
12295 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
12296 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070012297
12298 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070012299 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070012300 }
12301
12302 /*------------------------------------------------------------------------
12303 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070012304 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070012305 ------------------------------------------------------------------------*/
12306 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
12307 {
Jeff Johnsone7245742012-09-05 17:12:55 -070012308 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12309 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
12310 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070012311
Jeff Johnsone7245742012-09-05 17:12:55 -070012312 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070012313 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070012314 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070012315 }
12316
12317
12318 wpalMutexRelease(&pWDICtx->wptMutex);
12319
12320 /*-----------------------------------------------------------------------
12321 Get message buffer
12322 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012323 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_GET_STATS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012324 sizeof(halStatsReqMsg.statsReqParams),
12325 &pSendBuffer, &usDataOffset, &usSendSize))||
12326 ( usSendSize < (usDataOffset + sizeof(halStatsReqMsg.statsReqParams) )))
12327 {
12328 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012329 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070012330 pEventData, pwdiGetStatsParams, wdiGetStatsRspCb);
12331 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012332 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012333 }
12334
Jeff Johnsone7245742012-09-05 17:12:55 -070012335 halStatsReqMsg.statsReqParams.staId =
Jeff Johnson295189b2012-06-20 16:38:30 -070012336 pwdiGetStatsParams->wdiGetStatsParamsInfo.ucSTAIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070012337 halStatsReqMsg.statsReqParams.statsMask =
Jeff Johnson295189b2012-06-20 16:38:30 -070012338 pwdiGetStatsParams->wdiGetStatsParamsInfo.uStatsMask;
Jeff Johnsone7245742012-09-05 17:12:55 -070012339 wpalMemoryCopy( pSendBuffer+usDataOffset,
12340 &halStatsReqMsg.statsReqParams,
12341 sizeof(halStatsReqMsg.statsReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070012342
12343 pWDICtx->wdiReqStatusCB = pwdiGetStatsParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012344 pWDICtx->pReqStatusUserData = pwdiGetStatsParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012345
12346 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012347 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012348 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012349 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12350 wdiGetStatsRspCb, pEventData->pUserData, WDI_GET_STATS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012351}/*WDI_ProcessGetStatsReq*/
12352
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -080012353#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_ESE || defined(FEATURE_WLAN_LFR)
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -080012354/**
12355 @brief Process Get Roam Rssi Request function (called when Main FSM
12356 allows it)
12357
12358 @param pWDICtx: pointer to the WLAN DAL context
12359 pEventData: pointer to the event information structure
12360
12361 @see
12362 @return Result of the function call
12363*/
12364WDI_Status
12365WDI_ProcessGetRoamRssiReq
12366(
12367 WDI_ControlBlockType* pWDICtx,
12368 WDI_EventInfoType* pEventData
12369)
12370{
12371 WDI_GetRoamRssiReqParamsType* pwdiGetRoamRssiParams;
12372 WDI_GetStatsRspCb wdiGetStatsRspCb;
12373 wpt_uint8* pSendBuffer = NULL;
12374 wpt_uint16 usDataOffset = 0;
12375 wpt_uint16 usSendSize = 0;
12376 wpt_uint8 ucCurrentBSSSesIdx = 0;
12377 WDI_BSSSessionType* pBSSSes = NULL;
12378 wpt_macAddr macBSSID;
12379 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
12380 tHalGetRoamRssiReqMsg halRssiRoamReqMsg;
12381 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12382 /*-------------------------------------------------------------------------
12383 Sanity check
12384 -------------------------------------------------------------------------*/
12385 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData) ||
12386 ( NULL == pEventData->pCBfnc ) )
12387 {
12388 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12389 "%s: Invalid parameters", __func__);
12390 WDI_ASSERT(0);
12391 return WDI_STATUS_E_FAILURE;
12392 }
12393
12394 pwdiGetRoamRssiParams = (WDI_GetRoamRssiReqParamsType*)pEventData->pEventData;
12395 wdiGetStatsRspCb = (WDI_GetStatsRspCb)pEventData->pCBfnc;
12396
12397 /*-------------------------------------------------------------------------
12398 Check to see if we are in the middle of an association, if so queue, if
12399 not it means it is free to process request
12400 -------------------------------------------------------------------------*/
12401 wpalMutexAcquire(&pWDICtx->wptMutex);
12402
12403 /*------------------------------------------------------------------------
12404 Find the BSS for which the request is made
12405 ------------------------------------------------------------------------*/
12406 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
12407 pwdiGetRoamRssiParams->wdiGetRoamRssiParamsInfo.ucSTAIdx,
12408 &macBSSID))
12409 {
12410 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012411 "This station does not exist in the WDI Station Table %d",
12412 pwdiGetRoamRssiParams->wdiGetRoamRssiParamsInfo.ucSTAIdx);
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -080012413 wpalMutexRelease(&pWDICtx->wptMutex);
12414 return WDI_STATUS_E_FAILURE;
12415 }
12416
12417 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
12418 if ( NULL == pBSSSes )
12419 {
12420 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
12421 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
12422 __func__, MAC_ADDR_ARRAY(macBSSID));
12423
12424 wpalMutexRelease(&pWDICtx->wptMutex);
12425 return WDI_STATUS_E_NOT_ALLOWED;
12426 }
12427
12428 /*------------------------------------------------------------------------
12429 Check if this BSS is being currently processed or queued,
12430 if queued - queue the new request as well
12431 ------------------------------------------------------------------------*/
12432 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
12433 {
12434 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12435 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
12436 __func__, MAC_ADDR_ARRAY(macBSSID));
12437
12438 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
12439 wpalMutexRelease(&pWDICtx->wptMutex);
12440 return wdiStatus;
12441 }
12442
12443 wpalMutexRelease(&pWDICtx->wptMutex);
12444
12445 /*-----------------------------------------------------------------------
12446 Get message buffer
12447 -----------------------------------------------------------------------*/
12448 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_GET_ROAM_RSSI_REQ,
12449 sizeof(halRssiRoamReqMsg.roamRssiReqParams),
12450 &pSendBuffer, &usDataOffset, &usSendSize))||
12451 ( usSendSize < (usDataOffset + sizeof(halRssiRoamReqMsg.roamRssiReqParams) )))
12452 {
12453 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012454 "Unable to get send buffer in set bss key req %p %p %p",
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -080012455 pEventData, pwdiGetRoamRssiParams, wdiGetStatsRspCb);
12456 WDI_ASSERT(0);
12457 return WDI_STATUS_E_FAILURE;
12458 }
12459
12460 halRssiRoamReqMsg.roamRssiReqParams.staId =
12461 pwdiGetRoamRssiParams->wdiGetRoamRssiParamsInfo.ucSTAIdx;
12462 wpalMemoryCopy( pSendBuffer+usDataOffset,
12463 &halRssiRoamReqMsg.roamRssiReqParams,
12464 sizeof(halRssiRoamReqMsg.roamRssiReqParams));
12465
12466 pWDICtx->wdiReqStatusCB = pwdiGetRoamRssiParams->wdiReqStatusCB;
12467 pWDICtx->pReqStatusUserData = pwdiGetRoamRssiParams->pUserData;
12468
12469 /*-------------------------------------------------------------------------
12470 Send Get STA Request to HAL
12471 -------------------------------------------------------------------------*/
12472 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12473 wdiGetStatsRspCb, pEventData->pUserData, WDI_GET_ROAM_RSSI_RESP);
12474}/*WDI_ProcessGetRoamRssiReq*/
12475#endif
12476
Jeff Johnson295189b2012-06-20 16:38:30 -070012477/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012478 @brief Process Update Cfg Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070012479 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012480
12481 @param pWDICtx: pointer to the WLAN DAL context
12482 pEventData: pointer to the event information structure
12483
Jeff Johnson295189b2012-06-20 16:38:30 -070012484 @see
12485 @return Result of the function call
12486*/
12487WDI_Status
12488WDI_ProcessUpdateCfgReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012489(
Jeff Johnson295189b2012-06-20 16:38:30 -070012490 WDI_ControlBlockType* pWDICtx,
12491 WDI_EventInfoType* pEventData
12492)
12493{
12494 WDI_UpdateCfgReqParamsType* pwdiUpdateCfgParams = NULL;
12495 WDI_UpdateCfgRspCb wdiUpdateCfgRspCb = NULL;
12496
Jeff Johnsone7245742012-09-05 17:12:55 -070012497 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012498 wpt_uint16 usDataOffset = 0;
12499 wpt_uint16 usSendSize = 0;
12500 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12501
12502 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012503 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012504 -------------------------------------------------------------------------*/
12505 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
12506 ( NULL == pEventData->pCBfnc))
12507 {
12508 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012509 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012510 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012511 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012512 }
12513
12514 pwdiUpdateCfgParams = (WDI_UpdateCfgReqParamsType*)pEventData->pEventData;
12515 wdiUpdateCfgRspCb = (WDI_UpdateCfgRspCb)pEventData->pCBfnc;
12516
12517 /*-----------------------------------------------------------------------
12518 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070012519 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070012520 -----------------------------------------------------------------------*/
12521
Jeff Johnsone7245742012-09-05 17:12:55 -070012522 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_CFG_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012523 pwdiUpdateCfgParams->uConfigBufferLen + sizeof(wpt_uint32),
12524 &pSendBuffer, &usDataOffset, &usSendSize))||
12525 ( usSendSize < (usDataOffset + pwdiUpdateCfgParams->uConfigBufferLen)))
12526 {
12527 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012528 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070012529 pEventData, pwdiUpdateCfgParams, wdiUpdateCfgRspCb);
12530 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012531 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012532 }
12533
Jeff Johnsone7245742012-09-05 17:12:55 -070012534 wpalMemoryCopy( pSendBuffer+usDataOffset,
12535 &pwdiUpdateCfgParams->uConfigBufferLen,
12536 sizeof(wpt_uint32));
12537 wpalMemoryCopy( pSendBuffer+usDataOffset+sizeof(wpt_uint32),
12538 pwdiUpdateCfgParams->pConfigBuffer,
12539 pwdiUpdateCfgParams->uConfigBufferLen);
Jeff Johnson295189b2012-06-20 16:38:30 -070012540
12541 pWDICtx->wdiReqStatusCB = pwdiUpdateCfgParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012542 pWDICtx->pReqStatusUserData = pwdiUpdateCfgParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012543
12544 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012545 Send Update Cfg Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012546 -------------------------------------------------------------------------*/
12547
Jeff Johnsone7245742012-09-05 17:12:55 -070012548 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12549 wdiUpdateCfgRspCb, pEventData->pUserData, WDI_UPDATE_CFG_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012550
12551}/*WDI_ProcessUpdateCfgReq*/
12552
12553
12554/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012555 @brief Process Add BA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070012556 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012557
12558 @param pWDICtx: pointer to the WLAN DAL context
12559 pEventData: pointer to the event information structure
12560
Jeff Johnson295189b2012-06-20 16:38:30 -070012561 @see
12562 @return Result of the function call
12563*/
12564WDI_Status
12565WDI_ProcessAddBAReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012566(
Jeff Johnson295189b2012-06-20 16:38:30 -070012567 WDI_ControlBlockType* pWDICtx,
12568 WDI_EventInfoType* pEventData
12569)
12570{
12571 WDI_AddBAReqParamsType* pwdiAddBAParams;
12572 WDI_AddBARspCb wdiAddBARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070012573 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070012574 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070012575 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012576 wpt_uint16 usDataOffset = 0;
12577 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070012578 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070012579 wpt_macAddr macBSSID;
12580
12581 tAddBAReqMsg halAddBAReq;
12582 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12583
12584 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012585 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012586 -------------------------------------------------------------------------*/
12587 if (( NULL == pEventData ) ||
12588 ( NULL == pEventData->pEventData) ||
12589 ( NULL == pEventData->pCBfnc ))
12590 {
12591 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012592 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012593 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012594 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012595 }
12596
12597 pwdiAddBAParams = (WDI_AddBAReqParamsType*)pEventData->pEventData;
12598 wdiAddBARspCb = (WDI_AddBARspCb)pEventData->pCBfnc;
12599
12600 /*-------------------------------------------------------------------------
12601 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070012602 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070012603 -------------------------------------------------------------------------*/
12604 wpalMutexAcquire(&pWDICtx->wptMutex);
12605
12606 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012607 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070012608 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012609 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
12610 pwdiAddBAParams->wdiBAInfoType.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070012611 &macBSSID))
12612 {
12613 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012614 "This station does not exist in the WDI Station Table %d",
12615 pwdiAddBAParams->wdiBAInfoType.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070012616 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070012617 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012618 }
12619
Jeff Johnsone7245742012-09-05 17:12:55 -070012620 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
12621 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070012622 {
Jeff Johnsone7245742012-09-05 17:12:55 -070012623 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
12624 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
12625 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070012626
12627 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070012628 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070012629 }
12630
12631 /*------------------------------------------------------------------------
12632 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070012633 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070012634 ------------------------------------------------------------------------*/
12635 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
12636 {
Jeff Johnsone7245742012-09-05 17:12:55 -070012637 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12638 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
12639 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070012640
Jeff Johnsone7245742012-09-05 17:12:55 -070012641 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070012642 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070012643 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070012644 }
12645
12646
12647 wpalMutexRelease(&pWDICtx->wptMutex);
12648 /*-----------------------------------------------------------------------
12649 Get message buffer
12650 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012651 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ADD_BA_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012652 sizeof(halAddBAReq.addBAParams),
12653 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070012654 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070012655 (usDataOffset + sizeof(halAddBAReq.addBAParams) )))
12656 {
12657 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012658 "Unable to get send buffer in Add BA req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070012659 pEventData, pwdiAddBAParams, wdiAddBARspCb);
12660 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012661 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012662 }
12663
Jeff Johnsone7245742012-09-05 17:12:55 -070012664 halAddBAReq.addBAParams.baSessionID =
Jeff Johnson295189b2012-06-20 16:38:30 -070012665 pwdiAddBAParams->wdiBAInfoType.ucBaSessionID;
12666 halAddBAReq.addBAParams.winSize = pwdiAddBAParams->wdiBAInfoType.ucWinSize;
12667#ifdef FEATURE_ON_CHIP_REORDERING
Jeff Johnsone7245742012-09-05 17:12:55 -070012668 halAddBAReq.addBAParams.isReorderingDoneOnChip =
Jeff Johnson295189b2012-06-20 16:38:30 -070012669 pwdiAddBAParams->wdiBAInfoType.bIsReorderingDoneOnChip;
12670#endif
12671
Jeff Johnsone7245742012-09-05 17:12:55 -070012672 wpalMemoryCopy( pSendBuffer+usDataOffset,
12673 &halAddBAReq.addBAParams,
12674 sizeof(halAddBAReq.addBAParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070012675
12676 pWDICtx->wdiReqStatusCB = pwdiAddBAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012677 pWDICtx->pReqStatusUserData = pwdiAddBAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012678
12679 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012680 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012681 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012682 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12683 wdiAddBARspCb, pEventData->pUserData,
12684 WDI_ADD_BA_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012685}/*WDI_ProcessAddBAReq*/
12686
12687
12688
12689/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012690 @brief Process Trigger BA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070012691 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012692
12693 @param pWDICtx: pointer to the WLAN DAL context
12694 pEventData: pointer to the event information structure
12695
Jeff Johnson295189b2012-06-20 16:38:30 -070012696 @see
12697 @return Result of the function call
12698*/
12699WDI_Status
12700WDI_ProcessTriggerBAReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012701(
Jeff Johnson295189b2012-06-20 16:38:30 -070012702 WDI_ControlBlockType* pWDICtx,
12703 WDI_EventInfoType* pEventData
12704)
12705{
12706 WDI_TriggerBAReqParamsType* pwdiTriggerBAParams;
12707 WDI_TriggerBARspCb wdiTriggerBARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070012708 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070012709 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070012710 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012711 wpt_uint16 usDataOffset = 0;
12712 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070012713 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070012714 wpt_uint16 index;
12715 wpt_macAddr macBSSID;
Jeff Johnsone7245742012-09-05 17:12:55 -070012716
Jeff Johnson295189b2012-06-20 16:38:30 -070012717 tTriggerBAReqMsg halTriggerBAReq;
12718 tTriggerBaReqCandidate* halTriggerBACandidate;
12719 WDI_TriggerBAReqCandidateType* wdiTriggerBACandidate;
12720 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12721
12722 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012723 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012724 -------------------------------------------------------------------------*/
12725 if (( NULL == pEventData ) ||
12726 ( NULL == pEventData->pEventData ) ||
12727 ( NULL == pEventData->pCBfnc ))
12728 {
12729 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012730 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012731 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012732 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012733 }
12734
12735 pwdiTriggerBAParams = (WDI_TriggerBAReqParamsType*)pEventData->pEventData;
12736 wdiTriggerBARspCb = (WDI_TriggerBARspCb)pEventData->pCBfnc;
12737 /*-------------------------------------------------------------------------
12738 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070012739 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070012740 -------------------------------------------------------------------------*/
12741 wpalMutexAcquire(&pWDICtx->wptMutex);
12742
12743 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012744 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070012745 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012746 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
12747 pwdiTriggerBAParams->wdiTriggerBAInfoType.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070012748 &macBSSID))
12749 {
12750 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012751 "This station does not exist in the WDI Station Table %d",
12752 pwdiTriggerBAParams->wdiTriggerBAInfoType.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070012753 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070012754 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012755 }
12756
Jeff Johnsone7245742012-09-05 17:12:55 -070012757 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
12758 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070012759 {
Jeff Johnsone7245742012-09-05 17:12:55 -070012760 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
12761 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
12762 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070012763
12764 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070012765 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070012766 }
12767
12768 /*------------------------------------------------------------------------
12769 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070012770 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070012771 ------------------------------------------------------------------------*/
12772 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
12773 {
Jeff Johnsone7245742012-09-05 17:12:55 -070012774 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12775 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
12776 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070012777
Jeff Johnsone7245742012-09-05 17:12:55 -070012778 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070012779 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070012780 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070012781 }
12782
12783
12784 wpalMutexRelease(&pWDICtx->wptMutex);
12785 /*-----------------------------------------------------------------------
12786 Get message buffer
12787 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012788 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
12789 WDI_TRIGGER_BA_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012790 sizeof(halTriggerBAReq.triggerBAParams) +
Jeff Johnsone7245742012-09-05 17:12:55 -070012791 (sizeof(tTriggerBaReqCandidate) *
Jeff Johnson295189b2012-06-20 16:38:30 -070012792 pwdiTriggerBAParams->wdiTriggerBAInfoType.usBACandidateCnt),
12793 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070012794 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070012795 (usDataOffset + sizeof(halTriggerBAReq.triggerBAParams)+
Jeff Johnsone7245742012-09-05 17:12:55 -070012796 (sizeof(tTriggerBaReqCandidate) *
Jeff Johnson295189b2012-06-20 16:38:30 -070012797 pwdiTriggerBAParams->wdiTriggerBAInfoType.usBACandidateCnt) )))
12798 {
12799 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012800 "Unable to get send buffer in Trigger BA req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070012801 pEventData, pwdiTriggerBAParams, wdiTriggerBARspCb);
12802 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012803 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012804 }
12805
Jeff Johnsone7245742012-09-05 17:12:55 -070012806 halTriggerBAReq.triggerBAParams.baSessionID =
Jeff Johnson295189b2012-06-20 16:38:30 -070012807 pwdiTriggerBAParams->wdiTriggerBAInfoType.ucBASessionID;
Jeff Johnsone7245742012-09-05 17:12:55 -070012808 halTriggerBAReq.triggerBAParams.baCandidateCnt =
Jeff Johnson295189b2012-06-20 16:38:30 -070012809 pwdiTriggerBAParams->wdiTriggerBAInfoType.usBACandidateCnt;
12810
Jeff Johnsone7245742012-09-05 17:12:55 -070012811 wpalMemoryCopy( pSendBuffer+usDataOffset,
12812 &halTriggerBAReq.triggerBAParams,
12813 sizeof(halTriggerBAReq.triggerBAParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070012814
Jeff Johnsone7245742012-09-05 17:12:55 -070012815 wdiTriggerBACandidate =
Jeff Johnson295189b2012-06-20 16:38:30 -070012816 (WDI_TriggerBAReqCandidateType*)(pwdiTriggerBAParams + 1);
12817 halTriggerBACandidate = (tTriggerBaReqCandidate*)(pSendBuffer+usDataOffset+
12818 sizeof(halTriggerBAReq.triggerBAParams));
Jeff Johnsone7245742012-09-05 17:12:55 -070012819
12820 for(index = 0 ; index < halTriggerBAReq.triggerBAParams.baCandidateCnt ;
Jeff Johnson295189b2012-06-20 16:38:30 -070012821 index++)
12822 {
12823 halTriggerBACandidate->staIdx = wdiTriggerBACandidate->ucSTAIdx;
12824 halTriggerBACandidate->tidBitmap = wdiTriggerBACandidate->ucTidBitmap;
12825 halTriggerBACandidate++;
12826 wdiTriggerBACandidate++;
12827 }
12828
12829 pWDICtx->wdiReqStatusCB = pwdiTriggerBAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012830 pWDICtx->pReqStatusUserData = pwdiTriggerBAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012831
12832 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012833 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012834 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012835 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12836 wdiTriggerBARspCb, pEventData->pUserData,
12837 WDI_TRIGGER_BA_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012838}/*WDI_ProcessTriggerBAReq*/
12839
12840
12841
12842/**
12843 @brief Process Update Beacon Params Request function (called when Main FSM
12844 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012845
12846 @param pWDICtx: pointer to the WLAN DAL context
12847 pEventData: pointer to the event information structure
12848
Jeff Johnson295189b2012-06-20 16:38:30 -070012849 @see
12850 @return Result of the function call
12851*/
12852WDI_Status
12853WDI_ProcessUpdateBeaconParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012854(
Jeff Johnson295189b2012-06-20 16:38:30 -070012855 WDI_ControlBlockType* pWDICtx,
12856 WDI_EventInfoType* pEventData
12857)
12858{
12859 WDI_UpdateBeaconParamsType* pwdiUpdateBeaconParams;
12860 WDI_UpdateBeaconParamsRspCb wdiUpdateBeaconParamsRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070012861 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012862 wpt_uint16 usDataOffset = 0;
12863 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070012864 tUpdateBeaconParams halUpdateBeaconParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070012865 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12866
12867 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012868 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012869 -------------------------------------------------------------------------*/
12870 if (( NULL == pEventData ) ||
12871 ( NULL == pEventData->pEventData) ||
12872 ( NULL == pEventData->pCBfnc))
12873 {
12874 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012875 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012876 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012877 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012878 }
12879
12880 pwdiUpdateBeaconParams = (WDI_UpdateBeaconParamsType*)pEventData->pEventData;
12881 wdiUpdateBeaconParamsRspCb = (WDI_UpdateBeaconParamsRspCb)pEventData->pCBfnc;
12882 /*-----------------------------------------------------------------------
12883 Get message buffer
12884 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012885 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPD_BCON_PRMS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012886 sizeof(halUpdateBeaconParams),
12887 &pSendBuffer, &usDataOffset, &usSendSize))||
12888 ( usSendSize < (usDataOffset + sizeof(halUpdateBeaconParams) )))
12889 {
12890 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012891 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070012892 pEventData, pwdiUpdateBeaconParams, wdiUpdateBeaconParamsRspCb);
12893 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012894 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012895 }
12896
12897 /*BSS Index of the BSS*/
12898 halUpdateBeaconParams.bssIdx =
12899 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucBssIdx;
12900 /*shortPreamble mode. HAL should update all the STA rates when it
12901 receives this message*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012902 halUpdateBeaconParams.fShortPreamble =
Jeff Johnson295189b2012-06-20 16:38:30 -070012903 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucfShortPreamble;
12904 /* short Slot time.*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012905 halUpdateBeaconParams.fShortSlotTime =
Jeff Johnson295189b2012-06-20 16:38:30 -070012906 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucfShortSlotTime;
12907 /* Beacon Interval */
Jeff Johnsone7245742012-09-05 17:12:55 -070012908 halUpdateBeaconParams.beaconInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070012909 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.usBeaconInterval;
12910
12911 /*Protection related */
Jeff Johnsone7245742012-09-05 17:12:55 -070012912 halUpdateBeaconParams.llaCoexist =
Jeff Johnson295189b2012-06-20 16:38:30 -070012913 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucllaCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070012914 halUpdateBeaconParams.llbCoexist =
Jeff Johnson295189b2012-06-20 16:38:30 -070012915 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucllbCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070012916 halUpdateBeaconParams.llgCoexist =
Jeff Johnson295189b2012-06-20 16:38:30 -070012917 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucllgCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070012918 halUpdateBeaconParams.ht20MhzCoexist =
Jeff Johnson295189b2012-06-20 16:38:30 -070012919 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucHt20MhzCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070012920 halUpdateBeaconParams.llnNonGFCoexist =
Jeff Johnson295189b2012-06-20 16:38:30 -070012921 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucllnNonGFCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070012922 halUpdateBeaconParams.fLsigTXOPProtectionFullSupport =
Jeff Johnson295189b2012-06-20 16:38:30 -070012923 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucfLsigTXOPProtectionFullSupport;
12924 halUpdateBeaconParams.fRIFSMode =
12925 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucfRIFSMode;
Jeff Johnsone7245742012-09-05 17:12:55 -070012926 halUpdateBeaconParams.paramChangeBitmap =
Jeff Johnson295189b2012-06-20 16:38:30 -070012927 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.usChangeBitmap;
12928
Jeff Johnsone7245742012-09-05 17:12:55 -070012929 wpalMemoryCopy( pSendBuffer+usDataOffset, &halUpdateBeaconParams,
12930 sizeof(halUpdateBeaconParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070012931
12932 pWDICtx->wdiReqStatusCB = pwdiUpdateBeaconParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012933 pWDICtx->pReqStatusUserData = pwdiUpdateBeaconParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012934
12935 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012936 Send Del TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012937 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012938 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12939 wdiUpdateBeaconParamsRspCb, pEventData->pUserData, WDI_UPD_BCON_PRMS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012940}/*WDI_ProcessUpdateBeaconParamsReq*/
12941
12942
12943
12944/**
12945 @brief Process Send Beacon template Request function (called when Main FSM
12946 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012947
12948 @param pWDICtx: pointer to the WLAN DAL context
12949 pEventData: pointer to the event information structure
12950
Jeff Johnson295189b2012-06-20 16:38:30 -070012951 @see
12952 @return Result of the function call
12953*/
12954WDI_Status
12955WDI_ProcessSendBeaconParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012956(
Jeff Johnson295189b2012-06-20 16:38:30 -070012957 WDI_ControlBlockType* pWDICtx,
12958 WDI_EventInfoType* pEventData
12959)
12960{
12961 WDI_SendBeaconParamsType* pwdiSendBeaconParams;
12962 WDI_SendBeaconParamsRspCb wdiSendBeaconParamsRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070012963 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012964 wpt_uint16 usDataOffset = 0;
12965 wpt_uint16 usSendSize = 0;
12966 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12967
12968 tSendBeaconReqMsg halSendBeaconReq;
12969 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012970 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012971 -------------------------------------------------------------------------*/
12972 if (( NULL == pEventData ) ||
12973 ( NULL == pEventData->pEventData ) ||
12974 ( NULL == pEventData->pCBfnc ))
12975 {
12976 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012977 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012978 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012979 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012980 }
12981
12982 pwdiSendBeaconParams = (WDI_SendBeaconParamsType*)pEventData->pEventData;
12983 wdiSendBeaconParamsRspCb = (WDI_SendBeaconParamsRspCb)pEventData->pCBfnc;
12984 /*-----------------------------------------------------------------------
12985 Get message buffer
12986 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012987 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SND_BCON_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012988 sizeof(halSendBeaconReq.sendBeaconParam),
12989 &pSendBuffer, &usDataOffset, &usSendSize))||
12990 ( usSendSize < (usDataOffset + sizeof(halSendBeaconReq.sendBeaconParam) )))
12991 {
12992 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012993 "Unable to get send buffer in send beacon req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070012994 pEventData, pwdiSendBeaconParams, wdiSendBeaconParamsRspCb);
12995 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012996 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012997 }
12998
12999 wpalMemoryCopy(halSendBeaconReq.sendBeaconParam.bssId,
13000 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.macBSSID,
13001 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070013002 halSendBeaconReq.sendBeaconParam.beaconLength =
Jeff Johnson295189b2012-06-20 16:38:30 -070013003 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.beaconLength;
13004 wpalMemoryCopy(halSendBeaconReq.sendBeaconParam.beacon,
13005 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.beacon,
13006 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.beaconLength);
Jeff Johnsone7245742012-09-05 17:12:55 -070013007 halSendBeaconReq.sendBeaconParam.timIeOffset =
Jeff Johnson295189b2012-06-20 16:38:30 -070013008 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.timIeOffset;
Gopichand Nakkala81aef732013-03-22 11:15:19 +053013009 /* usP2PIeOffset should be atleast greater than timIeOffset */
13010 if ((pwdiSendBeaconParams->wdiSendBeaconParamsInfo.usP2PIeOffset != 0 ) &&
13011 (pwdiSendBeaconParams->wdiSendBeaconParamsInfo.usP2PIeOffset <
13012 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.timIeOffset))
13013 {
13014 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13015 "Invalid usP2PIeOffset %hu",
13016 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.usP2PIeOffset);
13017 WDI_ASSERT(0);
13018 return WDI_STATUS_E_FAILURE;
13019 }
13020
Jeff Johnsone7245742012-09-05 17:12:55 -070013021 halSendBeaconReq.sendBeaconParam.p2pIeOffset =
Jeff Johnson295189b2012-06-20 16:38:30 -070013022 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.usP2PIeOffset;
Jeff Johnson295189b2012-06-20 16:38:30 -070013023
Jeff Johnsone7245742012-09-05 17:12:55 -070013024 wpalMemoryCopy( pSendBuffer+usDataOffset,
13025 &halSendBeaconReq.sendBeaconParam,
13026 sizeof(halSendBeaconReq.sendBeaconParam));
Jeff Johnson295189b2012-06-20 16:38:30 -070013027
13028 pWDICtx->wdiReqStatusCB = pwdiSendBeaconParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013029 pWDICtx->pReqStatusUserData = pwdiSendBeaconParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013030
13031 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013032 Send Del TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013033 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013034 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13035 wdiSendBeaconParamsRspCb, pEventData->pUserData, WDI_SND_BCON_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013036}/*WDI_ProcessSendBeaconParamsReq*/
13037
13038/**
13039 @brief Process Update Beacon Params Request function (called when Main FSM
13040 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013041
13042 @param pWDICtx: pointer to the WLAN DAL context
13043 pEventData: pointer to the event information structure
13044
Jeff Johnson295189b2012-06-20 16:38:30 -070013045 @see
13046 @return Result of the function call
13047*/
13048WDI_Status
13049WDI_ProcessUpdateProbeRspTemplateReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013050(
Jeff Johnson295189b2012-06-20 16:38:30 -070013051 WDI_ControlBlockType* pWDICtx,
13052 WDI_EventInfoType* pEventData
13053)
13054{
13055 WDI_UpdateProbeRspTemplateParamsType* pwdiUpdateProbeRespTmplParams;
13056 WDI_UpdateProbeRspTemplateRspCb wdiUpdateProbeRespTmplRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070013057 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013058 wpt_uint16 usDataOffset = 0;
13059 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070013060 tSendProbeRespReqParams halUpdateProbeRspTmplParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070013061 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13062
13063 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013064 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013065 -------------------------------------------------------------------------*/
13066 if (( NULL == pEventData ) ||
13067 ( NULL == pEventData->pEventData) ||
13068 ( NULL == pEventData->pCBfnc))
13069 {
13070 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013071 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013072 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013073 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013074 }
13075
Jeff Johnsone7245742012-09-05 17:12:55 -070013076 pwdiUpdateProbeRespTmplParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070013077 (WDI_UpdateProbeRspTemplateParamsType*)pEventData->pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070013078 wdiUpdateProbeRespTmplRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070013079 (WDI_UpdateProbeRspTemplateRspCb)pEventData->pCBfnc;
13080 /*-----------------------------------------------------------------------
13081 Get message buffer
13082 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013083 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPD_PROBE_RSP_TEMPLATE_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013084 sizeof(halUpdateProbeRspTmplParams),
13085 &pSendBuffer, &usDataOffset, &usSendSize))||
13086 ( usSendSize < (usDataOffset + sizeof(halUpdateProbeRspTmplParams) )))
13087 {
13088 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080013089 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070013090 pEventData, pwdiUpdateProbeRespTmplParams, wdiUpdateProbeRespTmplRspCb);
13091 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013092 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013093 }
13094
13095 wpalMemoryCopy(halUpdateProbeRspTmplParams.bssId,
Jeff Johnsone7245742012-09-05 17:12:55 -070013096 pwdiUpdateProbeRespTmplParams->wdiProbeRspTemplateInfo.macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -070013097 WDI_MAC_ADDR_LEN);
13098
Jeff Johnsone7245742012-09-05 17:12:55 -070013099 halUpdateProbeRspTmplParams.probeRespTemplateLen =
Jeff Johnson295189b2012-06-20 16:38:30 -070013100 pwdiUpdateProbeRespTmplParams->wdiProbeRspTemplateInfo.uProbeRespTemplateLen;
13101
13102 wpalMemoryCopy(halUpdateProbeRspTmplParams.pProbeRespTemplate,
13103 pwdiUpdateProbeRespTmplParams->wdiProbeRspTemplateInfo.pProbeRespTemplate,
Jeff Johnsone7245742012-09-05 17:12:55 -070013104 BEACON_TEMPLATE_SIZE);
Jeff Johnson295189b2012-06-20 16:38:30 -070013105
13106
13107 wpalMemoryCopy(halUpdateProbeRspTmplParams.ucProxyProbeReqValidIEBmap,
13108 pwdiUpdateProbeRespTmplParams->wdiProbeRspTemplateInfo.uaProxyProbeReqValidIEBmap,
13109 WDI_PROBE_REQ_BITMAP_IE_LEN);
13110
Jeff Johnsone7245742012-09-05 17:12:55 -070013111 wpalMemoryCopy( pSendBuffer+usDataOffset,
13112 &halUpdateProbeRspTmplParams,
13113 sizeof(halUpdateProbeRspTmplParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070013114
13115 pWDICtx->wdiReqStatusCB = pwdiUpdateProbeRespTmplParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013116 pWDICtx->pReqStatusUserData = pwdiUpdateProbeRespTmplParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013117
13118 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013119 Send Update Probe Resp Template Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013120 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013121 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13122 wdiUpdateProbeRespTmplRspCb, pEventData->pUserData,
13123 WDI_UPD_PROBE_RSP_TEMPLATE_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013124}/*WDI_ProcessUpdateProbeRspTemplateReq*/
13125
13126/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013127 @brief Process NV blob download function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070013128 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013129
13130 @param pWDICtx: pointer to the WLAN DAL context
13131 pEventData: pointer to the event information structure
13132
Jeff Johnson295189b2012-06-20 16:38:30 -070013133 @see
13134 @return Result of the function call
13135*/
13136WDI_Status
13137WDI_ProcessNvDownloadReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013138(
Jeff Johnson295189b2012-06-20 16:38:30 -070013139 WDI_ControlBlockType* pWDICtx,
13140 WDI_EventInfoType* pEventData
13141)
13142{
13143
13144 WDI_NvDownloadReqParamsType* pwdiNvDownloadReqParams = NULL;
13145 WDI_NvDownloadRspCb wdiNvDownloadRspCb = NULL;
13146
13147 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013148 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013149 -------------------------------------------------------------------------*/
13150 if (( NULL == pEventData ) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070013151 ( NULL == (pwdiNvDownloadReqParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070013152 (WDI_NvDownloadReqParamsType*)pEventData->pEventData)) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070013153 ( NULL == (wdiNvDownloadRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070013154 (WDI_NvDownloadRspCb)pEventData->pCBfnc)))
13155 {
13156 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013157 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013158 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013159 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013160 }
13161
13162 /*Intialize the Nv Blob Info */
Jeff Johnsone7245742012-09-05 17:12:55 -070013163 pWDICtx->wdiNvBlobInfo.usTotalFragment =
Jeff Johnson295189b2012-06-20 16:38:30 -070013164 TOTALFRAGMENTS(pwdiNvDownloadReqParams->wdiBlobInfo.uBlobSize);
13165
13166 /*cache the wdi nv request message here if the the first fragment
13167 * To issue the request to HAL for the next fragment */
13168 if( 0 == pWDICtx->wdiNvBlobInfo.usCurrentFragment)
13169 {
Jeff Johnsone7245742012-09-05 17:12:55 -070013170 wpalMemoryCopy(&pWDICtx->wdiCachedNvDownloadReq,
13171 pwdiNvDownloadReqParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070013172 sizeof(pWDICtx->wdiCachedNvDownloadReq));
13173
13174 pWDICtx->pfncRspCB = pEventData->pCBfnc;
13175 pWDICtx->pRspCBUserData = pEventData->pUserData;
13176 }
13177
13178 return WDI_SendNvBlobReq(pWDICtx,pEventData);
13179}
13180
13181/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013182 @brief Process Set Max Tx Power Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070013183 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013184
13185 @param pWDICtx: pointer to the WLAN DAL context
13186 pEventData: pointer to the event information structure
13187
Jeff Johnson295189b2012-06-20 16:38:30 -070013188 @see
13189 @return Result of the function call
13190*/
13191WDI_Status WDI_ProcessSetMaxTxPowerReq
13192(
13193 WDI_ControlBlockType* pWDICtx,
13194 WDI_EventInfoType* pEventData
13195)
13196{
13197 WDI_SetMaxTxPowerParamsType* pwdiSetMaxTxPowerParams = NULL;
13198 WDA_SetMaxTxPowerRspCb wdiSetMaxTxPowerRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070013199 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013200 wpt_uint16 usDataOffset = 0;
13201 wpt_uint16 usSendSize = 0;
13202 tSetMaxTxPwrReq halSetMaxTxPower;
13203 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13204
13205 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013206 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013207 -------------------------------------------------------------------------*/
13208 if (( NULL == pEventData ) ||
13209 ( NULL == pEventData->pEventData ) ||
13210 ( NULL == pEventData->pCBfnc ))
13211 {
13212 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013213 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013214 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013215 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013216 }
Jeff Johnsone7245742012-09-05 17:12:55 -070013217 pwdiSetMaxTxPowerParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070013218 (WDI_SetMaxTxPowerParamsType*)pEventData->pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070013219 wdiSetMaxTxPowerRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070013220 (WDA_SetMaxTxPowerRspCb)pEventData->pCBfnc;
13221
13222 /*-----------------------------------------------------------------------
13223 Get message buffer
13224 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013225if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_MAX_TX_POWER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013226 sizeof(halSetMaxTxPower.setMaxTxPwrParams),
13227 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070013228 ( usSendSize < (usDataOffset + sizeof(halSetMaxTxPower.setMaxTxPwrParams)
Jeff Johnson295189b2012-06-20 16:38:30 -070013229)))
13230 {
13231 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080013232 "Unable to get Set Max Tx Power req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070013233 pEventData, pwdiSetMaxTxPowerParams, wdiSetMaxTxPowerRspCb);
13234 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013235 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013236 }
13237
13238 wpalMemoryCopy(halSetMaxTxPower.setMaxTxPwrParams.bssId,
13239 pwdiSetMaxTxPowerParams->wdiMaxTxPowerInfo.macBSSId,
13240 WDI_MAC_ADDR_LEN);
13241
13242 wpalMemoryCopy(halSetMaxTxPower.setMaxTxPwrParams.selfStaMacAddr,
13243 pwdiSetMaxTxPowerParams->wdiMaxTxPowerInfo.macSelfStaMacAddr,
13244 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070013245 halSetMaxTxPower.setMaxTxPwrParams.power =
Jeff Johnson295189b2012-06-20 16:38:30 -070013246 pwdiSetMaxTxPowerParams->wdiMaxTxPowerInfo.ucPower;
Jeff Johnsone7245742012-09-05 17:12:55 -070013247
13248 wpalMemoryCopy( pSendBuffer+usDataOffset,
13249 &halSetMaxTxPower.setMaxTxPwrParams,
13250 sizeof(halSetMaxTxPower.setMaxTxPwrParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070013251
13252 pWDICtx->wdiReqStatusCB = pwdiSetMaxTxPowerParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013253 pWDICtx->pReqStatusUserData = pwdiSetMaxTxPowerParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013254
13255 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013256 Send Del TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013257 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013258 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13259 wdiSetMaxTxPowerRspCb, pEventData->pUserData,
13260 WDI_SET_MAX_TX_POWER_RESP);
13261
Jeff Johnson295189b2012-06-20 16:38:30 -070013262}
13263
Arif Hussaina5ebce02013-08-09 15:09:58 -070013264/*
13265 @brief Process Set Max Tx Power Per Band Request function (called when Main
13266 FSM allows it)
13267
13268 @param pWDICtx: pointer to the WLAN DAL context
13269 pEventData: pointer to the event information structure
13270
13271 @see
13272 @return Result of the function call
13273*/
13274WDI_Status WDI_ProcessSetMaxTxPowerPerBandReq
13275(
13276 WDI_ControlBlockType* pWDICtx,
13277 WDI_EventInfoType* pEventData
13278)
13279{
13280 WDI_SetMaxTxPowerPerBandParamsType* pwdiSetMaxTxPowerPerBandParams = NULL;
13281 WDA_SetMaxTxPowerPerBandRspCb wdiSetMaxTxPowerPerBandRspCb;
13282 wpt_uint8* pSendBuffer = NULL;
13283 wpt_uint16 usDataOffset = 0;
13284 wpt_uint16 usSendSize = 0;
Arif Hussainf8f080c2014-04-03 09:48:36 -070013285 tpSetMaxTxPwrPerBandParams phalSetMxTxPwrPerBand = NULL;
Arif Hussaina5ebce02013-08-09 15:09:58 -070013286 WDI_Status rValue = WDI_STATUS_SUCCESS;
13287 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13288
13289 /*-------------------------------------------------------------------------
13290 Sanity check
13291 -------------------------------------------------------------------------*/
13292 if (( NULL == pEventData ) ||
13293 ( NULL == pEventData->pEventData ) ||
13294 ( NULL == pEventData->pCBfnc ))
13295 {
13296 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
13297 "%s: Invalid parameters", __func__);
13298 WDI_ASSERT(0);
13299 return WDI_STATUS_E_FAILURE;
13300 }
13301 pwdiSetMaxTxPowerPerBandParams = \
13302 (WDI_SetMaxTxPowerPerBandParamsType*)pEventData->pEventData;
13303
13304 wdiSetMaxTxPowerPerBandRspCb = \
13305 (WDA_SetMaxTxPowerPerBandRspCb)pEventData->pCBfnc;
13306
13307 /*-----------------------------------------------------------------------
13308 Get message buffer
13309 -----------------------------------------------------------------------*/
13310
13311 rValue = WDI_GetMessageBuffer(pWDICtx,
13312 WDI_SET_MAX_TX_POWER_PER_BAND_REQ,
13313 sizeof(tSetMaxTxPwrPerBandParams),
13314 &pSendBuffer, &usDataOffset, &usSendSize);
13315
13316 if ((WDI_STATUS_SUCCESS != rValue)|| (usSendSize <
13317 (usDataOffset + sizeof(tSetMaxTxPwrPerBandParams))))
13318 {
13319 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
13320 "Unable to get Set Max Tx Power Per Band req %p %p %p",
13321 pEventData, pwdiSetMaxTxPowerPerBandParams,
13322 wdiSetMaxTxPowerPerBandRspCb);
13323 WDI_ASSERT(0);
13324 return WDI_STATUS_E_FAILURE;
13325 }
13326
13327
Arif Hussainf8f080c2014-04-03 09:48:36 -070013328 phalSetMxTxPwrPerBand = (tpSetMaxTxPwrPerBandParams)(pSendBuffer + usDataOffset);
13329 phalSetMxTxPwrPerBand->bandInfo = \
Arif Hussaina5ebce02013-08-09 15:09:58 -070013330 pwdiSetMaxTxPowerPerBandParams->wdiMaxTxPowerPerBandInfo.bandInfo;
13331
Arif Hussainf8f080c2014-04-03 09:48:36 -070013332 phalSetMxTxPwrPerBand->power = \
Arif Hussaina5ebce02013-08-09 15:09:58 -070013333 pwdiSetMaxTxPowerPerBandParams->wdiMaxTxPowerPerBandInfo.ucPower;
13334
13335 pWDICtx->wdiReqStatusCB = pwdiSetMaxTxPowerPerBandParams->wdiReqStatusCB;
13336 pWDICtx->pReqStatusUserData = pwdiSetMaxTxPowerPerBandParams->pUserData;
13337
13338 /*-------------------------------------------------------------------------
13339 Send Set Max Tx Power Per Band Request to HAL
13340 -------------------------------------------------------------------------*/
13341 return WDI_SendMsg(pWDICtx, pSendBuffer, usSendSize,
13342 wdiSetMaxTxPowerPerBandRspCb, pEventData->pUserData,
13343 WDI_SET_MAX_TX_POWER_PER_BAND_RSP);
13344}
13345
schang86c22c42013-03-13 18:41:24 -070013346/**
13347 @brief Process Set Tx Power Request function (called when Main
13348 FSM allows it)
13349
13350 @param pWDICtx: pointer to the WLAN DAL context
13351 pEventData: pointer to the event information structure
13352
13353 @see
13354 @return Result of the function call
13355*/
13356WDI_Status WDI_ProcessSetTxPowerReq
13357(
13358 WDI_ControlBlockType* pWDICtx,
13359 WDI_EventInfoType* pEventData
13360)
13361{
13362 WDI_SetTxPowerParamsType* pwdiSetTxPowerParams = NULL;
13363 WDA_SetTxPowerRspCb wdiSetTxPowerRspCb;
13364 wpt_uint8* pSendBuffer = NULL;
13365 wpt_uint16 usDataOffset = 0;
13366 wpt_uint16 usSendSize = 0;
Leo Chang9a43db92013-03-25 17:39:58 -070013367 tSetTxPwrReqParams *halSetTxPower = NULL;
schang86c22c42013-03-13 18:41:24 -070013368 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13369
13370 /*-------------------------------------------------------------------------
13371 Sanity check
13372 -------------------------------------------------------------------------*/
13373 if (( NULL == pEventData ) ||
13374 ( NULL == pEventData->pEventData ) ||
13375 ( NULL == pEventData->pCBfnc ))
13376 {
13377 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
13378 "%s: Invalid parameters", __func__);
13379 WDI_ASSERT(0);
13380 return WDI_STATUS_E_FAILURE;
13381 }
13382
13383 pwdiSetTxPowerParams =
13384 (WDI_SetTxPowerParamsType*)pEventData->pEventData;
13385 wdiSetTxPowerRspCb =
13386 (WDA_SetTxPowerRspCb)pEventData->pCBfnc;
13387
13388 /*-----------------------------------------------------------------------
13389 Get message buffer
13390 -----------------------------------------------------------------------*/
13391 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_TX_POWER_REQ,
13392 sizeof(tSetTxPwrReqParams),
13393 &pSendBuffer, &usDataOffset, &usSendSize))||
13394 ( usSendSize < (usDataOffset + sizeof(tSetTxPwrReqParams)
13395 )))
13396 {
13397 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080013398 "Unable to get Set Max Tx Power req %p %p %p",
schang86c22c42013-03-13 18:41:24 -070013399 pEventData, pwdiSetTxPowerParams, wdiSetTxPowerRspCb);
13400 WDI_ASSERT(0);
13401 return WDI_STATUS_E_FAILURE;
13402 }
13403
Leo Chang9a43db92013-03-25 17:39:58 -070013404 halSetTxPower = (tSetTxPwrReqParams *)(pSendBuffer + usDataOffset);
13405 halSetTxPower->txPower = pwdiSetTxPowerParams->wdiTxPowerInfo.ucPower;
13406 halSetTxPower->bssIdx = pwdiSetTxPowerParams->wdiTxPowerInfo.bssIdx;
schang86c22c42013-03-13 18:41:24 -070013407
13408 pWDICtx->wdiReqStatusCB = pwdiSetTxPowerParams->wdiReqStatusCB;
13409 pWDICtx->pReqStatusUserData = pwdiSetTxPowerParams->pUserData;
13410
13411 /*-------------------------------------------------------------------------
13412 Send Set Tx Power Request to HAL
13413 -------------------------------------------------------------------------*/
13414 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13415 wdiSetTxPowerRspCb, pEventData->pUserData,
13416 WDI_SET_TX_POWER_RESP);
13417}
Jeff Johnson295189b2012-06-20 16:38:30 -070013418
13419/**
13420 @brief Process P2P Notice Of Absence Request function (called when Main FSM
13421 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013422
13423 @param pWDICtx: pointer to the WLAN DAL context
13424 pEventData: pointer to the event information structure
13425
Jeff Johnson295189b2012-06-20 16:38:30 -070013426 @see
13427 @return Result of the function call
13428*/
13429WDI_Status
13430WDI_ProcessP2PGONOAReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013431(
Jeff Johnson295189b2012-06-20 16:38:30 -070013432 WDI_ControlBlockType* pWDICtx,
13433 WDI_EventInfoType* pEventData
13434)
13435{
13436 WDI_SetP2PGONOAReqParamsType* pwdiP2PGONOAReqParams;
13437 WDI_SetP2PGONOAReqParamsRspCb wdiP2PGONOAReqRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070013438 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013439 wpt_uint16 usDataOffset = 0;
13440 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070013441 tSetP2PGONOAParams halSetP2PGONOAParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070013442 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13443
13444 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013445 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013446 -------------------------------------------------------------------------*/
13447 if (( NULL == pEventData ) ||
13448 ( NULL == pEventData->pEventData) ||
13449 ( NULL == pEventData->pCBfnc))
13450 {
13451 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013452 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013453 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013454 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013455 }
13456
Jeff Johnsone7245742012-09-05 17:12:55 -070013457 pwdiP2PGONOAReqParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070013458 (WDI_SetP2PGONOAReqParamsType*)pEventData->pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070013459 wdiP2PGONOAReqRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070013460 (WDI_SetP2PGONOAReqParamsRspCb)pEventData->pCBfnc;
13461 /*-----------------------------------------------------------------------
13462 Get message buffer
13463 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013464 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
13465 WDI_P2P_GO_NOTICE_OF_ABSENCE_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013466 sizeof(halSetP2PGONOAParams),
13467 &pSendBuffer, &usDataOffset, &usSendSize))||
13468 ( usSendSize < (usDataOffset + sizeof(halSetP2PGONOAParams) )))
13469 {
13470 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080013471 "Unable to get send buffer in set P2P GO NOA REQ %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070013472 pEventData, pwdiP2PGONOAReqParams, wdiP2PGONOAReqRspCb);
13473 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013474 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013475 }
13476
Jeff Johnsone7245742012-09-05 17:12:55 -070013477 halSetP2PGONOAParams.opp_ps =
Jeff Johnson295189b2012-06-20 16:38:30 -070013478 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.ucOpp_ps;
Jeff Johnsone7245742012-09-05 17:12:55 -070013479 halSetP2PGONOAParams.ctWindow =
Jeff Johnson295189b2012-06-20 16:38:30 -070013480 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.uCtWindow;
13481 halSetP2PGONOAParams.count = pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.ucCount;
Jeff Johnsone7245742012-09-05 17:12:55 -070013482 halSetP2PGONOAParams.duration =
Jeff Johnson295189b2012-06-20 16:38:30 -070013483 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.uDuration;
Jeff Johnsone7245742012-09-05 17:12:55 -070013484 halSetP2PGONOAParams.interval =
Jeff Johnson295189b2012-06-20 16:38:30 -070013485 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.uInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070013486 halSetP2PGONOAParams.single_noa_duration =
Jeff Johnson295189b2012-06-20 16:38:30 -070013487 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.uSingle_noa_duration;
Jeff Johnsone7245742012-09-05 17:12:55 -070013488 halSetP2PGONOAParams.psSelection =
Jeff Johnson295189b2012-06-20 16:38:30 -070013489 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.ucPsSelection;
13490
Jeff Johnsone7245742012-09-05 17:12:55 -070013491 wpalMemoryCopy( pSendBuffer+usDataOffset,
13492 &halSetP2PGONOAParams,
13493 sizeof(halSetP2PGONOAParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070013494
13495 pWDICtx->wdiReqStatusCB = pwdiP2PGONOAReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013496 pWDICtx->pReqStatusUserData = pwdiP2PGONOAReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013497
13498 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013499 Send Update Probe Resp Template Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013500 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013501 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13502 wdiP2PGONOAReqRspCb, pEventData->pUserData,
13503 WDI_P2P_GO_NOTICE_OF_ABSENCE_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013504}/*WDI_ProcessP2PGONOAReq*/
13505
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053013506#ifdef FEATURE_WLAN_TDLS
13507
13508/**
13509 @brief Process P2P Notice Of Absence Request function (called when Main FSM
13510 allows it)
13511
13512 @param pWDICtx: pointer to the WLAN DAL context
13513 pEventData: pointer to the event information structure
13514
13515 @see
13516 @return Result of the function call
13517*/
13518WDI_Status
13519WDI_ProcessTdlsLinkEstablishReq
13520(
13521 WDI_ControlBlockType* pWDICtx,
13522 WDI_EventInfoType* pEventData
13523)
13524{
13525 WDI_SetTDLSLinkEstablishReqParamsType* pwdiTDLSLinkEstablishReqParams;
13526 WDI_SetTDLSLinkEstablishReqParamsRspCb wdiTDLSLinkEstablishReqRspCb;
13527 wpt_uint8* pSendBuffer = NULL;
13528 wpt_uint16 usDataOffset = 0;
13529 wpt_uint16 usSendSize = 0;
13530
13531 tTDLSLinkEstablishedType halSetTDLSLinkEstablishParams;
13532 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13533
13534 /*-------------------------------------------------------------------------
13535 Sanity check
13536 -------------------------------------------------------------------------*/
13537 if (( NULL == pEventData ) ||
13538 ( NULL == pEventData->pEventData) ||
13539 ( NULL == pEventData->pCBfnc))
13540 {
13541 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13542 "%s: Invalid parameters", __func__);
13543 WDI_ASSERT(0);
13544 return WDI_STATUS_E_FAILURE;
13545 }
13546 pwdiTDLSLinkEstablishReqParams =
13547 (WDI_SetTDLSLinkEstablishReqParamsType*)pEventData->pEventData;
13548 wdiTDLSLinkEstablishReqRspCb =
13549 (WDI_SetTDLSLinkEstablishReqParamsRspCb)pEventData->pCBfnc;
13550
13551
13552 /*-----------------------------------------------------------------------
13553 Get message buffer
13554 -----------------------------------------------------------------------*/
13555 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
13556 WDI_TDLS_LINK_ESTABLISH_REQ,
13557 sizeof(halSetTDLSLinkEstablishParams),
13558 &pSendBuffer, &usDataOffset, &usSendSize))||
13559 ( usSendSize < (usDataOffset + sizeof(halSetTDLSLinkEstablishParams) )))
13560 {
13561 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080013562 "Unable to get send buffer in set P2P GO NOA REQ %p %p %p",
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053013563 pEventData, pwdiTDLSLinkEstablishReqParams, wdiTDLSLinkEstablishReqRspCb);
13564 WDI_ASSERT(0);
13565 return WDI_STATUS_E_FAILURE;
13566 }
13567
13568 halSetTDLSLinkEstablishParams.staIdx =
13569 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uStaIdx;
13570 halSetTDLSLinkEstablishParams.bIsResponder =
13571 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uIsResponder;
13572 halSetTDLSLinkEstablishParams.acVOUAPSDFlag =
13573 (pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uUapsdQueues & 0x08) >> 3;
13574 halSetTDLSLinkEstablishParams.acVIUAPSDFlag =
13575 (pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uUapsdQueues & 0x04) >> 2;
13576 halSetTDLSLinkEstablishParams.acBKUAPSDFlag =
13577 (pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uUapsdQueues & 0x02) >> 1;
13578 halSetTDLSLinkEstablishParams.acBEUAPSDFlag =
13579 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uUapsdQueues & 0x01;
13580 halSetTDLSLinkEstablishParams.aAck = 0;
13581 halSetTDLSLinkEstablishParams.maxServicePeriodLength = (pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uMaxSp & 0x03);
13582 halSetTDLSLinkEstablishParams.moreDataAck = 0;
13583 halSetTDLSLinkEstablishParams.TPUBufferStaSupport = pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uIsBufSta;
Naresh Jayaramc7cbd782014-02-04 17:38:23 +053013584 halSetTDLSLinkEstablishParams.tdlsOffChannelSupport =
13585 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uIsOffChannelSupported;
13586
13587 wpalMemoryCopy( halSetTDLSLinkEstablishParams.validChannels,
13588 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.validChannels,
13589 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.validChannelsLen);
13590 halSetTDLSLinkEstablishParams.validChannelsLen =
13591 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.validChannelsLen;
13592
13593 wpalMemoryCopy( halSetTDLSLinkEstablishParams.validOperClasses,
13594 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.validOperClasses,
13595 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.validOperClassesLen);
13596 halSetTDLSLinkEstablishParams.validOperClassesLen =
13597 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.validOperClassesLen;
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053013598
13599 wpalMemoryCopy( pSendBuffer+usDataOffset,
13600 &halSetTDLSLinkEstablishParams,
13601 sizeof(halSetTDLSLinkEstablishParams));
13602
13603 pWDICtx->wdiReqStatusCB = pwdiTDLSLinkEstablishReqParams->wdiReqStatusCB;
13604 pWDICtx->pReqStatusUserData = pwdiTDLSLinkEstablishReqParams->pUserData;
13605
13606 /*-------------------------------------------------------------------------
13607 Send Update Probe Resp Template Request to HAL
13608 -------------------------------------------------------------------------*/
13609 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13610 wdiTDLSLinkEstablishReqRspCb, pEventData->pUserData,
13611 WDI_TDLS_LINK_ESTABLISH_REQ_RESP);
13612 return 0;
13613}/*WDI_ProcessTdlsLinkEstablishReq*/
13614
13615
Atul Mittalc0f739f2014-07-31 13:47:47 +053013616/**
13617 @brief sends the channel switch command to f/w (called when Main FSM
13618 allows it)
13619
13620 @param pWDICtx: pointer to the WLAN DAL context
13621 pEventData: pointer to the event information structure
13622
13623 @see
13624 @return Result of the function call
13625*/
13626WDI_Status
13627WDI_ProcessTdlsChanSwitchReq
13628(
13629 WDI_ControlBlockType* pWDICtx,
13630 WDI_EventInfoType* pEventData
13631)
13632{
13633 WDI_SetTDLSChanSwitchReqParamsType* pwdiTDLSChanSwitchReqParams;
13634 WDI_SetTDLSChanSwitchReqParamsRspCb wdiTDLSChanSwitchReqRspCb;
13635 wpt_uint8* pSendBuffer = NULL;
13636 wpt_uint16 usDataOffset = 0;
13637 wpt_uint16 usSendSize = 0;
13638 //WDI_Status wdiStatus;
13639 tTDLSChanSwitchReqType halSetTDLSChanSwitchParams;
13640 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13641
13642 /*-------------------------------------------------------------------------
13643 Sanity check
13644 -------------------------------------------------------------------------*/
13645 if (( NULL == pEventData ) ||
13646 ( NULL == pEventData->pEventData))
13647 {
13648 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13649 "%s: Invalid parameters", __func__);
13650 WDI_ASSERT(0);
13651 return WDI_STATUS_E_FAILURE;
13652 }
13653 pwdiTDLSChanSwitchReqParams =
13654 (WDI_SetTDLSChanSwitchReqParamsType*)pEventData->pEventData;
13655 wdiTDLSChanSwitchReqRspCb =
13656 (WDI_SetTDLSChanSwitchReqParamsRspCb)pEventData->pCBfnc;
13657
13658 /*-----------------------------------------------------------------------
13659 Get message buffer
13660 -----------------------------------------------------------------------*/
13661 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
13662 WDI_TDLS_CHAN_SWITCH_REQ,
13663 sizeof(halSetTDLSChanSwitchParams),
13664 &pSendBuffer, &usDataOffset, &usSendSize))||
13665 ( usSendSize < (usDataOffset + sizeof(halSetTDLSChanSwitchParams) )))
13666 {
13667 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13668 "Unable to get send buffer in Channel Switch REQ %p %p %p",
13669 pEventData, pwdiTDLSChanSwitchReqParams, wdiTDLSChanSwitchReqRspCb);
13670 WDI_ASSERT(0);
13671 return WDI_STATUS_E_FAILURE;
13672 }
13673
13674 halSetTDLSChanSwitchParams.staIdx =
13675 pwdiTDLSChanSwitchReqParams->wdiTDLSChanSwitchReqInfo.staIdx;
13676 halSetTDLSChanSwitchParams.isOffchannelInitiator =
13677 pwdiTDLSChanSwitchReqParams->wdiTDLSChanSwitchReqInfo.isOffchannelInitiator;
13678 halSetTDLSChanSwitchParams.targetOperClass =
13679 pwdiTDLSChanSwitchReqParams->wdiTDLSChanSwitchReqInfo.targetOperClass;
13680 halSetTDLSChanSwitchParams.targetChannel =
13681 pwdiTDLSChanSwitchReqParams->wdiTDLSChanSwitchReqInfo.targetChannel;
13682 halSetTDLSChanSwitchParams.secondaryChannelOffset =
13683 pwdiTDLSChanSwitchReqParams->wdiTDLSChanSwitchReqInfo.secondaryChannelOffset;
13684 wpalMemoryCopy( pSendBuffer+usDataOffset,
13685 &halSetTDLSChanSwitchParams,
13686 sizeof(halSetTDLSChanSwitchParams));
13687
13688 pWDICtx->wdiReqStatusCB = NULL;
13689 pWDICtx->pReqStatusUserData = NULL;
13690
13691 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13692 wdiTDLSChanSwitchReqRspCb, pEventData->pUserData,
13693 WDI_TDLS_CHAN_SWITCH_REQ_RESP);
13694}/*WDI_ProcessTdlsChanSwitchReq*/
13695
13696#endif /*FEATURE_WLAN_TDLS*/
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053013697
Jeff Johnson295189b2012-06-20 16:38:30 -070013698
13699
13700/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013701 @brief Function to handle the ack from DXE once the power
Jeff Johnson295189b2012-06-20 16:38:30 -070013702 state is set.
Jeff Johnsone7245742012-09-05 17:12:55 -070013703 @param None
13704
13705 @see
13706 @return void
Jeff Johnson295189b2012-06-20 16:38:30 -070013707*/
13708void
13709WDI_SetPowerStateCb
13710(
13711 wpt_status status,
13712 unsigned int dxePhyAddr,
13713 void *pContext
13714)
13715{
13716 wpt_status wptStatus;
13717 WDI_ControlBlockType *pCB = NULL;
13718 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013719 /*
13720 * Trigger the event to bring the Enter BMPS req function to come
13721 * out of wait
Jeff Johnson295189b2012-06-20 16:38:30 -070013722*/
13723 if( NULL != pContext )
13724 {
Jeff Johnsone7245742012-09-05 17:12:55 -070013725 pCB = (WDI_ControlBlockType *)pContext;
Jeff Johnson295189b2012-06-20 16:38:30 -070013726 }
13727 else
13728 {
Jeff Johnsone7245742012-09-05 17:12:55 -070013729 //put an error msg
Jeff Johnson295189b2012-06-20 16:38:30 -070013730 pCB = &gWDICb;
13731 }
Mihir Shetea4306052014-03-25 00:02:54 +053013732
13733 if(eWLAN_PAL_STATUS_SUCCESS == status )
13734 {
13735 pCB->dxeRingsEmpty = eWLAN_PAL_TRUE;
13736 }
13737 else
13738 {
13739 pCB->dxeRingsEmpty = eWLAN_PAL_FALSE;
13740 }
Jeff Johnson295189b2012-06-20 16:38:30 -070013741 pCB->dxePhyAddr = dxePhyAddr;
13742 wptStatus = wpalEventSet(&pCB->setPowerStateEvent);
13743 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
13744 {
13745 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13746 "Failed to set an event");
13747
Jeff Johnsone7245742012-09-05 17:12:55 -070013748 WDI_ASSERT(0);
Jeff Johnson295189b2012-06-20 16:38:30 -070013749 }
13750 return;
13751}
13752
13753
13754/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013755 @brief Process Enter IMPS Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070013756 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013757
13758 @param pWDICtx: pointer to the WLAN DAL context
13759 pEventData: pointer to the event information structure
13760
Jeff Johnson295189b2012-06-20 16:38:30 -070013761 @see
13762 @return Result of the function call
13763*/
13764WDI_Status
13765WDI_ProcessEnterImpsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013766(
Jeff Johnson295189b2012-06-20 16:38:30 -070013767 WDI_ControlBlockType* pWDICtx,
13768 WDI_EventInfoType* pEventData
13769)
13770{
Jeff Johnson43971f52012-07-17 12:26:56 -070013771 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070013772 WDI_EnterImpsRspCb wdiEnterImpsRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013773 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013774 wpt_uint16 usDataOffset = 0;
13775 wpt_uint16 usSendSize = 0;
Mihir Shetea4306052014-03-25 00:02:54 +053013776 WDI_EnterImpsReqParamsType* pwdiEnterImpsReqParams = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013777 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13778
13779 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013780 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013781 -------------------------------------------------------------------------*/
Mihir Shetea4306052014-03-25 00:02:54 +053013782 if ((NULL == pEventData ) ||
13783 (NULL == (wdiEnterImpsRspCb = (WDI_EnterImpsRspCb)pEventData->pCBfnc)) ||
13784 (NULL == (pwdiEnterImpsReqParams =
13785 (WDI_EnterImpsReqParamsType*)pEventData->pEventData)))
Jeff Johnson295189b2012-06-20 16:38:30 -070013786 {
13787 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013788 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013789 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080013790 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070013791 }
13792
13793 /*-----------------------------------------------------------------------
13794 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013795 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013796 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013797 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ENTER_IMPS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013798 0,
13799 &pSendBuffer, &usDataOffset, &usSendSize))||
13800 ( usSendSize < (usDataOffset )))
13801 {
13802 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080013803 "Unable to get send buffer in Enter IMPS req %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070013804 pEventData, wdiEnterImpsRspCb);
13805 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080013806 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070013807 }
13808
13809 /* Reset the event to be not signalled */
Jeff Johnson43971f52012-07-17 12:26:56 -070013810 wptStatus = wpalEventReset(&pWDICtx->setPowerStateEvent);
13811 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070013812 {
13813 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13814 "WDI Init failed to reset an event");
13815
Jeff Johnsone7245742012-09-05 17:12:55 -070013816 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080013817 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -070013818 }
13819
13820 // notify DTS that we are entering IMPS
Ravali85acf6b2012-12-12 14:01:38 -080013821 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_IMPS, WDI_SetPowerStateCb);
13822 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus ) {
13823 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain9a5d5382013-11-17 22:05:35 -080013824 "WDTS_SetPowerState returned with status %d when trying to notify DTS that host is entering IMPS", wptStatus);
Ravali85acf6b2012-12-12 14:01:38 -080013825 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080013826 goto fail;
Ravali85acf6b2012-12-12 14:01:38 -080013827 }
Jeff Johnson295189b2012-06-20 16:38:30 -070013828
13829 /*
Jeff Johnsone7245742012-09-05 17:12:55 -070013830 * Wait for the event to be set once the ACK comes back from DXE
Jeff Johnson295189b2012-06-20 16:38:30 -070013831 */
Jeff Johnson43971f52012-07-17 12:26:56 -070013832 wptStatus = wpalEventWait(&pWDICtx->setPowerStateEvent,
13833 WDI_SET_POWER_STATE_TIMEOUT);
13834 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070013835 {
13836 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13837 "WDI Init failed to wait on an event");
13838
Jeff Johnsone7245742012-09-05 17:12:55 -070013839 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080013840 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -070013841 }
13842
Mihir Shetea4306052014-03-25 00:02:54 +053013843 if (pWDICtx->dxeRingsEmpty == eWLAN_PAL_FALSE)
13844 {
13845 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
13846 "%s: DXE Rings not empty, cannot enter IMPS",__func__);
13847
13848 goto fail;
13849 }
13850
13851 pWDICtx->wdiReqStatusCB = pwdiEnterImpsReqParams->wdiReqStatusCB;
13852 pWDICtx->pReqStatusUserData = pwdiEnterImpsReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013853 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013854 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013855 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013856 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13857 wdiEnterImpsRspCb, pEventData->pUserData, WDI_ENTER_IMPS_RESP);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080013858
13859fail:
13860 // Release the message buffer so we don't leak
13861 wpalMemoryFree(pSendBuffer);
13862
13863failRequest:
13864 //WDA should have failure check to avoid the memory leak
13865 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013866}/*WDI_ProcessEnterImpsReq*/
13867
13868/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013869 @brief Process Exit IMPS Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070013870 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013871
13872 @param pWDICtx: pointer to the WLAN DAL context
13873 pEventData: pointer to the event information structure
13874
Jeff Johnson295189b2012-06-20 16:38:30 -070013875 @see
13876 @return Result of the function call
13877*/
13878WDI_Status
13879WDI_ProcessExitImpsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013880(
Jeff Johnson295189b2012-06-20 16:38:30 -070013881 WDI_ControlBlockType* pWDICtx,
13882 WDI_EventInfoType* pEventData
13883)
13884{
13885 WDI_ExitImpsRspCb wdiExitImpsRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013886 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013887 wpt_uint16 usDataOffset = 0;
13888 wpt_uint16 usSendSize = 0;
Mahesh A Saptasagar329813b2014-12-15 12:16:51 +053013889 WDI_ExitImpsReqParamsType *pwdiExitImpsReqParams = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013890 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13891
13892 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013893 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013894 -------------------------------------------------------------------------*/
13895 if (( NULL == pEventData ) ||
Mahesh A Saptasagar329813b2014-12-15 12:16:51 +053013896 ( NULL == (wdiExitImpsRspCb = (WDI_ExitImpsRspCb)pEventData->pCBfnc)) ||
13897 (NULL == (pwdiExitImpsReqParams =
13898 (WDI_ExitImpsReqParamsType*)pEventData->pEventData)))
Jeff Johnson295189b2012-06-20 16:38:30 -070013899 {
13900 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013901 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013902 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013903 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013904 }
13905
13906 /*-----------------------------------------------------------------------
13907 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013908 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013909 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013910 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_EXIT_IMPS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013911 0,
13912 &pSendBuffer, &usDataOffset, &usSendSize))||
13913 ( usSendSize < (usDataOffset )))
13914 {
13915 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080013916 "Unable to get send buffer in Exit IMPS req %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070013917 pEventData, wdiExitImpsRspCb);
13918 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013919 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013920 }
Mahesh A Saptasagar329813b2014-12-15 12:16:51 +053013921 pWDICtx->wdiReqStatusCB = pwdiExitImpsReqParams->wdiReqStatusCB;
13922 pWDICtx->pReqStatusUserData = pwdiExitImpsReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013923 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013924 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013925 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013926 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13927 wdiExitImpsRspCb, pEventData->pUserData, WDI_EXIT_IMPS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013928}/*WDI_ProcessExitImpsReq*/
13929
13930/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013931 @brief Process Enter BMPS Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070013932 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013933
13934 @param pWDICtx: pointer to the WLAN DAL context
13935 pEventData: pointer to the event information structure
13936
Jeff Johnson295189b2012-06-20 16:38:30 -070013937 @see
13938 @return Result of the function call
13939*/
13940WDI_Status
13941WDI_ProcessEnterBmpsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013942(
Jeff Johnson295189b2012-06-20 16:38:30 -070013943 WDI_ControlBlockType* pWDICtx,
13944 WDI_EventInfoType* pEventData
13945)
13946{
13947 WDI_EnterBmpsReqParamsType* pwdiEnterBmpsReqParams = NULL;
13948 WDI_EnterBmpsRspCb wdiEnterBmpsRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013949 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013950 wpt_uint16 usDataOffset = 0;
13951 wpt_uint16 usSendSize = 0;
13952 tHalEnterBmpsReqParams enterBmpsReq;
Jeff Johnson43971f52012-07-17 12:26:56 -070013953 wpt_status wptStatus;
13954
Jeff Johnson295189b2012-06-20 16:38:30 -070013955 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13956
13957 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013958 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013959 -------------------------------------------------------------------------*/
13960 if (( NULL == pEventData ) ||
13961 ( NULL == (pwdiEnterBmpsReqParams = (WDI_EnterBmpsReqParamsType*)pEventData->pEventData)) ||
13962 ( NULL == (wdiEnterBmpsRspCb = (WDI_EnterBmpsRspCb)pEventData->pCBfnc)))
13963 {
13964 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013965 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013966 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080013967 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070013968 }
13969
13970 /*-----------------------------------------------------------------------
13971 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013972 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013973 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013974 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ENTER_BMPS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013975 sizeof(enterBmpsReq),
13976 &pSendBuffer, &usDataOffset, &usSendSize))||
13977 ( usSendSize < (usDataOffset + sizeof(enterBmpsReq) )))
13978 {
13979 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080013980 "Unable to get send buffer in Enter BMPS req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070013981 pEventData, pwdiEnterBmpsReqParams, wdiEnterBmpsRspCb);
13982 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080013983 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070013984 }
13985
13986 /* Reset the event to be not signalled */
Jeff Johnson43971f52012-07-17 12:26:56 -070013987 wptStatus = wpalEventReset(&pWDICtx->setPowerStateEvent);
13988 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070013989 {
13990 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13991 "WDI Init failed to reset an event");
13992
Jeff Johnsone7245742012-09-05 17:12:55 -070013993 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080013994 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -070013995 }
13996
13997 // notify DTS that we are entering BMPS
Ravali85acf6b2012-12-12 14:01:38 -080013998 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_BMPS, WDI_SetPowerStateCb);
13999 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
14000 {
14001 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain9a5d5382013-11-17 22:05:35 -080014002 "WDTS_SetPowerState returned with status %d when trying to notify DTS that we are entering BMPS", wptStatus);
Ravali85acf6b2012-12-12 14:01:38 -080014003 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014004 goto fail;
Ravali85acf6b2012-12-12 14:01:38 -080014005 }
Jeff Johnson295189b2012-06-20 16:38:30 -070014006
14007/*
Jeff Johnsone7245742012-09-05 17:12:55 -070014008 * Wait for the event to be set once the ACK comes back from DXE
Jeff Johnson295189b2012-06-20 16:38:30 -070014009 */
Jeff Johnson43971f52012-07-17 12:26:56 -070014010 wptStatus = wpalEventWait(&pWDICtx->setPowerStateEvent,
14011 WDI_SET_POWER_STATE_TIMEOUT);
14012 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070014013 {
14014 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
14015 "WDI Init failed to wait on an event");
14016
Jeff Johnsone7245742012-09-05 17:12:55 -070014017 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014018 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -070014019 }
14020
14021 pWDICtx->bInBmps = eWLAN_PAL_TRUE;
14022
14023 enterBmpsReq.bssIdx = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.ucBssIdx;
14024 enterBmpsReq.tbtt = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.uTbtt;
14025 enterBmpsReq.dtimCount = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.ucDtimCount;
14026 enterBmpsReq.dtimPeriod = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.ucDtimPeriod;
14027
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -080014028 // For ESE and 11R Roaming
Jeff Johnson295189b2012-06-20 16:38:30 -070014029 enterBmpsReq.rssiFilterPeriod = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.rssiFilterPeriod;
14030 enterBmpsReq.numBeaconPerRssiAverage = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.numBeaconPerRssiAverage;
14031 enterBmpsReq.bRssiFilterEnable = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.bRssiFilterEnable;
14032
14033 wpalMemoryCopy( pSendBuffer+usDataOffset,
14034 &enterBmpsReq,
14035 sizeof(enterBmpsReq));
14036
14037 pWDICtx->wdiReqStatusCB = pwdiEnterBmpsReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014038 pWDICtx->pReqStatusUserData = pwdiEnterBmpsReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014039
14040 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014041 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014042 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014043 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14044 wdiEnterBmpsRspCb, pEventData->pUserData, WDI_ENTER_BMPS_RESP);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014045
14046fail:
14047 // Release the message buffer so we don't leak
14048 wpalMemoryFree(pSendBuffer);
14049
14050failRequest:
14051 //WDA should have failure check to avoid the memory leak
14052 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014053}/*WDI_ProcessEnterBmpsReq*/
14054
14055/**
14056 @brief Process Exit BMPS Request function (called when Main FSM
14057 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014058
14059 @param pWDICtx: pointer to the WLAN DAL context
14060 pEventData: pointer to the event information structure
14061
Jeff Johnson295189b2012-06-20 16:38:30 -070014062 @see
14063 @return Result of the function call
14064*/
14065WDI_Status
14066WDI_ProcessExitBmpsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014067(
Jeff Johnson295189b2012-06-20 16:38:30 -070014068 WDI_ControlBlockType* pWDICtx,
14069 WDI_EventInfoType* pEventData
14070)
14071{
14072 WDI_ExitBmpsReqParamsType* pwdiExitBmpsReqParams = NULL;
14073 WDI_ExitBmpsRspCb wdiExitBmpsRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014074 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014075 wpt_uint16 usDataOffset = 0;
14076 wpt_uint16 usSendSize = 0;
14077 tHalExitBmpsReqParams exitBmpsReq;
14078 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14079
14080 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014081 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014082 -------------------------------------------------------------------------*/
14083 if (( NULL == pEventData ) ||
14084 ( NULL == (pwdiExitBmpsReqParams = (WDI_ExitBmpsReqParamsType*)pEventData->pEventData)) ||
14085 ( NULL == (wdiExitBmpsRspCb = (WDI_ExitBmpsRspCb)pEventData->pCBfnc)))
14086 {
14087 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014088 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014089 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014090 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014091 }
14092
14093 /*-----------------------------------------------------------------------
14094 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014095 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014096 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014097 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_EXIT_BMPS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014098 sizeof(exitBmpsReq),
14099 &pSendBuffer, &usDataOffset, &usSendSize))||
14100 ( usSendSize < (usDataOffset + sizeof(exitBmpsReq) )))
14101 {
14102 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014103 "Unable to get send buffer in Exit BMPS req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014104 pEventData, pwdiExitBmpsReqParams, wdiExitBmpsRspCb);
14105 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014106 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014107 }
14108 exitBmpsReq.sendDataNull = pwdiExitBmpsReqParams->wdiExitBmpsInfo.ucSendDataNull;
14109
Jeff Johnsone7245742012-09-05 17:12:55 -070014110 exitBmpsReq.bssIdx = pwdiExitBmpsReqParams->wdiExitBmpsInfo.bssIdx;
14111
Jeff Johnson295189b2012-06-20 16:38:30 -070014112 wpalMemoryCopy( pSendBuffer+usDataOffset,
14113 &exitBmpsReq,
14114 sizeof(exitBmpsReq));
14115
14116 pWDICtx->wdiReqStatusCB = pwdiExitBmpsReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014117 pWDICtx->pReqStatusUserData = pwdiExitBmpsReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014118
14119 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014120 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014121 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014122 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14123 wdiExitBmpsRspCb, pEventData->pUserData, WDI_EXIT_BMPS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070014124}/*WDI_ProcessExitBmpsReq*/
14125
14126/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014127 @brief Process Enter UAPSD Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070014128 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014129
14130 @param pWDICtx: pointer to the WLAN DAL context
14131 pEventData: pointer to the event information structure
14132
Jeff Johnson295189b2012-06-20 16:38:30 -070014133 @see
14134 @return Result of the function call
14135*/
14136WDI_Status
14137WDI_ProcessEnterUapsdReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014138(
Jeff Johnson295189b2012-06-20 16:38:30 -070014139 WDI_ControlBlockType* pWDICtx,
14140 WDI_EventInfoType* pEventData
14141)
14142{
14143 WDI_EnterUapsdReqParamsType* pwdiEnterUapsdReqParams = NULL;
14144 WDI_EnterUapsdRspCb wdiEnterUapsdRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014145 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014146 wpt_uint16 usDataOffset = 0;
14147 wpt_uint16 usSendSize = 0;
14148 tUapsdReqParams enterUapsdReq;
14149 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14150
14151 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014152 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014153 -------------------------------------------------------------------------*/
14154 if (( NULL == pEventData ) ||
14155 ( NULL == (pwdiEnterUapsdReqParams = (WDI_EnterUapsdReqParamsType*)pEventData->pEventData)) ||
14156 ( NULL == (wdiEnterUapsdRspCb = (WDI_EnterUapsdRspCb)pEventData->pCBfnc)))
14157 {
14158 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014159 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014160 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014161 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014162 }
14163
14164 /*-----------------------------------------------------------------------
14165 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014166 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014167 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014168 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ENTER_UAPSD_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014169 sizeof(enterUapsdReq),
14170 &pSendBuffer, &usDataOffset, &usSendSize))||
14171 ( usSendSize < (usDataOffset + sizeof(enterUapsdReq) )))
14172 {
14173 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014174 "Unable to get send buffer in Enter UAPSD req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014175 pEventData, pwdiEnterUapsdReqParams, wdiEnterUapsdRspCb);
14176 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014177 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014178 }
14179
14180 enterUapsdReq.beDeliveryEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucBeDeliveryEnabled;
14181 enterUapsdReq.beTriggerEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucBeTriggerEnabled;
14182 enterUapsdReq.bkDeliveryEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucBkDeliveryEnabled;
14183 enterUapsdReq.bkTriggerEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucBkTriggerEnabled;
14184 enterUapsdReq.viDeliveryEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucViDeliveryEnabled;
14185 enterUapsdReq.viTriggerEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucViTriggerEnabled;
14186 enterUapsdReq.voDeliveryEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucVoDeliveryEnabled;
14187 enterUapsdReq.voTriggerEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucVoTriggerEnabled;
Jeff Johnsone7245742012-09-05 17:12:55 -070014188 enterUapsdReq.bssIdx = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.bssIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070014189
Jeff Johnsone7245742012-09-05 17:12:55 -070014190 wpalMemoryCopy( pSendBuffer+usDataOffset,
14191 &enterUapsdReq,
14192 sizeof(enterUapsdReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070014193
14194 pWDICtx->wdiReqStatusCB = pwdiEnterUapsdReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014195 pWDICtx->pReqStatusUserData = pwdiEnterUapsdReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014196
14197 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014198 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014199 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014200 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14201 wdiEnterUapsdRspCb, pEventData->pUserData, WDI_ENTER_UAPSD_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070014202}/*WDI_ProcessEnterUapsdReq*/
14203
14204/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014205 @brief Process Exit UAPSD Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070014206 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014207
14208 @param pWDICtx: pointer to the WLAN DAL context
14209 pEventData: pointer to the event information structure
14210
Jeff Johnson295189b2012-06-20 16:38:30 -070014211 @see
14212 @return Result of the function call
14213*/
14214WDI_Status
14215WDI_ProcessExitUapsdReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014216(
Jeff Johnson295189b2012-06-20 16:38:30 -070014217 WDI_ControlBlockType* pWDICtx,
14218 WDI_EventInfoType* pEventData
14219)
14220{
14221 WDI_ExitUapsdRspCb wdiExitUapsdRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014222 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014223 wpt_uint16 usDataOffset = 0;
14224 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014225 WDI_ExitUapsdReqParamsType *pExitUapsdparams;
14226 wpt_uint8 bssIdx = 0;
14227
Jeff Johnson295189b2012-06-20 16:38:30 -070014228 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14229
14230 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014231 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014232 -------------------------------------------------------------------------*/
14233 if (( NULL == pEventData ) ||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014234 ( NULL == (pExitUapsdparams = (WDI_ExitUapsdReqParamsType *)pEventData->pEventData)) ||
Jeff Johnson295189b2012-06-20 16:38:30 -070014235 ( NULL == (wdiExitUapsdRspCb = (WDI_ExitUapsdRspCb)pEventData->pCBfnc)))
14236 {
14237 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014238 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014239 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014240 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014241 }
14242
14243 /*-----------------------------------------------------------------------
14244 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014245 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014246 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014247 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_EXIT_UAPSD_REQ,
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014248 sizeof(wpt_uint8),
Jeff Johnson295189b2012-06-20 16:38:30 -070014249 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014250 ( usSendSize < (usDataOffset + sizeof(wpt_uint8))))
Jeff Johnson295189b2012-06-20 16:38:30 -070014251 {
14252 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014253 "Unable to get send buffer in Exit UAPSD req %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014254 pEventData, wdiExitUapsdRspCb);
14255 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014256 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014257 }
14258
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014259 bssIdx = pExitUapsdparams->wdiExitUapsdInfo.bssIdx;
14260
14261 wpalMemoryCopy( pSendBuffer+usDataOffset,
14262 &bssIdx,
14263 sizeof(wpt_uint8));
14264
14265 pWDICtx->wdiReqStatusCB = pExitUapsdparams->wdiReqStatusCB;
14266 pWDICtx->pReqStatusUserData = pExitUapsdparams->pUserData;
14267
Jeff Johnson295189b2012-06-20 16:38:30 -070014268 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014269 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014270 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014271 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14272 wdiExitUapsdRspCb, pEventData->pUserData, WDI_EXIT_UAPSD_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070014273}/*WDI_ProcessExitUapsdReq*/
14274
14275/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014276 @brief Process Set UAPSD params Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070014277 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014278
14279 @param pWDICtx: pointer to the WLAN DAL context
14280 pEventData: pointer to the event information structure
14281
Jeff Johnson295189b2012-06-20 16:38:30 -070014282 @see
14283 @return Result of the function call
14284*/
14285WDI_Status
14286WDI_ProcessSetUapsdAcParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014287(
Jeff Johnson295189b2012-06-20 16:38:30 -070014288 WDI_ControlBlockType* pWDICtx,
14289 WDI_EventInfoType* pEventData
14290)
14291{
14292 WDI_SetUapsdAcParamsReqParamsType* pwdiSetUapsdAcParams = NULL;
14293 WDI_SetUapsdAcParamsCb wdiSetUapsdAcParamsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014294 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014295 wpt_uint16 usDataOffset = 0;
14296 wpt_uint16 usSendSize = 0;
14297 tUapsdInfo uapsdAcParamsReq;
14298 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14299
14300 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014301 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014302 -------------------------------------------------------------------------*/
14303 if (( NULL == pEventData ) ||
14304 ( NULL == (pwdiSetUapsdAcParams = (WDI_SetUapsdAcParamsReqParamsType*)pEventData->pEventData)) ||
14305 ( NULL == (wdiSetUapsdAcParamsCb = (WDI_SetUapsdAcParamsCb)pEventData->pCBfnc)))
14306 {
14307 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014308 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014309 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014310 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014311 }
14312
14313 /*-----------------------------------------------------------------------
14314 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014315 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014316 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014317 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_UAPSD_PARAM_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014318 sizeof(uapsdAcParamsReq),
14319 &pSendBuffer, &usDataOffset, &usSendSize))||
14320 ( usSendSize < (usDataOffset + sizeof(uapsdAcParamsReq) )))
14321 {
14322 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014323 "Unable to get send buffer in Set UAPSD params req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014324 pEventData, pwdiSetUapsdAcParams, wdiSetUapsdAcParamsCb);
14325 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014326 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014327 }
14328
14329 uapsdAcParamsReq.ac = pwdiSetUapsdAcParams->wdiUapsdInfo.ucAc;
14330 uapsdAcParamsReq.staidx = pwdiSetUapsdAcParams->wdiUapsdInfo.ucSTAIdx;
14331 uapsdAcParamsReq.up = pwdiSetUapsdAcParams->wdiUapsdInfo.ucUp;
14332 uapsdAcParamsReq.delayInterval = pwdiSetUapsdAcParams->wdiUapsdInfo.uDelayInterval;
14333 uapsdAcParamsReq.srvInterval = pwdiSetUapsdAcParams->wdiUapsdInfo.uSrvInterval;
14334 uapsdAcParamsReq.susInterval = pwdiSetUapsdAcParams->wdiUapsdInfo.uSusInterval;
14335
Jeff Johnsone7245742012-09-05 17:12:55 -070014336 wpalMemoryCopy( pSendBuffer+usDataOffset,
14337 &uapsdAcParamsReq,
14338 sizeof(uapsdAcParamsReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070014339
14340 pWDICtx->wdiReqStatusCB = pwdiSetUapsdAcParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014341 pWDICtx->pReqStatusUserData = pwdiSetUapsdAcParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014342
14343 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014344 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014345 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014346 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14347 wdiSetUapsdAcParamsCb, pEventData->pUserData, WDI_SET_UAPSD_PARAM_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070014348}/*WDI_ProcessSetUapsdAcParamsReq*/
14349
14350/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014351 @brief Process update UAPSD params Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070014352 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014353
14354 @param pWDICtx: pointer to the WLAN DAL context
14355 pEventData: pointer to the event information structure
14356
Jeff Johnson295189b2012-06-20 16:38:30 -070014357 @see
14358 @return Result of the function call
14359*/
14360WDI_Status
14361WDI_ProcessUpdateUapsdParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014362(
Jeff Johnson295189b2012-06-20 16:38:30 -070014363 WDI_ControlBlockType* pWDICtx,
14364 WDI_EventInfoType* pEventData
14365)
14366{
14367 WDI_UpdateUapsdReqParamsType* pwdiUpdateUapsdReqParams = NULL;
14368 WDI_UpdateUapsdParamsCb wdiUpdateUapsdParamsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014369 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014370 wpt_uint16 usDataOffset = 0;
14371 wpt_uint16 usSendSize = 0;
14372 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14373
14374 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014375 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014376 -------------------------------------------------------------------------*/
14377 if (( NULL == pEventData ) ||
14378 ( NULL == (pwdiUpdateUapsdReqParams = (WDI_UpdateUapsdReqParamsType*)pEventData->pEventData)) ||
14379 ( NULL == (wdiUpdateUapsdParamsCb = (WDI_UpdateUapsdParamsCb)pEventData->pCBfnc)))
14380 {
14381 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014382 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014383 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014384 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014385 }
14386
14387 /*-----------------------------------------------------------------------
14388 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014389 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014390 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014391 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_UAPSD_PARAM_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014392 sizeof(pwdiUpdateUapsdReqParams->wdiUpdateUapsdInfo),
14393 &pSendBuffer, &usDataOffset, &usSendSize))||
14394 ( usSendSize < (usDataOffset + sizeof(pwdiUpdateUapsdReqParams->wdiUpdateUapsdInfo) )))
14395 {
14396 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014397 "Unable to get send buffer in Update UAPSD params req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014398 pEventData, pwdiUpdateUapsdReqParams, wdiUpdateUapsdParamsCb);
14399 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014400 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014401 }
14402
Jeff Johnsone7245742012-09-05 17:12:55 -070014403 wpalMemoryCopy( pSendBuffer+usDataOffset,
14404 &pwdiUpdateUapsdReqParams->wdiUpdateUapsdInfo,
14405 sizeof(pwdiUpdateUapsdReqParams->wdiUpdateUapsdInfo));
Jeff Johnson295189b2012-06-20 16:38:30 -070014406
14407 pWDICtx->wdiReqStatusCB = pwdiUpdateUapsdReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014408 pWDICtx->pReqStatusUserData = pwdiUpdateUapsdReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014409
14410 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014411 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014412 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014413 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14414 wdiUpdateUapsdParamsCb, pEventData->pUserData, WDI_UPDATE_UAPSD_PARAM_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070014415}/*WDI_ProcessUpdateUapsdParamsReq*/
14416
14417/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014418 @brief Process Configure RXP filter Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070014419 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014420
14421 @param pWDICtx: pointer to the WLAN DAL context
14422 pEventData: pointer to the event information structure
14423
Jeff Johnson295189b2012-06-20 16:38:30 -070014424 @see
14425 @return Result of the function call
14426*/
14427WDI_Status
14428WDI_ProcessConfigureRxpFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014429(
Jeff Johnson295189b2012-06-20 16:38:30 -070014430 WDI_ControlBlockType* pWDICtx,
14431 WDI_EventInfoType* pEventData
14432)
14433{
14434 WDI_ConfigureRxpFilterReqParamsType* pwdiRxpFilterParams = NULL;
14435 WDI_ConfigureRxpFilterCb wdiConfigureRxpFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014436 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014437 wpt_uint16 usDataOffset = 0;
14438 wpt_uint16 usSendSize = 0;
14439 tHalConfigureRxpFilterReqParams halRxpFilterParams;
14440
14441 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14442
14443 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014444 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014445 -------------------------------------------------------------------------*/
14446 if (( NULL == pEventData ) ||
14447 ( NULL == (pwdiRxpFilterParams = (WDI_ConfigureRxpFilterReqParamsType*)pEventData->pEventData)) ||
14448 ( NULL == (wdiConfigureRxpFilterCb = (WDI_ConfigureRxpFilterCb)pEventData->pCBfnc)))
14449 {
14450 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014451 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014452 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014453 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014454 }
14455
14456 /*-----------------------------------------------------------------------
14457 Get message buffer
14458 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014459 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_CONFIGURE_RXP_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014460 sizeof(halRxpFilterParams),
14461 &pSendBuffer, &usDataOffset, &usSendSize))||
14462 ( usSendSize < (usDataOffset + sizeof(halRxpFilterParams) )))
14463 {
14464 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014465 "Unable to get send buffer in Set UAPSD params req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014466 pEventData, pwdiRxpFilterParams, wdiConfigureRxpFilterCb);
14467 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014468 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014469 }
14470
Jeff Johnsone7245742012-09-05 17:12:55 -070014471 halRxpFilterParams.setMcstBcstFilterSetting =
Jeff Johnson295189b2012-06-20 16:38:30 -070014472 pwdiRxpFilterParams->wdiRxpFilterParam.ucSetMcstBcstFilterSetting;
Jeff Johnsone7245742012-09-05 17:12:55 -070014473 halRxpFilterParams.setMcstBcstFilter =
Jeff Johnson295189b2012-06-20 16:38:30 -070014474 pwdiRxpFilterParams->wdiRxpFilterParam.ucSetMcstBcstFilter;
14475
Jeff Johnsone7245742012-09-05 17:12:55 -070014476 wpalMemoryCopy( pSendBuffer+usDataOffset,
14477 &halRxpFilterParams,
14478 sizeof(halRxpFilterParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070014479
14480 pWDICtx->wdiReqStatusCB = pwdiRxpFilterParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014481 pWDICtx->pReqStatusUserData = pwdiRxpFilterParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014482
14483 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014484 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014485 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014486 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14487 wdiConfigureRxpFilterCb, pEventData->pUserData, WDI_CONFIGURE_RXP_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070014488}/*WDI_ProcessConfigureRxpFilterReq*/
14489
14490/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014491 @brief Process set beacon filter Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070014492 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014493
14494 @param pWDICtx: pointer to the WLAN DAL context
14495 pEventData: pointer to the event information structure
14496
Jeff Johnson295189b2012-06-20 16:38:30 -070014497 @see
14498 @return Result of the function call
14499*/
14500WDI_Status
14501WDI_ProcessSetBeaconFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014502(
Jeff Johnson295189b2012-06-20 16:38:30 -070014503 WDI_ControlBlockType* pWDICtx,
14504 WDI_EventInfoType* pEventData
14505)
14506{
14507 WDI_BeaconFilterReqParamsType* pwdiBeaconFilterParams = NULL;
14508 WDI_SetBeaconFilterCb wdiBeaconFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014509 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014510 wpt_uint16 usDataOffset = 0;
14511 wpt_uint16 usSendSize = 0;
14512 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14513
14514 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014515 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014516 -------------------------------------------------------------------------*/
14517 if (( NULL == pEventData ) ||
14518 ( NULL == (pwdiBeaconFilterParams = (WDI_BeaconFilterReqParamsType*)pEventData->pEventData)) ||
14519 ( NULL == (wdiBeaconFilterCb = (WDI_SetBeaconFilterCb)pEventData->pCBfnc)))
14520 {
14521 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014522 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014523 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014524 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014525 }
14526
14527 /*-----------------------------------------------------------------------
14528 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014529 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014530 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014531 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_BEACON_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014532 sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo) + pwdiBeaconFilterParams->wdiBeaconFilterInfo.usIeNum * sizeof(tBeaconFilterIe),
14533 &pSendBuffer, &usDataOffset, &usSendSize))||
14534 ( usSendSize < (usDataOffset + sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo) )))
14535 {
14536 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014537 "Unable to get send buffer in Set beacon filter req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014538 pEventData, pwdiBeaconFilterParams, wdiBeaconFilterCb);
14539 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014540 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014541 }
14542
Jeff Johnsone7245742012-09-05 17:12:55 -070014543 wpalMemoryCopy( pSendBuffer+usDataOffset,
14544 &pwdiBeaconFilterParams->wdiBeaconFilterInfo,
14545 sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo));
14546 wpalMemoryCopy( pSendBuffer+usDataOffset+sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo),
14547 &pwdiBeaconFilterParams->aFilters[0],
14548 pwdiBeaconFilterParams->wdiBeaconFilterInfo.usIeNum * sizeof(tBeaconFilterIe));
Jeff Johnson295189b2012-06-20 16:38:30 -070014549
14550 pWDICtx->wdiReqStatusCB = pwdiBeaconFilterParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014551 pWDICtx->pReqStatusUserData = pwdiBeaconFilterParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014552
14553 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014554 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014555 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014556 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14557 wdiBeaconFilterCb, pEventData->pUserData, WDI_SET_BEACON_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070014558}/*WDI_ProcessSetBeaconFilterReq*/
14559
14560/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014561 @brief Process remove beacon filter Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070014562 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014563
14564 @param pWDICtx: pointer to the WLAN DAL context
14565 pEventData: pointer to the event information structure
14566
Jeff Johnson295189b2012-06-20 16:38:30 -070014567 @see
14568 @return Result of the function call
14569*/
14570WDI_Status
14571WDI_ProcessRemBeaconFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014572(
Jeff Johnson295189b2012-06-20 16:38:30 -070014573 WDI_ControlBlockType* pWDICtx,
14574 WDI_EventInfoType* pEventData
14575)
14576{
14577 WDI_RemBeaconFilterReqParamsType* pwdiBeaconFilterParams = NULL;
14578 WDI_RemBeaconFilterCb wdiBeaconFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014579 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014580 wpt_uint16 usDataOffset = 0;
14581 wpt_uint16 usSendSize = 0;
14582 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14583
14584 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014585 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014586 -------------------------------------------------------------------------*/
14587 if (( NULL == pEventData ) ||
14588 ( NULL == (pwdiBeaconFilterParams = (WDI_RemBeaconFilterReqParamsType*)pEventData->pEventData)) ||
14589 ( NULL == (wdiBeaconFilterCb = (WDI_RemBeaconFilterCb)pEventData->pCBfnc)))
14590 {
14591 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014592 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014593 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014594 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014595 }
14596
14597 /*-----------------------------------------------------------------------
14598 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014599 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014600 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014601 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_REM_BEACON_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014602 sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo),
14603 &pSendBuffer, &usDataOffset, &usSendSize))||
14604 ( usSendSize < (usDataOffset + sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo) )))
14605 {
14606 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014607 "Unable to get send buffer in remove beacon filter req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014608 pEventData, pwdiBeaconFilterParams, wdiBeaconFilterCb);
14609 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014610 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014611 }
14612
Jeff Johnsone7245742012-09-05 17:12:55 -070014613 wpalMemoryCopy( pSendBuffer+usDataOffset,
14614 &pwdiBeaconFilterParams->wdiBeaconFilterInfo,
14615 sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo));
Jeff Johnson295189b2012-06-20 16:38:30 -070014616
14617 pWDICtx->wdiReqStatusCB = pwdiBeaconFilterParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014618 pWDICtx->pReqStatusUserData = pwdiBeaconFilterParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014619
14620 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014621 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014622 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014623 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14624 wdiBeaconFilterCb, pEventData->pUserData, WDI_REM_BEACON_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070014625}
14626
14627/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014628 @brief Process set RSSI thresholds Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070014629 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014630
14631 @param pWDICtx: pointer to the WLAN DAL context
14632 pEventData: pointer to the event information structure
14633
Jeff Johnson295189b2012-06-20 16:38:30 -070014634 @see
14635 @return Result of the function call
14636*/
14637WDI_Status
14638WDI_ProcessSetRSSIThresholdsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014639(
Jeff Johnson295189b2012-06-20 16:38:30 -070014640 WDI_ControlBlockType* pWDICtx,
14641 WDI_EventInfoType* pEventData
14642)
14643{
14644 WDI_SetRSSIThresholdsReqParamsType* pwdiRSSIThresholdsParams = NULL;
14645 WDI_SetRSSIThresholdsCb wdiRSSIThresholdsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014646 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014647 wpt_uint16 usDataOffset = 0;
14648 wpt_uint16 usSendSize = 0;
14649 tHalRSSIThresholds rssiThresholdsReq;
14650 WDI_Status ret_status = 0;
14651 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14652
14653 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014654 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014655 -------------------------------------------------------------------------*/
14656 if (( NULL == pEventData ) ||
14657 ( NULL == (pwdiRSSIThresholdsParams = (WDI_SetRSSIThresholdsReqParamsType*)pEventData->pEventData)) ||
14658 ( NULL == (wdiRSSIThresholdsCb = (WDI_SetRSSIThresholdsCb)pEventData->pCBfnc)))
14659 {
14660 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014661 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014662 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014663 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014664 }
14665
14666 /*-----------------------------------------------------------------------
14667 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014668 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014669 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014670 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_RSSI_THRESHOLDS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014671 sizeof(rssiThresholdsReq),
14672 &pSendBuffer, &usDataOffset, &usSendSize))||
14673 ( usSendSize < (usDataOffset + sizeof(rssiThresholdsReq) )))
14674 {
14675 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014676 "Unable to get send buffer in remove beacon filter req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014677 pEventData, pwdiRSSIThresholdsParams, wdiRSSIThresholdsCb);
14678 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014679 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014680 }
14681
Jeff Johnsone7245742012-09-05 17:12:55 -070014682 rssiThresholdsReq.bReserved10 =
Jeff Johnson295189b2012-06-20 16:38:30 -070014683 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bReserved10;
Jeff Johnsone7245742012-09-05 17:12:55 -070014684 rssiThresholdsReq.bRssiThres1NegNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070014685 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres1NegNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070014686 rssiThresholdsReq.bRssiThres1PosNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070014687 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres1PosNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070014688 rssiThresholdsReq.bRssiThres2NegNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070014689 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres2NegNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070014690 rssiThresholdsReq.bRssiThres2PosNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070014691 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres2PosNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070014692 rssiThresholdsReq.bRssiThres3NegNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070014693 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres3NegNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070014694 rssiThresholdsReq.bRssiThres3PosNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070014695 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres3PosNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070014696 rssiThresholdsReq.ucRssiThreshold1 =
Jeff Johnson295189b2012-06-20 16:38:30 -070014697 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.ucRssiThreshold1;
Jeff Johnsone7245742012-09-05 17:12:55 -070014698 rssiThresholdsReq.ucRssiThreshold2 =
Jeff Johnson295189b2012-06-20 16:38:30 -070014699 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.ucRssiThreshold2;
Jeff Johnsone7245742012-09-05 17:12:55 -070014700 rssiThresholdsReq.ucRssiThreshold3 =
Jeff Johnson295189b2012-06-20 16:38:30 -070014701 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.ucRssiThreshold3;
14702
Jeff Johnsone7245742012-09-05 17:12:55 -070014703 wpalMemoryCopy( pSendBuffer+usDataOffset,
14704 &rssiThresholdsReq,
14705 sizeof(rssiThresholdsReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070014706
14707 pWDICtx->wdiReqStatusCB = pwdiRSSIThresholdsParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014708 pWDICtx->pReqStatusUserData = pwdiRSSIThresholdsParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014709
14710 /*-------------------------------------------------------------------------
14711 Send Set threshold req to HAL
14712 -------------------------------------------------------------------------*/
14713 if ((ret_status = WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14714 wdiRSSIThresholdsCb, pEventData->pUserData, WDI_SET_RSSI_THRESHOLDS_RESP)) == WDI_STATUS_SUCCESS)
14715 {
14716 // When we are in idle state WDI_STARTED_ST and we receive indication for threshold
14717 // req. Then as a result of processing the threshold cross ind, we trigger
14718 // a Set threshold req, then we need to indicate to WDI that it needs to
14719 // go to busy state as a result of the indication as we sent a req in the
14720 // same WDI context.
14721 // Hence expected state transition is to busy.
14722 pWDICtx->ucExpectedStateTransition = WDI_BUSY_ST;
14723 }
14724
14725 return ret_status;
14726}
14727
14728/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014729 @brief Process set RSSI thresholds Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070014730 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014731
14732 @param pWDICtx: pointer to the WLAN DAL context
14733 pEventData: pointer to the event information structure
14734
Jeff Johnson295189b2012-06-20 16:38:30 -070014735 @see
14736 @return Result of the function call
14737*/
14738WDI_Status
14739WDI_ProcessHostOffloadReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014740(
Jeff Johnson295189b2012-06-20 16:38:30 -070014741 WDI_ControlBlockType* pWDICtx,
14742 WDI_EventInfoType* pEventData
14743)
14744{
14745 WDI_HostOffloadReqParamsType* pwdiHostOffloadParams = NULL;
14746 WDI_HostOffloadCb wdiHostOffloadCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014747 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014748 wpt_uint16 usDataOffset = 0;
14749 wpt_uint16 usSendSize = 0;
14750 tHalHostOffloadReq hostOffloadParams;
14751 tHalNSOffloadParams nsOffloadParams;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014752 wpt_uint8 ucCurrentBSSSesIdx = 0;
14753 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014754
14755 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14756
14757 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014758 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014759 -------------------------------------------------------------------------*/
14760 if (( NULL == pEventData ) ||
14761 ( NULL == (pwdiHostOffloadParams = (WDI_HostOffloadReqParamsType*)pEventData->pEventData)) ||
14762 ( NULL == (wdiHostOffloadCb = (WDI_HostOffloadCb)pEventData->pCBfnc)))
14763 {
14764 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014765 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014766 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014767 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070014768 }
14769
14770 /*-----------------------------------------------------------------------
14771 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014772 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014773 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014774 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_HOST_OFFLOAD_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014775 sizeof(hostOffloadParams)+sizeof(nsOffloadParams),
14776 &pSendBuffer, &usDataOffset, &usSendSize))||
14777 ( usSendSize < (usDataOffset + sizeof(hostOffloadParams) + sizeof(nsOffloadParams) )))
14778 {
14779 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014780 "Unable to get send buffer in host offload req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014781 pEventData, pwdiHostOffloadParams, wdiHostOffloadCb);
14782 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014783 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070014784 }
14785
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014786 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
14787 pwdiHostOffloadParams->wdiHostOffloadInfo.bssId,
14788 &pBSSSes);
14789 if ( NULL == pBSSSes )
14790 {
c_hpothu86feba52014-10-28 15:51:18 +053014791 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Gopichand Nakkalac6c91902013-05-29 18:53:35 +053014792 " %s : Association for this BSSID does not exist " MAC_ADDRESS_STR,
14793 __func__, MAC_ADDR_ARRAY(pwdiHostOffloadParams->wdiHostOffloadInfo.bssId));
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014794 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014795 }
14796
Jeff Johnson295189b2012-06-20 16:38:30 -070014797 hostOffloadParams.offloadType = pwdiHostOffloadParams->wdiHostOffloadInfo.ucOffloadType;
14798 hostOffloadParams.enableOrDisable = pwdiHostOffloadParams->wdiHostOffloadInfo.ucEnableOrDisable;
Jeff Johnsone7245742012-09-05 17:12:55 -070014799
Jeff Johnson295189b2012-06-20 16:38:30 -070014800 if( HAL_IPV4_ARP_REPLY_OFFLOAD == hostOffloadParams.offloadType )
14801 {
14802 // ARP Offload
14803 wpalMemoryCopy(hostOffloadParams.params.hostIpv4Addr,
14804 pwdiHostOffloadParams->wdiHostOffloadInfo.params.aHostIpv4Addr,
14805 4);
14806 }
14807 else
14808 {
14809 // NS Offload
14810 wpalMemoryCopy(hostOffloadParams.params.hostIpv6Addr,
14811 pwdiHostOffloadParams->wdiHostOffloadInfo.params.aHostIpv6Addr,
14812 16);
14813
14814#ifdef WLAN_NS_OFFLOAD
14815 // copy pwdiHostOffloadParams->wdiNsOffloadParams into nsOffloadParams
14816 wpalMemoryCopy(nsOffloadParams.srcIPv6Addr,
14817 pwdiHostOffloadParams->wdiNsOffloadParams.srcIPv6Addr,
14818 16);
14819 wpalMemoryCopy(nsOffloadParams.selfIPv6Addr,
14820 pwdiHostOffloadParams->wdiNsOffloadParams.selfIPv6Addr,
14821 16);
14822 wpalMemoryCopy(nsOffloadParams.targetIPv6Addr1,
14823 pwdiHostOffloadParams->wdiNsOffloadParams.targetIPv6Addr1,
14824 16);
14825 wpalMemoryCopy(nsOffloadParams.targetIPv6Addr2,
14826 pwdiHostOffloadParams->wdiNsOffloadParams.targetIPv6Addr2,
14827 16);
14828 wpalMemoryCopy(nsOffloadParams.selfMacAddr,
14829 pwdiHostOffloadParams->wdiNsOffloadParams.selfMacAddr,
14830 6);
Gopichand Nakkala746a9452013-06-11 12:45:54 +053014831 nsOffloadParams.srcIPv6AddrValid =
14832 pwdiHostOffloadParams->wdiNsOffloadParams.srcIPv6AddrValid;
14833
14834 nsOffloadParams.targetIPv6Addr1Valid =
14835 pwdiHostOffloadParams->wdiNsOffloadParams.targetIPv6Addr1Valid;
14836
14837 nsOffloadParams.targetIPv6Addr2Valid =
14838 pwdiHostOffloadParams->wdiNsOffloadParams.targetIPv6Addr2Valid;
14839
14840 nsOffloadParams.slotIndex =
14841 pwdiHostOffloadParams->wdiNsOffloadParams.slotIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070014842
Jeff Johnson295189b2012-06-20 16:38:30 -070014843#endif // WLAN_NS_OFFLOAD
14844 }
14845
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014846 nsOffloadParams.bssIdx = pBSSSes->ucBSSIdx;
14847
Jeff Johnson295189b2012-06-20 16:38:30 -070014848 // copy hostOffloadParams into pSendBuffer
14849 wpalMemoryCopy( pSendBuffer+usDataOffset,
14850 &hostOffloadParams,
14851 sizeof(hostOffloadParams));
14852
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014853 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION) )
Jeff Johnson295189b2012-06-20 16:38:30 -070014854 {
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014855 // copy nsOffloadParams into pSendBuffer
14856 wpalMemoryCopy( pSendBuffer+usDataOffset+sizeof(hostOffloadParams),
Jeff Johnson295189b2012-06-20 16:38:30 -070014857 &nsOffloadParams,
14858 sizeof(nsOffloadParams));
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014859 }
14860 else
14861 {
14862#ifdef WLAN_NS_OFFLOAD
14863 if( HAL_IPV6_NS_OFFLOAD == hostOffloadParams.offloadType )
14864 {
14865 // copy nsOffloadParams into pSendBuffer
14866 wpalMemoryCopy( pSendBuffer+usDataOffset+sizeof(hostOffloadParams),
14867 &nsOffloadParams,
14868 sizeof(nsOffloadParams));
14869 }
14870#endif
14871 }
Jeff Johnson295189b2012-06-20 16:38:30 -070014872
14873 pWDICtx->wdiReqStatusCB = pwdiHostOffloadParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014874 pWDICtx->pReqStatusUserData = pwdiHostOffloadParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014875
14876 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014877 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014878 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014879 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14880 wdiHostOffloadCb, pEventData->pUserData, WDI_HOST_OFFLOAD_RESP);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014881
14882fail:
14883 // Release the message buffer so we don't leak
14884 wpalMemoryFree(pSendBuffer);
14885
14886failRequest:
14887 //WDA should have failure check to avoid the memory leak
14888 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014889}/*WDI_ProcessHostOffloadReq*/
14890
14891/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014892 @brief Process Keep Alive Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070014893 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014894
14895 @param pWDICtx: pointer to the WLAN DAL context
14896 pEventData: pointer to the event information structure
14897
Jeff Johnson295189b2012-06-20 16:38:30 -070014898 @see
14899 @return Result of the function call
14900*/
14901WDI_Status
14902WDI_ProcessKeepAliveReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014903(
Jeff Johnson295189b2012-06-20 16:38:30 -070014904 WDI_ControlBlockType* pWDICtx,
14905 WDI_EventInfoType* pEventData
14906)
14907{
14908 WDI_KeepAliveReqParamsType* pwdiKeepAliveParams = NULL;
14909 WDI_KeepAliveCb wdiKeepAliveCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014910 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014911 wpt_uint16 usDataOffset = 0;
14912 wpt_uint16 usSendSize = 0;
14913 tHalKeepAliveReq keepAliveReq;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014914 wpt_uint8 ucCurrentBSSSesIdx = 0;
14915 WDI_BSSSessionType* pBSSSes = NULL;
14916
Jeff Johnson295189b2012-06-20 16:38:30 -070014917 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14918
14919 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014920 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014921 -------------------------------------------------------------------------*/
14922 if (( NULL == pEventData ) ||
14923 ( NULL == (pwdiKeepAliveParams = (WDI_KeepAliveReqParamsType*)pEventData->pEventData)) ||
14924 ( NULL == (wdiKeepAliveCb = (WDI_KeepAliveCb)pEventData->pCBfnc)))
14925 {
14926 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
14927 "Invalid parameters in Keep Alive req");
14928 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014929 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070014930 }
14931
14932 /*-----------------------------------------------------------------------
14933 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014934 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014935 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014936 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_KEEP_ALIVE_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014937 sizeof(keepAliveReq),
14938 &pSendBuffer, &usDataOffset, &usSendSize))||
14939 ( usSendSize < (usDataOffset + sizeof(keepAliveReq) )))
14940 {
14941 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014942 "Unable to get send buffer in keep alive req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014943 pEventData, pwdiKeepAliveParams, wdiKeepAliveCb);
14944 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014945 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070014946 }
14947
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014948 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
14949 pwdiKeepAliveParams->wdiKeepAliveInfo.bssId,
14950 &pBSSSes);
14951 if ( NULL == pBSSSes )
14952 {
14953 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014954 " %s : Association for this BSSID does not exist",__func__);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014955 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014956 }
14957
Jeff Johnson295189b2012-06-20 16:38:30 -070014958 keepAliveReq.packetType = pwdiKeepAliveParams->wdiKeepAliveInfo.ucPacketType;
14959 keepAliveReq.timePeriod = pwdiKeepAliveParams->wdiKeepAliveInfo.ucTimePeriod;
14960
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014961 keepAliveReq.bssIdx = pBSSSes->ucBSSIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070014962
Jeff Johnson295189b2012-06-20 16:38:30 -070014963 if(pwdiKeepAliveParams->wdiKeepAliveInfo.ucPacketType == 2)
14964 {
14965 wpalMemoryCopy(keepAliveReq.hostIpv4Addr,
14966 pwdiKeepAliveParams->wdiKeepAliveInfo.aHostIpv4Addr,
14967 HAL_IPV4_ADDR_LEN);
14968 wpalMemoryCopy(keepAliveReq.destIpv4Addr,
14969 pwdiKeepAliveParams->wdiKeepAliveInfo.aDestIpv4Addr,
Jeff Johnsone7245742012-09-05 17:12:55 -070014970 HAL_IPV4_ADDR_LEN);
Jeff Johnson295189b2012-06-20 16:38:30 -070014971 wpalMemoryCopy(keepAliveReq.destMacAddr,
14972 pwdiKeepAliveParams->wdiKeepAliveInfo.aDestMacAddr,
14973 HAL_MAC_ADDR_LEN);
14974 }
Jeff Johnsone7245742012-09-05 17:12:55 -070014975
14976 wpalMemoryCopy( pSendBuffer+usDataOffset,
14977 &keepAliveReq,
14978 sizeof(keepAliveReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070014979
14980 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnson5b414462013-11-22 16:44:20 -080014981 "Process keep alive req %zu", sizeof(keepAliveReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070014982
14983 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnson5b414462013-11-22 16:44:20 -080014984 "Process keep alive req time period %d",
14985 keepAliveReq.timePeriod);
Jeff Johnson295189b2012-06-20 16:38:30 -070014986
14987 pWDICtx->wdiReqStatusCB = pwdiKeepAliveParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014988 pWDICtx->pReqStatusUserData = pwdiKeepAliveParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014989
14990 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
14991 "Sending keep alive req to HAL");
14992
14993 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014994 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014995 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014996 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14997 wdiKeepAliveCb, pEventData->pUserData, WDI_KEEP_ALIVE_RESP);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014998
14999fail:
15000 // Release the message buffer so we don't leak
15001 wpalMemoryFree(pSendBuffer);
15002
15003failRequest:
15004 //WDA should have failure check to avoid the memory leak
15005 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015006}/*WDI_ProcessKeepAliveReq*/
15007
15008
15009/**
Jeff Johnsone7245742012-09-05 17:12:55 -070015010 @brief Process Wowl add bc ptrn Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070015011 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070015012
15013 @param pWDICtx: pointer to the WLAN DAL context
15014 pEventData: pointer to the event information structure
15015
Jeff Johnson295189b2012-06-20 16:38:30 -070015016 @see
15017 @return Result of the function call
15018*/
15019WDI_Status
15020WDI_ProcessWowlAddBcPtrnReq
Jeff Johnsone7245742012-09-05 17:12:55 -070015021(
Jeff Johnson295189b2012-06-20 16:38:30 -070015022 WDI_ControlBlockType* pWDICtx,
15023 WDI_EventInfoType* pEventData
15024)
15025{
15026 WDI_WowlAddBcPtrnReqParamsType* pwdiWowlAddBcPtrnParams = NULL;
15027 WDI_WowlAddBcPtrnCb wdiWowlAddBcPtrnCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070015028 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070015029 wpt_uint16 usDataOffset = 0;
15030 wpt_uint16 usSendSize = 0;
15031 tHalWowlAddBcastPtrn wowlAddBcPtrnReq;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015032 wpt_uint8 ucCurrentBSSSesIdx = 0;
15033 WDI_BSSSessionType* pBSSSes = NULL;
15034
Jeff Johnson295189b2012-06-20 16:38:30 -070015035 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15036
15037 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015038 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015039 -------------------------------------------------------------------------*/
15040 if (( NULL == pEventData ) ||
15041 ( NULL == (pwdiWowlAddBcPtrnParams = (WDI_WowlAddBcPtrnReqParamsType*)pEventData->pEventData)) ||
15042 ( NULL == (wdiWowlAddBcPtrnCb = (WDI_WowlAddBcPtrnCb)pEventData->pCBfnc)))
15043 {
15044 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015045 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015046 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080015047 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070015048 }
15049
15050 /*-----------------------------------------------------------------------
15051 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070015052 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070015053 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015054 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_WOWL_ADD_BC_PTRN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070015055 sizeof(wowlAddBcPtrnReq),
15056 &pSendBuffer, &usDataOffset, &usSendSize))||
15057 ( usSendSize < (usDataOffset + sizeof(wowlAddBcPtrnReq) )))
15058 {
15059 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080015060 "Unable to get send buffer in Wowl add bc ptrn req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070015061 pEventData, pwdiWowlAddBcPtrnParams, wdiWowlAddBcPtrnCb);
15062 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080015063 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070015064 }
15065
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015066 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
15067 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.bssId,
15068 &pBSSSes);
15069 if ( NULL == pBSSSes )
15070 {
15071 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015072 " %s : Association for this BSSID does not exist",__func__);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080015073 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015074 }
15075
Jeff Johnsone7245742012-09-05 17:12:55 -070015076 wowlAddBcPtrnReq.ucPatternId =
Jeff Johnson295189b2012-06-20 16:38:30 -070015077 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternId;
Jeff Johnsone7245742012-09-05 17:12:55 -070015078 wowlAddBcPtrnReq.ucPatternByteOffset =
Jeff Johnson295189b2012-06-20 16:38:30 -070015079 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternByteOffset;
Jeff Johnsone7245742012-09-05 17:12:55 -070015080 wowlAddBcPtrnReq.ucPatternMaskSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070015081 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMaskSize;
Jeff Johnsone7245742012-09-05 17:12:55 -070015082 wowlAddBcPtrnReq.ucPatternSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070015083 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternSize;
15084
15085 if (pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternSize <= HAL_WOWL_BCAST_PATTERN_MAX_SIZE)
15086 {
15087 wpalMemoryCopy(wowlAddBcPtrnReq.ucPattern,
15088 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPattern,
15089 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternSize);
15090 wpalMemoryCopy(wowlAddBcPtrnReq.ucPatternMask,
15091 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMask,
15092 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMaskSize);
15093 }
15094 else
15095 {
15096 wpalMemoryCopy(wowlAddBcPtrnReq.ucPattern,
15097 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPattern,
15098 HAL_WOWL_BCAST_PATTERN_MAX_SIZE);
15099 wpalMemoryCopy(wowlAddBcPtrnReq.ucPatternMask,
15100 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMask,
15101 HAL_WOWL_BCAST_PATTERN_MAX_SIZE);
15102
15103 wpalMemoryCopy(wowlAddBcPtrnReq.ucPattern,
15104 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPattern,
15105 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMaskSize - HAL_WOWL_BCAST_PATTERN_MAX_SIZE);
15106 wpalMemoryCopy(wowlAddBcPtrnReq.ucPatternMask,
15107 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMask,
15108 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMaskSize - HAL_WOWL_BCAST_PATTERN_MAX_SIZE);
15109 }
15110
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015111 wowlAddBcPtrnReq.bssIdx = pBSSSes->ucBSSIdx;
15112
Jeff Johnson295189b2012-06-20 16:38:30 -070015113 wpalMemoryCopy( pSendBuffer+usDataOffset,
15114 &wowlAddBcPtrnReq,
15115 sizeof(wowlAddBcPtrnReq));
15116
15117 pWDICtx->wdiReqStatusCB = pwdiWowlAddBcPtrnParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070015118 pWDICtx->pReqStatusUserData = pwdiWowlAddBcPtrnParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070015119
15120 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015121 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070015122 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015123 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
15124 wdiWowlAddBcPtrnCb, pEventData->pUserData, WDI_WOWL_ADD_BC_PTRN_RESP);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080015125fail:
15126 // Release the message buffer so we don't leak
15127 wpalMemoryFree(pSendBuffer);
15128
15129failRequest:
15130 //WDA should have failure check to avoid the memory leak
15131 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015132}/*WDI_ProcessWowlAddBcPtrnReq*/
15133
15134/**
Jeff Johnsone7245742012-09-05 17:12:55 -070015135 @brief Process Wowl delete bc ptrn Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070015136 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070015137
15138 @param pWDICtx: pointer to the WLAN DAL context
15139 pEventData: pointer to the event information structure
15140
Jeff Johnson295189b2012-06-20 16:38:30 -070015141 @see
15142 @return Result of the function call
15143*/
15144WDI_Status
15145WDI_ProcessWowlDelBcPtrnReq
Jeff Johnsone7245742012-09-05 17:12:55 -070015146(
Jeff Johnson295189b2012-06-20 16:38:30 -070015147 WDI_ControlBlockType* pWDICtx,
15148 WDI_EventInfoType* pEventData
15149)
15150{
15151 WDI_WowlDelBcPtrnReqParamsType* pwdiWowlDelBcPtrnParams = NULL;
15152 WDI_WowlDelBcPtrnCb wdiWowlDelBcPtrnCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070015153 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070015154 wpt_uint16 usDataOffset = 0;
15155 wpt_uint16 usSendSize = 0;
15156 tHalWowlDelBcastPtrn wowlDelBcPtrnReq;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015157 wpt_uint8 ucCurrentBSSSesIdx = 0;
15158 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070015159 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15160
15161 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015162 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015163 -------------------------------------------------------------------------*/
15164 if (( NULL == pEventData ) ||
15165 ( NULL == (pwdiWowlDelBcPtrnParams = (WDI_WowlDelBcPtrnReqParamsType*)pEventData->pEventData)) ||
15166 ( NULL == (wdiWowlDelBcPtrnCb = (WDI_WowlDelBcPtrnCb)pEventData->pCBfnc)))
15167 {
15168 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015169 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015170 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080015171 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070015172 }
15173
15174 /*-----------------------------------------------------------------------
15175 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070015176 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070015177 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015178 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_WOWL_DEL_BC_PTRN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070015179 sizeof(wowlDelBcPtrnReq),
15180 &pSendBuffer, &usDataOffset, &usSendSize))||
15181 ( usSendSize < (usDataOffset + sizeof(wowlDelBcPtrnReq) )))
15182 {
15183 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080015184 "Unable to get send buffer in Wowl del bc ptrn req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070015185 pEventData, pwdiWowlDelBcPtrnParams, wdiWowlDelBcPtrnCb);
15186 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080015187 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070015188 }
15189
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015190 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
15191 pwdiWowlDelBcPtrnParams->wdiWowlDelBcPtrnInfo.bssId,
15192 &pBSSSes);
15193 if ( NULL == pBSSSes )
15194 {
15195 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015196 " %s : Association for this BSSID does not exist",__func__);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080015197 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015198 }
15199
Jeff Johnsone7245742012-09-05 17:12:55 -070015200 wowlDelBcPtrnReq.ucPatternId =
Jeff Johnson295189b2012-06-20 16:38:30 -070015201 pwdiWowlDelBcPtrnParams->wdiWowlDelBcPtrnInfo.ucPatternId;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015202
15203 wowlDelBcPtrnReq.bssIdx = pBSSSes->ucBSSIdx;
15204
Jeff Johnsone7245742012-09-05 17:12:55 -070015205 wpalMemoryCopy( pSendBuffer+usDataOffset,
15206 &wowlDelBcPtrnReq,
15207 sizeof(wowlDelBcPtrnReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070015208
15209 pWDICtx->wdiReqStatusCB = pwdiWowlDelBcPtrnParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070015210 pWDICtx->pReqStatusUserData = pwdiWowlDelBcPtrnParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070015211
15212 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015213 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070015214 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015215 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
15216 wdiWowlDelBcPtrnCb, pEventData->pUserData, WDI_WOWL_DEL_BC_PTRN_RESP);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080015217
15218fail:
15219 // Release the message buffer so we don't leak
15220 wpalMemoryFree(pSendBuffer);
15221
15222failRequest:
15223 //WDA should have failure check to avoid the memory leak
15224 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015225}/*WDI_ProcessWowlDelBcPtrnReq*/
15226
15227/**
Jeff Johnsone7245742012-09-05 17:12:55 -070015228 @brief Process Wowl enter Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070015229 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070015230
15231 @param pWDICtx: pointer to the WLAN DAL context
15232 pEventData: pointer to the event information structure
15233
Jeff Johnson295189b2012-06-20 16:38:30 -070015234 @see
15235 @return Result of the function call
15236*/
15237WDI_Status
15238WDI_ProcessWowlEnterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070015239(
Jeff Johnson295189b2012-06-20 16:38:30 -070015240 WDI_ControlBlockType* pWDICtx,
15241 WDI_EventInfoType* pEventData
15242)
15243{
15244 WDI_WowlEnterReqParamsType* pwdiWowlEnterParams = NULL;
15245 WDI_WowlEnterReqCb wdiWowlEnterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070015246 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070015247 wpt_uint16 usDataOffset = 0;
15248 wpt_uint16 usSendSize = 0;
15249 tHalWowlEnterParams wowlEnterReq;
15250 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15251
15252 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015253 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015254 -------------------------------------------------------------------------*/
15255 if (( NULL == pEventData ) ||
15256 ( NULL == (pwdiWowlEnterParams = (WDI_WowlEnterReqParamsType*)pEventData->pEventData)) ||
15257 ( NULL == (wdiWowlEnterCb = (WDI_WowlEnterReqCb)pEventData->pCBfnc)))
15258 {
15259 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015260 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015261 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015262 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015263 }
15264
15265 /*-----------------------------------------------------------------------
15266 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070015267 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070015268 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015269 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_WOWL_ENTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070015270 sizeof(wowlEnterReq),
15271 &pSendBuffer, &usDataOffset, &usSendSize))||
15272 ( usSendSize < (usDataOffset + sizeof(wowlEnterReq) )))
15273 {
15274 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080015275 "Unable to get send buffer in Wowl enter req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070015276 pEventData, pwdiWowlEnterParams, wdiWowlEnterCb);
15277 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015278 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015279 }
15280
Kumar Anandaca924e2013-07-22 14:35:34 -070015281 wpalMemoryZero(&wowlEnterReq, sizeof(tHalWowlEnterParams));
15282
Jeff Johnsone7245742012-09-05 17:12:55 -070015283 wowlEnterReq.ucMagicPktEnable =
Jeff Johnson295189b2012-06-20 16:38:30 -070015284 pwdiWowlEnterParams->wdiWowlEnterInfo.ucMagicPktEnable;
Jeff Johnsone7245742012-09-05 17:12:55 -070015285 wowlEnterReq.ucPatternFilteringEnable =
Jeff Johnson295189b2012-06-20 16:38:30 -070015286 pwdiWowlEnterParams->wdiWowlEnterInfo.ucPatternFilteringEnable;
Jeff Johnsone7245742012-09-05 17:12:55 -070015287 wowlEnterReq.ucUcastPatternFilteringEnable =
Jeff Johnson295189b2012-06-20 16:38:30 -070015288 pwdiWowlEnterParams->wdiWowlEnterInfo.ucUcastPatternFilteringEnable;
Jeff Johnsone7245742012-09-05 17:12:55 -070015289 wowlEnterReq.ucWowChnlSwitchRcv =
Jeff Johnson295189b2012-06-20 16:38:30 -070015290 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowChnlSwitchRcv;
Jeff Johnsone7245742012-09-05 17:12:55 -070015291 wowlEnterReq.ucWowDeauthRcv =
Jeff Johnson295189b2012-06-20 16:38:30 -070015292 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowDeauthRcv;
Jeff Johnsone7245742012-09-05 17:12:55 -070015293 wowlEnterReq.ucWowDisassocRcv =
Jeff Johnson295189b2012-06-20 16:38:30 -070015294 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowDisassocRcv;
Jeff Johnsone7245742012-09-05 17:12:55 -070015295 wowlEnterReq.ucWowMaxMissedBeacons =
Jeff Johnson295189b2012-06-20 16:38:30 -070015296 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowMaxMissedBeacons;
Jeff Johnsone7245742012-09-05 17:12:55 -070015297 wowlEnterReq.ucWowMaxSleepUsec =
Jeff Johnson295189b2012-06-20 16:38:30 -070015298 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowMaxSleepUsec;
15299
15300#ifdef WLAN_WAKEUP_EVENTS
15301 wowlEnterReq.ucWoWEAPIDRequestEnable =
15302 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWoWEAPIDRequestEnable;
15303
15304 wowlEnterReq.ucWoWEAPOL4WayEnable =
15305 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWoWEAPOL4WayEnable;
15306
15307 wowlEnterReq.ucWowNetScanOffloadMatch =
15308 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowNetScanOffloadMatch;
15309
15310 wowlEnterReq.ucWowGTKRekeyError =
15311 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowGTKRekeyError;
15312
15313 wowlEnterReq.ucWoWBSSConnLoss =
15314 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWoWBSSConnLoss;
15315#endif // WLAN_WAKEUP_EVENTS
15316
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015317 wowlEnterReq.bssIdx = pwdiWowlEnterParams->wdiWowlEnterInfo.bssIdx;
15318
Jeff Johnson295189b2012-06-20 16:38:30 -070015319 wpalMemoryCopy(wowlEnterReq.magicPtrn,
15320 pwdiWowlEnterParams->wdiWowlEnterInfo.magicPtrn,
15321 sizeof(tSirMacAddr));
15322
Jeff Johnsone7245742012-09-05 17:12:55 -070015323 wpalMemoryCopy( pSendBuffer+usDataOffset,
15324 &wowlEnterReq,
15325 sizeof(wowlEnterReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070015326
15327 pWDICtx->wdiReqStatusCB = pwdiWowlEnterParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070015328 pWDICtx->pReqStatusUserData = pwdiWowlEnterParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070015329
15330 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015331 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070015332 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015333 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
15334 wdiWowlEnterCb, pEventData->pUserData, WDI_WOWL_ENTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070015335}/*WDI_ProcessWowlEnterReq*/
15336
15337/**
15338 @brief Process Wowl exit Request function (called when Main FSM
15339 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070015340
15341 @param pWDICtx: pointer to the WLAN DAL context
15342 pEventData: pointer to the event information structure
15343
Jeff Johnson295189b2012-06-20 16:38:30 -070015344 @see
15345 @return Result of the function call
15346*/
15347WDI_Status
15348WDI_ProcessWowlExitReq
Jeff Johnsone7245742012-09-05 17:12:55 -070015349(
Jeff Johnson295189b2012-06-20 16:38:30 -070015350 WDI_ControlBlockType* pWDICtx,
15351 WDI_EventInfoType* pEventData
15352)
15353{
15354 WDI_WowlExitReqCb wdiWowlExitCb = NULL;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015355 WDI_WowlExitReqParamsType* pwdiWowlExitParams = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070015356 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070015357 wpt_uint16 usDataOffset = 0;
15358 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015359 tHalWowlExitParams wowlExitparams;
Jeff Johnson295189b2012-06-20 16:38:30 -070015360 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15361
15362 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015363 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015364 -------------------------------------------------------------------------*/
15365 if (( NULL == pEventData ) ||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015366 ( NULL == (pwdiWowlExitParams = (WDI_WowlExitReqParamsType *)pEventData->pEventData)) ||
Jeff Johnson295189b2012-06-20 16:38:30 -070015367 ( NULL == (wdiWowlExitCb = (WDI_WowlExitReqCb)pEventData->pCBfnc)))
15368 {
15369 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015370 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015371 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015372 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015373 }
15374
15375 /*-----------------------------------------------------------------------
15376 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070015377 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070015378 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015379 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_WOWL_EXIT_REQ,
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015380 sizeof(wowlExitparams),
Jeff Johnson295189b2012-06-20 16:38:30 -070015381 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015382 ( usSendSize < (usDataOffset + sizeof(wowlExitparams))))
Jeff Johnson295189b2012-06-20 16:38:30 -070015383 {
15384 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080015385 "Unable to get send buffer in Wowl Exit req %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070015386 pEventData, wdiWowlExitCb);
15387 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015388 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015389 }
15390
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015391 wowlExitparams.bssIdx = pwdiWowlExitParams->wdiWowlExitInfo.bssIdx;
15392
15393 wpalMemoryCopy( pSendBuffer+usDataOffset,
15394 &wowlExitparams,
15395 sizeof(wowlExitparams));
Jeff Johnson295189b2012-06-20 16:38:30 -070015396 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015397 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070015398 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015399 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
15400 wdiWowlExitCb, pEventData->pUserData, WDI_WOWL_EXIT_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070015401}/*WDI_ProcessWowlExitReq*/
15402
15403/**
15404 @brief Process Configure Apps Cpu Wakeup State Request function
15405 (called when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070015406
15407 @param pWDICtx: pointer to the WLAN DAL context
15408 pEventData: pointer to the event information structure
15409
Jeff Johnson295189b2012-06-20 16:38:30 -070015410 @see
15411 @return Result of the function call
15412*/
15413WDI_Status
15414WDI_ProcessConfigureAppsCpuWakeupStateReq
Jeff Johnsone7245742012-09-05 17:12:55 -070015415(
Jeff Johnson295189b2012-06-20 16:38:30 -070015416 WDI_ControlBlockType* pWDICtx,
15417 WDI_EventInfoType* pEventData
15418)
15419{
15420 WDI_ConfigureAppsCpuWakeupStateReqParamsType* pwdiAppsCpuWakeupStateParams = NULL;
15421 WDI_ConfigureAppsCpuWakeupStateCb wdiConfigureAppsCpuWakeupStateCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070015422 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070015423 wpt_uint16 usDataOffset = 0;
15424 wpt_uint16 usSendSize = 0;
15425 tHalConfigureAppsCpuWakeupStateReqParams halCfgAppsCpuWakeupStateReqParams;
15426 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15427
15428 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015429 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015430 -------------------------------------------------------------------------*/
15431 if (( NULL == pEventData ) ||
15432 ( NULL == (pwdiAppsCpuWakeupStateParams = (WDI_ConfigureAppsCpuWakeupStateReqParamsType*)pEventData->pEventData)) ||
15433 ( NULL == (wdiConfigureAppsCpuWakeupStateCb = (WDI_ConfigureAppsCpuWakeupStateCb)pEventData->pCBfnc)))
15434 {
15435 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015436 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015437 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015438 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015439 }
15440
15441 /*-----------------------------------------------------------------------
15442 Get message buffer
15443 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015444 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070015445 sizeof(halCfgAppsCpuWakeupStateReqParams),
15446 &pSendBuffer, &usDataOffset, &usSendSize))||
15447 ( usSendSize < (usDataOffset + sizeof(pwdiAppsCpuWakeupStateParams->bIsAppsAwake) )))
15448 {
15449 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080015450 "Unable to get send buffer in Apps CPU Wakeup State req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070015451 pEventData, pwdiAppsCpuWakeupStateParams, wdiConfigureAppsCpuWakeupStateCb);
15452 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015453 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015454 }
15455
Jeff Johnsone7245742012-09-05 17:12:55 -070015456 halCfgAppsCpuWakeupStateReqParams.isAppsCpuAwake =
Jeff Johnson295189b2012-06-20 16:38:30 -070015457 pwdiAppsCpuWakeupStateParams->bIsAppsAwake;
15458
Jeff Johnsone7245742012-09-05 17:12:55 -070015459 wpalMemoryCopy( pSendBuffer+usDataOffset,
15460 &halCfgAppsCpuWakeupStateReqParams,
15461 sizeof(halCfgAppsCpuWakeupStateReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070015462
15463 pWDICtx->wdiReqStatusCB = pwdiAppsCpuWakeupStateParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070015464 pWDICtx->pReqStatusUserData = pwdiAppsCpuWakeupStateParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070015465
15466 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015467 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070015468 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015469 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
15470 wdiConfigureAppsCpuWakeupStateCb, pEventData->pUserData,
15471 WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070015472}/*WDI_ProcessConfigureAppsCpuWakeupStateReq*/
15473
15474#ifdef WLAN_FEATURE_VOWIFI_11R
15475/**
15476 @brief Process Aggregated Add TSpec Request function (called when Main FSM
15477 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070015478
15479 @param pWDICtx: pointer to the WLAN DAL context
15480 pEventData: pointer to the event information structure
15481
Jeff Johnson295189b2012-06-20 16:38:30 -070015482 @see
15483 @return Result of the function call
15484*/
15485WDI_Status
15486WDI_ProcessAggrAddTSpecReq
Jeff Johnsone7245742012-09-05 17:12:55 -070015487(
Jeff Johnson295189b2012-06-20 16:38:30 -070015488 WDI_ControlBlockType* pWDICtx,
15489 WDI_EventInfoType* pEventData
15490)
15491{
15492 WDI_AggrAddTSReqParamsType* pwdiAggrAddTSParams;
15493 WDI_AggrAddTsRspCb wdiAggrAddTSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070015494 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070015495 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070015496 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070015497 wpt_uint16 usDataOffset = 0;
15498 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070015499 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015500 wpt_macAddr macBSSID;
15501 tAggrAddTsReq halAggrAddTsReq;
15502 int i;
15503 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15504
15505 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015506 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015507 -------------------------------------------------------------------------*/
15508 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
15509 ( NULL == pEventData->pCBfnc ))
15510 {
15511 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015512 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015513 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015514 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015515 }
15516 wpalMemoryFill( &halAggrAddTsReq, sizeof(tAggrAddTsReq), 0 );
15517 pwdiAggrAddTSParams = (WDI_AggrAddTSReqParamsType*)pEventData->pEventData;
15518 wdiAggrAddTSRspCb = (WDI_AggrAddTsRspCb)pEventData->pCBfnc;
15519 /*-------------------------------------------------------------------------
15520 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070015521 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070015522 -------------------------------------------------------------------------*/
15523 wpalMutexAcquire(&pWDICtx->wptMutex);
15524
15525 /*------------------------------------------------------------------------
15526 Find the BSS for which the request is made and identify WDI session
15527 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015528 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
15529 pwdiAggrAddTSParams->wdiAggrTsInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070015530 &macBSSID))
15531 {
15532 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080015533 "This station does not exist in the WDI Station Table %d",
15534 pwdiAggrAddTSParams->wdiAggrTsInfo.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070015535 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070015536 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015537 }
15538
Jeff Johnsone7245742012-09-05 17:12:55 -070015539 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
15540 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070015541 {
Jeff Johnsone7245742012-09-05 17:12:55 -070015542 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15543 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
15544 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070015545
15546 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070015547 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070015548 }
Jeff Johnsone7245742012-09-05 17:12:55 -070015549
Jeff Johnson295189b2012-06-20 16:38:30 -070015550 /*------------------------------------------------------------------------
15551 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070015552 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070015553 ------------------------------------------------------------------------*/
15554 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
15555 {
Jeff Johnsone7245742012-09-05 17:12:55 -070015556 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
15557 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
15558 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070015559
Jeff Johnsone7245742012-09-05 17:12:55 -070015560 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070015561 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070015562 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070015563 }
15564
15565 wpalMutexRelease(&pWDICtx->wptMutex);
15566 /*-----------------------------------------------------------------------
15567 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070015568 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070015569 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015570 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_AGGR_ADD_TS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070015571 sizeof(tAggrAddTsParams),
15572 &pSendBuffer, &usDataOffset, &usSendSize))||
15573 ( usSendSize < (usDataOffset + sizeof(tAggrAddTsParams) )))
15574 {
15575 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080015576 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070015577 pEventData, pwdiAggrAddTSParams, wdiAggrAddTSRspCb);
15578 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015579 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015580 }
15581
Jeff Johnsone7245742012-09-05 17:12:55 -070015582 halAggrAddTsReq.aggrAddTsParam.staIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070015583 pwdiAggrAddTSParams->wdiAggrTsInfo.ucSTAIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015584 halAggrAddTsReq.aggrAddTsParam.tspecIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070015585 pwdiAggrAddTSParams->wdiAggrTsInfo.ucTspecIdx;
15586
15587 for( i = 0; i < WLAN_HAL_MAX_AC; i++ )
15588 {
Jeff Johnsone7245742012-09-05 17:12:55 -070015589 halAggrAddTsReq.aggrAddTsParam.tspec[i].type =
Jeff Johnson295189b2012-06-20 16:38:30 -070015590 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].ucType;
Jeff Johnsone7245742012-09-05 17:12:55 -070015591 halAggrAddTsReq.aggrAddTsParam.tspec[i].length =
Jeff Johnson295189b2012-06-20 16:38:30 -070015592 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].ucLength;
Jeff Johnsone7245742012-09-05 17:12:55 -070015593 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.ackPolicy =
Jeff Johnson295189b2012-06-20 16:38:30 -070015594 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
15595 ackPolicy;
Jeff Johnsone7245742012-09-05 17:12:55 -070015596 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.accessPolicy =
Jeff Johnson295189b2012-06-20 16:38:30 -070015597 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
15598 accessPolicy;
Jeff Johnsone7245742012-09-05 17:12:55 -070015599 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.userPrio =
Jeff Johnson295189b2012-06-20 16:38:30 -070015600 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
15601 userPrio;
Jeff Johnsone7245742012-09-05 17:12:55 -070015602 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.psb =
Jeff Johnson295189b2012-06-20 16:38:30 -070015603 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
15604 psb;
Jeff Johnsone7245742012-09-05 17:12:55 -070015605 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.aggregation =
Jeff Johnson295189b2012-06-20 16:38:30 -070015606 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
15607 aggregation;
Jeff Johnsone7245742012-09-05 17:12:55 -070015608 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.direction =
Jeff Johnson295189b2012-06-20 16:38:30 -070015609 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
15610 direction;
Jeff Johnsone7245742012-09-05 17:12:55 -070015611 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.tsid =
Jeff Johnson295189b2012-06-20 16:38:30 -070015612 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
15613 trafficType;
Jeff Johnsone7245742012-09-05 17:12:55 -070015614 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.tsid =
Jeff Johnson295189b2012-06-20 16:38:30 -070015615 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
15616 trafficType;
Jeff Johnsone7245742012-09-05 17:12:55 -070015617 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.schedule.rsvd =
Jeff Johnson295189b2012-06-20 16:38:30 -070015618 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiSchedule.rsvd;
Jeff Johnsone7245742012-09-05 17:12:55 -070015619 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.schedule.schedule =
Jeff Johnson295189b2012-06-20 16:38:30 -070015620 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiSchedule.schedule;
Jeff Johnsone7245742012-09-05 17:12:55 -070015621
15622
15623 halAggrAddTsReq.aggrAddTsParam.tspec[i].nomMsduSz =
Jeff Johnson295189b2012-06-20 16:38:30 -070015624 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].usNomMsduSz;
Jeff Johnsone7245742012-09-05 17:12:55 -070015625 halAggrAddTsReq.aggrAddTsParam.tspec[i].maxMsduSz =
Jeff Johnson295189b2012-06-20 16:38:30 -070015626 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].usMaxMsduSz;
Jeff Johnsone7245742012-09-05 17:12:55 -070015627 halAggrAddTsReq.aggrAddTsParam.tspec[i].minSvcInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070015628 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMinSvcInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070015629 halAggrAddTsReq.aggrAddTsParam.tspec[i].maxSvcInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070015630 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMaxSvcInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070015631 halAggrAddTsReq.aggrAddTsParam.tspec[i].inactInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070015632 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uInactInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070015633 halAggrAddTsReq.aggrAddTsParam.tspec[i].suspendInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070015634 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uSuspendInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070015635 halAggrAddTsReq.aggrAddTsParam.tspec[i].svcStartTime =
Jeff Johnson295189b2012-06-20 16:38:30 -070015636 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uSvcStartTime;
Jeff Johnsone7245742012-09-05 17:12:55 -070015637 halAggrAddTsReq.aggrAddTsParam.tspec[i].minDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070015638 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMinDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070015639 halAggrAddTsReq.aggrAddTsParam.tspec[i].meanDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070015640 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMeanDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070015641 halAggrAddTsReq.aggrAddTsParam.tspec[i].peakDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070015642 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uPeakDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070015643 halAggrAddTsReq.aggrAddTsParam.tspec[i].maxBurstSz =
Jeff Johnson295189b2012-06-20 16:38:30 -070015644 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMaxBurstSz;
Jeff Johnsone7245742012-09-05 17:12:55 -070015645 halAggrAddTsReq.aggrAddTsParam.tspec[i].delayBound =
Jeff Johnson295189b2012-06-20 16:38:30 -070015646 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uDelayBound;
Jeff Johnsone7245742012-09-05 17:12:55 -070015647 halAggrAddTsReq.aggrAddTsParam.tspec[i].minPhyRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070015648 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMinPhyRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070015649 halAggrAddTsReq.aggrAddTsParam.tspec[i].surplusBw =
Jeff Johnson295189b2012-06-20 16:38:30 -070015650 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].usSurplusBw;
Jeff Johnsone7245742012-09-05 17:12:55 -070015651 halAggrAddTsReq.aggrAddTsParam.tspec[i].mediumTime =
Jeff Johnson295189b2012-06-20 16:38:30 -070015652 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].usMediumTime;
15653 }
15654
Jeff Johnsone7245742012-09-05 17:12:55 -070015655 wpalMemoryCopy( pSendBuffer+usDataOffset,
15656 &halAggrAddTsReq,
15657 sizeof(halAggrAddTsReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070015658
15659 pWDICtx->wdiReqStatusCB = pwdiAggrAddTSParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070015660 pWDICtx->pReqStatusUserData = pwdiAggrAddTSParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070015661
15662 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015663 Send Add TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070015664 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015665 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070015666 wdiAggrAddTSRspCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -070015667 WDI_AGGR_ADD_TS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070015668}/*WDI_ProcessAggrAddTSpecReq*/
15669#endif /* WLAN_FEATURE_VOWIFI_11R */
15670
15671/**
15672 @brief Process Shutdown Request function (called when Main FSM
15673 allows it)
15674
15675 @param pWDICtx: pointer to the WLAN DAL context
15676 pEventData: pointer to the event information structure
15677
15678 @see
15679 @return Result of the function call
15680*/
15681WDI_Status
15682WDI_ProcessShutdownReq
15683(
15684 WDI_ControlBlockType* pWDICtx,
15685 WDI_EventInfoType* pEventData
15686 )
15687{
15688 wpt_status wptStatus;
15689
15690
15691 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15692
15693 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015694 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015695 -------------------------------------------------------------------------*/
15696 if ( NULL == pEventData )
15697 {
15698 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015699 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015700 WDI_ASSERT(0);
15701 return WDI_STATUS_E_FAILURE;
15702 }
15703
15704 wpalMutexAcquire(&pWDICtx->wptMutex);
15705
15706
15707 gWDIInitialized = eWLAN_PAL_FALSE;
15708 /*! TO DO: stop the data services */
15709 if ( eDRIVER_TYPE_MFG != pWDICtx->driverMode )
15710 {
15711 /*Stop the STA Table !UT- check this logic again
15712 It is safer to do it here than on the response - because a stop is imminent*/
15713 WDI_STATableStop(pWDICtx);
15714
15715 /* Stop Transport Driver, DXE */
15716 WDTS_Stop(pWDICtx);
15717 }
15718
15719 /*Clear all pending request*/
15720 WDI_ClearPendingRequests(pWDICtx);
15721 /* Close Data transport*/
15722 /* FTM mode does not open Data Path */
15723 if ( eDRIVER_TYPE_MFG != pWDICtx->driverMode )
15724 {
15725 WDTS_Close(pWDICtx);
15726 }
15727 /*Close the STA Table !UT- check this logic again*/
15728 WDI_STATableClose(pWDICtx);
15729 /*close the PAL */
15730 wptStatus = wpalClose(pWDICtx->pPALContext);
15731 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
15732 {
15733 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15734 "Failed to wpal Close %d", wptStatus);
15735 WDI_ASSERT(0);
15736 }
15737
15738 /*Transition back to init state*/
15739 WDI_STATE_TRANSITION( pWDICtx, WDI_INIT_ST);
15740
15741 wpalMutexRelease(&pWDICtx->wptMutex);
15742
15743 /*Make sure the expected state is properly defaulted to Init*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015744 pWDICtx->ucExpectedStateTransition = WDI_INIT_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -070015745
15746
Jeff Johnsone7245742012-09-05 17:12:55 -070015747 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015748}/*WDI_ProcessShutdownReq*/
15749
15750/*========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070015751 Main DAL Control Path Response Processing API
Jeff Johnson295189b2012-06-20 16:38:30 -070015752========================================================================*/
15753
15754/**
15755 @brief Process Start Response function (called when a response
15756 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015757
15758 @param pWDICtx: pointer to the WLAN DAL context
15759 pEventData: pointer to the event information structure
15760
Jeff Johnson295189b2012-06-20 16:38:30 -070015761 @see
15762 @return Result of the function call
15763*/
15764WDI_Status
15765WDI_ProcessStartRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015766(
Jeff Johnson295189b2012-06-20 16:38:30 -070015767 WDI_ControlBlockType* pWDICtx,
15768 WDI_EventInfoType* pEventData
15769)
15770{
15771 WDI_StartRspParamsType wdiRspParams;
15772 WDI_StartRspCb wdiStartRspCb = NULL;
15773
15774 tHalMacStartRspParams* startRspParams;
15775
15776#ifndef HAL_SELF_STA_PER_BSS
15777 WDI_AddStaParams wdiAddSTAParam = {0};
15778#endif
15779 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15780
Jeff Johnsone7245742012-09-05 17:12:55 -070015781 wdiStartRspCb = (WDI_StartRspCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070015782 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015783 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015784 -------------------------------------------------------------------------*/
15785 if (( NULL == pEventData ) ||
15786 ( NULL == pEventData->pEventData) ||
15787 ( NULL == wdiStartRspCb ))
15788 {
15789 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015790 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015791 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015792 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015793 }
15794
15795 /*-------------------------------------------------------------------------
15796 Extract response and send it to UMAC
15797 -------------------------------------------------------------------------*/
15798 if ( sizeof(tHalMacStartRspParams) > pEventData->uEventDataSize )
15799 {
15800 // not enough data was received
15801 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnson5b414462013-11-22 16:44:20 -080015802 "Invalid response length in Start Resp Expect %zx Rcvd %x",
Jeff Johnson295189b2012-06-20 16:38:30 -070015803 sizeof(tHalMacStartRspParams), pEventData->uEventDataSize);
15804 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015805 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015806 }
15807
15808 /*-------------------------------------------------------------------------
15809 Unpack HAL Response Message - the header was already extracted by the
Jeff Johnsone7245742012-09-05 17:12:55 -070015810 main Response Handling procedure
Jeff Johnson295189b2012-06-20 16:38:30 -070015811 -------------------------------------------------------------------------*/
15812 startRspParams = (tHalMacStartRspParams *) pEventData->pEventData;
15813
15814 wdiRspParams.ucMaxBssids = startRspParams->ucMaxBssids;
15815 wdiRspParams.ucMaxStations = startRspParams->ucMaxStations;
15816 wdiRspParams.wlanCompiledVersion.major = WLAN_HAL_VER_MAJOR;
15817 wdiRspParams.wlanCompiledVersion.minor = WLAN_HAL_VER_MINOR;
15818 wdiRspParams.wlanCompiledVersion.version = WLAN_HAL_VER_VERSION;
15819 wdiRspParams.wlanCompiledVersion.revision = WLAN_HAL_VER_REVISION;
15820 wdiRspParams.wlanReportedVersion.major =
15821 startRspParams->wcnssWlanVersion.major;
15822 wdiRspParams.wlanReportedVersion.minor =
15823 startRspParams->wcnssWlanVersion.minor;
15824 wdiRspParams.wlanReportedVersion.version =
15825 startRspParams->wcnssWlanVersion.version;
15826 wdiRspParams.wlanReportedVersion.revision =
15827 startRspParams->wcnssWlanVersion.revision;
15828 wpalMemoryCopy(wdiRspParams.wcnssSoftwareVersion,
15829 startRspParams->wcnssCrmVersionString,
15830 sizeof(wdiRspParams.wcnssSoftwareVersion));
15831 wpalMemoryCopy(wdiRspParams.wcnssHardwareVersion,
15832 startRspParams->wcnssWlanVersionString,
15833 sizeof(wdiRspParams.wcnssHardwareVersion));
15834 wdiRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(startRspParams->status);
15835
Pratik Bhalgatd4404592012-11-22 17:49:14 +053015836 /*Save the HAL Version*/
15837 pWDICtx->wlanVersion = wdiRspParams.wlanReportedVersion;
15838
Jeff Johnson295189b2012-06-20 16:38:30 -070015839 wpalMutexAcquire(&pWDICtx->wptMutex);
15840 if ( WDI_STATUS_SUCCESS == wdiRspParams.wdiStatus )
15841 {
15842 pWDICtx->ucExpectedStateTransition = WDI_STARTED_ST;
15843
15844 /*Cache the start response for further use*/
15845 wpalMemoryCopy( &pWDICtx->wdiCachedStartRspParams ,
Jeff Johnsone7245742012-09-05 17:12:55 -070015846 &wdiRspParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070015847 sizeof(pWDICtx->wdiCachedStartRspParams));
15848
15849 }
15850 else
15851 {
15852 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15853 "Failed to start device with status %s(%d)",
15854 WDI_getHALStatusMsgString(startRspParams->status),
15855 startRspParams->status);
15856
15857 /*Set the expected state transition to stopped - because the start has
15858 failed*/
15859 pWDICtx->ucExpectedStateTransition = WDI_STOPPED_ST;
15860
15861 wpalMutexRelease(&pWDICtx->wptMutex);
15862
15863 /*Notify UMAC*/
15864 wdiStartRspCb( &wdiRspParams, pWDICtx->pRspCBUserData);
Jeff Johnsone7245742012-09-05 17:12:55 -070015865
Jeff Johnson295189b2012-06-20 16:38:30 -070015866 WDI_DetectedDeviceError(pWDICtx, wdiRspParams.wdiStatus);
Katya Nigamf02ad012014-05-05 16:12:49 +053015867 wpalWlanReload();
Jeff Johnson295189b2012-06-20 16:38:30 -070015868
15869 /*Although the response is an error - it was processed by our function
15870 so as far as the caller is concerned this is a succesful reponse processing*/
15871 return WDI_STATUS_SUCCESS;
15872 }
Jeff Johnsone7245742012-09-05 17:12:55 -070015873
Jeff Johnson295189b2012-06-20 16:38:30 -070015874 wpalMutexRelease(&pWDICtx->wptMutex);
15875
15876 if(eDRIVER_TYPE_MFG == pWDICtx->driverMode)
15877 {
15878 /* FTM mode does not need to execute below */
15879 /* Notify UMAC */
15880 wdiStartRspCb( &wdiRspParams, pWDICtx->pRspCBUserData);
15881 return WDI_STATUS_SUCCESS;
15882 }
15883
15884 /* START the Data transport */
15885 WDTS_startTransport(pWDICtx);
15886
15887 /*Start the STA Table !- check this logic again*/
15888 WDI_STATableStart(pWDICtx);
15889
15890#ifndef HAL_SELF_STA_PER_BSS
15891 /* Store the Self STA Index */
15892 pWDICtx->ucSelfStaId = halStartRspMsg.startRspParams.selfStaIdx;
15893
15894 pWDICtx->usSelfStaDpuId = wdiRspParams.usSelfStaDpuId;
15895 wpalMemoryCopy(pWDICtx->macSelfSta, wdiRspParams.macSelfSta,
15896 WDI_MAC_ADDR_LEN);
15897
15898 /* At this point add the self-STA */
15899
15900 /*! TO DO: wdiAddSTAParam.bcastMgmtDpuSignature */
15901 /* !TO DO: wdiAddSTAParam.bcastDpuSignature */
15902 /*! TO DO: wdiAddSTAParam.dpuSig */
15903 /*! TO DO: wdiAddSTAParam.ucWmmEnabled */
15904 /*! TO DO: wdiAddSTAParam.ucHTCapable */
15905 /*! TO DO: wdiAddSTAParam.ucRmfEnabled */
15906
15907 //all DPU indices are the same for self STA
15908 wdiAddSTAParam.bcastDpuIndex = wdiRspParams.usSelfStaDpuId;
15909 wdiAddSTAParam.bcastMgmtDpuIndex = wdiRspParams.usSelfStaDpuId;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -070015910 wdiAddSTAParam.dpuIndex = wdiRspParams.usSelfStaDpuId;
Jeff Johnson295189b2012-06-20 16:38:30 -070015911 wpalMemoryCopy(wdiAddSTAParam.staMacAddr, wdiRspParams.macSelfSta,
15912 WDI_MAC_ADDR_LEN);
15913 wdiAddSTAParam.ucStaType = WDI_STA_ENTRY_SELF; /* 0 - self */
15914 wdiAddSTAParam.ucSTAIdx = halStartRspMsg.startRspParams.selfStaIdx;
15915
15916 /* Note: Since we don't get an explicit config STA request for self STA, we
15917 add the self STA upon receiving the Start response message. But the
15918 self STA entry in the table is deleted when WDI gets an explicit delete STA
15919 request */
15920 (void)WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
15921#endif
15922
15923 /*Notify UMAC*/
15924 wdiStartRspCb( &wdiRspParams, pWDICtx->pRspCBUserData);
15925
Jeff Johnsone7245742012-09-05 17:12:55 -070015926 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015927}/*WDI_ProcessStartRsp*/
15928
15929
15930/**
15931 @brief Process Stop Response function (called when a response
15932 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015933
15934 @param pWDICtx: pointer to the WLAN DAL context
15935 pEventData: pointer to the event information structure
15936
Jeff Johnson295189b2012-06-20 16:38:30 -070015937 @see
15938 @return Result of the function call
15939*/
15940WDI_Status
15941WDI_ProcessStopRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015942(
Jeff Johnson295189b2012-06-20 16:38:30 -070015943 WDI_ControlBlockType* pWDICtx,
15944 WDI_EventInfoType* pEventData
15945)
15946{
15947 WDI_Status wdiStatus;
15948 WDI_StopRspCb wdiStopRspCb = NULL;
15949
Jeff Johnsone7245742012-09-05 17:12:55 -070015950 tHalMacStopRspMsg halMacStopRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070015951 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15952
Jeff Johnsone7245742012-09-05 17:12:55 -070015953 wdiStopRspCb = (WDI_StopRspCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070015954 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015955 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015956 -------------------------------------------------------------------------*/
15957 if (( NULL == pEventData ) ||
15958 ( NULL == pEventData->pEventData) ||
15959 ( NULL == wdiStopRspCb ))
15960 {
15961 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015962 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015963 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015964 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015965 }
15966
15967 /*-------------------------------------------------------------------------
15968 Extract response and send it to UMAC
15969 -------------------------------------------------------------------------*/
15970 if ( sizeof(halMacStopRspMsg) < pEventData->uEventDataSize )
15971 {
15972 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080015973 "Invalid response length in Stop Resp %u",
Jeff Johnson295189b2012-06-20 16:38:30 -070015974 pEventData->uEventDataSize);
15975 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015976 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015977 }
15978
15979 /*-------------------------------------------------------------------------
15980 Unpack HAL Response Message - the header was already extracted by the
Jeff Johnsone7245742012-09-05 17:12:55 -070015981 main Response Handling procedure
Jeff Johnson295189b2012-06-20 16:38:30 -070015982 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015983 wpalMemoryCopy( &halMacStopRspMsg.stopRspParams,
15984 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070015985 sizeof(halMacStopRspMsg.stopRspParams));
15986
Jeff Johnsone7245742012-09-05 17:12:55 -070015987 wdiStatus = WDI_HAL_2_WDI_STATUS(halMacStopRspMsg.stopRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070015988
15989 wpalMutexAcquire(&pWDICtx->wptMutex);
15990
15991 /*--------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015992 Check to see if the stop went OK
Jeff Johnson295189b2012-06-20 16:38:30 -070015993 --------------------------------------------------------------------------*/
15994 if ( WDI_STATUS_SUCCESS != wdiStatus )
15995 {
15996 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15997 "Failed to stop the device with status %s (%d)",
15998 WDI_getHALStatusMsgString(halMacStopRspMsg.stopRspParams.status),
15999 halMacStopRspMsg.stopRspParams.status);
16000
Jeff Johnsone7245742012-09-05 17:12:55 -070016001 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
Katya Nigamf02ad012014-05-05 16:12:49 +053016002 wpalWlanReload();
Jeff Johnsone7245742012-09-05 17:12:55 -070016003
Jeff Johnson295189b2012-06-20 16:38:30 -070016004 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070016005 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016006 }
Jeff Johnsone7245742012-09-05 17:12:55 -070016007
Jeff Johnson295189b2012-06-20 16:38:30 -070016008 pWDICtx->ucExpectedStateTransition = WDI_STOPPED_ST;
16009
16010 /*Transition now as WDI may get preempted imediately after it sends
16011 up the Stop Response and it will not get to process the state transition
16012 from Main Rsp function*/
16013 WDI_STATE_TRANSITION( pWDICtx, pWDICtx->ucExpectedStateTransition);
16014 wpalMutexRelease(&pWDICtx->wptMutex);
16015
16016 /*! TO DO: - STOP the Data transport */
16017
16018 /*Notify UMAC*/
16019 wdiStopRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16020
Jeff Johnsone7245742012-09-05 17:12:55 -070016021 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016022}/*WDI_ProcessStopRsp*/
16023
16024/**
16025 @brief Process Close Rsp function (called when a response
16026 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016027
16028 @param pWDICtx: pointer to the WLAN DAL context
16029 pEventData: pointer to the event information structure
16030
Jeff Johnson295189b2012-06-20 16:38:30 -070016031 @see
16032 @return Result of the function call
16033*/
16034WDI_Status
16035WDI_ProcessCloseRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016036(
Jeff Johnson295189b2012-06-20 16:38:30 -070016037 WDI_ControlBlockType* pWDICtx,
16038 WDI_EventInfoType* pEventData
16039)
16040{
16041 /*There is no close response comming from HAL - function just kept for
16042 simmetry */
16043 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016044 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016045}/*WDI_ProcessCloseRsp*/
16046
16047
16048/*============================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070016049 SCAN RESPONSE PROCESSING API
Jeff Johnson295189b2012-06-20 16:38:30 -070016050============================================================================*/
16051
16052/**
16053 @brief Process Init Scan Rsp function (called when a response
16054 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016055
16056 @param pWDICtx: pointer to the WLAN DAL context
16057 pEventData: pointer to the event information structure
16058
Jeff Johnson295189b2012-06-20 16:38:30 -070016059 @see
16060 @return Result of the function call
16061*/
16062WDI_Status
16063WDI_ProcessInitScanRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016064(
Jeff Johnson295189b2012-06-20 16:38:30 -070016065 WDI_ControlBlockType* pWDICtx,
16066 WDI_EventInfoType* pEventData
16067)
16068{
16069 WDI_Status wdiStatus;
16070 WDI_InitScanRspCb wdiInitScanRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070016071 tHalInitScanRspMsg halInitScanRspMsg;
Ravali85acf6b2012-12-12 14:01:38 -080016072 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070016073 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16074
16075 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016076 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016077 -------------------------------------------------------------------------*/
16078 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16079 ( NULL == pEventData->pEventData))
16080 {
16081 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016082 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016083 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016084 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016085 }
16086
16087 wdiInitScanRspCb = (WDI_InitScanRspCb)pWDICtx->pfncRspCB;
16088 if( NULL == wdiInitScanRspCb)
16089 {
16090 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016091 "%s: call back function is NULL", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016092 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016093 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016094 }
16095
16096 /*-------------------------------------------------------------------------
16097 Unpack HAL Response Message - the header was already extracted by the
Jeff Johnsone7245742012-09-05 17:12:55 -070016098 main Response Handling procedure
Jeff Johnson295189b2012-06-20 16:38:30 -070016099 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016100 wpalMemoryCopy( &halInitScanRspMsg.initScanRspParams,
16101 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016102 sizeof(halInitScanRspMsg.initScanRspParams));
16103
Jeff Johnsone7245742012-09-05 17:12:55 -070016104 wdiStatus = WDI_HAL_2_WDI_STATUS(halInitScanRspMsg.initScanRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070016105
16106 if ( pWDICtx->bInBmps )
16107 {
16108 // notify DTS that we are entering Full power
Ravali85acf6b2012-12-12 14:01:38 -080016109 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
16110 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus ) {
16111 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain9a5d5382013-11-17 22:05:35 -080016112 "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 -080016113 WDI_ASSERT(0);
16114 }
Jeff Johnson295189b2012-06-20 16:38:30 -070016115 }
16116
16117 /*Notify UMAC*/
16118 wdiInitScanRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16119
Jeff Johnsone7245742012-09-05 17:12:55 -070016120 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016121}/*WDI_ProcessInitScanRsp*/
16122
16123
16124/**
16125 @brief Process Start Scan Rsp function (called when a response
16126 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016127
16128 @param pWDICtx: pointer to the WLAN DAL context
16129 pEventData: pointer to the event information structure
16130
Jeff Johnson295189b2012-06-20 16:38:30 -070016131 @see
16132 @return Result of the function call
16133*/
16134WDI_Status
16135WDI_ProcessStartScanRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016136(
Jeff Johnson295189b2012-06-20 16:38:30 -070016137 WDI_ControlBlockType* pWDICtx,
16138 WDI_EventInfoType* pEventData
16139)
16140{
16141 WDI_StartScanRspParamsType wdiStartScanParams;
16142 WDI_StartScanRspCb wdiStartScanRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070016143
16144 tHalStartScanRspMsg halStartScanRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070016145 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16146
16147 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016148 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016149 -------------------------------------------------------------------------*/
16150 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16151 ( NULL == pEventData->pEventData))
16152 {
16153 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016154 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016155 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016156 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016157 }
16158
16159 wdiStartScanRspCb = (WDI_StartScanRspCb)pWDICtx->pfncRspCB;
16160 if( NULL == wdiStartScanRspCb)
16161 {
16162 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016163 "%s: call back function is NULL", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016164 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016165 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016166 }
16167
16168 /*-------------------------------------------------------------------------
16169 Extract response and send it to UMAC
16170 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016171 wpalMemoryCopy( &halStartScanRspMsg.startScanRspParams,
16172 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016173 sizeof(halStartScanRspMsg.startScanRspParams));
16174
16175 wdiStartScanParams.wdiStatus = WDI_HAL_2_WDI_STATUS(
16176 halStartScanRspMsg.startScanRspParams.status);
16177#ifdef WLAN_FEATURE_VOWIFI
Jeff Johnsone7245742012-09-05 17:12:55 -070016178 wdiStartScanParams.ucTxMgmtPower =
Jeff Johnson295189b2012-06-20 16:38:30 -070016179 halStartScanRspMsg.startScanRspParams.txMgmtPower;
Jeff Johnsone7245742012-09-05 17:12:55 -070016180 wpalMemoryCopy( wdiStartScanParams.aStartTSF,
Jeff Johnson295189b2012-06-20 16:38:30 -070016181 halStartScanRspMsg.startScanRspParams.startTSF,
16182 2);
Jeff Johnsone7245742012-09-05 17:12:55 -070016183#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070016184
16185 if ( eHAL_STATUS_SUCCESS != halStartScanRspMsg.startScanRspParams.status )
16186 {
16187 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16188 "Start scan failed with status %s (%d)",
16189 WDI_getHALStatusMsgString(halStartScanRspMsg.startScanRspParams.status),
16190 halStartScanRspMsg.startScanRspParams.status);
16191 /* send the status to UMAC, don't return from here*/
16192 }
16193
16194 /*Notify UMAC*/
16195 wdiStartScanRspCb( &wdiStartScanParams, pWDICtx->pRspCBUserData);
16196
Jeff Johnsone7245742012-09-05 17:12:55 -070016197 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016198
16199}/*WDI_ProcessStartScanRsp*/
16200
16201
16202/**
Jeff Johnsone7245742012-09-05 17:12:55 -070016203 @brief Process End Scan Response function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070016204 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016205
16206 @param pWDICtx: pointer to the WLAN DAL context
16207 pEventData: pointer to the event information structure
16208
Jeff Johnson295189b2012-06-20 16:38:30 -070016209 @see
16210 @return Result of the function call
16211*/
16212WDI_Status
16213WDI_ProcessEndScanRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016214(
Jeff Johnson295189b2012-06-20 16:38:30 -070016215 WDI_ControlBlockType* pWDICtx,
16216 WDI_EventInfoType* pEventData
16217)
16218{
16219 WDI_Status wdiStatus;
16220 tHalEndScanRspMsg halEndScanRspMsg;
16221 WDI_EndScanRspCb wdiEndScanRspCb;
16222 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16223
16224 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016225 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016226 -------------------------------------------------------------------------*/
16227 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16228 ( NULL == pEventData->pEventData))
16229 {
16230 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016231 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016232 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016233 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016234 }
16235
16236 wdiEndScanRspCb = (WDI_EndScanRspCb)pWDICtx->pfncRspCB;
16237
16238 /*-------------------------------------------------------------------------
16239 Extract response and send it to UMAC
16240 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016241 wpalMemoryCopy( &halEndScanRspMsg.endScanRspParams,
16242 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016243 sizeof(halEndScanRspMsg.endScanRspParams));
16244
Jeff Johnsone7245742012-09-05 17:12:55 -070016245 wdiStatus = WDI_HAL_2_WDI_STATUS(halEndScanRspMsg.endScanRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070016246
16247 if ( eHAL_STATUS_SUCCESS != halEndScanRspMsg.endScanRspParams.status )
16248 {
16249 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16250 "End Scan failed with status %s (%d )",
16251 WDI_getHALStatusMsgString(halEndScanRspMsg.endScanRspParams.status),
16252 halEndScanRspMsg.endScanRspParams.status);
16253 /* send the status to UMAC, don't return from here*/
16254 }
16255
16256 /*Notify UMAC*/
16257 wdiEndScanRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16258
Jeff Johnsone7245742012-09-05 17:12:55 -070016259 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016260}/*WDI_ProcessEndScanRsp*/
16261
16262
16263/**
Jeff Johnsone7245742012-09-05 17:12:55 -070016264 @brief Process Finish Scan Response function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070016265 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016266
16267 @param pWDICtx: pointer to the WLAN DAL context
16268 pEventData: pointer to the event information structure
16269
Jeff Johnson295189b2012-06-20 16:38:30 -070016270 @see
16271 @return Result of the function call
16272*/
16273WDI_Status
16274WDI_ProcessFinishScanRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016275(
Jeff Johnson295189b2012-06-20 16:38:30 -070016276 WDI_ControlBlockType* pWDICtx,
16277 WDI_EventInfoType* pEventData
Jeff Johnsone7245742012-09-05 17:12:55 -070016278)
Jeff Johnson295189b2012-06-20 16:38:30 -070016279{
16280 WDI_Status wdiStatus;
16281 WDI_FinishScanRspCb wdiFinishScanRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070016282
16283 tHalFinishScanRspMsg halFinishScanRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070016284 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16285
16286 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016287 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016288 -------------------------------------------------------------------------*/
16289 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16290 ( NULL == pEventData->pEventData))
16291 {
16292 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016293 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016294 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016295 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016296 }
16297
16298 wdiFinishScanRspCb = (WDI_FinishScanRspCb)pWDICtx->pfncRspCB;
16299
16300 /*-------------------------------------------------------------------------
16301 Extract response and send it to UMAC
16302 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016303 wpalMemoryCopy( (void *)&halFinishScanRspMsg.finishScanRspParams.status,
16304 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016305 sizeof(halFinishScanRspMsg.finishScanRspParams.status));
16306
Jeff Johnsone7245742012-09-05 17:12:55 -070016307 wdiStatus = WDI_HAL_2_WDI_STATUS(halFinishScanRspMsg.finishScanRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070016308
16309 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO_LOW,
Jeff Johnsone7245742012-09-05 17:12:55 -070016310 "Finish scan response reported status: %d",
Jeff Johnson295189b2012-06-20 16:38:30 -070016311 halFinishScanRspMsg.finishScanRspParams.status);
16312
16313 if (( eHAL_STATUS_SUCCESS != halFinishScanRspMsg.finishScanRspParams.status )&&
16314 ( eHAL_STATUS_NOTIFY_BSS_FAIL != halFinishScanRspMsg.finishScanRspParams.status ))
16315 {
16316 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16317 "Finish Scan failed with status %s (%d)",
16318 WDI_getHALStatusMsgString(halFinishScanRspMsg.finishScanRspParams.status),
16319 halFinishScanRspMsg.finishScanRspParams.status);
16320 /* send the status to UMAC, don't return from here*/
16321 }
16322
16323 /*Notify UMAC*/
16324 wdiFinishScanRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16325
Jeff Johnsone7245742012-09-05 17:12:55 -070016326 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016327}/*WDI_ProcessFinishScanRsp*/
16328
16329/**
16330 @brief Process Join Response function (called when a response
16331 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016332
16333 @param pWDICtx: pointer to the WLAN DAL context
16334 pEventData: pointer to the event information structure
16335
Jeff Johnson295189b2012-06-20 16:38:30 -070016336 @see
16337 @return Result of the function call
16338*/
16339WDI_Status
16340WDI_ProcessJoinRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016341(
Jeff Johnson295189b2012-06-20 16:38:30 -070016342 WDI_ControlBlockType* pWDICtx,
16343 WDI_EventInfoType* pEventData
16344)
16345{
16346 WDI_Status wdiStatus;
16347 WDI_JoinRspCb wdiJoinRspCb;
16348 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070016349
16350 tHalJoinRspMsg halJoinRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070016351 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16352
16353 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016354 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016355 -------------------------------------------------------------------------*/
16356 if (( NULL == pWDICtx ) ||
16357 ( NULL == pWDICtx->pfncRspCB ) ||
16358 ( NULL == pEventData ) ||
16359 ( NULL == pEventData->pEventData))
16360 {
16361 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016362 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016363 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016364 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016365 }
16366
16367 wdiJoinRspCb = (WDI_JoinRspCb)pWDICtx->pfncRspCB;
16368
16369 /*-------------------------------------------------------------------------
16370 Extract response and send it to UMAC
16371 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016372 wpalMemoryCopy( &halJoinRspMsg.joinRspParams,
16373 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016374 sizeof(halJoinRspMsg.joinRspParams));
16375
Jeff Johnsone7245742012-09-05 17:12:55 -070016376 wdiStatus = WDI_HAL_2_WDI_STATUS(halJoinRspMsg.joinRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070016377
16378 wpalMutexAcquire(&pWDICtx->wptMutex);
16379
16380 /*-----------------------------------------------------------------------
16381 Join response can only be received for an existing assoc that
Jeff Johnsone7245742012-09-05 17:12:55 -070016382 is current and in progress
Jeff Johnson295189b2012-06-20 16:38:30 -070016383 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016384 if (( !WDI_VALID_SESSION_IDX(pWDICtx->ucCurrentBSSSesIdx )) ||
Jeff Johnson295189b2012-06-20 16:38:30 -070016385 ( eWLAN_PAL_FALSE == pWDICtx->bAssociationInProgress ))
16386 {
16387 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070016388 "%s: Association sequence for this BSS does not yet exist (bssIdx %d) or "
16389 "association no longer in progress %d - mysterious HAL response",
16390 __func__, pWDICtx->ucCurrentBSSSesIdx, pWDICtx->bAssociationInProgress);
Jeff Johnson295189b2012-06-20 16:38:30 -070016391
Jeff Johnsone7245742012-09-05 17:12:55 -070016392 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
Jeff Johnson295189b2012-06-20 16:38:30 -070016393 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070016394 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070016395 }
16396
16397 pBSSSes = &pWDICtx->aBSSSessions[pWDICtx->ucCurrentBSSSesIdx];
16398
16399 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016400 Join Response is only allowed in init state
Jeff Johnson295189b2012-06-20 16:38:30 -070016401 -----------------------------------------------------------------------*/
16402 if ( WDI_ASSOC_JOINING_ST != pBSSSes->wdiAssocState)
16403 {
16404 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16405 "Join only allowed in Joining state - failure state is %d "
16406 "strange HAL response", pBSSSes->wdiAssocState);
16407
Jeff Johnsone7245742012-09-05 17:12:55 -070016408 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
16409
Jeff Johnson295189b2012-06-20 16:38:30 -070016410 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070016411 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070016412 }
16413
16414
16415 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016416 If assoc has failed the current session will be deleted
Jeff Johnson295189b2012-06-20 16:38:30 -070016417 -----------------------------------------------------------------------*/
16418 if ( WDI_STATUS_SUCCESS != wdiStatus )
16419 {
16420 /*Association was failed by HAL - remove session*/
16421 WDI_DeleteSession(pWDICtx, pBSSSes);
16422
16423 /*Association no longer in progress */
16424 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
16425
16426 /*Association no longer in progress - prepare pending assoc for processing*/
16427 WDI_DequeueAssocRequest(pWDICtx);
Jeff Johnsone7245742012-09-05 17:12:55 -070016428
Jeff Johnson295189b2012-06-20 16:38:30 -070016429 }
16430 else
16431 {
16432 /*Transition to state Joining - this may be redundant as we are supposed
16433 to be in this state already - but just to be safe*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016434 pBSSSes->wdiAssocState = WDI_ASSOC_JOINING_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -070016435 }
16436
16437 wpalMutexRelease(&pWDICtx->wptMutex);
16438
16439 /*Notify UMAC*/
16440 wdiJoinRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16441
Jeff Johnsone7245742012-09-05 17:12:55 -070016442 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016443}/*WDI_ProcessJoinRsp*/
16444
16445
16446/**
Jeff Johnsone7245742012-09-05 17:12:55 -070016447 @brief Process Config BSS Response function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070016448 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016449
16450 @param pWDICtx: pointer to the WLAN DAL context
16451 pEventData: pointer to the event information structure
16452
Jeff Johnson295189b2012-06-20 16:38:30 -070016453 @see
16454 @return Result of the function call
16455*/
16456WDI_Status
16457WDI_ProcessConfigBSSRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016458(
Jeff Johnson295189b2012-06-20 16:38:30 -070016459 WDI_ControlBlockType* pWDICtx,
16460 WDI_EventInfoType* pEventData
16461)
16462{
16463 WDI_ConfigBSSRspParamsType wdiConfigBSSParams;
16464 WDI_ConfigBSSRspCb wdiConfigBSSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070016465 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070016466 WDI_BSSSessionType* pBSSSes = NULL;
16467
Jeff Johnsone7245742012-09-05 17:12:55 -070016468 tConfigBssRspMsg halConfigBssRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070016469 WDI_AddStaParams wdiBcastAddSTAParam = {0};
16470 WDI_AddStaParams wdiAddSTAParam = {0};
Jeff Johnsone7245742012-09-05 17:12:55 -070016471
Jeff Johnson295189b2012-06-20 16:38:30 -070016472 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16473
16474 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016475 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016476 -------------------------------------------------------------------------*/
16477 if (( NULL == pEventData ) ||
16478 ( NULL == pEventData->pEventData))
16479 {
16480 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016481 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016482 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016483 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016484 }
16485
16486 wdiConfigBSSRspCb = (WDI_ConfigBSSRspCb)pWDICtx->pfncRspCB;
16487
16488 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016489 Extract response and send it to UMAC
Jeff Johnson295189b2012-06-20 16:38:30 -070016490 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016491 wpalMemoryCopy( &halConfigBssRspMsg.configBssRspParams,
16492 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016493 sizeof(halConfigBssRspMsg.configBssRspParams));
16494
16495 wdiConfigBSSParams.wdiStatus = WDI_HAL_2_WDI_STATUS(
16496 halConfigBssRspMsg.configBssRspParams.status);
16497 if(WDI_STATUS_SUCCESS == wdiConfigBSSParams.wdiStatus)
16498 {
Jeff Johnsone7245742012-09-05 17:12:55 -070016499 wpalMemoryCopy( wdiConfigBSSParams.macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -070016500 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.macBSSID,
16501 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070016502
Jeff Johnson295189b2012-06-20 16:38:30 -070016503 wdiConfigBSSParams.ucBSSIdx = halConfigBssRspMsg.configBssRspParams.bssIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016504
16505 wdiConfigBSSParams.ucBcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070016506 halConfigBssRspMsg.configBssRspParams.bcastDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070016507
16508 wdiConfigBSSParams.ucUcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070016509 halConfigBssRspMsg.configBssRspParams.ucastDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070016510
Jeff Johnson295189b2012-06-20 16:38:30 -070016511 wdiConfigBSSParams.ucSTAIdx = halConfigBssRspMsg.configBssRspParams.bssStaIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016512
Jeff Johnson295189b2012-06-20 16:38:30 -070016513 #ifdef WLAN_FEATURE_VOWIFI
Jeff Johnsone7245742012-09-05 17:12:55 -070016514 wdiConfigBSSParams.ucTxMgmtPower =
Jeff Johnson295189b2012-06-20 16:38:30 -070016515 halConfigBssRspMsg.configBssRspParams.txMgmtPower;
16516 #endif
16517 wpalMemoryCopy( wdiConfigBSSParams.macSTA,
16518 halConfigBssRspMsg.configBssRspParams.staMac,
16519 WDI_MAC_ADDR_LEN );
Jeff Johnsone7245742012-09-05 17:12:55 -070016520
Jeff Johnson295189b2012-06-20 16:38:30 -070016521 wpalMutexAcquire(&pWDICtx->wptMutex);
16522 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016523 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070016524 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016525 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
16526 wdiConfigBSSParams.macBSSID,
16527 &pBSSSes);
16528
Jeff Johnson295189b2012-06-20 16:38:30 -070016529 /*-----------------------------------------------------------------------
16530 Config BSS response can only be received for an existing assoc that
Jeff Johnsone7245742012-09-05 17:12:55 -070016531 is current and in progress
Jeff Johnson295189b2012-06-20 16:38:30 -070016532 -----------------------------------------------------------------------*/
16533 if ( NULL == pBSSSes )
16534 {
16535 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16536 "Association sequence for this BSS does not yet exist "
16537 "- mysterious HAL response");
Jeff Johnsone7245742012-09-05 17:12:55 -070016538
16539 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
16540
Jeff Johnson295189b2012-06-20 16:38:30 -070016541 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070016542 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070016543 }
Jeff Johnsone7245742012-09-05 17:12:55 -070016544
Jeff Johnson295189b2012-06-20 16:38:30 -070016545 /*Save data for this BSS*/
16546 pBSSSes->wdiBssType = pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiBSSType;
16547 pBSSSes->ucBSSIdx = halConfigBssRspMsg.configBssRspParams.bssIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016548 pBSSSes->bcastDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070016549 halConfigBssRspMsg.configBssRspParams.bcastDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016550 pBSSSes->bcastDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070016551 halConfigBssRspMsg.configBssRspParams.bcastDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070016552 pBSSSes->bcastMgmtDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070016553 halConfigBssRspMsg.configBssRspParams.mgmtDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016554 pBSSSes->bcastMgmtDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070016555 halConfigBssRspMsg.configBssRspParams.mgmtDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070016556 pBSSSes->ucRmfEnabled =
Jeff Johnson295189b2012-06-20 16:38:30 -070016557 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.ucRMFEnabled;
16558 pBSSSes->bcastStaIdx =
16559 halConfigBssRspMsg.configBssRspParams.bssBcastStaIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016560
Jeff Johnson295189b2012-06-20 16:38:30 -070016561 /* !TO DO: Shuould we be updating the RMF Capability of self STA here? */
Jeff Johnsone7245742012-09-05 17:12:55 -070016562
Jeff Johnson295189b2012-06-20 16:38:30 -070016563 /*-------------------------------------------------------------------------
16564 Add Peer STA
16565 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016566 wdiAddSTAParam.ucSTAIdx = halConfigBssRspMsg.configBssRspParams.bssStaIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070016567 wdiAddSTAParam.dpuIndex = halConfigBssRspMsg.configBssRspParams.dpuDescIndx;
16568 wdiAddSTAParam.dpuSig = halConfigBssRspMsg.configBssRspParams.ucastDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070016569
Jeff Johnson295189b2012-06-20 16:38:30 -070016570 /*This info can be retrieved from the cached initial request*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016571 wdiAddSTAParam.ucWmmEnabled =
Jeff Johnson295189b2012-06-20 16:38:30 -070016572 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiSTAContext.ucWMMEnabled;
Jeff Johnsone7245742012-09-05 17:12:55 -070016573 wdiAddSTAParam.ucHTCapable =
16574 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiSTAContext.ucHTCapable;
16575 wdiAddSTAParam.ucStaType =
16576 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiSTAContext.wdiSTAType;
16577
Jeff Johnson295189b2012-06-20 16:38:30 -070016578 /* MAC Address of STA */
Jeff Johnsone7245742012-09-05 17:12:55 -070016579 wpalMemoryCopy(wdiAddSTAParam.staMacAddr,
16580 halConfigBssRspMsg.configBssRspParams.staMac,
Jeff Johnson295189b2012-06-20 16:38:30 -070016581 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070016582
16583 wpalMemoryCopy(wdiAddSTAParam.macBSSID,
16584 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiSTAContext.macBSSID ,
16585 WDI_MAC_ADDR_LEN);
16586
Jeff Johnson295189b2012-06-20 16:38:30 -070016587 /*Add BSS specific parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016588 wdiAddSTAParam.bcastMgmtDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070016589 halConfigBssRspMsg.configBssRspParams.mgmtDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016590 wdiAddSTAParam.bcastMgmtDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070016591 halConfigBssRspMsg.configBssRspParams.mgmtDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070016592 wdiAddSTAParam.bcastDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070016593 halConfigBssRspMsg.configBssRspParams.bcastDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016594 wdiAddSTAParam.bcastDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070016595 halConfigBssRspMsg.configBssRspParams.bcastDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070016596 wdiAddSTAParam.ucRmfEnabled =
Jeff Johnson295189b2012-06-20 16:38:30 -070016597 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.ucRMFEnabled;
Jeff Johnsone7245742012-09-05 17:12:55 -070016598 wdiAddSTAParam.ucBSSIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070016599 halConfigBssRspMsg.configBssRspParams.bssIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016600
Jeff Johnson295189b2012-06-20 16:38:30 -070016601 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
16602 "Add STA to the table index: %d", wdiAddSTAParam.ucSTAIdx );
Jeff Johnsone7245742012-09-05 17:12:55 -070016603
Jeff Johnson295189b2012-06-20 16:38:30 -070016604 WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
16605 /*-------------------------------------------------------------------------
16606 Add Broadcast STA only in AP mode
16607 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016608 if( pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.ucOperMode ==
Ravi Joshid0699502013-07-08 15:48:47 -070016609 WDI_BSS_OPERATIONAL_MODE_AP || pBSSSes->wdiBssType == WDI_IBSS_MODE)
Jeff Johnson295189b2012-06-20 16:38:30 -070016610 {
16611 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
16612 "Add BCAST STA to table for index: %d",
16613 halConfigBssRspMsg.configBssRspParams.bssBcastStaIdx );
Jeff Johnsone7245742012-09-05 17:12:55 -070016614
16615 wpalMemoryCopy( &wdiBcastAddSTAParam, &wdiAddSTAParam,
Jeff Johnson295189b2012-06-20 16:38:30 -070016616 sizeof(WDI_AddStaParams) );
Jeff Johnsone7245742012-09-05 17:12:55 -070016617
Jeff Johnson295189b2012-06-20 16:38:30 -070016618 WDI_AddBcastSTAtoSTATable( pWDICtx, &wdiBcastAddSTAParam,
16619 halConfigBssRspMsg.configBssRspParams.bssBcastStaIdx );
16620 }
16621 wpalMutexRelease(&pWDICtx->wptMutex);
16622 }
16623 else
16624 {
16625 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16626 "Config BSS RSP failed with status : %s(%d)",
16627 WDI_getHALStatusMsgString(
Jeff Johnsone7245742012-09-05 17:12:55 -070016628 halConfigBssRspMsg.configBssRspParams.status),
Jeff Johnson295189b2012-06-20 16:38:30 -070016629 halConfigBssRspMsg.configBssRspParams.status);
16630
Jeff Johnsone7245742012-09-05 17:12:55 -070016631
Jeff Johnson295189b2012-06-20 16:38:30 -070016632 /*Association was failed by HAL - remove session*/
16633 WDI_DeleteSession(pWDICtx, pBSSSes);
16634
16635 /*Association no longer in progress */
16636 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
16637
16638 /*Association no longer in progress - prepare pending assoc for processing*/
16639 WDI_DequeueAssocRequest(pWDICtx);
16640
16641 }
16642
16643 /*Notify UMAC*/
16644 wdiConfigBSSRspCb( &wdiConfigBSSParams, pWDICtx->pRspCBUserData);
16645
Jeff Johnsone7245742012-09-05 17:12:55 -070016646 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016647}/*WDI_ProcessConfigBSSRsp*/
16648
16649
16650/**
16651 @brief Process Del BSS Response function (called when a response
16652 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016653
16654 @param pWDICtx: pointer to the WLAN DAL context
16655 pEventData: pointer to the event information structure
16656
Jeff Johnson295189b2012-06-20 16:38:30 -070016657 @see
16658 @return Result of the function call
16659*/
16660WDI_Status
16661WDI_ProcessDelBSSRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016662(
Jeff Johnson295189b2012-06-20 16:38:30 -070016663 WDI_ControlBlockType* pWDICtx,
16664 WDI_EventInfoType* pEventData
16665)
16666{
16667 WDI_DelBSSRspParamsType wdiDelBSSParams;
16668 WDI_DelBSSRspCb wdiDelBSSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070016669 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070016670 WDI_BSSSessionType* pBSSSes = NULL;
16671
Jeff Johnsone7245742012-09-05 17:12:55 -070016672 tDeleteBssRspMsg halDelBssRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070016673 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16674
16675 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016676 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016677 -------------------------------------------------------------------------*/
16678 if (( NULL == pEventData ) ||
16679 ( NULL == pEventData->pEventData))
16680 {
16681 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016682 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016683 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016684 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016685 }
16686
16687 wdiDelBSSRspCb = (WDI_DelBSSRspCb)pWDICtx->pfncRspCB;
16688
16689 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016690 Extract response and send it to UMAC
Jeff Johnson295189b2012-06-20 16:38:30 -070016691 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016692 wpalMemoryCopy( &halDelBssRspMsg.deleteBssRspParams,
16693 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016694 sizeof(halDelBssRspMsg.deleteBssRspParams));
16695
16696
16697 wdiDelBSSParams.wdiStatus = WDI_HAL_2_WDI_STATUS(
Jeff Johnsone7245742012-09-05 17:12:55 -070016698 halDelBssRspMsg.deleteBssRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070016699
16700 wpalMutexAcquire(&pWDICtx->wptMutex);
16701
16702 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016703 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070016704 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016705 ucCurrentBSSSesIdx = WDI_FindAssocSessionByBSSIdx( pWDICtx,
16706 halDelBssRspMsg.deleteBssRspParams.bssIdx,
16707 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070016708
16709 /*-----------------------------------------------------------------------
16710 Del BSS response can only be received for an existing assoc that
Jeff Johnsone7245742012-09-05 17:12:55 -070016711 is current and in progress
Jeff Johnson295189b2012-06-20 16:38:30 -070016712 -----------------------------------------------------------------------*/
16713 if ( NULL == pBSSSes )
16714 {
16715 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16716 "Association sequence for this BSS does not yet exist or "
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -080016717 "association no longer in progress - mysterious HAL response");
16718
16719 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
16720
16721 wpalMutexRelease(&pWDICtx->wptMutex);
16722 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070016723 }
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -080016724
16725 /*Extract BSSID for the response to UMAC*/
16726 wpalMemoryCopy(wdiDelBSSParams.macBSSID,
16727 pBSSSes->macBSSID, WDI_MAC_ADDR_LEN);
16728
16729 wdiDelBSSParams.ucBssIdx = halDelBssRspMsg.deleteBssRspParams.bssIdx;
16730
16731 /*-----------------------------------------------------------------------
16732 The current session will be deleted
16733 -----------------------------------------------------------------------*/
16734 WDI_DeleteSession(pWDICtx, pBSSSes);
16735
16736
16737 /* Delete the BCAST STA entry from the STA table if SAP/GO session is deleted */
krunal soni3fc26642013-10-08 22:41:42 -070016738 if(WDI_INFRA_AP_MODE == pBSSSes->wdiBssType ||
16739 pBSSSes->wdiBssType == WDI_IBSS_MODE)
Jeff Johnson295189b2012-06-20 16:38:30 -070016740 {
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -080016741 (void)WDI_STATableDelSta( pWDICtx, pBSSSes->bcastStaIdx );
Madan Mohan Koyyalamudif371f172012-10-31 16:35:43 -070016742 }
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -080016743
16744 /* Delete the STA's in this BSS */
16745 WDI_STATableBSSDelSta(pWDICtx, halDelBssRspMsg.deleteBssRspParams.bssIdx);
16746
Jeff Johnson295189b2012-06-20 16:38:30 -070016747 wpalMutexRelease(&pWDICtx->wptMutex);
16748
16749 /*Notify UMAC*/
16750 wdiDelBSSRspCb( &wdiDelBSSParams, pWDICtx->pRspCBUserData);
16751
Jeff Johnsone7245742012-09-05 17:12:55 -070016752 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016753}/*WDI_ProcessDelBSSRsp*/
16754
16755/**
16756 @brief Process Post Assoc Rsp function (called when a response
16757 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016758
16759 @param pWDICtx: pointer to the WLAN DAL context
16760 pEventData: pointer to the event information structure
16761
Jeff Johnson295189b2012-06-20 16:38:30 -070016762 @see
16763 @return Result of the function call
16764*/
16765WDI_Status
16766WDI_ProcessPostAssocRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016767(
Jeff Johnson295189b2012-06-20 16:38:30 -070016768 WDI_ControlBlockType* pWDICtx,
16769 WDI_EventInfoType* pEventData
16770)
16771{
16772 WDI_PostAssocRspParamsType wdiPostAssocParams;
16773 WDI_PostAssocRspCb wdiPostAssocRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070016774 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070016775 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070016776 tPostAssocRspMsg halPostAssocRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070016777 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16778
16779 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016780 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016781 -------------------------------------------------------------------------*/
16782 if (( NULL == pEventData ) ||
16783 ( NULL == pEventData->pEventData))
16784 {
16785 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016786 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016787 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016788 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016789 }
16790
16791 wdiPostAssocRspCb = (WDI_PostAssocRspCb)pWDICtx->pfncRspCB;
16792
16793 /*-------------------------------------------------------------------------
16794 Extract response and send it to UMAC
16795 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016796 wpalMemoryCopy( &halPostAssocRspMsg.postAssocRspParams,
16797 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016798 sizeof(halPostAssocRspMsg.postAssocRspParams));
16799
16800 /*Extract the Post Assoc STA Params */
16801
Jeff Johnsone7245742012-09-05 17:12:55 -070016802 wdiPostAssocParams.staParams.ucSTAIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070016803 halPostAssocRspMsg.postAssocRspParams.configStaRspParams.staIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016804 wdiPostAssocParams.staParams.ucUcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070016805 halPostAssocRspMsg.postAssocRspParams.configStaRspParams.ucUcastSig;
Jeff Johnsone7245742012-09-05 17:12:55 -070016806 wdiPostAssocParams.staParams.ucBcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070016807 halPostAssocRspMsg.postAssocRspParams.configStaRspParams.ucBcastSig;
16808
Jeff Johnsone7245742012-09-05 17:12:55 -070016809 wdiPostAssocParams.wdiStatus =
16810 WDI_HAL_2_WDI_STATUS(halPostAssocRspMsg.postAssocRspParams.configStaRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070016811
16812 /*Copy the MAC addresses from the cached storage in the WDI CB as they are not
16813 included in the response */
Jeff Johnsone7245742012-09-05 17:12:55 -070016814 wpalMemoryCopy( wdiPostAssocParams.staParams.macSTA,
16815 pWDICtx->wdiCachedPostAssocReq.wdiSTAParams.macSTA,
Jeff Johnson295189b2012-06-20 16:38:30 -070016816 WDI_MAC_ADDR_LEN);
16817
16818 /* Extract Post Assoc BSS Params */
16819
Jeff Johnsone7245742012-09-05 17:12:55 -070016820 wpalMemoryCopy( wdiPostAssocParams.bssParams.macBSSID,
16821 pWDICtx->wdiCachedPostAssocReq.wdiBSSParams.macBSSID,
16822 WDI_MAC_ADDR_LEN);
Jeff Johnson295189b2012-06-20 16:38:30 -070016823
16824 /*Copy the MAC addresses from the cached storage in the WDI CB as they are not
16825 included in the response */
Jeff Johnsone7245742012-09-05 17:12:55 -070016826 wpalMemoryCopy( wdiPostAssocParams.bssParams.macSTA,
Jeff Johnson295189b2012-06-20 16:38:30 -070016827 pWDICtx->wdiCachedPostAssocReq.wdiBSSParams.wdiSTAContext
16828 .macSTA, WDI_MAC_ADDR_LEN);
16829
Jeff Johnsone7245742012-09-05 17:12:55 -070016830 wdiPostAssocParams.bssParams.ucBcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070016831 halPostAssocRspMsg.postAssocRspParams.configStaRspParams.ucBcastSig;
16832
Jeff Johnsone7245742012-09-05 17:12:55 -070016833 wdiPostAssocParams.bssParams.ucUcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070016834 halPostAssocRspMsg.postAssocRspParams.configStaRspParams.ucUcastSig;
16835
16836 wdiPostAssocParams.bssParams.ucBSSIdx =
16837 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bssIdx;
16838
Jeff Johnsone7245742012-09-05 17:12:55 -070016839 wdiPostAssocParams.bssParams.ucSTAIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070016840 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bssStaIdx;
16841
16842 wpalMutexAcquire(&pWDICtx->wptMutex);
16843
16844 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016845 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070016846 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016847 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
Jeff Johnson295189b2012-06-20 16:38:30 -070016848 wdiPostAssocParams.bssParams.
Jeff Johnsone7245742012-09-05 17:12:55 -070016849 macBSSID, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070016850
16851 /*-----------------------------------------------------------------------
16852 Post assoc response can only be received for an existing assoc that
Jeff Johnsone7245742012-09-05 17:12:55 -070016853 is current and in progress
Jeff Johnson295189b2012-06-20 16:38:30 -070016854 -----------------------------------------------------------------------*/
16855 if (( NULL == pBSSSes ) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070016856 ( ucCurrentBSSSesIdx != pWDICtx->ucCurrentBSSSesIdx ) ||
Jeff Johnson295189b2012-06-20 16:38:30 -070016857 ( eWLAN_PAL_FALSE == pWDICtx->bAssociationInProgress ))
16858 {
16859 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16860 "Association sequence for this BSS does not yet exist or "
16861 "association no longer in progress - mysterious HAL response");
16862
Jeff Johnsone7245742012-09-05 17:12:55 -070016863 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
16864
Jeff Johnson295189b2012-06-20 16:38:30 -070016865 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070016866 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070016867 }
16868
16869 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016870 Post Assoc Request is only allowed in Joining state
Jeff Johnson295189b2012-06-20 16:38:30 -070016871 -----------------------------------------------------------------------*/
16872 if ( WDI_ASSOC_JOINING_ST != pBSSSes->wdiAssocState)
16873 {
16874 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16875 "Post Assoc not allowed before JOIN - failing request "
16876 "strange HAL response");
16877
Jeff Johnsone7245742012-09-05 17:12:55 -070016878 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
16879
Jeff Johnson295189b2012-06-20 16:38:30 -070016880 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070016881 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070016882 }
16883
16884 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016885 If assoc has failed the current session will be deleted
Jeff Johnson295189b2012-06-20 16:38:30 -070016886 -----------------------------------------------------------------------*/
16887 if ( WDI_STATUS_SUCCESS != wdiPostAssocParams.wdiStatus )
16888 {
16889 /*Association was failed by HAL - remove session*/
16890 WDI_DeleteSession(pWDICtx, pBSSSes);
16891 }
16892 else
16893 {
16894 /*Transition to state POST Assoc*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016895 pBSSSes->wdiAssocState = WDI_ASSOC_POST_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -070016896
16897 /*Save DPU Info*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016898 pBSSSes->bcastMgmtDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070016899 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.mgmtDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016900 pBSSSes->bcastMgmtDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070016901 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.mgmtDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070016902 pBSSSes->bcastDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070016903 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bcastDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016904 pBSSSes->bcastDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070016905 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bcastDpuSignature;
16906
Jeff Johnsone7245742012-09-05 17:12:55 -070016907 pBSSSes->ucBSSIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070016908 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bssIdx;
16909 }
16910
16911 /*Association no longer in progress */
16912 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
16913
16914 /*Association no longer in progress - prepare pending assoc for processing*/
16915 WDI_DequeueAssocRequest(pWDICtx);
16916
16917 wpalMutexRelease(&pWDICtx->wptMutex);
16918
16919 /*Notify UMAC*/
16920 wdiPostAssocRspCb( &wdiPostAssocParams, pWDICtx->pRspCBUserData);
16921
Jeff Johnsone7245742012-09-05 17:12:55 -070016922 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016923}/*WDI_ProcessPostAssocRsp*/
16924
16925/**
Jeff Johnsone7245742012-09-05 17:12:55 -070016926 @brief Process Del STA Rsp function (called when a response is
Jeff Johnson295189b2012-06-20 16:38:30 -070016927 being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016928
16929 @param pWDICtx: pointer to the WLAN DAL context
16930 pEventData: pointer to the event information structure
16931
Jeff Johnson295189b2012-06-20 16:38:30 -070016932 @see
16933 @return Result of the function call
16934*/
16935WDI_Status
16936WDI_ProcessDelSTARsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016937(
Jeff Johnson295189b2012-06-20 16:38:30 -070016938 WDI_ControlBlockType* pWDICtx,
16939 WDI_EventInfoType* pEventData
16940)
16941{
16942 WDI_DelSTARspParamsType wdiDelSTARsp;
16943 WDI_DelSTARspCb wdiDelSTARspCb;
16944 wpt_uint8 staType;
Jeff Johnsone7245742012-09-05 17:12:55 -070016945 tDeleteStaRspMsg halDelStaRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070016946 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16947
16948 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016949 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016950 -------------------------------------------------------------------------*/
16951 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16952 ( NULL == pEventData->pEventData))
16953 {
16954 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016955 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016956 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016957 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016958 }
16959
16960 wdiDelSTARspCb = (WDI_DelSTARspCb)pWDICtx->pfncRspCB;
16961
16962 /*-------------------------------------------------------------------------
16963 Extract response and send it to UMAC
16964 -------------------------------------------------------------------------*/
16965 wpalMemoryCopy( &halDelStaRspMsg.delStaRspParams,
Jeff Johnsone7245742012-09-05 17:12:55 -070016966 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016967 sizeof(halDelStaRspMsg.delStaRspParams));
16968
16969 wdiDelSTARsp.ucSTAIdx = halDelStaRspMsg.delStaRspParams.staId;
Jeff Johnsone7245742012-09-05 17:12:55 -070016970 wdiDelSTARsp.wdiStatus =
16971 WDI_HAL_2_WDI_STATUS(halDelStaRspMsg.delStaRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070016972
16973 WDI_STATableGetStaType(pWDICtx, wdiDelSTARsp.ucSTAIdx, &staType);
16974
16975 /* If the DEL STA request is for self STA do not delete it - Really weird!!What happens in concurrency */
16976 if(staType == WDI_STA_ENTRY_SELF)
16977 {
16978 WDI_StaStruct* pSTATable = (WDI_StaStruct*) pWDICtx->staTable;
16979
16980 /* At this point add the self-STA */
16981
16982 /*! TO DO: wdiAddSTAParam.ucWmmEnabled */
16983 /*! TO DO: wdiAddSTAParam.ucHTCapable */
16984 /*! TO DO: wdiAddSTAParam.ucRmfEnabled */
16985
16986#define WDI_DPU_SELF_STA_DEFAULT_IDX 0
16987#define WDI_DPU_SELF_STA_DEFAULT_SIG 0
16988
16989 //all DPU indices are the same for self STA
16990 pSTATable[wdiDelSTARsp.ucSTAIdx].dpuIndex = WDI_DPU_SELF_STA_DEFAULT_IDX;
16991 pSTATable[wdiDelSTARsp.ucSTAIdx].bcastDpuIndex = WDI_DPU_SELF_STA_DEFAULT_IDX;
16992 pSTATable[wdiDelSTARsp.ucSTAIdx].bcastMgmtDpuIndex = WDI_DPU_SELF_STA_DEFAULT_IDX;
16993 pSTATable[wdiDelSTARsp.ucSTAIdx].bcastDpuSignature = WDI_DPU_SELF_STA_DEFAULT_SIG;
16994 pSTATable[wdiDelSTARsp.ucSTAIdx].bcastMgmtDpuSignature = WDI_DPU_SELF_STA_DEFAULT_SIG;
16995 pSTATable[wdiDelSTARsp.ucSTAIdx].dpuSig = WDI_DPU_SELF_STA_DEFAULT_SIG;
Madan Mohan Koyyalamudi15a48f02012-10-05 17:13:53 -070016996
16997 pSTATable[wdiDelSTARsp.ucSTAIdx].bssIdx = WDI_BSS_INVALID_IDX;
Jeff Johnson295189b2012-06-20 16:38:30 -070016998 }
16999 else
17000 {
17001 //Delete the station in the table
17002 WDI_STATableDelSta( pWDICtx, wdiDelSTARsp.ucSTAIdx);
17003 }
17004
17005 /*Notify UMAC*/
17006 wdiDelSTARspCb( &wdiDelSTARsp, pWDICtx->pRspCBUserData);
17007
Jeff Johnsone7245742012-09-05 17:12:55 -070017008 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017009}/*WDI_ProcessDelSTARsp*/
17010
17011
17012/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070017013 Security Response Processing Functions
Jeff Johnson295189b2012-06-20 16:38:30 -070017014==========================================================================*/
17015
17016/**
17017 @brief Process Set BSS Key Rsp function (called when a response
17018 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017019
17020 @param pWDICtx: pointer to the WLAN DAL context
17021 pEventData: pointer to the event information structure
17022
Jeff Johnson295189b2012-06-20 16:38:30 -070017023 @see
17024 @return Result of the function call
17025*/
17026WDI_Status
17027WDI_ProcessSetBssKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017028(
Jeff Johnson295189b2012-06-20 16:38:30 -070017029 WDI_ControlBlockType* pWDICtx,
17030 WDI_EventInfoType* pEventData
17031)
17032{
17033 WDI_Status wdiStatus;
17034 eHalStatus halStatus;
17035 WDI_SetBSSKeyRspCb wdiSetBSSKeyRspCb;
17036 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17037
17038 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017039 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017040 -------------------------------------------------------------------------*/
17041 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17042 ( NULL == pEventData->pEventData))
17043 {
17044 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017045 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017046 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017047 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017048 }
17049
17050 wdiSetBSSKeyRspCb = (WDI_SetBSSKeyRspCb)pWDICtx->pfncRspCB;
17051
17052 /*-------------------------------------------------------------------------
17053 Extract response and send it to UMAC
17054 -------------------------------------------------------------------------*/
17055 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070017056 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017057
17058 if ( eHAL_STATUS_SUCCESS != halStatus )
17059 {
17060 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17061 "Set BSS Key failed with status %s (%d)",
17062 WDI_getHALStatusMsgString(halStatus),
17063 halStatus);
17064 /* send the status to UMAC, don't return from here*/
17065 }
17066
17067 /*Notify UMAC*/
17068 wdiSetBSSKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17069
Jeff Johnsone7245742012-09-05 17:12:55 -070017070 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017071}/*WDI_ProcessSetBssKeyRsp*/
17072
17073/**
17074 @brief Process Remove BSS Key Rsp function (called when a response
17075 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017076
17077 @param pWDICtx: pointer to the WLAN DAL context
17078 pEventData: pointer to the event information structure
17079
Jeff Johnson295189b2012-06-20 16:38:30 -070017080 @see
17081 @return Result of the function call
17082*/
17083WDI_Status
17084WDI_ProcessRemoveBssKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017085(
Jeff Johnson295189b2012-06-20 16:38:30 -070017086 WDI_ControlBlockType* pWDICtx,
17087 WDI_EventInfoType* pEventData
17088)
17089{
17090 WDI_Status wdiStatus;
17091 eHalStatus halStatus;
17092 WDI_RemoveBSSKeyRspCb wdiRemoveBSSKeyRspCb;
17093 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17094
17095 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017096 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017097 -------------------------------------------------------------------------*/
17098 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17099 ( NULL == pEventData->pEventData))
17100 {
17101 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017102 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017103 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017104 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017105 }
17106
17107 wdiRemoveBSSKeyRspCb = (WDI_RemoveBSSKeyRspCb)pWDICtx->pfncRspCB;
17108
17109 /*-------------------------------------------------------------------------
17110 Extract response and send it to UMAC
17111 -------------------------------------------------------------------------*/
17112 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070017113 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017114
17115 if ( eHAL_STATUS_SUCCESS != halStatus )
17116 {
17117 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17118 "Remove BSS Key failed with status %s (%d )",
17119 WDI_getHALStatusMsgString(halStatus),
17120 halStatus);
17121 /* send the status to UMAC, don't return from here*/
17122 }
17123
17124 /*Notify UMAC*/
17125 wdiRemoveBSSKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17126
Jeff Johnsone7245742012-09-05 17:12:55 -070017127 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017128}/*WDI_ProcessSetBssKeyRsp*/
17129
17130
17131/**
17132 @brief Process Set STA Key Rsp function (called when a response
17133 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017134
17135 @param pWDICtx: pointer to the WLAN DAL context
17136 pEventData: pointer to the event information structure
17137
Jeff Johnson295189b2012-06-20 16:38:30 -070017138 @see
17139 @return Result of the function call
17140*/
17141WDI_Status
17142WDI_ProcessSetStaKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017143(
Jeff Johnson295189b2012-06-20 16:38:30 -070017144 WDI_ControlBlockType* pWDICtx,
17145 WDI_EventInfoType* pEventData
17146)
17147{
17148 WDI_Status wdiStatus;
17149 eHalStatus halStatus;
17150 WDI_SetSTAKeyRspCb wdiSetSTAKeyRspCb;
17151 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17152
17153 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017154 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017155 -------------------------------------------------------------------------*/
17156 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17157 ( NULL == pEventData->pEventData))
17158 {
17159 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017160 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017161 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017162 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017163 }
17164
17165 wdiSetSTAKeyRspCb = (WDI_SetSTAKeyRspCb)pWDICtx->pfncRspCB;
17166
17167 /*-------------------------------------------------------------------------
17168 Extract response and send it to UMAC
17169 -------------------------------------------------------------------------*/
17170 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070017171 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017172
17173 if ( eHAL_STATUS_SUCCESS != halStatus )
17174 {
17175 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17176 "Set STA Key failed with status %s (%d)",
17177 WDI_getHALStatusMsgString(halStatus),
17178 halStatus);
17179 /* send the status to UMAC, don't return from here*/
17180 }
17181
17182 /*Notify UMAC*/
17183 wdiSetSTAKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17184
Jeff Johnsone7245742012-09-05 17:12:55 -070017185 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017186}/*WDI_ProcessSetSTAKeyRsp*/
17187
17188/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017189 @brief Process Remove STA Key Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070017190 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017191
17192 @param pWDICtx: pointer to the WLAN DAL context
17193 pEventData: pointer to the event information structure
17194
Jeff Johnson295189b2012-06-20 16:38:30 -070017195 @see
17196 @return Result of the function call
17197*/
17198WDI_Status
17199WDI_ProcessRemoveStaKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017200(
Jeff Johnson295189b2012-06-20 16:38:30 -070017201 WDI_ControlBlockType* pWDICtx,
17202 WDI_EventInfoType* pEventData
17203)
17204{
17205 WDI_Status wdiStatus;
17206 eHalStatus halStatus;
17207 WDI_RemoveSTAKeyRspCb wdiRemoveSTAKeyRspCb;
17208 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17209
17210 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017211 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017212 -------------------------------------------------------------------------*/
17213 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17214 ( NULL == pEventData->pEventData))
17215 {
17216 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017217 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017218 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017219 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017220 }
17221
17222 wdiRemoveSTAKeyRspCb = (WDI_RemoveSTAKeyRspCb)pWDICtx->pfncRspCB;
17223
17224 /*-------------------------------------------------------------------------
17225 Extract response and send it to UMAC
17226 -------------------------------------------------------------------------*/
17227 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070017228 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017229
17230 if ( eHAL_STATUS_SUCCESS != halStatus )
17231 {
17232 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17233 "Remove STA Key failed with status %s (%d)",
17234 WDI_getHALStatusMsgString(halStatus),
17235 halStatus);
17236 /* send the status to UMAC, don't return from here*/
17237 }
17238
17239 /*Notify UMAC*/
17240 wdiRemoveSTAKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17241
Jeff Johnsone7245742012-09-05 17:12:55 -070017242 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017243}/*WDI_ProcessRemoveStaKeyRsp*/
17244
17245/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017246 @brief Process Set STA Bcast Key Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070017247 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017248
17249 @param pWDICtx: pointer to the WLAN DAL context
17250 pEventData: pointer to the event information structure
17251
Jeff Johnson295189b2012-06-20 16:38:30 -070017252 @see
17253 @return Result of the function call
17254*/
17255WDI_Status
17256WDI_ProcessSetStaBcastKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017257(
Jeff Johnson295189b2012-06-20 16:38:30 -070017258 WDI_ControlBlockType* pWDICtx,
17259 WDI_EventInfoType* pEventData
17260)
17261{
17262 WDI_Status wdiStatus;
17263 eHalStatus halStatus;
17264 WDI_SetSTAKeyRspCb wdiSetSTABcastKeyRspCb;
17265 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17266
17267 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017268 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017269 -------------------------------------------------------------------------*/
17270 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17271 ( NULL == pEventData->pEventData))
17272 {
17273 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017274 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017275 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017276 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017277 }
17278
17279 wdiSetSTABcastKeyRspCb = (WDI_SetSTAKeyRspCb)pWDICtx->pfncRspCB;
17280
17281 /*-------------------------------------------------------------------------
17282 Extract response and send it to UMAC
17283 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017284 wpalMemoryCopy( &halStatus,
17285 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017286 sizeof(halStatus));
17287
Jeff Johnsone7245742012-09-05 17:12:55 -070017288 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017289
17290 if ( eHAL_STATUS_SUCCESS != halStatus )
17291 {
17292 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17293 "Set STA Key failed with status %s (%d)",
17294 WDI_getHALStatusMsgString(halStatus),
17295 halStatus);
17296 /* send the status to UMAC, don't return from here*/
17297 }
17298
17299 /*Notify UMAC*/
17300 wdiSetSTABcastKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17301
Jeff Johnsone7245742012-09-05 17:12:55 -070017302 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017303}/*WDI_ProcessSetSTABcastKeyRsp*/
17304
17305/**
17306 @brief Process Remove STA Bcast Key Rsp function (called when a
17307 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017308
17309 @param pWDICtx: pointer to the WLAN DAL context
17310 pEventData: pointer to the event information structure
17311
Jeff Johnson295189b2012-06-20 16:38:30 -070017312 @see
17313 @return Result of the function call
17314*/
17315WDI_Status
17316WDI_ProcessRemoveStaBcastKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017317(
Jeff Johnson295189b2012-06-20 16:38:30 -070017318 WDI_ControlBlockType* pWDICtx,
17319 WDI_EventInfoType* pEventData
17320)
17321{
17322 WDI_Status wdiStatus;
17323 eHalStatus halStatus;
17324 WDI_RemoveSTAKeyRspCb wdiRemoveSTABcastKeyRspCb;
17325 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17326
17327 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017328 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017329 -------------------------------------------------------------------------*/
17330 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17331 ( NULL == pEventData->pEventData))
17332 {
17333 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017334 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017335 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017336 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017337 }
17338
17339 wdiRemoveSTABcastKeyRspCb = (WDI_RemoveSTAKeyRspCb)pWDICtx->pfncRspCB;
17340
17341 /*-------------------------------------------------------------------------
17342 Extract response and send it to UMAC
17343 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017344 wpalMemoryCopy( &halStatus,
17345 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017346 sizeof(halStatus));
17347
Jeff Johnsone7245742012-09-05 17:12:55 -070017348 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017349
17350 if ( eHAL_STATUS_SUCCESS != halStatus )
17351 {
17352 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17353 "Remove STA Key failed with status %s (%d)",
17354 WDI_getHALStatusMsgString(halStatus),
17355 halStatus);
17356 /* send the status to UMAC, don't return from here*/
17357 }
17358
17359 /*Notify UMAC*/
17360 wdiRemoveSTABcastKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17361
Jeff Johnsone7245742012-09-05 17:12:55 -070017362 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017363}/*WDI_ProcessRemoveStaBcastKeyRsp*/
17364
17365
17366/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070017367 QoS and BA Response Processing Functions
Jeff Johnson295189b2012-06-20 16:38:30 -070017368==========================================================================*/
17369
17370/**
17371 @brief Process Add TSpec Rsp function (called when a response
17372 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017373
17374 @param pWDICtx: pointer to the WLAN DAL context
17375 pEventData: pointer to the event information structure
17376
Jeff Johnson295189b2012-06-20 16:38:30 -070017377 @see
17378 @return Result of the function call
17379*/
17380WDI_Status
17381WDI_ProcessAddTSpecRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017382(
Jeff Johnson295189b2012-06-20 16:38:30 -070017383 WDI_ControlBlockType* pWDICtx,
17384 WDI_EventInfoType* pEventData
17385)
17386{
17387 WDI_Status wdiStatus;
17388 eHalStatus halStatus;
17389 WDI_AddTsRspCb wdiAddTsRspCb;
17390 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17391
17392 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017393 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017394 -------------------------------------------------------------------------*/
17395 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17396 ( NULL == pEventData->pEventData))
17397 {
17398 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017399 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017400 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017401 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017402 }
17403
17404 wdiAddTsRspCb = (WDI_AddTsRspCb)pWDICtx->pfncRspCB;
17405
17406 /*-------------------------------------------------------------------------
17407 Extract response and send it to UMAC
17408 -------------------------------------------------------------------------*/
17409 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070017410 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017411
17412 /*Notify UMAC*/
17413 wdiAddTsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17414
Jeff Johnsone7245742012-09-05 17:12:55 -070017415 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017416}/*WDI_ProcessAddTSpecRsp*/
17417
17418
Sunil Duttbd736ed2014-05-26 21:19:41 +053017419
17420#ifdef WLAN_FEATURE_LINK_LAYER_STATS
17421
17422WDI_Status
17423WDI_ProcessLLStatsSetRsp
17424(
17425 WDI_ControlBlockType* pWDICtx,
17426 WDI_EventInfoType* pEventData
17427)
17428{
17429 WDI_LLStatsSetRspCb wdiLLStatsSetRspCb;
17430
17431 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17432 "%s: Enter ", __func__);
17433 /*-------------------------------------------------------------------------
17434 Sanity check
17435 -------------------------------------------------------------------------*/
17436 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17437 ( NULL == pEventData->pEventData))
17438 {
17439 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
17440 "%s: Invalid parameters", __func__);
17441 WDI_ASSERT(0);
17442 return WDI_STATUS_E_FAILURE;
17443 }
17444
17445 wdiLLStatsSetRspCb = (WDI_LLStatsSetRspCb)pWDICtx->pfncRspCB;
17446
17447 wdiLLStatsSetRspCb((void *) pEventData->pEventData, pWDICtx->pRspCBUserData);
17448
17449 return WDI_STATUS_SUCCESS;
17450}
17451
17452WDI_Status
17453WDI_ProcessLLStatsGetRsp
17454(
17455 WDI_ControlBlockType* pWDICtx,
17456 WDI_EventInfoType* pEventData
17457)
17458{
17459 WDI_LLStatsGetRspCb wdiLLStatsGetRspCb;
17460
17461 /*-------------------------------------------------------------------------
17462 Sanity check
17463 -------------------------------------------------------------------------*/
17464 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17465 ( NULL == pEventData->pEventData))
17466 {
17467 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
17468 "%s: Invalid parameters", __func__);
17469 WDI_ASSERT(0);
17470 return WDI_STATUS_E_FAILURE;
17471 }
17472 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17473 "%s: Enter ", __func__);
17474
17475 wdiLLStatsGetRspCb = (WDI_LLStatsGetRspCb)pWDICtx->pfncRspCB;
17476
17477 wdiLLStatsGetRspCb((void *) pEventData->pEventData, pWDICtx->pRspCBUserData);
17478
17479 return WDI_STATUS_SUCCESS;
17480}
17481
17482WDI_Status
17483WDI_ProcessLLStatsClearRsp
17484(
17485 WDI_ControlBlockType* pWDICtx,
17486 WDI_EventInfoType* pEventData
17487)
17488{
17489 WDI_LLStatsClearRspCb wdiLLStatsClearRspCb;
17490
17491 /*-------------------------------------------------------------------------
17492 Sanity check
17493 -------------------------------------------------------------------------*/
17494 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17495 ( NULL == pEventData->pEventData))
17496 {
17497 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
17498 "%s: Invalid parameters", __func__);
17499 WDI_ASSERT(0);
17500 return WDI_STATUS_E_FAILURE;
17501 }
17502
17503 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17504 "%s: CLEAR RESPONSE CALL BACK", __func__);
17505 wdiLLStatsClearRspCb = (WDI_LLStatsClearRspCb)pWDICtx->pfncRspCB;
17506
17507 wdiLLStatsClearRspCb((void *) pEventData->pEventData, pWDICtx->pRspCBUserData);
17508
17509 return WDI_STATUS_SUCCESS;
17510}
17511#endif /* WLAN_FEATURE_LINK_LAYER_STATS */
17512
Jeff Johnson295189b2012-06-20 16:38:30 -070017513/**
17514 @brief Process Del TSpec Rsp function (called when a response
17515 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017516
17517 @param pWDICtx: pointer to the WLAN DAL context
17518 pEventData: pointer to the event information structure
17519
Jeff Johnson295189b2012-06-20 16:38:30 -070017520 @see
17521 @return Result of the function call
17522*/
17523WDI_Status
17524WDI_ProcessDelTSpecRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017525(
Jeff Johnson295189b2012-06-20 16:38:30 -070017526 WDI_ControlBlockType* pWDICtx,
17527 WDI_EventInfoType* pEventData
17528)
17529{
17530 WDI_Status wdiStatus;
17531 eHalStatus halStatus;
17532 WDI_DelTsRspCb wdiDelTsRspCb;
17533 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17534
17535 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017536 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017537 -------------------------------------------------------------------------*/
17538 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17539 ( NULL == pEventData->pEventData))
17540 {
17541 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017542 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017543 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017544 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017545 }
17546
17547 wdiDelTsRspCb = (WDI_DelTsRspCb)pWDICtx->pfncRspCB;
17548
17549 /*-------------------------------------------------------------------------
17550 Extract response and send it to UMAC
17551 -------------------------------------------------------------------------*/
17552 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070017553 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017554
17555 /*Notify UMAC*/
17556 wdiDelTsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17557
Jeff Johnsone7245742012-09-05 17:12:55 -070017558 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017559}/*WDI_ProcessDelTSpecRsp*/
17560
17561/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017562 @brief Process Update EDCA Parameters Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070017563 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017564
17565 @param pWDICtx: pointer to the WLAN DAL context
17566 pEventData: pointer to the event information structure
17567
Jeff Johnson295189b2012-06-20 16:38:30 -070017568 @see
17569 @return Result of the function call
17570*/
17571WDI_Status
17572WDI_ProcessUpdateEDCAParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017573(
Jeff Johnson295189b2012-06-20 16:38:30 -070017574 WDI_ControlBlockType* pWDICtx,
17575 WDI_EventInfoType* pEventData
17576)
17577{
17578 WDI_Status wdiStatus;
17579 eHalStatus halStatus;
17580 WDI_UpdateEDCAParamsRspCb wdiUpdateEDCAParamsRspCb;
17581 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17582
17583 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017584 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017585 -------------------------------------------------------------------------*/
17586 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17587 ( NULL == pEventData->pEventData))
17588 {
17589 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017590 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017591 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017592 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017593 }
17594
17595 wdiUpdateEDCAParamsRspCb = (WDI_UpdateEDCAParamsRspCb)pWDICtx->pfncRspCB;
17596
17597 /*-------------------------------------------------------------------------
17598 Extract response and send it to UMAC
17599 -------------------------------------------------------------------------*/
17600 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070017601 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017602
17603 /*Notify UMAC*/
17604 wdiUpdateEDCAParamsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17605
Jeff Johnsone7245742012-09-05 17:12:55 -070017606 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017607}/*WDI_ProcessUpdateEDCAParamsRsp*/
17608
17609
17610/**
17611 @brief Process Add BA Rsp function (called when a response
17612 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017613
17614 @param pWDICtx: pointer to the WLAN DAL context
17615 pEventData: pointer to the event information structure
17616
Jeff Johnson295189b2012-06-20 16:38:30 -070017617 @see
17618 @return Result of the function call
17619*/
17620WDI_Status
17621WDI_ProcessAddBASessionRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017622(
Jeff Johnson295189b2012-06-20 16:38:30 -070017623 WDI_ControlBlockType* pWDICtx,
17624 WDI_EventInfoType* pEventData
17625)
17626{
17627 WDI_AddBASessionRspCb wdiAddBASessionRspCb;
17628
17629 tAddBASessionRspParams halBASessionRsp;
17630 WDI_AddBASessionRspParamsType wdiBASessionRsp;
17631
Jeff Johnsone7245742012-09-05 17:12:55 -070017632
Jeff Johnson295189b2012-06-20 16:38:30 -070017633 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17634
17635 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017636 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017637 -------------------------------------------------------------------------*/
17638 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17639 ( NULL == pEventData->pEventData))
17640 {
17641 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017642 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017643 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017644 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017645 }
17646
17647 wdiAddBASessionRspCb = (WDI_AddBASessionRspCb)pWDICtx->pfncRspCB;
17648
17649 /*-------------------------------------------------------------------------
17650 Extract response and send it to UMAC
17651 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017652 wpalMemoryCopy( &halBASessionRsp,
17653 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017654 sizeof(halBASessionRsp));
17655
17656 wdiBASessionRsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halBASessionRsp.status);
17657
Jeff Johnson43971f52012-07-17 12:26:56 -070017658 if ( WDI_STATUS_SUCCESS == wdiBASessionRsp.wdiStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070017659 {
17660 wdiBASessionRsp.ucBaDialogToken = halBASessionRsp.baDialogToken;
17661 wdiBASessionRsp.ucBaTID = halBASessionRsp.baTID;
17662 wdiBASessionRsp.ucBaBufferSize = halBASessionRsp.baBufferSize;
17663 wdiBASessionRsp.usBaSessionID = halBASessionRsp.baSessionID;
17664 wdiBASessionRsp.ucWinSize = halBASessionRsp.winSize;
17665 wdiBASessionRsp.ucSTAIdx = halBASessionRsp.STAID;
17666 wdiBASessionRsp.usBaSSN = halBASessionRsp.SSN;
17667 }
17668
17669 /*Notify UMAC*/
17670 wdiAddBASessionRspCb( &wdiBASessionRsp, pWDICtx->pRspCBUserData);
17671
Jeff Johnsone7245742012-09-05 17:12:55 -070017672 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017673}/*WDI_ProcessAddSessionBARsp*/
17674
17675
17676/**
17677 @brief Process Del BA Rsp function (called when a response
17678 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017679
17680 @param pWDICtx: pointer to the WLAN DAL context
17681 pEventData: pointer to the event information structure
17682
Jeff Johnson295189b2012-06-20 16:38:30 -070017683 @see
17684 @return Result of the function call
17685*/
17686WDI_Status
17687WDI_ProcessDelBARsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017688(
Jeff Johnson295189b2012-06-20 16:38:30 -070017689 WDI_ControlBlockType* pWDICtx,
17690 WDI_EventInfoType* pEventData
17691)
17692{
17693 WDI_Status wdiStatus;
17694 eHalStatus halStatus;
17695 WDI_DelBARspCb wdiDelBARspCb;
17696 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17697
17698 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017699 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017700 -------------------------------------------------------------------------*/
17701 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17702 ( NULL == pEventData->pEventData))
17703 {
17704 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017705 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017706 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017707 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017708 }
17709
17710 wdiDelBARspCb = (WDI_DelBARspCb)pWDICtx->pfncRspCB;
17711
17712 /*-------------------------------------------------------------------------
17713 Extract response and send it to UMAC
17714 -------------------------------------------------------------------------*/
17715 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070017716 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017717
17718 if ( eHAL_STATUS_SUCCESS == halStatus )
17719 {
17720 /*! TO DO: I should notify the DAL Data Path that the BA was deleted*/
17721 }
17722
17723 /*Notify UMAC*/
17724 wdiDelBARspCb( wdiStatus, pWDICtx->pRspCBUserData);
17725
Jeff Johnsone7245742012-09-05 17:12:55 -070017726 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017727}/*WDI_ProcessDelBARsp*/
17728
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -080017729#ifdef FEATURE_WLAN_ESE
Jeff Johnson295189b2012-06-20 16:38:30 -070017730/**
17731 @brief Process TSM Stats Rsp function (called when a response
17732 is being received over the bus from HAL)
17733
17734 @param pWDICtx: pointer to the WLAN DAL context
17735 pEventData: pointer to the event information structure
17736
17737 @see
17738 @return Result of the function call
17739*/
17740WDI_Status
17741WDI_ProcessTsmStatsRsp
17742(
17743 WDI_ControlBlockType* pWDICtx,
17744 WDI_EventInfoType* pEventData
17745)
17746{
17747 WDI_TsmRspCb wdiTsmStatsRspCb;
17748 tTsmStatsRspMsg halTsmStatsRspMsg;
17749 WDI_TSMStatsRspParamsType wdiTsmStatsRspParams;
17750 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17751
17752 /*-------------------------------------------------------------------------
17753 Sanity check
17754 -------------------------------------------------------------------------*/
17755 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17756 ( NULL == pEventData->pEventData))
17757 {
17758 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017759 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017760 WDI_ASSERT(0);
17761 return WDI_STATUS_E_FAILURE;
17762 }
17763
17764 wdiTsmStatsRspCb = (WDI_TsmRspCb)pWDICtx->pfncRspCB;
17765
17766 /*-------------------------------------------------------------------------
17767 Unpack HAL Response Message - the header was already extracted by the
17768 main Response Handling procedure
17769 -------------------------------------------------------------------------*/
17770 wpalMemoryCopy( &halTsmStatsRspMsg.tsmStatsRspParams,
17771 pEventData->pEventData,
17772 sizeof(halTsmStatsRspMsg.tsmStatsRspParams));
17773
17774 wdiTsmStatsRspParams.UplinkPktQueueDly = halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktQueueDly;
17775 wpalMemoryCopy( wdiTsmStatsRspParams.UplinkPktQueueDlyHist,
17776 halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktQueueDlyHist,
17777 sizeof(halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktQueueDlyHist)/
17778 sizeof(halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktQueueDlyHist[0]));
17779 wdiTsmStatsRspParams.UplinkPktTxDly = halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktTxDly;
17780 wdiTsmStatsRspParams.UplinkPktLoss = halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktLoss;
17781 wdiTsmStatsRspParams.UplinkPktCount = halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktCount;
17782 wdiTsmStatsRspParams.RoamingCount = halTsmStatsRspMsg.tsmStatsRspParams.RoamingCount;
17783 wdiTsmStatsRspParams.RoamingDly = halTsmStatsRspMsg.tsmStatsRspParams.RoamingDly;
17784 wdiTsmStatsRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(
17785 halTsmStatsRspMsg.tsmStatsRspParams.status);
17786
17787 /*Notify UMAC*/
17788 wdiTsmStatsRspCb( &wdiTsmStatsRspParams, pWDICtx->pRspCBUserData);
17789
17790 return WDI_STATUS_SUCCESS;
17791}/*WDI_ProcessTsmStatsRsp*/
17792
17793#endif
17794
17795
17796
17797/**
17798 @brief Process Flush AC Rsp function (called when a response
17799 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017800
17801 @param pWDICtx: pointer to the WLAN DAL context
17802 pEventData: pointer to the event information structure
17803
Jeff Johnson295189b2012-06-20 16:38:30 -070017804 @see
17805 @return Result of the function call
17806*/
17807WDI_Status
17808WDI_ProcessFlushAcRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017809(
Jeff Johnson295189b2012-06-20 16:38:30 -070017810 WDI_ControlBlockType* pWDICtx,
17811 WDI_EventInfoType* pEventData
17812)
17813{
17814 WDI_Status wdiStatus;
17815 eHalStatus halStatus;
17816 WDI_FlushAcRspCb wdiFlushAcRspCb;
17817 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17818
17819 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017820 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017821 -------------------------------------------------------------------------*/
17822 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17823 ( NULL == pEventData->pEventData))
17824 {
17825 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017826 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017827 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017828 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017829 }
17830
17831 wdiFlushAcRspCb = (WDI_FlushAcRspCb)pWDICtx->pfncRspCB;
17832
17833 /*-------------------------------------------------------------------------
17834 Extract response and send it to UMAC
17835 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017836 wpalMemoryCopy( &halStatus,
17837 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017838 sizeof(halStatus));
17839
Jeff Johnsone7245742012-09-05 17:12:55 -070017840 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017841
17842 /*Notify UMAC*/
17843 wdiFlushAcRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17844
Jeff Johnsone7245742012-09-05 17:12:55 -070017845 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017846}/*WDI_ProcessFlushAcRsp*/
17847
17848/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017849 @brief Process BT AMP event Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070017850 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017851
17852 @param pWDICtx: pointer to the WLAN DAL context
17853 pEventData: pointer to the event information structure
17854
Jeff Johnson295189b2012-06-20 16:38:30 -070017855 @see
17856 @return Result of the function call
17857*/
17858WDI_Status
17859WDI_ProcessBtAmpEventRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017860(
Jeff Johnson295189b2012-06-20 16:38:30 -070017861 WDI_ControlBlockType* pWDICtx,
17862 WDI_EventInfoType* pEventData
17863)
17864{
17865 WDI_Status wdiStatus;
17866 eHalStatus halStatus;
17867 WDI_BtAmpEventRspCb wdiBtAmpEventRspCb;
17868 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17869
17870 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017871 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017872 -------------------------------------------------------------------------*/
17873 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17874 ( NULL == pEventData->pEventData))
17875 {
17876 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017877 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017878 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017879 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017880 }
17881
17882 wdiBtAmpEventRspCb = (WDI_BtAmpEventRspCb)pWDICtx->pfncRspCB;
17883
17884 /*-------------------------------------------------------------------------
17885 Extract response and send it to UMAC
17886 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017887 wpalMemoryCopy( &halStatus,
17888 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017889 sizeof(halStatus));
17890
Jeff Johnsone7245742012-09-05 17:12:55 -070017891 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017892
17893 /*Notify UMAC*/
17894 wdiBtAmpEventRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17895
Jeff Johnsone7245742012-09-05 17:12:55 -070017896 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017897}/*WDI_ProcessBtAmpEventRsp*/
17898
17899
17900/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017901 @brief Process ADD STA SELF Rsp function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070017902 when a response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017903
17904 @param pWDICtx: pointer to the WLAN DAL context
17905 pEventData: pointer to the event information structure
17906
Jeff Johnson295189b2012-06-20 16:38:30 -070017907 @see
17908 @return Result of the function call
17909*/
17910WDI_Status
17911WDI_ProcessAddSTASelfRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017912(
Jeff Johnson295189b2012-06-20 16:38:30 -070017913 WDI_ControlBlockType* pWDICtx,
17914 WDI_EventInfoType* pEventData
17915)
17916{
17917 WDI_AddSTASelfRspParamsType wdiAddSTASelfParams;
17918 WDI_AddSTASelfParamsRspCb wdiAddSTASelfReqParamsRspCb;
17919 tAddStaSelfRspMsg halAddStaSelfRsp;
17920 WDI_AddStaParams wdiAddSTAParam = {0};
17921 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17922
17923 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017924 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017925 -------------------------------------------------------------------------*/
17926 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17927 ( NULL == pEventData->pEventData))
17928 {
17929 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017930 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017931 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017932 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017933 }
17934
Jeff Johnsone7245742012-09-05 17:12:55 -070017935 wdiAddSTASelfReqParamsRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070017936 (WDI_AddSTASelfParamsRspCb)pWDICtx->pfncRspCB;
17937
17938 /*-------------------------------------------------------------------------
17939 Extract response and send it to UMAC
17940 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017941 wpalMemoryCopy( &halAddStaSelfRsp.addStaSelfRspParams,
17942 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017943 sizeof(halAddStaSelfRsp.addStaSelfRspParams));
17944
17945
Jeff Johnsone7245742012-09-05 17:12:55 -070017946 wdiAddSTASelfParams.wdiStatus =
17947 WDI_HAL_2_WDI_STATUS(halAddStaSelfRsp.addStaSelfRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070017948
Jeff Johnsone7245742012-09-05 17:12:55 -070017949 wdiAddSTASelfParams.ucSTASelfIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070017950 halAddStaSelfRsp.addStaSelfRspParams.selfStaIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070017951 wdiAddSTASelfParams.dpuIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070017952 halAddStaSelfRsp.addStaSelfRspParams.dpuIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070017953 wdiAddSTASelfParams.dpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070017954 halAddStaSelfRsp.addStaSelfRspParams.dpuSignature;
17955
17956 wpalMemoryCopy(wdiAddSTASelfParams.macSelfSta,
17957 pWDICtx->wdiCacheAddSTASelfReq.wdiAddSTASelfInfo.selfMacAddr,
17958 WDI_MAC_ADDR_LEN);
17959
17960
17961#ifdef HAL_SELF_STA_PER_BSS
17962
17963 /* At this point add the self-STA */
17964
17965 /*! TO DO: wdiAddSTAParam.ucWmmEnabled */
17966 /*! TO DO: wdiAddSTAParam.ucHTCapable */
17967 /*! TO DO: wdiAddSTAParam.ucRmfEnabled */
17968
17969 //all DPU indices are the same for self STA
17970
17971 /*DPU Information*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017972 wdiAddSTAParam.dpuIndex = wdiAddSTASelfParams.dpuIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070017973 wdiAddSTAParam.dpuSig = wdiAddSTASelfParams.dpuSignature;
17974 wdiAddSTAParam.bcastDpuSignature = wdiAddSTASelfParams.dpuSignature;
17975 wdiAddSTAParam.bcastMgmtDpuSignature = wdiAddSTASelfParams.dpuSignature;
17976 wdiAddSTAParam.bcastDpuIndex = wdiAddSTASelfParams.dpuIdx;
17977 wdiAddSTAParam.bcastMgmtDpuIndex = wdiAddSTASelfParams.dpuIdx;
17978
17979 wpalMemoryCopy(wdiAddSTAParam.staMacAddr, wdiAddSTASelfParams.macSelfSta,
17980 WDI_MAC_ADDR_LEN);
17981
17982 wdiAddSTAParam.ucStaType = WDI_STA_ENTRY_SELF; /* 0 - self */
17983 wdiAddSTAParam.ucSTAIdx = wdiAddSTASelfParams.ucSTASelfIdx;
17984
Jeff Johnsone7245742012-09-05 17:12:55 -070017985 if(halAddStaSelfRsp.addStaSelfRspParams.status
Jeff Johnson295189b2012-06-20 16:38:30 -070017986 != eHAL_STATUS_ADD_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO)
17987 {
17988 (void)WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
17989 }
17990#endif
17991
17992 /*Notify UMAC*/
17993 wdiAddSTASelfReqParamsRspCb( &wdiAddSTASelfParams, pWDICtx->pRspCBUserData);
17994
Jeff Johnsone7245742012-09-05 17:12:55 -070017995 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017996}/*WDI_ProcessAddSTASelfRsp*/
17997
17998
17999
18000/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018001 @brief WDI_ProcessDelSTASelfRsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070018002 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018003
18004 @param pWDICtx: pointer to the WLAN DAL context
18005 pEventData: pointer to the event information structure
18006
Jeff Johnson295189b2012-06-20 16:38:30 -070018007 @see
18008 @return Result of the function call
18009*/
18010WDI_Status
18011WDI_ProcessDelSTASelfRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018012(
Jeff Johnson295189b2012-06-20 16:38:30 -070018013 WDI_ControlBlockType* pWDICtx,
18014 WDI_EventInfoType* pEventData
18015)
18016{
18017 WDI_DelSTASelfRspParamsType wdiDelStaSelfRspParams;
18018 WDI_DelSTASelfRspCb wdiDelStaSelfRspCb;
18019 tDelStaSelfRspParams delStaSelfRspParams;
18020 wpt_uint8 ucStaIdx;
18021
18022 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18023
18024 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018025 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018026 -------------------------------------------------------------------------*/
18027 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18028 ( NULL == pEventData->pEventData))
18029 {
18030 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018031 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018032 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018033 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018034 }
18035
18036 wdiDelStaSelfRspCb = (WDI_DelSTASelfRspCb)pWDICtx->pfncRspCB;
18037
18038 /*-------------------------------------------------------------------------
18039 Extract response and send it to UMAC
18040 -------------------------------------------------------------------------*/
18041
Jeff Johnsone7245742012-09-05 17:12:55 -070018042 wpalMemoryCopy( &delStaSelfRspParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070018043 (wpt_uint8*)pEventData->pEventData,
18044 sizeof(tDelStaSelfRspParams));
18045
Jeff Johnsone7245742012-09-05 17:12:55 -070018046 wdiDelStaSelfRspParams.wdiStatus =
18047 WDI_HAL_2_WDI_STATUS(delStaSelfRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070018048
Jeff Johnsone7245742012-09-05 17:12:55 -070018049 /* delStaSelfRspParams.status is not
Jeff Johnson295189b2012-06-20 16:38:30 -070018050 eHAL_STATUS_DEL_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO*/
18051 if( eHAL_STATUS_SUCCESS == delStaSelfRspParams.status )
18052 {
18053 WDI_Status wdiStatus;
Jeff Johnsone7245742012-09-05 17:12:55 -070018054 wdiStatus = WDI_STATableFindStaidByAddr(pWDICtx,
Jeff Johnson295189b2012-06-20 16:38:30 -070018055 delStaSelfRspParams.selfMacAddr,
18056 &ucStaIdx);
18057 if(WDI_STATUS_E_FAILURE == wdiStatus)
18058 {
18059 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018060 "%s: Unable to extract the STA Idx ", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018061 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018062 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018063 }
18064 WDI_STATableDelSta(pWDICtx, ucStaIdx);
18065 }
18066
18067 /*Notify UMAC*/
18068 wdiDelStaSelfRspCb(&wdiDelStaSelfRspParams, (void*) pWDICtx->pRspCBUserData);
18069
18070 return WDI_STATUS_SUCCESS;
18071}
18072
Jeff Johnsone7245742012-09-05 17:12:55 -070018073#ifdef FEATURE_OEM_DATA_SUPPORT
18074/**
18075 @brief Start Oem Data Rsp function (called when a
18076 response is being received over the bus from HAL)
Jeff Johnson295189b2012-06-20 16:38:30 -070018077
Jeff Johnsone7245742012-09-05 17:12:55 -070018078 @param pWDICtx: pointer to the WLAN DAL context
18079 pEventData: pointer to the event information structure
18080
18081 @see
18082 @return Result of the function call
18083*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018084
18085WDI_Status
18086WDI_ProcessStartOemDataRsp
18087(
18088 WDI_ControlBlockType* pWDICtx,
18089 WDI_EventInfoType* pEventData
18090)
18091{
18092 WDI_oemDataRspCb wdiOemDataRspCb;
18093 WDI_oemDataRspParamsType* wdiOemDataRspParams;
18094 tStartOemDataRspParams* halStartOemDataRspParams;
18095
18096 /*-------------------------------------------------------------------------
18097 Sanity check
18098 -------------------------------------------------------------------------*/
18099 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18100 ( NULL == pEventData->pEventData))
18101 {
18102 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018103 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070018104 WDI_ASSERT(0);
18105 return WDI_STATUS_E_FAILURE;
18106 }
18107
18108 wdiOemDataRspCb = (WDI_oemDataRspCb)pWDICtx->pfncRspCB;
18109
18110 /*-------------------------------------------------------------------------
18111 Extract response and send it to UMAC
18112 -------------------------------------------------------------------------*/
18113 halStartOemDataRspParams = (tStartOemDataRspParams *)pEventData->pEventData;
18114
18115
18116 //It is the responsibility of the application code to check for failure
18117 //conditions!
18118
18119 //Allocate memory for WDI OEM DATA RSP structure
18120 wdiOemDataRspParams = wpalMemoryAllocate(sizeof(WDI_oemDataRspParamsType)) ;
18121
18122 if(NULL == wdiOemDataRspParams)
18123 {
18124 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080018125 "Failed to allocate memory in OEM DATA Response %p %p %p ",
Jeff Johnsone7245742012-09-05 17:12:55 -070018126 pWDICtx, pEventData, pEventData->pEventData);
18127 WDI_ASSERT(0);
18128 return WDI_STATUS_E_FAILURE;
18129 }
18130
18131 /* Populate WDI structure members */
18132 wpalMemoryCopy(wdiOemDataRspParams->oemDataRsp, halStartOemDataRspParams->oemDataRsp, OEM_DATA_RSP_SIZE);
18133
18134 /*Notify UMAC*/
18135 wdiOemDataRspCb(wdiOemDataRspParams, pWDICtx->pRspCBUserData);
18136
18137 //Free memory allocated for WDI OEM_DATA MEAS RSP structure
18138 wpalMemoryFree(wdiOemDataRspParams);
18139
18140 return WDI_STATUS_SUCCESS;
18141}/*WDI_PrcoessStartOemDataRsp*/
18142#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070018143
18144/*===========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070018145 Miscellaneous Control Response Processing API
Jeff Johnson295189b2012-06-20 16:38:30 -070018146===========================================================================*/
18147
18148/**
18149 @brief Process Channel Switch Rsp function (called when a response
18150 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018151
18152 @param pWDICtx: pointer to the WLAN DAL context
18153 pEventData: pointer to the event information structure
18154
Jeff Johnson295189b2012-06-20 16:38:30 -070018155 @see
18156 @return Result of the function call
18157*/
18158WDI_Status
18159WDI_ProcessChannelSwitchRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018160(
Jeff Johnson295189b2012-06-20 16:38:30 -070018161 WDI_ControlBlockType* pWDICtx,
18162 WDI_EventInfoType* pEventData
18163)
18164{
18165 WDI_SwitchCHRspParamsType wdiSwitchChRsp;
18166 WDI_SwitchChRspCb wdiChSwitchRspCb;
18167 tSwitchChannelRspParams halSwitchChannelRsp;
18168 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18169
18170 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018171 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018172 -------------------------------------------------------------------------*/
18173 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18174 ( NULL == pEventData->pEventData))
18175 {
18176 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018177 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018178 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018179 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018180 }
18181
18182 wdiChSwitchRspCb = (WDI_SwitchChRspCb)pWDICtx->pfncRspCB;
18183
18184 /*-------------------------------------------------------------------------
18185 Extract response and send it to UMAC
18186 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018187 wpalMemoryCopy( &halSwitchChannelRsp,
Jeff Johnson295189b2012-06-20 16:38:30 -070018188 (wpt_uint8*)pEventData->pEventData,
18189 sizeof(halSwitchChannelRsp));
18190
Jeff Johnsone7245742012-09-05 17:12:55 -070018191 wdiSwitchChRsp.wdiStatus =
18192 WDI_HAL_2_WDI_STATUS(halSwitchChannelRsp.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070018193 wdiSwitchChRsp.ucChannel = halSwitchChannelRsp.channelNumber;
18194
18195#ifdef WLAN_FEATURE_VOWIFI
Jeff Johnsone7245742012-09-05 17:12:55 -070018196 wdiSwitchChRsp.ucTxMgmtPower = halSwitchChannelRsp.txMgmtPower;
Jeff Johnson295189b2012-06-20 16:38:30 -070018197#endif
18198
18199 /*Notify UMAC*/
18200 wdiChSwitchRspCb( &wdiSwitchChRsp, pWDICtx->pRspCBUserData);
18201
Jeff Johnsone7245742012-09-05 17:12:55 -070018202 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018203}/*WDI_ProcessChannelSwitchRsp*/
18204
Kalikinkar dhara1e83b772014-02-06 12:59:22 -080018205/**
18206 @brief Process Channel Switch Rsp function (called when a response
18207 is being received over the bus from HAL against
18208 WDI_ProcessChannelSwitchReq_V1)
18209
18210 @param pWDICtx: pointer to the WLAN DAL context
18211 pEventData: pointer to the event information structure
18212
18213 @see
18214 @return Result of the function call
18215*/
18216
18217WDI_Status
18218WDI_ProcessChannelSwitchRsp_V1
18219(
18220 WDI_ControlBlockType* pWDICtx,
18221 WDI_EventInfoType* pEventData
18222)
18223{
18224 WDI_SwitchChRspParamsType_V1 wdiSwitchChRsp;
18225 WDI_SwitchChRspCb_V1 wdiChSwitchRspCb;
18226 tSwitchChannelRspParams_V1 halSwitchChannelRsp;
18227 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18228
18229 /*-------------------------------------------------------------------------
18230 Sanity check
18231 -------------------------------------------------------------------------*/
18232 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18233 ( NULL == pEventData->pEventData))
18234 {
18235 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
18236 "%s: Invalid parameters", __func__);
18237 WDI_ASSERT(0);
18238 return WDI_STATUS_E_FAILURE;
18239 }
18240
18241 wdiChSwitchRspCb = (WDI_SwitchChRspCb_V1)pWDICtx->pfncRspCB;
18242
18243 /*-------------------------------------------------------------------------
18244 Extract response and send it to UMAC
18245 -------------------------------------------------------------------------*/
18246 wpalMemoryCopy( &halSwitchChannelRsp,
18247 (wpt_uint8*)pEventData->pEventData,
18248 sizeof(halSwitchChannelRsp));
18249
18250 wdiSwitchChRsp.wdiStatus =
18251 WDI_HAL_2_WDI_STATUS(halSwitchChannelRsp.status);
18252 wdiSwitchChRsp.ucChannel = halSwitchChannelRsp.channelNumber;
18253
18254#ifdef WLAN_FEATURE_VOWIFI
18255 wdiSwitchChRsp.ucTxMgmtPower = halSwitchChannelRsp.txMgmtPower;
18256#endif
18257
18258 wdiSwitchChRsp.channelSwitchSrc = halSwitchChannelRsp.channelSwitchSrc;
18259 if (( NULL == wdiChSwitchRspCb ) )
18260 {
18261 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
18262 "%s: ### Call back function is null", __func__);
18263 WDI_ASSERT(0);
18264 return WDI_STATUS_E_FAILURE;
18265 }
18266 /*Notify UMAC*/
18267 wdiChSwitchRspCb( &wdiSwitchChRsp, pWDICtx->pRspCBUserData);
18268
18269 return WDI_STATUS_SUCCESS;
18270}/*WDI_ProcessChannelSwitchRsp_V1*/
Jeff Johnson295189b2012-06-20 16:38:30 -070018271
18272/**
18273 @brief Process Config STA Rsp function (called when a response
18274 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018275
18276 @param pWDICtx: pointer to the WLAN DAL context
18277 pEventData: pointer to the event information structure
18278
Jeff Johnson295189b2012-06-20 16:38:30 -070018279 @see
18280 @return Result of the function call
18281*/
18282WDI_Status
18283WDI_ProcessConfigStaRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018284(
Jeff Johnson295189b2012-06-20 16:38:30 -070018285 WDI_ControlBlockType* pWDICtx,
18286 WDI_EventInfoType* pEventData
18287)
18288{
18289 WDI_ConfigSTARspParamsType wdiCfgSTAParams;
18290 WDI_ConfigSTARspCb wdiConfigSTARspCb;
18291 WDI_AddStaParams wdiAddSTAParam;
18292
18293 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070018294 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070018295
Jeff Johnsone7245742012-09-05 17:12:55 -070018296 tConfigStaRspMsg halConfigStaRsp;
Jeff Johnson295189b2012-06-20 16:38:30 -070018297 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18298
18299 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018300 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018301 -------------------------------------------------------------------------*/
18302 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18303 ( NULL == pEventData->pEventData))
18304 {
18305 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018306 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018307 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018308 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018309 }
18310
18311 wdiConfigSTARspCb = (WDI_ConfigSTARspCb)pWDICtx->pfncRspCB;
18312
18313 /*-------------------------------------------------------------------------
18314 Extract response and send it to UMAC
18315 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018316 wpalMemoryCopy( &halConfigStaRsp.configStaRspParams,
18317 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070018318 sizeof(halConfigStaRsp.configStaRspParams));
18319
18320
18321 wdiCfgSTAParams.ucSTAIdx = halConfigStaRsp.configStaRspParams.staIdx;
18322 wdiCfgSTAParams.ucBssIdx = halConfigStaRsp.configStaRspParams.bssIdx;
18323 wdiCfgSTAParams.ucUcastSig = halConfigStaRsp.configStaRspParams.ucUcastSig;
18324 wdiCfgSTAParams.ucBcastSig = halConfigStaRsp.configStaRspParams.ucBcastSig;
18325 wdiCfgSTAParams.ucMgmtSig = halConfigStaRsp.configStaRspParams.ucMgmtSig;
18326
18327 /* MAC Address of STA - take from cache as it does not come back in the
18328 response*/
18329 wpalMemoryCopy( wdiCfgSTAParams.macSTA,
Jeff Johnsone7245742012-09-05 17:12:55 -070018330 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.macSTA,
Jeff Johnson295189b2012-06-20 16:38:30 -070018331 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070018332
18333 wdiCfgSTAParams.wdiStatus =
18334 WDI_HAL_2_WDI_STATUS(halConfigStaRsp.configStaRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070018335
18336 wdiCfgSTAParams.ucDpuIndex = halConfigStaRsp.configStaRspParams.dpuIndex;
18337 wdiCfgSTAParams.ucBcastDpuIndex = halConfigStaRsp.configStaRspParams.bcastDpuIndex;
18338 wdiCfgSTAParams.ucBcastMgmtDpuIdx = halConfigStaRsp.configStaRspParams.bcastMgmtDpuIdx;
18339
18340 if ( WDI_STATUS_SUCCESS == wdiCfgSTAParams.wdiStatus )
18341 {
18342 if ( WDI_ADD_STA == pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.wdiAction )
18343 {
18344 /* ADD STA to table */
Jeff Johnsone7245742012-09-05 17:12:55 -070018345 wdiAddSTAParam.ucSTAIdx = halConfigStaRsp.configStaRspParams.staIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070018346 wdiAddSTAParam.dpuSig = halConfigStaRsp.configStaRspParams.ucUcastSig;
18347 wdiAddSTAParam.dpuIndex = halConfigStaRsp.configStaRspParams.dpuIndex;
Jeff Johnsone7245742012-09-05 17:12:55 -070018348
Jeff Johnson295189b2012-06-20 16:38:30 -070018349 /*This info can be retrieved from the cached initial request*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018350 wdiAddSTAParam.ucWmmEnabled =
Jeff Johnson295189b2012-06-20 16:38:30 -070018351 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.ucWMMEnabled;
Jeff Johnsone7245742012-09-05 17:12:55 -070018352 wdiAddSTAParam.ucHTCapable =
18353 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.ucHTCapable;
18354 wdiAddSTAParam.ucStaType =
18355 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.wdiSTAType;
Chet Lanctot4b9abd72013-06-27 11:14:56 -070018356 wdiAddSTAParam.ucRmfEnabled =
18357 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.ucRMFEnabled;
Jeff Johnsone7245742012-09-05 17:12:55 -070018358
Jeff Johnson295189b2012-06-20 16:38:30 -070018359 /* MAC Address of STA */
Jeff Johnsone7245742012-09-05 17:12:55 -070018360 wpalMemoryCopy(wdiAddSTAParam.staMacAddr,
18361 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.macSTA,
Jeff Johnson295189b2012-06-20 16:38:30 -070018362 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070018363
18364 wpalMemoryCopy(wdiAddSTAParam.macBSSID,
18365 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.macBSSID ,
18366 WDI_MAC_ADDR_LEN);
18367
18368 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
18369 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.macBSSID,
18370 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070018371
18372 if ( NULL == pBSSSes )
18373 {
18374 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
18375 "Association for this BSSID is not in place");
Jeff Johnsone7245742012-09-05 17:12:55 -070018376
Jeff Johnson295189b2012-06-20 16:38:30 -070018377 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018378 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070018379 }
18380
18381 /*Add BSS specific parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018382 wdiAddSTAParam.bcastMgmtDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070018383 halConfigStaRsp.configStaRspParams.bcastMgmtDpuIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070018384 wdiAddSTAParam.bcastMgmtDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070018385 halConfigStaRsp.configStaRspParams.ucMgmtSig;
Jeff Johnsone7245742012-09-05 17:12:55 -070018386 wdiAddSTAParam.bcastDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070018387 halConfigStaRsp.configStaRspParams.bcastDpuIndex;
Jeff Johnsone7245742012-09-05 17:12:55 -070018388 wdiAddSTAParam.bcastDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070018389 halConfigStaRsp.configStaRspParams.ucBcastSig;
Jeff Johnson295189b2012-06-20 16:38:30 -070018390 wdiAddSTAParam.ucBSSIdx = ucCurrentBSSSesIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070018391
Jeff Johnson295189b2012-06-20 16:38:30 -070018392 WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
18393 }
18394 if( WDI_UPDATE_STA == pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.wdiAction )
18395 {
18396 WDI_StaStruct* pSTATable = (WDI_StaStruct*) pWDICtx->staTable;
18397
Jeff Johnsone7245742012-09-05 17:12:55 -070018398 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bcastDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070018399 halConfigStaRsp.configStaRspParams.bcastDpuIndex;
Jeff Johnsone7245742012-09-05 17:12:55 -070018400 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bcastDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070018401 halConfigStaRsp.configStaRspParams.ucBcastSig;
Jeff Johnsone7245742012-09-05 17:12:55 -070018402 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bcastMgmtDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070018403 halConfigStaRsp.configStaRspParams.bcastMgmtDpuIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070018404 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bcastMgmtDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070018405 halConfigStaRsp.configStaRspParams.ucMgmtSig;
Jeff Johnsone7245742012-09-05 17:12:55 -070018406 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bssIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070018407 halConfigStaRsp.configStaRspParams.bssIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070018408 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].dpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070018409 halConfigStaRsp.configStaRspParams.dpuIndex;
Jeff Johnsone7245742012-09-05 17:12:55 -070018410 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].dpuSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070018411 halConfigStaRsp.configStaRspParams.ucUcastSig;
18412 }
18413 }
18414
18415 /*Notify UMAC*/
18416 wdiConfigSTARspCb( &wdiCfgSTAParams, pWDICtx->pRspCBUserData);
18417
Jeff Johnsone7245742012-09-05 17:12:55 -070018418 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018419}/*WDI_ProcessConfigStaRsp*/
18420
18421
18422/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018423 @brief Process Set Link State Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070018424 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018425
18426 @param pWDICtx: pointer to the WLAN DAL context
18427 pEventData: pointer to the event information structure
18428
Jeff Johnson295189b2012-06-20 16:38:30 -070018429 @see
18430 @return Result of the function call
18431*/
18432WDI_Status
18433WDI_ProcessSetLinkStateRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018434(
Jeff Johnson295189b2012-06-20 16:38:30 -070018435 WDI_ControlBlockType* pWDICtx,
18436 WDI_EventInfoType* pEventData
18437)
18438{
18439 WDI_Status wdiStatus;
18440 eHalStatus halStatus;
18441 WDI_SetLinkStateRspCb wdiSetLinkStateRspCb;
18442
18443 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070018444 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070018445 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18446
18447 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018448 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018449 -------------------------------------------------------------------------*/
18450 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18451 ( NULL == pEventData->pEventData))
18452 {
18453 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018454 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018455 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018456 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018457 }
18458
18459 wdiSetLinkStateRspCb = (WDI_SetLinkStateRspCb)pWDICtx->pfncRspCB;
18460
18461 wpalMutexAcquire(&pWDICtx->wptMutex);
18462
18463 /*If the link is being transitioned to idle - the BSS is to be deleted
18464 - this type of ending a session is possible when UMAC has failed an
18465 - association session during Join*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018466 if ( WDI_LINK_IDLE_STATE ==
Jeff Johnson295189b2012-06-20 16:38:30 -070018467 pWDICtx->wdiCacheSetLinkStReq.wdiLinkInfo.wdiLinkState )
18468 {
18469 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018470 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070018471 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018472 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
18473 pWDICtx->wdiCacheSetLinkStReq.wdiLinkInfo.macBSSID,
18474 &pBSSSes);
18475
Jeff Johnson295189b2012-06-20 16:38:30 -070018476 /*-----------------------------------------------------------------------
18477 Del BSS response can only be received for an existing assoc that
Jeff Johnsone7245742012-09-05 17:12:55 -070018478 is current and in progress
Jeff Johnson295189b2012-06-20 16:38:30 -070018479 -----------------------------------------------------------------------*/
18480 if ( NULL == pBSSSes )
18481 {
18482 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
18483 "Set link response received outside association session");
18484 }
18485 else
18486 {
18487 /* For BT AMP roles no need to delete the sessions if assoc fails. There
18488 will be del BSS coming after this to stop the beaconing & cleaning up the
18489 sessions*/
18490 if(( WDI_BTAMP_STA_MODE != pBSSSes->wdiBssType )&&
18491 ( WDI_BTAMP_AP_MODE != pBSSSes->wdiBssType ))
18492 {
18493 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018494 The current session will be deleted
Jeff Johnson295189b2012-06-20 16:38:30 -070018495 -----------------------------------------------------------------------*/
18496 WDI_DeleteSession(pWDICtx, pBSSSes);
18497
18498 /*-----------------------------------------------------------------------
18499 Check to see if this association is in progress - if so disable the
18500 flag as this has ended
18501 -----------------------------------------------------------------------*/
18502 if ( ucCurrentBSSSesIdx == pWDICtx->ucCurrentBSSSesIdx )
Jeff Johnsone7245742012-09-05 17:12:55 -070018503 {
Jeff Johnson295189b2012-06-20 16:38:30 -070018504 /*Association no longer in progress */
18505 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
18506 /*Association no longer in progress - prepare pending assoc for processing*/
18507 WDI_DequeueAssocRequest(pWDICtx);
18508 }
18509 }
18510 }
18511 }
18512 /* If the link state has been set to POST ASSOC, reset the "association in
18513 progress" flag */
Jeff Johnsone7245742012-09-05 17:12:55 -070018514 if ( WDI_LINK_POSTASSOC_STATE ==
Jeff Johnson295189b2012-06-20 16:38:30 -070018515 pWDICtx->wdiCacheSetLinkStReq.wdiLinkInfo.wdiLinkState )
18516 {
18517 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
18518 WDI_DequeueAssocRequest(pWDICtx);
18519 }
18520
18521 wpalMutexRelease(&pWDICtx->wptMutex);
18522
18523 /*-------------------------------------------------------------------------
18524 Extract response and send it to UMAC
18525 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018526 wpalMemoryCopy( &halStatus,
18527 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070018528 sizeof(halStatus));
18529
Jeff Johnsone7245742012-09-05 17:12:55 -070018530 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018531
18532 /*Notify UMAC*/
18533 wdiSetLinkStateRspCb( wdiStatus, pWDICtx->pRspCBUserData);
18534
Jeff Johnsone7245742012-09-05 17:12:55 -070018535 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018536}/*WDI_ProcessSetLinkStateRsp*/
18537
18538/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018539 @brief Process Get Stats Rsp function (called when a response is
Jeff Johnson295189b2012-06-20 16:38:30 -070018540 being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018541
18542 @param pWDICtx: pointer to the WLAN DAL context
18543 pEventData: pointer to the event information structure
18544
Jeff Johnson295189b2012-06-20 16:38:30 -070018545 @see
18546 @return Result of the function call
18547*/
18548WDI_Status
18549WDI_ProcessGetStatsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018550(
Jeff Johnson295189b2012-06-20 16:38:30 -070018551 WDI_ControlBlockType* pWDICtx,
18552 WDI_EventInfoType* pEventData
18553)
18554{
18555 WDI_GetStatsRspParamsType *wdiGetStatsRsp;
18556 WDI_GetStatsRspCb wdiGetStatsRspCb;
18557 tHalStatsRspParams* pHalStatsRspParams;
Jeff Johnsone7245742012-09-05 17:12:55 -070018558
Jeff Johnson295189b2012-06-20 16:38:30 -070018559 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18560
18561 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018562 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018563 -------------------------------------------------------------------------*/
18564 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18565 ( NULL == pEventData->pEventData))
18566 {
18567 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018568 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018569 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018570 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018571 }
18572
18573 /*-------------------------------------------------------------------------
18574 Extract response and send it to UMAC
18575 -------------------------------------------------------------------------*/
18576 pHalStatsRspParams = (tHalStatsRspParams *)pEventData->pEventData;
18577
18578 /*allocate the stats response buffer */
18579 wdiGetStatsRsp = (WDI_GetStatsRspParamsType *)wpalMemoryAllocate(
18580 pHalStatsRspParams->msgLen - sizeof(tHalStatsRspParams)
18581 + sizeof(WDI_GetStatsRspParamsType));
18582
18583 if(NULL == wdiGetStatsRsp)
18584 {
18585 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080018586 "Failed to allocate memory in Get Stats Response %p %p %p ",
Jeff Johnson295189b2012-06-20 16:38:30 -070018587 pWDICtx, pEventData, pEventData->pEventData);
18588 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018589 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018590 }
18591
18592 wdiGetStatsRspCb = (WDI_GetStatsRspCb)pWDICtx->pfncRspCB;
18593
18594 wpalMemoryZero(wdiGetStatsRsp, pHalStatsRspParams->msgLen);
18595 wdiGetStatsRsp->usMsgType = pHalStatsRspParams->msgType;
18596 wdiGetStatsRsp->usMsgLen = pHalStatsRspParams->msgLen;
18597 wdiGetStatsRsp->wdiStatus = WDI_HAL_2_WDI_STATUS(pHalStatsRspParams->status);
18598 wdiGetStatsRsp->ucSTAIdx = pHalStatsRspParams->staId;
18599 wdiGetStatsRsp->uStatsMask = pHalStatsRspParams->statsMask;
18600
18601 /* copy the stats from buffer at the end of the tHalStatsRspParams message */
18602 wpalMemoryCopy(wdiGetStatsRsp + 1,
18603 (wpt_uint8*)pEventData->pEventData + sizeof(tHalStatsRspParams),
18604 pHalStatsRspParams->msgLen - sizeof(tHalStatsRspParams));
18605
18606 /*Notify UMAC*/
18607 wdiGetStatsRspCb( wdiGetStatsRsp, pWDICtx->pRspCBUserData);
18608
18609 wpalMemoryFree(wdiGetStatsRsp);
18610
Jeff Johnsone7245742012-09-05 17:12:55 -070018611 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018612}/*WDI_ProcessGetStatsRsp*/
18613
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -080018614#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_ESE || defined(FEATURE_WLAN_LFR)
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -080018615/**
18616 @brief Process Get Roam Rssi Rsp function (called when a response is
18617 being received over the bus from HAL)
18618
18619 @param pWDICtx: pointer to the WLAN DAL context
18620 pEventData: pointer to the event information structure
18621
18622 @see
18623 @return Result of the function call
18624*/
18625WDI_Status
18626WDI_ProcessGetRoamRssiRsp
18627(
18628 WDI_ControlBlockType* pWDICtx,
18629 WDI_EventInfoType* pEventData
18630)
18631{
18632 WDI_GetRoamRssiRspParamsType wdiGetRoamRssiRsp;
18633 WDI_GetRoamRssiRspCb wdiGetRoamRssiRspCb;
18634 tHalGetRoamRssiRspMsg halRoamRssiRspParams;
18635 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18636
18637 /*-------------------------------------------------------------------------
18638 Sanity check
18639 -------------------------------------------------------------------------*/
18640 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18641 ( NULL == pEventData->pEventData))
18642 {
18643 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
18644 "%s: Invalid parameters", __func__);
18645 WDI_ASSERT(0);
18646 return WDI_STATUS_E_FAILURE;
18647 }
18648
18649 wdiGetRoamRssiRspCb = (WDI_GetRoamRssiRspCb)pWDICtx->pfncRspCB;
18650 if(NULL == wdiGetRoamRssiRspCb)
18651 {
18652 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
18653 "%s: call back function is NULL", __func__);
18654 WDI_ASSERT(0);
18655 return WDI_STATUS_E_FAILURE;
18656 }
18657
18658 /*-------------------------------------------------------------------------
18659 Extract response and send it to UMAC
18660 -------------------------------------------------------------------------*/
18661 wpalMemoryCopy( &halRoamRssiRspParams.roamRssiRspParams,
18662 pEventData->pEventData,
18663 sizeof(halRoamRssiRspParams.roamRssiRspParams));
18664
18665 wdiGetRoamRssiRsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halRoamRssiRspParams.roamRssiRspParams.status);
18666 wdiGetRoamRssiRsp.ucSTAIdx = halRoamRssiRspParams.roamRssiRspParams.staId;
18667 wdiGetRoamRssiRsp.rssi = halRoamRssiRspParams.roamRssiRspParams.rssi;
18668
18669 /*Notify UMAC*/
18670 wdiGetRoamRssiRspCb( &wdiGetRoamRssiRsp, pWDICtx->pRspCBUserData);
18671
18672 return WDI_STATUS_SUCCESS;
18673}/*WDI_ProcessGetRoamRssiRsp*/
18674#endif
18675
Jeff Johnson295189b2012-06-20 16:38:30 -070018676
18677/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018678 @brief Process Update Cfg Rsp function (called when a response is
Jeff Johnson295189b2012-06-20 16:38:30 -070018679 being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018680
18681 @param pWDICtx: pointer to the WLAN DAL context
18682 pEventData: pointer to the event information structure
18683
Jeff Johnson295189b2012-06-20 16:38:30 -070018684 @see
18685 @return Result of the function call
18686*/
18687WDI_Status
18688WDI_ProcessUpdateCfgRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018689(
Jeff Johnson295189b2012-06-20 16:38:30 -070018690 WDI_ControlBlockType* pWDICtx,
18691 WDI_EventInfoType* pEventData
18692)
18693{
18694 WDI_Status wdiStatus;
18695 eHalStatus halStatus;
18696 WDI_UpdateCfgRspCb wdiUpdateCfgRspCb;
18697 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18698
18699 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018700 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018701 -------------------------------------------------------------------------*/
18702 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18703 ( NULL == pEventData->pEventData))
18704 {
18705 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018706 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018707 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018708 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018709 }
18710
18711 wdiUpdateCfgRspCb = (WDI_UpdateCfgRspCb)pWDICtx->pfncRspCB;
18712
18713 /*-------------------------------------------------------------------------
18714 Extract response and send it to UMAC
18715 -------------------------------------------------------------------------*/
18716 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070018717 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018718
18719 /*Notify UMAC*/
18720 wdiUpdateCfgRspCb( wdiStatus, pWDICtx->pRspCBUserData);
18721
Jeff Johnsone7245742012-09-05 17:12:55 -070018722 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018723}/*WDI_ProcessUpdateCfgRsp*/
18724
18725
18726
18727/**
18728 @brief Process Add BA Rsp function (called when a response
18729 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018730
18731 @param pWDICtx: pointer to the WLAN DAL context
18732 pEventData: pointer to the event information structure
18733
Jeff Johnson295189b2012-06-20 16:38:30 -070018734 @see
18735 @return Result of the function call
18736*/
18737WDI_Status
18738WDI_ProcessAddBARsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018739(
Jeff Johnson295189b2012-06-20 16:38:30 -070018740 WDI_ControlBlockType* pWDICtx,
18741 WDI_EventInfoType* pEventData
18742)
18743{
18744 WDI_AddBARspCb wdiAddBARspCb;
18745
18746 tAddBARspParams halAddBARsp;
18747 WDI_AddBARspinfoType wdiAddBARsp;
18748
18749 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18750
18751 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018752 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018753 -------------------------------------------------------------------------*/
18754 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18755 ( NULL == pEventData->pEventData))
18756 {
18757 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018758 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018759 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018760 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018761 }
18762
18763 wdiAddBARspCb = (WDI_AddBARspCb)pWDICtx->pfncRspCB;
18764
18765 /*-------------------------------------------------------------------------
18766 Extract response and send it to UMAC
18767 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018768 wpalMemoryCopy( &halAddBARsp,
18769 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070018770 sizeof(halAddBARsp));
18771
18772 wdiAddBARsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halAddBARsp.status);
18773
Jeff Johnson43971f52012-07-17 12:26:56 -070018774 if ( WDI_STATUS_SUCCESS == wdiAddBARsp.wdiStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070018775 {
18776 wdiAddBARsp.ucBaDialogToken = halAddBARsp.baDialogToken;
18777 }
18778
18779 /*Notify UMAC*/
18780 wdiAddBARspCb( &wdiAddBARsp, pWDICtx->pRspCBUserData);
18781
Jeff Johnsone7245742012-09-05 17:12:55 -070018782 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018783}/*WDI_ProcessAddSessionBARsp*/
18784
18785/**
18786 @brief Process Add BA Rsp function (called when a response
18787 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018788
18789 @param pWDICtx: pointer to the WLAN DAL context
18790 pEventData: pointer to the event information structure
18791
Jeff Johnson295189b2012-06-20 16:38:30 -070018792 @see
18793 @return Result of the function call
18794*/
18795WDI_Status
18796WDI_ProcessTriggerBARsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018797(
Jeff Johnson295189b2012-06-20 16:38:30 -070018798 WDI_ControlBlockType* pWDICtx,
18799 WDI_EventInfoType* pEventData
18800)
18801{
18802 WDI_TriggerBARspCb wdiTriggerBARspCb;
18803
18804 tTriggerBARspParams* halTriggerBARsp;
18805 tTriggerBaRspCandidate* halBaCandidate;
18806 WDI_TriggerBARspParamsType* wdiTriggerBARsp;
18807 WDI_TriggerBARspCandidateType* wdiTriggerBARspCandidate;
18808 wpt_uint16 index;
18809 wpt_uint16 TidIndex;
Tushnim Bhattacharyyaf64c5dc2013-03-21 15:11:31 -070018810 WDI_Status halTriggerBARspStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070018811 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18812
18813 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018814 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018815 -------------------------------------------------------------------------*/
18816 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18817 ( NULL == pEventData->pEventData))
18818 {
18819 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018820 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018821 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018822 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018823 }
18824
18825 wdiTriggerBARspCb = (WDI_TriggerBARspCb)pWDICtx->pfncRspCB;
18826
18827 /*-------------------------------------------------------------------------
18828 Extract response and send it to UMAC
18829 -------------------------------------------------------------------------*/
18830 halTriggerBARsp = (tTriggerBARspParams *)pEventData->pEventData;
18831
Tushnim Bhattacharyyaf64c5dc2013-03-21 15:11:31 -070018832 halTriggerBARspStatus = WDI_HAL_2_WDI_STATUS(halTriggerBARsp->status);
18833
18834 if ( WDI_STATUS_SUCCESS == halTriggerBARspStatus)
18835 {
18836 wdiTriggerBARsp = wpalMemoryAllocate(sizeof(WDI_TriggerBARspParamsType) +
Jeff Johnsone7245742012-09-05 17:12:55 -070018837 halTriggerBARsp->baCandidateCnt *
Jeff Johnson295189b2012-06-20 16:38:30 -070018838 sizeof(WDI_TriggerBARspCandidateType));
Jeff Johnson295189b2012-06-20 16:38:30 -070018839
Tushnim Bhattacharyyaf64c5dc2013-03-21 15:11:31 -070018840 if(NULL == wdiTriggerBARsp)
18841 {
18842 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080018843 "Failed to allocate memory in Trigger BA Response %p %p %p ",
Tushnim Bhattacharyyaf64c5dc2013-03-21 15:11:31 -070018844 pWDICtx, pEventData, pEventData->pEventData);
18845 WDI_ASSERT(0);
18846 return WDI_STATUS_E_FAILURE;
18847 }
Jeff Johnson295189b2012-06-20 16:38:30 -070018848
Tushnim Bhattacharyyaf64c5dc2013-03-21 15:11:31 -070018849 wdiTriggerBARsp->wdiStatus = halTriggerBARspStatus;
18850
Jeff Johnson295189b2012-06-20 16:38:30 -070018851 wdiTriggerBARsp->usBaCandidateCnt = halTriggerBARsp->baCandidateCnt;
Jeff Johnsone7245742012-09-05 17:12:55 -070018852 wpalMemoryCopy(wdiTriggerBARsp->macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -070018853 halTriggerBARsp->bssId , WDI_MAC_ADDR_LEN);
18854
18855 wdiTriggerBARspCandidate = (WDI_TriggerBARspCandidateType*)(wdiTriggerBARsp + 1);
18856 halBaCandidate = (tTriggerBaRspCandidate*)(halTriggerBARsp + 1);
18857
18858 for(index = 0; index < wdiTriggerBARsp->usBaCandidateCnt; index++)
18859 {
Jeff Johnsone7245742012-09-05 17:12:55 -070018860 wpalMemoryCopy(wdiTriggerBARspCandidate->macSTA,
Jeff Johnson295189b2012-06-20 16:38:30 -070018861 halBaCandidate->staAddr, WDI_MAC_ADDR_LEN);
18862 for(TidIndex = 0; TidIndex < STA_MAX_TC; TidIndex++)
18863 {
Jeff Johnsone7245742012-09-05 17:12:55 -070018864 wdiTriggerBARspCandidate->wdiBAInfo[TidIndex].fBaEnable =
Jeff Johnson295189b2012-06-20 16:38:30 -070018865 halBaCandidate->baInfo[TidIndex].fBaEnable;
Jeff Johnsone7245742012-09-05 17:12:55 -070018866 wdiTriggerBARspCandidate->wdiBAInfo[TidIndex].startingSeqNum =
Jeff Johnson295189b2012-06-20 16:38:30 -070018867 halBaCandidate->baInfo[TidIndex].startingSeqNum;
18868 }
18869 wdiTriggerBARspCandidate++;
18870 halBaCandidate++;
18871 }
18872 }
Tushnim Bhattacharyyaf64c5dc2013-03-21 15:11:31 -070018873 else
18874 {
18875 wdiTriggerBARsp = wpalMemoryAllocate(sizeof(WDI_TriggerBARspParamsType));
18876
18877 if(NULL == wdiTriggerBARsp)
18878 {
18879 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080018880 "Failed to allocate memory in Trigger BA Response %p %p %p ",
Tushnim Bhattacharyyaf64c5dc2013-03-21 15:11:31 -070018881 pWDICtx, pEventData, pEventData->pEventData);
18882 WDI_ASSERT(0);
18883 return WDI_STATUS_E_FAILURE;
18884 }
18885
18886 wdiTriggerBARsp->wdiStatus = halTriggerBARspStatus;
18887
18888 }
Jeff Johnson295189b2012-06-20 16:38:30 -070018889
18890 /*Notify UMAC*/
18891 wdiTriggerBARspCb( wdiTriggerBARsp, pWDICtx->pRspCBUserData);
18892
18893 wpalMemoryFree(wdiTriggerBARsp);
Jeff Johnsone7245742012-09-05 17:12:55 -070018894 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018895}/*WDI_ProcessAddSessionBARsp*/
18896
18897/**
18898 @brief Process Update Beacon Params Rsp function (called when a response
18899 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018900
18901 @param pWDICtx: pointer to the WLAN DAL context
18902 pEventData: pointer to the event information structure
18903
Jeff Johnson295189b2012-06-20 16:38:30 -070018904 @see
18905 @return Result of the function call
18906*/
18907WDI_Status
18908WDI_ProcessUpdateBeaconParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018909(
Jeff Johnson295189b2012-06-20 16:38:30 -070018910 WDI_ControlBlockType* pWDICtx,
18911 WDI_EventInfoType* pEventData
18912)
18913{
18914 WDI_Status wdiStatus;
18915 eHalStatus halStatus;
18916 WDI_UpdateBeaconParamsRspCb wdiUpdateBeaconParamsRspCb;
18917 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18918
18919 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018920 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018921 -------------------------------------------------------------------------*/
18922 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18923 ( NULL == pEventData->pEventData))
18924 {
18925 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018926 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018927 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018928 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018929 }
18930
18931 wdiUpdateBeaconParamsRspCb = (WDI_UpdateBeaconParamsRspCb)pWDICtx->pfncRspCB;
18932
18933 /*-------------------------------------------------------------------------
18934 Extract response and send it to UMAC
18935 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018936 wpalMemoryCopy( &halStatus,
18937 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070018938 sizeof(halStatus));
18939
Jeff Johnsone7245742012-09-05 17:12:55 -070018940 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018941
18942 /*Notify UMAC*/
18943 wdiUpdateBeaconParamsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
18944
Jeff Johnsone7245742012-09-05 17:12:55 -070018945 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018946}/*WDI_ProcessUpdateBeaconParamsRsp*/
18947
18948/**
18949 @brief Process Send Beacon template Rsp function (called when a response
18950 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018951
18952 @param pWDICtx: pointer to the WLAN DAL context
18953 pEventData: pointer to the event information structure
18954
Jeff Johnson295189b2012-06-20 16:38:30 -070018955 @see
18956 @return Result of the function call
18957*/
18958WDI_Status
18959WDI_ProcessSendBeaconParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018960(
Jeff Johnson295189b2012-06-20 16:38:30 -070018961 WDI_ControlBlockType* pWDICtx,
18962 WDI_EventInfoType* pEventData
18963)
18964{
18965 WDI_Status wdiStatus;
18966 eHalStatus halStatus;
18967 WDI_SendBeaconParamsRspCb wdiSendBeaconParamsRspCb;
18968 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18969
18970 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018971 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018972 -------------------------------------------------------------------------*/
18973 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18974 ( NULL == pEventData->pEventData))
18975 {
18976 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018977 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018978 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018979 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018980 }
18981
18982 wdiSendBeaconParamsRspCb = (WDI_SendBeaconParamsRspCb)pWDICtx->pfncRspCB;
18983
18984 /*-------------------------------------------------------------------------
18985 Extract response and send it to UMAC
18986 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018987 wpalMemoryCopy( &halStatus,
18988 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070018989 sizeof(halStatus));
18990
Jeff Johnsone7245742012-09-05 17:12:55 -070018991 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018992
18993 /*Notify UMAC*/
18994 wdiSendBeaconParamsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
18995
Jeff Johnsone7245742012-09-05 17:12:55 -070018996 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018997}/*WDI_ProcessSendBeaconParamsRsp*/
18998
Jeff Johnsone7245742012-09-05 17:12:55 -070018999
Jeff Johnson295189b2012-06-20 16:38:30 -070019000/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019001 @brief Process Update Probe Resp Template Rsp function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070019002 when a response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019003
19004 @param pWDICtx: pointer to the WLAN DAL context
19005 pEventData: pointer to the event information structure
19006
Jeff Johnson295189b2012-06-20 16:38:30 -070019007 @see
19008 @return Result of the function call
19009*/
19010WDI_Status
19011WDI_ProcessUpdateProbeRspTemplateRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019012(
Jeff Johnson295189b2012-06-20 16:38:30 -070019013 WDI_ControlBlockType* pWDICtx,
19014 WDI_EventInfoType* pEventData
19015)
19016{
19017 WDI_Status wdiStatus;
19018 eHalStatus halStatus;
19019 WDI_UpdateProbeRspTemplateRspCb wdiUpdProbeRspTemplRspCb;
19020 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19021
19022 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019023 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019024 -------------------------------------------------------------------------*/
19025 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19026 ( NULL == pEventData->pEventData))
19027 {
19028 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019029 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019030 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019031 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019032 }
19033
19034 wdiUpdProbeRspTemplRspCb = (WDI_UpdateProbeRspTemplateRspCb)pWDICtx->pfncRspCB;
19035
19036 /*-------------------------------------------------------------------------
19037 Extract response and send it to UMAC
19038 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019039 wpalMemoryCopy( &halStatus,
19040 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070019041 sizeof(halStatus));
19042
Jeff Johnsone7245742012-09-05 17:12:55 -070019043 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019044
19045 /*Notify UMAC*/
19046 wdiUpdProbeRspTemplRspCb( wdiStatus, pWDICtx->pRspCBUserData);
19047
Jeff Johnsone7245742012-09-05 17:12:55 -070019048 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019049}/*WDI_ProcessUpdateProbeRspTemplateRsp*/
19050
19051 /**
19052 @brief Process Set Max Tx Power Rsp function (called when a response
19053 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019054
19055 @param pWDICtx: pointer to the WLAN DAL context
19056 pEventData: pointer to the event information structure
19057
Jeff Johnson295189b2012-06-20 16:38:30 -070019058 @see
19059 @return Result of the function call
19060*/
19061WDI_Status
19062WDI_ProcessSetMaxTxPowerRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019063(
Jeff Johnson295189b2012-06-20 16:38:30 -070019064 WDI_ControlBlockType* pWDICtx,
19065 WDI_EventInfoType* pEventData
19066)
19067{
19068 tSetMaxTxPwrRspMsg halTxpowerrsp;
Jeff Johnsone7245742012-09-05 17:12:55 -070019069
Jeff Johnson295189b2012-06-20 16:38:30 -070019070 WDI_SetMaxTxPowerRspMsg wdiSetMaxTxPowerRspMsg;
Jeff Johnsone7245742012-09-05 17:12:55 -070019071
Jeff Johnson295189b2012-06-20 16:38:30 -070019072 WDA_SetMaxTxPowerRspCb wdiReqStatusCb;
19073 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19074
19075 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019076 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019077 -------------------------------------------------------------------------*/
19078 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19079 ( NULL == pEventData->pEventData))
19080 {
19081 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019082 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019083 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019084 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019085 }
19086
19087 wdiReqStatusCb = (WDA_SetMaxTxPowerRspCb)pWDICtx->pfncRspCB;
19088
19089 /*-------------------------------------------------------------------------
19090 Extract response and send it to UMAC
19091 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019092 wpalMemoryCopy( &halTxpowerrsp.setMaxTxPwrRspParams,
19093 pEventData->pEventData,
19094 sizeof(halTxpowerrsp.setMaxTxPwrRspParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070019095
19096 if ( eHAL_STATUS_SUCCESS != halTxpowerrsp.setMaxTxPwrRspParams.status )
19097 {
19098 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
19099 "Error status returned in Set Max Tx Power Response ");
Jeff Johnsone7245742012-09-05 17:12:55 -070019100 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019101 }
19102
Jeff Johnsone7245742012-09-05 17:12:55 -070019103 wdiSetMaxTxPowerRspMsg.wdiStatus =
Jeff Johnson295189b2012-06-20 16:38:30 -070019104 WDI_HAL_2_WDI_STATUS(halTxpowerrsp.setMaxTxPwrRspParams.status);
Jeff Johnsone7245742012-09-05 17:12:55 -070019105 wdiSetMaxTxPowerRspMsg.ucPower = halTxpowerrsp.setMaxTxPwrRspParams.power;
Jeff Johnson295189b2012-06-20 16:38:30 -070019106
19107 /*Notify UMAC*/
19108 wdiReqStatusCb( &wdiSetMaxTxPowerRspMsg, pWDICtx->pRspCBUserData);
19109
Jeff Johnsone7245742012-09-05 17:12:55 -070019110 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019111}
19112
schang86c22c42013-03-13 18:41:24 -070019113 /**
19114 @brief Process Set Tx Power Rsp function (called when a response
19115 is being received over the bus from HAL)
19116
19117 @param pWDICtx: pointer to the WLAN DAL context
19118 pEventData: pointer to the event information structure
19119
19120 @see
19121 @return Result of the function call
19122*/
19123WDI_Status
19124WDI_ProcessSetTxPowerRsp
19125(
19126 WDI_ControlBlockType* pWDICtx,
19127 WDI_EventInfoType* pEventData
19128)
19129{
19130 tSetTxPwrRspMsg halTxpowerrsp;
19131 WDI_SetTxPowerRspMsg wdiSetTxPowerRspMsg;
19132 WDA_SetTxPowerRspCb wdiReqStatusCb;
19133 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19134
19135 /*-------------------------------------------------------------------------
19136 Sanity check
19137 -------------------------------------------------------------------------*/
19138 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19139 ( NULL == pEventData->pEventData))
19140 {
19141 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
19142 "%s: Invalid parameters", __func__);
19143 WDI_ASSERT(0);
19144 return WDI_STATUS_E_FAILURE;
19145 }
19146
19147 wdiReqStatusCb = (WDA_SetTxPowerRspCb)pWDICtx->pfncRspCB;
19148
19149 /*-------------------------------------------------------------------------
19150 Extract response and send it to UMAC
19151 -------------------------------------------------------------------------*/
19152 wpalMemoryCopy(&halTxpowerrsp.setTxPwrRspParams,
19153 pEventData->pEventData,
19154 sizeof(halTxpowerrsp.setTxPwrRspParams));
19155
19156 if (eHAL_STATUS_SUCCESS != halTxpowerrsp.setTxPwrRspParams.status)
19157 {
19158 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
19159 "Error status returned in Set Tx Power Response ");
19160 WDI_DetectedDeviceError(pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
19161 return WDI_STATUS_E_FAILURE;
19162 }
19163
19164 wdiSetTxPowerRspMsg.wdiStatus =
19165 WDI_HAL_2_WDI_STATUS(halTxpowerrsp.setTxPwrRspParams.status);
19166
19167 /*Notify UMAC*/
19168 wdiReqStatusCb(&wdiSetTxPowerRspMsg, pWDICtx->pRspCBUserData);
19169
19170 return WDI_STATUS_SUCCESS;
19171}
Arif Hussain935a8fb2014-01-31 12:12:28 -080019172
19173/**
19174 @brief Process Set Max Tx Power Per Band Rsp function (called when a response
19175 is being received over the bus from HAL)
19176
19177 @param pWDICtx: pointer to the WLAN DAL context
19178 pEventData: pointer to the event information structure
19179
19180 @see
19181 @return Result of the function call
19182*/
19183WDI_Status
19184WDI_ProcessSetMaxTxPowerPerBandRsp
19185(
19186 WDI_ControlBlockType* pWDICtx,
19187 WDI_EventInfoType* pEventData
19188)
19189{
19190 tSetMaxTxPwrPerBandRspMsg halMaxTxPowerPerBandRsp;
19191 WDI_SetMaxTxPowerPerBandRspMsg wdiSetTxPowerPerBandRspMsg;
19192 WDA_SetMaxTxPowerPerBandRspCb wdiReqStatusCb;
19193 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19194
19195 /*-------------------------------------------------------------------------
19196 Sanity check
19197 -------------------------------------------------------------------------*/
19198 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19199 ( NULL == pEventData->pEventData))
19200 {
19201 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
19202 "%s: Invalid parameters", __func__);
19203 WDI_ASSERT(0);
19204 return WDI_STATUS_E_FAILURE;
19205 }
19206
19207 wdiReqStatusCb = (WDA_SetMaxTxPowerPerBandRspCb)pWDICtx->pfncRspCB;
19208
19209 /*-------------------------------------------------------------------------
19210 Extract response and send it to UMAC
19211 -------------------------------------------------------------------------*/
19212 wpalMemoryCopy(&halMaxTxPowerPerBandRsp.setMaxTxPwrPerBandRspParams,
19213 pEventData->pEventData,
19214 sizeof(halMaxTxPowerPerBandRsp.setMaxTxPwrPerBandRspParams));
19215
19216 if (eHAL_STATUS_SUCCESS !=
19217 halMaxTxPowerPerBandRsp.setMaxTxPwrPerBandRspParams.status)
19218 {
19219 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
19220 "Error status returned in Set Max Tx Power Per Band Response");
19221 return WDI_STATUS_E_FAILURE;
19222 }
19223
19224 wdiSetTxPowerPerBandRspMsg.wdiStatus =
19225 WDI_HAL_2_WDI_STATUS(
19226 halMaxTxPowerPerBandRsp.setMaxTxPwrPerBandRspParams.status);
19227
19228 /* Notify UMAC */
19229 wdiReqStatusCb(&wdiSetTxPowerPerBandRspMsg, pWDICtx->pRspCBUserData);
19230
19231 return WDI_STATUS_SUCCESS;
19232}
19233
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053019234#ifdef FEATURE_WLAN_TDLS
19235/**
19236 @brief Process TDLS Link Establish Rsp function (called
19237 when a response is being received over the bus from HAL)
19238
19239 @param pWDICtx: pointer to the WLAN DAL context
19240 pEventData: pointer to the event information structure
19241
19242 @see
19243 @return Result of the function call
19244*/
19245WDI_Status
19246WDI_ProcessLinkEstablishReqRsp
19247(
19248 WDI_ControlBlockType* pWDICtx,
19249 WDI_EventInfoType* pEventData
19250)
19251{
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053019252 eHalStatus halStatus;
19253 WDI_SetTDLSLinkEstablishReqParamsRspCb wdiTDLSLinkEstablishReqParamsRspCb;
Gopichand Nakkala574f6d12013-06-27 19:38:43 +053019254 tTDLSLinkEstablishedRespMsg halTdlsLinkEstablishedRespMsg;
19255 WDI_SetTdlsLinkEstablishReqResp wdiSetTdlsLinkEstablishReqResp;
19256
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053019257 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19258
19259 /*-------------------------------------------------------------------------
19260 Sanity check
19261 -------------------------------------------------------------------------*/
19262 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19263 ( NULL == pEventData->pEventData))
19264 {
19265 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
19266 "%s: Invalid parameters", __func__);
19267 WDI_ASSERT(0);
19268 return WDI_STATUS_E_FAILURE;
19269 }
19270
Gopichand Nakkala574f6d12013-06-27 19:38:43 +053019271 /*-------------------------------------------------------------------------
19272 Extract indication and send it to UMAC
19273 -------------------------------------------------------------------------*/
19274 wpalMemoryCopy( &halTdlsLinkEstablishedRespMsg.TDLSLinkEstablishedRespParams,
19275 pEventData->pEventData,
19276 sizeof(halTdlsLinkEstablishedRespMsg.TDLSLinkEstablishedRespParams) );
19277
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053019278 wdiTDLSLinkEstablishReqParamsRspCb = (WDI_SetTDLSLinkEstablishReqParamsRspCb)pWDICtx->pfncRspCB;
19279
19280 /*-------------------------------------------------------------------------
19281 Extract response and send it to UMAC
19282 -------------------------------------------------------------------------*/
19283 wpalMemoryCopy( &halStatus,
19284 pEventData->pEventData,
19285 sizeof(halStatus));
19286
Gopichand Nakkala574f6d12013-06-27 19:38:43 +053019287 wdiSetTdlsLinkEstablishReqResp.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
19288 wdiSetTdlsLinkEstablishReqResp.uStaIdx = halTdlsLinkEstablishedRespMsg.TDLSLinkEstablishedRespParams.staIdx;
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053019289
19290 /*Notify UMAC*/
Gopichand Nakkala574f6d12013-06-27 19:38:43 +053019291 wdiTDLSLinkEstablishReqParamsRspCb( &wdiSetTdlsLinkEstablishReqResp, pWDICtx->pRspCBUserData);
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053019292
19293 return WDI_STATUS_SUCCESS;
19294}/*WDI_ProcessLinkEstablishReqRsp*/
Atul Mittalc0f739f2014-07-31 13:47:47 +053019295
19296
19297
19298/**
19299 @brief Process TDLS Chan switch Rsp function (called
19300 when a response is being received over the bus from HAL)
19301
19302 @param pWDICtx: pointer to the WLAN DAL context
19303 pEventData: pointer to the event information structure
19304
19305 @see
19306 @return Result of the function call
19307*/
19308WDI_Status
19309WDI_ProcessChanSwitchReqRsp
19310(
19311 WDI_ControlBlockType* pWDICtx,
19312 WDI_EventInfoType* pEventData
19313)
19314{
19315 eHalStatus halStatus;
19316 WDI_SetTDLSChanSwitchReqParamsRspCb wdiTDLSChanSwitchReqParamsRspCb;
19317 tTDLSChanSwitchRespMsg halTdlsChanSwitchRespMsg;
19318 WDI_SetTdlsChanSwitchReqResp wdiSetTdlsChanSwitchReqResp;
19319
19320 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19321
19322 /*-------------------------------------------------------------------------
19323 Sanity check
19324 -------------------------------------------------------------------------*/
19325 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19326 ( NULL == pEventData->pEventData))
19327 {
19328 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
19329 "%s: Invalid parameters", __func__);
19330 WDI_ASSERT(0);
19331 return WDI_STATUS_E_FAILURE;
19332 }
19333
19334 /*-------------------------------------------------------------------------
19335 Extract indication and send it to UMAC
19336 -------------------------------------------------------------------------*/
19337 wpalMemoryCopy( &halTdlsChanSwitchRespMsg.tdlsChanSwitchRespParams,
19338 pEventData->pEventData,
19339 sizeof(halTdlsChanSwitchRespMsg.tdlsChanSwitchRespParams) );
19340
19341 wdiTDLSChanSwitchReqParamsRspCb = (WDI_SetTDLSChanSwitchReqParamsRspCb)pWDICtx->pfncRspCB;
19342
19343 /*-------------------------------------------------------------------------
19344 Extract response and send it to UMAC
19345 -------------------------------------------------------------------------*/
19346 wpalMemoryCopy( &halStatus,
19347 pEventData->pEventData,
19348 sizeof(halStatus));
19349
19350 wdiSetTdlsChanSwitchReqResp.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
19351 wdiSetTdlsChanSwitchReqResp.uStaIdx = halTdlsChanSwitchRespMsg.tdlsChanSwitchRespParams.staIdx;
19352
19353 /*Notify UMAC*/
19354 wdiTDLSChanSwitchReqParamsRspCb( &wdiSetTdlsChanSwitchReqResp, pWDICtx->pRspCBUserData );
19355
19356 return WDI_STATUS_SUCCESS;
19357}/*WDI_ProcessChanSwitchReqRsp*/
19358
19359
19360
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053019361#endif
schang86c22c42013-03-13 18:41:24 -070019362
Jeff Johnson295189b2012-06-20 16:38:30 -070019363/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019364 @brief Process P2P Group Owner Notice Of Absense Rsp function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070019365 when a response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019366
19367 @param pWDICtx: pointer to the WLAN DAL context
19368 pEventData: pointer to the event information structure
19369
Jeff Johnson295189b2012-06-20 16:38:30 -070019370 @see
19371 @return Result of the function call
19372*/
19373WDI_Status
19374WDI_ProcessP2PGONOARsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019375(
Jeff Johnson295189b2012-06-20 16:38:30 -070019376 WDI_ControlBlockType* pWDICtx,
19377 WDI_EventInfoType* pEventData
19378)
19379{
19380 WDI_Status wdiStatus;
19381 eHalStatus halStatus;
19382 WDI_SetP2PGONOAReqParamsRspCb wdiP2PGONOAReqParamsRspCb;
19383 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19384
19385 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019386 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019387 -------------------------------------------------------------------------*/
19388 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19389 ( NULL == pEventData->pEventData))
19390 {
19391 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019392 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019393 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019394 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019395 }
19396
19397 wdiP2PGONOAReqParamsRspCb = (WDI_SetP2PGONOAReqParamsRspCb)pWDICtx->pfncRspCB;
19398
19399 /*-------------------------------------------------------------------------
19400 Extract response and send it to UMAC
19401 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019402 wpalMemoryCopy( &halStatus,
19403 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070019404 sizeof(halStatus));
19405
Jeff Johnsone7245742012-09-05 17:12:55 -070019406 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019407
19408 /*Notify UMAC*/
19409 wdiP2PGONOAReqParamsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
19410
Jeff Johnsone7245742012-09-05 17:12:55 -070019411 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019412}/*WDI_ProcessP2PGONOARsp*/
Jeff Johnson295189b2012-06-20 16:38:30 -070019413/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019414 @brief Process Enter IMPS Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070019415 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019416
19417 @param pWDICtx: pointer to the WLAN DAL context
19418 pEventData: pointer to the event information structure
19419
Jeff Johnson295189b2012-06-20 16:38:30 -070019420 @see
19421 @return Result of the function call
19422*/
19423WDI_Status
19424WDI_ProcessEnterImpsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019425(
Jeff Johnson295189b2012-06-20 16:38:30 -070019426 WDI_ControlBlockType* pWDICtx,
19427 WDI_EventInfoType* pEventData
19428)
19429{
19430 WDI_Status wdiStatus;
19431 eHalStatus halStatus;
19432 WDI_EnterImpsRspCb wdiEnterImpsRspCb;
Ravali85acf6b2012-12-12 14:01:38 -080019433 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070019434 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19435
19436 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019437 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019438 -------------------------------------------------------------------------*/
19439 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19440 ( NULL == pEventData->pEventData))
19441 {
19442 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019443 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019444 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019445 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019446 }
19447
19448 wdiEnterImpsRspCb = (WDI_EnterImpsRspCb)pWDICtx->pfncRspCB;
19449
19450 /*-------------------------------------------------------------------------
19451 Extract response and send it to UMAC
19452 -------------------------------------------------------------------------*/
19453 halStatus = *((eHalStatus*)pEventData->pEventData);
19454
Jeff Johnsone7245742012-09-05 17:12:55 -070019455 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019456
Madan Mohan Koyyalamudi48e375a2012-09-24 13:19:17 -070019457 /* If IMPS req failed, riva is not power collapsed Put the DXE in FULL state.
19458 * Other module states are taken care by PMC.
19459 * TODO: How do we take care of the case where IMPS is success, but riva power collapse fails??
19460 */
19461 if (wdiStatus != WDI_STATUS_SUCCESS) {
19462
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070019463 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
19464 "WDI Process Enter IMPS RSP failed With HAL Status Code: %d",
19465 halStatus);
19466 /* Call Back is not required as we are putting the DXE in FULL
19467 * and riva is already in full (IMPS RSP Failed)*/
Ravali85acf6b2012-12-12 14:01:38 -080019468 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
19469
19470 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus ) {
19471 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain9a5d5382013-11-17 22:05:35 -080019472 "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 -080019473 WDI_ASSERT(0);
19474 }
Madan Mohan Koyyalamudi48e375a2012-09-24 13:19:17 -070019475 }
Jeff Johnson295189b2012-06-20 16:38:30 -070019476 /*Notify UMAC*/
19477 wdiEnterImpsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
19478
Jeff Johnsone7245742012-09-05 17:12:55 -070019479 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019480}/*WDI_ProcessEnterImpsRsp*/
19481
19482/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019483 @brief Process Exit IMPS Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070019484 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019485
19486 @param pWDICtx: pointer to the WLAN DAL context
19487 pEventData: pointer to the event information structure
19488
Jeff Johnson295189b2012-06-20 16:38:30 -070019489 @see
19490 @return Result of the function call
19491*/
19492WDI_Status
19493WDI_ProcessExitImpsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019494(
Jeff Johnson295189b2012-06-20 16:38:30 -070019495 WDI_ControlBlockType* pWDICtx,
19496 WDI_EventInfoType* pEventData
19497)
19498{
19499 WDI_Status wdiStatus;
19500 eHalStatus halStatus;
19501 WDI_ExitImpsRspCb wdiExitImpsRspCb;
Ravali85acf6b2012-12-12 14:01:38 -080019502 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070019503 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19504
19505 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019506 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019507 -------------------------------------------------------------------------*/
19508 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19509 ( NULL == pEventData->pEventData))
19510 {
19511 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019512 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019513 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019514 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019515 }
19516
19517 wdiExitImpsRspCb = (WDI_ExitImpsRspCb)pWDICtx->pfncRspCB;
19518
19519 /*-------------------------------------------------------------------------
19520 Extract response and send it to UMAC
19521 -------------------------------------------------------------------------*/
19522 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070019523 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019524
Gopichand Nakkalac6c91902013-05-29 18:53:35 +053019525 if (halStatus != eHAL_STATUS_SUCCESS)
19526 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
19527 "%s: Exit IMPS response is a failure with halStatus %d", __func__, halStatus);
19528
Jeff Johnson295189b2012-06-20 16:38:30 -070019529 // notify DTS that we are entering Full power
Ravali85acf6b2012-12-12 14:01:38 -080019530 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
19531 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
19532 {
19533 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain9a5d5382013-11-17 22:05:35 -080019534 "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 -080019535 WDI_ASSERT(0);
19536 }
Jeff Johnson295189b2012-06-20 16:38:30 -070019537 /*Notify UMAC*/
19538 wdiExitImpsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
19539
Jeff Johnsone7245742012-09-05 17:12:55 -070019540 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019541}/*WDI_ProcessExitImpsRsp*/
19542
19543/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019544 @brief Process Enter BMPS Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070019545 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019546
19547 @param pWDICtx: pointer to the WLAN DAL context
19548 pEventData: pointer to the event information structure
19549
Jeff Johnson295189b2012-06-20 16:38:30 -070019550 @see
19551 @return Result of the function call
19552*/
19553WDI_Status
19554WDI_ProcessEnterBmpsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019555(
Jeff Johnson295189b2012-06-20 16:38:30 -070019556 WDI_ControlBlockType* pWDICtx,
19557 WDI_EventInfoType* pEventData
19558)
19559{
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019560 eHalStatus halStatus = eHAL_STATUS_FAILURE;
19561 tHalEnterBmpsRspParams halEnterBmpsRsp;
19562 WDI_EnterBmpsRspCb wdiEnterBmpsRspCb;
19563 WDI_EnterBmpsRspParamsType wdiEnterBmpsRspparams;
Ravali85acf6b2012-12-12 14:01:38 -080019564 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070019565 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19566
19567 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019568 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019569 -------------------------------------------------------------------------*/
19570 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19571 ( NULL == pEventData->pEventData))
19572 {
19573 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019574 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019575 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019576 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019577 }
19578
Jeff Johnson295189b2012-06-20 16:38:30 -070019579 /*-------------------------------------------------------------------------
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019580 Extract response and send it to UMAC
19581 -------------------------------------------------------------------------*/
19582 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
19583 {
19584 wpalMemoryCopy( &halEnterBmpsRsp,
19585 pEventData->pEventData,
19586 sizeof(halEnterBmpsRsp));
19587
19588 //Used to print debug message
19589 halStatus = halEnterBmpsRsp.status;
19590 wdiEnterBmpsRspparams.wdiStatus = WDI_HAL_2_WDI_STATUS(halEnterBmpsRsp.status);
19591 wdiEnterBmpsRspparams.bssIdx = halEnterBmpsRsp.bssIdx;
19592 }
19593 else
19594 {
19595 halStatus = *((eHalStatus*)pEventData->pEventData);
19596 wdiEnterBmpsRspparams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
19597 }
19598
19599 wdiEnterBmpsRspCb = (WDI_EnterBmpsRspCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070019600
Madan Mohan Koyyalamudi48e375a2012-09-24 13:19:17 -070019601 /* If BMPS req failed, riva is not power collapsed put the DXE in FULL state.
19602 * Other module states are taken care by PMC.
19603 * TODO: How do we take care of the case where BMPS is success, but riva power collapse fails??
19604 */
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019605 if (wdiEnterBmpsRspparams.wdiStatus != WDI_STATUS_SUCCESS)
19606 {
Madan Mohan Koyyalamudi48e375a2012-09-24 13:19:17 -070019607
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019608 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070019609 "WDI Process Enter BMPS RSP failed With HAL Status Code: %d",
19610 halStatus);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019611 /* Call Back is not required as we are putting the DXE in FULL
19612 * and riva is already in FULL (BMPS RSP Failed)*/
Ravali85acf6b2012-12-12 14:01:38 -080019613 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
19614 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
19615 {
19616 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain9a5d5382013-11-17 22:05:35 -080019617 "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 -080019618 WDI_ASSERT(0);
19619 }
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019620 pWDICtx->bInBmps = eWLAN_PAL_FALSE;
Madan Mohan Koyyalamudi48e375a2012-09-24 13:19:17 -070019621 }
19622
Jeff Johnson295189b2012-06-20 16:38:30 -070019623 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019624 wdiEnterBmpsRspCb( &wdiEnterBmpsRspparams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070019625
Jeff Johnsone7245742012-09-05 17:12:55 -070019626 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019627}/*WDI_ProcessEnterBmpsRsp*/
19628
19629/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019630 @brief Process Exit BMPS Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070019631 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019632
19633 @param pWDICtx: pointer to the WLAN DAL context
19634 pEventData: pointer to the event information structure
19635
Jeff Johnson295189b2012-06-20 16:38:30 -070019636 @see
19637 @return Result of the function call
19638*/
19639WDI_Status
19640WDI_ProcessExitBmpsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019641(
Jeff Johnson295189b2012-06-20 16:38:30 -070019642 WDI_ControlBlockType* pWDICtx,
19643 WDI_EventInfoType* pEventData
19644)
19645{
Jeff Johnson295189b2012-06-20 16:38:30 -070019646 eHalStatus halStatus;
19647 WDI_ExitBmpsRspCb wdiExitBmpsRspCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019648 tHalExitBmpsRspParams halExitBmpsRsp;
Ravali85acf6b2012-12-12 14:01:38 -080019649 WDI_ExitBmpsRspParamsType wdiExitBmpsRspParams;
19650 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070019651 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19652
19653 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019654 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019655 -------------------------------------------------------------------------*/
19656 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19657 ( NULL == pEventData->pEventData))
19658 {
19659 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019660 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019661 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019662 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019663 }
19664
19665 wdiExitBmpsRspCb = (WDI_ExitBmpsRspCb)pWDICtx->pfncRspCB;
19666
19667 /*-------------------------------------------------------------------------
19668 Extract response and send it to UMAC
19669 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019670
19671 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
19672 {
19673 wpalMemoryCopy( &halExitBmpsRsp,
19674 pEventData->pEventData,
19675 sizeof(halExitBmpsRsp));
19676
19677 wdiExitBmpsRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halExitBmpsRsp.status);
19678 wdiExitBmpsRspParams.bssIdx = halExitBmpsRsp.bssIdx;
19679 }
19680 else
19681 {
19682 halStatus = *((eHalStatus*)pEventData->pEventData);
19683 wdiExitBmpsRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
19684 }
Jeff Johnson295189b2012-06-20 16:38:30 -070019685
19686 // notify DTS that we are entering Full power
Ravali85acf6b2012-12-12 14:01:38 -080019687 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
19688 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
19689 {
19690 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain9a5d5382013-11-17 22:05:35 -080019691 "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 -080019692 WDI_ASSERT(0);
19693 }
Jeff Johnson295189b2012-06-20 16:38:30 -070019694 pWDICtx->bInBmps = eWLAN_PAL_FALSE;
19695
19696 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019697 wdiExitBmpsRspCb( &wdiExitBmpsRspParams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070019698
Jeff Johnsone7245742012-09-05 17:12:55 -070019699 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019700}/*WDI_ProcessExitBmpsRsp*/
19701
19702/**
19703 @brief Process Enter UAPSD Rsp function (called when a response
19704 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019705
19706 @param pWDICtx: pointer to the WLAN DAL context
19707 pEventData: pointer to the event information structure
19708
Jeff Johnson295189b2012-06-20 16:38:30 -070019709 @see
19710 @return Result of the function call
19711*/
19712WDI_Status
19713WDI_ProcessEnterUapsdRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019714(
Jeff Johnson295189b2012-06-20 16:38:30 -070019715 WDI_ControlBlockType* pWDICtx,
19716 WDI_EventInfoType* pEventData
19717)
19718{
Jeff Johnson295189b2012-06-20 16:38:30 -070019719 eHalStatus halStatus;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019720 tUapsdRspParams halEnterUapsdRsp;
Jeff Johnson295189b2012-06-20 16:38:30 -070019721 WDI_EnterUapsdRspCb wdiEnterUapsdRspCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019722 WDI_EnterUapsdRspParamsType wdiEnterUapsdRspParams;
19723
Jeff Johnson295189b2012-06-20 16:38:30 -070019724 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19725
19726 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019727 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019728 -------------------------------------------------------------------------*/
19729 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19730 ( NULL == pEventData->pEventData))
19731 {
19732 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019733 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019734 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019735 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019736 }
19737
19738 wdiEnterUapsdRspCb = (WDI_EnterUapsdRspCb)pWDICtx->pfncRspCB;
19739
19740 /*-------------------------------------------------------------------------
19741 Extract response and send it to UMAC
19742 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019743 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
19744 {
19745 wpalMemoryCopy( &halEnterUapsdRsp,
19746 pEventData->pEventData,
19747 sizeof(halEnterUapsdRsp));
Jeff Johnson295189b2012-06-20 16:38:30 -070019748
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019749 wdiEnterUapsdRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halEnterUapsdRsp.status);
19750 wdiEnterUapsdRspParams.bssIdx = halEnterUapsdRsp.bssIdx;
19751 }
19752 else
19753 {
19754 halStatus = *((eHalStatus*)pEventData->pEventData);
19755 wdiEnterUapsdRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
19756 }
19757
19758 if(WDI_STATUS_SUCCESS == wdiEnterUapsdRspParams.wdiStatus)
Jeff Johnson295189b2012-06-20 16:38:30 -070019759 {
19760 // Set the DPU routing flag to the FW WQ, all the TX frames would be now pushed
19761 // from DPU to the FW-WQ (5) in UAPSD. FW would be in data path, monitoring
19762 // the traffic to decide when to suspend the trigger frames when there is no traffic
19763 // activity on the trigger enabled ACs
19764 pWDICtx->ucDpuRF = BMUWQ_FW_DPU_TX;
19765
19766#ifdef WLAN_PERF
19767 // Increment the BD signature to refresh the fast path BD utilization
19768 pWDICtx->uBdSigSerialNum++;
19769#endif
19770 }
19771
19772 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019773 wdiEnterUapsdRspCb( &wdiEnterUapsdRspParams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070019774
Jeff Johnsone7245742012-09-05 17:12:55 -070019775 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019776}/*WDI_ProcessEnterUapsdRsp*/
19777
19778/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019779 @brief Process Exit UAPSD Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070019780 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019781
19782 @param pWDICtx: pointer to the WLAN DAL context
19783 pEventData: pointer to the event information structure
19784
Jeff Johnson295189b2012-06-20 16:38:30 -070019785 @see
19786 @return Result of the function call
19787*/
19788WDI_Status
19789WDI_ProcessExitUapsdRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019790(
Jeff Johnson295189b2012-06-20 16:38:30 -070019791 WDI_ControlBlockType* pWDICtx,
19792 WDI_EventInfoType* pEventData
19793)
19794{
Jeff Johnson295189b2012-06-20 16:38:30 -070019795 eHalStatus halStatus;
19796 WDI_ExitUapsdRspCb wdiExitUapsdRspCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019797 tHalExitUapsdRspParams halExitUapsdRsp;
19798 WDI_ExitUapsdRspParamsType wdiExitUapsdRspParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070019799 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19800
19801 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019802 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019803 -------------------------------------------------------------------------*/
19804 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19805 ( NULL == pEventData->pEventData))
19806 {
19807 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019808 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019809 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019810 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019811 }
19812
19813 wdiExitUapsdRspCb = (WDI_ExitUapsdRspCb)pWDICtx->pfncRspCB;
19814
19815 /*-------------------------------------------------------------------------
19816 Extract response and send it to UMAC
19817 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019818 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
19819 {
19820 wpalMemoryCopy( &halExitUapsdRsp,
19821 pEventData->pEventData,
19822 sizeof(halExitUapsdRsp));
19823
19824 wdiExitUapsdRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halExitUapsdRsp.status);
19825 wdiExitUapsdRspParams.bssIdx = halExitUapsdRsp.bssIdx;
19826 }
19827 else
19828 {
19829 halStatus = *((eHalStatus*)pEventData->pEventData);
19830 wdiExitUapsdRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
19831 }
Jeff Johnson295189b2012-06-20 16:38:30 -070019832 // Restore back the DPU routing flag in the TxBD, for DPU to push the TxBDs to BTQM
19833 // directly instead of the FW WQ.
19834 pWDICtx->ucDpuRF = BMUWQ_BTQM_TX_MGMT;
19835
19836#ifdef WLAN_PERF
19837 // Increment the BD signature to refresh the fast path BD utilization
19838 pWDICtx->uBdSigSerialNum++;
19839#endif
19840
19841 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019842 wdiExitUapsdRspCb( &wdiExitUapsdRspParams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070019843
Jeff Johnsone7245742012-09-05 17:12:55 -070019844 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019845}/*WDI_ProcessExitUapsdRsp*/
19846
19847/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019848 @brief Process set UAPSD params Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070019849 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019850
19851 @param pWDICtx: pointer to the WLAN DAL context
19852 pEventData: pointer to the event information structure
19853
Jeff Johnson295189b2012-06-20 16:38:30 -070019854 @see
19855 @return Result of the function call
19856*/
19857WDI_Status
19858WDI_ProcessSetUapsdAcParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019859(
Jeff Johnson295189b2012-06-20 16:38:30 -070019860 WDI_ControlBlockType* pWDICtx,
19861 WDI_EventInfoType* pEventData
19862)
19863{
19864 WDI_Status wdiStatus;
19865 eHalStatus halStatus;
19866 WDI_SetUapsdAcParamsCb wdiSetUapsdAcParamsCb;
19867 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19868
19869 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019870 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019871 -------------------------------------------------------------------------*/
19872 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19873 ( NULL == pEventData->pEventData))
19874 {
19875 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019876 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019877 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019878 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019879 }
19880
19881 wdiSetUapsdAcParamsCb = (WDI_SetUapsdAcParamsCb)pWDICtx->pfncRspCB;
19882
19883 /*-------------------------------------------------------------------------
19884 Extract response and send it to UMAC
19885 -------------------------------------------------------------------------*/
19886 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070019887 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019888
19889 /*Notify UMAC*/
19890 wdiSetUapsdAcParamsCb( wdiStatus, pWDICtx->pRspCBUserData);
19891
Jeff Johnsone7245742012-09-05 17:12:55 -070019892 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019893}/*WDI_ProcessSetUapsdAcParamsRsp*/
19894
19895/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019896 @brief Process update UAPSD params Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070019897 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019898
19899 @param pWDICtx: pointer to the WLAN DAL context
19900 pEventData: pointer to the event information structure
19901
Jeff Johnson295189b2012-06-20 16:38:30 -070019902 @see
19903 @return Result of the function call
19904*/
19905WDI_Status
19906WDI_ProcessUpdateUapsdParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019907(
Jeff Johnson295189b2012-06-20 16:38:30 -070019908 WDI_ControlBlockType* pWDICtx,
19909 WDI_EventInfoType* pEventData
19910)
19911{
19912 WDI_Status wdiStatus;
19913 eHalStatus halStatus;
19914 WDI_UpdateUapsdParamsCb wdiUpdateUapsdParamsCb;
19915 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19916
19917 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019918 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019919 -------------------------------------------------------------------------*/
19920 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19921 ( NULL == pEventData->pEventData))
19922 {
19923 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019924 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019925 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019926 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019927 }
19928
19929 wdiUpdateUapsdParamsCb = (WDI_UpdateUapsdParamsCb)pWDICtx->pfncRspCB;
19930
19931 /*-------------------------------------------------------------------------
19932 Extract response and send it to UMAC
19933 -------------------------------------------------------------------------*/
19934 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070019935 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019936
19937 /*Notify UMAC*/
19938 wdiUpdateUapsdParamsCb( wdiStatus, pWDICtx->pRspCBUserData);
19939
Jeff Johnsone7245742012-09-05 17:12:55 -070019940 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019941}/*WDI_ProcessUpdateUapsdParamsRsp*/
19942
19943/**
19944 @brief Process Configure RXP filter Rsp function (called when a
19945 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019946
19947 @param pWDICtx: pointer to the WLAN DAL context
19948 pEventData: pointer to the event information structure
19949
Jeff Johnson295189b2012-06-20 16:38:30 -070019950 @see
19951 @return Result of the function call
19952*/
19953WDI_Status
19954WDI_ProcessConfigureRxpFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019955(
Jeff Johnson295189b2012-06-20 16:38:30 -070019956 WDI_ControlBlockType* pWDICtx,
19957 WDI_EventInfoType* pEventData
19958)
19959{
19960 WDI_Status wdiStatus;
19961 eHalStatus halStatus;
19962 WDI_ConfigureRxpFilterCb wdiConfigureRxpFilterCb;
19963 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19964
19965 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019966 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019967 -------------------------------------------------------------------------*/
19968 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19969 ( NULL == pEventData->pEventData))
19970 {
19971 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019972 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019973 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019974 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019975 }
19976
19977 wdiConfigureRxpFilterCb = (WDI_ConfigureRxpFilterCb)pWDICtx->pfncRspCB;
19978
19979 /*-------------------------------------------------------------------------
19980 Extract response and send it to UMAC
19981 -------------------------------------------------------------------------*/
19982 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070019983 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019984
19985 /*Notify UMAC*/
19986 wdiConfigureRxpFilterCb( wdiStatus, pWDICtx->pRspCBUserData);
19987
Jeff Johnsone7245742012-09-05 17:12:55 -070019988 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019989}/*WDI_ProcessConfigureRxpFilterRsp*/
19990
19991/**
19992 @brief Process Set beacon filter Rsp function (called when a
19993 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019994
19995 @param pWDICtx: pointer to the WLAN DAL context
19996 pEventData: pointer to the event information structure
19997
Jeff Johnson295189b2012-06-20 16:38:30 -070019998 @see
19999 @return Result of the function call
20000*/
20001WDI_Status
20002WDI_ProcessSetBeaconFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020003(
Jeff Johnson295189b2012-06-20 16:38:30 -070020004 WDI_ControlBlockType* pWDICtx,
20005 WDI_EventInfoType* pEventData
20006)
20007{
20008 WDI_Status wdiStatus;
20009 eHalStatus halStatus;
20010 WDI_SetBeaconFilterCb wdiBeaconFilterCb;
20011 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20012
20013 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020014 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020015 -------------------------------------------------------------------------*/
20016 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20017 ( NULL == pEventData->pEventData))
20018 {
20019 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020020 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020021 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020022 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020023 }
20024
20025 wdiBeaconFilterCb = (WDI_SetBeaconFilterCb)pWDICtx->pfncRspCB;
20026
20027 /*-------------------------------------------------------------------------
20028 Extract response and send it to UMAC
20029 -------------------------------------------------------------------------*/
20030 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070020031 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070020032
20033 /*Notify UMAC*/
20034 wdiBeaconFilterCb( wdiStatus, pWDICtx->pRspCBUserData);
20035
Jeff Johnsone7245742012-09-05 17:12:55 -070020036 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020037}/*WDI_ProcessSetBeaconFilterRsp*/
20038
20039/**
20040 @brief Process remove beacon filter Rsp function (called when a
20041 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020042
20043 @param pWDICtx: pointer to the WLAN DAL context
20044 pEventData: pointer to the event information structure
20045
Jeff Johnson295189b2012-06-20 16:38:30 -070020046 @see
20047 @return Result of the function call
20048*/
20049WDI_Status
20050WDI_ProcessRemBeaconFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020051(
Jeff Johnson295189b2012-06-20 16:38:30 -070020052 WDI_ControlBlockType* pWDICtx,
20053 WDI_EventInfoType* pEventData
20054)
20055{
20056 WDI_Status wdiStatus;
20057 eHalStatus halStatus;
20058 WDI_RemBeaconFilterCb wdiBeaconFilterCb;
20059 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20060
20061 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020062 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020063 -------------------------------------------------------------------------*/
20064 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20065 ( NULL == pEventData->pEventData))
20066 {
20067 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020068 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020069 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020070 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020071 }
20072
20073 wdiBeaconFilterCb = (WDI_RemBeaconFilterCb)pWDICtx->pfncRspCB;
20074
20075 /*-------------------------------------------------------------------------
20076 Extract response and send it to UMAC
20077 -------------------------------------------------------------------------*/
20078 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070020079 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070020080
20081 /*Notify UMAC*/
20082 wdiBeaconFilterCb( wdiStatus, pWDICtx->pRspCBUserData);
20083
Jeff Johnsone7245742012-09-05 17:12:55 -070020084 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020085}/*WDI_ProcessRemBeaconFilterRsp*/
20086
20087/**
20088 @brief Process set RSSI thresholds Rsp function (called when a
20089 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020090
20091 @param pWDICtx: pointer to the WLAN DAL context
20092 pEventData: pointer to the event information structure
20093
Jeff Johnson295189b2012-06-20 16:38:30 -070020094 @see
20095 @return Result of the function call
20096*/
20097WDI_Status
20098WDI_ProcessSetRSSIThresoldsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020099(
Jeff Johnson295189b2012-06-20 16:38:30 -070020100 WDI_ControlBlockType* pWDICtx,
20101 WDI_EventInfoType* pEventData
20102)
20103{
20104 WDI_Status wdiStatus;
20105 eHalStatus halStatus;
20106 WDI_SetRSSIThresholdsCb wdiRSSIThresholdsCb;
20107 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20108
20109 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020110 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020111 -------------------------------------------------------------------------*/
20112 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20113 ( NULL == pEventData->pEventData))
20114 {
20115 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020116 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020117 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020118 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020119 }
20120
20121 wdiRSSIThresholdsCb = (WDI_SetRSSIThresholdsCb)pWDICtx->pfncRspCB;
20122
20123 /*-------------------------------------------------------------------------
20124 Extract response and send it to UMAC
20125 -------------------------------------------------------------------------*/
20126 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070020127 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070020128
20129 /*Notify UMAC*/
20130 wdiRSSIThresholdsCb( wdiStatus, pWDICtx->pRspCBUserData);
20131
Jeff Johnsone7245742012-09-05 17:12:55 -070020132 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020133}/*WDI_ProcessSetRSSIThresoldsRsp*/
20134
20135/**
20136 @brief Process host offload Rsp function (called when a
20137 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020138
20139 @param pWDICtx: pointer to the WLAN DAL context
20140 pEventData: pointer to the event information structure
20141
Jeff Johnson295189b2012-06-20 16:38:30 -070020142 @see
20143 @return Result of the function call
20144*/
20145WDI_Status
20146WDI_ProcessHostOffloadRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020147(
Jeff Johnson295189b2012-06-20 16:38:30 -070020148 WDI_ControlBlockType* pWDICtx,
20149 WDI_EventInfoType* pEventData
20150)
20151{
20152 WDI_Status wdiStatus;
20153 eHalStatus halStatus;
20154 WDI_HostOffloadCb wdiHostOffloadCb;
20155 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20156
20157 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020158 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020159 -------------------------------------------------------------------------*/
20160 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20161 ( NULL == pEventData->pEventData))
20162 {
20163 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020164 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020165 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020166 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020167 }
20168
20169 wdiHostOffloadCb = (WDI_HostOffloadCb)pWDICtx->pfncRspCB;
20170
20171 /*-------------------------------------------------------------------------
20172 Extract response and send it to UMAC
20173 -------------------------------------------------------------------------*/
20174 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070020175 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070020176
20177 /*Notify UMAC*/
20178 wdiHostOffloadCb( wdiStatus, pWDICtx->pRspCBUserData);
20179
Jeff Johnsone7245742012-09-05 17:12:55 -070020180 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020181}/*WDI_ProcessHostOffloadRsp*/
20182
20183/**
20184 @brief Process keep alive Rsp function (called when a
20185 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020186
20187 @param pWDICtx: pointer to the WLAN DAL context
20188 pEventData: pointer to the event information structure
20189
Jeff Johnson295189b2012-06-20 16:38:30 -070020190 @see
20191 @return Result of the function call
20192*/
20193WDI_Status
20194WDI_ProcessKeepAliveRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020195(
Jeff Johnson295189b2012-06-20 16:38:30 -070020196 WDI_ControlBlockType* pWDICtx,
20197 WDI_EventInfoType* pEventData
20198)
20199{
20200 WDI_Status wdiStatus;
20201 eHalStatus halStatus;
20202 WDI_KeepAliveCb wdiKeepAliveCb;
20203 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20204 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
20205 "Received WDI_ProcessKeepAliveRsp Callback from HAL");
20206
20207
20208 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020209 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020210 -------------------------------------------------------------------------*/
20211 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20212 ( NULL == pEventData->pEventData))
20213 {
20214 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020215 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020216 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020217 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020218 }
20219
Jeff Johnsone7245742012-09-05 17:12:55 -070020220 wdiKeepAliveCb = (WDI_KeepAliveCb)pWDICtx->pfncRspCB;
20221
Jeff Johnson295189b2012-06-20 16:38:30 -070020222 /*-------------------------------------------------------------------------
20223 Extract response and send it to UMAC
20224 -------------------------------------------------------------------------*/
20225 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070020226 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070020227
20228 /*Notify UMAC*/
20229 wdiKeepAliveCb( wdiStatus, pWDICtx->pRspCBUserData);
20230
Jeff Johnsone7245742012-09-05 17:12:55 -070020231 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020232}/*WDI_ProcessKeepAliveRsp*/
20233
20234/**
20235 @brief Process wowl add ptrn Rsp function (called when a
20236 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020237
20238 @param pWDICtx: pointer to the WLAN DAL context
20239 pEventData: pointer to the event information structure
20240
Jeff Johnson295189b2012-06-20 16:38:30 -070020241 @see
20242 @return Result of the function call
20243*/
20244WDI_Status
20245WDI_ProcessWowlAddBcPtrnRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020246(
Jeff Johnson295189b2012-06-20 16:38:30 -070020247 WDI_ControlBlockType* pWDICtx,
20248 WDI_EventInfoType* pEventData
20249)
20250{
Jeff Johnson295189b2012-06-20 16:38:30 -070020251 eHalStatus halStatus;
20252 WDI_WowlAddBcPtrnCb wdiWowlAddBcPtrnCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020253 tHalAddWowlBcastPtrnRspParams halAddWowlBcastPtrRsp;
20254 WDI_WowlAddBcPtrnRspParamsType wdiWowlAddBcPtrRsp;
20255
Jeff Johnson295189b2012-06-20 16:38:30 -070020256 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20257
20258 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020259 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020260 -------------------------------------------------------------------------*/
20261 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20262 ( NULL == pEventData->pEventData))
20263 {
20264 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020265 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020266 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020267 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020268 }
20269
20270 wdiWowlAddBcPtrnCb = (WDI_WowlAddBcPtrnCb)pWDICtx->pfncRspCB;
20271
20272 /*-------------------------------------------------------------------------
20273 Extract response and send it to UMAC
20274 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020275 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
20276 {
20277 wpalMemoryCopy( &halAddWowlBcastPtrRsp,
20278 pEventData->pEventData,
20279 sizeof(halAddWowlBcastPtrRsp));
20280
20281 wdiWowlAddBcPtrRsp.wdiStatus =
20282 WDI_HAL_2_WDI_STATUS(halAddWowlBcastPtrRsp.status);
20283 }
20284 else
20285 {
20286 halStatus = *((eHalStatus*)pEventData->pEventData);
20287 wdiWowlAddBcPtrRsp.wdiStatus =
20288 WDI_HAL_2_WDI_STATUS(halStatus);
20289 }
Jeff Johnson295189b2012-06-20 16:38:30 -070020290
20291 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020292 wdiWowlAddBcPtrnCb( &wdiWowlAddBcPtrRsp, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070020293
Jeff Johnsone7245742012-09-05 17:12:55 -070020294 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020295}/*WDI_ProcessWowlAddBcPtrnRsp*/
20296
20297/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020298 @brief Process wowl delete ptrn Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070020299 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020300
20301 @param pWDICtx: pointer to the WLAN DAL context
20302 pEventData: pointer to the event information structure
20303
Jeff Johnson295189b2012-06-20 16:38:30 -070020304 @see
20305 @return Result of the function call
20306*/
20307WDI_Status
20308WDI_ProcessWowlDelBcPtrnRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020309(
Jeff Johnson295189b2012-06-20 16:38:30 -070020310 WDI_ControlBlockType* pWDICtx,
20311 WDI_EventInfoType* pEventData
20312)
20313{
Jeff Johnson295189b2012-06-20 16:38:30 -070020314 eHalStatus halStatus;
20315 WDI_WowlDelBcPtrnCb wdiWowlDelBcPtrnCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020316 tHalDelWowlBcastPtrnRspParams halDelWowlBcastPtrRsp;
20317 WDI_WowlDelBcPtrnRspParamsType wdiWowlDelBcstPtrRsp;
Jeff Johnson295189b2012-06-20 16:38:30 -070020318 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20319
20320 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020321 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020322 -------------------------------------------------------------------------*/
20323 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20324 ( NULL == pEventData->pEventData))
20325 {
20326 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020327 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020328 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020329 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020330 }
20331
20332 wdiWowlDelBcPtrnCb = (WDI_WowlDelBcPtrnCb)pWDICtx->pfncRspCB;
20333
20334 /*-------------------------------------------------------------------------
20335 Extract response and send it to UMAC
20336 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020337 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
20338 {
20339 wpalMemoryCopy( &halDelWowlBcastPtrRsp,
20340 pEventData->pEventData,
20341 sizeof(halDelWowlBcastPtrRsp));
Jeff Johnson295189b2012-06-20 16:38:30 -070020342
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020343 wdiWowlDelBcstPtrRsp.wdiStatus =
20344 WDI_HAL_2_WDI_STATUS(halDelWowlBcastPtrRsp.status);
20345 }
20346 else
20347 {
20348 halStatus = *((eHalStatus*)pEventData->pEventData);
20349 wdiWowlDelBcstPtrRsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
20350 }
Jeff Johnson295189b2012-06-20 16:38:30 -070020351 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020352 wdiWowlDelBcPtrnCb( &wdiWowlDelBcstPtrRsp, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070020353
Jeff Johnsone7245742012-09-05 17:12:55 -070020354 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020355}/*WDI_ProcessWowlDelBcPtrnRsp*/
20356
20357/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020358 @brief Process wowl enter Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070020359 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020360
20361 @param pWDICtx: pointer to the WLAN DAL context
20362 pEventData: pointer to the event information structure
20363
Jeff Johnson295189b2012-06-20 16:38:30 -070020364 @see
20365 @return Result of the function call
20366*/
20367WDI_Status
20368WDI_ProcessWowlEnterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020369(
Jeff Johnson295189b2012-06-20 16:38:30 -070020370 WDI_ControlBlockType* pWDICtx,
20371 WDI_EventInfoType* pEventData
20372)
20373{
Jeff Johnson295189b2012-06-20 16:38:30 -070020374 eHalStatus halStatus;
20375 WDI_WowlEnterReqCb wdiWowlEnterCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020376 WDI_WowlEnterRspParamsType wdiwowlEnterRsp;
20377 tHalEnterWowlRspParams halEnterWowlRspParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070020378 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20379
20380 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020381 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020382 -------------------------------------------------------------------------*/
20383 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20384 ( NULL == pEventData->pEventData))
20385 {
20386 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020387 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020388 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020389 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020390 }
20391
20392 wdiWowlEnterCb = (WDI_WowlEnterReqCb)pWDICtx->pfncRspCB;
20393
20394 /*-------------------------------------------------------------------------
20395 Extract response and send it to UMAC
20396 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020397 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
20398 {
20399 wpalMemoryCopy( &halEnterWowlRspParams,
20400 (wpt_uint8*)pEventData->pEventData,
20401 sizeof(halEnterWowlRspParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070020402
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020403 wdiwowlEnterRsp.bssIdx = halEnterWowlRspParams.bssIdx;
20404 wdiwowlEnterRsp.status =
20405 WDI_HAL_2_WDI_STATUS(halEnterWowlRspParams.status);
20406 }
20407 else
20408 {
20409 halStatus = *((eHalStatus*)pEventData->pEventData);
20410 wdiwowlEnterRsp.status = WDI_HAL_2_WDI_STATUS(halStatus);
20411 }
Jeff Johnson295189b2012-06-20 16:38:30 -070020412 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020413 wdiWowlEnterCb( &wdiwowlEnterRsp, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070020414
Jeff Johnsone7245742012-09-05 17:12:55 -070020415 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020416}/*WDI_ProcessWowlEnterRsp*/
20417
20418/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020419 @brief Process wowl exit Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070020420 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020421
20422 @param pWDICtx: pointer to the WLAN DAL context
20423 pEventData: pointer to the event information structure
20424
Jeff Johnson295189b2012-06-20 16:38:30 -070020425 @see
20426 @return Result of the function call
20427*/
20428WDI_Status
20429WDI_ProcessWowlExitRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020430(
Jeff Johnson295189b2012-06-20 16:38:30 -070020431 WDI_ControlBlockType* pWDICtx,
20432 WDI_EventInfoType* pEventData
20433)
20434{
Jeff Johnson295189b2012-06-20 16:38:30 -070020435 eHalStatus halStatus;
20436 WDI_WowlExitReqCb wdiWowlExitCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020437 tHalExitWowlRspParams halExitWowlRspParams;
20438 WDI_WowlExitRspParamsType wdiWowlExitRsp;
20439
Jeff Johnson295189b2012-06-20 16:38:30 -070020440 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20441
20442 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020443 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020444 -------------------------------------------------------------------------*/
20445 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20446 ( NULL == pEventData->pEventData))
20447 {
20448 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020449 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020450 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020451 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020452 }
20453
20454 wdiWowlExitCb = (WDI_WowlExitReqCb)pWDICtx->pfncRspCB;
20455
20456 /*-------------------------------------------------------------------------
20457 Extract response and send it to UMAC
20458 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020459 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
20460 {
20461 wpalMemoryCopy( &halExitWowlRspParams,
20462 pEventData->pEventData,
20463 sizeof(halExitWowlRspParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070020464
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020465 wdiWowlExitRsp.status = WDI_HAL_2_WDI_STATUS(halExitWowlRspParams.status);
20466 wdiWowlExitRsp.bssIdx = halExitWowlRspParams.bssIdx;
20467
20468 }
20469 else
20470 {
20471 halStatus = *((eHalStatus*)pEventData->pEventData);
20472 wdiWowlExitRsp.status = WDI_HAL_2_WDI_STATUS(halStatus);
20473 }
Jeff Johnson295189b2012-06-20 16:38:30 -070020474 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020475 wdiWowlExitCb( &wdiWowlExitRsp, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070020476
Jeff Johnsone7245742012-09-05 17:12:55 -070020477 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020478}/*WDI_ProcessWowlExitRsp*/
20479
20480/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020481 @brief Process Configure Apps CPU wakeup State Rsp function
Jeff Johnson295189b2012-06-20 16:38:30 -070020482 (called when a response is being received over the bus
20483 from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020484
20485 @param pWDICtx: pointer to the WLAN DAL context
20486 pEventData: pointer to the event information structure
20487
Jeff Johnson295189b2012-06-20 16:38:30 -070020488 @see
20489 @return Result of the function call
20490*/
20491WDI_Status
20492WDI_ProcessConfigureAppsCpuWakeupStateRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020493(
Jeff Johnson295189b2012-06-20 16:38:30 -070020494 WDI_ControlBlockType* pWDICtx,
20495 WDI_EventInfoType* pEventData
20496)
20497{
20498 WDI_Status wdiStatus;
20499 eHalStatus halStatus;
20500 WDI_ConfigureAppsCpuWakeupStateCb wdiConfigureAppsCpuWakeupStateCb;
20501 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20502
20503 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020504 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020505 -------------------------------------------------------------------------*/
20506 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20507 ( NULL == pEventData->pEventData))
20508 {
20509 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020510 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020511 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020512 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020513 }
20514
20515 wdiConfigureAppsCpuWakeupStateCb = (WDI_ConfigureAppsCpuWakeupStateCb)pWDICtx->pfncRspCB;
20516
20517 /*-------------------------------------------------------------------------
20518 Extract response and send it to UMAC
20519 -------------------------------------------------------------------------*/
20520 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070020521 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070020522
20523 /*Notify UMAC*/
20524 wdiConfigureAppsCpuWakeupStateCb( wdiStatus, pWDICtx->pRspCBUserData);
20525
Jeff Johnsone7245742012-09-05 17:12:55 -070020526 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020527}/*WDI_ProcessConfigureAppsCpuWakeupStateRsp*/
20528
20529
20530/**
20531 @brief Process Nv download(called when a response
20532 is being received over the bus from HAL,will check if the responce is )
Jeff Johnsone7245742012-09-05 17:12:55 -070020533
20534 @param pWDICtx: pointer to the WLAN DAL context
20535 pEventData: pointer to the event information structure
20536
Jeff Johnson295189b2012-06-20 16:38:30 -070020537 @see
20538 @return Result of the function call
20539*/
20540WDI_Status
20541WDI_ProcessNvDownloadRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020542(
Jeff Johnson295189b2012-06-20 16:38:30 -070020543 WDI_ControlBlockType* pWDICtx,
20544 WDI_EventInfoType* pEventData
20545)
20546{
20547
20548 WDI_NvDownloadRspCb wdiNvDownloadRspCb;
20549 tHalNvImgDownloadRspParams halNvDownloadRsp;
20550 WDI_NvDownloadRspInfoType wdiNvDownloadRsp;
20551
20552 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020553 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020554 -------------------------------------------------------------------------*/
20555 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20556 ( NULL == pEventData->pEventData))
20557 {
20558 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020559 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020560 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020561 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020562 }
20563
20564 /*-------------------------------------------------------------------------
20565 Extract response and send it to UMAC
20566 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020567 wpalMemoryCopy( &halNvDownloadRsp,
20568 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070020569 sizeof(halNvDownloadRsp));
20570
20571 wdiNvDownloadRsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halNvDownloadRsp.status);
20572
20573 if((wdiNvDownloadRsp.wdiStatus == WDI_STATUS_SUCCESS) &&
Jeff Johnsone7245742012-09-05 17:12:55 -070020574 (pWDICtx->wdiNvBlobInfo.usCurrentFragment !=
20575 pWDICtx->wdiNvBlobInfo.usTotalFragment ))
Jeff Johnson295189b2012-06-20 16:38:30 -070020576 {
20577 WDI_NvDownloadReq(&pWDICtx->wdiCachedNvDownloadReq,
Jeff Johnsone7245742012-09-05 17:12:55 -070020578 (WDI_NvDownloadRspCb)pWDICtx->pfncRspCB, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070020579 }
20580 else
20581 {
20582 /*Reset the Nv related global information in WDI context information */
20583 pWDICtx->wdiNvBlobInfo.usTotalFragment = 0;
20584 pWDICtx->wdiNvBlobInfo.usFragmentSize = 0;
20585 pWDICtx->wdiNvBlobInfo.usCurrentFragment = 0;
20586 /*call WDA callback function for last fragment */
20587 wdiNvDownloadRspCb = (WDI_NvDownloadRspCb)pWDICtx->pfncRspCB;
20588 wdiNvDownloadRspCb( &wdiNvDownloadRsp, pWDICtx->pRspCBUserData);
20589 }
20590
Jeff Johnsone7245742012-09-05 17:12:55 -070020591 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020592}
20593#ifdef WLAN_FEATURE_VOWIFI_11R
20594/**
20595 @brief Process Add TSpec Rsp function (called when a response
20596 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020597
20598 @param pWDICtx: pointer to the WLAN DAL context
20599 pEventData: pointer to the event information structure
20600
Jeff Johnson295189b2012-06-20 16:38:30 -070020601 @see
20602 @return Result of the function call
20603*/
20604WDI_Status
20605WDI_ProcessAggrAddTSpecRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020606(
Jeff Johnson295189b2012-06-20 16:38:30 -070020607 WDI_ControlBlockType* pWDICtx,
20608 WDI_EventInfoType* pEventData
20609)
20610{
20611 WDI_Status wdiStatus;
20612 tAggrAddTsRspParams aggrAddTsRsp;
20613 WDI_AggrAddTsRspCb wdiAggrAddTsRspCb;
20614 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20615
20616 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020617 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020618 -------------------------------------------------------------------------*/
20619 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20620 ( NULL == pEventData->pEventData))
20621 {
20622 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020623 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020624 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020625 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020626 }
20627
20628 wdiAggrAddTsRspCb = (WDI_AddTsRspCb)pWDICtx->pfncRspCB;
20629
20630 /*-------------------------------------------------------------------------
20631 Extract response and send it to UMAC
20632 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020633 wpalMemoryCopy( &aggrAddTsRsp,
20634 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070020635 sizeof(aggrAddTsRsp));
20636
20637 /* What is the difference between status0 and status1? */
Jeff Johnsone7245742012-09-05 17:12:55 -070020638 wdiStatus = WDI_HAL_2_WDI_STATUS(aggrAddTsRsp.status0);
Jeff Johnson295189b2012-06-20 16:38:30 -070020639
20640 /*Notify UMAC*/
20641 wdiAggrAddTsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
20642
Jeff Johnsone7245742012-09-05 17:12:55 -070020643 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020644}/*WDI_ProcessAddTSpecRsp*/
20645#endif /* WLAN_FEATURE_VOWIFI_11R */
20646
20647/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020648 @brief WDI_ProcessHostResumeRsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070020649 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020650
20651 @param pWDICtx: pointer to the WLAN DAL context
20652 pEventData: pointer to the event information structure
20653
Jeff Johnson295189b2012-06-20 16:38:30 -070020654 @see
20655 @return Result of the function call
20656*/
20657WDI_Status
20658WDI_ProcessHostResumeRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020659(
Jeff Johnson295189b2012-06-20 16:38:30 -070020660 WDI_ControlBlockType* pWDICtx,
20661 WDI_EventInfoType* pEventData
20662)
20663{
20664 WDI_SuspendResumeRspParamsType wdiResumeRspParams;
20665 WDI_HostResumeEventRspCb wdiHostResumeRspCb;
20666 tHalHostResumeRspParams hostResumeRspMsg;
20667 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20668
20669 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020670 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020671 -------------------------------------------------------------------------*/
20672 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20673 ( NULL == pEventData->pEventData))
20674 {
20675 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020676 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020677 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020678 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020679 }
20680
20681 wdiHostResumeRspCb = (WDI_HostResumeEventRspCb)pWDICtx->pfncRspCB;
20682
20683 /*-------------------------------------------------------------------------
20684 Extract response and send it to UMAC
20685 -------------------------------------------------------------------------*/
20686
Jeff Johnsone7245742012-09-05 17:12:55 -070020687 wpalMemoryCopy( &hostResumeRspMsg,
Jeff Johnson295189b2012-06-20 16:38:30 -070020688 (wpt_uint8*)pEventData->pEventData,
20689 sizeof(hostResumeRspMsg));
20690
Jeff Johnsone7245742012-09-05 17:12:55 -070020691 wdiResumeRspParams.wdiStatus =
20692 WDI_HAL_2_WDI_STATUS(hostResumeRspMsg.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070020693
20694 /*Notify UMAC*/
20695 wdiHostResumeRspCb(&wdiResumeRspParams, (void*) pWDICtx->pRspCBUserData);
20696
20697 return WDI_STATUS_SUCCESS;
20698}
20699
20700/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020701 @brief Process Set Tx PER Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070020702 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020703
20704 @param pWDICtx: pointer to the WLAN DAL context
20705 pEventData: pointer to the event information structure
20706
Jeff Johnson295189b2012-06-20 16:38:30 -070020707 @see
20708 @return Result of the function call
20709*/
20710WDI_Status
20711WDI_ProcessSetTxPerTrackingRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020712(
Jeff Johnson295189b2012-06-20 16:38:30 -070020713 WDI_ControlBlockType* pWDICtx,
20714 WDI_EventInfoType* pEventData
20715)
20716{
20717 WDI_Status wdiStatus;
20718 eHalStatus halStatus;
20719 WDI_SetTxPerTrackingRspCb pwdiSetTxPerTrackingRspCb;
20720 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20721
20722 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020723 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020724 -------------------------------------------------------------------------*/
20725 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20726 ( NULL == pEventData->pEventData))
20727 {
20728 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020729 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020730 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020731 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020732 }
Jeff Johnsone7245742012-09-05 17:12:55 -070020733
20734 pwdiSetTxPerTrackingRspCb = (WDI_SetTxPerTrackingRspCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070020735
20736 /*-------------------------------------------------------------------------
20737 Extract response and send it to UMAC
20738 -------------------------------------------------------------------------*/
20739 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070020740 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070020741
20742 /*Notify UMAC*/
20743 pwdiSetTxPerTrackingRspCb( wdiStatus, pWDICtx->pRspCBUserData);
20744
Jeff Johnsone7245742012-09-05 17:12:55 -070020745 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020746}/*WDI_ProcessSetTxPerTrackingRsp*/
20747
20748/*==========================================================================
20749 Indications from HAL
20750 ==========================================================================*/
20751/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020752 @brief Process Low RSSI Indication function (called when an
Jeff Johnson295189b2012-06-20 16:38:30 -070020753 indication of this kind is being received over the bus
20754 from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020755
20756 @param pWDICtx: pointer to the WLAN DAL context
20757 pEventData: pointer to the event information structure
20758
Jeff Johnson295189b2012-06-20 16:38:30 -070020759 @see
20760 @return Result of the function call
20761*/
20762WDI_Status
20763WDI_ProcessLowRSSIInd
Jeff Johnsone7245742012-09-05 17:12:55 -070020764(
Jeff Johnson295189b2012-06-20 16:38:30 -070020765 WDI_ControlBlockType* pWDICtx,
20766 WDI_EventInfoType* pEventData
20767)
20768{
20769 WDI_LowLevelIndType wdiInd;
20770 tHalRSSINotificationIndMsg halRSSINotificationIndMsg;
20771 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20772
20773 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020774 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020775 -------------------------------------------------------------------------*/
20776 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20777 ( NULL == pEventData->pEventData))
20778 {
20779 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020780 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020781 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020782 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020783 }
20784
20785 /*-------------------------------------------------------------------------
20786 Extract indication and send it to UMAC
20787 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020788 wpalMemoryCopy( (void *)&halRSSINotificationIndMsg.rssiNotificationParams,
20789 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070020790 sizeof(tHalRSSINotification));
20791
20792 /*Fill in the indication parameters*/
20793 wdiInd.wdiIndicationType = WDI_RSSI_NOTIFICATION_IND;
20794 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres1PosCross =
20795 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres1PosCross;
20796 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres1NegCross =
20797 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres1NegCross;
20798 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres2PosCross =
20799 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres2PosCross;
20800 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres2NegCross =
20801 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres2NegCross;
20802 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres3PosCross =
20803 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres3PosCross;
20804 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres3NegCross =
20805 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres3NegCross;
Srinivasdaaec712012-12-12 15:59:44 -080020806 wdiInd.wdiIndicationData.wdiLowRSSIInfo.avgRssi =
20807 halRSSINotificationIndMsg.rssiNotificationParams.avgRssi;
Jeff Johnson295189b2012-06-20 16:38:30 -070020808
ltimariub77f24b2013-01-24 18:54:33 -080020809 if ( pWDICtx->wdiLowLevelIndCB )
20810 {
20811 /*Notify UMAC of indication*/
20812 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
20813 }
Jeff Johnsone7245742012-09-05 17:12:55 -070020814
20815 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020816}/*WDI_ProcessLowRSSIInd*/
20817
20818
20819/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020820 @brief Process Missed Beacon Indication function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070020821 an indication of this kind is being received over the
20822 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020823
20824 @param pWDICtx: pointer to the WLAN DAL context
20825 pEventData: pointer to the event information structure
20826
Jeff Johnson295189b2012-06-20 16:38:30 -070020827 @see
20828 @return Result of the function call
20829*/
20830WDI_Status
20831WDI_ProcessMissedBeaconInd
Jeff Johnsone7245742012-09-05 17:12:55 -070020832(
Jeff Johnson295189b2012-06-20 16:38:30 -070020833 WDI_ControlBlockType* pWDICtx,
20834 WDI_EventInfoType* pEventData
20835)
20836{
20837 WDI_Status wdiStatus;
20838 eHalStatus halStatus;
20839 WDI_LowLevelIndType wdiInd;
Leela Venkata Kiran Kumar Reddy Chirala3ca17902013-02-27 19:50:05 -080020840 tpHalMissedBeaconIndParams halMissedBeaconIndParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070020841 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20842
20843 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020844 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020845 -------------------------------------------------------------------------*/
20846 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20847 ( NULL == pEventData->pEventData))
20848 {
20849 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020850 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020851 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020852 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020853 }
Leela Venkata Kiran Kumar Reddy Chirala3ca17902013-02-27 19:50:05 -080020854 halMissedBeaconIndParams = (tpHalMissedBeaconIndParams)pEventData->pEventData;
Jeff Johnson295189b2012-06-20 16:38:30 -070020855 /*-------------------------------------------------------------------------
20856 Extract indication and send it to UMAC
20857 -------------------------------------------------------------------------*/
20858 /*! TO DO: Parameters need to be unpacked according to HAL struct*/
20859 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070020860 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070020861
20862 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020863 wdiInd.wdiIndicationType = WDI_MISSED_BEACON_IND;
Leela Venkata Kiran Kumar Reddy Chirala3ca17902013-02-27 19:50:05 -080020864 wdiInd.wdiIndicationData.wdiMissedBeaconInd.bssIdx =
20865 halMissedBeaconIndParams->bssIdx;
ltimariub77f24b2013-01-24 18:54:33 -080020866 if ( pWDICtx->wdiLowLevelIndCB )
20867 {
20868 /*Notify UMAC*/
20869 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
20870 }
Jeff Johnsone7245742012-09-05 17:12:55 -070020871
20872 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020873}/*WDI_ProcessMissedBeaconInd*/
20874
20875
20876/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020877 @brief Process Unk Addr Frame Indication function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070020878 an indication of this kind is being received over the
20879 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020880
20881 @param pWDICtx: pointer to the WLAN DAL context
20882 pEventData: pointer to the event information structure
20883
Jeff Johnson295189b2012-06-20 16:38:30 -070020884 @see
20885 @return Result of the function call
20886*/
20887WDI_Status
20888WDI_ProcessUnkAddrFrameInd
Jeff Johnsone7245742012-09-05 17:12:55 -070020889(
Jeff Johnson295189b2012-06-20 16:38:30 -070020890 WDI_ControlBlockType* pWDICtx,
20891 WDI_EventInfoType* pEventData
20892)
20893{
20894 WDI_Status wdiStatus;
20895 eHalStatus halStatus;
20896 WDI_LowLevelIndType wdiInd;
20897 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20898
20899 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020900 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020901 -------------------------------------------------------------------------*/
20902 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20903 ( NULL == pEventData->pEventData))
20904 {
20905 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020906 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020907 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020908 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020909 }
20910
20911 /*-------------------------------------------------------------------------
20912 Extract indication and send it to UMAC
20913 -------------------------------------------------------------------------*/
20914 /*! TO DO: Parameters need to be unpacked according to HAL struct*/
20915 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070020916 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070020917
20918 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020919 wdiInd.wdiIndicationType = WDI_UNKNOWN_ADDR2_FRAME_RX_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070020920 /* ! TO DO - fill in from HAL struct:
20921 wdiInd.wdiIndicationData.wdiUnkAddr2FrmInfo*/
20922
ltimariub77f24b2013-01-24 18:54:33 -080020923 if ( pWDICtx->wdiLowLevelIndCB )
20924 {
20925 /*Notify UMAC*/
20926 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
20927 }
Jeff Johnsone7245742012-09-05 17:12:55 -070020928
20929 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020930}/*WDI_ProcessUnkAddrFrameInd*/
20931
20932
20933/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020934 @brief Process MIC Failure Indication function (called when an
Jeff Johnson295189b2012-06-20 16:38:30 -070020935 indication of this kind is being received over the bus
20936 from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020937
20938 @param pWDICtx: pointer to the WLAN DAL context
20939 pEventData: pointer to the event information structure
20940
Jeff Johnson295189b2012-06-20 16:38:30 -070020941 @see
20942 @return Result of the function call
20943*/
20944WDI_Status
20945WDI_ProcessMicFailureInd
Jeff Johnsone7245742012-09-05 17:12:55 -070020946(
Jeff Johnson295189b2012-06-20 16:38:30 -070020947 WDI_ControlBlockType* pWDICtx,
20948 WDI_EventInfoType* pEventData
20949)
20950{
20951 WDI_LowLevelIndType wdiInd;
20952 tpSirMicFailureInd pHalMicFailureInd;
20953
20954 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20955
20956 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020957 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020958 -------------------------------------------------------------------------*/
20959 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20960 ( NULL == pEventData->pEventData))
20961 {
20962 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020963 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020964 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020965 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020966 }
Jeff Johnsone7245742012-09-05 17:12:55 -070020967
Jeff Johnson295189b2012-06-20 16:38:30 -070020968 pHalMicFailureInd = (tpSirMicFailureInd)pEventData->pEventData;
20969 /*-------------------------------------------------------------------------
20970 Extract indication and send it to UMAC
20971 -------------------------------------------------------------------------*/
20972
20973 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020974 wdiInd.wdiIndicationType = WDI_MIC_FAILURE_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070020975 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.bssId,
20976 pHalMicFailureInd->bssId, WDI_MAC_ADDR_LEN);
20977 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.macSrcAddr,
20978 pHalMicFailureInd->info.srcMacAddr, WDI_MAC_ADDR_LEN);
20979 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.macTaAddr,
20980 pHalMicFailureInd->info.taMacAddr, WDI_MAC_ADDR_LEN);
20981 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.macDstAddr,
20982 pHalMicFailureInd->info.dstMacAddr, WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070020983 wdiInd.wdiIndicationData.wdiMICFailureInfo.ucMulticast =
Jeff Johnson295189b2012-06-20 16:38:30 -070020984 pHalMicFailureInd->info.multicast;
Jeff Johnsone7245742012-09-05 17:12:55 -070020985 wdiInd.wdiIndicationData.wdiMICFailureInfo.ucIV1 =
Jeff Johnson295189b2012-06-20 16:38:30 -070020986 pHalMicFailureInd->info.IV1;
Jeff Johnsone7245742012-09-05 17:12:55 -070020987 wdiInd.wdiIndicationData.wdiMICFailureInfo.keyId=
Jeff Johnson295189b2012-06-20 16:38:30 -070020988 pHalMicFailureInd->info.keyId;
20989 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.TSC,
20990 pHalMicFailureInd->info.TSC,WDI_CIPHER_SEQ_CTR_SIZE);
20991 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.macRxAddr,
20992 pHalMicFailureInd->info.rxMacAddr, WDI_MAC_ADDR_LEN);
ltimariub77f24b2013-01-24 18:54:33 -080020993
20994 if ( pWDICtx->wdiLowLevelIndCB )
20995 {
20996 /*Notify UMAC*/
20997 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
20998 }
Jeff Johnsone7245742012-09-05 17:12:55 -070020999
21000 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021001}/*WDI_ProcessMicFailureInd*/
21002
21003
21004/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021005 @brief Process Fatal Failure Indication function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070021006 an indication of this kind is being received over the
21007 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070021008
21009 @param pWDICtx: pointer to the WLAN DAL context
21010 pEventData: pointer to the event information structure
21011
Jeff Johnson295189b2012-06-20 16:38:30 -070021012 @see
21013 @return Result of the function call
21014*/
21015WDI_Status
21016WDI_ProcessFatalErrorInd
Jeff Johnsone7245742012-09-05 17:12:55 -070021017(
Jeff Johnson295189b2012-06-20 16:38:30 -070021018 WDI_ControlBlockType* pWDICtx,
21019 WDI_EventInfoType* pEventData
21020)
21021{
21022 WDI_Status wdiStatus;
21023 eHalStatus halStatus;
21024 WDI_LowLevelIndType wdiInd;
21025 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21026
21027 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021028 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021029 -------------------------------------------------------------------------*/
21030 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21031 ( NULL == pEventData->pEventData))
21032 {
21033 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021034 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021035 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021036 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021037 }
21038
21039 /*-------------------------------------------------------------------------
21040 Extract indication and send it to UMAC
21041 -------------------------------------------------------------------------*/
21042
21043 /*! TO DO: Parameters need to be unpacked according to HAL struct*/
21044 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070021045 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070021046
21047 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
21048 "Fatal failure received from device %d ", halStatus );
Jeff Johnsone7245742012-09-05 17:12:55 -070021049
Jeff Johnson295189b2012-06-20 16:38:30 -070021050 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021051 wdiInd.wdiIndicationType = WDI_FATAL_ERROR_IND;
21052 wdiInd.wdiIndicationData.usErrorCode = WDI_ERR_DEV_INTERNAL_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021053
ltimariub77f24b2013-01-24 18:54:33 -080021054 if ( pWDICtx->wdiLowLevelIndCB )
21055 {
21056 /*Notify UMAC*/
21057 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
21058 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021059
21060 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021061}/*WDI_ProcessFatalErrorInd*/
21062
21063/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021064 @brief Process Delete STA Indication function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070021065 an indication of this kind is being received over the
21066 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070021067
21068 @param pWDICtx: pointer to the WLAN DAL context
21069 pEventData: pointer to the event information structure
21070
Jeff Johnson295189b2012-06-20 16:38:30 -070021071 @see
21072 @return Result of the function call
21073*/
21074WDI_Status
21075WDI_ProcessDelSTAInd
Jeff Johnsone7245742012-09-05 17:12:55 -070021076(
Jeff Johnson295189b2012-06-20 16:38:30 -070021077 WDI_ControlBlockType* pWDICtx,
21078 WDI_EventInfoType* pEventData
21079)
21080{
21081 tDeleteStaContextParams halDelSTACtx;
21082 WDI_LowLevelIndType wdiInd;
21083 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21084
21085 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021086 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021087 -------------------------------------------------------------------------*/
21088 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21089 ( NULL == pEventData->pEventData))
21090 {
21091 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021092 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021093 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021094 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021095 }
21096
21097 /*-------------------------------------------------------------------------
21098 Extract indication and send it to UMAC
21099 -------------------------------------------------------------------------*/
21100
21101 /* Parameters need to be unpacked according to HAL struct*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021102 wpalMemoryCopy( &halDelSTACtx,
21103 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070021104 sizeof(halDelSTACtx));
21105
21106 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021107 wdiInd.wdiIndicationType = WDI_DEL_STA_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070021108
21109 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiDeleteSTAIndType.macADDR2,
21110 halDelSTACtx.addr2, WDI_MAC_ADDR_LEN);
21111 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiDeleteSTAIndType.macBSSID,
21112 halDelSTACtx.bssId, WDI_MAC_ADDR_LEN);
21113
Jeff Johnsone7245742012-09-05 17:12:55 -070021114 wdiInd.wdiIndicationData.wdiDeleteSTAIndType.usAssocId =
Jeff Johnson295189b2012-06-20 16:38:30 -070021115 halDelSTACtx.assocId;
Jeff Johnsone7245742012-09-05 17:12:55 -070021116 wdiInd.wdiIndicationData.wdiDeleteSTAIndType.ucSTAIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070021117 halDelSTACtx.staId;
Jeff Johnsone7245742012-09-05 17:12:55 -070021118 wdiInd.wdiIndicationData.wdiDeleteSTAIndType.wptReasonCode =
21119 halDelSTACtx.reasonCode;
Jeff Johnson295189b2012-06-20 16:38:30 -070021120
ltimariub77f24b2013-01-24 18:54:33 -080021121 if ( pWDICtx->wdiLowLevelIndCB )
21122 {
21123 /*Notify UMAC*/
21124 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
21125 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021126
21127 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021128}/*WDI_ProcessDelSTAInd*/
21129
21130/**
21131*@brief Process Coex Indication function (called when
21132 an indication of this kind is being received over the
21133 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070021134
21135 @param pWDICtx: pointer to the WLAN DAL context
21136 pEventData: pointer to the event information structure
21137
Jeff Johnson295189b2012-06-20 16:38:30 -070021138 @see
21139 @return Result of the function call
21140*/
21141WDI_Status
21142WDI_ProcessCoexInd
Jeff Johnsone7245742012-09-05 17:12:55 -070021143(
Jeff Johnson295189b2012-06-20 16:38:30 -070021144 WDI_ControlBlockType* pWDICtx,
21145 WDI_EventInfoType* pEventData
21146)
21147{
21148 WDI_LowLevelIndType wdiInd;
21149 tCoexIndMsg halCoexIndMsg;
21150 wpt_uint32 index;
21151 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21152
21153 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021154 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021155 -------------------------------------------------------------------------*/
21156 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21157 ( NULL == pEventData->pEventData ))
21158 {
21159 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021160 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021161 WDI_ASSERT( 0 );
Jeff Johnsone7245742012-09-05 17:12:55 -070021162 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021163 }
21164
21165 /*-------------------------------------------------------------------------
21166 Extract indication and send it to UMAC
21167 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021168 wpalMemoryCopy( &halCoexIndMsg.coexIndParams,
21169 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070021170 sizeof(halCoexIndMsg.coexIndParams) );
21171
21172 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021173 wdiInd.wdiIndicationType = WDI_COEX_IND;
21174 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndType = halCoexIndMsg.coexIndParams.coexIndType;
Jeff Johnson295189b2012-06-20 16:38:30 -070021175 for (index = 0; index < WDI_COEX_IND_DATA_SIZE; index++)
21176 {
Jeff Johnsone7245742012-09-05 17:12:55 -070021177 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[index] = halCoexIndMsg.coexIndParams.coexIndData[index];
Jeff Johnson295189b2012-06-20 16:38:30 -070021178 }
21179
21180 // DEBUG
21181 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
21182 "[COEX WDI] Coex Ind Type (%x) data (%x %x %x %x)",
Jeff Johnsone7245742012-09-05 17:12:55 -070021183 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndType,
21184 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[0],
21185 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[1],
21186 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[2],
21187 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[3] );
Jeff Johnson295189b2012-06-20 16:38:30 -070021188
ltimariub77f24b2013-01-24 18:54:33 -080021189 if ( pWDICtx->wdiLowLevelIndCB )
21190 {
21191 /*Notify UMAC*/
21192 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
21193 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021194
21195 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021196}/*WDI_ProcessCoexInd*/
21197
21198/**
21199*@brief Process Tx Complete Indication function (called when
21200 an indication of this kind is being received over the
21201 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070021202
21203 @param pWDICtx: pointer to the WLAN DAL context
21204 pEventData: pointer to the event information structure
21205
Jeff Johnson295189b2012-06-20 16:38:30 -070021206 @see
21207 @return Result of the function call
21208*/
21209WDI_Status
21210WDI_ProcessTxCompleteInd
Jeff Johnsone7245742012-09-05 17:12:55 -070021211(
Jeff Johnson295189b2012-06-20 16:38:30 -070021212 WDI_ControlBlockType* pWDICtx,
21213 WDI_EventInfoType* pEventData
21214)
21215{
21216 WDI_LowLevelIndType wdiInd;
21217 tTxComplIndMsg halTxComplIndMsg;
21218 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21219
21220 /*-------------------------------------------------------------------------
21221 Sanity check
21222 -------------------------------------------------------------------------*/
21223 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21224 ( NULL == pEventData->pEventData ))
21225 {
21226 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021227 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021228 WDI_ASSERT( 0 );
21229 return WDI_STATUS_E_FAILURE;
21230 }
21231
21232 /*-------------------------------------------------------------------------
21233 Extract indication and send it to UMAC
21234 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021235 wpalMemoryCopy( &halTxComplIndMsg.txComplParams,
21236 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070021237 sizeof(halTxComplIndMsg.txComplParams) );
21238
21239 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021240 wdiInd.wdiIndicationType = WDI_TX_COMPLETE_IND;
21241 wdiInd.wdiIndicationData.tx_complete_status
21242 = halTxComplIndMsg.txComplParams.status;
Jeff Johnson295189b2012-06-20 16:38:30 -070021243
ltimariub77f24b2013-01-24 18:54:33 -080021244 if ( pWDICtx->wdiLowLevelIndCB )
21245 {
21246 /*Notify UMAC*/
21247 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
21248 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021249
21250 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021251}/*WDI_ProcessTxCompleteInd*/
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053021252#ifdef FEATURE_WLAN_TDLS
21253/**
21254*@brief Process TDLS Indication function (called when
21255 an indication of this kind is being received over the
21256 bus from HAL)
Jeff Johnson295189b2012-06-20 16:38:30 -070021257
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053021258 @param pWDICtx: pointer to the WLAN DAL context
21259 pEventData: pointer to the event information structure
21260
21261 @see
21262 @return Result of the function call
21263*/
21264WDI_Status
21265WDI_ProcessTdlsInd
21266(
21267 WDI_ControlBlockType* pWDICtx,
21268 WDI_EventInfoType* pEventData
21269)
21270{
21271 WDI_LowLevelIndType wdiInd;
21272 tTdlsIndMsg halTdlsIndMsg;
21273 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21274
21275 /*-------------------------------------------------------------------------
21276 Sanity check
21277 -------------------------------------------------------------------------*/
21278 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21279 ( NULL == pEventData->pEventData ))
21280 {
21281 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
21282 "%s: Invalid parameters", __func__);
21283 WDI_ASSERT( 0 );
21284 return WDI_STATUS_E_FAILURE;
21285 }
21286
21287 /*-------------------------------------------------------------------------
21288 Extract indication and send it to UMAC
21289 -------------------------------------------------------------------------*/
21290 wpalMemoryCopy( &halTdlsIndMsg.tdlsIndParams,
21291 pEventData->pEventData,
21292 sizeof(halTdlsIndMsg.tdlsIndParams) );
21293
21294 /*Fill in the indication parameters*/
21295 wdiInd.wdiIndicationType = WDI_TDLS_IND;
21296
21297 wdiInd.wdiIndicationData.wdiTdlsIndInfo.status
21298 = halTdlsIndMsg.tdlsIndParams.status;
21299
21300 wdiInd.wdiIndicationData.wdiTdlsIndInfo.staIdx
21301 = halTdlsIndMsg.tdlsIndParams.staIdx;
21302
21303 wdiInd.wdiIndicationData.wdiTdlsIndInfo.reasonCode
21304 = halTdlsIndMsg.tdlsIndParams.reasonCode;
21305
Atul Mittalbb2aad02014-09-22 19:09:36 +053021306 wdiInd.wdiIndicationData.wdiTdlsIndInfo.assocId
21307 = halTdlsIndMsg.tdlsIndParams.assocId;
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053021308 /*Notify UMAC*/
21309 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
21310
21311 return WDI_STATUS_SUCCESS;
21312}/*WDI_ProcessTdlsInd*/
21313#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070021314/**
Viral Modid86bde22012-12-10 13:09:21 -080021315*@brief Process Noa Start Indication function (called when
21316 an indication of this kind is being received over the
21317 bus from HAL)
21318
21319 @param pWDICtx: pointer to the WLAN DAL context
21320 pEventData: pointer to the event information structure
21321
21322 @see
21323 @return Result of the function call
21324*/
21325WDI_Status
21326WDI_ProcessP2pNoaStartInd
21327(
21328 WDI_ControlBlockType* pWDICtx,
21329 WDI_EventInfoType* pEventData
21330)
21331{
21332 WDI_LowLevelIndType wdiInd;
21333 tNoaStartIndMsg halNoaStartIndMsg;
21334 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21335
21336 /*-------------------------------------------------------------------------
21337 Sanity check
21338 -------------------------------------------------------------------------*/
21339 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21340 ( NULL == pEventData->pEventData ))
21341 {
21342 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
21343 "%s: Invalid parameters", __func__);
21344 WDI_ASSERT( 0 );
21345 return WDI_STATUS_E_FAILURE;
21346 }
21347
21348 /*-------------------------------------------------------------------------
21349 Extract indication and send it to UMAC
21350 -------------------------------------------------------------------------*/
21351 wpalMemoryCopy( &halNoaStartIndMsg.noaStartIndParams,
21352 pEventData->pEventData,
21353 sizeof(halNoaStartIndMsg.noaStartIndParams) );
21354
21355 /*Fill in the indication parameters*/
21356 wdiInd.wdiIndicationType = WDI_P2P_NOA_START_IND;
21357
21358 wdiInd.wdiIndicationData.wdiP2pNoaStartInfo.status
21359 = halNoaStartIndMsg.noaStartIndParams.status;
21360
21361 wdiInd.wdiIndicationData.wdiP2pNoaStartInfo.bssIdx
21362 = halNoaStartIndMsg.noaStartIndParams.bssIdx;
21363
21364 /*Notify UMAC*/
21365 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
21366
21367 return WDI_STATUS_SUCCESS;
21368}/*WDI_ProcessNoaAttrInd*/
21369
21370/**
Jeff Johnson295189b2012-06-20 16:38:30 -070021371*@brief Process Noa Attr Indication function (called when
21372 an indication of this kind is being received over the
21373 bus from HAL)
21374
21375 @param pWDICtx: pointer to the WLAN DAL context
21376 pEventData: pointer to the event information structure
21377
21378 @see
21379 @return Result of the function call
21380*/
21381WDI_Status
21382WDI_ProcessP2pNoaAttrInd
21383(
21384 WDI_ControlBlockType* pWDICtx,
21385 WDI_EventInfoType* pEventData
21386)
21387{
21388 WDI_LowLevelIndType wdiInd;
21389 tNoaAttrIndMsg halNoaAttrIndMsg;
21390 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21391
21392 /*-------------------------------------------------------------------------
21393 Sanity check
21394 -------------------------------------------------------------------------*/
21395 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21396 ( NULL == pEventData->pEventData ))
21397 {
21398 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021399 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021400 WDI_ASSERT( 0 );
21401 return WDI_STATUS_E_FAILURE;
21402 }
21403
21404 /*-------------------------------------------------------------------------
21405 Extract indication and send it to UMAC
21406 -------------------------------------------------------------------------*/
21407 wpalMemoryCopy( &halNoaAttrIndMsg.noaAttrIndParams,
21408 pEventData->pEventData,
21409 sizeof(halNoaAttrIndMsg.noaAttrIndParams) );
21410
21411 /*Fill in the indication parameters*/
21412 wdiInd.wdiIndicationType = WDI_P2P_NOA_ATTR_IND;
Jeff Johnsone7245742012-09-05 17:12:55 -070021413
Jeff Johnson295189b2012-06-20 16:38:30 -070021414 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.status
21415 = halNoaAttrIndMsg.noaAttrIndParams.status;
Jeff Johnsone7245742012-09-05 17:12:55 -070021416
Jeff Johnson295189b2012-06-20 16:38:30 -070021417 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.ucIndex
21418 = halNoaAttrIndMsg.noaAttrIndParams.index;
21419 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.ucOppPsFlag
21420 = halNoaAttrIndMsg.noaAttrIndParams.oppPsFlag;
21421 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.usCtWin
21422 = halNoaAttrIndMsg.noaAttrIndParams.ctWin;
Jeff Johnsone7245742012-09-05 17:12:55 -070021423
Jeff Johnson295189b2012-06-20 16:38:30 -070021424 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.usNoa1IntervalCnt
21425 = halNoaAttrIndMsg.noaAttrIndParams.uNoa1IntervalCnt;
21426 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa1Duration
21427 = halNoaAttrIndMsg.noaAttrIndParams.uNoa1Duration;
21428 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa1Interval
21429 = halNoaAttrIndMsg.noaAttrIndParams.uNoa1Interval;
21430 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa1StartTime
21431 = halNoaAttrIndMsg.noaAttrIndParams.uNoa1StartTime;
Jeff Johnsone7245742012-09-05 17:12:55 -070021432
Jeff Johnson295189b2012-06-20 16:38:30 -070021433 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.usNoa2IntervalCnt
21434 = halNoaAttrIndMsg.noaAttrIndParams.uNoa2IntervalCnt;
21435 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa2Duration
21436 = halNoaAttrIndMsg.noaAttrIndParams.uNoa2Duration;
21437 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa2Interval
21438 = halNoaAttrIndMsg.noaAttrIndParams.uNoa2Interval;
21439 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa2StartTime
21440 = halNoaAttrIndMsg.noaAttrIndParams.uNoa2StartTime;
21441
ltimariub77f24b2013-01-24 18:54:33 -080021442 if ( pWDICtx->wdiLowLevelIndCB )
21443 {
21444 /*Notify UMAC*/
21445 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
21446 }
Jeff Johnson295189b2012-06-20 16:38:30 -070021447
21448 return WDI_STATUS_SUCCESS;
21449}/*WDI_ProcessNoaAttrInd*/
Jeff Johnson295189b2012-06-20 16:38:30 -070021450
21451/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021452 @brief Process Tx PER Hit Indication function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070021453 an indication of this kind is being received over the
21454 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070021455
21456 @param pWDICtx: pointer to the WLAN DAL context
21457 pEventData: pointer to the event information structure
21458
Jeff Johnson295189b2012-06-20 16:38:30 -070021459 @see
21460 @return Result of the function call
21461*/
21462WDI_Status
21463WDI_ProcessTxPerHitInd
Jeff Johnsone7245742012-09-05 17:12:55 -070021464(
Jeff Johnson295189b2012-06-20 16:38:30 -070021465 WDI_ControlBlockType* pWDICtx,
21466 WDI_EventInfoType* pEventData
21467)
21468{
21469 WDI_LowLevelIndType wdiInd;
21470 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Jeff Johnsone7245742012-09-05 17:12:55 -070021471
Jeff Johnson295189b2012-06-20 16:38:30 -070021472 /*-------------------------------------------------------------------------
21473 Extract indication and send it to UMAC
21474 -------------------------------------------------------------------------*/
21475 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021476 wdiInd.wdiIndicationType = WDI_TX_PER_HIT_IND;
21477
ltimariub77f24b2013-01-24 18:54:33 -080021478 if ( pWDICtx->wdiLowLevelIndCB )
21479 {
21480 /*Notify UMAC*/
21481 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
21482 }
Jeff Johnson295189b2012-06-20 16:38:30 -070021483
Jeff Johnsone7245742012-09-05 17:12:55 -070021484 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021485}/*WDI_ProcessTxPerHitInd*/
21486
Jeff Johnson295189b2012-06-20 16:38:30 -070021487/**
Yue Mab9c86f42013-08-14 15:59:08 -070021488 @brief Process Periodic Tx Pattern Fw Indication function
21489
21490 @param pWDICtx: pointer to the WLAN DAL context
21491 pEventData: pointer to the event information structure
21492
21493 @see
21494 @return Result of the function call
21495*/
21496WDI_Status
21497WDI_ProcessPeriodicTxPtrnFwInd
21498(
21499 WDI_ControlBlockType* pWDICtx,
21500 WDI_EventInfoType* pEventData
21501)
21502{
21503 WDI_LowLevelIndType wdiInd;
21504
21505 /*-------------------------------------------------------------------------
21506 Sanity check
21507 -------------------------------------------------------------------------*/
21508 if ((NULL == pWDICtx) || (NULL == pEventData) ||
21509 (NULL == pEventData->pEventData))
21510 {
21511 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
21512 "%s: Invalid parameters", __func__);
21513 WDI_ASSERT(0);
21514 return WDI_STATUS_E_FAILURE;
21515 }
21516
21517 /*-------------------------------------------------------------------------
21518 Extract indication and send it to UMAC
21519 -------------------------------------------------------------------------*/
21520 wpalMemoryCopy(&(wdiInd.wdiIndicationData.wdiPeriodicTxPtrnFwInd),
21521 (tHalPeriodicTxPtrnFwInd *)pEventData->pEventData,
21522 sizeof(tHalPeriodicTxPtrnFwInd));
21523
21524 if (pWDICtx->wdiLowLevelIndCB)
21525 {
21526 /*Notify UMAC*/
21527 pWDICtx->wdiLowLevelIndCB(&wdiInd, pWDICtx->pIndUserData);
21528 }
21529
21530 return WDI_STATUS_SUCCESS;
21531}
21532
21533/**
Jeff Johnson295189b2012-06-20 16:38:30 -070021534 @brief WDI_ProcessFTMCommandReq
21535 Process FTM Command, simply route to HAL
Jeff Johnsone7245742012-09-05 17:12:55 -070021536
21537 @param pWDICtx: pointer to the WLAN DAL context
21538 pEventData: pointer to the event information structure
21539
Jeff Johnson295189b2012-06-20 16:38:30 -070021540 @see
21541 @return Result of the function call
21542*/
21543WDI_Status
21544WDI_ProcessFTMCommandReq
Jeff Johnsone7245742012-09-05 17:12:55 -070021545(
Jeff Johnson295189b2012-06-20 16:38:30 -070021546 WDI_ControlBlockType* pWDICtx,
21547 WDI_EventInfoType* pEventData
21548)
21549{
21550 WDI_FTMCommandReqType *ftmCommandReq = NULL;
21551 wpt_uint8 *ftmCommandBuffer = NULL;
21552 wpt_uint16 dataOffset;
21553 wpt_uint16 bufferSize;
21554 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021555 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021556 -------------------------------------------------------------------------*/
21557 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21558 ( NULL == pEventData->pEventData))
21559
21560 {
21561 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021562 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021563 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021564 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021565 }
21566
21567 ftmCommandReq = (WDI_FTMCommandReqType *)pEventData->pEventData;
21568
21569 /* Get MSG Buffer */
21570 WDI_GetMessageBuffer(pWDICtx,
21571 WDI_FTM_CMD_REQ,
21572 ftmCommandReq->bodyLength,
21573 &ftmCommandBuffer,
21574 &dataOffset,
21575 &bufferSize);
21576
21577 wpalMemoryCopy(ftmCommandBuffer + dataOffset,
21578 ftmCommandReq->FTMCommandBody,
21579 ftmCommandReq->bodyLength);
21580
21581 /* Send MSG */
21582 return WDI_SendMsg(pWDICtx,
21583 ftmCommandBuffer,
21584 bufferSize,
21585 pEventData->pCBfnc,
21586 pEventData->pUserData,
21587 WDI_FTM_CMD_RESP);
21588}
21589
21590/**
21591 @brief WDI_ProcessFTMCommandRsp
21592 Process FTM Command Response from HAL, simply route to HDD FTM
Jeff Johnsone7245742012-09-05 17:12:55 -070021593
21594 @param pWDICtx: pointer to the WLAN DAL context
21595 pEventData: pointer to the event information structure
21596
Jeff Johnson295189b2012-06-20 16:38:30 -070021597 @see
21598 @return Result of the function call
21599*/
21600WDI_Status
21601WDI_ProcessFTMCommandRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070021602(
Jeff Johnson295189b2012-06-20 16:38:30 -070021603 WDI_ControlBlockType* pWDICtx,
21604 WDI_EventInfoType* pEventData
21605)
21606{
21607 WDI_FTMCommandRspCb ftmCMDRspCb;
21608 tProcessPttRspParams *ftmCMDRspData = NULL;
21609 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21610
21611 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021612 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021613 -------------------------------------------------------------------------*/
21614 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21615 ( NULL == pEventData->pEventData))
21616 {
21617 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021618 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021619 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021620 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021621 }
21622
21623 ftmCMDRspCb = (WDI_FTMCommandRspCb)pWDICtx->pfncRspCB;
21624
21625 ftmCMDRspData = (tProcessPttRspParams *)pEventData->pEventData;
21626
Jeff Johnsone7245742012-09-05 17:12:55 -070021627 wpalMemoryCopy((void *)pWDICtx->ucFTMCommandRspBuffer,
21628 (void *)&ftmCMDRspData->pttMsgBuffer,
Jeff Johnson295189b2012-06-20 16:38:30 -070021629 ftmCMDRspData->pttMsgBuffer.msgBodyLength);
21630
21631 /*Notify UMAC*/
21632 ftmCMDRspCb((void *)pWDICtx->ucFTMCommandRspBuffer, pWDICtx->pRspCBUserData);
21633
Jeff Johnsone7245742012-09-05 17:12:55 -070021634 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021635}
Jeff Johnson295189b2012-06-20 16:38:30 -070021636/**
21637 @brief WDI_ProcessHalDumpCmdReq
21638 Process hal dump Command, simply route to HAL
Jeff Johnsone7245742012-09-05 17:12:55 -070021639
21640 @param pWDICtx: pointer to the WLAN DAL context
21641 pEventData: pointer to the event information structure
21642
Jeff Johnson295189b2012-06-20 16:38:30 -070021643 @see
21644 @return Result of the function call
21645*/
21646WDI_Status
21647WDI_ProcessHALDumpCmdReq
Jeff Johnsone7245742012-09-05 17:12:55 -070021648(
Jeff Johnson295189b2012-06-20 16:38:30 -070021649 WDI_ControlBlockType* pWDICtx,
21650 WDI_EventInfoType* pEventData
21651)
21652{
21653 WDI_HALDumpCmdReqParamsType* pwdiHALDumpCmdParams = NULL;
21654 WDI_HALDumpCmdRspCb wdiHALDumpCmdRspCb = NULL;
21655 wpt_uint16 usDataOffset = 0;
21656 wpt_uint16 usSendSize = 0;
21657 tHalDumpCmdReqMsg halDumpCmdReqMsg;
Jeff Johnsone7245742012-09-05 17:12:55 -070021658 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070021659
21660 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021661 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021662 -------------------------------------------------------------------------*/
21663 if (( NULL == pEventData ) ||
21664 ( NULL == pEventData->pEventData) ||
21665 ( NULL == pEventData->pCBfnc ))
21666 {
21667 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021668 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021669 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021670 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021671 }
21672
21673 pwdiHALDumpCmdParams = (WDI_HALDumpCmdReqParamsType*)pEventData->pEventData;
21674 wdiHALDumpCmdRspCb = (WDI_HALDumpCmdRspCb)pEventData->pCBfnc;
21675
21676 /* Copying the HAL DUMP Command Information HAL Structure*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021677 halDumpCmdReqMsg.dumpCmdReqParams.argument1 =
Jeff Johnson295189b2012-06-20 16:38:30 -070021678 pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.command;
Jeff Johnsone7245742012-09-05 17:12:55 -070021679 halDumpCmdReqMsg.dumpCmdReqParams.argument2 =
Jeff Johnson295189b2012-06-20 16:38:30 -070021680 pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.argument1;
Jeff Johnsone7245742012-09-05 17:12:55 -070021681 halDumpCmdReqMsg.dumpCmdReqParams.argument3 =
Jeff Johnson295189b2012-06-20 16:38:30 -070021682 pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.argument2;
Jeff Johnsone7245742012-09-05 17:12:55 -070021683 halDumpCmdReqMsg.dumpCmdReqParams.argument4 =
Jeff Johnson295189b2012-06-20 16:38:30 -070021684 pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.argument3;
Jeff Johnsone7245742012-09-05 17:12:55 -070021685 halDumpCmdReqMsg.dumpCmdReqParams.argument5 =
Jeff Johnson295189b2012-06-20 16:38:30 -070021686 pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.argument4;
Jeff Johnsone7245742012-09-05 17:12:55 -070021687
Jeff Johnson295189b2012-06-20 16:38:30 -070021688 /*-----------------------------------------------------------------------
21689 Get message buffer
21690 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021691 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_HAL_DUMP_CMD_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070021692 sizeof(halDumpCmdReqMsg.dumpCmdReqParams),
21693 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070021694 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070021695 (usDataOffset + sizeof(halDumpCmdReqMsg.dumpCmdReqParams) )))
21696 {
21697 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080021698 "Unable to get send buffer in HAL Dump Command req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070021699 pEventData, pwdiHALDumpCmdParams, wdiHALDumpCmdRspCb);
21700 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021701 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021702 }
21703
Jeff Johnsone7245742012-09-05 17:12:55 -070021704 wpalMemoryCopy( pSendBuffer+usDataOffset,
21705 &halDumpCmdReqMsg.dumpCmdReqParams,
21706 sizeof(halDumpCmdReqMsg.dumpCmdReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070021707
21708 pWDICtx->wdiReqStatusCB = pwdiHALDumpCmdParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070021709 pWDICtx->pReqStatusUserData = pwdiHALDumpCmdParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070021710
21711 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021712 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070021713 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021714 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
21715 wdiHALDumpCmdRspCb, pEventData->pUserData,
21716 WDI_HAL_DUMP_CMD_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070021717}
21718
21719/**
21720 @brief WDI_ProcessHalDumpCmdRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070021721 Process hal Dump Command Response from HAL, simply route to HDD
21722
21723 @param pWDICtx: pointer to the WLAN DAL context
21724 pEventData: pointer to the event information structure
21725
Jeff Johnson295189b2012-06-20 16:38:30 -070021726 @see
21727 @return Result of the function call
21728*/
21729WDI_Status
21730WDI_ProcessHALDumpCmdRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070021731(
Jeff Johnson295189b2012-06-20 16:38:30 -070021732 WDI_ControlBlockType* pWDICtx,
21733 WDI_EventInfoType* pEventData
21734)
21735{
21736 WDI_HALDumpCmdRspCb wdiHALDumpCmdRspCb;
Gopichand Nakkalafab3fae2013-01-07 15:01:01 -080021737 tHalDumpCmdRspParams halDumpCmdRspParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070021738 WDI_HALDumpCmdRspParamsType wdiHALDumpCmdRsp;
21739
21740 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021741 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021742 -------------------------------------------------------------------------*/
21743 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21744 ( NULL == pEventData->pEventData))
21745 {
21746 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021747 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021748 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021749 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021750 }
21751
Jeff Johnsone7245742012-09-05 17:12:55 -070021752 wdiHALDumpCmdRspCb = (WDI_HALDumpCmdRspCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070021753
21754 /*Initialize the WDI Response structure */
21755 wdiHALDumpCmdRsp.usBufferLen = 0;
21756 wdiHALDumpCmdRsp.pBuffer = NULL;
21757
Gopichand Nakkalafab3fae2013-01-07 15:01:01 -080021758 wpalMemoryCopy( &halDumpCmdRspParams,
21759 pEventData->pEventData,
21760 sizeof(tHalDumpCmdRspParams));
Jeff Johnsone7245742012-09-05 17:12:55 -070021761
21762 wdiHALDumpCmdRsp.wdiStatus =
Gopichand Nakkalafab3fae2013-01-07 15:01:01 -080021763 WDI_HAL_2_WDI_STATUS(halDumpCmdRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070021764
21765 if (( wdiHALDumpCmdRsp.wdiStatus == WDI_STATUS_SUCCESS) &&
Gopichand Nakkalafab3fae2013-01-07 15:01:01 -080021766 (halDumpCmdRspParams.rspLength != 0))
Jeff Johnson295189b2012-06-20 16:38:30 -070021767 {
21768 /* Copy the response data */
Gopichand Nakkalafab3fae2013-01-07 15:01:01 -080021769 wdiHALDumpCmdRsp.usBufferLen = halDumpCmdRspParams.rspLength;
21770 wdiHALDumpCmdRsp.pBuffer = wpalMemoryAllocate(halDumpCmdRspParams.rspLength);
21771
21772 wpalMemoryCopy( wdiHALDumpCmdRsp.pBuffer,
21773 &halDumpCmdRspParams.rspBuffer,
Gopichand Nakkala089c2582013-04-04 15:40:10 +053021774 halDumpCmdRspParams.rspLength);
Jeff Johnson295189b2012-06-20 16:38:30 -070021775 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021776
Jeff Johnson295189b2012-06-20 16:38:30 -070021777 /*Notify UMAC*/
21778 wdiHALDumpCmdRspCb(&wdiHALDumpCmdRsp, pWDICtx->pRspCBUserData);
21779
21780 if(wdiHALDumpCmdRsp.pBuffer != NULL)
21781 {
21782 /* Free the allocated buffer */
21783 wpalMemoryFree(wdiHALDumpCmdRsp.pBuffer);
21784 }
21785 return WDI_STATUS_SUCCESS;
21786}
21787
21788/*==========================================================================
21789 CONTRL TRANSPORT INTERACTION
Jeff Johnsone7245742012-09-05 17:12:55 -070021790
Jeff Johnson295189b2012-06-20 16:38:30 -070021791 Callback function registered with the control transport - for receiving
Jeff Johnsone7245742012-09-05 17:12:55 -070021792 notifications and packets
Jeff Johnson295189b2012-06-20 16:38:30 -070021793==========================================================================*/
21794/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021795 @brief This callback is invoked by the control transport
Jeff Johnson295189b2012-06-20 16:38:30 -070021796 when it wishes to send up a notification like the ones
21797 mentioned above.
Jeff Johnsone7245742012-09-05 17:12:55 -070021798
Jeff Johnson295189b2012-06-20 16:38:30 -070021799 @param
Jeff Johnsone7245742012-09-05 17:12:55 -070021800
21801 wctsHandle: handle to the control transport service
Jeff Johnson295189b2012-06-20 16:38:30 -070021802 wctsEvent: the event being notified
Jeff Johnsone7245742012-09-05 17:12:55 -070021803 wctsNotifyCBData: the callback data of the user
21804
Jeff Johnson295189b2012-06-20 16:38:30 -070021805 @see WCTS_OpenTransport
Jeff Johnsone7245742012-09-05 17:12:55 -070021806
21807 @return None
Jeff Johnson295189b2012-06-20 16:38:30 -070021808*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021809void
Jeff Johnson295189b2012-06-20 16:38:30 -070021810WDI_NotifyMsgCTSCB
21811(
Jeff Johnsone7245742012-09-05 17:12:55 -070021812 WCTS_HandleType wctsHandle,
Jeff Johnson295189b2012-06-20 16:38:30 -070021813 WCTS_NotifyEventType wctsEvent,
21814 void* wctsNotifyCBData
21815)
21816{
Jeff Johnsone7245742012-09-05 17:12:55 -070021817 WDI_ControlBlockType* pWDICtx = (WDI_ControlBlockType*)wctsNotifyCBData;
Jeff Johnson295189b2012-06-20 16:38:30 -070021818 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21819
21820 if (NULL == pWDICtx )
21821 {
21822 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021823 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021824 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021825 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070021826 }
21827
21828 if (WDI_CONTROL_BLOCK_MAGIC != pWDICtx->magic)
21829 {
21830 /* callback presumably occurred after close */
21831 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021832 "%s: Invalid control block", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070021833 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070021834 }
21835
21836 if ( WCTS_EVENT_OPEN == wctsEvent )
21837 {
21838 /*Flag must be set atomically as it is checked from incoming request
21839 functions*/
21840 wpalMutexAcquire(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070021841 pWDICtx->bCTOpened = eWLAN_PAL_TRUE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021842
21843 /*Nothing to do - so try to dequeue any pending request that may have
21844 occurred while we were trying to establish this*/
21845 WDI_DequeuePendingReq(pWDICtx);
Jeff Johnsone7245742012-09-05 17:12:55 -070021846 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnson295189b2012-06-20 16:38:30 -070021847 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021848 else if ( WCTS_EVENT_CLOSE == wctsEvent )
Jeff Johnson295189b2012-06-20 16:38:30 -070021849 {
21850 /*Flag must be set atomically as it is checked from incoming request
21851 functions*/
21852 wpalMutexAcquire(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070021853 pWDICtx->bCTOpened = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021854
21855 /*No other request will be processed from now on - fail all*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021856 WDI_ClearPendingRequests(pWDICtx);
Jeff Johnson295189b2012-06-20 16:38:30 -070021857 wpalMutexRelease(&pWDICtx->wptMutex);
21858
21859 /*Notify that the Control Channel is closed */
21860 wpalEventSet(&pWDICtx->wctsActionEvent);
21861 }
21862
21863}/*WDI_NotifyMsgCTSCB*/
21864
21865
21866/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021867 @brief This callback is invoked by the control transport
Jeff Johnson295189b2012-06-20 16:38:30 -070021868 when it wishes to send up a packet received over the
21869 bus.
Jeff Johnsone7245742012-09-05 17:12:55 -070021870
Jeff Johnson295189b2012-06-20 16:38:30 -070021871 @param
Jeff Johnsone7245742012-09-05 17:12:55 -070021872
21873 wctsHandle: handle to the control transport service
Jeff Johnson295189b2012-06-20 16:38:30 -070021874 pMsg: the packet
21875 uLen: the packet length
Jeff Johnsone7245742012-09-05 17:12:55 -070021876 wctsRxMsgCBData: the callback data of the user
21877
Jeff Johnson295189b2012-06-20 16:38:30 -070021878 @see WCTS_OpenTransport
Jeff Johnsone7245742012-09-05 17:12:55 -070021879
21880 @return None
Jeff Johnson295189b2012-06-20 16:38:30 -070021881*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021882void
21883WDI_RXMsgCTSCB
Jeff Johnson295189b2012-06-20 16:38:30 -070021884(
Jeff Johnsone7245742012-09-05 17:12:55 -070021885 WCTS_HandleType wctsHandle,
Jeff Johnson295189b2012-06-20 16:38:30 -070021886 void* pMsg,
21887 wpt_uint32 uLen,
21888 void* wctsRxMsgCBData
21889)
21890{
Jeff Johnsone7245742012-09-05 17:12:55 -070021891 tHalMsgHeader *pHalMsgHeader;
21892 WDI_EventInfoType wdiEventData;
Jeff Johnson295189b2012-06-20 16:38:30 -070021893 WDI_ControlBlockType* pWDICtx = (WDI_ControlBlockType*)wctsRxMsgCBData;
21894 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
21895
21896 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021897 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021898 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021899 if ((NULL == pWDICtx ) || ( NULL == pMsg ) ||
Jeff Johnson295189b2012-06-20 16:38:30 -070021900 ( uLen < sizeof(tHalMsgHeader)))
21901 {
21902 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021903 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021904 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021905 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070021906 }
21907
21908 if (WDI_CONTROL_BLOCK_MAGIC != pWDICtx->magic)
21909 {
21910 /* callback presumably occurred after close */
21911 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021912 "%s: Invalid control block", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070021913 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070021914 }
21915
Jeff Johnsone7245742012-09-05 17:12:55 -070021916 /*The RX Callback is expected to be serialized in the proper control thread
Jeff Johnson295189b2012-06-20 16:38:30 -070021917 context - so no serialization is necessary here
21918 ! - revisit this assumption */
21919
21920 pHalMsgHeader = (tHalMsgHeader *)pMsg;
21921
21922 if ( uLen != pHalMsgHeader->msgLen )
21923 {
21924 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
21925 "Invalid packet received from HAL - catastrophic failure");
Jeff Johnsone7245742012-09-05 17:12:55 -070021926 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_INVALID_RSP_FMT);
Katya Nigamf02ad012014-05-05 16:12:49 +053021927 wpalWlanReload();
21928
Jeff Johnsone7245742012-09-05 17:12:55 -070021929 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070021930 }
21931
21932 wdiEventData.wdiResponse = HAL_2_WDI_RSP_TYPE( pHalMsgHeader->msgType );
21933
21934 /*The message itself starts after the header*/
21935 wdiEventData.pEventData = (wpt_uint8*)pMsg + sizeof(tHalMsgHeader);
21936 wdiEventData.uEventDataSize = pHalMsgHeader->msgLen - sizeof(tHalMsgHeader);
21937 wdiEventData.pCBfnc = gWDICb.pfncRspCB;
21938 wdiEventData.pUserData = gWDICb.pRspCBUserData;
21939
21940
21941 if ( wdiEventData.wdiResponse == pWDICtx->wdiExpectedResponse )
21942 {
21943 /*Stop the timer as the response was received */
21944 /*!UT - check for potential race conditions between stop and response */
21945 wpalTimerStop(&pWDICtx->wptResponseTimer);
21946 }
21947 /* Check if we receive a response message which is not expected */
21948 else if ( wdiEventData.wdiResponse < WDI_HAL_IND_MIN )
21949 {
21950 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
21951 "Received response %s (%d) when expecting %s (%d) - catastrophic failure",
21952 WDI_getRespMsgString(wdiEventData.wdiResponse),
Jeff Johnsone7245742012-09-05 17:12:55 -070021953 wdiEventData.wdiResponse,
Jeff Johnson295189b2012-06-20 16:38:30 -070021954 WDI_getRespMsgString(pWDICtx->wdiExpectedResponse),
21955 pWDICtx->wdiExpectedResponse);
Sameer Thalappil4bb20cb2013-11-15 14:50:51 -080021956
21957 if (gWDICb.bEnableSSR == false)
21958 {
21959 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
21960 "SSR is not enabled on WDI timeout");
21961 WDI_DetectedDeviceError(pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
21962 return;
21963 }
21964 wpalWcnssResetIntr();
21965 /* if this timer fires, it means Riva did not receive the FIQ */
21966 wpalTimerStart(&pWDICtx->ssrTimer, WDI_SSR_TIMEOUT);
21967
Jeff Johnson295189b2012-06-20 16:38:30 -070021968 return;
21969 }
21970
21971 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
21972 "Rx smth from HAL: %d", wdiEventData.wdiResponse);
21973
21974 /*Post response event to the state machine*/
21975 WDI_PostMainEvent(pWDICtx, WDI_RESPONSE_EVENT, &wdiEventData);
21976
21977}/*WDI_RXMsgCTSCB*/
21978
21979
21980/*========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070021981 Internal Helper Routines
Jeff Johnson295189b2012-06-20 16:38:30 -070021982========================================================================*/
21983
21984/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021985 @brief WDI_CleanCB - internal helper routine used to clean the
Jeff Johnson295189b2012-06-20 16:38:30 -070021986 WDI Main Control Block
Jeff Johnsone7245742012-09-05 17:12:55 -070021987
Jeff Johnson295189b2012-06-20 16:38:30 -070021988 @param pWDICtx - pointer to the control block
21989
21990 @return Result of the function call
21991*/
21992WPT_INLINE WDI_Status
21993WDI_CleanCB
21994(
21995 WDI_ControlBlockType* pWDICtx
21996)
21997{
21998 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
21999
22000 /*Clean the WDI Control Block*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022001 wpalMemoryZero( pWDICtx, sizeof(*pWDICtx));
Jeff Johnson295189b2012-06-20 16:38:30 -070022002
Jeff Johnsone7245742012-09-05 17:12:55 -070022003 pWDICtx->uGlobalState = WDI_MAX_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -070022004 pWDICtx->ucMaxBssids = WDI_MAX_SUPPORTED_BSS;
22005 pWDICtx->ucMaxStations = WDI_MAX_SUPPORTED_STAS;
22006
22007 WDI_ResetAssocSessions( pWDICtx );
22008
22009 return WDI_STATUS_SUCCESS;
22010}/*WDI_CleanCB*/
22011
22012
22013/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022014 @brief Process request helper function
Jeff Johnson295189b2012-06-20 16:38:30 -070022015
Jeff Johnsone7245742012-09-05 17:12:55 -070022016
22017 @param pWDICtx: pointer to the WLAN DAL context
22018 pEventData: pointer to the event information structure
22019
Jeff Johnson295189b2012-06-20 16:38:30 -070022020 @see
22021 @return Result of the function call
22022*/
22023WPT_INLINE WDI_Status
22024WDI_ProcessRequest
22025(
22026 WDI_ControlBlockType* pWDICtx,
22027 WDI_EventInfoType* pEventData
22028)
22029{
22030 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
22031
Jeff Johnsone7245742012-09-05 17:12:55 -070022032 /*!! Skip sanity check as this is called from the FSM functionss which
Jeff Johnson295189b2012-06-20 16:38:30 -070022033 already checked these pointers*/
22034
22035 if (( pEventData->wdiRequest < WDI_MAX_UMAC_IND ) &&
22036 ( NULL != pfnReqProcTbl[pEventData->wdiRequest] ))
Jeff Johnsone7245742012-09-05 17:12:55 -070022037 {
Jeff Johnson295189b2012-06-20 16:38:30 -070022038 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080022039 "Calling request processing function for req %s (%d) %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070022040 WDI_getReqMsgString(pEventData->wdiRequest),
22041 pEventData->wdiRequest, pfnReqProcTbl[pEventData->wdiRequest]);
22042 return pfnReqProcTbl[pEventData->wdiRequest](pWDICtx, pEventData);
22043 }
22044 else
22045 {
22046 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070022047 "Operation %d is not yet implemented ",
Jeff Johnson295189b2012-06-20 16:38:30 -070022048 pEventData->wdiRequest);
22049 return WDI_STATUS_E_NOT_IMPLEMENT;
22050 }
22051}/*WDI_ProcessRequest*/
22052
22053
22054/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022055 @brief Get message helper function - it allocates memory for a
Jeff Johnson295189b2012-06-20 16:38:30 -070022056 message that is to be sent to HAL accross the bus and
Jeff Johnsone7245742012-09-05 17:12:55 -070022057 prefixes it with a send message header
22058
22059 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070022060 wdiReqType: type of the request being sent
22061 uBufferLen: message buffer len
22062 pMsgBuffer: resulting allocated buffer
22063 pusDataOffset: offset in the buffer where the caller
22064 can start copying its message data
22065 puBufferSize: the resulting buffer size (offset+buff
22066 len)
Jeff Johnsone7245742012-09-05 17:12:55 -070022067
Jeff Johnson295189b2012-06-20 16:38:30 -070022068 @see
22069 @return Result of the function call
22070*/
22071WDI_Status
22072WDI_GetMessageBuffer
Jeff Johnsone7245742012-09-05 17:12:55 -070022073(
22074 WDI_ControlBlockType* pWDICtx,
22075 WDI_RequestEnumType wdiReqType,
Jeff Johnson295189b2012-06-20 16:38:30 -070022076 wpt_uint16 usBufferLen,
Jeff Johnsone7245742012-09-05 17:12:55 -070022077 wpt_uint8** pMsgBuffer,
22078 wpt_uint16* pusDataOffset,
Jeff Johnson295189b2012-06-20 16:38:30 -070022079 wpt_uint16* pusBufferSize
22080)
22081{
22082 tHalMsgHeader halMsgHeader;
22083 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
22084
Jeff Johnsone7245742012-09-05 17:12:55 -070022085 /*!! No sanity check here as we trust the called - ! check this assumption
Jeff Johnson295189b2012-06-20 16:38:30 -070022086 again*/
22087
22088 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022089 Try to allocate message buffer from PAL
Jeff Johnson295189b2012-06-20 16:38:30 -070022090 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022091 *pusBufferSize = sizeof(halMsgHeader) + usBufferLen;
Jeff Johnson295189b2012-06-20 16:38:30 -070022092 *pMsgBuffer = (wpt_uint8*)wpalMemoryAllocate(*pusBufferSize);
22093 if ( NULL == *pMsgBuffer )
22094 {
22095 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
22096 "Unable to allocate message buffer for req %s (%d)",
22097 WDI_getReqMsgString(wdiReqType),
Jeff Johnsone7245742012-09-05 17:12:55 -070022098 wdiReqType);
Jeff Johnson295189b2012-06-20 16:38:30 -070022099 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070022100 return WDI_STATUS_MEM_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022101 }
22102
22103 /*-------------------------------------------------------------------------
22104 Fill in the message header
22105 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022106 halMsgHeader.msgType = WDI_2_HAL_REQ_TYPE(wdiReqType);
22107 /* Fill msgVersion */
22108#ifdef WLAN_FEATURE_11AC
22109 if (WDI_getFwWlanFeatCaps(DOT11AC))
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070022110 halMsgHeader.msgVersion = WLAN_HAL_MSG_VERSION1;
Jeff Johnsone7245742012-09-05 17:12:55 -070022111 else
22112#endif
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070022113 halMsgHeader.msgVersion = WLAN_HAL_MSG_VERSION0;
Jeff Johnson295189b2012-06-20 16:38:30 -070022114
Jeff Johnsone7245742012-09-05 17:12:55 -070022115 halMsgHeader.msgLen = sizeof(halMsgHeader) + usBufferLen;
22116 *pusDataOffset = sizeof(halMsgHeader);
22117 wpalMemoryCopy(*pMsgBuffer, &halMsgHeader, sizeof(halMsgHeader));
22118
22119 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070022120}/*WDI_GetMessageBuffer*/
22121
22122
22123/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022124 @brief Send message helper function - sends a message over the
Jeff Johnson295189b2012-06-20 16:38:30 -070022125 bus using the control tranport and saves some info in
Jeff Johnsone7245742012-09-05 17:12:55 -070022126 the CB
22127
22128 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070022129 pSendBuffer: buffer to be sent
Jeff Johnsone7245742012-09-05 17:12:55 -070022130
Jeff Johnson295189b2012-06-20 16:38:30 -070022131 usSendSize size of the buffer to be sent
22132 pRspCb: response callback - save in the WDI
22133 CB
22134 pUserData: user data associated with the
22135 callback
22136 wdiExpectedResponse: the code of the response that is
22137 expected to be rx-ed for this request
Jeff Johnsone7245742012-09-05 17:12:55 -070022138
Jeff Johnson295189b2012-06-20 16:38:30 -070022139 @see
22140 @return Result of the function call
22141*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022142WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070022143WDI_SendMsg
Jeff Johnsone7245742012-09-05 17:12:55 -070022144(
22145 WDI_ControlBlockType* pWDICtx,
22146 wpt_uint8* pSendBuffer,
22147 wpt_uint32 usSendSize,
22148 void* pRspCb,
Jeff Johnson295189b2012-06-20 16:38:30 -070022149 void* pUserData,
22150 WDI_ResponseEnumType wdiExpectedResponse
22151)
22152{
Jeff Johnsond13512a2012-07-17 11:42:19 -070022153 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080022154 wpt_uint32 ret;
Jeff Johnson295189b2012-06-20 16:38:30 -070022155 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
22156
22157 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022158 Save needed info in the CB
Jeff Johnson295189b2012-06-20 16:38:30 -070022159 ------------------------------------------------------------------------*/
22160 pWDICtx->pRspCBUserData = pUserData;
Jeff Johnsone7245742012-09-05 17:12:55 -070022161 pWDICtx->pfncRspCB = pRspCb;
22162 pWDICtx->wdiExpectedResponse = wdiExpectedResponse;
Jeff Johnson295189b2012-06-20 16:38:30 -070022163
22164 /*-----------------------------------------------------------------------
22165 Call the CTS to send this message over - free message afterwards
22166 - notify transport failure
22167 Note: CTS is reponsible for freeing the message buffer.
22168 -----------------------------------------------------------------------*/
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080022169 ret = WCTS_SendMessage(pWDICtx->wctsHandle, (void*)pSendBuffer, usSendSize);
22170 if ((eWLAN_PAL_STATUS_SUCCESS != ret) &&
22171 (eWLAN_PAL_STATUS_E_RESOURCES != ret))
Jeff Johnson295189b2012-06-20 16:38:30 -070022172 {
Jeff Johnsond13512a2012-07-17 11:42:19 -070022173 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Siddharth Bhalceddd5d2014-03-21 15:00:19 +053022174 "Failed to send message with expected response %s (%d)"
22175 " over the bus - catastrophic failure",
22176 WDI_getRespMsgString(pWDICtx->wdiExpectedResponse),
22177 pWDICtx->wdiExpectedResponse);
Jeff Johnson295189b2012-06-20 16:38:30 -070022178
Mahesh A Saptasagar329813b2014-12-15 12:16:51 +053022179 wdiStatus = (ret == eWLAN_PAL_STATUS_E_FAILURE) ?
22180 WDI_STATUS_DEV_INTERNAL_FAILURE : WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022181 }
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080022182 else
22183 {
22184 /* even when message was placed in CTS deferred Q, we will treat it
22185 success but log this info
22186 */
22187 if (eWLAN_PAL_STATUS_E_RESOURCES == ret)
22188 {
22189 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
22190 "WDI_SendMsg: message placed in CTS deferred Q, expected "
22191 "response %s (%d)",
22192 WDI_getRespMsgString(pWDICtx->wdiExpectedResponse),
22193 pWDICtx->wdiExpectedResponse);
Gopichand Nakkala3c5b0632012-12-23 08:30:59 -080022194 WDI_ASSERT(0);
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080022195 }
22196 }
Jeff Johnson295189b2012-06-20 16:38:30 -070022197
Jeff Johnsond13512a2012-07-17 11:42:19 -070022198 /*Check if originator provided a request status callback*/
Jeff Johnson295189b2012-06-20 16:38:30 -070022199 if ( NULL != pWDICtx->wdiReqStatusCB )
22200 {
Jeff Johnsond13512a2012-07-17 11:42:19 -070022201 /*Inform originator whether request went through or not*/
22202 WDI_ReqStatusCb callback = pWDICtx->wdiReqStatusCB;
22203 void *callbackContext = pWDICtx->pReqStatusUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070022204 pWDICtx->wdiReqStatusCB = NULL;
22205 pWDICtx->pReqStatusUserData = NULL;
Jeff Johnsond13512a2012-07-17 11:42:19 -070022206 callback(wdiStatus, callbackContext);
22207
22208 /*For WDI requests which have registered a request callback,
22209 inform the WDA caller of the same via setting the return value
22210 (wdiStatus) to WDI_STATUS_PENDING. This makes sure that WDA doesnt
22211 end up repeating the functonality in the req callback for the
22212 WDI_STATUS_E_FAILURE case*/
Mahesh A Saptasagar329813b2014-12-15 12:16:51 +053022213 if (wdiStatus != WDI_STATUS_SUCCESS)
22214 {
Jeff Johnsond13512a2012-07-17 11:42:19 -070022215 wdiStatus = WDI_STATUS_PENDING;
Mahesh A Saptasagar329813b2014-12-15 12:16:51 +053022216 }
Jeff Johnson295189b2012-06-20 16:38:30 -070022217 }
22218
Jeff Johnsond13512a2012-07-17 11:42:19 -070022219 if ( wdiStatus == WDI_STATUS_SUCCESS )
22220 {
Jeff Johnson295189b2012-06-20 16:38:30 -070022221 /*Start timer for the expected response */
22222 wpalTimerStart(&pWDICtx->wptResponseTimer, WDI_RESPONSE_TIMEOUT);
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080022223
22224 /*cache current timestamp for debugging */
Gopichand Nakkala3c5b0632012-12-23 08:30:59 -080022225 pWDICtx->uTimeStampRspTmrStart = wpalGetSystemTime();
Arif Hussain6c8947a2013-11-27 13:57:14 -080022226 pWDICtx->uArchTimeStampRspTmrStart = wpalGetArchCounterTime();
Jeff Johnsond13512a2012-07-17 11:42:19 -070022227 }
22228 else
22229 {
Jeff Johnson902c9832012-12-10 14:28:09 -080022230 /*Inform upper stack layers that a transport fatal error occurred*/
Jeff Johnsond13512a2012-07-17 11:42:19 -070022231 WDI_DetectedDeviceError(pWDICtx, WDI_ERR_TRANSPORT_FAILURE);
22232 }
Jeff Johnson295189b2012-06-20 16:38:30 -070022233
Jeff Johnsond13512a2012-07-17 11:42:19 -070022234 return wdiStatus;
22235
Jeff Johnson295189b2012-06-20 16:38:30 -070022236}/*WDI_SendMsg*/
22237
22238
22239
22240/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022241 @brief Send indication helper function - sends a message over
Jeff Johnson295189b2012-06-20 16:38:30 -070022242 the bus using the control transport and saves some info
22243 in the CB
Jeff Johnsone7245742012-09-05 17:12:55 -070022244
22245 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070022246 pSendBuffer: buffer to be sent
22247 usSendSize: size of the buffer to be sent
Jeff Johnsone7245742012-09-05 17:12:55 -070022248
Jeff Johnson295189b2012-06-20 16:38:30 -070022249 @see
22250 @return Result of the function call
22251*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022252WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070022253WDI_SendIndication
Jeff Johnsone7245742012-09-05 17:12:55 -070022254(
22255 WDI_ControlBlockType* pWDICtx,
22256 wpt_uint8* pSendBuffer,
Jeff Johnson295189b2012-06-20 16:38:30 -070022257 wpt_uint32 usSendSize
22258)
22259{
22260 wpt_uint32 uStatus ;
22261 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
22262
22263 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022264 Call the CTS to send this message over
Jeff Johnson295189b2012-06-20 16:38:30 -070022265 Note: CTS is reponsible for freeing the message buffer.
22266 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022267 uStatus = WCTS_SendMessage( pWDICtx->wctsHandle,
Jeff Johnson295189b2012-06-20 16:38:30 -070022268 (void*)pSendBuffer, usSendSize );
22269
22270 /*Inform Upper MAC about the outcome of the request*/
22271 if ( NULL != pWDICtx->wdiReqStatusCB )
22272 {
22273 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
22274 "Send indication status : %d", uStatus);
22275
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080022276 /* even if CTS placed indication into its deferred Q, we treat it
22277 * as success and let CTS drain its queue as per smd interrupt to CTS
22278 */
22279 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 -070022280 pWDICtx->pReqStatusUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070022281 }
22282
22283 /*If sending of the message failed - it is considered catastrophic and
22284 indicates an error with the device*/
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080022285 if (( eWLAN_PAL_STATUS_SUCCESS != uStatus) &&
22286 ( eWLAN_PAL_STATUS_E_RESOURCES != uStatus))
22287
Jeff Johnson295189b2012-06-20 16:38:30 -070022288 {
22289 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnsone7245742012-09-05 17:12:55 -070022290 "Failed to send indication over the bus - catastrophic failure");
Jeff Johnson295189b2012-06-20 16:38:30 -070022291
22292 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_TRANSPORT_FAILURE);
22293 return WDI_STATUS_E_FAILURE;
22294 }
22295
Jeff Johnsone7245742012-09-05 17:12:55 -070022296 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070022297}/*WDI_SendIndication*/
22298
22299
22300/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022301 @brief WDI_DetectedDeviceError - called internally by DAL when
22302 it has detected a failure in the device
22303
22304 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070022305 usErrorCode: error code detected by WDI or received
22306 from HAL
Jeff Johnsone7245742012-09-05 17:12:55 -070022307
Jeff Johnson295189b2012-06-20 16:38:30 -070022308 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070022309 @return None
Jeff Johnson295189b2012-06-20 16:38:30 -070022310*/
22311void
22312WDI_DetectedDeviceError
22313(
22314 WDI_ControlBlockType* pWDICtx,
22315 wpt_uint16 usErrorCode
22316)
22317{
22318 WDI_LowLevelIndType wdiInd;
22319 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
22320
22321 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
22322 "Device Error detected code: %d - transitioning to stopped state",
22323 usErrorCode);
22324
Katya Nigamf02ad012014-05-05 16:12:49 +053022325 pWDICtx->DeviceErrorReason = VOS_RETURN_ADDRESS;
22326
Jeff Johnson295189b2012-06-20 16:38:30 -070022327 wpalMutexAcquire(&pWDICtx->wptMutex);
22328
22329 WDI_STATableStop(pWDICtx);
22330
22331 WDI_ResetAssocSessions(pWDICtx);
22332
22333 /*Set the expected state transition to stopped - because the device
22334 experienced a failure*/
22335 pWDICtx->ucExpectedStateTransition = WDI_STOPPED_ST;
22336
22337 /*Transition to stopped to fail all incomming requests from this point on*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022338 WDI_STATE_TRANSITION( pWDICtx, WDI_STOPPED_ST);
Jeff Johnson295189b2012-06-20 16:38:30 -070022339
Jeff Johnsone7245742012-09-05 17:12:55 -070022340 WDI_ClearPendingRequests(pWDICtx);
Jeff Johnson295189b2012-06-20 16:38:30 -070022341
22342 /*TO DO: - there should be an attempt to reset the device here*/
22343
22344 wpalMutexRelease(&pWDICtx->wptMutex);
22345
22346 /*------------------------------------------------------------------------
22347 Notify UMAC if a handler is registered
22348 ------------------------------------------------------------------------*/
22349 if (pWDICtx->wdiLowLevelIndCB)
22350 {
Jeff Johnsone7245742012-09-05 17:12:55 -070022351 wdiInd.wdiIndicationType = WDI_FATAL_ERROR_IND;
22352 wdiInd.wdiIndicationData.usErrorCode = usErrorCode;
Jeff Johnson295189b2012-06-20 16:38:30 -070022353
22354 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData);
22355 }
22356}/*WDI_DetectedDeviceError*/
22357
22358/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022359 @brief This callback is invoked by the wpt when a timer that
Jeff Johnson295189b2012-06-20 16:38:30 -070022360 we started on send message has expire - this should
22361 never happen - it means device is stuck and cannot
Jeff Johnsone7245742012-09-05 17:12:55 -070022362 reply - trigger catastrophic failure
22363 @param
22364
Jeff Johnson295189b2012-06-20 16:38:30 -070022365 pUserData: the callback data of the user (ptr to WDI CB)
Jeff Johnsone7245742012-09-05 17:12:55 -070022366
22367 @see
22368 @return None
Jeff Johnson295189b2012-06-20 16:38:30 -070022369*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022370void
Jeff Johnson295189b2012-06-20 16:38:30 -070022371WDI_ResponseTimerCB
22372(
22373 void *pUserData
22374)
22375{
22376 WDI_ControlBlockType* pWDICtx = (WDI_ControlBlockType*)pUserData;
22377 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
22378
Gopichand Nakkalae620d5a2013-04-26 05:45:57 -070022379 if (NULL == pWDICtx)
Jeff Johnson295189b2012-06-20 16:38:30 -070022380 {
Gopichand Nakkalae620d5a2013-04-26 05:45:57 -070022381 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022382 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070022383 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070022384 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070022385 }
22386
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080022387 /*cache current timestamp for debugging */
Gopichand Nakkala3c5b0632012-12-23 08:30:59 -080022388 pWDICtx->uTimeStampRspTmrExp = wpalGetSystemTime();
Arif Hussain6c8947a2013-11-27 13:57:14 -080022389 pWDICtx->uArchTimeStampRspTmrExp = wpalGetArchCounterTime();
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080022390
22391 /* If response timer is running at this time that means this timer
22392 * event is not for the last request but rather last-to-last request and
22393 * this timer event has come after we recevied respone for last-to-last
22394 * message
22395 */
22396 if (VOS_TIMER_STATE_RUNNING == wpalTimerGetCurStatus(&pWDICtx->wptResponseTimer))
22397 {
22398 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
22399 "WDI_ResponseTimerCB: timer in running state on timer event, "
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080022400 "ignore tmr event, timeStampTmrStart: %u, timeStampTmrExp: %u",
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080022401 pWDICtx->uTimeStampRspTmrStart, pWDICtx->uTimeStampRspTmrExp);
Arif Hussain6c8947a2013-11-27 13:57:14 -080022402 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
22403 "uArchTimeStampTmrStart: %llu seconds, "
22404 "uArchTimeStampTmrExp: %llu seconds",
22405 pWDICtx->uArchTimeStampRspTmrStart,
22406 pWDICtx->uArchTimeStampRspTmrExp);
22407
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080022408 return;
22409 }
22410
Gopichand Nakkalae620d5a2013-04-26 05:45:57 -070022411 if (WDI_MAX_RESP != pWDICtx->wdiExpectedResponse)
Jeff Johnson295189b2012-06-20 16:38:30 -070022412 {
22413
Gopichand Nakkalae620d5a2013-04-26 05:45:57 -070022414 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnson295189b2012-06-20 16:38:30 -070022415 "Timeout occurred while waiting for %s (%d) message from device "
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080022416 " - catastrophic failure, timeStampTmrStart: %u, timeStampTmrExp: %u",
Jeff Johnson295189b2012-06-20 16:38:30 -070022417 WDI_getRespMsgString(pWDICtx->wdiExpectedResponse),
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080022418 pWDICtx->wdiExpectedResponse, pWDICtx->uTimeStampRspTmrStart,
22419 pWDICtx->uTimeStampRspTmrExp);
Arif Hussain6c8947a2013-11-27 13:57:14 -080022420 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
22421 "uArchTimeStampTmrStart: %llu seconds, "
22422 "uArchTimeStampTmrExp: %llu seconds",
22423 pWDICtx->uArchTimeStampRspTmrStart,
22424 pWDICtx->uArchTimeStampRspTmrExp);
Gopichand Nakkalae620d5a2013-04-26 05:45:57 -070022425
22426 /* WDI timeout means Riva is not responding or SMD communication to Riva
22427 * is not happening. The only possible way to recover from this error
22428 * is to initiate SSR from APPS.
22429 * There is also an option to re-enable wifi, which will eventually
22430 * trigger SSR
22431 */
22432 if (gWDICb.bEnableSSR == false)
22433 {
22434 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
22435 "SSR is not enabled on WDI timeout");
22436 WDI_DetectedDeviceError(pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
22437 return;
22438 }
Madan Mohan Koyyalamudia2fc6412012-10-21 12:06:12 -070022439#ifndef WDI_RE_ENABLE_WIFI_ON_WDI_TIMEOUT
Gopichand Nakkalae620d5a2013-04-26 05:45:57 -070022440 wpalWcnssResetIntr();
Katya Nigam921bf202014-02-26 14:52:24 +053022441 if(wpalIsWDresetInProgress())
22442 {
Pradeep Kumar Goudagunta22d8e4d2014-07-17 15:03:51 +053022443 if(wpalIsSsrPanicOnFailure())
22444 wpalDevicePanic();
Siddharth Bhalfb2cec92014-11-13 16:22:11 +053022445 } else {
22446 /* if this timer fires, it means Riva did not receive the FIQ */
22447 wpalTimerStart(&pWDICtx->ssrTimer, WDI_SSR_TIMEOUT);
Katya Nigam921bf202014-02-26 14:52:24 +053022448 }
Madan Mohan Koyyalamudia2fc6412012-10-21 12:06:12 -070022449#else
Gopichand Nakkalae620d5a2013-04-26 05:45:57 -070022450 WDI_DetectedDeviceError(pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
22451 wpalWlanReload();
Madan Mohan Koyyalamudia2fc6412012-10-21 12:06:12 -070022452#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070022453 }
22454 else
22455 {
Gopichand Nakkalae620d5a2013-04-26 05:45:57 -070022456 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080022457 "Timeout occurred but not waiting for any response %d "
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080022458 "timeStampTmrStart: %u, timeStampTmrExp: %u",
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080022459 pWDICtx->wdiExpectedResponse, pWDICtx->uTimeStampRspTmrStart,
22460 pWDICtx->uTimeStampRspTmrExp);
Arif Hussain6c8947a2013-11-27 13:57:14 -080022461 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
22462 "uArchTimeStampTmrStart: %llu seconds, "
22463 "uArchTimeStampTmrExp: %llu seconds",
22464 pWDICtx->uArchTimeStampRspTmrStart,
22465 pWDICtx->uArchTimeStampRspTmrExp);
22466
Jeff Johnson295189b2012-06-20 16:38:30 -070022467 }
22468
22469 return;
22470
22471}/*WDI_ResponseTimerCB*/
22472
22473
22474/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022475 @brief Process response helper function
Jeff Johnson295189b2012-06-20 16:38:30 -070022476
Jeff Johnsone7245742012-09-05 17:12:55 -070022477
22478 @param pWDICtx: pointer to the WLAN DAL context
22479 pEventData: pointer to the event information structure
22480
Jeff Johnson295189b2012-06-20 16:38:30 -070022481 @see
22482 @return Result of the function call
22483*/
22484WPT_INLINE WDI_Status
22485WDI_ProcessResponse
22486(
22487 WDI_ControlBlockType* pWDICtx,
22488 WDI_EventInfoType* pEventData
22489)
22490{
22491 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
22492
Jeff Johnsone7245742012-09-05 17:12:55 -070022493 /* Skip sanity check as this is called from the FSM functions which
Jeff Johnson295189b2012-06-20 16:38:30 -070022494 already checked these pointers
22495 ! - revisit this assumption */
22496 if (( pEventData->wdiResponse < WDI_MAX_RESP ) &&
22497 ( NULL != pfnRspProcTbl[pEventData->wdiResponse] ))
Jeff Johnsone7245742012-09-05 17:12:55 -070022498 {
Jeff Johnson295189b2012-06-20 16:38:30 -070022499 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080022500 "Calling response processing function for resp %s (%d) %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070022501 WDI_getRespMsgString(pEventData->wdiResponse),
22502 pEventData->wdiResponse, pfnRspProcTbl[pEventData->wdiResponse]);
22503 return pfnRspProcTbl[pEventData->wdiResponse](pWDICtx, pEventData);
22504 }
22505 else
22506 {
22507 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070022508 "Operation %d is not yet implemented ",
Jeff Johnson295189b2012-06-20 16:38:30 -070022509 pEventData->wdiResponse);
22510 return WDI_STATUS_E_NOT_IMPLEMENT;
22511 }
22512}/*WDI_ProcessResponse*/
22513
22514
22515/*=========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070022516 QUEUE SUPPORT UTILITY FUNCTIONS
Jeff Johnson295189b2012-06-20 16:38:30 -070022517=========================================================================*/
22518
22519/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022520 @brief Utility function used by the DAL Core to help queue a
22521 request that cannot be processed right away.
22522 @param
22523
Jeff Johnson295189b2012-06-20 16:38:30 -070022524 pWDICtx: - pointer to the WDI control block
22525 pEventData: - pointer to the evnt info that needs to be
Jeff Johnsone7245742012-09-05 17:12:55 -070022526 queued
22527
22528 @see
22529 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070022530*/
22531WDI_Status
22532WDI_QueuePendingReq
22533(
22534 WDI_ControlBlockType* pWDICtx,
22535 WDI_EventInfoType* pEventData
22536)
22537{
Jeff Johnsone7245742012-09-05 17:12:55 -070022538 wpt_list_node* pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070022539 WDI_EventInfoType* pEventDataQueue = wpalMemoryAllocate(sizeof(*pEventData));
Jeff Johnsone7245742012-09-05 17:12:55 -070022540 void* pEventInfo = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070022541 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
22542
22543 if ( NULL == pEventDataQueue )
22544 {
22545 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070022546 "Cannot allocate memory for queueing");
Jeff Johnson295189b2012-06-20 16:38:30 -070022547 WDI_ASSERT(0);
22548 return WDI_STATUS_MEM_FAILURE;
22549 }
22550
22551 pEventDataQueue->pCBfnc = pEventData->pCBfnc;
22552 pEventDataQueue->pUserData = pEventData->pUserData;
22553 pEventDataQueue->uEventDataSize = pEventData->uEventDataSize;
22554 pEventDataQueue->wdiRequest = pEventData->wdiRequest;
Jeff Johnsone7245742012-09-05 17:12:55 -070022555 pEventDataQueue->wdiResponse = pEventData->wdiResponse;
Jeff Johnson295189b2012-06-20 16:38:30 -070022556
22557 if( pEventData->uEventDataSize != 0 && pEventData->pEventData != NULL )
22558 {
22559 pEventInfo = wpalMemoryAllocate(pEventData->uEventDataSize);
Jeff Johnsone7245742012-09-05 17:12:55 -070022560
Jeff Johnson295189b2012-06-20 16:38:30 -070022561 if ( NULL == pEventInfo )
22562 {
22563 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070022564 "Cannot allocate memory for queueing event data info");
Jeff Johnson295189b2012-06-20 16:38:30 -070022565 WDI_ASSERT(0);
22566 wpalMemoryFree(pEventDataQueue);
22567 return WDI_STATUS_MEM_FAILURE;
22568 }
Jeff Johnsone7245742012-09-05 17:12:55 -070022569
Jeff Johnson295189b2012-06-20 16:38:30 -070022570 wpalMemoryCopy(pEventInfo, pEventData->pEventData, pEventData->uEventDataSize);
22571
22572 }
22573 pEventDataQueue->pEventData = pEventInfo;
22574
22575 /*Send wpt a pointer to the node (this is the 1st element in the event data)*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022576 pNode = (wpt_list_node*)pEventDataQueue;
Jeff Johnson295189b2012-06-20 16:38:30 -070022577
Pradeep Kumar Goudaguntaf5087fa2014-07-07 19:51:49 +053022578 if (eWLAN_PAL_STATUS_E_FAILURE ==
22579 wpal_list_insert_back(&(pWDICtx->wptPendingQueue), pNode))
22580 {
22581 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
22582 "pEventDataQueue wpal_list_insert_back failed");
22583 WDI_ASSERT(0);
22584 wpalMemoryFree(pEventDataQueue);
22585 wpalMemoryFree(pEventInfo);
22586 return WDI_STATUS_MEM_FAILURE;
22587 }
Jeff Johnson295189b2012-06-20 16:38:30 -070022588
22589 return WDI_STATUS_SUCCESS;
22590}/*WDI_QueuePendingReq*/
22591
22592/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022593 @brief Callback function for serializing queued message
Jeff Johnson295189b2012-06-20 16:38:30 -070022594 processing in the control context
Jeff Johnsone7245742012-09-05 17:12:55 -070022595 @param
22596
22597 pMsg - pointer to the message
22598
22599 @see
22600 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070022601*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022602void
Jeff Johnson295189b2012-06-20 16:38:30 -070022603WDI_PALCtrlMsgCB
22604(
22605 wpt_msg *pMsg
22606)
22607{
22608 WDI_EventInfoType* pEventData = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070022609 WDI_ControlBlockType* pWDICtx = NULL;
22610 WDI_Status wdiStatus;
22611 WDI_ReqStatusCb pfnReqStatusCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070022612 void* pUserData;
22613 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
22614
22615 if (( NULL == pMsg )||
22616 ( NULL == (pEventData = (WDI_EventInfoType*)pMsg->ptr)) ||
22617 ( NULL == (pWDICtx = (WDI_ControlBlockType*)pMsg->pContext )))
22618 {
22619 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070022620 "Invalid message received on serialize ctrl context API");
Jeff Johnson295189b2012-06-20 16:38:30 -070022621 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070022622 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070022623 }
22624
22625 /*Transition back to the state that we had before serialization
22626 - serialization transitions us to BUSY to stop any incomming requests
22627 ! TO DO L: possible race condition here if a request comes in between the
22628 state transition and the post function*/
22629
Jeff Johnsone7245742012-09-05 17:12:55 -070022630 WDI_STATE_TRANSITION( pWDICtx, pMsg->val);
Jeff Johnson295189b2012-06-20 16:38:30 -070022631
22632 /*-----------------------------------------------------------------------
22633 Check to see what type of event we are serializing
Jeff Johnsone7245742012-09-05 17:12:55 -070022634 - responses are never expected to come through here
Jeff Johnson295189b2012-06-20 16:38:30 -070022635 -----------------------------------------------------------------------*/
22636 switch ( pEventData->wdiRequest )
22637 {
22638
Jeff Johnsone7245742012-09-05 17:12:55 -070022639 case WDI_STOP_REQ:
Jeff Johnson295189b2012-06-20 16:38:30 -070022640 wdiStatus = WDI_PostMainEvent(&gWDICb, WDI_STOP_EVENT, pEventData);
22641 break;
22642
Jeff Johnson295189b2012-06-20 16:38:30 -070022643 case WDI_NV_DOWNLOAD_REQ:
22644 // When WDI State is WDI_STARTED_ST, send WDI request message with event type WDI_REQUEST_EVENT.
22645 // In this case, because this request is called from response process, we could call WDI_ProcessRequest() directly.
22646 if (pWDICtx->uGlobalState == WDI_STARTED_ST)
22647 {
22648 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022649 "%s: WDI_NV_DOWNLOAD_REQ called in WDI_STARTED_ST - send with WDI_REQUEST_EVENT", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070022650 wdiStatus = WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, pEventData);
22651 }
22652 else
22653 {
22654 wdiStatus = WDI_PostMainEvent(&gWDICb, WDI_START_EVENT, pEventData);
22655 }
22656
22657 break;
22658
22659 default:
22660 wdiStatus = WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, pEventData);
22661 break;
22662 }/*switch ( pEventData->wdiRequest )*/
22663
22664 if ( WDI_STATUS_SUCCESS != wdiStatus )
22665 {
22666 WDI_ExtractRequestCBFromEvent(pEventData, &pfnReqStatusCB, &pUserData);
22667
22668 if ( NULL != pfnReqStatusCB )
22669 {
22670 /*Fail the request*/
22671 pfnReqStatusCB( wdiStatus, pUserData);
22672 }
22673 }
22674
22675 /* Free data - that was allocated when queueing*/
22676 if( pEventData != NULL )
22677 {
22678 if( pEventData->pEventData != NULL )
22679 {
22680 wpalMemoryFree(pEventData->pEventData);
22681 }
22682 wpalMemoryFree(pEventData);
22683 }
22684
22685 if( pMsg != NULL )
22686 {
22687 wpalMemoryFree(pMsg);
22688 }
Jeff Johnsone7245742012-09-05 17:12:55 -070022689
Jeff Johnson295189b2012-06-20 16:38:30 -070022690}/*WDI_PALCtrlMsgCB*/
22691
22692/**
22693 @brief Utility function used by the DAL Core to help dequeue
Jeff Johnsone7245742012-09-05 17:12:55 -070022694 and schedule for execution a pending request
22695 @param
22696
Jeff Johnson295189b2012-06-20 16:38:30 -070022697 pWDICtx: - pointer to the WDI control block
22698 pEventData: - pointer to the evnt info that needs to be
Jeff Johnsone7245742012-09-05 17:12:55 -070022699 queued
22700
22701 @see
22702 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070022703*/
22704WDI_Status
22705WDI_DequeuePendingReq
22706(
22707 WDI_ControlBlockType* pWDICtx
22708)
22709{
Jeff Johnsone7245742012-09-05 17:12:55 -070022710 wpt_list_node* pNode = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070022711 WDI_EventInfoType* pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070022712 wpt_msg* palMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070022713 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
22714
Jeff Johnsone7245742012-09-05 17:12:55 -070022715 wpal_list_remove_front(&(pWDICtx->wptPendingQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070022716
22717 if ( NULL == pNode )
22718 {
22719 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -070022720 "List is empty - return");
Jeff Johnson295189b2012-06-20 16:38:30 -070022721 return WDI_STATUS_SUCCESS;
22722 }
22723
22724 /*The node actually points to the 1st element inside the Event Data struct -
22725 just cast it back to the struct*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022726 pEventData = (WDI_EventInfoType*)pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070022727
22728 /*Serialize processing in the control thread
22729 !TO DO: - check to see if these are all the messages params that need
22730 to be filled in*/
22731 palMsg = wpalMemoryAllocate(sizeof(wpt_msg));
22732
22733 if ( NULL == palMsg )
22734 {
22735 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070022736 "WDI_DequeuePendingReq: Cannot allocate memory for palMsg.");
Jeff Johnson295189b2012-06-20 16:38:30 -070022737 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070022738 return WDI_STATUS_MEM_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022739 }
Jeff Johnsone7245742012-09-05 17:12:55 -070022740 palMsg->pContext = pWDICtx;
Jeff Johnson295189b2012-06-20 16:38:30 -070022741 palMsg->callback = WDI_PALCtrlMsgCB;
22742 palMsg->ptr = pEventData;
22743
22744 /*Save the global state as we need it on the other side*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022745 palMsg->val = pWDICtx->uGlobalState;
Leo Chang0f24ca12013-12-17 13:35:00 -080022746 palMsg->type = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070022747
Jeff Johnson295189b2012-06-20 16:38:30 -070022748 /*Transition back to BUSY as we need to handle a queued request*/
22749 WDI_STATE_TRANSITION( pWDICtx, WDI_BUSY_ST);
Jeff Johnsone7245742012-09-05 17:12:55 -070022750
Jeff Johnson295189b2012-06-20 16:38:30 -070022751 wpalPostCtrlMsg(pWDICtx->pPALContext, palMsg);
22752
22753 return WDI_STATUS_PENDING;
22754}/*WDI_DequeuePendingReq*/
22755
22756
22757/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022758 @brief Utility function used by the DAL Core to help queue
Jeff Johnson295189b2012-06-20 16:38:30 -070022759 an association request that cannot be processed right
Jeff Johnsone7245742012-09-05 17:12:55 -070022760 away.- The assoc requests will be queued by BSSID
22761 @param
22762
Jeff Johnson295189b2012-06-20 16:38:30 -070022763 pWDICtx: - pointer to the WDI control block
22764 pEventData: pointer to the evnt info that needs to be queued
22765 macBSSID: bssid
Jeff Johnsone7245742012-09-05 17:12:55 -070022766
22767 @see
22768 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070022769*/
22770WDI_Status
22771WDI_QueueNewAssocRequest
22772(
22773 WDI_ControlBlockType* pWDICtx,
22774 WDI_EventInfoType* pEventData,
22775 wpt_macAddr macBSSID
22776)
22777{
Jeff Johnsone7245742012-09-05 17:12:55 -070022778 wpt_uint8 i;
22779 WDI_BSSSessionType* pSession = NULL;
22780 wpt_list_node* pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070022781 WDI_EventInfoType* pEventDataQueue;
Jeff Johnsone7245742012-09-05 17:12:55 -070022782 void* pEventInfo;
22783 WDI_NextSessionIdType* pSessionIdElement;
Jeff Johnson295189b2012-06-20 16:38:30 -070022784 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Jeff Johnson295189b2012-06-20 16:38:30 -070022785
Jeff Johnsone7245742012-09-05 17:12:55 -070022786
22787 /*------------------------------------------------------------------------
22788 Search for a session that matches the BSSID
Jeff Johnson295189b2012-06-20 16:38:30 -070022789 ------------------------------------------------------------------------*/
22790 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
22791 {
22792 if ( eWLAN_PAL_FALSE == pWDICtx->aBSSSessions[i].bInUse )
22793 {
22794 /*Found an empty session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022795 pSession = &pWDICtx->aBSSSessions[i];
22796 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070022797 }
22798 }
22799
22800 if ( i >= WDI_MAX_BSS_SESSIONS )
22801 {
22802 /*Cannot find any empty sessions*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022803 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022804 }
Jeff Johnsone7245742012-09-05 17:12:55 -070022805
Jeff Johnson295189b2012-06-20 16:38:30 -070022806 /*------------------------------------------------------------------------
22807 Fill in the BSSID for this session and set the usage flag
22808 ------------------------------------------------------------------------*/
22809 wpalMemoryCopy(pWDICtx->aBSSSessions[i].macBSSID, macBSSID, WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070022810 pWDICtx->aBSSSessions[i].bInUse = eWLAN_PAL_TRUE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022811
22812 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022813 Allocate memory for this and place it in the queue
Jeff Johnson295189b2012-06-20 16:38:30 -070022814 ------------------------------------------------------------------------*/
22815 pEventDataQueue = (WDI_EventInfoType*)wpalMemoryAllocate(sizeof(WDI_EventInfoType));
22816 if ( NULL == pEventDataQueue )
22817 {
22818 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022819 "%s: Cannot allocate memory for queue node", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070022820 WDI_ASSERT(0);
22821 return WDI_STATUS_MEM_FAILURE;
22822 }
22823
22824 pSessionIdElement = (WDI_NextSessionIdType*)wpalMemoryAllocate(sizeof(WDI_NextSessionIdType));
22825 if ( NULL == pSessionIdElement )
22826 {
22827 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022828 "%s: Cannot allocate memory for session ID", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070022829 WDI_ASSERT(0);
22830 wpalMemoryFree(pEventDataQueue);
22831 return WDI_STATUS_MEM_FAILURE;
22832 }
22833
22834 pEventInfo = wpalMemoryAllocate(pEventData->uEventDataSize);
22835 if ( NULL == pEventInfo )
22836 {
22837 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022838 "%s: Cannot allocate memory for event data info", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070022839 WDI_ASSERT(0);
22840 wpalMemoryFree(pSessionIdElement);
22841 wpalMemoryFree(pEventDataQueue);
22842 return WDI_STATUS_MEM_FAILURE;
22843 }
22844
22845 pEventDataQueue->pCBfnc = pEventData->pCBfnc;
22846 pEventDataQueue->pUserData = pEventData->pUserData;
22847 pEventDataQueue->uEventDataSize = pEventData->uEventDataSize;
22848 pEventDataQueue->wdiRequest = pEventData->wdiRequest;
Jeff Johnsone7245742012-09-05 17:12:55 -070022849 pEventDataQueue->wdiResponse = pEventData->wdiResponse;
Jeff Johnson295189b2012-06-20 16:38:30 -070022850
22851 wpalMemoryCopy(pEventInfo, pEventData->pEventData, pEventData->uEventDataSize);
22852 pEventDataQueue->pEventData = pEventInfo;
22853
22854 /*Send wpt a pointer to the node (this is the 1st element in the event data)*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022855 pNode = (wpt_list_node*)pEventDataQueue;
Jeff Johnson295189b2012-06-20 16:38:30 -070022856
22857 /*This association is currently being queued*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022858 pSession->bAssocReqQueued = eWLAN_PAL_TRUE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022859
Pradeep Kumar Goudaguntaf5087fa2014-07-07 19:51:49 +053022860 if (eWLAN_PAL_STATUS_E_FAILURE ==
22861 wpal_list_insert_back(&(pSession->wptPendingQueue), pNode))
22862 {
22863 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
22864 "%s: pEventDataQueue wpal_list_insert_back failed", __func__);
22865 WDI_ASSERT(0);
22866 wpalMemoryFree(pSessionIdElement);
22867 wpalMemoryFree(pEventDataQueue);
22868 wpalMemoryFree(pEventInfo);
22869 return WDI_STATUS_MEM_FAILURE;
22870 }
Jeff Johnson295189b2012-06-20 16:38:30 -070022871
22872 /*We need to maintain a separate list that keeps track of the order in which
22873 the new assoc requests are being queued such that we can start processing
22874 them in the order that they had arrived*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022875 pSessionIdElement->ucIndex = i;
22876 pNode = (wpt_list_node*)pSessionIdElement;
Jeff Johnson295189b2012-06-20 16:38:30 -070022877
22878 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
22879 "Queueing up new assoc session : %d ", pSessionIdElement->ucIndex);
Pradeep Kumar Goudaguntaf5087fa2014-07-07 19:51:49 +053022880 if (eWLAN_PAL_STATUS_E_FAILURE ==
22881 wpal_list_insert_back(&pWDICtx->wptPendingAssocSessionIdQueue, pNode))
22882 {
22883 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
22884 "%s: pSessionIdElement wpal_list_insert_back failed", __func__);
22885 WDI_ASSERT(0);
22886 wpalMemoryFree(pSessionIdElement);
22887 wpalMemoryFree(pEventDataQueue);
22888 wpalMemoryFree(pEventInfo);
22889 return WDI_STATUS_MEM_FAILURE;
22890 }
Jeff Johnson295189b2012-06-20 16:38:30 -070022891
22892 /*Return pending as this is what the status of the request is since it has
22893 been queued*/
22894 return WDI_STATUS_PENDING;
22895}/*WDI_QueueNewAssocRequest*/
22896
22897/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022898 @brief Utility function used by the DAL Core to help queue
Jeff Johnson295189b2012-06-20 16:38:30 -070022899 an association request that cannot be processed right
Jeff Johnsone7245742012-09-05 17:12:55 -070022900 away.- The assoc requests will be queued by BSSID
22901 @param
22902
Jeff Johnson295189b2012-06-20 16:38:30 -070022903 pWDICtx: - pointer to the WDI control block
22904 pSession: - session in which to queue
22905 pEventData: pointer to the event info that needs to be
22906 queued
Jeff Johnsone7245742012-09-05 17:12:55 -070022907
22908 @see
22909 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070022910*/
22911WDI_Status
22912WDI_QueueAssocRequest
22913(
22914 WDI_ControlBlockType* pWDICtx,
22915 WDI_BSSSessionType* pSession,
22916 WDI_EventInfoType* pEventData
22917)
22918{
Jeff Johnsone7245742012-09-05 17:12:55 -070022919 wpt_list_node* pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070022920 WDI_EventInfoType* pEventDataQueue;
Jeff Johnsone7245742012-09-05 17:12:55 -070022921 void* pEventInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070022922 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Jeff Johnsone7245742012-09-05 17:12:55 -070022923
22924 /*------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -070022925 Sanity check
22926 ------------------------------------------------------------------------*/
22927 if (( NULL == pSession ) || ( NULL == pWDICtx ))
22928 {
22929 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022930 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070022931
Jeff Johnsone7245742012-09-05 17:12:55 -070022932 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022933 }
22934
22935 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022936 Allocate memory for this and place it in the queue
Jeff Johnson295189b2012-06-20 16:38:30 -070022937 ------------------------------------------------------------------------*/
22938 pEventDataQueue = (WDI_EventInfoType*)wpalMemoryAllocate(sizeof(WDI_EventInfoType));
22939 if ( NULL == pEventDataQueue )
22940 {
22941 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022942 "%s: Cannot allocate memory for queueing", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070022943 WDI_ASSERT(0);
22944 return WDI_STATUS_MEM_FAILURE;
22945 }
22946
22947 pEventInfo = wpalMemoryAllocate(pEventData->uEventDataSize);
22948 if ( NULL == pEventInfo )
22949 {
22950 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
22951 "%s: Cannot allocate memory for queueing event data info",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022952 __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070022953 WDI_ASSERT(0);
22954 wpalMemoryFree(pEventDataQueue);
22955 return WDI_STATUS_MEM_FAILURE;
22956 }
22957
22958 pEventDataQueue->pCBfnc = pEventData->pCBfnc;
22959 pEventDataQueue->pUserData = pEventData->pUserData;
22960 pEventDataQueue->uEventDataSize = pEventData->uEventDataSize;
22961 pEventDataQueue->wdiRequest = pEventData->wdiRequest;
Jeff Johnsone7245742012-09-05 17:12:55 -070022962 pEventDataQueue->wdiResponse = pEventData->wdiResponse;
Jeff Johnson295189b2012-06-20 16:38:30 -070022963 pEventDataQueue->pEventData = pEventInfo;
22964
22965 wpalMemoryCopy(pEventInfo, pEventData->pEventData, pEventData->uEventDataSize);
22966
22967 /*Send wpt a pointer to the node (this is the 1st element in the event data)*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022968 pNode = (wpt_list_node*)pEventDataQueue;
Jeff Johnson295189b2012-06-20 16:38:30 -070022969
22970 /*This association is currently being queued*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022971 pSession->bAssocReqQueued = eWLAN_PAL_TRUE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022972
Pradeep Kumar Goudaguntaf5087fa2014-07-07 19:51:49 +053022973 if (eWLAN_PAL_STATUS_E_FAILURE ==
22974 wpal_list_insert_back(&(pSession->wptPendingQueue), pNode))
22975 {
22976 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
22977 "%s: Cannot allocate memory for queueing event data info",
22978 __func__);
22979 WDI_ASSERT(0);
22980 wpalMemoryFree(pEventDataQueue);
22981 wpalMemoryFree(pEventInfo);
22982 return WDI_STATUS_MEM_FAILURE;
22983 }
Jeff Johnson295189b2012-06-20 16:38:30 -070022984
22985 /*The result of this operation is pending because the request has been
22986 queued and it will be processed at a later moment in time */
22987 return WDI_STATUS_PENDING;
22988}/*WDI_QueueAssocRequest*/
22989
22990/**
22991 @brief Utility function used by the DAL Core to help dequeue
22992 an association request that was pending
22993 The request will be queued up in front of the main
22994 pending queue for imediate processing
Jeff Johnsone7245742012-09-05 17:12:55 -070022995 @param
22996
Jeff Johnson295189b2012-06-20 16:38:30 -070022997 pWDICtx: - pointer to the WDI control block
Jeff Johnsone7245742012-09-05 17:12:55 -070022998
22999
23000 @see
23001 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070023002*/
23003WDI_Status
23004WDI_DequeueAssocRequest
23005(
23006 WDI_ControlBlockType* pWDICtx
23007)
23008{
Jeff Johnsone7245742012-09-05 17:12:55 -070023009 wpt_list_node* pNode = NULL;
23010 WDI_NextSessionIdType* pSessionIdElement;
Jeff Johnson295189b2012-06-20 16:38:30 -070023011 WDI_BSSSessionType* pSession;
23012 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Jeff Johnsone7245742012-09-05 17:12:55 -070023013
23014 /*------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -070023015 Sanity check
23016 ------------------------------------------------------------------------*/
23017 if ( NULL == pWDICtx )
23018 {
23019 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023020 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023021
Jeff Johnsone7245742012-09-05 17:12:55 -070023022 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023023 }
23024
23025 /*------------------------------------------------------------------------
23026 An association has been completed => a new association can occur
23027 Check to see if there are any pending associations ->
23028 If so , transfer all the pending requests into the busy queue for
23029 processing
23030 These requests have arrived prior to the requests in the busy queue
23031 (bc they needed to be processed in order to be placed in this queue)
23032 => they will be placed at the front of the busy queue
23033 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023034 wpal_list_remove_front(&(pWDICtx->wptPendingAssocSessionIdQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070023035
23036 if ( NULL == pNode )
23037 {
23038 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -070023039 "List is empty - return");
Jeff Johnson295189b2012-06-20 16:38:30 -070023040 return WDI_STATUS_SUCCESS;
23041 }
23042
23043 /*The node actually points to the 1st element inside the Session Id struct -
23044 just cast it back to the struct*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023045 pSessionIdElement = (WDI_NextSessionIdType*)pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070023046
23047 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
23048 "Dequeueing new assoc session : %d ", pSessionIdElement->ucIndex);
23049
23050 if ( pSessionIdElement->ucIndex < WDI_MAX_BSS_SESSIONS )
23051 {
23052 pSession = &pWDICtx->aBSSSessions[pSessionIdElement->ucIndex];
Jeff Johnsone7245742012-09-05 17:12:55 -070023053
Jeff Johnson295189b2012-06-20 16:38:30 -070023054 /*Transfer all the pending requests in this assoc queue to
Jeff Johnsone7245742012-09-05 17:12:55 -070023055 the front of the main waiting queue for subsequent execution*/
23056 wpal_list_remove_back(&(pSession->wptPendingQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070023057 while ( NULL != pNode )
23058 {
23059 /*Place it in front of the main pending list*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023060 wpal_list_insert_front( &(pWDICtx->wptPendingQueue), &pNode);
23061 wpal_list_remove_back(&(pSession->wptPendingQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070023062 }
Jeff Johnsone7245742012-09-05 17:12:55 -070023063 pSession->bAssocReqQueued = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023064 }
23065 else
23066 {
23067 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnsone7245742012-09-05 17:12:55 -070023068 "Invalid session id queued up for assoc");
Jeff Johnson295189b2012-06-20 16:38:30 -070023069 WPAL_ASSERT(0);
23070 wpalMemoryFree(pSessionIdElement);
Jeff Johnsone7245742012-09-05 17:12:55 -070023071 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023072 }
Jeff Johnsone7245742012-09-05 17:12:55 -070023073
Jeff Johnson295189b2012-06-20 16:38:30 -070023074 /*Clean this up as it is no longer needed in order to prevent memory leak*/
23075 wpalMemoryFree(pSessionIdElement);
23076 return WDI_STATUS_SUCCESS;
23077}/*WDI_DequeueAssocRequest*/
23078
23079/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023080 @brief Utility function used by the DAL Core to clear any
Jeff Johnson295189b2012-06-20 16:38:30 -070023081 pending requests - all req cb will be called with
23082 failure and the queue will be emptied.
Jeff Johnsone7245742012-09-05 17:12:55 -070023083 @param
23084
Jeff Johnson295189b2012-06-20 16:38:30 -070023085 pWDICtx: - pointer to the WDI control block
Jeff Johnsone7245742012-09-05 17:12:55 -070023086
23087 @see
23088 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070023089*/
23090WDI_Status
23091WDI_ClearPendingRequests
Jeff Johnsone7245742012-09-05 17:12:55 -070023092(
Jeff Johnson295189b2012-06-20 16:38:30 -070023093 WDI_ControlBlockType* pWDICtx
23094)
23095{
Jeff Johnsone7245742012-09-05 17:12:55 -070023096 wpt_list_node* pNode = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070023097 WDI_EventInfoType* pEventDataQueue = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070023098 WDI_ReqStatusCb pfnReqStatusCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070023099 void* pUserData;
23100 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
23101
Jeff Johnsone7245742012-09-05 17:12:55 -070023102 wpal_list_remove_front(&(pWDICtx->wptPendingQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070023103
23104 /*------------------------------------------------------------------------
23105 Go through all the requests and fail them - this will only be called
23106 when device is being stopped or an error was detected - either case the
Jeff Johnsone7245742012-09-05 17:12:55 -070023107 pending requests can no longer be sent down to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070023108 ------------------------------------------------------------------------*/
23109 while( pNode )
23110 {
23111 /*The node actually points to the 1st element inside the Event Data struct -
23112 just cast it back to the struct*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023113 pEventDataQueue = (WDI_EventInfoType*)pNode;
23114
Jeff Johnson295189b2012-06-20 16:38:30 -070023115 WDI_ExtractRequestCBFromEvent(pEventDataQueue, &pfnReqStatusCB, &pUserData);
23116 if ( NULL != pfnReqStatusCB )
23117 {
23118 /*Fail the request*/
23119 pfnReqStatusCB( WDI_STATUS_E_FAILURE, pUserData);
23120 }
23121 /* Free data - that was allocated when queueing */
23122 if ( pEventDataQueue->pEventData != NULL )
23123 {
23124 wpalMemoryFree(pEventDataQueue->pEventData);
23125 }
23126 wpalMemoryFree(pEventDataQueue);
23127
23128 if (wpal_list_remove_front(&(pWDICtx->wptPendingQueue), &pNode) != eWLAN_PAL_STATUS_SUCCESS)
23129 {
23130 break;
23131 }
Jeff Johnsone7245742012-09-05 17:12:55 -070023132 }
23133
Jeff Johnson295189b2012-06-20 16:38:30 -070023134 return WDI_STATUS_SUCCESS;
23135}/*WDI_ClearPendingRequests*/
23136
23137/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023138 @brief Helper routine used to init the BSS Sessions in the WDI control block
23139
23140
23141 @param pWDICtx: pointer to the WLAN DAL context
23142
Jeff Johnson295189b2012-06-20 16:38:30 -070023143 @see
23144*/
23145void
23146WDI_ResetAssocSessions
Jeff Johnsone7245742012-09-05 17:12:55 -070023147(
Jeff Johnson295189b2012-06-20 16:38:30 -070023148 WDI_ControlBlockType* pWDICtx
23149)
23150{
Jeff Johnsone7245742012-09-05 17:12:55 -070023151 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070023152 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
23153
23154 /*-------------------------------------------------------------------------
23155 No Sanity check
23156 -------------------------------------------------------------------------*/
23157 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
23158 {
Jeff Johnsone7245742012-09-05 17:12:55 -070023159 wpalMemoryZero( &pWDICtx->aBSSSessions[i], sizeof(WDI_BSSSessionType) );
Jeff Johnson295189b2012-06-20 16:38:30 -070023160 pWDICtx->aBSSSessions[i].wdiAssocState = WDI_ASSOC_INIT_ST;
23161 pWDICtx->aBSSSessions[i].bcastStaIdx = WDI_STA_INVALID_IDX;
23162 pWDICtx->aBSSSessions[i].ucBSSIdx = WDI_BSS_INVALID_IDX;
23163 }
23164}/*WDI_ResetAssocSessions*/
23165
23166/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023167 @brief Helper routine used to find a session based on the BSSID
23168
23169
23170 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070023171 macBSSID: BSSID of the session
Jeff Johnsone7245742012-09-05 17:12:55 -070023172 pSession: pointer to the session (if found)
23173
Jeff Johnson295189b2012-06-20 16:38:30 -070023174 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070023175 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070023176*/
23177wpt_uint8
23178WDI_FindAssocSession
Jeff Johnsone7245742012-09-05 17:12:55 -070023179(
Jeff Johnson295189b2012-06-20 16:38:30 -070023180 WDI_ControlBlockType* pWDICtx,
23181 wpt_macAddr macBSSID,
23182 WDI_BSSSessionType** ppSession
23183)
23184{
Jeff Johnsone7245742012-09-05 17:12:55 -070023185 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070023186 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
23187
23188 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023189 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070023190 -------------------------------------------------------------------------*/
23191 if ( NULL == ppSession )
23192 {
23193 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023194 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070023195 return WDI_MAX_BSS_SESSIONS;
Jeff Johnson295189b2012-06-20 16:38:30 -070023196 }
23197
Jeff Johnsone7245742012-09-05 17:12:55 -070023198 *ppSession = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070023199
Jeff Johnsone7245742012-09-05 17:12:55 -070023200 /*------------------------------------------------------------------------
23201 Search for a session that matches the BSSID
Jeff Johnson295189b2012-06-20 16:38:30 -070023202 ------------------------------------------------------------------------*/
23203 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
23204 {
Madan Mohan Koyyalamudi35287862012-10-22 14:52:46 -070023205 if ( (pWDICtx->aBSSSessions[i].bInUse == eWLAN_PAL_TRUE) &&
23206 (eWLAN_PAL_TRUE ==
23207 wpalMemoryCompare(pWDICtx->aBSSSessions[i].macBSSID, macBSSID,
23208 WDI_MAC_ADDR_LEN)) )
Jeff Johnson295189b2012-06-20 16:38:30 -070023209 {
23210 /*Found the session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023211 *ppSession = &pWDICtx->aBSSSessions[i];
Jeff Johnson295189b2012-06-20 16:38:30 -070023212 return i;
23213 }
23214 }
23215
Jeff Johnsone7245742012-09-05 17:12:55 -070023216 return i;
Jeff Johnson295189b2012-06-20 16:38:30 -070023217}/*WDI_FindAssocSession*/
23218
23219/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023220 @brief Helper routine used to find a session based on the BSSID
23221
23222
23223 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070023224 ucBSSIdx: BSS Index of the session
23225 ppSession: out pointer to the session (if found)
Jeff Johnsone7245742012-09-05 17:12:55 -070023226
Jeff Johnson295189b2012-06-20 16:38:30 -070023227 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070023228 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070023229*/
23230wpt_uint8
23231WDI_FindAssocSessionByBSSIdx
Jeff Johnsone7245742012-09-05 17:12:55 -070023232(
Jeff Johnson295189b2012-06-20 16:38:30 -070023233 WDI_ControlBlockType* pWDICtx,
23234 wpt_uint16 ucBSSIdx,
23235 WDI_BSSSessionType** ppSession
23236)
23237{
Jeff Johnsone7245742012-09-05 17:12:55 -070023238 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070023239 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
23240
23241 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023242 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070023243 -------------------------------------------------------------------------*/
23244 if ( NULL == ppSession )
23245 {
23246 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023247 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070023248 return WDI_MAX_BSS_SESSIONS;
Jeff Johnson295189b2012-06-20 16:38:30 -070023249 }
23250
Jeff Johnsone7245742012-09-05 17:12:55 -070023251 *ppSession = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070023252
Jeff Johnsone7245742012-09-05 17:12:55 -070023253 /*------------------------------------------------------------------------
23254 Search for a session that matches the BSSID
Jeff Johnson295189b2012-06-20 16:38:30 -070023255 ------------------------------------------------------------------------*/
23256 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
23257 {
23258 if ( ucBSSIdx == pWDICtx->aBSSSessions[i].ucBSSIdx )
23259 {
23260 /*Found the session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023261 *ppSession = &pWDICtx->aBSSSessions[i];
Jeff Johnson295189b2012-06-20 16:38:30 -070023262 return i;
23263 }
23264 }
23265
Jeff Johnsone7245742012-09-05 17:12:55 -070023266 return i;
Jeff Johnson295189b2012-06-20 16:38:30 -070023267}/*WDI_FindAssocSessionByBSSIdx*/
23268
23269/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023270 @brief Helper routine used to find a session based on the BSSID
23271
23272
23273 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070023274 ucBSSIdx: BSS Index of the session
23275 ppSession: out pointer to the session (if found)
Jeff Johnsone7245742012-09-05 17:12:55 -070023276
Jeff Johnson295189b2012-06-20 16:38:30 -070023277 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070023278 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070023279*/
23280wpt_uint8
23281WDI_FindAssocSessionByIdx
Jeff Johnsone7245742012-09-05 17:12:55 -070023282(
Jeff Johnson295189b2012-06-20 16:38:30 -070023283 WDI_ControlBlockType* pWDICtx,
23284 wpt_uint16 usIdx,
23285 WDI_BSSSessionType** ppSession
23286)
23287{
23288 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
23289
23290 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023291 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070023292 -------------------------------------------------------------------------*/
23293 if ( NULL == ppSession || usIdx >= WDI_MAX_BSS_SESSIONS )
23294 {
23295 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023296 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070023297 return WDI_MAX_BSS_SESSIONS;
Jeff Johnson295189b2012-06-20 16:38:30 -070023298 }
23299
23300 /*Found the session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023301 *ppSession = &pWDICtx->aBSSSessions[usIdx];
Jeff Johnson295189b2012-06-20 16:38:30 -070023302
23303 return usIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070023304
Jeff Johnson295189b2012-06-20 16:38:30 -070023305}/*WDI_FindAssocSessionByBSSIdx*/
23306
23307/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023308 @brief Helper routine used to find an empty session in the WDI
Jeff Johnson295189b2012-06-20 16:38:30 -070023309 CB
Jeff Johnsone7245742012-09-05 17:12:55 -070023310
23311
23312 @param pWDICtx: pointer to the WLAN DAL context
23313 pSession: pointer to the session (if found)
23314
Jeff Johnson295189b2012-06-20 16:38:30 -070023315 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070023316 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070023317*/
23318wpt_uint8
23319WDI_FindEmptySession
Jeff Johnsone7245742012-09-05 17:12:55 -070023320(
Jeff Johnson295189b2012-06-20 16:38:30 -070023321 WDI_ControlBlockType* pWDICtx,
23322 WDI_BSSSessionType** ppSession
23323)
23324{
Jeff Johnsone7245742012-09-05 17:12:55 -070023325 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070023326 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
23327 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023328 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070023329 -------------------------------------------------------------------------*/
23330 if ( NULL == ppSession )
23331 {
23332 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023333 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070023334 return WDI_MAX_BSS_SESSIONS;
Jeff Johnson295189b2012-06-20 16:38:30 -070023335 }
23336
Jeff Johnsone7245742012-09-05 17:12:55 -070023337 *ppSession = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070023338
Jeff Johnsone7245742012-09-05 17:12:55 -070023339 /*------------------------------------------------------------------------
23340 Search for a session that it is not in use
Jeff Johnson295189b2012-06-20 16:38:30 -070023341 ------------------------------------------------------------------------*/
23342 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
23343 {
23344 if ( ! pWDICtx->aBSSSessions[i].bInUse )
23345 {
23346 /*Found a session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023347 *ppSession = &pWDICtx->aBSSSessions[i];
Jeff Johnson295189b2012-06-20 16:38:30 -070023348 return i;
23349 }
23350 }
23351
Jeff Johnsone7245742012-09-05 17:12:55 -070023352 return i;
Jeff Johnson295189b2012-06-20 16:38:30 -070023353}/*WDI_FindEmptySession*/
23354
23355
23356/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023357 @brief Helper routine used to get the total count of active
Jeff Johnson295189b2012-06-20 16:38:30 -070023358 sessions
Jeff Johnsone7245742012-09-05 17:12:55 -070023359
23360
23361 @param pWDICtx: pointer to the WLAN DAL context
Hoonki Lee9af07cf2013-04-24 01:21:58 -070023362 macBSSID: pointer to BSSID. If NULL, get all the session.
23363 If not NULL, count ActiveSession by excluding (TRUE) or including (FALSE) skipBSSID.
23364 skipBSSID: if TRUE, get all the sessions except matching to macBSSID. If FALSE, get all session.
23365 This argument is ignored if macBSSID is NULL.
Jeff Johnson295189b2012-06-20 16:38:30 -070023366 @see
23367 @return Number of sessions in use
23368*/
23369wpt_uint8
23370WDI_GetActiveSessionsCount
Jeff Johnsone7245742012-09-05 17:12:55 -070023371(
Hoonki Lee9af07cf2013-04-24 01:21:58 -070023372 WDI_ControlBlockType* pWDICtx,
23373 wpt_macAddr macBSSID,
23374 wpt_boolean skipBSSID
Jeff Johnson295189b2012-06-20 16:38:30 -070023375)
23376{
Jeff Johnsone7245742012-09-05 17:12:55 -070023377 wpt_uint8 i, ucCount = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070023378 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023379
23380 /*------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -070023381 Count all sessions in use
23382 ------------------------------------------------------------------------*/
23383 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
23384 {
Hoonki Lee9af07cf2013-04-24 01:21:58 -070023385 if ( macBSSID && skipBSSID &&
23386 (eWLAN_PAL_TRUE ==
23387 wpalMemoryCompare(pWDICtx->aBSSSessions[i].macBSSID, macBSSID,
23388 WDI_MAC_ADDR_LEN)))
23389 {
23390 continue;
23391 }
23392 else if ( pWDICtx->aBSSSessions[i].bInUse )
23393 {
Jeff Johnson295189b2012-06-20 16:38:30 -070023394 ucCount++;
Hoonki Lee9af07cf2013-04-24 01:21:58 -070023395 }
Jeff Johnson295189b2012-06-20 16:38:30 -070023396 }
23397
Jeff Johnsone7245742012-09-05 17:12:55 -070023398 return ucCount;
Jeff Johnson295189b2012-06-20 16:38:30 -070023399}/*WDI_GetActiveSessionsCount*/
23400
23401/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023402 @brief Helper routine used to delete session in the WDI
Jeff Johnson295189b2012-06-20 16:38:30 -070023403 CB
Jeff Johnsone7245742012-09-05 17:12:55 -070023404
23405
23406 @param pWDICtx: pointer to the WLAN DAL context
23407 pSession: pointer to the session (if found)
23408
Jeff Johnson295189b2012-06-20 16:38:30 -070023409 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070023410 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070023411*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023412void
Jeff Johnson295189b2012-06-20 16:38:30 -070023413WDI_DeleteSession
Jeff Johnsone7245742012-09-05 17:12:55 -070023414(
Jeff Johnson295189b2012-06-20 16:38:30 -070023415 WDI_ControlBlockType* pWDICtx,
23416 WDI_BSSSessionType* ppSession
23417)
23418{
23419 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023420 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070023421 -------------------------------------------------------------------------*/
23422 if ( NULL == ppSession )
23423 {
23424 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023425 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070023426 return ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023427 }
23428
Jeff Johnsone7245742012-09-05 17:12:55 -070023429 /*------------------------------------------------------------------------
23430 Reset the entries int session
Jeff Johnson295189b2012-06-20 16:38:30 -070023431 ------------------------------------------------------------------------*/
23432 wpal_list_destroy(&ppSession->wptPendingQueue);
23433 wpalMemoryZero(ppSession, sizeof(*ppSession));
Jeff Johnsone7245742012-09-05 17:12:55 -070023434 ppSession->wdiAssocState = WDI_ASSOC_INIT_ST;
23435 ppSession->bInUse = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023436 ppSession->wdiBssType = WDI_INFRASTRUCTURE_MODE;
23437 wpal_list_init(&ppSession->wptPendingQueue);
23438
23439}/*WDI_DeleteSession*/
23440
23441/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023442 @brief Utility function to add the broadcast STA to the the STA table.
Jeff Johnson295189b2012-06-20 16:38:30 -070023443 The bcast STA ID is assigned by HAL and must be valid.
Jeff Johnsone7245742012-09-05 17:12:55 -070023444 @param
23445
Jeff Johnson295189b2012-06-20 16:38:30 -070023446 WDI_AddStaParams: - pointer to the WDI Add STA params
23447 usBcastStaIdx: - Broadcast STA index passed by HAL
Jeff Johnsone7245742012-09-05 17:12:55 -070023448
23449 @see
23450 @return void
Jeff Johnson295189b2012-06-20 16:38:30 -070023451*/
23452void
23453WDI_AddBcastSTAtoSTATable
23454(
23455 WDI_ControlBlockType* pWDICtx,
23456 WDI_AddStaParams * staParams,
23457 wpt_uint16 usBcastStaIdx
23458)
23459{
23460 WDI_AddStaParams wdiAddSTAParam = {0};
23461 wpt_macAddr bcastMacAddr = {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF};
23462 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
23463
23464 /*---------------------------------------------------------------------
23465 Sanity check
23466 ---------------------------------------------------------------------*/
23467 if ( NULL == staParams )
23468 {
23469 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023470 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023471
Jeff Johnsone7245742012-09-05 17:12:55 -070023472 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070023473 }
23474
23475 wdiAddSTAParam.bcastDpuIndex = staParams->bcastDpuIndex;
23476 wdiAddSTAParam.bcastDpuSignature = staParams->bcastDpuSignature;
23477 wdiAddSTAParam.bcastMgmtDpuIndex = staParams->bcastMgmtDpuIndex;
23478 wdiAddSTAParam.bcastMgmtDpuSignature = staParams->bcastMgmtDpuSignature;
23479 wdiAddSTAParam.dpuIndex = staParams->dpuIndex;
23480 wdiAddSTAParam.dpuSig = staParams->dpuSig;
23481 wpalMemoryCopy( wdiAddSTAParam.macBSSID, staParams->macBSSID,
23482 WDI_MAC_ADDR_LEN );
23483 wpalMemoryCopy( wdiAddSTAParam.staMacAddr, bcastMacAddr, WDI_MAC_ADDR_LEN );
23484 wdiAddSTAParam.ucBSSIdx = staParams->ucBSSIdx;
23485 wdiAddSTAParam.ucHTCapable = staParams->ucHTCapable;
23486 wdiAddSTAParam.ucRmfEnabled = staParams->ucRmfEnabled;
23487 wdiAddSTAParam.ucStaType = WDI_STA_ENTRY_BCAST;
23488 wdiAddSTAParam.ucWmmEnabled = staParams->ucWmmEnabled;
23489 wdiAddSTAParam.ucSTAIdx = usBcastStaIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070023490
Jeff Johnson295189b2012-06-20 16:38:30 -070023491 (void)WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
23492}
23493
23494/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023495 @brief NV blob will be divided into fragments of size 4kb and
23496 Sent to HAL
23497
23498 @param pWDICtx: pointer to the WLAN DAL context
23499 pEventData: pointer to the event information structure
23500
Jeff Johnson295189b2012-06-20 16:38:30 -070023501 @see
23502 @return Result of the function call
23503 */
23504
23505WDI_Status WDI_SendNvBlobReq
Jeff Johnsone7245742012-09-05 17:12:55 -070023506(
Jeff Johnson295189b2012-06-20 16:38:30 -070023507 WDI_ControlBlockType* pWDICtx,
23508 WDI_EventInfoType* pEventData
23509)
23510{
23511
23512 tHalNvImgDownloadReqMsg halNvImgDownloadParam;
23513 wpt_uint8* pSendBuffer = NULL;
23514 wpt_uint16 usDataOffset = 0;
23515 wpt_uint16 usSendSize = 0;
23516 wpt_uint16 usCurrentFragmentSize =0;
23517 wpt_uint8* pSrcBuffer = NULL;
23518 WDI_NvDownloadReqParamsType* pwdiNvDownloadReqParams =NULL ;
23519 WDI_NvDownloadRspCb wdiNvDownloadRspCb;
23520
23521 wdiNvDownloadRspCb = (WDI_NvDownloadRspCb)pEventData->pCBfnc;
23522 WDI_ASSERT(NULL != wdiNvDownloadRspCb);
23523 pwdiNvDownloadReqParams = (WDI_NvDownloadReqParamsType*)pEventData->pEventData;
23524
Jeff Johnsone7245742012-09-05 17:12:55 -070023525 /* Sanity Check is done by the caller */
Jeff Johnson295189b2012-06-20 16:38:30 -070023526 pSrcBuffer =(wpt_uint8 *) pwdiNvDownloadReqParams->wdiBlobInfo.pBlobAddress;
23527
23528 /* Update the current Fragment Number */
23529 pWDICtx->wdiNvBlobInfo.usCurrentFragment += 1;
23530
23531 /*Update the HAL REQ structure */
23532 /*HAL maintaining the fragment count as 0,1,2...n where at WDI it is represented as 1,2,3.. n*/
23533 halNvImgDownloadParam.nvImageReqParams.fragNumber =
23534 pWDICtx->wdiNvBlobInfo.usCurrentFragment-1;
23535
23536 /* Divide the NV Image to size of 'FRAGMENT_SIZE' fragments and send it to HAL.
Jeff Johnsone7245742012-09-05 17:12:55 -070023537 If the size of the Image is less than 'FRAGMENT_SIZE' then in one iteration total
Jeff Johnson295189b2012-06-20 16:38:30 -070023538 image will be sent to HAL*/
23539
Jeff Johnsone7245742012-09-05 17:12:55 -070023540 if(pWDICtx->wdiNvBlobInfo.usTotalFragment
Jeff Johnson295189b2012-06-20 16:38:30 -070023541 == pWDICtx->wdiNvBlobInfo.usCurrentFragment)
Jeff Johnsone7245742012-09-05 17:12:55 -070023542 {
Jeff Johnson295189b2012-06-20 16:38:30 -070023543 /* Taking care of boundry condition */
Jeff Johnsone7245742012-09-05 17:12:55 -070023544 if( !(usCurrentFragmentSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070023545 pwdiNvDownloadReqParams->wdiBlobInfo.uBlobSize%FRAGMENT_SIZE ))
23546 usCurrentFragmentSize = FRAGMENT_SIZE;
23547
23548 /*Update the HAL REQ structure */
23549 halNvImgDownloadParam.nvImageReqParams.isLastFragment = 1;
23550 halNvImgDownloadParam.nvImageReqParams.nvImgBufferSize= usCurrentFragmentSize;
23551
23552 }
23553 else
Jeff Johnsone7245742012-09-05 17:12:55 -070023554 {
Jeff Johnson295189b2012-06-20 16:38:30 -070023555 usCurrentFragmentSize = FRAGMENT_SIZE;
23556
23557 /*Update the HAL REQ structure */
23558 halNvImgDownloadParam.nvImageReqParams.isLastFragment =0;
23559 halNvImgDownloadParam.nvImageReqParams.nvImgBufferSize = usCurrentFragmentSize;
23560 }
23561
23562 /*-----------------------------------------------------------------------
23563 Get message buffer
23564 -----------------------------------------------------------------------*/
23565 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,WDI_NV_DOWNLOAD_REQ,
23566 sizeof(halNvImgDownloadParam.nvImageReqParams)+ usCurrentFragmentSize,
23567 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070023568 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070023569 (usDataOffset + sizeof(halNvImgDownloadParam.nvImageReqParams) + usCurrentFragmentSize )))
23570 {
23571 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080023572 "Unable to get send buffer in NV Download req %p %p ",
Jeff Johnson295189b2012-06-20 16:38:30 -070023573 pEventData, pwdiNvDownloadReqParams);
23574 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070023575 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023576 }
23577
23578 /* Copying the Hal NV download REQ structure */
Jeff Johnsone7245742012-09-05 17:12:55 -070023579 wpalMemoryCopy(pSendBuffer + usDataOffset ,
Jeff Johnson295189b2012-06-20 16:38:30 -070023580 &halNvImgDownloadParam.nvImageReqParams ,sizeof(tHalNvImgDownloadReqParams));
23581
23582 /* Appending the NV image fragment */
23583 wpalMemoryCopy(pSendBuffer + usDataOffset + sizeof(tHalNvImgDownloadReqParams),
23584 (void *)(pSrcBuffer + halNvImgDownloadParam.nvImageReqParams.fragNumber * FRAGMENT_SIZE),
23585 usCurrentFragmentSize);
23586
23587 pWDICtx->wdiReqStatusCB = pwdiNvDownloadReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070023588 pWDICtx->pReqStatusUserData = pwdiNvDownloadReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070023589
Jeff Johnsone7245742012-09-05 17:12:55 -070023590 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
23591 wdiNvDownloadRspCb, pEventData->pUserData,
Jeff Johnson295189b2012-06-20 16:38:30 -070023592 WDI_NV_DOWNLOAD_RESP);
23593
23594}
Jeff Johnsone7245742012-09-05 17:12:55 -070023595/*============================================================================
23596 Helper inline functions for
Jeff Johnson295189b2012-06-20 16:38:30 -070023597 ============================================================================*/
23598/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023599 @brief Helper routine used to find a session based on the BSSID
23600 @param pContext: pointer to the WLAN DAL context
23601 @param pDPContext: pointer to the Datapath context
23602
Jeff Johnson295189b2012-06-20 16:38:30 -070023603 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070023604 @return
Jeff Johnson295189b2012-06-20 16:38:30 -070023605*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023606WPT_INLINE void
Jeff Johnson295189b2012-06-20 16:38:30 -070023607WDI_DS_AssignDatapathContext (void *pContext, void *pDPContext)
23608{
23609 WDI_ControlBlockType *pCB = (WDI_ControlBlockType *)pContext;
23610
23611 pCB->pDPContext = pDPContext;
23612 return;
23613}
23614
23615/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023616 @brief Helper routine used to find a session based on the BSSID
23617
23618
23619 @param pContext: pointer to the WLAN DAL context
23620
Jeff Johnson295189b2012-06-20 16:38:30 -070023621 @see
23622 @return pointer to Datapath context
23623*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023624WPT_INLINE void *
Jeff Johnson295189b2012-06-20 16:38:30 -070023625WDI_DS_GetDatapathContext (void *pContext)
23626{
23627 WDI_ControlBlockType *pCB = (WDI_ControlBlockType *)pContext;
23628 return pCB->pDPContext;
23629}
23630/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023631 @brief Helper routine used to find a session based on the BSSID
23632
23633
23634 @param pContext: pointer to the WLAN DAL context
23635 @param pDTDriverContext: pointer to the Transport Driver context
23636
Jeff Johnson295189b2012-06-20 16:38:30 -070023637 @see
23638 @return void
23639*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023640WPT_INLINE void
Jeff Johnson295189b2012-06-20 16:38:30 -070023641WDT_AssignTransportDriverContext (void *pContext, void *pDTDriverContext)
23642{
23643 WDI_ControlBlockType *pCB = (WDI_ControlBlockType *)pContext;
23644
23645 pCB->pDTDriverContext = pDTDriverContext;
Jeff Johnsone7245742012-09-05 17:12:55 -070023646 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070023647}
23648
23649/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023650 @brief Helper routine used to find a session based on the BSSID
23651
23652
23653 @param pWDICtx: pointer to the WLAN DAL context
23654
Jeff Johnson295189b2012-06-20 16:38:30 -070023655 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070023656 @return pointer to datapath context
Jeff Johnson295189b2012-06-20 16:38:30 -070023657*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023658WPT_INLINE void *
Jeff Johnson295189b2012-06-20 16:38:30 -070023659WDT_GetTransportDriverContext (void *pContext)
23660{
23661 WDI_ControlBlockType *pCB = (WDI_ControlBlockType *)pContext;
Jeff Johnsone7245742012-09-05 17:12:55 -070023662 return(pCB->pDTDriverContext);
Jeff Johnson295189b2012-06-20 16:38:30 -070023663}
23664
Jeff Johnsone7245742012-09-05 17:12:55 -070023665/*============================================================================
Jeff Johnson295189b2012-06-20 16:38:30 -070023666 Helper inline converters
23667 ============================================================================*/
23668/*Convert WDI driver type into HAL driver type*/
23669WPT_STATIC WPT_INLINE WDI_Status
23670WDI_HAL_2_WDI_STATUS
23671(
23672 eHalStatus halStatus
23673)
23674{
Jeff Johnsone7245742012-09-05 17:12:55 -070023675 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070023676 the chances of getting inlined*/
23677 switch( halStatus )
23678 {
23679 case eHAL_STATUS_SUCCESS:
23680 case eHAL_STATUS_ADD_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO:
23681 case eHAL_STATUS_DEL_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO:
23682 return WDI_STATUS_SUCCESS;
23683 case eHAL_STATUS_FAILURE:
23684 return WDI_STATUS_E_FAILURE;
23685 case eHAL_STATUS_FAILED_ALLOC:
Jeff Johnsone7245742012-09-05 17:12:55 -070023686 return WDI_STATUS_MEM_FAILURE;
23687 /*The rest of the HAL error codes must be kept hidden from the UMAC as
Jeff Johnson295189b2012-06-20 16:38:30 -070023688 they refer to specific internal modules of our device*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023689 default:
23690 return WDI_STATUS_DEV_INTERNAL_FAILURE;
23691 }
Jeff Johnson295189b2012-06-20 16:38:30 -070023692
Jeff Johnsone7245742012-09-05 17:12:55 -070023693 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023694}/*WDI_HAL_2_WDI_STATUS*/
23695
23696/*Convert WDI request type into HAL request type*/
23697WPT_STATIC WPT_INLINE tHalHostMsgType
23698WDI_2_HAL_REQ_TYPE
23699(
23700 WDI_RequestEnumType wdiReqType
23701)
23702{
Jeff Johnsone7245742012-09-05 17:12:55 -070023703 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070023704 the chances of getting inlined*/
23705 switch( wdiReqType )
Jeff Johnsone7245742012-09-05 17:12:55 -070023706 {
Jeff Johnson295189b2012-06-20 16:38:30 -070023707 case WDI_START_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023708 return WLAN_HAL_START_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023709 case WDI_STOP_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023710 return WLAN_HAL_STOP_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023711 case WDI_INIT_SCAN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023712 return WLAN_HAL_INIT_SCAN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023713 case WDI_START_SCAN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023714 return WLAN_HAL_START_SCAN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023715 case WDI_END_SCAN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023716 return WLAN_HAL_END_SCAN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023717 case WDI_FINISH_SCAN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023718 return WLAN_HAL_FINISH_SCAN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023719 case WDI_JOIN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023720 return WLAN_HAL_JOIN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023721 case WDI_CONFIG_BSS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023722 return WLAN_HAL_CONFIG_BSS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023723 case WDI_DEL_BSS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023724 return WLAN_HAL_DELETE_BSS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023725 case WDI_POST_ASSOC_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023726 return WLAN_HAL_POST_ASSOC_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023727 case WDI_DEL_STA_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023728 return WLAN_HAL_DELETE_STA_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023729 case WDI_SET_BSS_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023730 return WLAN_HAL_SET_BSSKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023731 case WDI_RMV_BSS_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023732 return WLAN_HAL_RMV_BSSKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023733 case WDI_SET_STA_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023734 return WLAN_HAL_SET_STAKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023735 case WDI_RMV_STA_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023736 return WLAN_HAL_RMV_STAKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023737 case WDI_SET_STA_BCAST_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023738 return WLAN_HAL_SET_BCASTKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023739 case WDI_RMV_STA_BCAST_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023740 //Some conflict in the old code - check this: return WLAN_HAL_RMV_BCASTKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023741 return WLAN_HAL_RMV_STAKEY_REQ;
23742 case WDI_ADD_TS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023743 return WLAN_HAL_ADD_TS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023744 case WDI_DEL_TS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023745 return WLAN_HAL_DEL_TS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023746 case WDI_UPD_EDCA_PRMS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023747 return WLAN_HAL_UPD_EDCA_PARAMS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023748 case WDI_ADD_BA_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023749 return WLAN_HAL_ADD_BA_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023750 case WDI_DEL_BA_REQ:
23751 return WLAN_HAL_DEL_BA_REQ;
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -080023752#ifdef FEATURE_WLAN_ESE
Jeff Johnson295189b2012-06-20 16:38:30 -070023753 case WDI_TSM_STATS_REQ:
23754 return WLAN_HAL_TSM_STATS_REQ;
23755#endif
23756 case WDI_CH_SWITCH_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023757 return WLAN_HAL_CH_SWITCH_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023758 case WDI_CONFIG_STA_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023759 return WLAN_HAL_CONFIG_STA_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023760 case WDI_SET_LINK_ST_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023761 return WLAN_HAL_SET_LINK_ST_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023762 case WDI_GET_STATS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023763 return WLAN_HAL_GET_STATS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023764 case WDI_UPDATE_CFG_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023765 return WLAN_HAL_UPDATE_CFG_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023766 case WDI_ADD_BA_SESSION_REQ:
23767 return WLAN_HAL_ADD_BA_SESSION_REQ;
23768 case WDI_TRIGGER_BA_REQ:
23769 return WLAN_HAL_TRIGGER_BA_REQ;
23770 case WDI_UPD_BCON_PRMS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023771 return WLAN_HAL_UPDATE_BEACON_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023772 case WDI_SND_BCON_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023773 return WLAN_HAL_SEND_BEACON_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023774 case WDI_UPD_PROBE_RSP_TEMPLATE_REQ:
23775 return WLAN_HAL_UPDATE_PROBE_RSP_TEMPLATE_REQ;
23776 case WDI_SET_MAX_TX_POWER_REQ:
23777 return WLAN_HAL_SET_MAX_TX_POWER_REQ;
Arif Hussaina5ebce02013-08-09 15:09:58 -070023778 case WDI_SET_MAX_TX_POWER_PER_BAND_REQ:
23779 return WLAN_HAL_SET_MAX_TX_POWER_PER_BAND_REQ;
schang86c22c42013-03-13 18:41:24 -070023780 case WDI_SET_TX_POWER_REQ:
23781 return WLAN_HAL_SET_TX_POWER_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023782 case WDI_P2P_GO_NOTICE_OF_ABSENCE_REQ:
23783 return WLAN_HAL_SET_P2P_GONOA_REQ;
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053023784#ifdef FEATURE_WLAN_TDLS
23785 case WDI_TDLS_LINK_ESTABLISH_REQ:
23786 return WLAN_HAL_TDLS_LINK_ESTABLISHED_REQ;
Atul Mittalc0f739f2014-07-31 13:47:47 +053023787 case WDI_TDLS_CHAN_SWITCH_REQ:
23788 return WLAN_HAL_TDLS_CHAN_SWITCH_REQ;
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053023789#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070023790 case WDI_ENTER_IMPS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023791 return WLAN_HAL_ENTER_IMPS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023792 case WDI_EXIT_IMPS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023793 return WLAN_HAL_EXIT_IMPS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023794 case WDI_ENTER_BMPS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023795 return WLAN_HAL_ENTER_BMPS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023796 case WDI_EXIT_BMPS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023797 return WLAN_HAL_EXIT_BMPS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023798 case WDI_ENTER_UAPSD_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023799 return WLAN_HAL_ENTER_UAPSD_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023800 case WDI_EXIT_UAPSD_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023801 return WLAN_HAL_EXIT_UAPSD_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023802 case WDI_SET_UAPSD_PARAM_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023803 return WLAN_HAL_SET_UAPSD_AC_PARAMS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023804 case WDI_UPDATE_UAPSD_PARAM_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023805 return WLAN_HAL_UPDATE_UAPSD_PARAM_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023806 case WDI_CONFIGURE_RXP_FILTER_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023807 return WLAN_HAL_CONFIGURE_RXP_FILTER_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023808 case WDI_SET_BEACON_FILTER_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023809 return WLAN_HAL_ADD_BCN_FILTER_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023810 case WDI_REM_BEACON_FILTER_REQ:
23811 return WLAN_HAL_REM_BCN_FILTER_REQ;
23812 case WDI_SET_RSSI_THRESHOLDS_REQ:
23813 return WLAN_HAL_SET_RSSI_THRESH_REQ;
23814 case WDI_HOST_OFFLOAD_REQ:
23815 return WLAN_HAL_HOST_OFFLOAD_REQ;
23816 case WDI_WOWL_ADD_BC_PTRN_REQ:
23817 return WLAN_HAL_ADD_WOWL_BCAST_PTRN;
23818 case WDI_WOWL_DEL_BC_PTRN_REQ:
23819 return WLAN_HAL_DEL_WOWL_BCAST_PTRN;
23820 case WDI_WOWL_ENTER_REQ:
23821 return WLAN_HAL_ENTER_WOWL_REQ;
23822 case WDI_WOWL_EXIT_REQ:
23823 return WLAN_HAL_EXIT_WOWL_REQ;
23824 case WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ:
23825 return WLAN_HAL_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ;
23826 case WDI_NV_DOWNLOAD_REQ:
23827 return WLAN_HAL_DOWNLOAD_NV_REQ;
23828 case WDI_FLUSH_AC_REQ:
23829 return WLAN_HAL_TL_HAL_FLUSH_AC_REQ;
23830 case WDI_BTAMP_EVENT_REQ:
23831 return WLAN_HAL_SIGNAL_BTAMP_EVENT_REQ;
23832#ifdef WLAN_FEATURE_VOWIFI_11R
23833 case WDI_AGGR_ADD_TS_REQ:
23834 return WLAN_HAL_AGGR_ADD_TS_REQ;
23835#endif /* WLAN_FEATURE_VOWIFI_11R */
Jeff Johnson295189b2012-06-20 16:38:30 -070023836 case WDI_FTM_CMD_REQ:
23837 return WLAN_HAL_PROCESS_PTT_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023838 case WDI_ADD_STA_SELF_REQ:
23839 return WLAN_HAL_ADD_STA_SELF_REQ;
23840 case WDI_DEL_STA_SELF_REQ:
23841 return WLAN_HAL_DEL_STA_SELF_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070023842#ifdef FEATURE_OEM_DATA_SUPPORT
23843 case WDI_START_OEM_DATA_REQ:
23844 return WLAN_HAL_START_OEM_DATA_REQ;
23845#endif /* FEATURE_OEM_DATA_SUPPORT */
Jeff Johnson295189b2012-06-20 16:38:30 -070023846 case WDI_HOST_RESUME_REQ:
23847 return WLAN_HAL_HOST_RESUME_REQ;
23848 case WDI_HOST_SUSPEND_IND:
23849 return WLAN_HAL_HOST_SUSPEND_IND;
Madan Mohan Koyyalamudi01cba042013-01-10 21:56:05 -080023850 case WDI_TRAFFIC_STATS_IND:
23851 return WLAN_HAL_CLASS_B_STATS_IND;
Chet Lanctot186b5732013-03-18 10:26:30 -070023852#ifdef WLAN_FEATURE_11W
23853 case WDI_EXCLUDE_UNENCRYPTED_IND:
23854 return WLAN_HAL_EXCLUDE_UNENCRYPTED_IND;
23855#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070023856 case WDI_KEEP_ALIVE_REQ:
23857 return WLAN_HAL_KEEP_ALIVE_REQ;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070023858#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070023859 case WDI_ROAM_SCAN_OFFLOAD_REQ:
23860 return WLAN_ROAM_SCAN_OFFLOAD_REQ;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070023861#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070023862#ifdef FEATURE_WLAN_SCAN_PNO
23863 case WDI_SET_PREF_NETWORK_REQ:
23864 return WLAN_HAL_SET_PREF_NETWORK_REQ;
23865 case WDI_SET_RSSI_FILTER_REQ:
23866 return WLAN_HAL_SET_RSSI_FILTER_REQ;
23867 case WDI_UPDATE_SCAN_PARAMS_REQ:
23868 return WLAN_HAL_UPDATE_SCAN_PARAM_REQ;
23869#endif // FEATURE_WLAN_SCAN_PNO
23870 case WDI_SET_TX_PER_TRACKING_REQ:
23871 return WLAN_HAL_SET_TX_PER_TRACKING_REQ;
23872#ifdef WLAN_FEATURE_PACKET_FILTERING
23873 case WDI_8023_MULTICAST_LIST_REQ:
23874 return WLAN_HAL_8023_MULTICAST_LIST_REQ;
23875 case WDI_RECEIVE_FILTER_SET_FILTER_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023876 return WLAN_HAL_SET_PACKET_FILTER_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023877 case WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ:
23878 return WLAN_HAL_PACKET_FILTER_MATCH_COUNT_REQ;
23879 case WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ:
23880 return WLAN_HAL_CLEAR_PACKET_FILTER_REQ;
23881#endif // WLAN_FEATURE_PACKET_FILTERING
23882 case WDI_HAL_DUMP_CMD_REQ:
23883 return WLAN_HAL_DUMP_COMMAND_REQ;
23884#ifdef WLAN_FEATURE_GTK_OFFLOAD
23885 case WDI_GTK_OFFLOAD_REQ:
23886 return WLAN_HAL_GTK_OFFLOAD_REQ;
23887 case WDI_GTK_OFFLOAD_GETINFO_REQ:
23888 return WLAN_HAL_GTK_OFFLOAD_GETINFO_REQ;
23889#endif /* WLAN_FEATURE_GTK_OFFLOAD */
23890
23891 case WDI_INIT_SCAN_CON_REQ:
23892 return WLAN_HAL_INIT_SCAN_CON_REQ;
23893 case WDI_SET_POWER_PARAMS_REQ:
23894 return WLAN_HAL_SET_POWER_PARAMS_REQ;
23895 case WDI_SET_TM_LEVEL_REQ:
23896 return WLAN_HAL_SET_THERMAL_MITIGATION_REQ;
23897 case WDI_FEATURE_CAPS_EXCHANGE_REQ:
23898 return WLAN_HAL_FEATURE_CAPS_EXCHANGE_REQ;
Mohit Khanna4a70d262012-09-11 16:30:12 -070023899#ifdef WLAN_FEATURE_11AC
23900 case WDI_UPDATE_VHT_OP_MODE_REQ:
23901 return WLAN_HAL_UPDATE_VHT_OP_MODE_REQ;
23902#endif
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -080023903 case WDI_GET_ROAM_RSSI_REQ:
23904 return WLAN_HAL_GET_ROAM_RSSI_REQ;
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +053023905 case WDI_DHCP_START_IND:
23906 return WLAN_HAL_DHCP_START_IND;
23907 case WDI_DHCP_STOP_IND:
23908 return WLAN_HAL_DHCP_STOP_IND;
Leo Chang9056f462013-08-01 19:21:11 -070023909#ifdef FEATURE_WLAN_LPHB
23910 case WDI_LPHB_CFG_REQ:
23911 return WLAN_HAL_LPHB_CFG_REQ;
23912#endif /* FEATURE_WLAN_LPHB */
Yue Mab9c86f42013-08-14 15:59:08 -070023913 case WDI_ADD_PERIODIC_TX_PATTERN_IND:
23914 return WLAN_HAL_ADD_PERIODIC_TX_PTRN_IND;
23915 case WDI_DEL_PERIODIC_TX_PATTERN_IND:
23916 return WLAN_HAL_DEL_PERIODIC_TX_PTRN_IND;
23917
Rajeev79dbe4c2013-10-05 11:03:42 +053023918#ifdef FEATURE_WLAN_BATCH_SCAN
23919 case WDI_SET_BATCH_SCAN_REQ:
23920 return WLAN_HAL_BATCHSCAN_SET_REQ;
23921 case WDI_STOP_BATCH_SCAN_IND:
23922 return WLAN_HAL_BATCHSCAN_STOP_IND;
23923 case WDI_TRIGGER_BATCH_SCAN_RESULT_IND:
23924 return WLAN_HAL_BATCHSCAN_TRIGGER_RESULT_IND;
23925#endif
Chittajit Mitraf5413a42013-10-18 14:20:08 -070023926 case WDI_RATE_UPDATE_IND:
23927 return WLAN_HAL_RATE_UPDATE_IND;
Sandeep Puligillac3450eb2014-03-06 18:10:57 +053023928 case WDI_START_HT40_OBSS_SCAN_IND:
23929 return WLAN_HAL_START_HT40_OBSS_SCAN_IND;
23930 case WDI_STOP_HT40_OBSS_SCAN_IND:
23931 return WLAN_HAL_STOP_HT40_OBSS_SCAN_IND;
Manjunathappa Prakash86f78ca2014-02-10 18:09:15 -080023932 case WDI_UPDATE_CHAN_REQ:
23933 return WLAN_HAL_UPDATE_CHANNEL_LIST_REQ;
Kalikinkar dhara1e83b772014-02-06 12:59:22 -080023934 case WDI_CH_SWITCH_REQ_V1:
23935 return WLAN_HAL_CH_SWITCH_V1_REQ;
c_hpothu92367912014-05-01 15:18:17 +053023936 case WDI_GET_BCN_MISS_RATE_REQ:
23937 return WLAN_HAL_GET_BCN_MISS_RATE_REQ;
Sunil Duttbd736ed2014-05-26 21:19:41 +053023938
23939#ifdef WLAN_FEATURE_LINK_LAYER_STATS
23940 case WDI_LL_STATS_SET_REQ:
23941 return WLAN_HAL_LL_SET_STATS_REQ;
23942 case WDI_LL_STATS_GET_REQ:
23943 return WLAN_HAL_LL_GET_STATS_REQ;
23944 case WDI_LL_STATS_CLEAR_REQ:
23945 return WLAN_HAL_LL_CLEAR_STATS_REQ;
23946#endif
Dino Mycle41bdc942014-06-10 11:30:24 +053023947#ifdef WLAN_FEATURE_EXTSCAN
23948 case WDI_EXTSCAN_START_REQ:
23949 return WLAN_HAL_EXT_SCAN_START_REQ;
23950 case WDI_EXTSCAN_STOP_REQ:
23951 return WLAN_HAL_EXT_SCAN_STOP_REQ;
23952 case WDI_EXTSCAN_GET_CACHED_RESULTS_REQ:
23953 return WLAN_HAL_EXT_SCAN_GET_SCAN_REQ;
23954 case WDI_EXTSCAN_GET_CAPABILITIES_REQ:
23955 return WLAN_HAL_EXT_SCAN_GET_CAP_REQ;
23956 case WDI_EXTSCAN_SET_BSSID_HOTLIST_REQ:
23957 return WLAN_HAL_BSSID_HOTLIST_SET_REQ;
23958 case WDI_EXTSCAN_RESET_BSSID_HOTLIST_REQ:
23959 return WLAN_HAL_BSSID_HOTLIST_RESET_REQ;
23960 case WDI_EXTSCAN_SET_SIGNF_RSSI_CHANGE_REQ:
23961 return WLAN_HAL_SIG_RSSI_SET_REQ;
23962 case WDI_EXTSCAN_RESET_SIGNF_RSSI_CHANGE_REQ:
23963 return WLAN_HAL_SIG_RSSI_RESET_REQ;
23964#endif /* WLAN_FEATURE_EXTSCAN */
Siddharth Bhal171788a2014-09-29 21:02:40 +053023965 case WDI_SPOOF_MAC_ADDR_REQ:
23966 return WLAN_HAL_MAC_SPOOFED_SCAN_REQ;
Abhishek Singh85b74712014-10-08 11:38:19 +053023967 case WDI_GET_FW_STATS_REQ:
23968 return WLAN_HAL_FW_STATS_REQ;
Srinivas Dasari4dae48f2014-11-26 21:14:16 +053023969 case WDI_ENCRYPT_MSG_REQ:
23970 return WLAN_HAL_ENCRYPT_DATA_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023971 default:
Jeff Johnsone7245742012-09-05 17:12:55 -070023972 return WLAN_HAL_MSG_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070023973 }
Jeff Johnsone7245742012-09-05 17:12:55 -070023974
Jeff Johnson295189b2012-06-20 16:38:30 -070023975}/*WDI_2_HAL_REQ_TYPE*/
23976
23977/*Convert WDI response type into HAL response type*/
23978WPT_STATIC WPT_INLINE WDI_ResponseEnumType
23979HAL_2_WDI_RSP_TYPE
23980(
23981 tHalHostMsgType halMsg
23982)
23983{
Jeff Johnsone7245742012-09-05 17:12:55 -070023984 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070023985 the chances of getting inlined*/
23986 switch( halMsg )
23987 {
23988 case WLAN_HAL_START_RSP:
23989 return WDI_START_RESP;
23990 case WLAN_HAL_STOP_RSP:
23991 return WDI_STOP_RESP;
23992 case WLAN_HAL_INIT_SCAN_RSP:
23993 return WDI_INIT_SCAN_RESP;
23994 case WLAN_HAL_START_SCAN_RSP:
23995 return WDI_START_SCAN_RESP;
23996 case WLAN_HAL_END_SCAN_RSP:
23997 return WDI_END_SCAN_RESP;
23998 case WLAN_HAL_FINISH_SCAN_RSP:
23999 return WDI_FINISH_SCAN_RESP;
24000 case WLAN_HAL_CONFIG_STA_RSP:
24001 return WDI_CONFIG_STA_RESP;
24002 case WLAN_HAL_DELETE_STA_RSP:
24003 return WDI_DEL_STA_RESP;
24004 case WLAN_HAL_CONFIG_BSS_RSP:
24005 return WDI_CONFIG_BSS_RESP;
24006 case WLAN_HAL_DELETE_BSS_RSP:
24007 return WDI_DEL_BSS_RESP;
24008 case WLAN_HAL_JOIN_RSP:
24009 return WDI_JOIN_RESP;
24010 case WLAN_HAL_POST_ASSOC_RSP:
24011 return WDI_POST_ASSOC_RESP;
24012 case WLAN_HAL_SET_BSSKEY_RSP:
24013 return WDI_SET_BSS_KEY_RESP;
24014 case WLAN_HAL_SET_STAKEY_RSP:
24015 return WDI_SET_STA_KEY_RESP;
24016 case WLAN_HAL_RMV_BSSKEY_RSP:
24017 return WDI_RMV_BSS_KEY_RESP;
24018 case WLAN_HAL_RMV_STAKEY_RSP:
24019 return WDI_RMV_STA_KEY_RESP;
24020 case WLAN_HAL_SET_BCASTKEY_RSP:
24021 return WDI_SET_STA_BCAST_KEY_RESP;
24022 //Some conflict in the old code - check this: case WLAN_HAL_RMV_BCASTKEY_RSP:
24023 // return WDI_RMV_STA_BCAST_KEY_RESP;
24024 case WLAN_HAL_ADD_TS_RSP:
24025 return WDI_ADD_TS_RESP;
24026 case WLAN_HAL_DEL_TS_RSP:
24027 return WDI_DEL_TS_RESP;
24028 case WLAN_HAL_UPD_EDCA_PARAMS_RSP:
24029 return WDI_UPD_EDCA_PRMS_RESP;
24030 case WLAN_HAL_ADD_BA_RSP:
24031 return WDI_ADD_BA_RESP;
24032 case WLAN_HAL_DEL_BA_RSP:
24033 return WDI_DEL_BA_RESP;
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -080024034#ifdef FEATURE_WLAN_ESE
Jeff Johnson295189b2012-06-20 16:38:30 -070024035 case WLAN_HAL_TSM_STATS_RSP:
24036 return WDI_TSM_STATS_RESP;
24037#endif
24038 case WLAN_HAL_CH_SWITCH_RSP:
24039 return WDI_CH_SWITCH_RESP;
24040 case WLAN_HAL_SET_LINK_ST_RSP:
24041 return WDI_SET_LINK_ST_RESP;
24042 case WLAN_HAL_GET_STATS_RSP:
24043 return WDI_GET_STATS_RESP;
24044 case WLAN_HAL_UPDATE_CFG_RSP:
24045 return WDI_UPDATE_CFG_RESP;
24046 case WLAN_HAL_ADD_BA_SESSION_RSP:
24047 return WDI_ADD_BA_SESSION_RESP;
24048 case WLAN_HAL_TRIGGER_BA_RSP:
24049 return WDI_TRIGGER_BA_RESP;
24050 case WLAN_HAL_UPDATE_BEACON_RSP:
24051 return WDI_UPD_BCON_PRMS_RESP;
24052 case WLAN_HAL_SEND_BEACON_RSP:
24053 return WDI_SND_BCON_RESP;
24054 case WLAN_HAL_UPDATE_PROBE_RSP_TEMPLATE_RSP:
24055 return WDI_UPD_PROBE_RSP_TEMPLATE_RESP;
24056 /*Indications*/
24057 case WLAN_HAL_RSSI_NOTIFICATION_IND:
24058 return WDI_HAL_RSSI_NOTIFICATION_IND;
24059 case WLAN_HAL_MISSED_BEACON_IND:
24060 return WDI_HAL_MISSED_BEACON_IND;
24061 case WLAN_HAL_UNKNOWN_ADDR2_FRAME_RX_IND:
24062 return WDI_HAL_UNKNOWN_ADDR2_FRAME_RX_IND;
24063 case WLAN_HAL_MIC_FAILURE_IND:
24064 return WDI_HAL_MIC_FAILURE_IND;
24065 case WLAN_HAL_FATAL_ERROR_IND:
24066 return WDI_HAL_FATAL_ERROR_IND;
24067 case WLAN_HAL_DELETE_STA_CONTEXT_IND:
24068 return WDI_HAL_DEL_STA_IND;
24069 case WLAN_HAL_COEX_IND:
24070 return WDI_HAL_COEX_IND;
24071 case WLAN_HAL_OTA_TX_COMPL_IND:
24072 return WDI_HAL_TX_COMPLETE_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070024073 case WLAN_HAL_P2P_NOA_ATTR_IND:
24074 return WDI_HAL_P2P_NOA_ATTR_IND;
Viral Modid86bde22012-12-10 13:09:21 -080024075 case WLAN_HAL_P2P_NOA_START_IND:
24076 return WDI_HAL_P2P_NOA_START_IND;
Abhishek Singh66c16762014-08-14 19:13:19 +053024077 case WLAN_HAL_DEL_BA_IND:
24078 return WDI_HAL_DEL_BA_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070024079 case WLAN_HAL_TX_PER_HIT_IND:
24080 return WDI_HAL_TX_PER_HIT_IND;
24081 case WLAN_HAL_SET_MAX_TX_POWER_RSP:
24082 return WDI_SET_MAX_TX_POWER_RESP;
Arif Hussaina5ebce02013-08-09 15:09:58 -070024083 case WLAN_HAL_SET_MAX_TX_POWER_PER_BAND_RSP:
24084 return WDI_SET_MAX_TX_POWER_PER_BAND_RSP;
schang86c22c42013-03-13 18:41:24 -070024085 case WLAN_HAL_SET_TX_POWER_RSP:
24086 return WDI_SET_TX_POWER_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070024087 case WLAN_HAL_SET_P2P_GONOA_RSP:
24088 return WDI_P2P_GO_NOTICE_OF_ABSENCE_RESP;
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053024089#ifdef FEATURE_WLAN_TDLS
24090 case WLAN_HAL_TDLS_LINK_ESTABLISHED_RSP:
24091 return WDI_TDLS_LINK_ESTABLISH_REQ_RESP;
Atul Mittalc0f739f2014-07-31 13:47:47 +053024092 case WLAN_HAL_TDLS_CHAN_SWITCH_RSP:
24093 return WDI_TDLS_CHAN_SWITCH_REQ_RESP;
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053024094 case WLAN_HAL_TDLS_IND:
24095 return WDI_HAL_TDLS_IND;
24096#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070024097 case WLAN_HAL_ENTER_IMPS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070024098 return WDI_ENTER_IMPS_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070024099 case WLAN_HAL_EXIT_IMPS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070024100 return WDI_EXIT_IMPS_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070024101 case WLAN_HAL_ENTER_BMPS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070024102 return WDI_ENTER_BMPS_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070024103 case WLAN_HAL_EXIT_BMPS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070024104 return WDI_EXIT_BMPS_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070024105 case WLAN_HAL_ENTER_UAPSD_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070024106 return WDI_ENTER_UAPSD_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070024107 case WLAN_HAL_EXIT_UAPSD_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070024108 return WDI_EXIT_UAPSD_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070024109 case WLAN_HAL_SET_UAPSD_AC_PARAMS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070024110 return WDI_SET_UAPSD_PARAM_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070024111 case WLAN_HAL_UPDATE_UAPSD_PARAM_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070024112 return WDI_UPDATE_UAPSD_PARAM_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070024113 case WLAN_HAL_CONFIGURE_RXP_FILTER_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070024114 return WDI_CONFIGURE_RXP_FILTER_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070024115 case WLAN_HAL_ADD_BCN_FILTER_RSP:
24116 return WDI_SET_BEACON_FILTER_RESP;
24117 case WLAN_HAL_REM_BCN_FILTER_RSP:
24118 return WDI_REM_BEACON_FILTER_RESP;
24119 case WLAN_HAL_SET_RSSI_THRESH_RSP:
24120 return WDI_SET_RSSI_THRESHOLDS_RESP;
24121 case WLAN_HAL_HOST_OFFLOAD_RSP:
24122 return WDI_HOST_OFFLOAD_RESP;
24123 case WLAN_HAL_ADD_WOWL_BCAST_PTRN_RSP:
24124 return WDI_WOWL_ADD_BC_PTRN_RESP;
24125 case WLAN_HAL_DEL_WOWL_BCAST_PTRN_RSP:
24126 return WDI_WOWL_DEL_BC_PTRN_RESP;
24127 case WLAN_HAL_ENTER_WOWL_RSP:
24128 return WDI_WOWL_ENTER_RESP;
24129 case WLAN_HAL_EXIT_WOWL_RSP:
24130 return WDI_WOWL_EXIT_RESP;
24131 case WLAN_HAL_CONFIGURE_APPS_CPU_WAKEUP_STATE_RSP:
24132 return WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_RESP;
24133 case WLAN_HAL_DOWNLOAD_NV_RSP:
24134 return WDI_NV_DOWNLOAD_RESP;
24135 case WLAN_HAL_TL_HAL_FLUSH_AC_RSP:
24136 return WDI_FLUSH_AC_RESP;
24137 case WLAN_HAL_SIGNAL_BTAMP_EVENT_RSP:
24138 return WDI_BTAMP_EVENT_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070024139 case WLAN_HAL_PROCESS_PTT_RSP:
24140 return WDI_FTM_CMD_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070024141 case WLAN_HAL_ADD_STA_SELF_RSP:
24142 return WDI_ADD_STA_SELF_RESP;
24143case WLAN_HAL_DEL_STA_SELF_RSP:
24144 return WDI_DEL_STA_SELF_RESP;
Jeff Johnsone7245742012-09-05 17:12:55 -070024145#ifdef FEATURE_OEM_DATA_SUPPORT
24146 case WLAN_HAL_START_OEM_DATA_RSP:
24147 return WDI_START_OEM_DATA_RESP;
24148#endif /* FEATURE_OEM_DATA_SUPPORT */
Jeff Johnson295189b2012-06-20 16:38:30 -070024149 case WLAN_HAL_HOST_RESUME_RSP:
24150 return WDI_HOST_RESUME_RESP;
24151 case WLAN_HAL_KEEP_ALIVE_RSP:
24152 return WDI_KEEP_ALIVE_RESP;
24153#ifdef FEATURE_WLAN_SCAN_PNO
24154 case WLAN_HAL_SET_PREF_NETWORK_RSP:
24155 return WDI_SET_PREF_NETWORK_RESP;
24156 case WLAN_HAL_SET_RSSI_FILTER_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070024157 return WDI_SET_RSSI_FILTER_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070024158 case WLAN_HAL_UPDATE_SCAN_PARAM_RSP:
24159 return WDI_UPDATE_SCAN_PARAMS_RESP;
24160 case WLAN_HAL_PREF_NETW_FOUND_IND:
24161 return WDI_HAL_PREF_NETWORK_FOUND_IND;
24162#endif // FEATURE_WLAN_SCAN_PNO
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070024163#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070024164 case WLAN_ROAM_SCAN_OFFLOAD_RSP:
24165 return WDI_ROAM_SCAN_OFFLOAD_RESP;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070024166#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070024167 case WLAN_HAL_SET_TX_PER_TRACKING_RSP:
24168 return WDI_SET_TX_PER_TRACKING_RESP;
24169#ifdef WLAN_FEATURE_PACKET_FILTERING
24170 case WLAN_HAL_8023_MULTICAST_LIST_RSP:
24171 return WDI_8023_MULTICAST_LIST_RESP;
24172 case WLAN_HAL_SET_PACKET_FILTER_RSP:
24173 return WDI_RECEIVE_FILTER_SET_FILTER_RESP;
24174 case WLAN_HAL_PACKET_FILTER_MATCH_COUNT_RSP:
24175 return WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_RESP;
24176 case WLAN_HAL_CLEAR_PACKET_FILTER_RSP:
24177 return WDI_RECEIVE_FILTER_CLEAR_FILTER_RESP;
24178#endif // WLAN_FEATURE_PACKET_FILTERING
24179
24180 case WLAN_HAL_DUMP_COMMAND_RSP:
24181 return WDI_HAL_DUMP_CMD_RESP;
24182 case WLAN_HAL_SET_POWER_PARAMS_RSP:
24183 return WDI_SET_POWER_PARAMS_RESP;
24184#ifdef WLAN_FEATURE_VOWIFI_11R
24185 case WLAN_HAL_AGGR_ADD_TS_RSP:
24186 return WDI_AGGR_ADD_TS_RESP;
24187#endif
24188
24189#ifdef WLAN_FEATURE_GTK_OFFLOAD
24190 case WLAN_HAL_GTK_OFFLOAD_RSP:
24191 return WDI_GTK_OFFLOAD_RESP;
24192 case WLAN_HAL_GTK_OFFLOAD_GETINFO_RSP:
24193 return WDI_GTK_OFFLOAD_GETINFO_RESP;
24194#endif /* WLAN_FEATURE_GTK_OFFLOAD */
24195#ifdef WLAN_WAKEUP_EVENTS
24196 case WLAN_HAL_WAKE_REASON_IND:
24197 return WDI_HAL_WAKE_REASON_IND;
24198#endif // WLAN_WAKEUP_EVENTS
24199
24200 case WLAN_HAL_SET_THERMAL_MITIGATION_RSP:
24201 return WDI_SET_TM_LEVEL_RESP;
24202 case WLAN_HAL_FEATURE_CAPS_EXCHANGE_RSP:
24203 return WDI_FEATURE_CAPS_EXCHANGE_RESP;
Mohit Khanna4a70d262012-09-11 16:30:12 -070024204#ifdef WLAN_FEATURE_11AC
24205 case WLAN_HAL_UPDATE_VHT_OP_MODE_RSP:
24206 return WDI_UPDATE_VHT_OP_MODE_RESP;
24207#endif
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -080024208#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_ESE || defined(FEATURE_WLAN_LFR)
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -080024209 case WLAN_HAL_GET_ROAM_RSSI_RSP:
24210 return WDI_GET_ROAM_RSSI_RESP;
24211#endif
Ravi Joshid2ca7c42013-07-23 08:37:49 -070024212
Leo Chang9056f462013-08-01 19:21:11 -070024213#ifdef FEATURE_WLAN_LPHB
24214 case WLAN_HAL_LPHB_IND:
Leo Changd9df8aa2013-09-26 13:32:26 -070024215 return WDI_HAL_LPHB_IND;
Leo Chang9056f462013-08-01 19:21:11 -070024216 case WLAN_HAL_LPHB_CFG_RSP:
24217 return WDI_LPHB_CFG_RESP;
24218#endif /* FEATURE_WLAN_LPHB */
Ravi Joshid2ca7c42013-07-23 08:37:49 -070024219
24220 case WLAN_HAL_IBSS_PEER_INACTIVITY_IND:
24221 return WDI_HAL_IBSS_PEER_INACTIVITY_IND;
Yue Mab9c86f42013-08-14 15:59:08 -070024222 case WLAN_HAL_PERIODIC_TX_PTRN_FW_IND:
24223 return WDI_HAL_PERIODIC_TX_PTRN_FW_IND;
Ravi Joshid2ca7c42013-07-23 08:37:49 -070024224
Rajeev79dbe4c2013-10-05 11:03:42 +053024225#ifdef FEATURE_WLAN_BATCH_SCAN
24226 case WLAN_HAL_BATCHSCAN_SET_RSP:
24227 return WDI_SET_BATCH_SCAN_RESP;
24228 case WLAN_HAL_BATCHSCAN_RESULT_IND:
24229 return WDI_BATCHSCAN_RESULT_IND;
24230#endif // FEATURE_WLAN_BATCH_SCAN
24231
Leo Chang0b0e45a2013-12-15 15:18:55 -080024232#ifdef FEATURE_WLAN_CH_AVOID
24233 case WLAN_HAL_AVOID_FREQ_RANGE_IND:
24234 return WDI_HAL_CH_AVOID_IND;
24235#endif /* FEATURE_WLAN_CH_AVOID */
Manjunathappa Prakash86f78ca2014-02-10 18:09:15 -080024236 case WLAN_HAL_UPDATE_CHANNEL_LIST_RSP:
24237 return WDI_UPDATE_CHAN_RESP;
c_hpothu86041002014-04-14 19:06:51 +053024238 case WLAN_HAL_PRINT_REG_INFO_IND:
24239 return WDI_PRINT_REG_INFO_IND;
Abhishek Singhbe7f93d2014-06-04 10:47:11 +053024240 case WLAN_HAL_CH_SWITCH_V1_RSP:
24241 return WDI_CH_SWITCH_RESP_V1;
c_hpothu92367912014-05-01 15:18:17 +053024242 case WLAN_HAL_GET_BCN_MISS_RATE_RSP:
24243 return WDI_GET_BCN_MISS_RATE_RSP;
Sunil Duttbd736ed2014-05-26 21:19:41 +053024244#ifdef WLAN_FEATURE_LINK_LAYER_STATS
24245 case WLAN_HAL_LL_SET_STATS_RSP:
24246 return WDI_LL_STATS_SET_RSP;
24247 case WLAN_HAL_LL_GET_STATS_RSP:
24248 return WDI_LL_STATS_GET_RSP;
24249 case WLAN_HAL_LL_CLEAR_STATS_RSP:
24250 return WDI_LL_STATS_CLEAR_RSP;
24251 case WLAN_HAL_LL_NOTIFY_STATS:
24252 return WDI_HAL_LL_STATS_RESULTS_IND;
24253#endif
Dino Mycle41bdc942014-06-10 11:30:24 +053024254#ifdef WLAN_FEATURE_EXTSCAN
24255 case WLAN_HAL_EXT_SCAN_START_RSP:
24256 return WDI_EXTSCAN_START_RSP;
24257 case WLAN_HAL_EXT_SCAN_STOP_RSP:
24258 return WDI_EXTSCAN_STOP_RSP;
24259 case WLAN_HAL_EXT_SCAN_GET_CAP_RSP:
24260 return WDI_EXTSCAN_GET_CAPABILITIES_RSP;
24261 case WLAN_HAL_EXT_SCAN_GET_SCAN_RSP:
24262 return WDI_EXTSCAN_GET_CACHED_RESULTS_RSP;
24263 case WLAN_HAL_BSSID_HOTLIST_SET_RSP:
24264 return WDI_EXTSCAN_SET_HOTLIST_BSSID_RSP;
24265 case WLAN_HAL_BSSID_HOTLIST_RESET_RSP:
24266 return WDI_EXTSCAN_RESET_HOTLIST_BSSID_RSP;
24267 case WLAN_HAL_SIG_RSSI_SET_RSP:
24268 return WDI_EXTSCAN_SET_SIGNF_RSSI_CHANGE_RSP;
24269 case WLAN_HAL_SIG_RSSI_RESET_RSP:
24270 return WDI_EXTSCAN_RESET_SIGNF_RSSI_CHANGE_RSP;
24271 case WLAN_HAL_EXT_SCAN_PROGRESS_IND:
24272 return WDI_HAL_EXTSCAN_PROGRESS_IND;
24273 case WLAN_HAL_EXT_SCAN_RESULT_AVAILABLE_IND:
24274 return WDI_HAL_EXTSCAN_SCAN_AVAILABLE_IND;
24275 case WLAN_HAL_EXT_SCAN_RESULT_IND:
24276 return WDI_HAL_EXTSCAN_RESULT_IND;
24277 case WLAN_HAL_BSSID_HOTLIST_RESULT_IND:
24278 return WDI_HAL_EXTSCAN_BSSID_HOTLIST_RESULT_IND;
24279 case WLAN_HAL_SIG_RSSI_RESULT_IND:
24280 return WDI_HAL_EXTSCAN_SIG_RSSI_RESULT_IND;
24281#endif /* WLAN_FEATURE_EXTSCAN */
Siddharth Bhal171788a2014-09-29 21:02:40 +053024282 case WLAN_HAL_MAC_SPOOFED_SCAN_RSP:
24283 return WDI_SPOOF_MAC_ADDR_RSP;
Abhishek Singh85b74712014-10-08 11:38:19 +053024284 case WLAN_HAL_FW_STATS_RSP:
24285 return WDI_GET_FW_STATS_RSP;
Srinivas Dasari4dae48f2014-11-26 21:14:16 +053024286 case WLAN_HAL_ENCRYPT_DATA_RSP:
24287 return WDI_ENCRYPT_MSG_RSP;
24288
Jeff Johnson295189b2012-06-20 16:38:30 -070024289 default:
Jeff Johnsone7245742012-09-05 17:12:55 -070024290 return eDRIVER_TYPE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070024291 }
24292
24293}/*HAL_2_WDI_RSP_TYPE*/
24294
24295
24296/*Convert WDI driver type into HAL driver type*/
24297WPT_STATIC WPT_INLINE tDriverType
24298WDI_2_HAL_DRV_TYPE
24299(
24300 WDI_DriverType wdiDriverType
24301)
24302{
Jeff Johnsone7245742012-09-05 17:12:55 -070024303 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070024304 the chances of getting inlined*/
24305 switch( wdiDriverType )
24306 {
24307 case WDI_DRIVER_TYPE_PRODUCTION:
24308 return eDRIVER_TYPE_PRODUCTION;
24309 case WDI_DRIVER_TYPE_MFG:
24310 return eDRIVER_TYPE_MFG;
24311 case WDI_DRIVER_TYPE_DVT:
24312 return eDRIVER_TYPE_DVT;
24313 }
24314
Jeff Johnsone7245742012-09-05 17:12:55 -070024315 return eDRIVER_TYPE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070024316}/*WDI_2_HAL_DRV_TYPE*/
24317
24318
24319/*Convert WDI stop reason into HAL stop reason*/
24320WPT_STATIC WPT_INLINE tHalStopType
24321WDI_2_HAL_STOP_REASON
24322(
24323 WDI_StopType wdiDriverType
24324)
24325{
Jeff Johnsone7245742012-09-05 17:12:55 -070024326 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070024327 the chances of getting inlined*/
24328 switch( wdiDriverType )
24329 {
24330 case WDI_STOP_TYPE_SYS_RESET:
24331 return HAL_STOP_TYPE_SYS_RESET;
Yue Mad8cac142013-03-28 11:33:46 -070024332 case WDI_STOP_TYPE_SYS_DEEP_SLEEP:
24333 return HAL_STOP_TYPE_SYS_DEEP_SLEEP;
Jeff Johnson295189b2012-06-20 16:38:30 -070024334 case WDI_STOP_TYPE_RF_KILL:
24335 return HAL_STOP_TYPE_RF_KILL;
24336 }
24337
Jeff Johnsone7245742012-09-05 17:12:55 -070024338 return HAL_STOP_TYPE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070024339}/*WDI_2_HAL_STOP_REASON*/
24340
24341
24342/*Convert WDI scan mode type into HAL scan mode type*/
24343WPT_STATIC WPT_INLINE eHalSysMode
24344WDI_2_HAL_SCAN_MODE
24345(
24346 WDI_ScanMode wdiScanMode
24347)
24348{
Jeff Johnsone7245742012-09-05 17:12:55 -070024349 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070024350 the chances of getting inlined*/
24351 switch( wdiScanMode )
24352 {
24353 case WDI_SCAN_MODE_NORMAL:
24354 return eHAL_SYS_MODE_NORMAL;
24355 case WDI_SCAN_MODE_LEARN:
24356 return eHAL_SYS_MODE_LEARN;
24357 case WDI_SCAN_MODE_SCAN:
24358 return eHAL_SYS_MODE_SCAN;
24359 case WDI_SCAN_MODE_PROMISC:
24360 return eHAL_SYS_MODE_PROMISC;
24361 case WDI_SCAN_MODE_SUSPEND_LINK:
24362 return eHAL_SYS_MODE_SUSPEND_LINK;
Madan Mohan Koyyalamudi9b876782012-10-11 16:22:51 -070024363 case WDI_SCAN_MODE_ROAM_SCAN:
24364 return eHAL_SYS_MODE_ROAM_SCAN;
24365 case WDI_SCAN_MODE_ROAM_SUSPEND_LINK:
24366 return eHAL_SYS_MODE_ROAM_SUSPEND_LINK;
Jeff Johnson295189b2012-06-20 16:38:30 -070024367 }
24368
Jeff Johnsone7245742012-09-05 17:12:55 -070024369 return eHAL_SYS_MODE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070024370}/*WDI_2_HAL_SCAN_MODE*/
24371
24372/*Convert WDI sec ch offset into HAL sec ch offset type*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024373WPT_STATIC WPT_INLINE ePhyChanBondState
Jeff Johnson295189b2012-06-20 16:38:30 -070024374WDI_2_HAL_SEC_CH_OFFSET
24375(
24376 WDI_HTSecondaryChannelOffset wdiSecChOffset
24377)
24378{
Jeff Johnsone7245742012-09-05 17:12:55 -070024379 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070024380 the chances of getting inlined*/
24381 switch( wdiSecChOffset )
24382 {
24383 case WDI_SECONDARY_CHANNEL_OFFSET_NONE:
Jeff Johnsone7245742012-09-05 17:12:55 -070024384 return PHY_SINGLE_CHANNEL_CENTERED;
Jeff Johnson295189b2012-06-20 16:38:30 -070024385 case WDI_SECONDARY_CHANNEL_OFFSET_UP:
Jeff Johnsone7245742012-09-05 17:12:55 -070024386 return PHY_DOUBLE_CHANNEL_LOW_PRIMARY;
Jeff Johnson295189b2012-06-20 16:38:30 -070024387 case WDI_SECONDARY_CHANNEL_OFFSET_DOWN:
Jeff Johnsone7245742012-09-05 17:12:55 -070024388 return PHY_DOUBLE_CHANNEL_HIGH_PRIMARY;
24389#ifdef WLAN_FEATURE_11AC
24390 case WDI_CHANNEL_20MHZ_LOW_40MHZ_CENTERED:
24391 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_CENTERED;
24392 case WDI_CHANNEL_20MHZ_CENTERED_40MHZ_CENTERED:
24393 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_CENTERED;
24394 case WDI_CHANNEL_20MHZ_HIGH_40MHZ_CENTERED:
24395 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_CENTERED;
24396 case WDI_CHANNEL_20MHZ_LOW_40MHZ_LOW:
24397 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_LOW;
24398 case WDI_CHANNEL_20MHZ_HIGH_40MHZ_LOW:
24399 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_LOW;
24400 case WDI_CHANNEL_20MHZ_LOW_40MHZ_HIGH:
24401 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_HIGH;
24402 case WDI_CHANNEL_20MHZ_HIGH_40MHZ_HIGH:
24403 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_HIGH;
24404#endif
24405 default:
24406 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070024407 }
24408
Jeff Johnsone7245742012-09-05 17:12:55 -070024409 return PHY_CHANNEL_BONDING_STATE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070024410}/*WDI_2_HAL_SEC_CH_OFFSET*/
24411
24412/*Convert WDI BSS type into HAL BSS type*/
24413WPT_STATIC WPT_INLINE tSirBssType
24414WDI_2_HAL_BSS_TYPE
24415(
24416 WDI_BssType wdiBSSType
24417)
24418{
Jeff Johnsone7245742012-09-05 17:12:55 -070024419 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070024420 the chances of getting inlined*/
24421 switch( wdiBSSType )
24422 {
24423 case WDI_INFRASTRUCTURE_MODE:
24424 return eSIR_INFRASTRUCTURE_MODE;
24425 case WDI_INFRA_AP_MODE:
24426 return eSIR_INFRA_AP_MODE;
24427 case WDI_IBSS_MODE:
24428 return eSIR_IBSS_MODE;
24429 case WDI_BTAMP_STA_MODE:
24430 return eSIR_BTAMP_STA_MODE;
24431 case WDI_BTAMP_AP_MODE:
Jeff Johnsone7245742012-09-05 17:12:55 -070024432 return eSIR_BTAMP_AP_MODE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024433 case WDI_BSS_AUTO_MODE:
24434 return eSIR_AUTO_MODE;
24435 }
24436
Jeff Johnsone7245742012-09-05 17:12:55 -070024437 return eSIR_DONOT_USE_BSS_TYPE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024438}/*WDI_2_HAL_BSS_TYPE*/
24439
24440/*Convert WDI NW type into HAL NW type*/
24441WPT_STATIC WPT_INLINE tSirNwType
24442WDI_2_HAL_NW_TYPE
24443(
24444 WDI_NwType wdiNWType
24445)
24446{
Jeff Johnsone7245742012-09-05 17:12:55 -070024447 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070024448 the chances of getting inlined*/
24449 switch( wdiNWType )
24450 {
24451 case WDI_11A_NW_TYPE:
24452 return eSIR_11A_NW_TYPE;
24453 case WDI_11B_NW_TYPE:
24454 return eSIR_11B_NW_TYPE;
24455 case WDI_11G_NW_TYPE:
24456 return eSIR_11G_NW_TYPE;
24457 case WDI_11N_NW_TYPE:
24458 return eSIR_11N_NW_TYPE;
24459 }
24460
Jeff Johnsone7245742012-09-05 17:12:55 -070024461 return eSIR_DONOT_USE_NW_TYPE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024462}/*WDI_2_HAL_NW_TYPE*/
24463
24464/*Convert WDI chanel bonding type into HAL cb type*/
24465WPT_STATIC WPT_INLINE ePhyChanBondState
24466WDI_2_HAL_CB_STATE
24467(
24468 WDI_PhyChanBondState wdiCbState
24469)
24470{
Jeff Johnsone7245742012-09-05 17:12:55 -070024471 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070024472 the chances of getting inlined*/
24473 switch ( wdiCbState )
24474 {
24475 case WDI_PHY_SINGLE_CHANNEL_CENTERED:
24476 return PHY_SINGLE_CHANNEL_CENTERED;
24477 case WDI_PHY_DOUBLE_CHANNEL_LOW_PRIMARY:
24478 return PHY_DOUBLE_CHANNEL_LOW_PRIMARY;
24479 case WDI_PHY_DOUBLE_CHANNEL_CENTERED:
24480 return PHY_DOUBLE_CHANNEL_CENTERED;
24481 case WDI_PHY_DOUBLE_CHANNEL_HIGH_PRIMARY:
24482 return PHY_DOUBLE_CHANNEL_HIGH_PRIMARY;
Jeff Johnsone7245742012-09-05 17:12:55 -070024483#ifdef WLAN_FEATURE_11AC
24484 case WDI_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_CENTERED:
24485 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_CENTERED;
24486 case WDI_QUADRUPLE_CHANNEL_20MHZ_CENTERED_40MHZ_CENTERED:
24487 return PHY_QUADRUPLE_CHANNEL_20MHZ_CENTERED_40MHZ_CENTERED;
24488 case WDI_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_CENTERED:
24489 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_CENTERED;
24490 case WDI_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_LOW:
24491 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_LOW;
24492 case WDI_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_LOW:
24493 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_LOW;
24494 case WDI_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_HIGH:
24495 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_HIGH;
24496 case WDI_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_HIGH:
24497 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_HIGH;
24498#endif
24499 case WDI_MAX_CB_STATE:
24500 default:
24501 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070024502 }
Jeff Johnsone7245742012-09-05 17:12:55 -070024503
Jeff Johnson295189b2012-06-20 16:38:30 -070024504 return PHY_CHANNEL_BONDING_STATE_MAX;
24505}/*WDI_2_HAL_CB_STATE*/
24506
24507/*Convert WDI chanel bonding type into HAL cb type*/
24508WPT_STATIC WPT_INLINE tSirMacHTOperatingMode
24509WDI_2_HAL_HT_OPER_MODE
24510(
24511 WDI_HTOperatingMode wdiHTOperMode
24512)
24513{
Jeff Johnsone7245742012-09-05 17:12:55 -070024514 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070024515 the chances of getting inlined*/
24516 switch ( wdiHTOperMode )
24517 {
24518 case WDI_HT_OP_MODE_PURE:
24519 return eSIR_HT_OP_MODE_PURE;
24520 case WDI_HT_OP_MODE_OVERLAP_LEGACY:
24521 return eSIR_HT_OP_MODE_OVERLAP_LEGACY;
24522 case WDI_HT_OP_MODE_NO_LEGACY_20MHZ_HT:
24523 return eSIR_HT_OP_MODE_NO_LEGACY_20MHZ_HT;
24524 case WDI_HT_OP_MODE_MIXED:
24525 return eSIR_HT_OP_MODE_MIXED;
24526 }
Jeff Johnsone7245742012-09-05 17:12:55 -070024527
Jeff Johnson295189b2012-06-20 16:38:30 -070024528 return eSIR_HT_OP_MODE_MAX;
24529}/*WDI_2_HAL_HT_OPER_MODE*/
24530
24531/*Convert WDI mimo PS type into HAL mimo PS type*/
24532WPT_STATIC WPT_INLINE tSirMacHTMIMOPowerSaveState
24533WDI_2_HAL_MIMO_PS
24534(
24535 WDI_HTMIMOPowerSaveState wdiHTOperMode
24536)
24537{
Jeff Johnsone7245742012-09-05 17:12:55 -070024538 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070024539 the chances of getting inlined*/
24540 switch ( wdiHTOperMode )
24541 {
24542 case WDI_HT_MIMO_PS_STATIC:
24543 return eSIR_HT_MIMO_PS_STATIC;
24544 case WDI_HT_MIMO_PS_DYNAMIC:
24545 return eSIR_HT_MIMO_PS_DYNAMIC;
24546 case WDI_HT_MIMO_PS_NA:
24547 return eSIR_HT_MIMO_PS_NA;
24548 case WDI_HT_MIMO_PS_NO_LIMIT:
24549 return eSIR_HT_MIMO_PS_NO_LIMIT;
24550 }
Jeff Johnsone7245742012-09-05 17:12:55 -070024551
Jeff Johnson295189b2012-06-20 16:38:30 -070024552 return eSIR_HT_MIMO_PS_MAX;
24553}/*WDI_2_HAL_MIMO_PS*/
24554
24555/*Convert WDI ENC type into HAL ENC type*/
24556WPT_STATIC WPT_INLINE tAniEdType
24557WDI_2_HAL_ENC_TYPE
24558(
24559 WDI_EncryptType wdiEncType
24560)
24561{
Jeff Johnsone7245742012-09-05 17:12:55 -070024562 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070024563 the chances of getting inlined*/
24564 switch ( wdiEncType )
24565 {
24566 case WDI_ENCR_NONE:
24567 return eSIR_ED_NONE;
24568
24569 case WDI_ENCR_WEP40:
24570 return eSIR_ED_WEP40;
24571
24572 case WDI_ENCR_WEP104:
24573 return eSIR_ED_WEP104;
24574
24575 case WDI_ENCR_TKIP:
24576 return eSIR_ED_TKIP;
24577
24578 case WDI_ENCR_CCMP:
24579 return eSIR_ED_CCMP;
24580
24581 case WDI_ENCR_AES_128_CMAC:
24582 return eSIR_ED_AES_128_CMAC;
24583#if defined(FEATURE_WLAN_WAPI)
24584 case WDI_ENCR_WPI:
24585 return eSIR_ED_WPI;
24586#endif
24587 default:
24588 return eSIR_ED_NOT_IMPLEMENTED;
24589 }
24590
24591}/*WDI_2_HAL_ENC_TYPE*/
24592
24593/*Convert WDI WEP type into HAL WEP type*/
24594WPT_STATIC WPT_INLINE tAniWepType
24595WDI_2_HAL_WEP_TYPE
24596(
24597 WDI_WepType wdiWEPType
24598)
24599{
Jeff Johnsone7245742012-09-05 17:12:55 -070024600 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070024601 the chances of getting inlined*/
24602 switch ( wdiWEPType )
24603 {
24604 case WDI_WEP_STATIC:
24605 return eSIR_WEP_STATIC;
24606
24607 case WDI_WEP_DYNAMIC:
24608 return eSIR_WEP_DYNAMIC;
24609 }
Jeff Johnsone7245742012-09-05 17:12:55 -070024610
Jeff Johnson295189b2012-06-20 16:38:30 -070024611 return eSIR_WEP_MAX;
24612}/*WDI_2_HAL_WEP_TYPE*/
24613
24614WPT_STATIC WPT_INLINE tSirLinkState
24615WDI_2_HAL_LINK_STATE
24616(
24617 WDI_LinkStateType wdiLinkState
24618)
24619{
Jeff Johnsone7245742012-09-05 17:12:55 -070024620 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070024621 the chances of getting inlined*/
24622 switch ( wdiLinkState )
24623 {
24624 case WDI_LINK_IDLE_STATE:
24625 return eSIR_LINK_IDLE_STATE;
24626
24627 case WDI_LINK_PREASSOC_STATE:
24628 return eSIR_LINK_PREASSOC_STATE;
24629
24630 case WDI_LINK_POSTASSOC_STATE:
24631 return eSIR_LINK_POSTASSOC_STATE;
24632
24633 case WDI_LINK_AP_STATE:
24634 return eSIR_LINK_AP_STATE;
24635
24636 case WDI_LINK_IBSS_STATE:
24637 return eSIR_LINK_IBSS_STATE;
24638
24639 case WDI_LINK_BTAMP_PREASSOC_STATE:
24640 return eSIR_LINK_BTAMP_PREASSOC_STATE;
24641
24642 case WDI_LINK_BTAMP_POSTASSOC_STATE:
24643 return eSIR_LINK_BTAMP_POSTASSOC_STATE;
24644
24645 case WDI_LINK_BTAMP_AP_STATE:
24646 return eSIR_LINK_BTAMP_AP_STATE;
24647
24648 case WDI_LINK_BTAMP_STA_STATE:
24649 return eSIR_LINK_BTAMP_STA_STATE;
24650
24651 case WDI_LINK_LEARN_STATE:
24652 return eSIR_LINK_LEARN_STATE;
24653
24654 case WDI_LINK_SCAN_STATE:
24655 return eSIR_LINK_SCAN_STATE;
24656
24657 case WDI_LINK_FINISH_SCAN_STATE:
24658 return eSIR_LINK_FINISH_SCAN_STATE;
24659
24660 case WDI_LINK_INIT_CAL_STATE:
24661 return eSIR_LINK_INIT_CAL_STATE;
24662
24663 case WDI_LINK_FINISH_CAL_STATE:
24664 return eSIR_LINK_FINISH_CAL_STATE;
24665
Jeff Johnson295189b2012-06-20 16:38:30 -070024666 case WDI_LINK_LISTEN_STATE:
24667 return eSIR_LINK_LISTEN_STATE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024668
Gopichand Nakkala924e4552013-05-08 19:18:14 +053024669 case WDI_LINK_SEND_ACTION_STATE:
24670 return eSIR_LINK_SEND_ACTION_STATE;
24671
Jeff Johnson295189b2012-06-20 16:38:30 -070024672 default:
24673 return eSIR_LINK_MAX;
Jeff Johnsone7245742012-09-05 17:12:55 -070024674 }
Jeff Johnson295189b2012-06-20 16:38:30 -070024675}
24676
Jeff Johnsone7245742012-09-05 17:12:55 -070024677/*Translate a STA Context from WDI into HAL*/
24678WPT_STATIC WPT_INLINE
Jeff Johnson295189b2012-06-20 16:38:30 -070024679void
24680WDI_CopyWDIStaCtxToHALStaCtx
Jeff Johnsone7245742012-09-05 17:12:55 -070024681(
Jeff Johnson295189b2012-06-20 16:38:30 -070024682 tConfigStaParams* phalConfigSta,
24683 WDI_ConfigStaReqInfoType* pwdiConfigSta
24684)
24685{
24686 wpt_uint8 i;
Jeff Johnsone7245742012-09-05 17:12:55 -070024687#ifdef WLAN_FEATURE_11AC
24688 /* Get the Version 1 Handler */
24689 tConfigStaParams_V1* phalConfigSta_V1 = NULL;
24690 if (WDI_getFwWlanFeatCaps(DOT11AC))
24691 {
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070024692 phalConfigSta_V1 = (tConfigStaParams_V1*)phalConfigSta;
Jeff Johnsone7245742012-09-05 17:12:55 -070024693 }
24694#endif
24695 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070024696 the chances of getting inlined*/
24697
Jeff Johnsone7245742012-09-05 17:12:55 -070024698 wpalMemoryCopy(phalConfigSta->bssId,
24699 pwdiConfigSta->macBSSID, WDI_MAC_ADDR_LEN);
24700
24701 wpalMemoryCopy(phalConfigSta->staMac,
24702 pwdiConfigSta->macSTA, WDI_MAC_ADDR_LEN);
Jeff Johnson295189b2012-06-20 16:38:30 -070024703
24704 phalConfigSta->assocId = pwdiConfigSta->usAssocId;
24705 phalConfigSta->staType = pwdiConfigSta->wdiSTAType;
24706 phalConfigSta->shortPreambleSupported = pwdiConfigSta->ucShortPreambleSupported;
24707 phalConfigSta->listenInterval = pwdiConfigSta->usListenInterval;
24708 phalConfigSta->wmmEnabled = pwdiConfigSta->ucWMMEnabled;
24709 phalConfigSta->htCapable = pwdiConfigSta->ucHTCapable;
24710 phalConfigSta->txChannelWidthSet = pwdiConfigSta->ucTXChannelWidthSet;
24711 phalConfigSta->rifsMode = pwdiConfigSta->ucRIFSMode;
24712 phalConfigSta->lsigTxopProtection = pwdiConfigSta->ucLSIGTxopProtection;
24713 phalConfigSta->maxAmpduSize = pwdiConfigSta->ucMaxAmpduSize;
24714 phalConfigSta->maxAmpduDensity = pwdiConfigSta->ucMaxAmpduDensity;
24715 phalConfigSta->maxAmsduSize = pwdiConfigSta->ucMaxAmsduSize;
24716 phalConfigSta->fShortGI40Mhz = pwdiConfigSta->ucShortGI40Mhz;
24717 phalConfigSta->fShortGI20Mhz = pwdiConfigSta->ucShortGI20Mhz;
24718 phalConfigSta->rmfEnabled = pwdiConfigSta->ucRMFEnabled;
24719 phalConfigSta->action = pwdiConfigSta->wdiAction;
24720 phalConfigSta->uAPSD = pwdiConfigSta->ucAPSD;
24721 phalConfigSta->maxSPLen = pwdiConfigSta->ucMaxSPLen;
24722 phalConfigSta->greenFieldCapable = pwdiConfigSta->ucGreenFieldCapable;
24723 phalConfigSta->delayedBASupport = pwdiConfigSta->ucDelayedBASupport;
24724 phalConfigSta->us32MaxAmpduDuration = pwdiConfigSta->us32MaxAmpduDuratio;
24725 phalConfigSta->fDsssCckMode40Mhz = pwdiConfigSta->ucDsssCckMode40Mhz;
24726 phalConfigSta->encryptType = pwdiConfigSta->ucEncryptType;
Jeff Johnsone7245742012-09-05 17:12:55 -070024727
Jeff Johnson295189b2012-06-20 16:38:30 -070024728 phalConfigSta->mimoPS = WDI_2_HAL_MIMO_PS(pwdiConfigSta->wdiMIMOPS);
24729
Jeff Johnsone7245742012-09-05 17:12:55 -070024730 phalConfigSta->supportedRates.opRateMode =
Jeff Johnson295189b2012-06-20 16:38:30 -070024731 pwdiConfigSta->wdiSupportedRates.opRateMode;
24732 for(i = 0; i < SIR_NUM_11B_RATES; i ++)
24733 {
Jeff Johnsone7245742012-09-05 17:12:55 -070024734 phalConfigSta->supportedRates.llbRates[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -070024735 pwdiConfigSta->wdiSupportedRates.llbRates[i];
24736 }
24737 for(i = 0; i < SIR_NUM_11A_RATES; i ++)
24738 {
Jeff Johnsone7245742012-09-05 17:12:55 -070024739 phalConfigSta->supportedRates.llaRates[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -070024740 pwdiConfigSta->wdiSupportedRates.llaRates[i];
24741 }
24742 for(i = 0; i < SIR_NUM_POLARIS_RATES; i ++)
24743 {
24744 phalConfigSta->supportedRates.aniLegacyRates[i] =
24745 pwdiConfigSta->wdiSupportedRates.aLegacyRates[i];
24746 }
Jeff Johnsone7245742012-09-05 17:12:55 -070024747 phalConfigSta->supportedRates.aniEnhancedRateBitmap =
Jeff Johnson295189b2012-06-20 16:38:30 -070024748 pwdiConfigSta->wdiSupportedRates.uEnhancedRateBitmap;
24749 for(i = 0; i < SIR_MAC_MAX_SUPPORTED_MCS_SET; i ++)
24750 {
Jeff Johnsone7245742012-09-05 17:12:55 -070024751 phalConfigSta->supportedRates.supportedMCSSet[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -070024752 pwdiConfigSta->wdiSupportedRates.aSupportedMCSSet[i];
24753 }
24754 phalConfigSta->supportedRates.rxHighestDataRate =
24755 pwdiConfigSta->wdiSupportedRates.aRxHighestDataRate;
24756
Jeff Johnsone7245742012-09-05 17:12:55 -070024757#ifdef WLAN_FEATURE_11AC
24758 if(phalConfigSta_V1 != NULL)
24759 {
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070024760 phalConfigSta_V1->supportedRates.vhtRxMCSMap = pwdiConfigSta->wdiSupportedRates.vhtRxMCSMap;
24761 phalConfigSta_V1->supportedRates.vhtRxHighestDataRate = pwdiConfigSta->wdiSupportedRates.vhtRxHighestDataRate;
24762 phalConfigSta_V1->supportedRates.vhtTxMCSMap = pwdiConfigSta->wdiSupportedRates.vhtTxMCSMap;
24763 phalConfigSta_V1->supportedRates.vhtTxHighestDataRate = pwdiConfigSta->wdiSupportedRates.vhtTxHighestDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070024764 }
24765#endif
24766
Jeff Johnson295189b2012-06-20 16:38:30 -070024767 phalConfigSta->p2pCapableSta = pwdiConfigSta->ucP2pCapableSta ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024768
Jeff Johnsone7245742012-09-05 17:12:55 -070024769#ifdef WLAN_FEATURE_11AC
24770 if(phalConfigSta_V1 != NULL)
24771 {
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070024772 phalConfigSta_V1->vhtCapable = pwdiConfigSta->ucVhtCapableSta;
24773 phalConfigSta_V1->vhtTxChannelWidthSet = pwdiConfigSta->ucVhtTxChannelWidthSet;
Shailender Karmuchi08f87c22013-01-17 12:51:24 -080024774 phalConfigSta_V1->vhtTxBFEnabled = pwdiConfigSta->ucVhtTxBFEnabled;
Abhishek Singh6927fa02014-06-27 17:19:55 +053024775 phalConfigSta_V1->vhtTxMUBformeeCapable = pwdiConfigSta->vhtTxMUBformeeCapable;
Gopichand Nakkalab2d2c312013-01-04 11:41:02 -080024776 phalConfigSta_V1->htLdpcEnabled = pwdiConfigSta->ucHtLdpcEnabled;
24777 phalConfigSta_V1->vhtLdpcEnabled = pwdiConfigSta->ucVhtLdpcEnabled;
24778
Jeff Johnsone7245742012-09-05 17:12:55 -070024779 }
24780#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070024781}/*WDI_CopyWDIStaCtxToHALStaCtx*/;
Jeff Johnsone7245742012-09-05 17:12:55 -070024782
24783/*Translate a Rate set info from WDI into HAL*/
24784WPT_STATIC WPT_INLINE void
Jeff Johnson295189b2012-06-20 16:38:30 -070024785WDI_CopyWDIRateSetToHALRateSet
Jeff Johnsone7245742012-09-05 17:12:55 -070024786(
Jeff Johnson295189b2012-06-20 16:38:30 -070024787 tSirMacRateSet* pHalRateSet,
24788 WDI_RateSet* pwdiRateSet
24789)
24790{
Jeff Johnsone7245742012-09-05 17:12:55 -070024791 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070024792 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
24793
24794 pHalRateSet->numRates = ( pwdiRateSet->ucNumRates <= SIR_MAC_RATESET_EID_MAX )?
24795 pwdiRateSet->ucNumRates:SIR_MAC_RATESET_EID_MAX;
24796
24797 for ( i = 0; i < pHalRateSet->numRates; i++ )
24798 {
24799 pHalRateSet->rate[i] = pwdiRateSet->aRates[i];
24800 }
Jeff Johnsone7245742012-09-05 17:12:55 -070024801
Jeff Johnson295189b2012-06-20 16:38:30 -070024802}/*WDI_CopyWDIRateSetToHALRateSet*/
24803
24804
24805/*Translate an EDCA Parameter Record from WDI into HAL*/
24806WPT_STATIC WPT_INLINE void
24807WDI_CopyWDIEDCAParamsToHALEDCAParams
Jeff Johnsone7245742012-09-05 17:12:55 -070024808(
Jeff Johnson295189b2012-06-20 16:38:30 -070024809 tSirMacEdcaParamRecord* phalEdcaParam,
24810 WDI_EdcaParamRecord* pWDIEdcaParam
24811)
24812{
Jeff Johnsone7245742012-09-05 17:12:55 -070024813 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070024814 the chances of getting inlined*/
24815
24816 phalEdcaParam->aci.rsvd = pWDIEdcaParam->wdiACI.rsvd;
24817 phalEdcaParam->aci.aci = pWDIEdcaParam->wdiACI.aci;
24818 phalEdcaParam->aci.acm = pWDIEdcaParam->wdiACI.acm;
24819 phalEdcaParam->aci.aifsn = pWDIEdcaParam->wdiACI.aifsn;
24820
24821 phalEdcaParam->cw.max = pWDIEdcaParam->wdiCW.max;
24822 phalEdcaParam->cw.min = pWDIEdcaParam->wdiCW.min;
24823 phalEdcaParam->txoplimit = pWDIEdcaParam->usTXOPLimit;
24824}/*WDI_CopyWDIEDCAParamsToHALEDCAParams*/
24825
24826
24827/*Copy a management frame header from WDI fmt into HAL fmt*/
24828WPT_STATIC WPT_INLINE void
24829WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr
24830(
24831 tSirMacMgmtHdr* pmacMgmtHdr,
24832 WDI_MacMgmtHdr* pwdiMacMgmtHdr
24833)
24834{
24835 pmacMgmtHdr->fc.protVer = pwdiMacMgmtHdr->fc.protVer;
24836 pmacMgmtHdr->fc.type = pwdiMacMgmtHdr->fc.type;
24837 pmacMgmtHdr->fc.subType = pwdiMacMgmtHdr->fc.subType;
24838 pmacMgmtHdr->fc.toDS = pwdiMacMgmtHdr->fc.toDS;
24839 pmacMgmtHdr->fc.fromDS = pwdiMacMgmtHdr->fc.fromDS;
24840 pmacMgmtHdr->fc.moreFrag = pwdiMacMgmtHdr->fc.moreFrag;
24841 pmacMgmtHdr->fc.retry = pwdiMacMgmtHdr->fc.retry;
24842 pmacMgmtHdr->fc.powerMgmt = pwdiMacMgmtHdr->fc.powerMgmt;
24843 pmacMgmtHdr->fc.moreData = pwdiMacMgmtHdr->fc.moreData;
24844 pmacMgmtHdr->fc.wep = pwdiMacMgmtHdr->fc.wep;
24845 pmacMgmtHdr->fc.order = pwdiMacMgmtHdr->fc.order;
24846
24847 pmacMgmtHdr->durationLo = pwdiMacMgmtHdr->durationLo;
24848 pmacMgmtHdr->durationHi = pwdiMacMgmtHdr->durationHi;
24849
Jeff Johnsone7245742012-09-05 17:12:55 -070024850 wpalMemoryCopy(pmacMgmtHdr->da,
Jeff Johnson295189b2012-06-20 16:38:30 -070024851 pwdiMacMgmtHdr->da, 6);
Jeff Johnsone7245742012-09-05 17:12:55 -070024852 wpalMemoryCopy(pmacMgmtHdr->sa,
Jeff Johnson295189b2012-06-20 16:38:30 -070024853 pwdiMacMgmtHdr->sa, 6);
Jeff Johnsone7245742012-09-05 17:12:55 -070024854 wpalMemoryCopy(pmacMgmtHdr->bssId,
Jeff Johnson295189b2012-06-20 16:38:30 -070024855 pwdiMacMgmtHdr->bssId, 6);
24856
24857 pmacMgmtHdr->seqControl.fragNum = pwdiMacMgmtHdr->seqControl.fragNum;
24858 pmacMgmtHdr->seqControl.seqNumLo = pwdiMacMgmtHdr->seqControl.seqNumLo;
24859 pmacMgmtHdr->seqControl.seqNumHi = pwdiMacMgmtHdr->seqControl.seqNumHi;
24860
24861}/*WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr*/
24862
24863
24864/*Copy config bss parameters from WDI fmt into HAL fmt*/
24865WPT_STATIC WPT_INLINE void
24866WDI_CopyWDIConfigBSSToHALConfigBSS
24867(
24868 tConfigBssParams* phalConfigBSS,
24869 WDI_ConfigBSSReqInfoType* pwdiConfigBSS
24870)
24871{
24872
24873 wpt_uint8 keyIndex = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070024874#ifdef WLAN_FEATURE_11AC
24875 /* Get the Version 1 Handler */
24876 tConfigBssParams_V1* phalConfigBSS_V1 = NULL;
24877 if (WDI_getFwWlanFeatCaps(DOT11AC))
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070024878 phalConfigBSS_V1 = (tConfigBssParams_V1*)phalConfigBSS;
Jeff Johnsone7245742012-09-05 17:12:55 -070024879#endif
24880
Jeff Johnson295189b2012-06-20 16:38:30 -070024881 wpalMemoryCopy( phalConfigBSS->bssId,
24882 pwdiConfigBSS->macBSSID,
24883 WDI_MAC_ADDR_LEN);
24884
24885#ifdef HAL_SELF_STA_PER_BSS
24886 wpalMemoryCopy( phalConfigBSS->selfMacAddr,
24887 pwdiConfigBSS->macSelfAddr,
24888 WDI_MAC_ADDR_LEN);
24889#endif
24890
24891 phalConfigBSS->bssType = WDI_2_HAL_BSS_TYPE(pwdiConfigBSS->wdiBSSType);
24892
24893 phalConfigBSS->operMode = pwdiConfigBSS->ucOperMode;
24894 phalConfigBSS->nwType = WDI_2_HAL_NW_TYPE(pwdiConfigBSS->wdiNWType);
24895
Jeff Johnsone7245742012-09-05 17:12:55 -070024896 phalConfigBSS->shortSlotTimeSupported =
Jeff Johnson295189b2012-06-20 16:38:30 -070024897 pwdiConfigBSS->ucShortSlotTimeSupported;
24898 phalConfigBSS->llaCoexist = pwdiConfigBSS->ucllaCoexist;
24899 phalConfigBSS->llbCoexist = pwdiConfigBSS->ucllbCoexist;
24900 phalConfigBSS->llgCoexist = pwdiConfigBSS->ucllgCoexist;
24901 phalConfigBSS->ht20Coexist = pwdiConfigBSS->ucHT20Coexist;
24902 phalConfigBSS->llnNonGFCoexist = pwdiConfigBSS->ucllnNonGFCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070024903 phalConfigBSS->fLsigTXOPProtectionFullSupport =
Jeff Johnson295189b2012-06-20 16:38:30 -070024904 pwdiConfigBSS->ucTXOPProtectionFullSupport;
24905 phalConfigBSS->fRIFSMode = pwdiConfigBSS->ucRIFSMode;
24906 phalConfigBSS->beaconInterval = pwdiConfigBSS->usBeaconInterval;
24907 phalConfigBSS->dtimPeriod = pwdiConfigBSS->ucDTIMPeriod;
24908 phalConfigBSS->txChannelWidthSet = pwdiConfigBSS->ucTXChannelWidthSet;
24909 phalConfigBSS->currentOperChannel = pwdiConfigBSS->ucCurrentOperChannel;
24910 phalConfigBSS->currentExtChannel = pwdiConfigBSS->ucCurrentExtChannel;
24911 phalConfigBSS->action = pwdiConfigBSS->wdiAction;
24912 phalConfigBSS->htCapable = pwdiConfigBSS->ucHTCapable;
24913 phalConfigBSS->obssProtEnabled = pwdiConfigBSS->ucObssProtEnabled;
24914 phalConfigBSS->rmfEnabled = pwdiConfigBSS->ucRMFEnabled;
24915
Jeff Johnsone7245742012-09-05 17:12:55 -070024916 phalConfigBSS->htOperMode =
24917 WDI_2_HAL_HT_OPER_MODE(pwdiConfigBSS->wdiHTOperMod);
Jeff Johnson295189b2012-06-20 16:38:30 -070024918
24919 phalConfigBSS->dualCTSProtection = pwdiConfigBSS->ucDualCTSProtection;
24920 phalConfigBSS->ucMaxProbeRespRetryLimit = pwdiConfigBSS->ucMaxProbeRespRetryLimit;
24921 phalConfigBSS->bHiddenSSIDEn = pwdiConfigBSS->bHiddenSSIDEn;
24922 phalConfigBSS->bProxyProbeRespEn = pwdiConfigBSS->bProxyProbeRespEn;
24923
24924#ifdef WLAN_FEATURE_VOWIFI
24925 phalConfigBSS->maxTxPower = pwdiConfigBSS->cMaxTxPower;
24926#endif
24927
24928 /*! Used 32 as magic number because that is how the ssid is declared inside the
24929 hal header - hal needs a macro for it */
Jeff Johnsone7245742012-09-05 17:12:55 -070024930 phalConfigBSS->ssId.length =
Jeff Johnson295189b2012-06-20 16:38:30 -070024931 (pwdiConfigBSS->wdiSSID.ucLength <= 32)?
24932 pwdiConfigBSS->wdiSSID.ucLength : 32;
24933 wpalMemoryCopy(phalConfigBSS->ssId.ssId,
Jeff Johnsone7245742012-09-05 17:12:55 -070024934 pwdiConfigBSS->wdiSSID.sSSID,
24935 phalConfigBSS->ssId.length);
Jeff Johnson295189b2012-06-20 16:38:30 -070024936
24937 WDI_CopyWDIStaCtxToHALStaCtx( &phalConfigBSS->staContext,
24938 &pwdiConfigBSS->wdiSTAContext);
Jeff Johnsone7245742012-09-05 17:12:55 -070024939
Jeff Johnson295189b2012-06-20 16:38:30 -070024940 WDI_CopyWDIRateSetToHALRateSet( &phalConfigBSS->rateSet,
24941 &pwdiConfigBSS->wdiRateSet);
24942
24943 phalConfigBSS->edcaParamsValid = pwdiConfigBSS->ucEDCAParamsValid;
24944
24945 if(phalConfigBSS->edcaParamsValid)
24946 {
24947 WDI_CopyWDIEDCAParamsToHALEDCAParams( &phalConfigBSS->acbe,
24948 &pwdiConfigBSS->wdiBEEDCAParams);
24949 WDI_CopyWDIEDCAParamsToHALEDCAParams( &phalConfigBSS->acbk,
24950 &pwdiConfigBSS->wdiBKEDCAParams);
24951 WDI_CopyWDIEDCAParamsToHALEDCAParams( &phalConfigBSS->acvi,
24952 &pwdiConfigBSS->wdiVIEDCAParams);
24953 WDI_CopyWDIEDCAParamsToHALEDCAParams( &phalConfigBSS->acvo,
24954 &pwdiConfigBSS->wdiVOEDCAParams);
24955 }
24956
Jeff Johnsone7245742012-09-05 17:12:55 -070024957 phalConfigBSS->halPersona = pwdiConfigBSS->ucPersona;
Jeff Johnson295189b2012-06-20 16:38:30 -070024958
24959 phalConfigBSS->bSpectrumMgtEnable = pwdiConfigBSS->bSpectrumMgtEn;
24960
24961#ifdef WLAN_FEATURE_VOWIFI_11R
24962
Jeff Johnsone7245742012-09-05 17:12:55 -070024963 phalConfigBSS->extSetStaKeyParamValid =
Jeff Johnson295189b2012-06-20 16:38:30 -070024964 pwdiConfigBSS->bExtSetStaKeyParamValid;
Jeff Johnsone7245742012-09-05 17:12:55 -070024965
Jeff Johnson295189b2012-06-20 16:38:30 -070024966 if( phalConfigBSS->extSetStaKeyParamValid )
24967 {
24968 /*-----------------------------------------------------------------------
24969 Copy the STA Key parameters into the HAL message
24970 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024971 phalConfigBSS->extSetStaKeyParam.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -070024972 WDI_2_HAL_ENC_TYPE (pwdiConfigBSS->wdiExtSetKeyParam.wdiEncType);
24973
Jeff Johnsone7245742012-09-05 17:12:55 -070024974 phalConfigBSS->extSetStaKeyParam.wepType =
Jeff Johnson295189b2012-06-20 16:38:30 -070024975 WDI_2_HAL_WEP_TYPE (pwdiConfigBSS->wdiExtSetKeyParam.wdiWEPType );
24976
24977 phalConfigBSS->extSetStaKeyParam.staIdx = pwdiConfigBSS->wdiExtSetKeyParam.ucSTAIdx;
24978
24979 phalConfigBSS->extSetStaKeyParam.defWEPIdx = pwdiConfigBSS->wdiExtSetKeyParam.ucDefWEPIdx;
24980
24981 phalConfigBSS->extSetStaKeyParam.singleTidRc = pwdiConfigBSS->wdiExtSetKeyParam.ucSingleTidRc;
24982
Jeff Johnson295189b2012-06-20 16:38:30 -070024983 for(keyIndex = 0; keyIndex < pwdiConfigBSS->wdiExtSetKeyParam.ucNumKeys ;
24984 keyIndex++)
24985 {
Jeff Johnsone7245742012-09-05 17:12:55 -070024986 phalConfigBSS->extSetStaKeyParam.key[keyIndex].keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -070024987 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].keyId;
24988 phalConfigBSS->extSetStaKeyParam.key[keyIndex].unicast =
24989 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].unicast;
24990 phalConfigBSS->extSetStaKeyParam.key[keyIndex].keyDirection =
24991 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].keyDirection;
24992 wpalMemoryCopy(phalConfigBSS->extSetStaKeyParam.key[keyIndex].keyRsc,
Jeff Johnsone7245742012-09-05 17:12:55 -070024993 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].keyRsc,
Jeff Johnson295189b2012-06-20 16:38:30 -070024994 WDI_MAX_KEY_RSC_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070024995 phalConfigBSS->extSetStaKeyParam.key[keyIndex].paeRole =
Jeff Johnson295189b2012-06-20 16:38:30 -070024996 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].paeRole;
Jeff Johnsone7245742012-09-05 17:12:55 -070024997 phalConfigBSS->extSetStaKeyParam.key[keyIndex].keyLength =
Jeff Johnson295189b2012-06-20 16:38:30 -070024998 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].keyLength;
24999 wpalMemoryCopy(phalConfigBSS->extSetStaKeyParam.key[keyIndex].key,
Jeff Johnsone7245742012-09-05 17:12:55 -070025000 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].key,
Jeff Johnson295189b2012-06-20 16:38:30 -070025001 WDI_MAX_KEY_LENGTH);
25002 }
Jeff Johnson295189b2012-06-20 16:38:30 -070025003 }
25004 else/* phalConfigBSS->extSetStaKeyParamValid is not set */
25005 {
Jeff Johnsone7245742012-09-05 17:12:55 -070025006 wpalMemoryZero( &phalConfigBSS->extSetStaKeyParam,
Jeff Johnson295189b2012-06-20 16:38:30 -070025007 sizeof(phalConfigBSS->extSetStaKeyParam) );
25008 }
25009
25010#endif /*WLAN_FEATURE_VOWIFI_11R*/
25011
Jeff Johnsone7245742012-09-05 17:12:55 -070025012#ifdef WLAN_FEATURE_11AC
25013 if(phalConfigBSS_V1 != NULL)
25014 {
25015 phalConfigBSS_V1->vhtCapable = pwdiConfigBSS->ucVhtCapableSta;
25016 phalConfigBSS_V1->vhtTxChannelWidthSet = pwdiConfigBSS->ucVhtTxChannelWidthSet;
25017 }
25018#endif
25019
Jeff Johnson295189b2012-06-20 16:38:30 -070025020}/*WDI_CopyWDIConfigBSSToHALConfigBSS*/
25021
25022
Jeff Johnsone7245742012-09-05 17:12:55 -070025023/*Extract the request CB function and user data from a request structure
Jeff Johnson295189b2012-06-20 16:38:30 -070025024 pointed to by user data */
25025WPT_STATIC WPT_INLINE void
25026WDI_ExtractRequestCBFromEvent
25027(
25028 WDI_EventInfoType* pEvent,
Jeff Johnsone7245742012-09-05 17:12:55 -070025029 WDI_ReqStatusCb* ppfnReqCB,
Jeff Johnson295189b2012-06-20 16:38:30 -070025030 void** ppUserData
25031)
25032{
25033 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25034 switch ( pEvent->wdiRequest )
25035 {
25036 case WDI_START_REQ:
25037 *ppfnReqCB = ((WDI_StartReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25038 *ppUserData = ((WDI_StartReqParamsType*)pEvent->pEventData)->pUserData;
25039 break;
25040 case WDI_STOP_REQ:
25041 *ppfnReqCB = ((WDI_StopReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25042 *ppUserData = ((WDI_StopReqParamsType*)pEvent->pEventData)->pUserData;
25043 break;
25044 case WDI_INIT_SCAN_REQ:
25045 *ppfnReqCB = ((WDI_InitScanReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25046 *ppUserData = ((WDI_InitScanReqParamsType*)pEvent->pEventData)->pUserData;
25047 break;
25048 case WDI_START_SCAN_REQ:
25049 *ppfnReqCB = ((WDI_StartScanReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25050 *ppUserData = ((WDI_StartScanReqParamsType*)pEvent->pEventData)->pUserData;
25051 break;
25052 case WDI_END_SCAN_REQ:
25053 *ppfnReqCB = ((WDI_EndScanReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25054 *ppUserData = ((WDI_EndScanReqParamsType*)pEvent->pEventData)->pUserData;
25055 break;
25056 case WDI_FINISH_SCAN_REQ:
25057 *ppfnReqCB = ((WDI_FinishScanReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25058 *ppUserData = ((WDI_FinishScanReqParamsType*)pEvent->pEventData)->pUserData;
25059 break;
25060 case WDI_JOIN_REQ:
25061 *ppfnReqCB = ((WDI_JoinReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25062 *ppUserData = ((WDI_JoinReqParamsType*)pEvent->pEventData)->pUserData;
25063 break;
25064 case WDI_CONFIG_BSS_REQ:
25065 *ppfnReqCB = ((WDI_ConfigBSSReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25066 *ppUserData = ((WDI_ConfigBSSReqParamsType*)pEvent->pEventData)->pUserData;
25067 break;
25068 case WDI_DEL_BSS_REQ:
25069 *ppfnReqCB = ((WDI_DelBSSReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25070 *ppUserData = ((WDI_DelBSSReqParamsType*)pEvent->pEventData)->pUserData;
25071 break;
25072 case WDI_POST_ASSOC_REQ:
25073 *ppfnReqCB = ((WDI_PostAssocReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25074 *ppUserData = ((WDI_PostAssocReqParamsType*)pEvent->pEventData)->pUserData;
25075 break;
25076 case WDI_DEL_STA_REQ:
25077 *ppfnReqCB = ((WDI_DelSTAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25078 *ppUserData = ((WDI_DelSTAReqParamsType*)pEvent->pEventData)->pUserData;
25079 break;
25080 case WDI_DEL_STA_SELF_REQ:
25081 *ppfnReqCB = ((WDI_DelSTASelfReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25082 *ppUserData = ((WDI_DelSTASelfReqParamsType*)pEvent->pEventData)->pUserData;
25083 break;
25084
25085 case WDI_SET_BSS_KEY_REQ:
25086 *ppfnReqCB = ((WDI_SetBSSKeyReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25087 *ppUserData = ((WDI_SetBSSKeyReqParamsType*)pEvent->pEventData)->pUserData;
25088 break;
25089 case WDI_RMV_BSS_KEY_REQ:
25090 *ppfnReqCB = ((WDI_RemoveBSSKeyReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25091 *ppUserData = ((WDI_RemoveBSSKeyReqParamsType*)pEvent->pEventData)->pUserData;
25092 break;
25093 case WDI_SET_STA_KEY_REQ:
25094 *ppfnReqCB = ((WDI_SetSTAKeyReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25095 *ppUserData = ((WDI_SetSTAKeyReqParamsType*)pEvent->pEventData)->pUserData;
25096 break;
25097 case WDI_RMV_STA_KEY_REQ:
25098 *ppfnReqCB = ((WDI_RemoveSTAKeyReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25099 *ppUserData = ((WDI_RemoveSTAKeyReqParamsType*)pEvent->pEventData)->pUserData;
25100 break;
25101 case WDI_ADD_TS_REQ:
25102 *ppfnReqCB = ((WDI_AddTSReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25103 *ppUserData = ((WDI_AddTSReqParamsType*)pEvent->pEventData)->pUserData;
25104 break;
25105 case WDI_DEL_TS_REQ:
25106 *ppfnReqCB = ((WDI_DelTSReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25107 *ppUserData = ((WDI_DelTSReqParamsType*)pEvent->pEventData)->pUserData;
25108 break;
25109 case WDI_UPD_EDCA_PRMS_REQ:
25110 *ppfnReqCB = ((WDI_UpdateEDCAParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25111 *ppUserData = ((WDI_UpdateEDCAParamsType*)pEvent->pEventData)->pUserData;
25112 break;
25113 case WDI_ADD_BA_SESSION_REQ:
25114 *ppfnReqCB = ((WDI_AddBASessionReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25115 *ppUserData = ((WDI_AddBASessionReqParamsType*)pEvent->pEventData)->pUserData;
25116 break;
25117 case WDI_DEL_BA_REQ:
25118 *ppfnReqCB = ((WDI_DelBAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25119 *ppUserData = ((WDI_DelBAReqParamsType*)pEvent->pEventData)->pUserData;
25120 break;
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -080025121#ifdef FEATURE_WLAN_ESE
Jeff Johnson295189b2012-06-20 16:38:30 -070025122 case WDI_TSM_STATS_REQ:
25123 *ppfnReqCB = ((WDI_TSMStatsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25124 *ppUserData = ((WDI_TSMStatsReqParamsType*)pEvent->pEventData)->pUserData;
25125 break;
25126#endif
25127 case WDI_CH_SWITCH_REQ:
25128 *ppfnReqCB = ((WDI_SwitchChReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25129 *ppUserData = ((WDI_SwitchChReqParamsType*)pEvent->pEventData)->pUserData;
25130 break;
Kalikinkar dhara1e83b772014-02-06 12:59:22 -080025131 case WDI_CH_SWITCH_REQ_V1:
25132 *ppfnReqCB = ((WDI_SwitchChReqParamsType_V1*)pEvent->pEventData)->wdiReqStatusCB;
25133 *ppUserData = ((WDI_SwitchChReqParamsType_V1*)pEvent->pEventData)->pUserData;
25134 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070025135 case WDI_CONFIG_STA_REQ:
25136 *ppfnReqCB = ((WDI_ConfigSTAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25137 *ppUserData = ((WDI_ConfigSTAReqParamsType*)pEvent->pEventData)->pUserData;
25138 break;
25139 case WDI_SET_LINK_ST_REQ:
25140 *ppfnReqCB = ((WDI_SetLinkReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25141 *ppUserData = ((WDI_SetLinkReqParamsType*)pEvent->pEventData)->pUserData;
25142 break;
25143 case WDI_GET_STATS_REQ:
25144 *ppfnReqCB = ((WDI_GetStatsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25145 *ppUserData = ((WDI_GetStatsReqParamsType*)pEvent->pEventData)->pUserData;
25146 break;
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -080025147#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_ESE || defined(FEATURE_WLAN_LFR)
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -080025148 case WDI_GET_ROAM_RSSI_REQ:
25149 *ppfnReqCB = ((WDI_GetRoamRssiReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25150 *ppUserData = ((WDI_GetRoamRssiReqParamsType*)pEvent->pEventData)->pUserData;
25151 break;
25152#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070025153 case WDI_UPDATE_CFG_REQ:
25154 *ppfnReqCB = ((WDI_UpdateCfgReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25155 *ppUserData = ((WDI_UpdateCfgReqParamsType*)pEvent->pEventData)->pUserData;
25156 break;
25157 case WDI_ADD_BA_REQ:
25158 *ppfnReqCB = ((WDI_AddBAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25159 *ppUserData = ((WDI_AddBAReqParamsType*)pEvent->pEventData)->pUserData;
25160 break;
25161 case WDI_TRIGGER_BA_REQ:
25162 *ppfnReqCB = ((WDI_TriggerBAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25163 *ppUserData = ((WDI_TriggerBAReqParamsType*)pEvent->pEventData)->pUserData;
25164 break;
25165 case WDI_UPD_BCON_PRMS_REQ:
25166 *ppfnReqCB = ((WDI_UpdateBeaconParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25167 *ppUserData = ((WDI_UpdateBeaconParamsType*)pEvent->pEventData)->pUserData;
25168 break;
25169 case WDI_SND_BCON_REQ:
25170 *ppfnReqCB = ((WDI_SendBeaconParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25171 *ppUserData = ((WDI_SendBeaconParamsType*)pEvent->pEventData)->pUserData;
25172 break;
25173 case WDI_ENTER_BMPS_REQ:
25174 *ppfnReqCB = ((WDI_EnterBmpsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25175 *ppUserData = ((WDI_EnterBmpsReqParamsType*)pEvent->pEventData)->pUserData;
25176 break;
25177 case WDI_EXIT_BMPS_REQ:
25178 *ppfnReqCB = ((WDI_ExitBmpsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25179 *ppUserData = ((WDI_ExitBmpsReqParamsType*)pEvent->pEventData)->pUserData;
25180 break;
Mihir Shetea4306052014-03-25 00:02:54 +053025181 case WDI_ENTER_IMPS_REQ:
25182 *ppfnReqCB = ((WDI_EnterImpsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25183 *ppUserData = ((WDI_EnterImpsReqParamsType*)pEvent->pEventData)->pUserData;
25184 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070025185 case WDI_ENTER_UAPSD_REQ:
25186 *ppfnReqCB = ((WDI_EnterUapsdReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25187 *ppUserData = ((WDI_EnterUapsdReqParamsType*)pEvent->pEventData)->pUserData;
25188 break;
Yue Ma7f44bbe2013-04-12 11:47:39 -070025189 case WDI_EXIT_UAPSD_REQ:
25190 *ppfnReqCB = ((WDI_ExitUapsdReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25191 *ppUserData = ((WDI_ExitUapsdReqParamsType*)pEvent->pEventData)->pUserData;
25192 break;
25193 case WDI_SET_UAPSD_PARAM_REQ:
25194 *ppfnReqCB = ((WDI_SetUapsdAcParamsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25195 *ppUserData = ((WDI_SetUapsdAcParamsReqParamsType*)pEvent->pEventData)->pUserData;
25196 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070025197 case WDI_UPDATE_UAPSD_PARAM_REQ:
25198 *ppfnReqCB = ((WDI_UpdateUapsdReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25199 *ppUserData = ((WDI_UpdateUapsdReqParamsType*)pEvent->pEventData)->pUserData;
25200 break;
25201 case WDI_CONFIGURE_RXP_FILTER_REQ:
25202 *ppfnReqCB = ((WDI_ConfigureRxpFilterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25203 *ppUserData = ((WDI_ConfigureRxpFilterReqParamsType*)pEvent->pEventData)->pUserData;
25204 break;
25205 case WDI_SET_BEACON_FILTER_REQ:
25206 *ppfnReqCB = ((WDI_BeaconFilterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25207 *ppUserData = ((WDI_BeaconFilterReqParamsType*)pEvent->pEventData)->pUserData;
25208 break;
25209 case WDI_REM_BEACON_FILTER_REQ:
25210 *ppfnReqCB = ((WDI_RemBeaconFilterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25211 *ppUserData = ((WDI_RemBeaconFilterReqParamsType*)pEvent->pEventData)->pUserData;
Jeff Johnsone7245742012-09-05 17:12:55 -070025212 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070025213 case WDI_SET_RSSI_THRESHOLDS_REQ:
25214 *ppfnReqCB = ((WDI_SetRSSIThresholdsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25215 *ppUserData = ((WDI_SetRSSIThresholdsReqParamsType*)pEvent->pEventData)->pUserData;
25216 break;
25217 case WDI_HOST_OFFLOAD_REQ:
25218 *ppfnReqCB = ((WDI_HostOffloadReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25219 *ppUserData = ((WDI_HostOffloadReqParamsType*)pEvent->pEventData)->pUserData;
25220 break;
25221 case WDI_WOWL_ADD_BC_PTRN_REQ:
25222 *ppfnReqCB = ((WDI_WowlAddBcPtrnReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25223 *ppUserData = ((WDI_WowlAddBcPtrnReqParamsType*)pEvent->pEventData)->pUserData;
25224 break;
25225 case WDI_WOWL_DEL_BC_PTRN_REQ:
25226 *ppfnReqCB = ((WDI_WowlDelBcPtrnReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25227 *ppUserData = ((WDI_WowlDelBcPtrnReqParamsType*)pEvent->pEventData)->pUserData;
25228 break;
25229 case WDI_WOWL_ENTER_REQ:
25230 *ppfnReqCB = ((WDI_WowlEnterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25231 *ppUserData = ((WDI_WowlEnterReqParamsType*)pEvent->pEventData)->pUserData;
25232 break;
Yue Ma7f44bbe2013-04-12 11:47:39 -070025233 case WDI_WOWL_EXIT_REQ:
25234 *ppfnReqCB = ((WDI_WowlExitReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25235 *ppUserData = ((WDI_WowlExitReqParamsType*)pEvent->pEventData)->pUserData;
25236 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070025237 case WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ:
25238 *ppfnReqCB = ((WDI_ConfigureAppsCpuWakeupStateReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25239 *ppUserData = ((WDI_ConfigureAppsCpuWakeupStateReqParamsType*)pEvent->pEventData)->pUserData;
25240 break;
25241 case WDI_FLUSH_AC_REQ:
25242 *ppfnReqCB = ((WDI_FlushAcReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25243 *ppUserData = ((WDI_FlushAcReqParamsType*)pEvent->pEventData)->pUserData;
25244 break;
25245 case WDI_BTAMP_EVENT_REQ:
25246 *ppfnReqCB = ((WDI_BtAmpEventParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25247 *ppUserData = ((WDI_BtAmpEventParamsType*)pEvent->pEventData)->pUserData;
25248 break;
25249 case WDI_KEEP_ALIVE_REQ:
25250 *ppfnReqCB = ((WDI_KeepAliveReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25251 *ppUserData = ((WDI_KeepAliveReqParamsType*)pEvent->pEventData)->pUserData;
25252 break;
Yue Ma7f44bbe2013-04-12 11:47:39 -070025253#if defined FEATURE_WLAN_SCAN_PNO
25254 case WDI_SET_PREF_NETWORK_REQ:
25255 *ppfnReqCB = ((WDI_PNOScanReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25256 *ppUserData = ((WDI_PNOScanReqParamsType*)pEvent->pEventData)->pUserData;
25257 break;
25258 case WDI_SET_RSSI_FILTER_REQ:
25259 *ppfnReqCB = ((WDI_SetRssiFilterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25260 *ppUserData = ((WDI_SetRssiFilterReqParamsType*)pEvent->pEventData)->pUserData;
25261 break;
25262 case WDI_UPDATE_SCAN_PARAMS_REQ:
25263 *ppfnReqCB = ((WDI_UpdateScanParamsInfoType*)pEvent->pEventData)->wdiReqStatusCB;
25264 *ppUserData = ((WDI_UpdateScanParamsInfoType*)pEvent->pEventData)->pUserData;
25265 break;
25266#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070025267 case WDI_SET_TX_PER_TRACKING_REQ:
25268 *ppfnReqCB = ((WDI_SetTxPerTrackingReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25269 *ppUserData = ((WDI_SetTxPerTrackingReqParamsType*)pEvent->pEventData)->pUserData;
Tushnim Bhattacharyya4858ab62013-03-08 10:15:42 -080025270 break;
Yue Ma7f44bbe2013-04-12 11:47:39 -070025271#if defined WLAN_FEATURE_PACKET_FILTERING
25272 case WDI_8023_MULTICAST_LIST_REQ:
25273 *ppfnReqCB = ((WDI_RcvFltPktSetMcListReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25274 *ppUserData = ((WDI_RcvFltPktSetMcListReqParamsType*)pEvent->pEventData)->pUserData;
25275 break;
Tushnim Bhattacharyya4858ab62013-03-08 10:15:42 -080025276 case WDI_RECEIVE_FILTER_SET_FILTER_REQ:
25277 *ppfnReqCB = ((WDI_SetRcvPktFilterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25278 *ppUserData = ((WDI_SetRcvPktFilterReqParamsType*)pEvent->pEventData)->pUserData;
25279 break;
25280 case WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ:
25281 *ppfnReqCB = ((WDI_RcvFltPktMatchCntReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25282 *ppUserData = ((WDI_RcvFltPktMatchCntReqParamsType*)pEvent->pEventData)->pUserData;
25283 break;
25284 case WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ:
25285 *ppfnReqCB = ((WDI_RcvFltPktClearReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25286 *ppUserData = ((WDI_RcvFltPktClearReqParamsType*)pEvent->pEventData)->pUserData;
25287 break;
Yue Ma7f44bbe2013-04-12 11:47:39 -070025288#endif
25289 case WDI_SET_POWER_PARAMS_REQ:
25290 *ppfnReqCB = ((WDI_SetPowerParamsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25291 *ppUserData = ((WDI_SetPowerParamsReqParamsType*)pEvent->pEventData)->pUserData;
25292 break;
25293#if defined WLAN_FEATURE_GTK_OFFLOAD
25294 case WDI_GTK_OFFLOAD_REQ:
25295 *ppfnReqCB = ((WDI_GtkOffloadReqMsg*)pEvent->pEventData)->wdiReqStatusCB;
25296 *ppUserData = ((WDI_GtkOffloadReqMsg*)pEvent->pEventData)->pUserData;
25297 break;
25298 case WDI_GTK_OFFLOAD_GETINFO_REQ:
25299 *ppfnReqCB = ((WDI_GtkOffloadGetInfoReqMsg*)pEvent->pEventData)->wdiReqStatusCB;
25300 *ppUserData = ((WDI_GtkOffloadGetInfoReqMsg*)pEvent->pEventData)->pUserData;
25301 break;
25302#endif
Tushnim Bhattacharyya4858ab62013-03-08 10:15:42 -080025303
Jeff Johnson295189b2012-06-20 16:38:30 -070025304 default:
25305 *ppfnReqCB = NULL;
25306 *ppUserData = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070025307 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070025308 }
25309}/*WDI_ExtractRequestCBFromEvent*/
25310
25311
25312/**
Jeff Johnsone7245742012-09-05 17:12:55 -070025313 @brief WDI_IsHwFrameTxTranslationCapable checks to see if HW
Jeff Johnson295189b2012-06-20 16:38:30 -070025314 frame xtl is enabled for a particular STA.
25315
25316 WDI_PostAssocReq must have been called.
25317
Jeff Johnsone7245742012-09-05 17:12:55 -070025318 @param uSTAIdx: STA index
25319
Jeff Johnson295189b2012-06-20 16:38:30 -070025320 @see WDI_PostAssocReq
25321 @return Result of the function call
25322*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025323wpt_boolean
Jeff Johnson295189b2012-06-20 16:38:30 -070025324WDI_IsHwFrameTxTranslationCapable
25325(
25326 wpt_uint8 uSTAIdx
25327)
25328{
Jeff Johnsone7245742012-09-05 17:12:55 -070025329 /*!! FIX ME - this must eventually be per station - for now just feedback
Jeff Johnson295189b2012-06-20 16:38:30 -070025330 uma value*/
25331 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025332 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070025333 ------------------------------------------------------------------------*/
25334 if ( eWLAN_PAL_FALSE == gWDIInitialized )
25335 {
25336 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25337 "WDI API call before module is initialized - Fail request");
25338
Jeff Johnsone7245742012-09-05 17:12:55 -070025339 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070025340 }
25341
Gopichand Nakkala976e3252013-01-03 15:45:56 -080025342#ifdef WLAN_SOFTAP_VSTA_FEATURE
25343 if (IS_VSTA_IDX(uSTAIdx))
25344 {
25345 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
25346 "STA %d is a Virtual STA, "
25347 "HW frame translation disabled", uSTAIdx);
25348 return eWLAN_PAL_FALSE;
25349 }
25350#endif
Jeff Johnsone7245742012-09-05 17:12:55 -070025351
Jeff Johnson295189b2012-06-20 16:38:30 -070025352 return gWDICb.bFrameTransEnabled;
25353}/*WDI_IsHwFrameTxTranslationCapable*/
25354
Katya Nigam6201c3e2014-05-27 17:51:42 +053025355
25356/**
25357 @brief WDI_IsSelfSTA - check if staid is self sta index
25358
25359
25360 @param pWDICtx: pointer to the WLAN DAL context
25361 ucSTAIdx: station index
25362
25363 @return Result of the function call
25364*/
25365wpt_boolean WDI_IsSelfSTA( void* pWDICtx, wpt_uint8 ucSTAIdx )
25366{
25367 wpt_uint8 ucSTAType;
25368
25369 if( WDI_STATableGetStaType( (WDI_ControlBlockType*)pWDICtx,
25370 ucSTAIdx,&ucSTAType) == WDI_STATUS_SUCCESS)
25371 {
25372 if( ucSTAType == WDI_STA_ENTRY_SELF )
25373 return eWLAN_PAL_TRUE;
25374 }
25375
25376 return eWLAN_PAL_FALSE;
25377}
25378
25379
25380
Jeff Johnson295189b2012-06-20 16:38:30 -070025381#ifdef FEATURE_WLAN_SCAN_PNO
25382/**
25383 @brief WDI_SetPreferredNetworkList
25384
Jeff Johnsone7245742012-09-05 17:12:55 -070025385 @param pwdiPNOScanReqParams: the Set PNO as specified
Jeff Johnson295189b2012-06-20 16:38:30 -070025386 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -070025387
Jeff Johnson295189b2012-06-20 16:38:30 -070025388 wdiPNOScanCb: callback for passing back the response
25389 of the Set PNO operation received from the
25390 device
Jeff Johnsone7245742012-09-05 17:12:55 -070025391
Jeff Johnson295189b2012-06-20 16:38:30 -070025392 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -070025393 callback
25394
Jeff Johnson295189b2012-06-20 16:38:30 -070025395 @return Result of the function call
25396*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025397WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070025398WDI_SetPreferredNetworkReq
25399(
25400 WDI_PNOScanReqParamsType* pwdiPNOScanReqParams,
25401 WDI_PNOScanCb wdiPNOScanCb,
25402 void* pUserData
25403)
25404{
25405 WDI_EventInfoType wdiEventData = {{0}};
25406 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25407
25408 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025409 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070025410 ------------------------------------------------------------------------*/
25411 if ( eWLAN_PAL_FALSE == gWDIInitialized )
25412 {
25413 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25414 "WDI API call before module is initialized - Fail request");
25415
Jeff Johnsone7245742012-09-05 17:12:55 -070025416 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070025417 }
25418
25419 /*------------------------------------------------------------------------
25420 Fill in Event data and post to the Main FSM
25421 ------------------------------------------------------------------------*/
25422 wdiEventData.wdiRequest = WDI_SET_PREF_NETWORK_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070025423 wdiEventData.pEventData = pwdiPNOScanReqParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070025424 wdiEventData.uEventDataSize = sizeof(*pwdiPNOScanReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -070025425 wdiEventData.pCBfnc = wdiPNOScanCb;
Jeff Johnson295189b2012-06-20 16:38:30 -070025426 wdiEventData.pUserData = pUserData;
25427
25428 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
25429}
25430
25431
25432/**
25433 @brief WDI_SetRssiFilterReq
25434
Jeff Johnsone7245742012-09-05 17:12:55 -070025435 @param pwdiRssiFilterReqParams: the Set RSSI Filter as
Jeff Johnson295189b2012-06-20 16:38:30 -070025436 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -070025437
Jeff Johnson295189b2012-06-20 16:38:30 -070025438 wdiRssiFilterCb: callback for passing back the response
25439 of the Set RSSI Filter operation received from the
25440 device
Jeff Johnsone7245742012-09-05 17:12:55 -070025441
Jeff Johnson295189b2012-06-20 16:38:30 -070025442 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -070025443 callback
25444
Jeff Johnson295189b2012-06-20 16:38:30 -070025445 @return Result of the function call
25446*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025447WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070025448WDI_SetRssiFilterReq
25449(
25450 WDI_SetRssiFilterReqParamsType* pwdiRssiFilterReqParams,
25451 WDI_RssiFilterCb wdiRssiFilterCb,
25452 void* pUserData
25453)
25454{
25455 WDI_EventInfoType wdiEventData = {{0}};
25456 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25457
25458 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025459 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070025460 ------------------------------------------------------------------------*/
25461 if ( eWLAN_PAL_FALSE == gWDIInitialized )
25462 {
25463 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25464 "WDI API call before module is initialized - Fail request");
25465
Jeff Johnsone7245742012-09-05 17:12:55 -070025466 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070025467 }
25468
25469 /*------------------------------------------------------------------------
25470 Fill in Event data and post to the Main FSM
25471 ------------------------------------------------------------------------*/
25472 wdiEventData.wdiRequest = WDI_SET_RSSI_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070025473 wdiEventData.pEventData = pwdiRssiFilterReqParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070025474 wdiEventData.uEventDataSize = sizeof(*pwdiRssiFilterReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -070025475 wdiEventData.pCBfnc = wdiRssiFilterCb;
Jeff Johnson295189b2012-06-20 16:38:30 -070025476 wdiEventData.pUserData = pUserData;
25477
25478 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
25479}/*WDI_SetRssiFilterReq*/
25480
25481/**
25482 @brief WDI_UpdateScanParamsReq
25483
Jeff Johnsone7245742012-09-05 17:12:55 -070025484 @param pwdiUpdateScanParamsInfoType: the Update Scan Params as specified
Jeff Johnson295189b2012-06-20 16:38:30 -070025485 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -070025486
Jeff Johnson295189b2012-06-20 16:38:30 -070025487 wdiUpdateScanParamsCb: callback for passing back the response
25488 of the Set PNO operation received from the
25489 device
Jeff Johnsone7245742012-09-05 17:12:55 -070025490
Jeff Johnson295189b2012-06-20 16:38:30 -070025491 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -070025492 callback
25493
Jeff Johnson295189b2012-06-20 16:38:30 -070025494 @return Result of the function call
25495*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025496WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070025497WDI_UpdateScanParamsReq
25498(
25499 WDI_UpdateScanParamsInfoType* pwdiUpdateScanParamsInfoType,
25500 WDI_UpdateScanParamsCb wdiUpdateScanParamsCb,
25501 void* pUserData
25502)
25503{
25504 WDI_EventInfoType wdiEventData = {{0}};
25505 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25506
25507 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025508 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070025509 ------------------------------------------------------------------------*/
25510 if ( eWLAN_PAL_FALSE == gWDIInitialized )
25511 {
25512 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25513 "WDI API call before module is initialized - Fail request");
25514
Jeff Johnsone7245742012-09-05 17:12:55 -070025515 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070025516 }
25517
25518 /*------------------------------------------------------------------------
25519 Fill in Event data and post to the Main FSM
25520 ------------------------------------------------------------------------*/
25521 wdiEventData.wdiRequest = WDI_UPDATE_SCAN_PARAMS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070025522 wdiEventData.pEventData = pwdiUpdateScanParamsInfoType;
Jeff Johnson295189b2012-06-20 16:38:30 -070025523 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateScanParamsInfoType);
Jeff Johnsone7245742012-09-05 17:12:55 -070025524 wdiEventData.pCBfnc = wdiUpdateScanParamsCb;
Jeff Johnson295189b2012-06-20 16:38:30 -070025525 wdiEventData.pUserData = pUserData;
25526
25527 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
25528}
25529
25530/**
Jeff Johnsone7245742012-09-05 17:12:55 -070025531 @brief Helper function to pack Set Preferred Network List
Jeff Johnson295189b2012-06-20 16:38:30 -070025532 Request parameters
Jeff Johnsone7245742012-09-05 17:12:55 -070025533
25534 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070025535 pwdiPNOScanReqParams: pointer to the info received
25536 from upper layers
25537 ppSendBuffer, pSize - out pointers of the packed buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070025538 and its size
25539
Jeff Johnson295189b2012-06-20 16:38:30 -070025540 @return Result of the function call
25541*/
25542
25543WDI_Status
25544WDI_PackPreferredNetworkList
25545(
25546 WDI_ControlBlockType* pWDICtx,
25547 WDI_PNOScanReqParamsType* pwdiPNOScanReqParams,
25548 wpt_uint8** ppSendBuffer,
25549 wpt_uint16* pSize
25550)
25551{
Jeff Johnsone7245742012-09-05 17:12:55 -070025552 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070025553 wpt_uint16 usDataOffset = 0;
25554 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025555 tpPrefNetwListParams pPrefNetwListParams = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070025556 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070025557 /*-----------------------------------------------------------------------
25558 Get message buffer
25559 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025560 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_PREF_NETWORK_REQ,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025561 sizeof(tPrefNetwListParams),
Jeff Johnson295189b2012-06-20 16:38:30 -070025562 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025563 ( usSendSize < (usDataOffset + sizeof(tPrefNetwListParams) )))
Jeff Johnson295189b2012-06-20 16:38:30 -070025564 {
25565 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080025566 "Unable to get send buffer in Set PNO req %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070025567 pwdiPNOScanReqParams);
25568 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070025569 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025570 }
25571
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025572 pPrefNetwListParams = (tpPrefNetwListParams)(pSendBuffer + usDataOffset);
25573
Jeff Johnson295189b2012-06-20 16:38:30 -070025574 /*-------------------------------------------------------------------------
25575 Fill prefNetwListParams from pwdiPNOScanReqParams->wdiPNOScanInfo
25576 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025577 pPrefNetwListParams->enable =
Jeff Johnson295189b2012-06-20 16:38:30 -070025578 pwdiPNOScanReqParams->wdiPNOScanInfo.bEnable;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025579 pPrefNetwListParams->modePNO =
Jeff Johnson295189b2012-06-20 16:38:30 -070025580 pwdiPNOScanReqParams->wdiPNOScanInfo.wdiModePNO;
25581
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025582 pPrefNetwListParams->ucNetworksCount =
Jeff Johnsone7245742012-09-05 17:12:55 -070025583 (pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount <
Jeff Johnson295189b2012-06-20 16:38:30 -070025584 WLAN_HAL_PNO_MAX_SUPP_NETWORKS)?
Jeff Johnsone7245742012-09-05 17:12:55 -070025585 pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount :
Jeff Johnson295189b2012-06-20 16:38:30 -070025586 WLAN_HAL_PNO_MAX_SUPP_NETWORKS;
25587
25588 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070025589 "WDI SET PNO: Enable %d, Mode %d, Netw Count %d",
Jeff Johnson295189b2012-06-20 16:38:30 -070025590 pwdiPNOScanReqParams->wdiPNOScanInfo.bEnable,
25591 pwdiPNOScanReqParams->wdiPNOScanInfo.wdiModePNO,
25592 pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount);
25593
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025594 for ( i = 0; i < pPrefNetwListParams->ucNetworksCount; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070025595 {
25596 /*SSID of the BSS*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025597 pPrefNetwListParams->aNetworks[i].ssId.length
Jeff Johnson295189b2012-06-20 16:38:30 -070025598 = pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ssId.ucLength;
25599
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025600 wpalMemoryCopy( pPrefNetwListParams->aNetworks[i].ssId.ssId,
Jeff Johnson295189b2012-06-20 16:38:30 -070025601 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ssId.sSSID,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025602 pPrefNetwListParams->aNetworks[i].ssId.length);
Jeff Johnson295189b2012-06-20 16:38:30 -070025603
25604 /*Authentication type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025605 pPrefNetwListParams->aNetworks[i].authentication =
Jeff Johnsone7245742012-09-05 17:12:55 -070025606 (tAuthType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiAuth;
Jeff Johnson295189b2012-06-20 16:38:30 -070025607
25608 /*Encryption type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025609 pPrefNetwListParams->aNetworks[i].encryption =
Jeff Johnsone7245742012-09-05 17:12:55 -070025610 (tEdType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiEncryption;
Jeff Johnson295189b2012-06-20 16:38:30 -070025611
Jeff Johnsone7245742012-09-05 17:12:55 -070025612 /*Indicate the channel on which the Network can be found
Jeff Johnson295189b2012-06-20 16:38:30 -070025613 0 - if all channels */
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025614 pPrefNetwListParams->aNetworks[i].ucChannelCount =
Madan Mohan Koyyalamudia208d102012-10-15 15:18:18 -070025615 (pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ucChannelCount <
25616 WLAN_HAL_PNO_MAX_NETW_CHANNELS)?
25617 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ucChannelCount :
25618 WLAN_HAL_PNO_MAX_NETW_CHANNELS;
Jeff Johnson295189b2012-06-20 16:38:30 -070025619
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025620 wpalMemoryCopy(pPrefNetwListParams->aNetworks[i].aChannels,
Jeff Johnson295189b2012-06-20 16:38:30 -070025621 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].aChannels,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025622 pPrefNetwListParams->aNetworks[i].ucChannelCount);
Jeff Johnson295189b2012-06-20 16:38:30 -070025623
25624 /*Indicates the RSSI threshold for the network to be considered*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025625 pPrefNetwListParams->aNetworks[i].rssiThreshold =
Jeff Johnson295189b2012-06-20 16:38:30 -070025626 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].rssiThreshold;
25627
25628 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070025629 "WDI SET PNO: SSID %d %s",
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025630 pPrefNetwListParams->aNetworks[i].ssId.length,
25631 pPrefNetwListParams->aNetworks[i].ssId.ssId);
Jeff Johnson295189b2012-06-20 16:38:30 -070025632 }
25633
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025634 pPrefNetwListParams->scanTimers.ucScanTimersCount =
Jeff Johnsone7245742012-09-05 17:12:55 -070025635 (pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.ucScanTimersCount <
Jeff Johnson295189b2012-06-20 16:38:30 -070025636 WLAN_HAL_PNO_MAX_SCAN_TIMERS)?
25637 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.ucScanTimersCount :
25638 WLAN_HAL_PNO_MAX_SCAN_TIMERS;
25639
25640 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070025641 "WDI SET PNO: Scan timers count %d 24G P %d 5G Probe %d",
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025642 pPrefNetwListParams->scanTimers.ucScanTimersCount,
Jeff Johnson295189b2012-06-20 16:38:30 -070025643 pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize,
25644 pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize);
25645
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025646 for ( i = 0; i < pPrefNetwListParams->scanTimers.ucScanTimersCount; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070025647 {
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025648 pPrefNetwListParams->scanTimers.aTimerValues[i].uTimerValue =
Jeff Johnson295189b2012-06-20 16:38:30 -070025649 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.aTimerValues[i].uTimerValue;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025650 pPrefNetwListParams->scanTimers.aTimerValues[i].uTimerRepeat =
Jeff Johnson295189b2012-06-20 16:38:30 -070025651 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.aTimerValues[i].uTimerRepeat;
25652 }
25653
25654 /*Copy the probe template*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025655 pPrefNetwListParams->us24GProbeSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070025656 (pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize<
25657 WLAN_HAL_PNO_MAX_PROBE_SIZE)?
25658 pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize:
Jeff Johnsone7245742012-09-05 17:12:55 -070025659 WLAN_HAL_PNO_MAX_PROBE_SIZE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025660
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025661 wpalMemoryCopy(pPrefNetwListParams->a24GProbeTemplate,
Jeff Johnsone7245742012-09-05 17:12:55 -070025662 pwdiPNOScanReqParams->wdiPNOScanInfo.a24GProbeTemplate,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025663 pPrefNetwListParams->us24GProbeSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070025664
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025665 pPrefNetwListParams->us5GProbeSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070025666 (pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize <
25667 WLAN_HAL_PNO_MAX_PROBE_SIZE)?
25668 pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize:
Jeff Johnsone7245742012-09-05 17:12:55 -070025669 WLAN_HAL_PNO_MAX_PROBE_SIZE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025670
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025671 wpalMemoryCopy(pPrefNetwListParams->a5GProbeTemplate,
Jeff Johnsone7245742012-09-05 17:12:55 -070025672 pwdiPNOScanReqParams->wdiPNOScanInfo.a5GProbeTemplate,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025673 pPrefNetwListParams->us5GProbeSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070025674
25675 /*Set the output values*/
25676 *ppSendBuffer = pSendBuffer;
Jeff Johnsone7245742012-09-05 17:12:55 -070025677 *pSize = usSendSize;
Jeff Johnson295189b2012-06-20 16:38:30 -070025678
25679 return WDI_STATUS_SUCCESS;
25680}/*WDI_PackPreferredNetworkList*/
25681
25682/**
Jeff Johnsone7245742012-09-05 17:12:55 -070025683 @brief Helper function to pack Set Preferred Network List
Jeff Johnson295189b2012-06-20 16:38:30 -070025684 Request parameters
Jeff Johnsone7245742012-09-05 17:12:55 -070025685
25686 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070025687 pwdiPNOScanReqParams: pointer to the info received
25688 from upper layers
25689 ppSendBuffer, pSize - out pointers of the packed buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070025690 and its size
25691
Jeff Johnson295189b2012-06-20 16:38:30 -070025692 @return Result of the function call
25693*/
25694
25695WDI_Status
25696WDI_PackPreferredNetworkListNew
25697(
25698 WDI_ControlBlockType* pWDICtx,
25699 WDI_PNOScanReqParamsType* pwdiPNOScanReqParams,
25700 wpt_uint8** ppSendBuffer,
25701 wpt_uint16* pSize
25702)
25703{
Jeff Johnsone7245742012-09-05 17:12:55 -070025704 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070025705 wpt_uint16 usDataOffset = 0;
25706 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025707 tpPrefNetwListParamsNew pPrefNetwListParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070025708 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070025709
25710 /*-----------------------------------------------------------------------
25711 Get message buffer
25712 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025713 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_PREF_NETWORK_REQ,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025714 sizeof(tPrefNetwListParamsNew),
Jeff Johnson295189b2012-06-20 16:38:30 -070025715 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025716 ( usSendSize < (usDataOffset + sizeof(tPrefNetwListParamsNew) )))
Jeff Johnson295189b2012-06-20 16:38:30 -070025717 {
25718 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080025719 "Unable to get send buffer in Set PNO req %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070025720 pwdiPNOScanReqParams);
25721 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070025722 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025723 }
25724
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025725 pPrefNetwListParams = (tpPrefNetwListParamsNew)(pSendBuffer + usDataOffset);
25726
Jeff Johnson295189b2012-06-20 16:38:30 -070025727 /*-------------------------------------------------------------------------
25728 Fill prefNetwListParams from pwdiPNOScanReqParams->wdiPNOScanInfo
25729 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025730 pPrefNetwListParams->enable =
Jeff Johnson295189b2012-06-20 16:38:30 -070025731 pwdiPNOScanReqParams->wdiPNOScanInfo.bEnable;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025732 pPrefNetwListParams->modePNO =
Jeff Johnson295189b2012-06-20 16:38:30 -070025733 pwdiPNOScanReqParams->wdiPNOScanInfo.wdiModePNO;
25734
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025735 pPrefNetwListParams->ucNetworksCount =
Jeff Johnsone7245742012-09-05 17:12:55 -070025736 (pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount <
Jeff Johnson295189b2012-06-20 16:38:30 -070025737 WLAN_HAL_PNO_MAX_SUPP_NETWORKS)?
Jeff Johnsone7245742012-09-05 17:12:55 -070025738 pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount :
Jeff Johnson295189b2012-06-20 16:38:30 -070025739 WLAN_HAL_PNO_MAX_SUPP_NETWORKS;
25740
25741 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070025742 "WDI SET PNO: Enable %d, Mode %d, Netw Count %d",
Jeff Johnson295189b2012-06-20 16:38:30 -070025743 pwdiPNOScanReqParams->wdiPNOScanInfo.bEnable,
25744 pwdiPNOScanReqParams->wdiPNOScanInfo.wdiModePNO,
25745 pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount);
25746
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025747 for ( i = 0; i < pPrefNetwListParams->ucNetworksCount; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070025748 {
25749 /*SSID of the BSS*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025750 pPrefNetwListParams->aNetworks[i].ssId.length
Jeff Johnson295189b2012-06-20 16:38:30 -070025751 = pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ssId.ucLength;
25752
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025753 wpalMemoryCopy( pPrefNetwListParams->aNetworks[i].ssId.ssId,
Jeff Johnson295189b2012-06-20 16:38:30 -070025754 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ssId.sSSID,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025755 pPrefNetwListParams->aNetworks[i].ssId.length);
Jeff Johnson295189b2012-06-20 16:38:30 -070025756
25757 /*Authentication type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025758 pPrefNetwListParams->aNetworks[i].authentication =
Jeff Johnsone7245742012-09-05 17:12:55 -070025759 (tAuthType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiAuth;
Jeff Johnson295189b2012-06-20 16:38:30 -070025760
25761 /*Encryption type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025762 pPrefNetwListParams->aNetworks[i].encryption =
Jeff Johnsone7245742012-09-05 17:12:55 -070025763 (tEdType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiEncryption;
Jeff Johnson295189b2012-06-20 16:38:30 -070025764
25765 /*SSID bcast type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025766 pPrefNetwListParams->aNetworks[i].bcastNetworkType =
Jeff Johnsone7245742012-09-05 17:12:55 -070025767 (tSSIDBcastType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiBcastNetworkType;
Jeff Johnson295189b2012-06-20 16:38:30 -070025768
Jeff Johnsone7245742012-09-05 17:12:55 -070025769 /*Indicate the channel on which the Network can be found
Jeff Johnson295189b2012-06-20 16:38:30 -070025770 0 - if all channels */
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025771 pPrefNetwListParams->aNetworks[i].ucChannelCount =
Jeff Johnson295189b2012-06-20 16:38:30 -070025772 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ucChannelCount;
25773
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025774 wpalMemoryCopy(pPrefNetwListParams->aNetworks[i].aChannels,
Jeff Johnson295189b2012-06-20 16:38:30 -070025775 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].aChannels,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025776 pPrefNetwListParams->aNetworks[i].ucChannelCount);
Jeff Johnson295189b2012-06-20 16:38:30 -070025777
25778 /*Indicates the RSSI threshold for the network to be considered*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025779 pPrefNetwListParams->aNetworks[i].rssiThreshold =
Jeff Johnson295189b2012-06-20 16:38:30 -070025780 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].rssiThreshold;
25781
25782 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070025783 "WDI SET PNO: SSID %d %s",
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025784 pPrefNetwListParams->aNetworks[i].ssId.length,
25785 pPrefNetwListParams->aNetworks[i].ssId.ssId);
Jeff Johnson295189b2012-06-20 16:38:30 -070025786 }
25787
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025788 pPrefNetwListParams->scanTimers.ucScanTimersCount =
Jeff Johnsone7245742012-09-05 17:12:55 -070025789 (pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.ucScanTimersCount <
Jeff Johnson295189b2012-06-20 16:38:30 -070025790 WLAN_HAL_PNO_MAX_SCAN_TIMERS)?
25791 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.ucScanTimersCount :
25792 WLAN_HAL_PNO_MAX_SCAN_TIMERS;
25793
25794 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070025795 "WDI SET PNO: Scan timers count %d 24G P %d 5G Probe %d",
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025796 pPrefNetwListParams->scanTimers.ucScanTimersCount,
Jeff Johnson295189b2012-06-20 16:38:30 -070025797 pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize,
25798 pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize);
25799
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025800 for ( i = 0; i < pPrefNetwListParams->scanTimers.ucScanTimersCount; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070025801 {
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025802 pPrefNetwListParams->scanTimers.aTimerValues[i].uTimerValue =
Jeff Johnson295189b2012-06-20 16:38:30 -070025803 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.aTimerValues[i].uTimerValue;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025804 pPrefNetwListParams->scanTimers.aTimerValues[i].uTimerRepeat =
Jeff Johnson295189b2012-06-20 16:38:30 -070025805 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.aTimerValues[i].uTimerRepeat;
25806 }
25807
25808 /*Copy the probe template*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025809 pPrefNetwListParams->us24GProbeSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070025810 (pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize<
25811 WLAN_HAL_PNO_MAX_PROBE_SIZE)?
25812 pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize:
Jeff Johnsone7245742012-09-05 17:12:55 -070025813 WLAN_HAL_PNO_MAX_PROBE_SIZE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025814
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025815 wpalMemoryCopy(pPrefNetwListParams->a24GProbeTemplate,
Jeff Johnsone7245742012-09-05 17:12:55 -070025816 pwdiPNOScanReqParams->wdiPNOScanInfo.a24GProbeTemplate,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025817 pPrefNetwListParams->us24GProbeSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070025818
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025819 pPrefNetwListParams->us5GProbeSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070025820 (pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize <
25821 WLAN_HAL_PNO_MAX_PROBE_SIZE)?
25822 pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize:
Jeff Johnsone7245742012-09-05 17:12:55 -070025823 WLAN_HAL_PNO_MAX_PROBE_SIZE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025824
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025825 wpalMemoryCopy(pPrefNetwListParams->a5GProbeTemplate,
Jeff Johnsone7245742012-09-05 17:12:55 -070025826 pwdiPNOScanReqParams->wdiPNOScanInfo.a5GProbeTemplate,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025827 pPrefNetwListParams->us5GProbeSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070025828
Jeff Johnson295189b2012-06-20 16:38:30 -070025829
25830 /*Set the output values*/
25831 *ppSendBuffer = pSendBuffer;
Jeff Johnsone7245742012-09-05 17:12:55 -070025832 *pSize = usSendSize;
Jeff Johnson295189b2012-06-20 16:38:30 -070025833
25834 return WDI_STATUS_SUCCESS;
25835}/*WDI_PackPreferredNetworkListNew*/
25836
25837/**
25838 @brief Process Set Preferred Network List Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070025839
25840 @param pWDICtx: pointer to the WLAN DAL context
25841 pEventData: pointer to the event information structure
25842
Jeff Johnson295189b2012-06-20 16:38:30 -070025843 @return Result of the function call
25844*/
25845WDI_Status
25846WDI_ProcessSetPreferredNetworkReq
Jeff Johnsone7245742012-09-05 17:12:55 -070025847(
Jeff Johnson295189b2012-06-20 16:38:30 -070025848 WDI_ControlBlockType* pWDICtx,
25849 WDI_EventInfoType* pEventData
25850)
25851{
25852 WDI_PNOScanReqParamsType* pwdiPNOScanReqParams = NULL;
25853 WDI_PNOScanCb wdiPNOScanCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070025854 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070025855 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070025856 WDI_Status wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070025857
25858 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025859 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070025860 -------------------------------------------------------------------------*/
25861 if (( NULL == pEventData ) ||
25862 ( NULL == (pwdiPNOScanReqParams = (WDI_PNOScanReqParamsType*)pEventData->pEventData)) ||
25863 ( NULL == (wdiPNOScanCb = (WDI_PNOScanCb)pEventData->pCBfnc)))
25864 {
25865 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025866 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025867 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070025868 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025869 }
25870
Mahesh A Saptasagar3604e792014-04-23 20:47:26 +053025871 /*----------------------------------------------------------------------
25872 Avoid Enable PNO during any active session or an ongoing session
25873 ----------------------------------------------------------------------*/
25874 if ( (pwdiPNOScanReqParams->wdiPNOScanInfo.bEnable &&
25875 WDI_GetActiveSessionsCount(pWDICtx, NULL, eWLAN_PAL_FALSE)) )
25876 {
25877 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25878 "%s:(Active/Ongoing Session) - Fail request", __func__);
25879
25880 return WDI_STATUS_E_FAILURE;
25881 }
25882
Jeff Johnson295189b2012-06-20 16:38:30 -070025883 /*-------------------------------------------------------------------------
25884 Pack the PNO request structure based on version
25885 -------------------------------------------------------------------------*/
25886 if ( pWDICtx->wdiPNOVersion > 0 )
25887 {
25888 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025889 "%s: PNO new version %d ", __func__,
Jeff Johnson295189b2012-06-20 16:38:30 -070025890 pWDICtx->wdiPNOVersion);
25891
25892 wdiStatus = WDI_PackPreferredNetworkListNew( pWDICtx, pwdiPNOScanReqParams,
25893 &pSendBuffer, &usSendSize);
25894 }
25895 else
25896 {
25897 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025898 "%s: PNO old version %d ", __func__,
Jeff Johnson295189b2012-06-20 16:38:30 -070025899 pWDICtx->wdiPNOVersion);
25900
25901 wdiStatus = WDI_PackPreferredNetworkList( pWDICtx, pwdiPNOScanReqParams,
25902 &pSendBuffer, &usSendSize);
25903 }
25904
25905 if (( WDI_STATUS_SUCCESS != wdiStatus )||
25906 ( NULL == pSendBuffer )||( 0 == usSendSize ))
25907 {
25908 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025909 "%s: failed to pack request parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025910 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070025911 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070025912 }
25913
25914 pWDICtx->wdiReqStatusCB = pwdiPNOScanReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070025915 pWDICtx->pReqStatusUserData = pwdiPNOScanReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070025916
25917 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025918 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070025919 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025920 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
25921 wdiPNOScanCb, pEventData->pUserData, WDI_SET_PREF_NETWORK_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070025922}
25923
25924/**
25925 @brief Process Set RSSI Filter Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070025926
25927 @param pWDICtx: pointer to the WLAN DAL context
25928 pEventData: pointer to the event information structure
25929
Jeff Johnson295189b2012-06-20 16:38:30 -070025930 @see
25931 @return Result of the function call
25932*/
25933WDI_Status
25934WDI_ProcessSetRssiFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070025935(
Jeff Johnson295189b2012-06-20 16:38:30 -070025936 WDI_ControlBlockType* pWDICtx,
25937 WDI_EventInfoType* pEventData
25938)
25939{
25940 WDI_SetRssiFilterReqParamsType* pwdiRssiFilterReqParams = NULL;
25941 WDI_RssiFilterCb wdiRssiFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070025942 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070025943 wpt_uint16 usDataOffset = 0;
25944 wpt_uint16 usSendSize = 0;
25945 wpt_uint8 ucRssiThreshold;
25946
25947 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025948 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070025949 -------------------------------------------------------------------------*/
25950 if (( NULL == pEventData ) ||
25951 ( NULL == (pwdiRssiFilterReqParams = (WDI_SetRssiFilterReqParamsType*)pEventData->pEventData)) ||
25952 ( NULL == (wdiRssiFilterCb = (WDI_RssiFilterCb)pEventData->pCBfnc)))
25953 {
25954 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025955 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025956 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070025957 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025958 }
25959
25960 /*-----------------------------------------------------------------------
25961 Get message buffer
25962 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025963 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_PREF_NETWORK_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070025964 sizeof(ucRssiThreshold),
25965 &pSendBuffer, &usDataOffset, &usSendSize))||
25966 ( usSendSize < (usDataOffset + sizeof(ucRssiThreshold) )))
25967 {
25968 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080025969 "Unable to get send buffer in Set PNO req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070025970 pEventData, pwdiRssiFilterReqParams, wdiRssiFilterCb);
25971 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070025972 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025973 }
25974
25975 ucRssiThreshold = pwdiRssiFilterReqParams->rssiThreshold;
25976
Jeff Johnsone7245742012-09-05 17:12:55 -070025977 wpalMemoryCopy( pSendBuffer+usDataOffset,
25978 &ucRssiThreshold,
25979 sizeof(ucRssiThreshold));
Jeff Johnson295189b2012-06-20 16:38:30 -070025980
25981 pWDICtx->wdiReqStatusCB = pwdiRssiFilterReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070025982 pWDICtx->pReqStatusUserData = pwdiRssiFilterReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070025983
25984 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025985 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070025986 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025987 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
25988 wdiRssiFilterCb, pEventData->pUserData, WDI_SET_RSSI_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070025989}
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025990#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
25991/**
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025992 @brief WDI_RoamScanOffloadReq
Jeff Johnson295189b2012-06-20 16:38:30 -070025993
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025994 @param pwdiRoamScanOffloadReqParams: the LookupReq as specified
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025995 by the Device Interface
25996
25997 wdiRoamOffloadScancb: callback for passing back the response
25998 of the Roam Candidate Lookup Req operation received from the
25999 device
26000
26001 pUserData: user data will be passed back with the
26002 callback
26003 @return Result of the function call
26004*/
26005WDI_Status
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026006WDI_RoamScanOffloadReq
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026007(
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026008 WDI_RoamScanOffloadReqParamsType* pwdiRoamScanOffloadReqParams,
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026009 WDI_RoamOffloadScanCb wdiRoamOffloadScancb,
26010 void* pUserData
26011)
26012{
26013 WDI_EventInfoType wdiEventData = {{0}};
26014 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26015
26016 /*------------------------------------------------------------------------
26017 Sanity Check
26018 ------------------------------------------------------------------------*/
26019 if ( eWLAN_PAL_FALSE == gWDIInitialized )
26020 {
26021 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
26022 "WDI API call before module is initialized - Fail request");
26023
26024 return WDI_STATUS_E_NOT_ALLOWED;
26025 }
26026
26027 /*------------------------------------------------------------------------
26028 Fill in Event data and post to the Main FSM
26029 ------------------------------------------------------------------------*/
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026030 wdiEventData.wdiRequest = WDI_ROAM_SCAN_OFFLOAD_REQ;
26031 wdiEventData.pEventData = pwdiRoamScanOffloadReqParams;
26032 wdiEventData.uEventDataSize = sizeof(*pwdiRoamScanOffloadReqParams);
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026033 wdiEventData.pCBfnc = wdiRoamOffloadScancb;
26034 wdiEventData.pUserData = pUserData;
26035
26036 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
26037}
26038
26039void
26040WDI_wdiEdTypeEncToEdTypeEnc(tEdType *EdType, WDI_EdType wdiEdType)
26041{
26042 switch (wdiEdType)
26043 {
26044 case WDI_ED_NONE:
26045 *EdType = eED_NONE;
26046 break;
26047 case WDI_ED_WEP40:
26048 case WDI_ED_WEP104:
26049 *EdType = eED_WEP;
26050 break;
26051 case WDI_ED_TKIP:
26052 *EdType = eED_TKIP;
26053 break;
26054 case WDI_ED_CCMP:
26055#ifdef WLAN_FEATURE_11W
26056 case WDI_ED_AES_128_CMAC:
26057#endif
26058 *EdType = eED_CCMP;
26059 break;
26060#ifdef FEATURE_WLAN_WAPI
26061 case WDI_ED_WPI:
26062 *EdType = eED_WPI;
26063 break;
26064#endif
26065 case WDI_ED_ANY:
26066 *EdType = eED_ANY;
26067 break;
26068
26069 default:
26070 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
26071 "%s: Unknown Encryption Type", __func__);
26072 break;
26073 }
26074}
26075
26076/**
26077 @brief Helper function to pack Start Roam Candidate Lookup
26078 Request parameters
26079
26080 @param pWDICtx: pointer to the WLAN DAL context
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026081 pwdiRoamScanOffloadReqParams: pointer to the info received
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026082 from upper layers
26083 ppSendBuffer, pSize - out pointers of the packed buffer
26084 and its size
26085
26086 @return Result of the function call
26087*/
26088
26089WDI_Status
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026090WDI_PackRoamScanOffloadParams
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026091(
26092 WDI_ControlBlockType* pWDICtx,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026093 WDI_RoamScanOffloadReqParamsType* pwdiRoamScanOffloadReqParams,
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026094 wpt_uint8** ppSendBuffer,
26095 wpt_uint16* pSize
26096)
26097{
26098 wpt_uint8* pSendBuffer = NULL;
26099 wpt_uint16 usDataOffset = 0;
26100 wpt_uint16 usSendSize = 0;
26101 tpRoamCandidateListParams pRoamCandidateListParams = NULL;
26102 wpt_uint8 i;
26103 /*-----------------------------------------------------------------------
26104 Get message buffer
26105 -----------------------------------------------------------------------*/
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026106 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ROAM_SCAN_OFFLOAD_REQ,
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026107 sizeof(tRoamCandidateListParams),
26108 &pSendBuffer, &usDataOffset, &usSendSize))||
Varun Reddy Yeturu83952072013-06-03 11:31:52 -070026109 ( usSendSize < (usDataOffset + sizeof(tRoamCandidateListParams) )))
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026110 {
26111 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080026112 "Unable to get send buffer in Start Roam Candidate Lookup Req %p",
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026113 pwdiRoamScanOffloadReqParams);
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026114 WDI_ASSERT(0);
26115 return WDI_STATUS_E_FAILURE;
26116 }
26117 pRoamCandidateListParams = (tpRoamCandidateListParams)(pSendBuffer + usDataOffset);
Varun Reddy Yeturu83952072013-06-03 11:31:52 -070026118 wpalMemoryZero(pRoamCandidateListParams, sizeof(tRoamCandidateListParams));
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026119 pRoamCandidateListParams->RoamScanOffloadEnabled = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.RoamScanOffloadEnabled;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026120 wpalMemoryCopy(pRoamCandidateListParams->ConnectedNetwork.currAPbssid,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026121 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.currAPbssid,
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026122 HAL_MAC_ADDR_LEN);
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026123 pRoamCandidateListParams->ConnectedNetwork.authentication = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.authentication;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026124 WDI_wdiEdTypeEncToEdTypeEnc(&pRoamCandidateListParams->ConnectedNetwork.encryption,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026125 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.encryption);
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026126 WDI_wdiEdTypeEncToEdTypeEnc(&pRoamCandidateListParams->ConnectedNetwork.mcencryption,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026127 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.mcencryption);
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026128
26129 pRoamCandidateListParams->ConnectedNetwork.ssId.length
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026130 = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.ssId.ucLength;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026131 wpalMemoryCopy( pRoamCandidateListParams->ConnectedNetwork.ssId.ssId,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026132 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.ssId.sSSID,
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026133 pRoamCandidateListParams->ConnectedNetwork.ssId.length);
26134 wpalMemoryCopy(pRoamCandidateListParams->ConnectedNetwork.ChannelCache,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026135 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.ChannelCache,
26136 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.ChannelCount );
26137 pRoamCandidateListParams->ConnectedNetwork.ChannelCount = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.ChannelCount;
26138 pRoamCandidateListParams->ChannelCacheType = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ChannelCacheType ;
26139 pRoamCandidateListParams->LookupThreshold = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.LookupThreshold;
Varun Reddy Yeturu6c5e25c2014-01-09 21:55:37 -080026140 pRoamCandidateListParams->RxSensitivityThreshold = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.RxSensitivityThreshold;
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026141 pRoamCandidateListParams->RoamRssiDiff = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.RoamRssiDiff ;
Sameer Thalappil4ae66ec2013-11-05 14:17:35 -080026142 pRoamCandidateListParams->MAWCEnabled = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.MAWCEnabled ;
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026143 pRoamCandidateListParams->Command = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.Command ;
26144 pRoamCandidateListParams->StartScanReason = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.StartScanReason ;
26145 pRoamCandidateListParams->NeighborScanTimerPeriod = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.NeighborScanTimerPeriod ;
26146 pRoamCandidateListParams->NeighborRoamScanRefreshPeriod = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.NeighborRoamScanRefreshPeriod ;
26147 pRoamCandidateListParams->NeighborScanChannelMinTime = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.NeighborScanChannelMinTime ;
26148 pRoamCandidateListParams->NeighborScanChannelMaxTime = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.NeighborScanChannelMaxTime ;
26149 pRoamCandidateListParams->EmptyRefreshScanPeriod = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.EmptyRefreshScanPeriod ;
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -080026150 pRoamCandidateListParams->IsESEEnabled = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.IsESEEnabled ;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026151 wpalMemoryCopy(pRoamCandidateListParams->ValidChannelList,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026152 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ValidChannelList,
26153 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ValidChannelCount);
26154 pRoamCandidateListParams->ValidChannelCount = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ValidChannelCount;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026155
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026156 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO_HIGH,
26157 "Values are ssid = %s, RoamOffloadScan=%d,Command=%d,"
26158 "StartScanReason=%d,NeighborScanTimerPeriod=%d,"
26159 "NeighborRoamScanRefreshPeriod=%d,NeighborScanChannelMinTime=%d,"
26160 "NeighborScanChannelMaxTime = %d,EmptyRefreshScanPeriod=%d,"
26161 "mdiePresent=%d,MDID=%d, auth=%d, uce=%d, mce=%d, nProbes=%d,"
Arif Hussain9a5d5382013-11-17 22:05:35 -080026162 "HomeAwayTime=%d",
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026163 pRoamCandidateListParams->ConnectedNetwork.ssId.ssId,
26164 pRoamCandidateListParams->RoamScanOffloadEnabled,
26165 pRoamCandidateListParams->Command,
26166 pRoamCandidateListParams->StartScanReason,
26167 pRoamCandidateListParams->NeighborScanTimerPeriod,
26168 pRoamCandidateListParams->NeighborRoamScanRefreshPeriod,
26169 pRoamCandidateListParams->NeighborScanChannelMinTime,
26170 pRoamCandidateListParams->NeighborScanChannelMaxTime,
26171 pRoamCandidateListParams->EmptyRefreshScanPeriod,
26172 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.MDID.mdiePresent,
26173 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.MDID.mobilityDomain,
26174 pRoamCandidateListParams->ConnectedNetwork.authentication,
26175 pRoamCandidateListParams->ConnectedNetwork.encryption,
26176 pRoamCandidateListParams->ConnectedNetwork.mcencryption,
26177 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.nProbes,
26178 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.HomeAwayTime);
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026179 pRoamCandidateListParams->us24GProbeSize =
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026180 (pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.us24GProbeSize<
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026181 WLAN_HAL_ROAM_SCAN_MAX_PROBE_SIZE)?
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026182 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.us24GProbeSize:
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026183 WLAN_HAL_ROAM_SCAN_MAX_PROBE_SIZE;
26184 wpalMemoryCopy(pRoamCandidateListParams->a24GProbeTemplate,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026185 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.a24GProbeTemplate,
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026186 pRoamCandidateListParams->us24GProbeSize);
26187 pRoamCandidateListParams->us5GProbeSize =
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026188 (pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.us5GProbeSize<
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026189 WLAN_HAL_ROAM_SCAN_MAX_PROBE_SIZE)?
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026190 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.us5GProbeSize:
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026191 WLAN_HAL_ROAM_SCAN_MAX_PROBE_SIZE;
26192 wpalMemoryCopy(pRoamCandidateListParams->a5GProbeTemplate,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026193 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.a5GProbeTemplate,
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026194 pRoamCandidateListParams->us5GProbeSize);
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026195 pRoamCandidateListParams->MDID.mdiePresent = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.MDID.mdiePresent;
26196 pRoamCandidateListParams->MDID.mobilityDomain = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.MDID.mobilityDomain;
26197 pRoamCandidateListParams->nProbes =
26198 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.nProbes;
26199 pRoamCandidateListParams->HomeAwayTime =
26200 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.HomeAwayTime;
26201 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO_HIGH,"Valid Channel List");
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026202 for (i=0; i<pRoamCandidateListParams->ValidChannelCount ; i++)
26203 {
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026204 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO_HIGH,"%d", pRoamCandidateListParams->ValidChannelList[i]);
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026205 }
26206
26207
26208 /*Set the output values*/
26209 *ppSendBuffer = pSendBuffer;
26210 *pSize = usSendSize;
26211 return WDI_STATUS_SUCCESS;
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026212}/*WDI_PackRoamScanOffloadParams*/
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026213
26214/**
26215 @brief Process Start Roam Candidate Lookup Request function
26216
26217 @param pWDICtx: pointer to the WLAN DAL context
26218 pEventData: pointer to the event information structure
26219
26220 @return Result of the function call
26221*/
26222WDI_Status
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026223WDI_ProcessRoamScanOffloadReq
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026224(
26225 WDI_ControlBlockType* pWDICtx,
26226 WDI_EventInfoType* pEventData
26227)
26228{
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026229 WDI_RoamScanOffloadReqParamsType* pwdiRoamScanOffloadReqParams = NULL;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026230 WDI_RoamOffloadScanCb wdiRoamOffloadScancb = NULL;
26231 wpt_uint8* pSendBuffer = NULL;
26232 wpt_uint16 usSendSize = 0;
26233 WDI_Status wdiStatus;
26234 /*-------------------------------------------------------------------------
26235 Sanity check
26236 -------------------------------------------------------------------------*/
26237 if (( NULL == pEventData ) ||
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026238 ( NULL == (pwdiRoamScanOffloadReqParams = (WDI_RoamScanOffloadReqParamsType*)pEventData->pEventData)) ||
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026239 ( NULL == (wdiRoamOffloadScancb = (WDI_RoamOffloadScanCb)pEventData->pCBfnc)))
26240 {
26241 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
26242 "%s: Invalid parameters", __func__);
26243 WDI_ASSERT(0);
26244 return WDI_STATUS_E_FAILURE;
26245 }
26246
26247 /*-------------------------------------------------------------------------
26248 Pack the Start Roam Candidate Lookup request structure based on version
26249 -------------------------------------------------------------------------*/
26250 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
26251 "%s: Packing Roam Candidate Lookup request ", __func__);
26252
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026253 wdiStatus = WDI_PackRoamScanOffloadParams( pWDICtx, pwdiRoamScanOffloadReqParams,
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026254 &pSendBuffer, &usSendSize);
26255
26256 if (( WDI_STATUS_SUCCESS != wdiStatus )||
26257 ( NULL == pSendBuffer )||( 0 == usSendSize ))
26258 {
26259 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
26260 "%s: failed to pack request parameters", __func__);
26261 WDI_ASSERT(0);
26262 return wdiStatus;
26263 }
26264
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026265 pWDICtx->wdiReqStatusCB = pwdiRoamScanOffloadReqParams->wdiReqStatusCB;
26266 pWDICtx->pReqStatusUserData = pwdiRoamScanOffloadReqParams->pUserData;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026267
26268 /*-------------------------------------------------------------------------
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026269 Send WDI_ROAM_SCAN_OFFLOAD_REQ to HAL
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026270 -------------------------------------------------------------------------*/
26271 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026272 wdiRoamOffloadScancb, pEventData->pUserData, WDI_ROAM_SCAN_OFFLOAD_RESP);
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026273}
26274
26275/**
26276 @brief Process Start Roam Candidate Lookup Rsp function (called when a
26277 response is being received over the bus from HAL)
26278
26279 @param pWDICtx: pointer to the WLAN DAL context
26280 pEventData: pointer to the event information structure
26281
26282 @see
26283 @return Result of the function call
26284*/
26285WDI_Status
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026286WDI_ProcessRoamScanOffloadRsp
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026287(
26288 WDI_ControlBlockType* pWDICtx,
26289 WDI_EventInfoType* pEventData
26290)
26291{
26292 WDI_Status wdiStatus;
26293 eHalStatus halStatus;
26294 WDI_RoamOffloadScanCb wdiRoamOffloadScancb = NULL;
26295
26296 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26297
26298 /*-------------------------------------------------------------------------
26299 Sanity check
26300 -------------------------------------------------------------------------*/
26301 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
26302 ( NULL == pEventData->pEventData ))
26303 {
26304 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
26305 "%s: Invalid parameters", __func__);
26306 WDI_ASSERT(0);
26307 return WDI_STATUS_E_FAILURE;
26308 }
26309
26310 wdiRoamOffloadScancb = (WDI_RoamOffloadScanCb)pWDICtx->pfncRspCB;
26311
26312 /*-------------------------------------------------------------------------
26313 Extract response and send it to UMAC
26314 -------------------------------------------------------------------------*/
26315 halStatus = *((eHalStatus*)pEventData->pEventData);
26316 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
26317
26318 /*Notify UMAC*/
26319 wdiRoamOffloadScancb(wdiStatus, pWDICtx->pRspCBUserData);
26320
26321 return WDI_STATUS_SUCCESS;
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026322}/* WDI_ProcessRoamScanOffloadRsp */
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026323#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070026324
26325/**
26326 @brief Process Update Scan Params function
Jeff Johnsone7245742012-09-05 17:12:55 -070026327
26328 @param pWDICtx: pointer to the WLAN DAL context
26329 pEventData: pointer to the event information structure
26330
Jeff Johnson295189b2012-06-20 16:38:30 -070026331 @see
26332 @return Result of the function call
26333*/
26334WDI_Status
Pratik Bhalgatd4404592012-11-22 17:49:14 +053026335WDI_PackUpdateScanParamsReq
26336(
26337 WDI_ControlBlockType* pWDICtx,
26338 WDI_UpdateScanParamsInfoType* pwdiUpdateScanParams,
26339 wpt_uint8** ppSendBuffer,
26340 wpt_uint16* pSize
26341)
26342{
26343 wpt_uint8* pSendBuffer = NULL;
26344 wpt_uint16 usDataOffset = 0;
26345 wpt_uint16 usSendSize = 0;
26346 tUpdateScanParams updateScanParams = {0};
26347
26348
Varun Reddy Yeturuf68abd62013-02-11 14:05:06 -080026349 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Pratik Bhalgatd4404592012-11-22 17:49:14 +053026350 "Begin WDI Update Scan Parameters Old Style Params");
26351 /*-----------------------------------------------------------------------
26352 Get message buffer
26353 -----------------------------------------------------------------------*/
26354 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_SCAN_PARAMS_REQ,
26355 sizeof(updateScanParams),
26356 &pSendBuffer, &usDataOffset, &usSendSize))||
26357 ( usSendSize < (usDataOffset + sizeof(updateScanParams) )))
26358 {
26359 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080026360 "Unable to get send buffer in Update Scan Params req %p",
Pratik Bhalgatd4404592012-11-22 17:49:14 +053026361 pwdiUpdateScanParams);
26362 WDI_ASSERT(0);
26363 return WDI_STATUS_E_FAILURE;
26364 }
26365
26366 //
26367 // Fill updateScanParams from pwdiUpdateScanParams->wdiUpdateScanParamsInfo
26368 //
26369
26370 updateScanParams.b11dEnabled = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.b11dEnabled;
26371 updateScanParams.b11dResolved = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.b11dResolved;
26372
26373 updateScanParams.ucChannelCount =
26374 (pwdiUpdateScanParams->wdiUpdateScanParamsInfo.ucChannelCount <
26375 WLAN_HAL_PNO_MAX_NETW_CHANNELS)?
26376 pwdiUpdateScanParams->wdiUpdateScanParamsInfo.ucChannelCount :
26377 WLAN_HAL_PNO_MAX_NETW_CHANNELS;
26378
26379 wpalMemoryCopy( updateScanParams.aChannels,
26380 pwdiUpdateScanParams->wdiUpdateScanParamsInfo.aChannels,
26381 updateScanParams.ucChannelCount);
26382
26383
26384 updateScanParams.usActiveMinChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usActiveMinChTime;
26385 updateScanParams.usActiveMaxChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usActiveMaxChTime;
26386 updateScanParams.usPassiveMinChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usPassiveMinChTime;
26387 updateScanParams.usPassiveMaxChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usPassiveMaxChTime;
26388 updateScanParams.cbState = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.cbState;
26389
26390 wpalMemoryCopy( pSendBuffer+usDataOffset,
26391 &updateScanParams,
26392 sizeof(updateScanParams));
26393
26394 pWDICtx->wdiReqStatusCB = pwdiUpdateScanParams->wdiReqStatusCB;
26395 pWDICtx->pReqStatusUserData = pwdiUpdateScanParams->pUserData;
26396
Varun Reddy Yeturuf68abd62013-02-11 14:05:06 -080026397 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Pratik Bhalgatd4404592012-11-22 17:49:14 +053026398 "End Update Scan Parameters Old Style");
26399
26400 /*Set the output values*/
26401 *ppSendBuffer = pSendBuffer;
26402 *pSize = usSendSize;
26403
26404 return WDI_STATUS_SUCCESS;
26405}
26406
26407/**
26408 @brief Process Update Scan Params function
26409
26410 @param pWDICtx: pointer to the WLAN DAL context
26411 pEventData: pointer to the event information structure
26412
26413 @see
26414 @return Result of the function call
26415*/
26416WDI_Status
26417WDI_PackUpdateScanParamsReqEx
26418(
26419 WDI_ControlBlockType* pWDICtx,
26420 WDI_UpdateScanParamsInfoType* pwdiUpdateScanParams,
26421 wpt_uint8** ppSendBuffer,
26422 wpt_uint16* pSize
26423)
26424{
26425 wpt_uint8* pSendBuffer = NULL;
26426 wpt_uint16 usDataOffset = 0;
26427 wpt_uint16 usSendSize = 0;
26428 tUpdateScanParamsEx updateScanParams = {0};
26429
26430
Pratik Bhalgatd4404592012-11-22 17:49:14 +053026431 /*-----------------------------------------------------------------------
26432 Get message buffer
26433 -----------------------------------------------------------------------*/
26434 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_SCAN_PARAMS_REQ,
26435 sizeof(updateScanParams),
26436 &pSendBuffer, &usDataOffset, &usSendSize))||
26437 ( usSendSize < (usDataOffset + sizeof(updateScanParams) )))
26438 {
26439 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080026440 "Unable to get send buffer in Update Scan Params Ex req %p",
Pratik Bhalgatd4404592012-11-22 17:49:14 +053026441 pwdiUpdateScanParams);
26442 WDI_ASSERT(0);
26443 return WDI_STATUS_E_FAILURE;
26444 }
26445
26446 //
26447 // Fill updateScanParams from pwdiUpdateScanParams->wdiUpdateScanParamsInfo
26448 //
26449
26450 updateScanParams.b11dEnabled = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.b11dEnabled;
26451 updateScanParams.b11dResolved = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.b11dResolved;
26452
26453 updateScanParams.ucChannelCount =
26454 (pwdiUpdateScanParams->wdiUpdateScanParamsInfo.ucChannelCount <
26455 WLAN_HAL_PNO_MAX_NETW_CHANNELS_EX)?
26456 pwdiUpdateScanParams->wdiUpdateScanParamsInfo.ucChannelCount :
26457 WLAN_HAL_PNO_MAX_NETW_CHANNELS_EX;
26458
26459 wpalMemoryCopy( updateScanParams.aChannels,
26460 pwdiUpdateScanParams->wdiUpdateScanParamsInfo.aChannels,
26461 updateScanParams.ucChannelCount);
26462
26463
26464 updateScanParams.usActiveMinChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usActiveMinChTime;
26465 updateScanParams.usActiveMaxChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usActiveMaxChTime;
26466 updateScanParams.usPassiveMinChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usPassiveMinChTime;
26467 updateScanParams.usPassiveMaxChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usPassiveMaxChTime;
26468 updateScanParams.cbState = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.cbState;
26469
26470 wpalMemoryCopy( pSendBuffer+usDataOffset,
26471 &updateScanParams,
26472 sizeof(updateScanParams));
26473
26474 pWDICtx->wdiReqStatusCB = pwdiUpdateScanParams->wdiReqStatusCB;
26475 pWDICtx->pReqStatusUserData = pwdiUpdateScanParams->pUserData;
26476
Pratik Bhalgatd4404592012-11-22 17:49:14 +053026477 /*Set the output values*/
26478 *ppSendBuffer = pSendBuffer;
26479 *pSize = usSendSize;
26480
26481 return WDI_STATUS_SUCCESS;
26482}
26483
26484/**
26485 @brief Process Update Scan Params function
26486
26487 @param pWDICtx: pointer to the WLAN DAL context
26488 pEventData: pointer to the event information structure
26489
26490 @see
26491 @return Result of the function call
26492*/
26493WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070026494WDI_ProcessUpdateScanParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070026495(
Jeff Johnson295189b2012-06-20 16:38:30 -070026496 WDI_ControlBlockType* pWDICtx,
26497 WDI_EventInfoType* pEventData
26498)
26499{
26500 WDI_UpdateScanParamsInfoType* pwdiUpdateScanParams = NULL;
26501 WDI_UpdateScanParamsCb wdiUpdateScanParamsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070026502 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070026503 wpt_uint16 usSendSize = 0;
Pullela Naga Venkata Sai Ravaliab91c6b2012-12-27 17:31:42 -080026504 WDI_Status wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070026505
26506 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026507 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070026508 -------------------------------------------------------------------------*/
26509 if (( NULL == pEventData ) ||
26510 ( NULL == (pwdiUpdateScanParams = (WDI_UpdateScanParamsInfoType*)pEventData->pEventData)) ||
26511 ( NULL == (wdiUpdateScanParamsCb = (WDI_UpdateScanParamsCb)pEventData->pCBfnc)))
26512 {
26513 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026514 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026515 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026516 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026517 }
26518
26519 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
26520 "Begin WDI Update Scan Parameters");
Jeff Johnson295189b2012-06-20 16:38:30 -070026521
26522 //
26523 // Fill updateScanParams from pwdiUpdateScanParams->wdiUpdateScanParamsInfo
26524 //
Pratik Bhalgatd4404592012-11-22 17:49:14 +053026525 if ( pWDICtx->wlanVersion.revision < 1 )
26526 {
Pullela Naga Venkata Sai Ravaliab91c6b2012-12-27 17:31:42 -080026527 wdiStatus = WDI_PackUpdateScanParamsReq( pWDICtx, pwdiUpdateScanParams,
Pratik Bhalgatd4404592012-11-22 17:49:14 +053026528 &pSendBuffer, &usSendSize);
26529 }
26530 else
26531 {
Pullela Naga Venkata Sai Ravaliab91c6b2012-12-27 17:31:42 -080026532 wdiStatus = WDI_PackUpdateScanParamsReqEx( pWDICtx, pwdiUpdateScanParams,
26533 &pSendBuffer, &usSendSize);
26534 }
26535
26536 if(WDI_STATUS_SUCCESS != wdiStatus)
26537 {
26538 //memory allocation failed
26539 return WDI_STATUS_E_FAILURE;
Pratik Bhalgatd4404592012-11-22 17:49:14 +053026540 }
Jeff Johnson295189b2012-06-20 16:38:30 -070026541
Jeff Johnson295189b2012-06-20 16:38:30 -070026542 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026543 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070026544 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070026545 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Pratik Bhalgatd4404592012-11-22 17:49:14 +053026546 wdiUpdateScanParamsCb, pEventData->pUserData,
26547 WDI_UPDATE_SCAN_PARAMS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070026548}
26549
26550/**
Manjunathappa Prakash86f78ca2014-02-10 18:09:15 -080026551 @brief Process Update Channel Params function
26552
26553 @param pWDICtx: pointer to the WLAN DAL context
26554 pEventData: pointer to the event information structure
26555
26556 @see
26557 @return Result of the function call
26558*/
26559WDI_Status
26560WDI_ProcessUpdateChannelParamsReq
26561(
26562 WDI_ControlBlockType* pWDICtx,
26563 WDI_EventInfoType* pEventData
26564)
26565{
26566 WDI_UpdateChReqParamsType *pwdiUpdateChanListParams = NULL;
26567 WDI_UpdateChannelRspCb wdiUpdateChanParamsCb = NULL;
26568 wpt_uint8* pSendBuffer = NULL;
26569 wpt_uint16 usDataOffset = 0;
26570 wpt_uint16 usSendSize = 0;
26571 tUpdateChannelReqType *updateChannelParams;
26572 wpt_uint32 usUpdateChanParamSize;
26573 wpt_uint8 num_channels = 0;
26574
26575 /*-------------------------------------------------------------------------
26576 Sanity check
26577 -------------------------------------------------------------------------*/
26578 if (( NULL == pEventData ) ||
26579 ( NULL == (pwdiUpdateChanListParams = (WDI_UpdateChReqParamsType*)pEventData->pEventData)) ||
26580 ( NULL == (wdiUpdateChanParamsCb = (WDI_UpdateChannelRspCb)pEventData->pCBfnc)))
26581 {
26582 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
26583 "%s: Invalid parameters", __func__);
26584 WDI_ASSERT(0);
26585 return WDI_STATUS_E_FAILURE;
26586 }
26587 num_channels = pwdiUpdateChanListParams->wdiUpdateChanParams.numchan;
Abhishek Singhf644b272014-08-21 02:59:39 +053026588 usUpdateChanParamSize = sizeof(tUpdateChannelReqType);
Manjunathappa Prakash86f78ca2014-02-10 18:09:15 -080026589
26590 /*-----------------------------------------------------------------------
26591 Get message buffer
26592 -----------------------------------------------------------------------*/
26593 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
26594 WDI_UPDATE_CHAN_REQ, usUpdateChanParamSize,
26595 &pSendBuffer, &usDataOffset, &usSendSize))||
26596 ( usSendSize < (usDataOffset + usUpdateChanParamSize)))
26597 {
26598 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
26599 "Unable to get send buffer in Update Channel Params req %p",
26600 pwdiUpdateChanListParams);
26601 WDI_ASSERT(0);
26602 return WDI_STATUS_E_FAILURE;
26603 }
26604 updateChannelParams = (tUpdateChannelReqType *)(pSendBuffer + usDataOffset);
26605
26606 updateChannelParams->numChan = num_channels;
26607 wpalMemoryCopy(&updateChannelParams->chanParam,
26608 pwdiUpdateChanListParams->wdiUpdateChanParams.pchanParam,
26609 sizeof(WDI_UpdateChannelReqinfoType) * num_channels);
26610
26611 pWDICtx->wdiReqStatusCB = pwdiUpdateChanListParams->wdiReqStatusCB;
26612 pWDICtx->pReqStatusUserData = pwdiUpdateChanListParams->pUserData;
26613
26614 /*-------------------------------------------------------------------------
26615 Send Update channel request to fw
26616 -------------------------------------------------------------------------*/
26617 return WDI_SendMsg(pWDICtx, pSendBuffer, usSendSize,
26618 wdiUpdateChanParamsCb, pEventData->pUserData,
26619 WDI_UPDATE_CHAN_RESP);
26620}
26621
26622/**
Jeff Johnson295189b2012-06-20 16:38:30 -070026623 @brief Process Preferred Network Found Indication function
Jeff Johnsone7245742012-09-05 17:12:55 -070026624
26625 @param pWDICtx: pointer to the WLAN DAL context
26626 pEventData: pointer to the event information structure
26627
Jeff Johnson295189b2012-06-20 16:38:30 -070026628 @see
26629 @return Result of the function call
26630*/
26631WDI_Status
26632WDI_ProcessPrefNetworkFoundInd
Jeff Johnsone7245742012-09-05 17:12:55 -070026633(
Jeff Johnson295189b2012-06-20 16:38:30 -070026634 WDI_ControlBlockType* pWDICtx,
26635 WDI_EventInfoType* pEventData
26636)
26637{
Srikant Kuppa066904f2013-05-07 13:56:02 -070026638 WDI_LowLevelIndType wdiInd;
26639 tpPrefNetwFoundParams pNetwFoundParams;
26640 wpt_uint32 msgsize;
Jeff Johnson295189b2012-06-20 16:38:30 -070026641
26642
26643 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026644 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070026645 -------------------------------------------------------------------------*/
26646 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
26647 ( NULL == pEventData->pEventData ))
26648 {
26649 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026650 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026651 WDI_ASSERT( 0 );
Jeff Johnsone7245742012-09-05 17:12:55 -070026652 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026653 }
26654
26655 /*-------------------------------------------------------------------------
26656 Extract indication and send it to UMAC
26657 -------------------------------------------------------------------------*/
Srikant Kuppa066904f2013-05-07 13:56:02 -070026658 pNetwFoundParams = (tpPrefNetwFoundParams)(pEventData->pEventData);
26659
26660 msgsize = sizeof(tPrefNetwFoundParams) + pNetwFoundParams->frameLength;
26661 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.pData =
26662 (wpt_uint8 *)wpalMemoryAllocate(msgsize);
26663
26664 if (NULL == wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.pData)
26665 {
26666 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
26667 "%s: fail to allocate memory", __func__);
26668 return WDI_STATUS_MEM_FAILURE;
26669 }
26670
26671 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.ucLength =
26672 (pNetwFoundParams->ssId.length < 32 )?
26673 pNetwFoundParams->ssId.length : 32;
26674 wpalMemoryCopy( wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.sSSID,
26675 pNetwFoundParams->ssId.ssId,
26676 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.ucLength);
26677 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.rssi = pNetwFoundParams->rssi;
26678 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.frameLength =
26679 pNetwFoundParams->frameLength;
26680 wpalMemoryCopy( wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.pData,
26681 (wpt_uint8 *)pEventData->pEventData + sizeof(tPrefNetwFoundParams),
26682 pNetwFoundParams->frameLength);
Jeff Johnson295189b2012-06-20 16:38:30 -070026683
26684 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070026685 wdiInd.wdiIndicationType = WDI_PREF_NETWORK_FOUND_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070026686
Jeff Johnson295189b2012-06-20 16:38:30 -070026687 // DEBUG
26688 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Sushant Kaushik1b645382014-10-13 16:39:36 +053026689 "[PNO WDI] PREF_NETWORK_FOUND_IND Type (%d) data (SSID=%.*s, LENGTH=%u, RSSI=%u)",
Jeff Johnson295189b2012-06-20 16:38:30 -070026690 wdiInd.wdiIndicationType,
Wilson Yang56002a22013-08-28 17:55:56 -070026691 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.ucLength,
Jeff Johnson295189b2012-06-20 16:38:30 -070026692 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.sSSID,
Wilson Yang56002a22013-08-28 17:55:56 -070026693 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.ucLength,
Jeff Johnson295189b2012-06-20 16:38:30 -070026694 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.rssi );
26695
ltimariub77f24b2013-01-24 18:54:33 -080026696 if ( pWDICtx->wdiLowLevelIndCB )
26697 {
26698 /*Notify UMAC*/
26699 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
26700 }
Jeff Johnsone7245742012-09-05 17:12:55 -070026701
26702 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070026703}
26704
26705/**
26706 @brief Process PNO Rsp function (called when a
26707 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070026708
26709 @param pWDICtx: pointer to the WLAN DAL context
26710 pEventData: pointer to the event information structure
26711
Jeff Johnson295189b2012-06-20 16:38:30 -070026712 @see
26713 @return Result of the function call
26714*/
26715WDI_Status
26716WDI_ProcessSetPreferredNetworkRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070026717(
Jeff Johnson295189b2012-06-20 16:38:30 -070026718 WDI_ControlBlockType* pWDICtx,
26719 WDI_EventInfoType* pEventData
26720)
26721{
26722 WDI_Status wdiStatus;
26723 eHalStatus halStatus;
26724 WDI_PNOScanCb wdiPNOScanCb = NULL;
26725 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26726
26727 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026728 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070026729 -------------------------------------------------------------------------*/
26730 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
26731 ( NULL == pEventData->pEventData ))
26732 {
26733 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026734 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026735 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026736 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026737 }
26738
26739
Jeff Johnsone7245742012-09-05 17:12:55 -070026740 wdiPNOScanCb = (WDI_PNOScanCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070026741
26742 /*-------------------------------------------------------------------------
26743 Extract response and send it to UMAC
26744 -------------------------------------------------------------------------*/
26745 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070026746 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070026747
26748 /*Notify UMAC*/
26749 wdiPNOScanCb(wdiStatus, pWDICtx->pRspCBUserData);
26750
Jeff Johnsone7245742012-09-05 17:12:55 -070026751 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070026752}/*WDI_ProcessSetPreferredNetworkRsp*/
26753
26754/**
26755 @brief Process RSSI Filter Rsp function (called when a
26756 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070026757
26758 @param pWDICtx: pointer to the WLAN DAL context
26759 pEventData: pointer to the event information structure
26760
Jeff Johnson295189b2012-06-20 16:38:30 -070026761 @see
26762 @return Result of the function call
26763*/
26764WDI_Status
26765WDI_ProcessSetRssiFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070026766(
Jeff Johnson295189b2012-06-20 16:38:30 -070026767 WDI_ControlBlockType* pWDICtx,
26768 WDI_EventInfoType* pEventData
26769)
26770{
26771 WDI_Status wdiStatus;
26772 eHalStatus halStatus;
26773 WDI_RssiFilterCb wdiRssiFilterCb;
26774 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26775
26776 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026777 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070026778 -------------------------------------------------------------------------*/
26779 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
26780 ( NULL == pEventData->pEventData ))
26781 {
26782 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026783 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026784 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026785 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026786 }
26787
Jeff Johnsone7245742012-09-05 17:12:55 -070026788 wdiRssiFilterCb = (WDI_RssiFilterCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070026789
26790 /*-------------------------------------------------------------------------
26791 Extract response and send it to UMAC
26792 -------------------------------------------------------------------------*/
26793 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070026794 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070026795
26796 /*Notify UMAC*/
26797 wdiRssiFilterCb(wdiStatus, pWDICtx->pRspCBUserData);
26798
Jeff Johnsone7245742012-09-05 17:12:55 -070026799 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070026800}/*WDI_ProcessSetRssiFilterRsp*/
26801
26802/**
26803 @brief Process Update Scan Params Rsp function (called when a
26804 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070026805
26806 @param pWDICtx: pointer to the WLAN DAL context
26807 pEventData: pointer to the event information structure
26808
Jeff Johnson295189b2012-06-20 16:38:30 -070026809 @see
26810 @return Result of the function call
26811*/
26812WDI_Status
26813WDI_ProcessUpdateScanParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070026814(
Jeff Johnson295189b2012-06-20 16:38:30 -070026815 WDI_ControlBlockType* pWDICtx,
26816 WDI_EventInfoType* pEventData
26817)
26818{
26819 WDI_Status wdiStatus;
Jeff Johnsone7245742012-09-05 17:12:55 -070026820 tUpdateScanParamsResp halUpdScanParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070026821 WDI_UpdateScanParamsCb wdiUpdateScanParamsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070026822 wpt_uint32 uStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070026823 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26824
26825 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026826 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070026827 -------------------------------------------------------------------------*/
26828 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
26829 ( NULL == pEventData->pEventData ))
26830 {
26831 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026832 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026833 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026834 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026835 }
26836
26837 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080026838 "%s: Process UPD scan params ptr : %p",
26839 __func__, pEventData->pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070026840
Jeff Johnsone7245742012-09-05 17:12:55 -070026841 wdiUpdateScanParamsCb = (WDI_UpdateScanParamsCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070026842
26843 /*-------------------------------------------------------------------------
26844 Extract response and send it to UMAC
26845 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070026846 wpalMemoryCopy( (void *)&halUpdScanParams.status,
26847 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070026848 sizeof(halUpdScanParams.status));
26849
26850 uStatus = halUpdScanParams.status;
26851
26852 /*Extract PNO version - 1st bit of the status */
Jeff Johnsone7245742012-09-05 17:12:55 -070026853 pWDICtx->wdiPNOVersion = (uStatus & WDI_PNO_VERSION_MASK)? 1:0;
Jeff Johnson295189b2012-06-20 16:38:30 -070026854
26855 /*Remove version bit*/
Jeff Johnsone7245742012-09-05 17:12:55 -070026856 uStatus = uStatus & ( ~(WDI_PNO_VERSION_MASK));
Jeff Johnson295189b2012-06-20 16:38:30 -070026857
Jeff Johnsone7245742012-09-05 17:12:55 -070026858 wdiStatus = WDI_HAL_2_WDI_STATUS(uStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070026859
26860 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070026861 "UPD Scan Parameters rsp with status: %d",
Jeff Johnson295189b2012-06-20 16:38:30 -070026862 halUpdScanParams.status);
26863
26864 /*Notify UMAC*/
26865 wdiUpdateScanParamsCb(wdiStatus, pWDICtx->pRspCBUserData);
26866
Jeff Johnsone7245742012-09-05 17:12:55 -070026867 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070026868}
26869#endif // FEATURE_WLAN_SCAN_PNO
26870
26871#ifdef WLAN_FEATURE_PACKET_FILTERING
Jeff Johnsone7245742012-09-05 17:12:55 -070026872WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070026873WDI_8023MulticastListReq
26874(
26875 WDI_RcvFltPktSetMcListReqParamsType* pwdiRcvFltPktSetMcListReqInfo,
26876 WDI_8023MulticastListCb wdi8023MulticastListCallback,
26877 void* pUserData
26878)
26879{
26880 WDI_EventInfoType wdiEventData;
26881 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26882
26883 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026884 "%s", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026885
26886 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026887 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070026888 ------------------------------------------------------------------------*/
26889 if ( eWLAN_PAL_FALSE == gWDIInitialized )
26890 {
26891 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
26892 "WDI API call before module is initialized - Fail request");
26893
Jeff Johnsone7245742012-09-05 17:12:55 -070026894 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070026895 }
26896
26897 /*------------------------------------------------------------------------
26898 Fill in Event data and post to the Main FSM
26899 ------------------------------------------------------------------------*/
26900 wdiEventData.wdiRequest = WDI_8023_MULTICAST_LIST_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070026901 wdiEventData.pEventData = pwdiRcvFltPktSetMcListReqInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070026902 wdiEventData.uEventDataSize = sizeof(*pwdiRcvFltPktSetMcListReqInfo);
Jeff Johnsone7245742012-09-05 17:12:55 -070026903 wdiEventData.pCBfnc = wdi8023MulticastListCallback;
Jeff Johnson295189b2012-06-20 16:38:30 -070026904 wdiEventData.pUserData = pUserData;
26905
26906 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
26907}
26908
Jeff Johnsone7245742012-09-05 17:12:55 -070026909WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070026910WDI_ReceiveFilterSetFilterReq
26911(
26912 WDI_SetRcvPktFilterReqParamsType* pwdiSetRcvPktFilterReqInfo,
26913 WDI_ReceiveFilterSetFilterCb wdiReceiveFilterSetFilterCallback,
26914 void* pUserData
26915)
26916{
26917 WDI_EventInfoType wdiEventData;
26918 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26919
26920 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026921 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026922
26923 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026924 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070026925 ------------------------------------------------------------------------*/
26926 if ( eWLAN_PAL_FALSE == gWDIInitialized )
26927 {
26928 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
26929 "WDI API call before module is initialized - Fail request");
26930
Jeff Johnsone7245742012-09-05 17:12:55 -070026931 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070026932 }
26933
26934 /*------------------------------------------------------------------------
26935 Fill in Event data and post to the Main FSM
26936 ------------------------------------------------------------------------*/
26937 wdiEventData.wdiRequest = WDI_RECEIVE_FILTER_SET_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070026938 wdiEventData.pEventData = pwdiSetRcvPktFilterReqInfo;
26939 wdiEventData.uEventDataSize = sizeof(*pwdiSetRcvPktFilterReqInfo) +
Yue Ma13cf95c2013-03-18 18:05:27 -070026940 (pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams - 1)
26941 * sizeof(WDI_RcvPktFilterFieldParams);
Jeff Johnsone7245742012-09-05 17:12:55 -070026942 wdiEventData.pCBfnc = wdiReceiveFilterSetFilterCallback;
Jeff Johnson295189b2012-06-20 16:38:30 -070026943 wdiEventData.pUserData = pUserData;
26944
26945
26946 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
26947}
26948
Jeff Johnsone7245742012-09-05 17:12:55 -070026949WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070026950WDI_FilterMatchCountReq
26951(
26952 WDI_RcvFltPktMatchCntReqParamsType* pwdiRcvFltPktMatchCntReqInfo,
26953 WDI_FilterMatchCountCb wdiFilterMatchCountCallback,
26954 void* pUserData
26955)
26956{
26957 WDI_EventInfoType wdiEventData;
26958 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26959
26960 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026961 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026962
26963 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026964 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070026965 ------------------------------------------------------------------------*/
26966 if ( eWLAN_PAL_FALSE == gWDIInitialized )
26967 {
26968 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
26969 "WDI API call before module is initialized - Fail request");
26970
Jeff Johnsone7245742012-09-05 17:12:55 -070026971 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070026972 }
26973
26974 /*------------------------------------------------------------------------
26975 Fill in Event data and post to the Main FSM
26976 ------------------------------------------------------------------------*/
26977 wdiEventData.wdiRequest = WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070026978 wdiEventData.pEventData = pwdiRcvFltPktMatchCntReqInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070026979 wdiEventData.uEventDataSize = sizeof(*pwdiRcvFltPktMatchCntReqInfo);
Jeff Johnsone7245742012-09-05 17:12:55 -070026980 wdiEventData.pCBfnc = wdiFilterMatchCountCallback;
Jeff Johnson295189b2012-06-20 16:38:30 -070026981 wdiEventData.pUserData = pUserData;
26982
26983
26984 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
26985}
26986
Jeff Johnsone7245742012-09-05 17:12:55 -070026987WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070026988WDI_ReceiveFilterClearFilterReq
26989(
26990 WDI_RcvFltPktClearReqParamsType* pwdiRcvFltPktClearReqInfo,
26991 WDI_ReceiveFilterClearFilterCb wdiReceiveFilterClearFilterCallback,
26992 void* pUserData
26993)
26994{
26995 WDI_EventInfoType wdiEventData;
26996 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26997
26998 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026999 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027000
27001 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027002 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070027003 ------------------------------------------------------------------------*/
27004 if ( eWLAN_PAL_FALSE == gWDIInitialized )
27005 {
27006 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
27007 "WDI API call before module is initialized - Fail request");
27008
Jeff Johnsone7245742012-09-05 17:12:55 -070027009 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070027010 }
27011
27012 /*------------------------------------------------------------------------
27013 Fill in Event data and post to the Main FSM
27014 ------------------------------------------------------------------------*/
27015 wdiEventData.wdiRequest = WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070027016 wdiEventData.pEventData = pwdiRcvFltPktClearReqInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070027017 wdiEventData.uEventDataSize = sizeof(*pwdiRcvFltPktClearReqInfo);
Jeff Johnsone7245742012-09-05 17:12:55 -070027018 wdiEventData.pCBfnc = wdiReceiveFilterClearFilterCallback;
Jeff Johnson295189b2012-06-20 16:38:30 -070027019 wdiEventData.pUserData = pUserData;
27020
27021
27022 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
27023}
27024
27025/**
27026 @brief Process 8023 Multicast List Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070027027
27028 @param pWDICtx: pointer to the WLAN DAL context
27029 pEventData: pointer to the event information structure
27030
Jeff Johnson295189b2012-06-20 16:38:30 -070027031 @see
27032 @return Result of the function call
27033*/
27034WDI_Status
27035WDI_Process8023MulticastListReq
Jeff Johnsone7245742012-09-05 17:12:55 -070027036(
Jeff Johnson295189b2012-06-20 16:38:30 -070027037 WDI_ControlBlockType* pWDICtx,
27038 WDI_EventInfoType* pEventData
27039)
27040{
27041 WDI_RcvFltPktSetMcListReqParamsType* pwdiFltPktSetMcListReqParamsType = NULL;
27042 WDI_8023MulticastListCb wdi8023MulticastListCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070027043 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070027044 wpt_uint16 usDataOffset = 0;
27045 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070027046 tpHalRcvFltMcAddrListType pRcvFltMcAddrListType;
Jeff Johnson295189b2012-06-20 16:38:30 -070027047 wpt_uint8 i;
Jeff Johnsone7245742012-09-05 17:12:55 -070027048 wpt_uint8 ucCurrentBSSSesIdx = 0;
27049 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070027050
27051 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027052 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027053
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070027054 pRcvFltMcAddrListType = wpalMemoryAllocate(sizeof(tHalRcvFltMcAddrListType)) ;
27055 if( NULL == pRcvFltMcAddrListType )
27056 {
27057 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
27058 "Failed to alloc in WDI_Process8023MulticastListReq");
27059 return WDI_STATUS_E_FAILURE;
27060 }
27061
Jeff Johnson295189b2012-06-20 16:38:30 -070027062 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027063 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070027064 -------------------------------------------------------------------------*/
27065 if (( NULL == pEventData ) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070027066 ( NULL == (pwdiFltPktSetMcListReqParamsType =
Jeff Johnson295189b2012-06-20 16:38:30 -070027067 (WDI_RcvFltPktSetMcListReqParamsType*)pEventData->pEventData)) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070027068 ( NULL == (wdi8023MulticastListCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070027069 (WDI_8023MulticastListCb)pEventData->pCBfnc)))
27070 {
27071 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027072 "%s: Invalid parameters", __func__);
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070027073 wpalMemoryFree(pRcvFltMcAddrListType);
Jeff Johnson295189b2012-06-20 16:38:30 -070027074 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070027075 return WDI_STATUS_E_FAILURE;
27076 }
27077
27078 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
27079 pwdiFltPktSetMcListReqParamsType->mcAddrList.bssId,
27080 &pBSSSes);
27081 if ( NULL == pBSSSes )
27082 {
27083 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027084 " %s : Association for this BSSID does not exist",__func__);
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070027085 wpalMemoryFree(pRcvFltMcAddrListType);
Jeff Johnsone7245742012-09-05 17:12:55 -070027086 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070027087 }
27088
27089 /*-----------------------------------------------------------------------
27090 Get message buffer
27091 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070027092 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
27093 WDI_8023_MULTICAST_LIST_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070027094 sizeof(tHalRcvFltMcAddrListType),
27095 &pSendBuffer, &usDataOffset, &usSendSize))||
27096 ( usSendSize < (usDataOffset + sizeof(tHalRcvFltMcAddrListType))))
27097 {
27098 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
27099 "Unable to get send buffer in "
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080027100 "WDI_Process8023MulticastListReq() %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070027101 pEventData, pwdiFltPktSetMcListReqParamsType,
27102 wdi8023MulticastListCb);
Yue Mad8cac142013-03-28 11:33:46 -070027103 wpalMemoryFree(pRcvFltMcAddrListType);
Jeff Johnson295189b2012-06-20 16:38:30 -070027104 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070027105 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070027106 }
27107
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070027108 pRcvFltMcAddrListType->cMulticastAddr =
Jeff Johnsone7245742012-09-05 17:12:55 -070027109 pwdiFltPktSetMcListReqParamsType->mcAddrList.ulMulticastAddrCnt;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070027110 for( i = 0; i < pRcvFltMcAddrListType->cMulticastAddr; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070027111 {
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070027112 wpalMemoryCopy(pRcvFltMcAddrListType->multicastAddr[i],
Jeff Johnson295189b2012-06-20 16:38:30 -070027113 pwdiFltPktSetMcListReqParamsType->mcAddrList.multicastAddr[i],
27114 sizeof(tSirMacAddr));
27115 }
27116
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070027117 pRcvFltMcAddrListType->bssIdx = pBSSSes->ucBSSIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070027118 wpalMemoryCopy( pSendBuffer+usDataOffset,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070027119 pRcvFltMcAddrListType,
27120 sizeof(tHalRcvFltMcAddrListType));
Jeff Johnson295189b2012-06-20 16:38:30 -070027121
27122 pWDICtx->wdiReqStatusCB = pwdiFltPktSetMcListReqParamsType->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070027123 pWDICtx->pReqStatusUserData = pwdiFltPktSetMcListReqParamsType->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070027124
27125
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070027126 wpalMemoryFree(pRcvFltMcAddrListType);
Jeff Johnson295189b2012-06-20 16:38:30 -070027127 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027128 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070027129 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070027130 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070027131 wdi8023MulticastListCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -070027132 WDI_8023_MULTICAST_LIST_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070027133}
27134
27135/**
27136 @brief Process Receive Filter Set Filter Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070027137
27138 @param pWDICtx: pointer to the WLAN DAL context
27139 pEventData: pointer to the event information structure
27140
Jeff Johnson295189b2012-06-20 16:38:30 -070027141 @see
27142 @return Result of the function call
27143*/
27144WDI_Status
27145WDI_ProcessReceiveFilterSetFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070027146(
Jeff Johnson295189b2012-06-20 16:38:30 -070027147 WDI_ControlBlockType* pWDICtx,
27148 WDI_EventInfoType* pEventData
27149)
27150{
27151 WDI_SetRcvPktFilterReqParamsType* pwdiSetRcvPktFilterReqInfo = NULL;
27152 WDI_ReceiveFilterSetFilterCb wdiReceiveFilterSetFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070027153 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070027154 wpt_uint16 usDataOffset = 0;
27155 wpt_uint16 usSendSize = 0;
27156 wpt_uint32 usRcvPktFilterCfgSize;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027157 tHalRcvPktFilterCfgType *pRcvPktFilterCfg = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070027158 wpt_uint8 i;
Jeff Johnsone7245742012-09-05 17:12:55 -070027159 wpt_uint8 ucCurrentBSSSesIdx = 0;
27160 WDI_BSSSessionType* pBSSSes = NULL;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027161 tHalSessionizedRcvPktFilterCfgType *pSessRcvPktFilterCfg = NULL;
27162 wpt_uint32 usSessRcvPktFilterCfgSize;
Jeff Johnson295189b2012-06-20 16:38:30 -070027163
27164 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027165 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027166
27167 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027168 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070027169 -------------------------------------------------------------------------*/
27170 if (( NULL == pEventData ) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070027171 ( NULL == (pwdiSetRcvPktFilterReqInfo =
Jeff Johnson295189b2012-06-20 16:38:30 -070027172 (WDI_SetRcvPktFilterReqParamsType*)pEventData->pEventData)) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070027173 ( NULL == (wdiReceiveFilterSetFilterCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070027174 (WDI_ReceiveFilterSetFilterCb)pEventData->pCBfnc)))
27175 {
27176 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027177 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027178 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070027179 return WDI_STATUS_E_FAILURE;
27180 }
27181
27182 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
27183 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.bssId,
27184 &pBSSSes);
27185 if ( NULL == pBSSSes )
27186 {
27187 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027188 " %s : Association for this BSSID does not exist",__func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070027189 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070027190 }
27191
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027192 if( WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION) )
27193 {
Jeff Johnson295189b2012-06-20 16:38:30 -070027194
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027195 usSessRcvPktFilterCfgSize = sizeof(tHalSessionizedRcvPktFilterCfgType) +
27196 ((pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams - 1)
27197 * sizeof(tHalSessionizedRcvPktFilterCfgType));
27198
27199 pSessRcvPktFilterCfg = (tHalSessionizedRcvPktFilterCfgType *)wpalMemoryAllocate(
27200 usSessRcvPktFilterCfgSize);
27201
27202 if(NULL == pSessRcvPktFilterCfg)
27203 {
27204 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
27205 "%s: Failed to allocate memory for "
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080027206 "tHalRcvPktFilterCfgType: %p %p %p ",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027207 __func__, pWDICtx, pEventData, pEventData->pEventData);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027208 WDI_ASSERT(0);
27209 return WDI_STATUS_E_FAILURE;
27210 }
27211
27212 wpalMemoryZero(pSessRcvPktFilterCfg, usSessRcvPktFilterCfgSize);
27213
27214 /*-----------------------------------------------------------------------
27215 Get message buffer
27216 -----------------------------------------------------------------------*/
27217
27218 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_RECEIVE_FILTER_SET_FILTER_REQ,
27219 usSessRcvPktFilterCfgSize,
27220 &pSendBuffer, &usDataOffset, &usSendSize))||
27221 ( usSendSize < (usDataOffset + usSessRcvPktFilterCfgSize)))
27222 {
27223 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
27224 "Unable to get send buffer in "
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080027225 "WDI_ProcessReceiveFilterSetFilterReq() %p %p %p",
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027226 pEventData, pwdiSetRcvPktFilterReqInfo,
27227 wdiReceiveFilterSetFilterCb);
27228 WDI_ASSERT(0);
27229 wpalMemoryFree(pSessRcvPktFilterCfg);
27230 return WDI_STATUS_E_FAILURE;
27231 }
27232
27233 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080027234 "UsData Off %d UsSend %d cfg %p",usDataOffset,
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027235 usSendSize,pSessRcvPktFilterCfg);
27236
27237 pSessRcvPktFilterCfg->filterId = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.filterId;
27238 pSessRcvPktFilterCfg->filterType = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.filterType;
27239 pSessRcvPktFilterCfg->numParams = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams;
27240 pSessRcvPktFilterCfg->coleasceTime = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.coalesceTime;
27241
27242 pSessRcvPktFilterCfg->bssIdx = pBSSSes->ucBSSIdx;
27243
27244 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
27245 "Out: FID %d FT %d",pSessRcvPktFilterCfg->filterId,
27246 pSessRcvPktFilterCfg->filterType);
27247 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
27248 "NParams %d CT %d",pSessRcvPktFilterCfg->numParams,
27249 pSessRcvPktFilterCfg->coleasceTime);
27250
27251 for ( i = 0; i < pSessRcvPktFilterCfg->numParams; i++ )
27252 {
27253 pSessRcvPktFilterCfg->paramsData[i].protocolLayer =
27254 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].protocolLayer;
27255 pSessRcvPktFilterCfg->paramsData[i].cmpFlag =
27256 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].cmpFlag;
27257 pSessRcvPktFilterCfg->paramsData[i].dataOffset =
27258 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataOffset;
27259 pSessRcvPktFilterCfg->paramsData[i].dataLength =
27260 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataLength;
27261
27262 wpalMemoryCopy(&pSessRcvPktFilterCfg->paramsData[i].compareData,
27263 &pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].compareData,
27264 8);
27265 wpalMemoryCopy(&pSessRcvPktFilterCfg->paramsData[i].dataMask,
27266 &pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataMask,
27267 8);
27268
27269 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Arif Hussain9a5d5382013-11-17 22:05:35 -080027270 "Out:Proto %d Comp Flag %d",
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027271 pSessRcvPktFilterCfg->paramsData[i].protocolLayer,
27272 pSessRcvPktFilterCfg->paramsData[i].cmpFlag);
27273
27274 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Arif Hussain9a5d5382013-11-17 22:05:35 -080027275 "Data Offset %d Data Len %d",
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027276 pSessRcvPktFilterCfg->paramsData[i].dataOffset,
27277 pSessRcvPktFilterCfg->paramsData[i].dataLength);
27278
27279 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Arif Hussain9a5d5382013-11-17 22:05:35 -080027280 "CData: %d:%d:%d:%d:%d:%d",
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027281 pSessRcvPktFilterCfg->paramsData[i].compareData[0],
27282 pSessRcvPktFilterCfg->paramsData[i].compareData[1],
27283 pSessRcvPktFilterCfg->paramsData[i].compareData[2],
27284 pSessRcvPktFilterCfg->paramsData[i].compareData[3],
27285 pSessRcvPktFilterCfg->paramsData[i].compareData[4],
27286 pSessRcvPktFilterCfg->paramsData[i].compareData[5]);
27287
27288 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Arif Hussain9a5d5382013-11-17 22:05:35 -080027289 "MData: %d:%d:%d:%d:%d:%d",
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027290 pSessRcvPktFilterCfg->paramsData[i].dataMask[0],
27291 pSessRcvPktFilterCfg->paramsData[i].dataMask[1],
27292 pSessRcvPktFilterCfg->paramsData[i].dataMask[2],
27293 pSessRcvPktFilterCfg->paramsData[i].dataMask[3],
27294 pSessRcvPktFilterCfg->paramsData[i].dataMask[4],
27295 pSessRcvPktFilterCfg->paramsData[i].dataMask[5]);
27296 }
27297
27298 wpalMemoryCopy( pSendBuffer+usDataOffset,
27299 pSessRcvPktFilterCfg,
27300 usSessRcvPktFilterCfgSize);
27301
27302
27303 pWDICtx->wdiReqStatusCB = pwdiSetRcvPktFilterReqInfo->wdiReqStatusCB;
27304 pWDICtx->pReqStatusUserData = pwdiSetRcvPktFilterReqInfo->pUserData;
27305
27306 wpalMemoryFree(pSessRcvPktFilterCfg);
27307
27308 }
27309 /*If SLM_SESSIONIZATION is not supported then do this */
27310 else
27311 {
27312 usRcvPktFilterCfgSize = sizeof(tHalRcvPktFilterCfgType) +
27313 ((pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams - 1)
27314 * sizeof(tHalRcvPktFilterParams));
27315
27316 pRcvPktFilterCfg = (tHalRcvPktFilterCfgType *)wpalMemoryAllocate(
Jeff Johnson295189b2012-06-20 16:38:30 -070027317 usRcvPktFilterCfgSize);
27318
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027319 if(NULL == pRcvPktFilterCfg)
27320 {
27321 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
27322 "%s: Failed to allocate memory for "
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080027323 "tHalRcvPktFilterCfgType: %p %p %p ",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027324 __func__, pWDICtx, pEventData, pEventData->pEventData);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027325 WDI_ASSERT(0);
27326 return WDI_STATUS_E_FAILURE;
27327 }
Jeff Johnson295189b2012-06-20 16:38:30 -070027328
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027329 wpalMemoryZero(pRcvPktFilterCfg, usRcvPktFilterCfgSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070027330
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027331 /*-----------------------------------------------------------------------
27332 Get message buffer
27333 -----------------------------------------------------------------------*/
27334 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_RECEIVE_FILTER_SET_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070027335 usRcvPktFilterCfgSize,
27336 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027337 ( usSendSize < (usDataOffset + usRcvPktFilterCfgSize)))
27338 {
27339 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson295189b2012-06-20 16:38:30 -070027340 "Unable to get send buffer in "
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080027341 "WDI_ProcessReceiveFilterSetFilterReq() %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070027342 pEventData, pwdiSetRcvPktFilterReqInfo,
27343 wdiReceiveFilterSetFilterCb);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027344 WDI_ASSERT(0);
27345 wpalMemoryFree(pRcvPktFilterCfg);
27346 return WDI_STATUS_E_FAILURE;
27347 }
Jeff Johnson295189b2012-06-20 16:38:30 -070027348
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027349 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070027350 "UsData Off %d UsSend %d cfg %d",usDataOffset,
Jeff Johnson295189b2012-06-20 16:38:30 -070027351 usSendSize,usRcvPktFilterCfgSize);
27352
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027353 pRcvPktFilterCfg->filterId = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.filterId;
27354 pRcvPktFilterCfg->filterType = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.filterType;
27355 pRcvPktFilterCfg->numParams = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams;
27356 pRcvPktFilterCfg->coalesceTime = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.coalesceTime;
Jeff Johnson295189b2012-06-20 16:38:30 -070027357
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027358 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070027359 "Out: FID %d FT %d",pRcvPktFilterCfg->filterId,
Jeff Johnson295189b2012-06-20 16:38:30 -070027360 pRcvPktFilterCfg->filterType);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027361 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnson295189b2012-06-20 16:38:30 -070027362 "NParams %d CT %d",pRcvPktFilterCfg->numParams,
Jeff Johnsone7245742012-09-05 17:12:55 -070027363 pRcvPktFilterCfg->coalesceTime);
Jeff Johnson295189b2012-06-20 16:38:30 -070027364
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027365 for ( i = 0; i < pRcvPktFilterCfg->numParams; i++ )
27366 {
27367 pRcvPktFilterCfg->paramsData[i].protocolLayer =
27368 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].protocolLayer;
27369 pRcvPktFilterCfg->paramsData[i].cmpFlag =
27370 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].cmpFlag;
27371 pRcvPktFilterCfg->paramsData[i].dataOffset =
27372 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataOffset;
27373 pRcvPktFilterCfg->paramsData[i].dataLength =
27374 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataLength;
Jeff Johnson295189b2012-06-20 16:38:30 -070027375
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027376 wpalMemoryCopy(&pRcvPktFilterCfg->paramsData[i].compareData,
Jeff Johnson295189b2012-06-20 16:38:30 -070027377 &pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].compareData,
27378 8);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027379 wpalMemoryCopy(&pRcvPktFilterCfg->paramsData[i].dataMask,
Jeff Johnson295189b2012-06-20 16:38:30 -070027380 &pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataMask,
27381 8);
27382
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027383 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Arif Hussain9a5d5382013-11-17 22:05:35 -080027384 "Out:Proto %d Comp Flag %d",
Jeff Johnsone7245742012-09-05 17:12:55 -070027385 pRcvPktFilterCfg->paramsData[i].protocolLayer,
Jeff Johnson295189b2012-06-20 16:38:30 -070027386 pRcvPktFilterCfg->paramsData[i].cmpFlag);
27387
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027388 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Arif Hussain9a5d5382013-11-17 22:05:35 -080027389 "Data Offset %d Data Len %d",
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027390 pRcvPktFilterCfg->paramsData[i].dataOffset,
27391 pRcvPktFilterCfg->paramsData[i].dataLength);
Jeff Johnson295189b2012-06-20 16:38:30 -070027392
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027393 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Arif Hussain9a5d5382013-11-17 22:05:35 -080027394 "CData: %d:%d:%d:%d:%d:%d",
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027395 pRcvPktFilterCfg->paramsData[i].compareData[0],
27396 pRcvPktFilterCfg->paramsData[i].compareData[1],
27397 pRcvPktFilterCfg->paramsData[i].compareData[2],
27398 pRcvPktFilterCfg->paramsData[i].compareData[3],
27399 pRcvPktFilterCfg->paramsData[i].compareData[4],
27400 pRcvPktFilterCfg->paramsData[i].compareData[5]);
Jeff Johnson295189b2012-06-20 16:38:30 -070027401
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027402 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Arif Hussain9a5d5382013-11-17 22:05:35 -080027403 "MData: %d:%d:%d:%d:%d:%d",
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027404 pRcvPktFilterCfg->paramsData[i].dataMask[0],
27405 pRcvPktFilterCfg->paramsData[i].dataMask[1],
27406 pRcvPktFilterCfg->paramsData[i].dataMask[2],
27407 pRcvPktFilterCfg->paramsData[i].dataMask[3],
27408 pRcvPktFilterCfg->paramsData[i].dataMask[4],
27409 pRcvPktFilterCfg->paramsData[i].dataMask[5]);
27410 }
Jeff Johnson295189b2012-06-20 16:38:30 -070027411
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027412 wpalMemoryCopy( pSendBuffer+usDataOffset,
Jeff Johnsone7245742012-09-05 17:12:55 -070027413 pRcvPktFilterCfg,
27414 usRcvPktFilterCfgSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070027415
27416
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027417 pWDICtx->wdiReqStatusCB = pwdiSetRcvPktFilterReqInfo->wdiReqStatusCB;
27418 pWDICtx->pReqStatusUserData = pwdiSetRcvPktFilterReqInfo->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070027419
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027420 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027421 "%s",__func__);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027422 wpalMemoryFree(pRcvPktFilterCfg);
27423 }
Jeff Johnson295189b2012-06-20 16:38:30 -070027424 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027425 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070027426 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070027427 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070027428 wdiReceiveFilterSetFilterCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -070027429 WDI_RECEIVE_FILTER_SET_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070027430}
27431
27432/**
27433 @brief Process Packet Filter Match Count Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070027434
27435 @param pWDICtx: pointer to the WLAN DAL context
27436 pEventData: pointer to the event information structure
27437
Jeff Johnson295189b2012-06-20 16:38:30 -070027438 @see
27439 @return Result of the function call
27440*/
27441WDI_Status
27442WDI_ProcessFilterMatchCountReq
Jeff Johnsone7245742012-09-05 17:12:55 -070027443(
Jeff Johnson295189b2012-06-20 16:38:30 -070027444 WDI_ControlBlockType* pWDICtx,
27445 WDI_EventInfoType* pEventData
27446)
27447{
27448 WDI_RcvFltPktMatchCntReqParamsType* pwdiRcvFltPktMatchCntReqParamsType =
27449 NULL;
27450 WDI_FilterMatchCountCb wdiFilterMatchCountCb =
27451 NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070027452 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070027453 wpt_uint16 usDataOffset = 0;
27454 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027455 tHalRcvFltPktMatchCntReqParams rcvFltPktMatchCntReqParam = {0};
27456 wpt_uint8 ucCurrentBSSSesIdx = 0;
27457 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070027458
27459 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027460 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027461
27462 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027463 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070027464 -------------------------------------------------------------------------*/
27465 if (( NULL == pEventData ) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070027466 ( NULL == (pwdiRcvFltPktMatchCntReqParamsType =
Jeff Johnson295189b2012-06-20 16:38:30 -070027467 (WDI_RcvFltPktMatchCntReqParamsType*)pEventData->pEventData)) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070027468 ( NULL == (wdiFilterMatchCountCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070027469 (WDI_FilterMatchCountCb)pEventData->pCBfnc)))
27470 {
27471 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027472 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027473 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070027474 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070027475 }
27476
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027477 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
27478 pwdiRcvFltPktMatchCntReqParamsType->bssId,
27479 &pBSSSes);
27480 if ( NULL == pBSSSes )
27481 {
27482 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027483 " %s : Association for this BSSID does not exist",__func__);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027484 return WDI_STATUS_E_FAILURE;
27485 }
27486
Jeff Johnson295189b2012-06-20 16:38:30 -070027487 /*-----------------------------------------------------------------------
27488 Get message buffer
27489 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070027490 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
27491 WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ,
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027492 sizeof(tHalRcvFltPktMatchCntReqParams),
Jeff Johnson295189b2012-06-20 16:38:30 -070027493 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027494 ( usSendSize < (usDataOffset + sizeof(tHalRcvFltPktMatchCntReqParams))))
Jeff Johnson295189b2012-06-20 16:38:30 -070027495 {
27496 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
27497 "Unable to get send buffer in "
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080027498 "WDI_ProcessFilterMatchCountReq() %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070027499 pEventData, pwdiRcvFltPktMatchCntReqParamsType,
27500 wdiFilterMatchCountCb);
27501 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070027502 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070027503 }
27504
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027505 rcvFltPktMatchCntReqParam.bssIdx = pBSSSes->ucBSSIdx;
27506 wpalMemoryCopy( pSendBuffer+usDataOffset,
27507 &rcvFltPktMatchCntReqParam,
27508 sizeof(rcvFltPktMatchCntReqParam));
27509
Jeff Johnson295189b2012-06-20 16:38:30 -070027510 //
27511 // Don't need to fill send buffer other than header
27512 //
27513 pWDICtx->wdiReqStatusCB = pwdiRcvFltPktMatchCntReqParamsType->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070027514 pWDICtx->pReqStatusUserData = pwdiRcvFltPktMatchCntReqParamsType->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070027515
27516
27517 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027518 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070027519 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070027520 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
27521 wdiFilterMatchCountCb,
27522 pEventData->pUserData,
27523 WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070027524}
27525
27526/**
27527 @brief Process Receive Filter Clear Filter Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070027528
27529 @param pWDICtx: pointer to the WLAN DAL context
27530 pEventData: pointer to the event information structure
27531
Jeff Johnson295189b2012-06-20 16:38:30 -070027532 @see
27533 @return Result of the function call
27534*/
27535WDI_Status
27536WDI_ProcessReceiveFilterClearFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070027537(
Jeff Johnson295189b2012-06-20 16:38:30 -070027538 WDI_ControlBlockType* pWDICtx,
27539 WDI_EventInfoType* pEventData
27540)
Jeff Johnsone7245742012-09-05 17:12:55 -070027541{
Jeff Johnson295189b2012-06-20 16:38:30 -070027542 WDI_RcvFltPktClearReqParamsType* pwdiRcvFltPktClearReqParamsType = NULL;
27543 WDI_ReceiveFilterClearFilterCb wdiRcvFltPktClearFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070027544 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070027545 wpt_uint16 usDataOffset = 0;
27546 wpt_uint16 usSendSize = 0;
27547 tHalRcvFltPktClearParam rcvFltPktClearParam;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027548 wpt_uint8 ucCurrentSessionId = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070027549 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070027550
27551 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027552 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027553
27554 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027555 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070027556 -------------------------------------------------------------------------*/
27557 if (( NULL == pEventData ) ||
27558 ( NULL == (pwdiRcvFltPktClearReqParamsType =
27559 (WDI_RcvFltPktClearReqParamsType*)pEventData->pEventData)) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070027560 ( NULL == (wdiRcvFltPktClearFilterCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070027561 (WDI_ReceiveFilterClearFilterCb)pEventData->pCBfnc)))
27562 {
27563 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027564 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027565 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070027566 return WDI_STATUS_E_FAILURE;
27567 }
27568
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027569 ucCurrentSessionId = WDI_FindAssocSession( pWDICtx,
Jeff Johnsone7245742012-09-05 17:12:55 -070027570 pwdiRcvFltPktClearReqParamsType->filterClearParam.bssId,
27571 &pBSSSes);
27572 if ( NULL == pBSSSes )
27573 {
27574 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027575 " %s : Association for this BSSID does not exist",__func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070027576 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070027577 }
27578
27579 /*-----------------------------------------------------------------------
27580 Get message buffer
27581 -----------------------------------------------------------------------*/
27582 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
Jeff Johnsone7245742012-09-05 17:12:55 -070027583 WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070027584 sizeof(tHalRcvFltPktClearParam),
27585 &pSendBuffer, &usDataOffset, &usSendSize))||
27586 ( usSendSize < (usDataOffset + sizeof(tHalRcvFltPktClearParam))))
27587 {
27588 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
27589 "Unable to get send buffer in "
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080027590 "WDI_ProcessReceiveFilterClearFilterReq() %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070027591 pEventData, pwdiRcvFltPktClearReqParamsType,
27592 wdiRcvFltPktClearFilterCb);
27593 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070027594 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070027595 }
27596
27597
27598 rcvFltPktClearParam.status = pwdiRcvFltPktClearReqParamsType->
Jeff Johnsone7245742012-09-05 17:12:55 -070027599 filterClearParam.status;
Jeff Johnson295189b2012-06-20 16:38:30 -070027600 rcvFltPktClearParam.filterId = pwdiRcvFltPktClearReqParamsType->
Jeff Johnsone7245742012-09-05 17:12:55 -070027601 filterClearParam.filterId;
Jeff Johnson295189b2012-06-20 16:38:30 -070027602
Jeff Johnsone7245742012-09-05 17:12:55 -070027603 rcvFltPktClearParam.bssIdx = pBSSSes->ucBSSIdx;
27604 wpalMemoryCopy( pSendBuffer+usDataOffset,
27605 &rcvFltPktClearParam,
27606 sizeof(rcvFltPktClearParam));
Jeff Johnson295189b2012-06-20 16:38:30 -070027607
27608 pWDICtx->wdiReqStatusCB = pwdiRcvFltPktClearReqParamsType->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070027609 pWDICtx->pReqStatusUserData = pwdiRcvFltPktClearReqParamsType->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070027610
27611
27612 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027613 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070027614 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070027615 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070027616 wdiRcvFltPktClearFilterCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -070027617 WDI_RECEIVE_FILTER_CLEAR_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070027618}
27619
27620/**
27621 @brief Process 8023 Multicast List Response function
Jeff Johnsone7245742012-09-05 17:12:55 -070027622
27623 @param pWDICtx: pointer to the WLAN DAL context
27624 pEventData: pointer to the event information structure
27625
Jeff Johnson295189b2012-06-20 16:38:30 -070027626 @see
27627 @return Result of the function call
27628*/
27629WDI_Status
27630WDI_Process8023MulticastListRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070027631(
Jeff Johnson295189b2012-06-20 16:38:30 -070027632 WDI_ControlBlockType* pWDICtx,
27633 WDI_EventInfoType* pEventData
27634)
27635{
Jeff Johnson295189b2012-06-20 16:38:30 -070027636 eHalStatus halStatus;
27637 WDI_8023MulticastListCb wdi8023MulticastListCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027638 tHalRcvFltPktSetMcListRspType halRcvFltPktSetMcListRsp;
27639 WDI_RcvFltPktSetMcListRspParamsType wdiRcvFltPktSetMcListRspInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070027640 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27641
27642 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027643 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027644
27645 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027646 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070027647 -------------------------------------------------------------------------*/
27648 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
27649 ( NULL == pEventData->pEventData ))
27650 {
27651 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027652 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027653 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070027654 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070027655 }
27656
Jeff Johnsone7245742012-09-05 17:12:55 -070027657 wdi8023MulticastListCb = (WDI_8023MulticastListCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070027658
27659 /*-------------------------------------------------------------------------
27660 Extract response and send it to UMAC
27661 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027662 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
27663 {
27664 wpalMemoryCopy( &halRcvFltPktSetMcListRsp,
27665 pEventData->pEventData,
27666 sizeof(halRcvFltPktSetMcListRsp));
27667
27668 wdiRcvFltPktSetMcListRspInfo.wdiStatus =
27669 WDI_HAL_2_WDI_STATUS(halRcvFltPktSetMcListRsp.status);
27670 wdiRcvFltPktSetMcListRspInfo.bssIdx =
27671 halRcvFltPktSetMcListRsp.bssIdx;
27672 }
27673 else
27674 {
27675 halStatus = *((eHalStatus*)pEventData->pEventData);
27676 wdiRcvFltPktSetMcListRspInfo.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
27677 }
Jeff Johnson295189b2012-06-20 16:38:30 -070027678
27679 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027680 wdi8023MulticastListCb(&wdiRcvFltPktSetMcListRspInfo, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070027681
Jeff Johnsone7245742012-09-05 17:12:55 -070027682 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070027683}
27684
27685/**
27686 @brief Process Set Rsp function (called when a
27687 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070027688
27689 @param pWDICtx: pointer to the WLAN DAL context
27690 pEventData: pointer to the event information structure
27691
Jeff Johnson295189b2012-06-20 16:38:30 -070027692 @see
27693 @return Result of the function call
27694*/
27695WDI_Status
27696WDI_ProcessReceiveFilterSetFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070027697(
Jeff Johnson295189b2012-06-20 16:38:30 -070027698 WDI_ControlBlockType* pWDICtx,
27699 WDI_EventInfoType* pEventData
27700)
27701{
Jeff Johnson295189b2012-06-20 16:38:30 -070027702 eHalStatus halStatus;
27703 WDI_ReceiveFilterSetFilterCb wdiReceiveFilterSetFilterCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027704 tHalSetPktFilterRspParams halSetPktFilterRspParams;
27705 WDI_SetRcvPktFilterRspParamsType wdiSetRcvPktFilterRspInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070027706 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27707
27708 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027709 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027710
27711 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027712 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070027713 -------------------------------------------------------------------------*/
27714 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
27715 ( NULL == pEventData->pEventData ))
27716 {
27717 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027718 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027719 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070027720 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070027721 }
27722
27723 wdiReceiveFilterSetFilterCb = (WDI_ReceiveFilterSetFilterCb)pWDICtx->
Jeff Johnsone7245742012-09-05 17:12:55 -070027724 pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070027725
27726 /*-------------------------------------------------------------------------
27727 Extract response and send it to UMAC
27728 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027729 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
27730 {
27731 wpalMemoryCopy( &halSetPktFilterRspParams,
27732 pEventData->pEventData,
27733 sizeof(halSetPktFilterRspParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070027734
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027735 wdiSetRcvPktFilterRspInfo.bssIdx = halSetPktFilterRspParams.bssIdx;
27736 wdiSetRcvPktFilterRspInfo.wdiStatus = WDI_HAL_2_WDI_STATUS(halSetPktFilterRspParams.status);
27737 }
27738 else
27739 {
27740 halStatus = *((eHalStatus*)pEventData->pEventData);
27741 wdiSetRcvPktFilterRspInfo.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
27742 }
Jeff Johnson295189b2012-06-20 16:38:30 -070027743 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027744 wdiReceiveFilterSetFilterCb(&wdiSetRcvPktFilterRspInfo, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070027745
Jeff Johnsone7245742012-09-05 17:12:55 -070027746 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070027747}
27748
27749/**
27750 @brief Process Packet Filter Match Count Response function
Jeff Johnsone7245742012-09-05 17:12:55 -070027751
27752 @param pWDICtx: pointer to the WLAN DAL context
27753 pEventData: pointer to the event information structure
27754
Jeff Johnson295189b2012-06-20 16:38:30 -070027755 @see
27756 @return Result of the function call
27757*/
27758WDI_Status
27759WDI_ProcessFilterMatchCountRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070027760(
Jeff Johnson295189b2012-06-20 16:38:30 -070027761 WDI_ControlBlockType* pWDICtx,
27762 WDI_EventInfoType* pEventData
27763)
27764{
Jeff Johnson295189b2012-06-20 16:38:30 -070027765 eHalStatus halStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070027766 WDI_FilterMatchCountCb wdiFilterMatchCountCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027767 tHalRcvFltPktMatchRspParams halRcvFltrPktMatachRsp;
27768 WDI_RcvFltPktMatchCntRspParamsType wdiRcvFltPktMatchRspParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070027769
27770 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27771
27772 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027773 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027774
27775 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027776 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070027777 -------------------------------------------------------------------------*/
27778 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
27779 ( NULL == pEventData->pEventData ))
27780 {
27781 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027782 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027783 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070027784 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070027785 }
27786
Jeff Johnsone7245742012-09-05 17:12:55 -070027787 wdiFilterMatchCountCb = (WDI_FilterMatchCountCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070027788
27789 /*-------------------------------------------------------------------------
27790 Extract response and send it to UMAC
27791 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027792 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
27793 {
27794 wpalMemoryCopy( &halRcvFltrPktMatachRsp,
27795 pEventData->pEventData,
27796 sizeof(halRcvFltrPktMatachRsp));
27797
27798 wdiRcvFltPktMatchRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halRcvFltrPktMatachRsp.status);
27799 wdiRcvFltPktMatchRspParams.bssIdx = halRcvFltrPktMatachRsp.bssIdx;
27800 }
27801 else
27802 {
27803 halStatus = *((eHalStatus*)pEventData->pEventData);
27804 wdiRcvFltPktMatchRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
27805 }
Jeff Johnson295189b2012-06-20 16:38:30 -070027806
27807 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027808 wdiFilterMatchCountCb(&wdiRcvFltPktMatchRspParams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070027809
Jeff Johnsone7245742012-09-05 17:12:55 -070027810 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070027811}
27812
27813/**
27814 @brief Process Receive Filter Clear Filter Response function
Jeff Johnsone7245742012-09-05 17:12:55 -070027815
27816 @param pWDICtx: pointer to the WLAN DAL context
27817 pEventData: pointer to the event information structure
27818
Jeff Johnson295189b2012-06-20 16:38:30 -070027819 @see
27820 @return Result of the function call
27821*/
27822WDI_Status
27823WDI_ProcessReceiveFilterClearFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070027824(
Jeff Johnson295189b2012-06-20 16:38:30 -070027825 WDI_ControlBlockType* pWDICtx,
27826 WDI_EventInfoType* pEventData
27827)
27828{
Jeff Johnson295189b2012-06-20 16:38:30 -070027829 eHalStatus halStatus;
27830 WDI_ReceiveFilterClearFilterCb wdiReceiveFilterClearFilterCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027831 tHalRcvFltPktClearParam halRcvFltPktClearRspMsg;
27832 WDI_RcvFltPktClearRspParamsType wdiRcvFltPktClearRspParamsType;
Jeff Johnson295189b2012-06-20 16:38:30 -070027833 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27834
27835 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027836 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027837
27838 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027839 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070027840 -------------------------------------------------------------------------*/
27841 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
27842 ( NULL == pEventData->pEventData ))
27843 {
27844 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027845 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027846 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070027847 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070027848 }
27849
27850 wdiReceiveFilterClearFilterCb = (WDI_ReceiveFilterClearFilterCb)pWDICtx->
Jeff Johnsone7245742012-09-05 17:12:55 -070027851 pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070027852
27853 /*-------------------------------------------------------------------------
27854 Extract response and send it to UMAC
27855 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027856 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
27857 {
27858 wpalMemoryCopy( &halRcvFltPktClearRspMsg,
27859 pEventData->pEventData,
27860 sizeof(halRcvFltPktClearRspMsg));
27861
27862 wdiRcvFltPktClearRspParamsType.wdiStatus =
27863 WDI_HAL_2_WDI_STATUS(halRcvFltPktClearRspMsg.status);
27864 wdiRcvFltPktClearRspParamsType.bssIdx =
27865 halRcvFltPktClearRspMsg.bssIdx;
27866 }
27867 else
27868 {
27869 halStatus = *((eHalStatus*)pEventData->pEventData);
27870 wdiRcvFltPktClearRspParamsType.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
27871 }
Jeff Johnson295189b2012-06-20 16:38:30 -070027872
27873 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027874 wdiReceiveFilterClearFilterCb(&wdiRcvFltPktClearRspParamsType, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070027875
Jeff Johnsone7245742012-09-05 17:12:55 -070027876 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070027877}
27878#endif // WLAN_FEATURE_PACKET_FILTERING
27879
27880/**
27881 @brief Process Shutdown Rsp function
27882 There is no shutdown response comming from HAL
27883 - function just kept for simmetry
Jeff Johnsone7245742012-09-05 17:12:55 -070027884
Jeff Johnson295189b2012-06-20 16:38:30 -070027885 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnsone7245742012-09-05 17:12:55 -070027886 pEventData: pointer to the event information structure
Jeff Johnson295189b2012-06-20 16:38:30 -070027887
27888 @see
27889 @return Result of the function call
27890*/
27891WDI_Status
27892WDI_ProcessShutdownRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070027893(
Jeff Johnson295189b2012-06-20 16:38:30 -070027894 WDI_ControlBlockType* pWDICtx,
27895 WDI_EventInfoType* pEventData
27896)
27897{
27898 /*There is no shutdown response comming from HAL - function just kept for
27899 simmetry */
27900 WDI_ASSERT(0);
27901 return WDI_STATUS_SUCCESS;
27902}/*WDI_ProcessShutdownRsp*/
27903
27904/**
27905 @brief WDI_SetPowerParamsReq
27906
Jeff Johnsone7245742012-09-05 17:12:55 -070027907 @param pwdiPowerParamsReqParams: the Set Power Params as
Jeff Johnson295189b2012-06-20 16:38:30 -070027908 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -070027909
Jeff Johnson295189b2012-06-20 16:38:30 -070027910 wdiPowerParamsCb: callback for passing back the response
27911 of the Set Power Params operation received from the
27912 device
Jeff Johnsone7245742012-09-05 17:12:55 -070027913
Jeff Johnson295189b2012-06-20 16:38:30 -070027914 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -070027915 callback
27916
Jeff Johnson295189b2012-06-20 16:38:30 -070027917 @return Result of the function call
27918*/
Jeff Johnsone7245742012-09-05 17:12:55 -070027919WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070027920WDI_SetPowerParamsReq
27921(
27922 WDI_SetPowerParamsReqParamsType* pwdiPowerParamsReqParams,
27923 WDI_SetPowerParamsCb wdiPowerParamsCb,
27924 void* pUserData
27925)
27926{
27927 WDI_EventInfoType wdiEventData;
27928 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27929
27930 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027931 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070027932 ------------------------------------------------------------------------*/
27933 if ( eWLAN_PAL_FALSE == gWDIInitialized )
27934 {
27935 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
27936 "WDI API call before module is initialized - Fail request");
27937
Jeff Johnsone7245742012-09-05 17:12:55 -070027938 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070027939 }
27940
27941 /*------------------------------------------------------------------------
27942 Fill in Event data and post to the Main FSM
27943 ------------------------------------------------------------------------*/
27944 wdiEventData.wdiRequest = WDI_SET_POWER_PARAMS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070027945 wdiEventData.pEventData = pwdiPowerParamsReqParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070027946 wdiEventData.uEventDataSize = sizeof(*pwdiPowerParamsReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -070027947 wdiEventData.pCBfnc = wdiPowerParamsCb;
Jeff Johnson295189b2012-06-20 16:38:30 -070027948 wdiEventData.pUserData = pUserData;
27949
27950 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
27951}/*WDI_SetPowerParamsReq*/
27952
27953/**
27954 @brief Process Set Power Params Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070027955
27956 @param pWDICtx: pointer to the WLAN DAL context
27957 pEventData: pointer to the event information structure
27958
Jeff Johnson295189b2012-06-20 16:38:30 -070027959 @see
27960 @return Result of the function call
27961*/
27962WDI_Status
27963WDI_ProcessSetPowerParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070027964(
Jeff Johnson295189b2012-06-20 16:38:30 -070027965 WDI_ControlBlockType* pWDICtx,
27966 WDI_EventInfoType* pEventData
27967)
27968{
27969 WDI_SetPowerParamsReqParamsType* pwdiPowerParamsReqParams = NULL;
27970 WDI_SetPowerParamsCb wdiPowerParamsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070027971 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070027972 wpt_uint16 usDataOffset = 0;
27973 wpt_uint16 usSendSize = 0;
27974 tSetPowerParamsType powerParams;
27975
27976 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027977 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070027978 -------------------------------------------------------------------------*/
27979 if (( NULL == pEventData ) ||
27980 ( NULL == (pwdiPowerParamsReqParams = (WDI_SetPowerParamsReqParamsType*)pEventData->pEventData)) ||
27981 ( NULL == (wdiPowerParamsCb = (WDI_SetPowerParamsCb)pEventData->pCBfnc)))
27982 {
27983 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027984 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027985 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070027986 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070027987 }
27988
27989 /*-----------------------------------------------------------------------
27990 Get message buffer
27991 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070027992 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_POWER_PARAMS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070027993 sizeof(powerParams),
27994 &pSendBuffer, &usDataOffset, &usSendSize))||
27995 ( usSendSize < (usDataOffset + sizeof(powerParams) )))
27996 {
27997 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080027998 "Unable to get send buffer in Set PNO req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070027999 pEventData, pwdiPowerParamsReqParams, wdiPowerParamsCb);
28000 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070028001 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070028002 }
28003
28004 /* Ignore DTIM */
Jeff Johnsone7245742012-09-05 17:12:55 -070028005 powerParams.uIgnoreDTIM =
Jeff Johnson295189b2012-06-20 16:38:30 -070028006 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uIgnoreDTIM;
28007
28008 /*DTIM Period*/
Jeff Johnsone7245742012-09-05 17:12:55 -070028009 powerParams.uDTIMPeriod =
Jeff Johnson295189b2012-06-20 16:38:30 -070028010 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uDTIMPeriod;
28011
28012 /* Listen Interval */
Jeff Johnsone7245742012-09-05 17:12:55 -070028013 powerParams.uListenInterval=
Jeff Johnson295189b2012-06-20 16:38:30 -070028014 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uListenInterval;
28015
28016 /* Broadcast Multicas Filter */
Jeff Johnsone7245742012-09-05 17:12:55 -070028017 powerParams.uBcastMcastFilter =
Jeff Johnson295189b2012-06-20 16:38:30 -070028018 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uBcastMcastFilter;
28019
28020 /* Beacon Early Termination */
Jeff Johnsone7245742012-09-05 17:12:55 -070028021 powerParams.uEnableBET =
Jeff Johnson295189b2012-06-20 16:38:30 -070028022 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uEnableBET;
28023
28024 /* Beacon Early Termination Interval */
Jeff Johnsone7245742012-09-05 17:12:55 -070028025 powerParams.uBETInterval =
28026 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uBETInterval;
Jeff Johnson295189b2012-06-20 16:38:30 -070028027
Yue Mac24062f2013-05-13 17:01:29 -070028028 /* MAX LI for modulated DTIM */
28029 powerParams.uMaxLIModulatedDTIM =
28030 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uMaxLIModulatedDTIM;
Jeff Johnsone7245742012-09-05 17:12:55 -070028031
28032 wpalMemoryCopy( pSendBuffer+usDataOffset,
28033 &powerParams,
28034 sizeof(powerParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070028035
28036 pWDICtx->wdiReqStatusCB = pwdiPowerParamsReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070028037 pWDICtx->pReqStatusUserData = pwdiPowerParamsReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070028038
28039 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070028040 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070028041 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070028042 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
28043 wdiPowerParamsCb, pEventData->pUserData, WDI_SET_POWER_PARAMS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070028044}
28045
28046/**
28047 @brief Process Power Params Rsp function (called when a
28048 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070028049
28050 @param pWDICtx: pointer to the WLAN DAL context
28051 pEventData: pointer to the event information structure
28052
Jeff Johnson295189b2012-06-20 16:38:30 -070028053 @see
28054 @return Result of the function call
28055*/
28056WDI_Status
28057WDI_ProcessSetPowerParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070028058(
Jeff Johnson295189b2012-06-20 16:38:30 -070028059 WDI_ControlBlockType* pWDICtx,
28060 WDI_EventInfoType* pEventData
28061)
28062{
28063 WDI_Status wdiStatus;
28064 eHalStatus halStatus;
28065 WDI_SetPowerParamsCb wdiPowerParamsCb;
28066 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28067
28068 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070028069 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070028070 -------------------------------------------------------------------------*/
28071 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
28072 ( NULL == pEventData->pEventData ))
28073 {
28074 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028075 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028076 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070028077 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070028078 }
28079
Jeff Johnsone7245742012-09-05 17:12:55 -070028080 wdiPowerParamsCb = (WDI_SetPowerParamsCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070028081
28082 /*-------------------------------------------------------------------------
28083 Extract response and send it to UMAC
28084 -------------------------------------------------------------------------*/
28085 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070028086 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070028087
28088 /*Notify UMAC*/
28089 wdiPowerParamsCb(wdiStatus, pWDICtx->pRspCBUserData);
28090
Jeff Johnsone7245742012-09-05 17:12:55 -070028091 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070028092}/*WDI_ProcessSetPowerParamsRsp*/
28093
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +053028094/**
28095 @brief WDI_dhcpStartInd
28096 Host will send an event to the FW when DHCP is initiated
28097
28098 @param
28099 WDI_DHCPInd: DHCP Indication
28100 @see
28101 @return Result of the function call
28102*/
28103WDI_Status
28104WDI_dhcpStartInd
28105(
28106 WDI_DHCPInd *wdiDHCPInd
28107)
28108{
28109 WDI_EventInfoType wdiEventData;
28110
28111 /*------------------------------------------------------------------------
28112 Sanity Check
28113 ------------------------------------------------------------------------*/
28114 if ( eWLAN_PAL_FALSE == gWDIInitialized )
28115 {
28116 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
28117 "WDI API call before module is initialized - Fail request");
28118
28119 return WDI_STATUS_E_NOT_ALLOWED;
28120 }
28121
28122 wdiEventData.wdiRequest = WDI_DHCP_START_IND;
28123 wdiEventData.pEventData = wdiDHCPInd;
c_hpothu0b0cab72014-02-13 21:52:40 +053028124 wdiEventData.uEventDataSize = sizeof(WDI_DHCPInd);
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +053028125 wdiEventData.pCBfnc = NULL;
28126 wdiEventData.pUserData = NULL;
28127
28128 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
28129}
28130
28131
28132/**
28133 @brief WDI_dhcpStopInd
28134 Host will send an event to the FW when DHCP is completed
28135
28136 @param
28137 WDI_DHCPInd: DHCP Indication
28138 @see
28139 @return Result of the function call
28140*/
28141WDI_Status
28142WDI_dhcpStopInd
28143(
28144 WDI_DHCPInd *wdiDHCPInd
28145)
28146{
28147 WDI_EventInfoType wdiEventData;
28148
28149 /*------------------------------------------------------------------------
28150 Sanity Check
28151 ------------------------------------------------------------------------*/
28152 if ( eWLAN_PAL_FALSE == gWDIInitialized )
28153 {
28154 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
28155 "WDI API call before module is initialized - Fail request");
28156
28157 return WDI_STATUS_E_NOT_ALLOWED;
28158 }
28159
28160 wdiEventData.wdiRequest = WDI_DHCP_STOP_IND;
28161 wdiEventData.pEventData = wdiDHCPInd;
c_hpothu0b0cab72014-02-13 21:52:40 +053028162 wdiEventData.uEventDataSize = sizeof(WDI_DHCPInd);
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +053028163 wdiEventData.pCBfnc = NULL;
28164 wdiEventData.pUserData = NULL;
28165
28166 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
28167}
28168
28169
28170/**
28171 @brief Process DHCP Start Indication message and post it to HAL
28172
28173 @param pWDICtx: pointer to the WLAN DAL context
28174 pEventData: pointer to the event information structure
28175
28176 @see
28177 @return Result of the function call
28178*/
28179WDI_Status
28180WDI_ProcessDHCPStartInd
28181(
28182 WDI_ControlBlockType* pWDICtx,
28183 WDI_EventInfoType* pEventData
28184)
28185{
28186 wpt_uint8* pSendBuffer = NULL;
28187 wpt_uint16 usDataOffset = 0;
28188 wpt_uint16 usSendSize = 0;
28189 wpt_uint16 usLen = 0;
28190 WDI_DHCPInd* pwdiDHCPInd = NULL;
28191 tDHCPInfo* pDHCPInfo;
Sandeep Puligillaee789512014-02-13 19:14:52 +053028192 WDI_Status wdiStatus;
28193
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +053028194
28195 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28196
28197 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
28198 "%s", __func__);
28199
28200 /*-------------------------------------------------------------------------
28201 Sanity check
28202 -------------------------------------------------------------------------*/
28203 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
28204 {
28205 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
28206 "%s: Invalid parameters", __func__);
28207 WDI_ASSERT(0);
28208 return WDI_STATUS_E_FAILURE;
28209 }
28210 pwdiDHCPInd = (WDI_DHCPInd*)pEventData->pEventData;
28211 /*-----------------------------------------------------------------------
28212 Get message buffer
28213 -----------------------------------------------------------------------*/
28214
28215 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
28216 WDI_DHCP_START_IND,
28217 sizeof(tDHCPInfo),
28218 &pSendBuffer, &usDataOffset, &usSendSize))||
28219 ( usSendSize < (usDataOffset + usLen )))
28220 {
28221 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
28222 "Unable to get send buffer in DHCP Start req %p ",
28223 pEventData);
28224 WDI_ASSERT(0);
28225 return WDI_STATUS_E_FAILURE;
28226 }
28227
Sandeep Puligillaee789512014-02-13 19:14:52 +053028228 pDHCPInfo = (tDHCPInfo*)(pSendBuffer+usDataOffset);
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +053028229 pDHCPInfo->device_mode = pwdiDHCPInd->device_mode;
28230 wpalMemoryCopy(pDHCPInfo->macAddr, pwdiDHCPInd->macAddr,
28231 WDI_MAC_ADDR_LEN);
28232
28233 pWDICtx->pReqStatusUserData = NULL;
28234 pWDICtx->pfncRspCB = NULL;
28235
28236 /*-------------------------------------------------------------------------
28237 Send DHCP Start Indication to HAL
28238 -------------------------------------------------------------------------*/
Sandeep Puligillaee789512014-02-13 19:14:52 +053028239 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
28240 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus:WDI_STATUS_SUCCESS_SYNC;
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +053028241}/*WDI_ProcessDHCPStartInd*/
28242
28243/**
28244 @brief Process DHCP Stop indication message and post it to HAL
28245
28246 @param pWDICtx: pointer to the WLAN DAL context
28247 pEventData: pointer to the event information structure
28248
28249 @see
28250 @return Result of the function call
28251*/
28252WDI_Status
28253WDI_ProcessDHCPStopInd
28254(
28255 WDI_ControlBlockType* pWDICtx,
28256 WDI_EventInfoType* pEventData
28257)
28258{
28259 wpt_uint8* pSendBuffer = NULL;
28260 wpt_uint16 usDataOffset = 0;
28261 wpt_uint16 usSendSize = 0;
28262 wpt_uint16 usLen = 0;
28263 WDI_DHCPInd* pwdiDHCPInd = NULL;
28264 tDHCPInfo* pDHCPInfo;
Sandeep Puligillaee789512014-02-13 19:14:52 +053028265 WDI_Status wdiStatus;
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +053028266
28267 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28268
28269 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
28270 "%s", __func__);
28271
28272 /*-------------------------------------------------------------------------
28273 Sanity check
28274 -------------------------------------------------------------------------*/
28275
28276 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
28277 {
28278 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
28279 "%s: Invalid parameters", __func__);
28280 WDI_ASSERT(0);
28281 return WDI_STATUS_E_FAILURE;
28282 }
28283 pwdiDHCPInd = (WDI_DHCPInd*)pEventData->pEventData;
28284 /*-----------------------------------------------------------------------
28285 Get message buffer
28286 -----------------------------------------------------------------------*/
28287
28288 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
28289 WDI_DHCP_STOP_IND,
28290 sizeof(tDHCPInfo),
28291 &pSendBuffer, &usDataOffset, &usSendSize))||
28292 ( usSendSize < (usDataOffset + usLen )))
28293 {
28294 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
28295 "Unable to get send buffer in DHCP Start req %p ",
28296 pEventData);
28297 WDI_ASSERT(0);
28298 return WDI_STATUS_E_FAILURE;
28299 }
28300
Sandeep Puligillaee789512014-02-13 19:14:52 +053028301 pDHCPInfo = (tDHCPInfo*)(pSendBuffer+usDataOffset);
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +053028302 pDHCPInfo->device_mode = pwdiDHCPInd->device_mode;
28303 wpalMemoryCopy(pDHCPInfo->macAddr, pwdiDHCPInd->macAddr,
28304 WDI_MAC_ADDR_LEN);
28305
28306 pWDICtx->pReqStatusUserData = NULL;
28307 pWDICtx->pfncRspCB = NULL;
28308 /*-------------------------------------------------------------------------
28309 Send DHCP Stop indication to HAL
28310 -------------------------------------------------------------------------*/
Sandeep Puligillaee789512014-02-13 19:14:52 +053028311 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
28312 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus:WDI_STATUS_SUCCESS_SYNC;
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +053028313
28314}/*WDI_ProcessDHCPStopInd*/
28315
28316
Jeff Johnson295189b2012-06-20 16:38:30 -070028317#ifdef WLAN_FEATURE_GTK_OFFLOAD
28318/**
28319 @brief WDI_GTKOffloadReq will be called when the upper MAC
28320 wants to set GTK Rekey Counter while in power save. Upon
28321 the call of this API the WLAN DAL will pack and send a
28322 HAL GTK offload request message to the lower RIVA
28323 sub-system if DAL is in state STARTED.
28324
28325 In state BUSY this request will be queued. Request won't
28326 be allowed in any other state.
28327
28328 WDI_PostAssocReq must have been called.
28329
28330 @param pwdiGtkOffloadParams: the GTK offload as specified
28331 by the Device Interface
28332
28333 wdiGtkOffloadCb: callback for passing back the response
28334 of the GTK offload operation received from the device
28335
28336 pUserData: user data will be passed back with the
28337 callback
28338
28339 @see WDI_PostAssocReq
28340 @return Result of the function call
28341*/
28342WDI_Status
28343WDI_GTKOffloadReq
28344(
28345 WDI_GtkOffloadReqMsg* pwdiGtkOffloadReqMsg,
28346 WDI_GtkOffloadCb wdiGtkOffloadCb,
28347 void* pUserData
28348)
28349{
Gopichand Nakkala870cbae2013-03-15 21:16:09 +053028350 WDI_EventInfoType wdiEventData;
Jeff Johnson295189b2012-06-20 16:38:30 -070028351 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28352
28353 /*------------------------------------------------------------------------
28354 Sanity Check
28355 ------------------------------------------------------------------------*/
28356 if ( eWLAN_PAL_FALSE == gWDIInitialized )
28357 {
28358 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
28359 "WDI API call before module is initialized - Fail request");
28360
28361 return WDI_STATUS_E_NOT_ALLOWED;
28362 }
28363
28364 /*------------------------------------------------------------------------
28365 Fill in Event data and post to the Main FSM
28366 ------------------------------------------------------------------------*/
28367 wdiEventData.wdiRequest = WDI_GTK_OFFLOAD_REQ;
28368 wdiEventData.pEventData = pwdiGtkOffloadReqMsg;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -070028369 wdiEventData.uEventDataSize = sizeof(*pwdiGtkOffloadReqMsg);
Jeff Johnson295189b2012-06-20 16:38:30 -070028370 wdiEventData.pCBfnc = wdiGtkOffloadCb;
28371 wdiEventData.pUserData = pUserData;
28372
28373 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
28374}
28375
28376
28377/**
28378 @brief WDI_GTKOffloadGetInfoReq will be called when the upper
28379 MAC wants to get GTK Rekey Counter while in power save.
28380 Upon the call of this API the WLAN DAL will pack and
28381 send a HAL GTK offload request message to the lower RIVA
28382 sub-system if DAL is in state STARTED.
28383
28384 In state BUSY this request will be queued. Request won't
28385 be allowed in any other state.
28386
28387 WDI_PostAssocReq must have been called.
28388
28389 @param pwdiGtkOffloadGetInfoReqMsg: the GTK Offload
28390 Information Message as specified by the
28391 Device Interface
28392
28393 wdiGtkOffloadGetInfoCb: callback for passing back the
28394 response of the GTK offload operation received from the
28395 device
28396
28397 pUserData: user data will be passed back with the
28398 callback
28399
28400 @see WDI_PostAssocReq
28401 @return Result of the function call
28402*/
28403WDI_Status
28404WDI_GTKOffloadGetInfoReq
28405(
28406 WDI_GtkOffloadGetInfoReqMsg* pwdiGtkOffloadGetInfoReqMsg,
28407 WDI_GtkOffloadGetInfoCb wdiGtkOffloadGetInfoCb,
28408 void* pUserData
28409)
28410{
Gopichand Nakkala870cbae2013-03-15 21:16:09 +053028411 WDI_EventInfoType wdiEventData;
Jeff Johnson295189b2012-06-20 16:38:30 -070028412 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28413
28414 /*------------------------------------------------------------------------
28415 Sanity Check
28416 ------------------------------------------------------------------------*/
28417 if ( eWLAN_PAL_FALSE == gWDIInitialized )
28418 {
28419 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
28420 "WDI API call before module is initialized - Fail request");
28421
28422 return WDI_STATUS_E_NOT_ALLOWED;
28423 }
28424
28425 /*------------------------------------------------------------------------
28426 Fill in Event data and post to the Main FSM
28427 ------------------------------------------------------------------------*/
28428 wdiEventData.wdiRequest = WDI_GTK_OFFLOAD_GETINFO_REQ;
28429 wdiEventData.pEventData = pwdiGtkOffloadGetInfoReqMsg;
28430 wdiEventData.uEventDataSize = sizeof(*pwdiGtkOffloadGetInfoReqMsg);
28431 wdiEventData.pCBfnc = wdiGtkOffloadGetInfoCb;
28432 wdiEventData.pUserData = pUserData;
28433
28434 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
28435}
28436
28437
28438/**
28439 @brief Process set GTK Offload Request function
28440
28441 @param pWDICtx: pointer to the WLAN DAL context
28442 pEventData: pointer to the event information structure
28443
28444 @see
28445 @return Result of the function call
28446*/
28447WDI_Status
28448WDI_ProcessGTKOffloadReq
28449(
28450 WDI_ControlBlockType* pWDICtx,
28451 WDI_EventInfoType* pEventData
28452)
28453{
28454 WDI_GtkOffloadReqMsg* pwdiGtkOffloadReqMsg = NULL;
28455 WDI_GtkOffloadCb wdiGtkOffloadCb = NULL;
28456 wpt_uint8* pSendBuffer = NULL;
28457 wpt_uint16 usDataOffset = 0;
28458 wpt_uint16 usSendSize = 0;
28459 tHalGtkOffloadReqParams gtkOffloadReqParams = {0};
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028460 wpt_uint8 ucCurrentSessionId = 0;
28461 WDI_BSSSessionType* pBSSSes = NULL;
28462
Jeff Johnson295189b2012-06-20 16:38:30 -070028463 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28464
28465 /*-------------------------------------------------------------------------
28466 Sanity check
28467 -------------------------------------------------------------------------*/
28468 if (( NULL == pEventData ) ||
28469 ( NULL == (pwdiGtkOffloadReqMsg = (WDI_GtkOffloadReqMsg*)pEventData->pEventData)) ||
28470 ( NULL == (wdiGtkOffloadCb = (WDI_GtkOffloadCb)pEventData->pCBfnc)))
28471 {
28472 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028473 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028474 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080028475 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070028476 }
28477
28478 /*-----------------------------------------------------------------------
28479 Get message buffer
28480 -----------------------------------------------------------------------*/
28481 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_GTK_OFFLOAD_REQ,
28482 sizeof(gtkOffloadReqParams),
28483 &pSendBuffer, &usDataOffset, &usSendSize))||
28484 ( usSendSize < (usDataOffset + sizeof(gtkOffloadReqParams) )))
28485 {
28486 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080028487 "Unable to get send buffer in GTK offload req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070028488 pEventData, pwdiGtkOffloadReqMsg, wdiGtkOffloadCb);
28489 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080028490 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070028491 }
28492
28493 //
28494 // Fill gtkOffloadReqParams from pwdiGtkOffloadReqMsg->gtkOffloadReqParams
28495 //
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028496 ucCurrentSessionId = WDI_FindAssocSession( pWDICtx,
28497 pwdiGtkOffloadReqMsg->gtkOffloadReqParams.bssId,
28498 &pBSSSes);
28499 if ( NULL == pBSSSes )
28500 {
28501 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028502 " %s : Association for this BSSID does not exist", __func__);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080028503 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028504 }
28505
28506 gtkOffloadReqParams.bssIdx = pBSSSes->ucBSSIdx;
28507
Jeff Johnson295189b2012-06-20 16:38:30 -070028508 gtkOffloadReqParams.ulFlags = pwdiGtkOffloadReqMsg->gtkOffloadReqParams.ulFlags;
28509 // Copy KCK
28510 wpalMemoryCopy(&(gtkOffloadReqParams.aKCK[0]), &(pwdiGtkOffloadReqMsg->gtkOffloadReqParams.aKCK[0]), 16);
28511 // Copy KEK
28512 wpalMemoryCopy(&(gtkOffloadReqParams.aKEK[0]), &(pwdiGtkOffloadReqMsg->gtkOffloadReqParams.aKEK[0]), 16);
28513 // Copy KeyReplayCounter
28514 wpalMemoryCopy(&(gtkOffloadReqParams.ullKeyReplayCounter), &(pwdiGtkOffloadReqMsg->gtkOffloadReqParams.ullKeyReplayCounter), sizeof(v_U64_t));
28515
28516 wpalMemoryCopy( pSendBuffer+usDataOffset,
28517 &gtkOffloadReqParams,
28518 sizeof(gtkOffloadReqParams));
28519
28520 pWDICtx->wdiReqStatusCB = pwdiGtkOffloadReqMsg->wdiReqStatusCB;
28521 pWDICtx->pReqStatusUserData = pwdiGtkOffloadReqMsg->pUserData;
28522
28523 /*-------------------------------------------------------------------------
28524 Send Get STA Request to HAL
28525 -------------------------------------------------------------------------*/
28526 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
28527 wdiGtkOffloadCb, pEventData->pUserData, WDI_GTK_OFFLOAD_RESP);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080028528
28529fail:
28530 // Release the message buffer so we don't leak
28531 wpalMemoryFree(pSendBuffer);
28532
28533failRequest:
28534 //WDA should have failure check to avoid the memory leak
28535 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070028536}
28537
28538
28539/**
28540 @brief Process GTK Offload Get Information Request function
28541
28542 @param pWDICtx: pointer to the WLAN DAL context
28543 pEventData: pointer to the event information structure
28544
28545 @see
28546 @return Result of the function call
28547*/
28548WDI_Status
28549WDI_ProcessGTKOffloadGetInfoReq
28550(
28551 WDI_ControlBlockType* pWDICtx,
28552 WDI_EventInfoType* pEventData
28553)
28554{
28555 WDI_GtkOffloadGetInfoReqMsg* pwdiGtkOffloadGetInfoReqMsg = NULL;
28556 WDI_GtkOffloadGetInfoCb wdiGtkOffloadGetInfoCb = NULL;
28557 wpt_uint8* pSendBuffer = NULL;
28558 wpt_uint16 usDataOffset = 0;
28559 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028560 tHalGtkOffloadGetInfoReqParams halGtkOffloadGetInfoReqParams;
28561 wpt_uint8 ucCurrentSessionId = 0;
28562 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070028563
28564 /*-------------------------------------------------------------------------
28565 Sanity check
28566 -------------------------------------------------------------------------*/
28567 if (( NULL == pEventData ) ||
28568 ( NULL == (pwdiGtkOffloadGetInfoReqMsg = (WDI_GtkOffloadGetInfoReqMsg*)pEventData->pEventData)) ||
28569 ( NULL == (wdiGtkOffloadGetInfoCb = (WDI_GtkOffloadGetInfoCb)pEventData->pCBfnc)))
28570 {
28571 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028572 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028573 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080028574 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070028575 }
28576
28577 /*-----------------------------------------------------------------------
28578 Get message buffer
28579 -----------------------------------------------------------------------*/
28580 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_GTK_OFFLOAD_GETINFO_REQ,
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028581 sizeof(halGtkOffloadGetInfoReqParams),
Jeff Johnson295189b2012-06-20 16:38:30 -070028582 &pSendBuffer, &usDataOffset, &usSendSize))||
Gopichand Nakkala870cbae2013-03-15 21:16:09 +053028583 ( usSendSize < ( usDataOffset + sizeof(halGtkOffloadGetInfoReqParams))))
Jeff Johnson295189b2012-06-20 16:38:30 -070028584 {
28585 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080028586 "Unable to get send buffer in WDI_ProcessGTKOffloadGetInfoReq() %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070028587 pEventData, pwdiGtkOffloadGetInfoReqMsg, wdiGtkOffloadGetInfoCb);
28588 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080028589 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070028590 }
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028591 ucCurrentSessionId = WDI_FindAssocSession( pWDICtx,
28592 pwdiGtkOffloadGetInfoReqMsg->WDI_GtkOffloadGetInfoReqParams.bssId,
28593 &pBSSSes);
28594 if ( NULL == pBSSSes )
28595 {
28596 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028597 " %s : Association for this BSSID does not exist",__func__);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080028598 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028599 }
28600 halGtkOffloadGetInfoReqParams.bssIdx = pBSSSes->ucBSSIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070028601
28602 //
28603 // Don't need to fill send buffer other than header
28604 //
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028605 wpalMemoryCopy( pSendBuffer+usDataOffset,
28606 &halGtkOffloadGetInfoReqParams,
28607 sizeof(halGtkOffloadGetInfoReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070028608
28609 pWDICtx->wdiReqStatusCB = pwdiGtkOffloadGetInfoReqMsg->wdiReqStatusCB;
28610 pWDICtx->pReqStatusUserData = pwdiGtkOffloadGetInfoReqMsg->pUserData;
28611
28612 /*-------------------------------------------------------------------------
28613 Send Get STA Request to HAL
28614 -------------------------------------------------------------------------*/
28615 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
28616 wdiGtkOffloadGetInfoCb, pEventData->pUserData, WDI_GTK_OFFLOAD_GETINFO_RESP);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080028617fail:
28618 // Release the message buffer so we don't leak
28619 wpalMemoryFree(pSendBuffer);
28620
28621failRequest:
28622 //WDA should have failure check to avoid the memory leak
28623 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070028624}
28625
28626/**
28627 @brief Process host offload Rsp function (called when a
28628 response is being received over the bus from HAL)
28629
28630 @param pWDICtx: pointer to the WLAN DAL context
28631 pEventData: pointer to the event information structure
28632
28633 @see
28634 @return Result of the function call
28635*/
28636WDI_Status
28637WDI_ProcessGtkOffloadRsp
28638(
28639 WDI_ControlBlockType* pWDICtx,
28640 WDI_EventInfoType* pEventData
28641)
28642{
Jeff Johnson295189b2012-06-20 16:38:30 -070028643 eHalStatus halStatus;
28644 WDI_GtkOffloadCb wdiGtkOffloadCb = NULL;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028645 tHalGtkOffloadRspParams halGtkOffloadRspParams;
28646 WDI_GtkOffloadRspParams wdiGtkOffloadRsparams;
Jeff Johnson295189b2012-06-20 16:38:30 -070028647
28648 /*-------------------------------------------------------------------------
28649 Sanity check
28650 -------------------------------------------------------------------------*/
28651 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
28652 ( NULL == pEventData->pEventData))
28653 {
28654 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028655 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028656 WDI_ASSERT(0);
28657 return WDI_STATUS_E_FAILURE;
28658 }
28659
Wilson Yang00256342013-10-10 23:13:38 -070028660 wdiGtkOffloadCb = (WDI_GtkOffloadCb)pWDICtx->pfncRspCB;
28661
Jeff Johnson295189b2012-06-20 16:38:30 -070028662 /*-------------------------------------------------------------------------
28663 Extract response and send it to UMAC
28664 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028665 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
28666 {
28667 wpalMemoryCopy( &halGtkOffloadRspParams,
28668 pEventData->pEventData,
28669 sizeof(halGtkOffloadRspParams));
28670
28671 wdiGtkOffloadRsparams.ulStatus =
Gopichand Nakkala870cbae2013-03-15 21:16:09 +053028672 WDI_HAL_2_WDI_STATUS(halGtkOffloadRspParams.ulStatus);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028673 wdiGtkOffloadRsparams.bssIdx =
28674 halGtkOffloadRspParams.bssIdx;
28675 }
28676 else
28677 {
28678 halStatus = *((eHalStatus*)pEventData->pEventData);
28679 wdiGtkOffloadRsparams.ulStatus = WDI_HAL_2_WDI_STATUS(halStatus);
28680 }
Jeff Johnson295189b2012-06-20 16:38:30 -070028681
28682 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028683 wdiGtkOffloadCb( &wdiGtkOffloadRsparams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070028684
28685 return WDI_STATUS_SUCCESS;
28686}
28687
28688/**
28689 @brief Process GTK Offload Get Information Response function
28690
28691 @param pWDICtx: pointer to the WLAN DAL context
28692 pEventData: pointer to the event information structure
28693
28694 @see
28695 @return Result of the function call
28696*/
28697WDI_Status
28698WDI_ProcessGTKOffloadGetInfoRsp
28699(
28700 WDI_ControlBlockType* pWDICtx,
28701 WDI_EventInfoType* pEventData
28702)
28703{
Jeff Johnson295189b2012-06-20 16:38:30 -070028704 eHalStatus halStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070028705 WDI_GtkOffloadGetInfoCb wdiGtkOffloadGetInfoCb = NULL;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028706 tHalGtkOffloadGetInfoRspParams halGtkOffloadGetInfoRspParams;
28707 WDI_GtkOffloadGetInfoRspParams wdiGtkOffloadGetInfoRsparams;
Gopichand Nakkala870cbae2013-03-15 21:16:09 +053028708 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070028709
Jeff Johnson295189b2012-06-20 16:38:30 -070028710
28711 /*-------------------------------------------------------------------------
28712 Sanity check
28713 -------------------------------------------------------------------------*/
28714 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
28715 ( NULL == pEventData->pEventData ))
28716 {
28717 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028718 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028719 WDI_ASSERT(0);
28720 return WDI_STATUS_E_FAILURE;
28721 }
28722
Wilson Yang00256342013-10-10 23:13:38 -070028723 wdiGtkOffloadGetInfoCb = (WDI_GtkOffloadGetInfoCb)pWDICtx->pfncRspCB;
28724
28725 /*-------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -070028726 Extract response and send it to UMAC
28727 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028728 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
28729 {
28730 wpalMemoryCopy( &halGtkOffloadGetInfoRspParams,
28731 pEventData->pEventData,
28732 sizeof(halGtkOffloadGetInfoRspParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070028733
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028734 wdiGtkOffloadGetInfoRsparams.ulStatus =
Gopichand Nakkala870cbae2013-03-15 21:16:09 +053028735 WDI_HAL_2_WDI_STATUS(halGtkOffloadGetInfoRspParams.ulStatus);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028736 wdiGtkOffloadGetInfoRsparams.ullKeyReplayCounter =
28737 halGtkOffloadGetInfoRspParams.ullKeyReplayCounter;
28738 wdiGtkOffloadGetInfoRsparams.ulTotalRekeyCount =
28739 halGtkOffloadGetInfoRspParams.ulTotalRekeyCount;
28740 wdiGtkOffloadGetInfoRsparams.ulGTKRekeyCount =
28741 halGtkOffloadGetInfoRspParams.ulGTKRekeyCount;
28742 wdiGtkOffloadGetInfoRsparams.ulIGTKRekeyCount =
28743 halGtkOffloadGetInfoRspParams.ulIGTKRekeyCount;
Gopichand Nakkala870cbae2013-03-15 21:16:09 +053028744
28745 wpalMutexAcquire(&pWDICtx->wptMutex);
28746 WDI_FindAssocSessionByBSSIdx(pWDICtx, halGtkOffloadGetInfoRspParams.bssIdx,
28747 &pBSSSes);
28748
28749 if ( NULL == pBSSSes )
28750 {
28751 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
28752 "Association sequence for this BSS does not exist or "
28753 "association no longer in progress - mysterious HAL response");
28754 wpalMutexRelease(&pWDICtx->wptMutex);
28755 return WDI_STATUS_E_NOT_ALLOWED;
28756 }
28757
28758 wpalMemoryCopy(wdiGtkOffloadGetInfoRsparams.bssId, pBSSSes->macBSSID,
28759 sizeof (wpt_macAddr));
28760 wpalMutexRelease(&pWDICtx->wptMutex);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028761 }
28762 else
28763 {
28764 halStatus = *((eHalStatus*)pEventData->pEventData);
28765 wdiGtkOffloadGetInfoRsparams.ulStatus = WDI_HAL_2_WDI_STATUS(halStatus);
28766 }
Jeff Johnson295189b2012-06-20 16:38:30 -070028767 /*Notify UMAC*/
28768 //wdiUpdateScanParamsCb(wdiStatus, pWDICtx->pRspCBUserData);
28769 //wdiReceiveFilterClearFilterCb(wdiStatus, pWDICtx->pRspCBUserData);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028770 wdiGtkOffloadGetInfoCb(&wdiGtkOffloadGetInfoRsparams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070028771
28772 return WDI_STATUS_SUCCESS;
28773}
28774#endif // WLAN_FEATURE_GTK_OFFLOAD
28775
28776#ifdef WLAN_WAKEUP_EVENTS
28777WDI_Status
28778WDI_ProcessWakeReasonInd
28779(
28780 WDI_ControlBlockType* pWDICtx,
28781 WDI_EventInfoType* pEventData
28782)
28783{
28784 WDI_LowLevelIndType *pWdiInd;
28785 tpWakeReasonParams pWakeReasonParams;
28786 wpt_uint32 allocSize = 0;
28787
28788 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028789 "+%s", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028790
28791 /*-------------------------------------------------------------------------
28792 Sanity check
28793 -------------------------------------------------------------------------*/
28794 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
28795 ( NULL == pEventData->pEventData ))
28796 {
28797 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028798 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028799 WDI_ASSERT( 0 );
28800 return WDI_STATUS_E_FAILURE;
28801 }
28802
28803 /*-------------------------------------------------------------------------
28804 Extract indication and send it to UMAC
28805 -------------------------------------------------------------------------*/
28806 pWakeReasonParams = (tpWakeReasonParams)(pEventData->pEventData);
28807
28808 allocSize = sizeof(WDI_LowLevelIndType) + (pWakeReasonParams->ulStoredDataLen - 1);
28809
28810 //Allocate memory for WDI_WakeReasonIndType structure
28811 pWdiInd = wpalMemoryAllocate(allocSize) ;
28812
28813 if(NULL == pWdiInd)
28814 {
28815 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080028816 "%s: Failed to allocate memory for WDI_WakeReasonIndType: %p %p %p ",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028817 __func__, pWDICtx, pEventData, pEventData->pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070028818 WDI_ASSERT(0);
28819 return WDI_STATUS_E_FAILURE;
28820 }
28821
28822 wpalMemoryZero(pWdiInd, allocSize);
28823
28824 /* Fill in the indication parameters*/
28825 // Fill wdiInd.wdiIndicationData.wakeReasonInd structure from wakeReasonInd.wakeReasonParams
28826 pWdiInd->wdiIndicationType = WDI_WAKE_REASON_IND;
28827 pWdiInd->wdiIndicationData.wdiWakeReasonInd.ulReason = pWakeReasonParams->ulReason;
28828 pWdiInd->wdiIndicationData.wdiWakeReasonInd.ulReasonArg = pWakeReasonParams->ulReasonArg;
28829 pWdiInd->wdiIndicationData.wdiWakeReasonInd.ulStoredDataLen = pWakeReasonParams->ulStoredDataLen;
28830 pWdiInd->wdiIndicationData.wdiWakeReasonInd.ulActualDataLen = pWakeReasonParams->ulActualDataLen;
28831 wpalMemoryCopy( (void *)&(pWdiInd->wdiIndicationData.wdiWakeReasonInd.aDataStart[0]),
28832 &(pWakeReasonParams->aDataStart[0]),
28833 pWakeReasonParams->ulStoredDataLen);
28834
ltimariub77f24b2013-01-24 18:54:33 -080028835
28836 if ( pWDICtx->wdiLowLevelIndCB )
28837 {
28838 /*Notify UMAC*/
28839 pWDICtx->wdiLowLevelIndCB( pWdiInd, pWDICtx->pIndUserData );
28840 }
Jeff Johnson295189b2012-06-20 16:38:30 -070028841
28842 //Free memory allocated for WDI_WakeReasonIndType structure
28843 wpalMemoryFree(pWdiInd);
28844
28845 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028846 "-%s", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028847
28848 return WDI_STATUS_SUCCESS;
28849}
28850#endif // WLAN_WAKEUP_EVENTS
28851
28852void WDI_GetWcnssCompiledApiVersion
28853(
28854 WDI_WlanVersionType *pWcnssApiVersion
28855)
28856{
28857 pWcnssApiVersion->major = WLAN_HAL_VER_MAJOR;
28858 pWcnssApiVersion->minor = WLAN_HAL_VER_MINOR;
28859 pWcnssApiVersion->version = WLAN_HAL_VER_VERSION;
28860 pWcnssApiVersion->revision = WLAN_HAL_VER_REVISION;
28861}
28862
28863/**
28864 @brief Process Set TM Level Rsp function (called when a
28865 response is being received over the bus from HAL)
28866
28867 @param pWDICtx: pointer to the WLAN DAL context
28868 pEventData: pointer to the event information structure
28869
28870 @see
28871 @return Result of the function call
28872*/
28873WDI_Status
28874WDI_ProcessSetTmLevelRsp
28875(
28876 WDI_ControlBlockType* pWDICtx,
28877 WDI_EventInfoType* pEventData
28878)
28879{
28880 WDI_Status wdiStatus;
28881 eHalStatus halStatus;
28882 WDI_SetTmLevelCb wdiSetTmLevelCb;
28883 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28884
28885 /*-------------------------------------------------------------------------
28886 Sanity check
28887 -------------------------------------------------------------------------*/
28888 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
28889 ( NULL == pEventData->pEventData ))
28890 {
28891 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028892 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028893 WDI_ASSERT(0);
28894 return WDI_STATUS_E_FAILURE;
28895 }
28896
28897 wdiSetTmLevelCb = (WDI_SetPowerParamsCb)pWDICtx->pfncRspCB;
28898
28899 /*-------------------------------------------------------------------------
28900 Extract response and send it to UMAC
28901 -------------------------------------------------------------------------*/
28902 halStatus = *((eHalStatus*)pEventData->pEventData);
28903 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
28904
28905 /*Notify UMAC*/
28906 wdiSetTmLevelCb(wdiStatus, pWDICtx->pRspCBUserData);
28907
28908 return WDI_STATUS_SUCCESS;
28909}/*WDI_ProcessSetTmLevelRsp*/
28910
28911/**
28912 @brief Process Set Thermal Mitigation level Changed request
28913
28914 @param pWDICtx: pointer to the WLAN DAL context
28915 pEventData: pointer to the event information structure
28916
28917 @see
28918 @return Result of the function call
28919*/
28920WDI_Status
28921WDI_ProcessSetTmLevelReq
28922(
28923 WDI_ControlBlockType* pWDICtx,
28924 WDI_EventInfoType* pEventData
28925)
28926{
28927 WDI_SetTmLevelReqType *pwdiSetTmLevelReq = NULL;
28928 WDI_SetTmLevelCb wdiSetTmLevelCb = NULL;
28929 wpt_uint8* pSendBuffer = NULL;
28930 wpt_uint16 usDataOffset = 0;
28931 wpt_uint16 usSendSize = 0;
28932 tSetThermalMitgationType halTmMsg;
28933
28934 /*-------------------------------------------------------------------------
28935 Sanity check
28936 -------------------------------------------------------------------------*/
28937 if (( NULL == pEventData ) ||
28938 ( NULL == (pwdiSetTmLevelReq = (WDI_SetTmLevelReqType*)pEventData->pEventData)) ||
28939 ( NULL == (wdiSetTmLevelCb = (WDI_SetTmLevelCb)pEventData->pCBfnc)))
28940 {
28941 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028942 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028943 WDI_ASSERT(0);
28944 return WDI_STATUS_E_FAILURE;
28945 }
28946
28947 /*-----------------------------------------------------------------------
28948 Get message buffer
28949 -----------------------------------------------------------------------*/
28950 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_TM_LEVEL_REQ,
28951 sizeof(halTmMsg),
28952 &pSendBuffer, &usDataOffset, &usSendSize))||
28953 ( usSendSize < (usDataOffset + sizeof(halTmMsg) )))
28954 {
28955 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080028956 "Unable to get send buffer in Set PNO req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070028957 pEventData, pwdiSetTmLevelReq, wdiSetTmLevelCb);
28958 WDI_ASSERT(0);
28959 return WDI_STATUS_E_FAILURE;
28960 }
28961
28962 halTmMsg.thermalMitMode = pwdiSetTmLevelReq->tmMode;
28963 halTmMsg.thermalMitLevel = pwdiSetTmLevelReq->tmLevel;
28964
28965 wpalMemoryCopy( pSendBuffer+usDataOffset,
28966 &halTmMsg,
28967 sizeof(halTmMsg));
28968
28969 pWDICtx->pReqStatusUserData = pwdiSetTmLevelReq->pUserData;
28970 pWDICtx->pfncRspCB = NULL;
28971 /*-------------------------------------------------------------------------
28972 Send Get STA Request to HAL
28973 -------------------------------------------------------------------------*/
28974 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
28975 wdiSetTmLevelCb, pEventData->pUserData, WDI_SET_TM_LEVEL_RESP);
28976}
28977
28978/* Fill the value from the global features enabled array to the global capabilities
28979 * bitmap struct
28980 */
28981static void
28982FillAllFeatureCaps(tWlanFeatCaps *fCaps, placeHolderInCapBitmap *enabledFeat, wpt_int8 len)
28983{
28984 wpt_int8 i;
28985 for (i=0; i<len; i++)
28986 {
28987 setFeatCaps(fCaps, enabledFeat[i]);
28988 }
28989}
28990
28991/**
28992 @brief WDI_featureCapsExchangeReq
28993 Post feature capability bitmap exchange event.
28994 Host will send its own capability to FW in this req and
28995 expect FW to send its capability back as a bitmap in Response
28996
28997 @param
28998
28999 wdiFeatureCapsExchangeCb: callback called on getting the response.
29000 It is kept to mantain similarity between WDI reqs and if needed, can
29001 be used in future. Currently, It is set to NULL
29002
29003 pUserData: user data will be passed back with the
29004 callback
29005
29006 @see
29007 @return Result of the function call
29008*/
29009WDI_Status
29010WDI_featureCapsExchangeReq
29011(
29012 WDI_featureCapsExchangeCb wdiFeatureCapsExchangeCb,
29013 void* pUserData
29014)
29015{
29016 WDI_EventInfoType wdiEventData;
29017 wpt_int32 fCapsStructSize;
29018
29019 /*------------------------------------------------------------------------
29020 Sanity Check
29021 ------------------------------------------------------------------------*/
29022 if ( eWLAN_PAL_FALSE == gWDIInitialized )
29023 {
29024 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
29025 "WDI API call before module is initialized - Fail request");
29026
29027 return WDI_STATUS_E_NOT_ALLOWED;
29028 }
29029
29030 /* Allocate memory separately for global variable carrying FW caps */
29031 fCapsStructSize = sizeof(tWlanFeatCaps);
29032 gpHostWlanFeatCaps = wpalMemoryAllocate(fCapsStructSize);
29033 if ( NULL == gpHostWlanFeatCaps )
29034 {
29035 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Arif Hussain9a5d5382013-11-17 22:05:35 -080029036 "Cannot allocate memory for host capability info");
Jeff Johnson295189b2012-06-20 16:38:30 -070029037 WDI_ASSERT(0);
29038 return WDI_STATUS_MEM_FAILURE;
29039 }
29040
29041 wpalMemoryZero(gpHostWlanFeatCaps, fCapsStructSize);
29042
29043 /*------------------------------------------------------------------------
29044 Fill in Event data and post to the Main FSM
29045 ------------------------------------------------------------------------*/
29046 FillAllFeatureCaps(gpHostWlanFeatCaps, supportEnabledFeatures,
29047 (sizeof(supportEnabledFeatures)/sizeof(supportEnabledFeatures[0])));
Madan Mohan Koyyalamudif8d3b3f2013-07-30 19:10:54 +053029048 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Arif Hussain9a5d5382013-11-17 22:05:35 -080029049 "Host caps %x %x %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -070029050 gpHostWlanFeatCaps->featCaps[0],
29051 gpHostWlanFeatCaps->featCaps[1],
29052 gpHostWlanFeatCaps->featCaps[2],
29053 gpHostWlanFeatCaps->featCaps[3]
29054 );
Madan Mohan Koyyalamudif8d3b3f2013-07-30 19:10:54 +053029055 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR, "Host Capability");
29056 WDI_TraceHostFWCapabilities(gpHostWlanFeatCaps->featCaps);
Jeff Johnson295189b2012-06-20 16:38:30 -070029057 wdiEventData.wdiRequest = WDI_FEATURE_CAPS_EXCHANGE_REQ;
29058 wdiEventData.pEventData = gpHostWlanFeatCaps;
29059 wdiEventData.uEventDataSize = fCapsStructSize;
29060 wdiEventData.pCBfnc = wdiFeatureCapsExchangeCb;
29061 wdiEventData.pUserData = pUserData;
29062
29063 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
29064}
29065
29066/**
Yathish9f22e662012-12-10 14:21:35 -080029067 @brief Disable Active mode offload in Host
29068
29069 @param void
29070 @see
29071 @return void
29072*/
29073void
29074WDI_disableCapablityFeature(wpt_uint8 feature_index)
29075{
29076 supportEnabledFeatures[feature_index] = 0;
29077 return;
29078}
29079
29080/**
Jeff Johnson295189b2012-06-20 16:38:30 -070029081 @brief Process Host-FW Capability Exchange Request function
29082
29083 @param pWDICtx: pointer to the WLAN DAL context
29084 pEventData: pointer to the event information structure
29085
29086 @see
29087 @return Result of the function call
29088*/
29089WDI_Status
29090WDI_ProcessFeatureCapsExchangeReq
29091(
29092 WDI_ControlBlockType* pWDICtx,
29093 WDI_EventInfoType* pEventData
29094)
29095{
29096 wpt_uint8* pSendBuffer = NULL;
29097 wpt_uint16 usDataOffset = 0;
29098 wpt_uint16 usSendSize = 0;
29099 wpt_uint16 usLen = 0;
29100
29101 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
29102
29103 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070029104 "%s", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070029105
29106 /*-------------------------------------------------------------------------
29107 Sanity check
29108 -------------------------------------------------------------------------*/
29109 /* Call back function is NULL since not required for cap exchange req */
29110 if (( NULL == pEventData ) ||
29111 ( NULL == (tWlanFeatCaps *)pEventData->pEventData))
29112 {
29113 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070029114 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070029115 WDI_ASSERT(0);
29116 return WDI_STATUS_E_FAILURE;
29117 }
29118
29119 /*-----------------------------------------------------------------------
29120 Get message buffer
29121 -----------------------------------------------------------------------*/
29122 usLen = sizeof(tWlanFeatCaps);
29123
29124 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
29125 WDI_FEATURE_CAPS_EXCHANGE_REQ,
29126 usLen,
29127 &pSendBuffer, &usDataOffset, &usSendSize))||
29128 ( usSendSize < (usDataOffset + usLen )))
29129 {
29130 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080029131 "Unable to get send buffer in feat caps exchange req %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070029132 pEventData, (tWlanFeatCaps *)pEventData->pEventData);
29133 WDI_ASSERT(0);
29134 return WDI_STATUS_E_FAILURE;
29135 }
29136
29137 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Arif Hussain9a5d5382013-11-17 22:05:35 -080029138 "Host Caps - %x %x %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -070029139 ((tWlanFeatCaps *)pEventData->pEventData)->featCaps[0],
29140 ((tWlanFeatCaps *)pEventData->pEventData)->featCaps[1],
29141 ((tWlanFeatCaps *)pEventData->pEventData)->featCaps[2],
29142 ((tWlanFeatCaps *)pEventData->pEventData)->featCaps[3]
29143 );
29144
29145 /* Copy host caps after the offset in the send buffer */
29146 wpalMemoryCopy( pSendBuffer+usDataOffset,
29147 (tWlanFeatCaps *)pEventData->pEventData,
29148 usLen);
29149
29150 /*-------------------------------------------------------------------------
29151 Send Start Request to HAL
29152 -------------------------------------------------------------------------*/
29153 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
29154 (WDI_StartRspCb)pEventData->pCBfnc,
29155 pEventData->pUserData, WDI_FEATURE_CAPS_EXCHANGE_RESP);
29156
29157}/*WDI_ProcessFeatureCapsExchangeReq*/
29158
29159/**
29160 @brief Process Host-FW Capability Exchange Response function
29161
29162 @param pWDICtx: pointer to the WLAN DAL context
29163 pEventData: pointer to the event information structure
29164
29165 @see
29166 @return Result of the function call
29167*/
29168WDI_Status
29169WDI_ProcessFeatureCapsExchangeRsp
29170(
29171 WDI_ControlBlockType* pWDICtx,
29172 WDI_EventInfoType* pEventData
29173)
29174{
29175 WDI_featureCapsExchangeCb wdiFeatureCapsExchangeCb;
29176 wpt_int32 fCapsStructSize;
29177 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
29178
29179 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070029180 "%s", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070029181
29182 /*-------------------------------------------------------------------------
29183 Sanity check
29184 -------------------------------------------------------------------------*/
29185 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
29186 ( NULL == pEventData->pEventData ))
29187 {
29188 /* It will go here when riva is old (doesn't understand this msg) and host is new */
29189 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070029190 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070029191 WDI_ASSERT(0);
29192 return WDI_STATUS_E_FAILURE;
29193 }
29194
29195 /* Allocate memory separately for global variable carrying FW caps */
29196 fCapsStructSize = sizeof(tWlanFeatCaps);
29197 gpFwWlanFeatCaps = wpalMemoryAllocate(fCapsStructSize);
29198 if ( NULL == gpFwWlanFeatCaps )
29199 {
29200 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Arif Hussain9a5d5382013-11-17 22:05:35 -080029201 "Cannot allocate memory for host capability info");
Jeff Johnson295189b2012-06-20 16:38:30 -070029202 WDI_ASSERT(0);
29203 return WDI_STATUS_MEM_FAILURE;
29204 }
29205
29206 /*-------------------------------------------------------------------------
29207 Unpack HAL Response Message - the header was already extracted by the
29208 main Response Handling procedure
29209 -------------------------------------------------------------------------*/
29210 /*-------------------------------------------------------------------------
29211 Extract response and send it to UMAC
29212 -------------------------------------------------------------------------*/
29213
29214 wpalMemoryCopy(gpFwWlanFeatCaps,(tWlanFeatCaps *) pEventData -> pEventData,
29215 fCapsStructSize);
Madan Mohan Koyyalamudif8d3b3f2013-07-30 19:10:54 +053029216 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Arif Hussain9a5d5382013-11-17 22:05:35 -080029217 "FW caps %x %x %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -070029218 gpFwWlanFeatCaps->featCaps[0],
29219 gpFwWlanFeatCaps->featCaps[1],
29220 gpFwWlanFeatCaps->featCaps[2],
29221 gpFwWlanFeatCaps->featCaps[3]
Madan Mohan Koyyalamudif8d3b3f2013-07-30 19:10:54 +053029222 );
29223 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR, "Firmware Capability");
29224 WDI_TraceHostFWCapabilities(gpFwWlanFeatCaps->featCaps);
Jeff Johnson295189b2012-06-20 16:38:30 -070029225 wdiFeatureCapsExchangeCb = (WDI_featureCapsExchangeCb) pWDICtx -> pfncRspCB;
29226
29227 /*Notify UMAC - there is no callback right now but can be used in future if reqd */
29228 if (wdiFeatureCapsExchangeCb != NULL)
29229 wdiFeatureCapsExchangeCb(NULL, NULL);
29230
29231 return WDI_STATUS_SUCCESS;
29232}
29233
Mohit Khanna4a70d262012-09-11 16:30:12 -070029234#ifdef WLAN_FEATURE_11AC
29235WDI_Status
29236WDI_ProcessUpdateVHTOpModeRsp
29237(
29238 WDI_ControlBlockType* pWDICtx,
29239 WDI_EventInfoType* pEventData
29240)
29241{
29242 WDI_UpdateVHTOpModeCb wdiVHTOpModeCb = NULL;
29243 WDI_Status wdiStatus;
29244 eHalStatus halStatus;
29245
29246 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
29247
29248 /*-------------------------------------------------------------------------
29249 Sanity check
29250 -------------------------------------------------------------------------*/
29251 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
29252 ( NULL == pEventData->pEventData))
29253 {
29254 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070029255 "%s: Invalid parameters", __func__);
Mohit Khanna4a70d262012-09-11 16:30:12 -070029256 WDI_ASSERT(0);
29257 return WDI_STATUS_E_FAILURE;
29258 }
29259 wdiVHTOpModeCb = (WDI_UpdateVHTOpModeCb)pEventData->pCBfnc;
29260
29261 /*-------------------------------------------------------------------------
29262 Extract response and send it to UMAC
29263 -------------------------------------------------------------------------*/
29264 halStatus = *((eHalStatus*)pEventData->pEventData);
29265 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
29266
29267 /*Notify UMAC*/
29268 wdiVHTOpModeCb( wdiStatus, pEventData->pUserData);
29269
29270 return WDI_STATUS_SUCCESS;
29271}
29272#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070029273/**
29274 @brief WDI_getHostWlanFeatCaps
29275 WDI API that returns whether the feature passed to it as enum value in
29276 "placeHolderInCapBitmap" is supported by Host or not. It uses WDI global
29277 variable storing host capability bitmap to find this. This can be used by
29278 other moduels to decide certain things like call different APIs based on
29279 whether a particular feature is supported.
29280
29281 @param
29282
29283 feat_enum_value: enum value for the feature as in placeHolderInCapBitmap in wlan_hal_msg.h.
29284
29285 @see
29286 @return
29287 0 - if the feature is NOT supported in host
29288 any non-zero value - if the feature is SUPPORTED in host.
29289*/
29290wpt_uint8 WDI_getHostWlanFeatCaps(wpt_uint8 feat_enum_value)
29291{
29292 wpt_uint8 featSupported = 0;
29293 if (gpHostWlanFeatCaps != NULL)
29294 {
29295 getFeatCaps(gpHostWlanFeatCaps, feat_enum_value, featSupported);
29296 }
29297 else
29298 {
Madan Mohan Koyyalamudi8b7f1e62012-10-05 14:56:51 -070029299 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi8bdd3112012-09-24 13:55:14 -070029300 "Caps exchange feature NOT supported. Return NOT SUPPORTED for %u feature", feat_enum_value);
Jeff Johnson295189b2012-06-20 16:38:30 -070029301 }
29302 return featSupported;
29303}
29304
29305/**
29306 @brief WDI_getFwWlanFeatCaps
29307 WDI API that returns whether the feature passed to it as enum value in
29308 "placeHolderInCapBitmap" is supported by FW or not. It uses WDI global
29309 variable storing host capability bitmap to find this. This can be used by
29310 other moduels to decide certain things like call different APIs based on
29311 whether a particular feature is supported.
29312
29313 @param
29314
29315 feat_enum_value: enum value for the feature as in placeHolderInCapBitmap
29316 in wlan_hal_msg.h.
29317
29318 @see
29319 @return
29320 0 - if the feature is NOT supported in FW
29321 any non-zero value - if the feature is SUPPORTED in FW.
29322*/
29323wpt_uint8 WDI_getFwWlanFeatCaps(wpt_uint8 feat_enum_value)
29324{
29325 wpt_uint8 featSupported = 0;
29326 if (gpFwWlanFeatCaps != NULL)
29327 {
29328 getFeatCaps(gpFwWlanFeatCaps, feat_enum_value, featSupported);
29329 }
29330 else
29331 {
Madan Mohan Koyyalamudi8b7f1e62012-10-05 14:56:51 -070029332 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi8bdd3112012-09-24 13:55:14 -070029333 "Caps exchange feature NOT supported. Return NOT SUPPORTED for %u feature", feat_enum_value);
Jeff Johnson295189b2012-06-20 16:38:30 -070029334 }
29335 return featSupported;
29336}
Mohit Khanna4a70d262012-09-11 16:30:12 -070029337
29338#ifdef WLAN_FEATURE_11AC
29339WDI_Status
29340WDI_ProcessUpdateVHTOpModeReq
29341(
29342 WDI_ControlBlockType* pWDICtx,
29343 WDI_EventInfoType* pEventData
29344)
29345{
29346 WDI_UpdateVHTOpMode* pwdiVHTOpModeParams = NULL;
29347 WDI_UpdateVHTOpModeCb wdiVHTOpModeCb = NULL;
29348 wpt_uint8* pSendBuffer = NULL;
29349 wpt_uint16 usDataOffset = 0;
29350 wpt_uint16 usSendSize = 0;
29351
29352 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
29353
29354 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070029355 "%s", __func__);
Mohit Khanna4a70d262012-09-11 16:30:12 -070029356
29357 /*-------------------------------------------------------------------------
29358 Sanity check
29359 -------------------------------------------------------------------------*/
29360 if (( NULL == pEventData ) ||
29361 ( NULL == (pwdiVHTOpModeParams = (WDI_UpdateVHTOpMode*)pEventData->pEventData)) ||
29362 ( NULL == (wdiVHTOpModeCb = (WDI_UpdateVHTOpModeCb)pEventData->pCBfnc)))
29363 {
29364 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070029365 "%s: Invalid parameters", __func__);
Mohit Khanna4a70d262012-09-11 16:30:12 -070029366 WDI_ASSERT(0);
29367 return WDI_STATUS_E_FAILURE;
29368 }
29369
29370 /*-----------------------------------------------------------------------
29371 Get message buffer
29372 -----------------------------------------------------------------------*/
29373 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_VHT_OP_MODE_REQ,
29374 sizeof(WDI_UpdateVHTOpMode),
29375 &pSendBuffer, &usDataOffset, &usSendSize))||
29376 ( usSendSize < (usDataOffset + sizeof(WDI_UpdateVHTOpMode) )))
29377 {
29378 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
29379 "Unable to get send buffer in update vht opMode req");
29380 WDI_ASSERT(0);
29381 return WDI_STATUS_E_FAILURE;
29382 }
29383
29384 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Arif Hussain9a5d5382013-11-17 22:05:35 -080029385 "pwdiVHTOpModeParams->opMode=%d, pwdiVHTOpModeParams->staId=%d", pwdiVHTOpModeParams->opMode, pwdiVHTOpModeParams->staId);
Mohit Khanna4a70d262012-09-11 16:30:12 -070029386
29387 wpalMemoryCopy( pSendBuffer+usDataOffset, pwdiVHTOpModeParams,
29388 sizeof(WDI_UpdateVHTOpMode));
29389
29390 /*-------------------------------------------------------------------------
29391 Send Start Request to HAL
29392 -------------------------------------------------------------------------*/
29393 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
29394 wdiVHTOpModeCb,
29395 pEventData->pUserData, WDI_UPDATE_VHT_OP_MODE_RESP);
29396
29397}
29398
29399WDI_Status
29400WDI_UpdateVHTOpModeReq
29401(
29402 WDI_UpdateVHTOpMode *pData,
29403 WDI_UpdateVHTOpModeCb wdiUpdateVHTOpModeCb,
29404 void* pUserData
29405)
29406{
29407 WDI_EventInfoType wdiEventData;
29408
29409 /*------------------------------------------------------------------------
29410 Sanity Check
29411 ------------------------------------------------------------------------*/
29412 if ( eWLAN_PAL_FALSE == gWDIInitialized )
29413 {
29414 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
29415 "WDI API call before module is initialized - Fail request");
29416
29417 return WDI_STATUS_E_NOT_ALLOWED;
29418 }
29419
29420 /*------------------------------------------------------------------------
29421 Fill in Event data and post to the Main FSM
29422 ------------------------------------------------------------------------*/
29423 wdiEventData.wdiRequest = WDI_UPDATE_VHT_OP_MODE_REQ;
29424 wdiEventData.pEventData = pData;
29425 wdiEventData.uEventDataSize = sizeof(WDI_UpdateVHTOpMode);
29426 wdiEventData.pCBfnc = wdiUpdateVHTOpModeCb;
29427 wdiEventData.pUserData = pUserData;
29428
29429 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Arif Hussain9a5d5382013-11-17 22:05:35 -080029430 "pData->opMode=%d, pData->staId=%d", pData->opMode, pData->staId);
Mohit Khanna4a70d262012-09-11 16:30:12 -070029431
29432 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
29433
29434}
29435#endif
Madan Mohan Koyyalamudi8cb53982012-09-28 14:34:47 -070029436
29437/**
29438 @brief WDI_TransportChannelDebug -
29439 Display DXE Channel debugging information
29440 User may request to display DXE channel snapshot
29441 Or if host driver detects any abnormal stcuk may display
Madan Mohan Koyyalamudi8b7f1e62012-10-05 14:56:51 -070029442
Jeff Johnsonb88db982012-12-10 13:34:59 -080029443 @param displaySnapshot : Display DXE snapshot option
Mihir Shete40a55652014-03-02 14:14:47 +053029444 @param debugFlags : Enable stall detect features
29445 defined by WPAL_DeviceDebugFlags
29446 These features may effect
29447 data performance.
Madan Mohan Koyyalamudi8cb53982012-09-28 14:34:47 -070029448 @see
29449 @return none
29450*/
29451void WDI_TransportChannelDebug
29452(
29453 wpt_boolean displaySnapshot,
Mihir Shete40a55652014-03-02 14:14:47 +053029454 wpt_uint8 debugFlags
Madan Mohan Koyyalamudi8cb53982012-09-28 14:34:47 -070029455)
29456{
Mihir Shete40a55652014-03-02 14:14:47 +053029457 WDTS_ChannelDebug(displaySnapshot, debugFlags);
Madan Mohan Koyyalamudi8cb53982012-09-28 14:34:47 -070029458 return;
Madan Mohan Koyyalamudi3352adb2012-09-28 14:57:24 -070029459}
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -070029460/**
29461 @brief WDI_SsrTimerCB
29462 Callback function for SSR timer, if this is called then the graceful
29463 shutdown for Riva did not happen.
29464
29465 @param pUserData : user data to timer
29466
29467 @see
29468 @return none
29469*/
29470void
29471WDI_SsrTimerCB
29472(
29473 void *pUserData
29474)
29475{
29476 WDI_ControlBlockType* pWDICtx = (WDI_ControlBlockType*)pUserData;
29477 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
29478
29479 if (NULL == pWDICtx )
29480 {
29481 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070029482 "%s: Invalid parameters", __func__);
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -070029483 WDI_ASSERT(0);
29484 return;
29485 }
29486 wpalRivaSubystemRestart();
29487
29488 return;
29489
29490}/*WDI_SsrTimerCB*/
Gopichand Nakkalae620d5a2013-04-26 05:45:57 -070029491
29492/**
29493 @brief WDI_SetEnableSSR -
29494 This API is called to enable/disable SSR on WDI timeout.
29495
29496 @param enableSSR : enable/disable SSR
29497
29498 @see
29499 @return none
29500*/
29501void WDI_SetEnableSSR(wpt_boolean enableSSR)
29502{
29503 gWDICb.bEnableSSR = enableSSR;
29504}
Leo Chang9056f462013-08-01 19:21:11 -070029505
29506
29507#ifdef FEATURE_WLAN_LPHB
29508/**
Leo Changd9df8aa2013-09-26 13:32:26 -070029509 @brief WDI_ProcessLphbInd -
Leo Chang9056f462013-08-01 19:21:11 -070029510 This function will be invoked when FW detects low power
29511 heart beat failure
29512
29513 @param pWDICtx : wdi context
29514 pEventData : indication data
Leo Chang9056f462013-08-01 19:21:11 -070029515 @see
29516 @return Result of the function call
29517*/
29518WDI_Status
Leo Changd9df8aa2013-09-26 13:32:26 -070029519WDI_ProcessLphbInd
Leo Chang9056f462013-08-01 19:21:11 -070029520(
29521 WDI_ControlBlockType* pWDICtx,
29522 WDI_EventInfoType* pEventData
29523)
29524{
29525 WDI_LowLevelIndType wdiInd;
Leo Changd9df8aa2013-09-26 13:32:26 -070029526 tHalLowPowerHeartBeatIndParam lphbIndicationParam;
Leo Chang9056f462013-08-01 19:21:11 -070029527 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
29528
29529 /*-------------------------------------------------------------------------
29530 Sanity check
29531 -------------------------------------------------------------------------*/
29532 if ((NULL == pWDICtx) || (NULL == pEventData) ||
29533 (NULL == pEventData->pEventData))
29534 {
29535 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
29536 "%s: Invalid parameters", __func__);
29537 WDI_ASSERT(0);
29538 return WDI_STATUS_E_FAILURE;
29539 }
29540
29541 /*-------------------------------------------------------------------------
29542 Extract indication and send it to UMAC
29543 -------------------------------------------------------------------------*/
Leo Changd9df8aa2013-09-26 13:32:26 -070029544 wpalMemoryCopy(&lphbIndicationParam,
29545 pEventData->pEventData,
29546 sizeof(tHalLowPowerHeartBeatIndParam));
Leo Chang9056f462013-08-01 19:21:11 -070029547
Leo Changd9df8aa2013-09-26 13:32:26 -070029548 wdiInd.wdiIndicationType = WDI_LPHB_IND;
Leo Chang9056f462013-08-01 19:21:11 -070029549 wdiInd.wdiIndicationData.wdiLPHBTimeoutInd.bssIdx =
Leo Changd9df8aa2013-09-26 13:32:26 -070029550 lphbIndicationParam.bssIdx;
Leo Chang9056f462013-08-01 19:21:11 -070029551 wdiInd.wdiIndicationData.wdiLPHBTimeoutInd.sessionIdx =
Leo Changd9df8aa2013-09-26 13:32:26 -070029552 lphbIndicationParam.sessionIdx;
Leo Chang9056f462013-08-01 19:21:11 -070029553 wdiInd.wdiIndicationData.wdiLPHBTimeoutInd.protocolType =
Leo Changd9df8aa2013-09-26 13:32:26 -070029554 lphbIndicationParam.protocolType;
Leo Chang9056f462013-08-01 19:21:11 -070029555 wdiInd.wdiIndicationData.wdiLPHBTimeoutInd.eventReason =
Leo Changd9df8aa2013-09-26 13:32:26 -070029556 lphbIndicationParam.eventReason;
Leo Chang9056f462013-08-01 19:21:11 -070029557 /*Notify UMAC*/
29558 if (pWDICtx->wdiLowLevelIndCB)
29559 {
29560 pWDICtx->wdiLowLevelIndCB(&wdiInd, pWDICtx->pIndUserData);
29561 }
29562
29563 return WDI_STATUS_SUCCESS;
29564}
29565
29566/**
29567 @brief WDI_ProcessLphbCfgRsp -
29568 LPHB configuration response from FW
29569
29570 @param pWDICtx : wdi context
29571 pEventData : indication data
29572
29573 @see
29574 @return Result of the function call
29575*/
29576WDI_Status WDI_ProcessLphbCfgRsp
29577(
29578 WDI_ControlBlockType* pWDICtx,
29579 WDI_EventInfoType* pEventData
29580)
29581{
29582 WDI_Status wdiStatus;
29583 eHalStatus halStatus;
29584 WDI_LphbCfgCb wdiLphbCfgCb;
29585 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
29586
29587 /*-------------------------------------------------------------------------
29588 Sanity check
29589 -------------------------------------------------------------------------*/
29590 if ((NULL == pWDICtx) || (NULL == pEventData) ||
29591 (NULL == pEventData->pEventData))
29592 {
29593 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
29594 "%s: Invalid parameters", __func__);
29595 WDI_ASSERT(0);
29596 return WDI_STATUS_E_FAILURE;
29597 }
29598
29599 wdiLphbCfgCb = (WDI_LphbCfgCb)pWDICtx->pfncRspCB;
29600
29601 /*-------------------------------------------------------------------------
29602 Extract response and send it to UMAC
29603 -------------------------------------------------------------------------*/
29604 halStatus = *((eHalStatus*)pEventData->pEventData);
29605 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
29606
29607 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
29608 "LPHB Cfg Rsp Return status %d", wdiStatus);
29609 /*Notify UMAC*/
29610 if (NULL != wdiLphbCfgCb)
29611 {
29612 wdiLphbCfgCb(wdiStatus, pWDICtx->pRspCBUserData);
29613 }
29614
29615 return WDI_STATUS_SUCCESS;
29616}
29617
29618/**
29619 @brief WDI_ProcessLPHBConfReq -
29620 LPHB configuration request to FW
29621
29622 @param pWDICtx : wdi context
29623 pEventData : indication data
29624
29625 @see
29626 @return none
29627*/
29628WDI_Status WDI_ProcessLPHBConfReq
29629(
29630 WDI_ControlBlockType* pWDICtx,
29631 WDI_EventInfoType* pEventData
29632)
29633{
29634 WDI_LPHBReq *pLphbReqParams;
29635 WDI_Status wdiStatus;
29636 wpt_uint8* pSendBuffer = NULL;
29637 wpt_uint16 usDataOffset = 0;
29638 wpt_uint16 usSendSize = 0;
29639 tHalLowPowerHeartBeatReq *halLphbReqRarams;
29640 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
29641
29642 /*-------------------------------------------------------------------------
29643 Sanity check
29644 -------------------------------------------------------------------------*/
29645 if ((NULL == pEventData) || (NULL == pEventData->pEventData))
29646 {
29647 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
29648 "%s: Invalid parameters in Suspend ind",__func__);
29649 WDI_ASSERT(0);
29650 return WDI_STATUS_E_FAILURE;
29651 }
29652
29653 pLphbReqParams = (WDI_LPHBReq *)pEventData->pEventData;
29654
29655 /*-----------------------------------------------------------------------
29656 Get message buffer
29657 -----------------------------------------------------------------------*/
29658 if ((WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(pWDICtx,
29659 WDI_LPHB_CFG_REQ,
29660 sizeof(tHalLowPowerHeartBeatReqMsg),
29661 &pSendBuffer, &usDataOffset, &usSendSize))||
29662 (usSendSize < (usDataOffset + sizeof(tHalLowPowerHeartBeatReqMsg))))
29663 {
29664 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
29665 "Unable to get send buffer in LPHB Ind ");
29666 WDI_ASSERT(0);
29667 return WDI_STATUS_E_FAILURE;
29668 }
29669
29670 halLphbReqRarams = (tHalLowPowerHeartBeatReq *)(pSendBuffer + usDataOffset);
29671 wpalMemoryZero(halLphbReqRarams, sizeof(tHalLowPowerHeartBeatReq));
29672
29673 halLphbReqRarams->lowPowerHeartBeatCmdType =
29674 (tANI_U16)(++pLphbReqParams->cmd);
29675 switch ((tANI_U16)pLphbReqParams->cmd)
29676 {
29677 case WDI_LPHB_SET_EN_PARAMS_INDID:
29678 halLphbReqRarams->sessionIdx =
29679 pLphbReqParams->params.lphbEnableReq.session;
29680 halLphbReqRarams->options.control.heartBeatEnable =
29681 pLphbReqParams->params.lphbEnableReq.enable;
29682 halLphbReqRarams->options.control.heartBeatType =
29683 pLphbReqParams->params.lphbEnableReq.item;
29684 break;
29685
29686 case WDI_LPHB_SET_TCP_PARAMS_INDID:
29687 halLphbReqRarams->sessionIdx =
29688 pLphbReqParams->params.lphbTcpParamReq.session;
29689 halLphbReqRarams->options.tcpParams.timeOutSec =
29690 pLphbReqParams->params.lphbTcpParamReq.timeout;
29691 wpalMemoryCopy(&halLphbReqRarams->options.tcpParams.hostIpv4Addr,
29692 &pLphbReqParams->params.lphbTcpParamReq.dev_ip,
29693 sizeof(v_U32_t));
29694 wpalMemoryCopy(&halLphbReqRarams->options.tcpParams.destIpv4Addr,
29695 &pLphbReqParams->params.lphbTcpParamReq.srv_ip,
29696 sizeof(v_U32_t));
29697
29698 wpalMemoryCopy(halLphbReqRarams->options.tcpParams.gatewayMacAddr,
29699 pLphbReqParams->params.lphbTcpParamReq.gateway_mac,
29700 WDI_MAC_ADDR_LEN);
29701
29702 halLphbReqRarams->options.tcpParams.hostPort =
29703 pLphbReqParams->params.lphbTcpParamReq.src_port;
29704 halLphbReqRarams->options.tcpParams.destPort =
29705 pLphbReqParams->params.lphbTcpParamReq.dst_port;
Leo Changd9df8aa2013-09-26 13:32:26 -070029706 halLphbReqRarams->options.tcpParams.timePeriodSec =
29707 pLphbReqParams->params.lphbTcpParamReq.timePeriodSec;
29708 halLphbReqRarams->options.tcpParams.tcpSn =
29709 pLphbReqParams->params.lphbTcpParamReq.tcpSn;
Leo Chang9056f462013-08-01 19:21:11 -070029710 break;
29711
29712 case WDI_LPHB_SET_TCP_PKT_FILTER_INDID:
29713 halLphbReqRarams->sessionIdx =
29714 pLphbReqParams->params.lphbTcpFilterReq.session;
29715 halLphbReqRarams->options.tcpUdpFilter.offset =
29716 pLphbReqParams->params.lphbTcpFilterReq.offset;
29717 halLphbReqRarams->options.tcpUdpFilter.filterLength =
29718 pLphbReqParams->params.lphbTcpFilterReq.length;
29719 wpalMemoryCopy(halLphbReqRarams->options.tcpUdpFilter.filter,
29720 pLphbReqParams->params.lphbTcpFilterReq.filter,
29721 WDI_LPHB_FILTER_LEN);
29722 break;
29723
29724 case WDI_LPHB_SET_UDP_PARAMS_INDID:
29725 halLphbReqRarams->sessionIdx =
29726 pLphbReqParams->params.lphbUdpParamReq.session;
29727 halLphbReqRarams->options.udpParams.timeOutSec =
29728 pLphbReqParams->params.lphbUdpParamReq.timeout;
29729 halLphbReqRarams->options.udpParams.timePeriodSec =
29730 pLphbReqParams->params.lphbUdpParamReq.interval;
29731 wpalMemoryCopy(&halLphbReqRarams->options.udpParams.hostIpv4Addr,
29732 &pLphbReqParams->params.lphbUdpParamReq.dev_ip,
29733 sizeof(v_U32_t));
29734 wpalMemoryCopy(&halLphbReqRarams->options.udpParams.destIpv4Addr,
29735 &pLphbReqParams->params.lphbUdpParamReq.srv_ip,
29736 sizeof(v_U32_t));
29737
29738 wpalMemoryCopy(halLphbReqRarams->options.udpParams.gatewayMacAddr,
29739 pLphbReqParams->params.lphbUdpParamReq.gateway_mac,
29740 WDI_MAC_ADDR_LEN);
29741
29742 halLphbReqRarams->options.udpParams.hostPort =
29743 pLphbReqParams->params.lphbUdpParamReq.src_port;
29744 halLphbReqRarams->options.udpParams.destPort =
29745 pLphbReqParams->params.lphbUdpParamReq.dst_port;
29746 break;
29747
29748 case WDI_LPHB_SET_UDP_PKT_FILTER_INDID:
29749 halLphbReqRarams->sessionIdx =
29750 pLphbReqParams->params.lphbUdpFilterReq.session;
29751 halLphbReqRarams->options.tcpUdpFilter.offset =
29752 pLphbReqParams->params.lphbUdpFilterReq.offset;
29753 halLphbReqRarams->options.tcpUdpFilter.filterLength =
29754 pLphbReqParams->params.lphbUdpFilterReq.length;
29755 wpalMemoryCopy(halLphbReqRarams->options.tcpUdpFilter.filter,
29756 pLphbReqParams->params.lphbUdpFilterReq.filter,
29757 WDI_LPHB_FILTER_LEN);
29758 break;
29759
29760 case WDI_LPHB_SET_NETWORK_INFO_INDID:
29761 /* NA */
29762 break;
29763
29764 default:
29765 break;
29766 }
29767
29768 /*-------------------------------------------------------------------------
29769 Send Suspend Request to HAL
29770 -------------------------------------------------------------------------*/
29771 pWDICtx->pfncRspCB = pEventData->pCBfnc;
29772 pWDICtx->pReqStatusUserData = pEventData->pUserData;
29773
29774 wdiStatus = WDI_SendMsg(pWDICtx, pSendBuffer,
29775 usSendSize, pWDICtx->pfncRspCB,
29776 pWDICtx->pReqStatusUserData,
29777 WDI_LPHB_CFG_RESP);
29778
29779 return wdiStatus;
29780}
29781
29782/**
29783 @brief WDI_LPHBConfReq -
29784 LPHB configuration request API
29785
29786 @param lphbconfParam : configuration parameter
29787 usrData : client context
29788 lphbCfgCb : callback function pointer
29789
29790 @see
29791 @return Success or fail status code
29792*/
29793WDI_Status WDI_LPHBConfReq(void *lphbconfParam,
29794 void *usrData, WDI_LphbCfgCb lphbCfgCb)
29795{
29796 WDI_EventInfoType wdiEventData;
29797
29798 /*------------------------------------------------------------------------
29799 Sanity Check
29800 ------------------------------------------------------------------------*/
29801 if (eWLAN_PAL_FALSE == gWDIInitialized)
29802 {
29803 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
29804 "WDI API call before module is initialized - Fail request");
29805
29806 return WDI_STATUS_E_NOT_ALLOWED;
29807 }
29808
29809 /*------------------------------------------------------------------------
29810 Fill in Event data and post to the Main FSM
29811 ------------------------------------------------------------------------*/
29812 wdiEventData.wdiRequest = WDI_LPHB_CFG_REQ;
29813 wdiEventData.pEventData = lphbconfParam;
29814 wdiEventData.uEventDataSize = sizeof(WDI_LPHBReq);
29815 wdiEventData.pCBfnc = lphbCfgCb;
29816 wdiEventData.pUserData = usrData;
29817
29818 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
29819}
29820#endif /* FEATURE_WLAN_LPHB */
29821
Ravi Joshid2ca7c42013-07-23 08:37:49 -070029822/**
29823 @brief WDI_ProcessIbssPeerInactivityInd
29824 Process peer inactivity indication coming from HAL
29825
29826 @param pWDICtx: pointer to the WLAN DAL context
29827 pEventData: pointer to the event information structure
29828 @see
29829 @return Result of the function call
29830*/
29831WDI_Status
29832WDI_ProcessIbssPeerInactivityInd
29833(
29834 WDI_ControlBlockType* pWDICtx,
29835 WDI_EventInfoType* pEventData
29836)
29837{
29838 WDI_LowLevelIndType wdiInd;
29839 tIbssPeerInactivityIndMsg halIbssIndMsg;
29840
29841 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
29842
29843 /*-------------------------------------------------------------------------
29844 Sanity check
29845 -------------------------------------------------------------------------*/
29846 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
29847 ( NULL == pEventData->pEventData ))
29848 {
29849 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
29850 "%s: Invalid parameters", __func__);
29851 WDI_ASSERT( 0 );
29852 return WDI_STATUS_E_FAILURE;
29853 }
29854
29855 /*-------------------------------------------------------------------------
29856 Extract indication and send it to UMAC
29857 -------------------------------------------------------------------------*/
29858 wpalMemoryCopy( &halIbssIndMsg.ibssPeerInactivityIndParams,
29859 pEventData->pEventData,
29860 sizeof(halIbssIndMsg.ibssPeerInactivityIndParams) );
29861
29862 /*Fill in the indication parameters*/
29863 wdiInd.wdiIndicationType = WDI_IBSS_PEER_INACTIVITY_IND;
29864
29865 wdiInd.wdiIndicationData.wdiIbssPeerInactivityInd.bssIdx
29866 = halIbssIndMsg.ibssPeerInactivityIndParams.bssIdx;
29867
29868 wdiInd.wdiIndicationData.wdiIbssPeerInactivityInd.staIdx
29869 = halIbssIndMsg.ibssPeerInactivityIndParams.staIdx;
29870
29871 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiIbssPeerInactivityInd.staMacAddr,
29872 halIbssIndMsg.ibssPeerInactivityIndParams.staAddr,
29873 sizeof(tSirMacAddr));
29874
29875 /*Notify UMAC*/
29876 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
29877
29878 return WDI_STATUS_SUCCESS;
29879
29880} /*WDI_ProcessIbssPeerInactivityInd*/
Rajeev79dbe4c2013-10-05 11:03:42 +053029881
Chittajit Mitraf5413a42013-10-18 14:20:08 -070029882/**
29883*@brief WDI_RateUpdateInd will be called when the upper MAC
29884 requests the device to set rates.
Rajeev79dbe4c2013-10-05 11:03:42 +053029885
Chittajit Mitraf5413a42013-10-18 14:20:08 -070029886
29887 @param wdiRateUpdateIndParams:
29888
29889
29890 @see
29891 @return Result of the function call
29892*/
29893WDI_Status
29894WDI_RateUpdateInd
29895(
29896 WDI_RateUpdateIndParams *wdiRateUpdateIndParams
29897)
29898{
29899 WDI_EventInfoType wdiEventData;
29900 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
29901
29902 /*------------------------------------------------------------------------
29903 Sanity Check
29904 ------------------------------------------------------------------------*/
29905 if ( eWLAN_PAL_FALSE == gWDIInitialized )
29906 {
29907 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
29908 "WDI API call before module is initialized - Fail request");
29909
29910 return WDI_STATUS_E_NOT_ALLOWED;
29911 }
29912
29913 /*------------------------------------------------------------------------
29914 Fill in Event data and post to the Main FSM
29915 ------------------------------------------------------------------------*/
29916 wdiEventData.wdiRequest = WDI_RATE_UPDATE_IND;
29917 wdiEventData.pEventData = wdiRateUpdateIndParams;
29918 wdiEventData.uEventDataSize = sizeof(WDI_RateUpdateIndParams);
29919 wdiEventData.pCBfnc = NULL;
29920 wdiEventData.pUserData = NULL;
29921
29922 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
29923
29924}/* WDI_RateUpdateInd */
29925
29926/**
29927 @brief Process Rate Update Indication and post it to HAL
29928
29929 @param pWDICtx: pointer to the WLAN DAL context
29930 pEventData: pointer to the event information structure
29931
29932 @see
29933 @return Result of the function call
29934*/
29935WDI_Status
29936WDI_ProcessRateUpdateInd
29937(
29938 WDI_ControlBlockType* pWDICtx,
29939 WDI_EventInfoType* pEventData
29940)
29941{
29942 wpt_uint8* pSendBuffer = NULL;
29943 wpt_uint16 usDataOffset = 0;
29944 wpt_uint16 usSendSize = 0;
29945 WDI_RateUpdateIndParams *pwdiRateUpdateInd = NULL;
29946 tHalRateUpdateInd *pRateUpdateInd;
29947 WDI_Status wdiStatus;
29948
29949 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
29950
29951 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
29952 "%s", __func__);
29953
29954 /*-------------------------------------------------------------------------
29955 Sanity check
29956 -------------------------------------------------------------------------*/
29957 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
29958 {
29959 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
29960 "%s: Invalid parameters", __func__);
29961 WDI_ASSERT(0);
29962 return WDI_STATUS_E_FAILURE;
29963 }
29964 pwdiRateUpdateInd = (WDI_RateUpdateIndParams *)pEventData->pEventData;
29965 /*-----------------------------------------------------------------------
29966 Get message buffer
29967 -----------------------------------------------------------------------*/
29968
29969 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
29970 WDI_RATE_UPDATE_IND,
29971 sizeof(tHalRateUpdateParams),
29972 &pSendBuffer, &usDataOffset, &usSendSize))||
29973 ( usSendSize < (usDataOffset +
29974 sizeof(tHalRateUpdateParams) )))
29975 {
29976 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
29977 "Unable to get send buffer in Rate Update Indication %p ",
29978 pEventData);
29979 WDI_ASSERT(0);
29980 return WDI_STATUS_E_FAILURE;
29981 }
29982
29983 pRateUpdateInd = (tHalRateUpdateInd *)pSendBuffer;
29984
29985 /* Copy the bssid */
29986 wpalMemoryCopy(pRateUpdateInd->halRateUpdateParams.bssid,
29987 pwdiRateUpdateInd->bssid, WDI_MAC_ADDR_LEN);
29988
29989 /* Copy the tx flags */
29990 pRateUpdateInd->halRateUpdateParams.ucastDataRateTxFlag =
29991 pwdiRateUpdateInd->ucastDataRateTxFlag;
29992 pRateUpdateInd->halRateUpdateParams.reliableMcastDataRateTxFlag =
29993 pwdiRateUpdateInd->reliableMcastDataRateTxFlag;
29994 pRateUpdateInd->halRateUpdateParams.mcastDataRate24GHzTxFlag =
29995 pwdiRateUpdateInd->mcastDataRate24GHzTxFlag;
29996 pRateUpdateInd->halRateUpdateParams.mcastDataRate5GHzTxFlag =
29997 pwdiRateUpdateInd->mcastDataRate5GHzTxFlag;
29998
29999 /* Copy the tx rates */
30000 pRateUpdateInd->halRateUpdateParams.ucastDataRate =
30001 pwdiRateUpdateInd->ucastDataRate;
30002 pRateUpdateInd->halRateUpdateParams.reliableMcastDataRate =
30003 pwdiRateUpdateInd->reliableMcastDataRate;
30004 pRateUpdateInd->halRateUpdateParams.mcastDataRate24GHz =
30005 pwdiRateUpdateInd->mcastDataRate24GHz;
30006 pRateUpdateInd->halRateUpdateParams.mcastDataRate5GHz =
30007 pwdiRateUpdateInd->mcastDataRate5GHz;
30008
30009 /*-------------------------------------------------------------------------
30010 Send Rate Update Indication to HAL
30011 -------------------------------------------------------------------------*/
30012 pWDICtx->wdiReqStatusCB = pwdiRateUpdateInd->wdiReqStatusCB;
30013 pWDICtx->pReqStatusUserData = pwdiRateUpdateInd->pUserData;
30014
30015 wdiStatus = WDI_SendIndication(pWDICtx, pSendBuffer, usSendSize);
30016
30017 return (wdiStatus != WDI_STATUS_SUCCESS) ?
30018 wdiStatus : WDI_STATUS_SUCCESS_SYNC;
30019
30020} /* WDI_ProcessRateUpdateInd */
30021
30022#ifdef FEATURE_WLAN_BATCH_SCAN
Rajeev79dbe4c2013-10-05 11:03:42 +053030023/**
30024 @brief Process stop batch indication from WDA
30025
30026 @param pWDICtx: pointer to the WLAN DAL context
30027 pEventData: pointer to the event information structure
30028
30029 @see
30030 @return Result of the function call
30031*/
30032WDI_Status
30033WDI_ProcessStopBatchScanInd
30034(
30035 WDI_ControlBlockType* pWDICtx,
30036 WDI_EventInfoType* pEventData
30037)
30038{
30039 wpt_uint8* pSendBuffer = NULL;
30040 wpt_uint16 usDataOffset = 0;
30041 wpt_uint16 usSendSize = 0;
30042 WDI_Status wdiStatus;
30043 tHalBatchScanStopIndParam *pHalInd = NULL;
30044 WDI_StopBatchScanIndType *pWdiInd = NULL;
30045
30046
30047 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
30048
30049 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
30050 "%s", __func__);
30051
30052 /*-------------------------------------------------------------------------
30053 Sanity check
30054 -------------------------------------------------------------------------*/
30055
30056 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
30057 {
30058 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
30059 "%s: Invalid parameters", __func__);
30060 WDI_ASSERT(0);
30061 return WDI_STATUS_E_FAILURE;
30062 }
30063 pWdiInd = (WDI_StopBatchScanIndType *)pEventData->pEventData;
30064 /*-----------------------------------------------------------------------
30065 Get message buffer
30066 -----------------------------------------------------------------------*/
30067
30068 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
30069 WDI_STOP_BATCH_SCAN_IND,
30070 sizeof(tHalBatchScanStopIndParam),
30071 &pSendBuffer, &usDataOffset, &usSendSize))||
30072 ( usSendSize < (usDataOffset + sizeof(tHalBatchScanStopIndParam))))
30073 {
30074 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
30075 "Unable to get send buffer in stop batch scan ind %p ",
30076 pEventData);
30077 WDI_ASSERT(0);
30078 return WDI_STATUS_E_FAILURE;
30079 }
30080
30081 pHalInd = (tHalBatchScanStopIndParam *)(pSendBuffer + usDataOffset);
30082 pHalInd->param = pWdiInd->param;
30083
30084 pWDICtx->pReqStatusUserData = NULL;
30085 pWDICtx->pfncRspCB = NULL;
30086 /*-------------------------------------------------------------------------
30087 Send Stop batch scan indication to HAL
30088 -------------------------------------------------------------------------*/
30089 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
30090 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus:WDI_STATUS_SUCCESS_SYNC;
30091}
30092
30093/**
30094 @brief This API is called to trigger batch scan results from FW
30095
30096 @param pWDICtx: pointer to the WLAN DAL context
30097 pEventData: pointer to the event information structure
30098
30099 @see
30100 @return Result of the function call
30101*/
30102WDI_Status
30103WDI_ProcessTriggerBatchScanResultInd
30104(
30105 WDI_ControlBlockType* pWDICtx,
30106 WDI_EventInfoType* pEventData
30107)
30108{
30109 WDI_Status wdiStatus;
30110 wpt_uint8* pSendBuffer = NULL;
30111 wpt_uint16 usDataOffset = 0;
30112 wpt_uint16 usSendSize = 0;
30113 tHalBatchScanTriggerResultParam *pHalInd = NULL;
30114 WDI_TriggerBatchScanResultIndType *pWdiInd = NULL;
30115
30116
30117 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
30118
30119 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
30120 "%s", __func__);
30121
30122 /*-------------------------------------------------------------------------
30123 Sanity check
30124 -------------------------------------------------------------------------*/
30125
30126 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
30127 {
30128 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
30129 "%s: Invalid parameters", __func__);
30130 WDI_ASSERT(0);
30131 return WDI_STATUS_E_FAILURE;
30132 }
30133 pWdiInd = (WDI_TriggerBatchScanResultIndType *)pEventData->pEventData;
30134 /*-----------------------------------------------------------------------
30135 Get message buffer
30136 -----------------------------------------------------------------------*/
30137
30138 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
30139 WDI_TRIGGER_BATCH_SCAN_RESULT_IND,
30140 sizeof(tHalBatchScanTriggerResultParam),
30141 &pSendBuffer, &usDataOffset, &usSendSize))||
30142 ( usSendSize < (usDataOffset + sizeof(tHalBatchScanTriggerResultParam))))
30143 {
30144 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
30145 "Unable to get send buffer in stop batch scan ind %p ",
30146 pEventData);
30147 WDI_ASSERT(0);
30148 return WDI_STATUS_E_FAILURE;
30149 }
30150
30151 pHalInd = (tHalBatchScanTriggerResultParam *)(pSendBuffer + usDataOffset);
30152 pHalInd->param = pWdiInd->param;
30153
30154 pWDICtx->pReqStatusUserData = NULL;
30155 pWDICtx->pfncRspCB = NULL;
30156 /*-------------------------------------------------------------------------
30157 Send trigger batch scan result indication to HAL
30158 -------------------------------------------------------------------------*/
30159 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
30160 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus:WDI_STATUS_SUCCESS_SYNC;
30161}
30162
30163
30164/**
30165 @brief Process set batch scan response from FW
30166
30167 @param pWDICtx: pointer to the WLAN DAL context
30168 pEventData: pointer to the event information structure
30169
30170 @see
30171 @return Result of the function call
30172*/
30173WDI_Status
30174WDI_ProcessSetBatchScanRsp
30175(
30176 WDI_ControlBlockType* pWDICtx,
30177 WDI_EventInfoType* pEventData
30178)
30179{
30180 WDI_SetBatchScanCb wdiSetBatchScanCb;
30181 WDI_SetBatchScanRspType *pSetBatchScanRsp;
30182
30183 tHalBatchScanSetRspParam *pHalSetBatchScanRsp;
30184 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
30185
30186 /*sanity check*/
30187 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
30188 ( NULL == pEventData->pEventData))
30189 {
30190 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
30191 "%s: Invalid parameters", __func__);
30192 WDI_ASSERT(0);
30193 return WDI_STATUS_E_FAILURE;
30194 }
30195
30196 wdiSetBatchScanCb = (WDI_SetBatchScanCb)pWDICtx->pfncRspCB;
30197 if ( NULL == wdiSetBatchScanCb)
30198 {
30199 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
30200 "%s: call back function is NULL", __func__);
30201 WDI_ASSERT(0);
30202 return WDI_STATUS_E_FAILURE;
30203 }
30204
30205 pSetBatchScanRsp = wpalMemoryAllocate(sizeof(WDI_SetBatchScanRspType));
30206
30207 if (NULL == pSetBatchScanRsp)
30208 {
30209 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080030210 "Failed to allocate memory in set batch scan response %p %p %p ",
Rajeev79dbe4c2013-10-05 11:03:42 +053030211 pWDICtx, pEventData, pEventData->pEventData);
30212 WDI_ASSERT(0);
30213 return WDI_STATUS_E_FAILURE;
30214 }
30215
Sunil Duttbd736ed2014-05-26 21:19:41 +053030216 /* extract response and send it to UMAC */
Rajeev79dbe4c2013-10-05 11:03:42 +053030217 pHalSetBatchScanRsp = (tHalBatchScanSetRspParam *)pEventData->pEventData;
30218
30219 pSetBatchScanRsp->nScansToBatch = pHalSetBatchScanRsp->supportedMscan;
30220
Sunil Duttbd736ed2014-05-26 21:19:41 +053030221 /* Notify UMAC */
Rajeev79dbe4c2013-10-05 11:03:42 +053030222 wdiSetBatchScanCb(pSetBatchScanRsp, pWDICtx->pRspCBUserData);
30223
30224 wpalMemoryFree(pSetBatchScanRsp);
30225
30226 return WDI_STATUS_SUCCESS;
Sunil Duttbd736ed2014-05-26 21:19:41 +053030227}/* WDI_ProcessSetBatchScanRsp */
Rajeev79dbe4c2013-10-05 11:03:42 +053030228
30229/**
30230 @brief Process batch scan result indication from FW
30231
30232 @param pWDICtx: pointer to the WLAN DAL context
30233 pEventData: pointer to the event information structure
30234
30235 @see
30236 @return Result of the function call
30237*/
30238WDI_Status
30239WDI_ProcessBatchScanResultInd
30240(
30241 WDI_ControlBlockType* pWDICtx,
30242 WDI_EventInfoType* pEventData
30243)
30244{
30245 void *pBatchScanResultInd;
30246 WDI_LowLevelIndType wdiInd;
30247 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
30248
Sunil Duttbd736ed2014-05-26 21:19:41 +053030249 /* sanity check */
Rajeev79dbe4c2013-10-05 11:03:42 +053030250 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
30251 ( NULL == pEventData->pEventData))
30252 {
30253 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
30254 "%s: Invalid parameters", __func__);
30255 WDI_ASSERT(0);
30256 return WDI_STATUS_E_FAILURE;
30257 }
30258
Sunil Duttbd736ed2014-05-26 21:19:41 +053030259 /* extract response and send it to UMAC */
Rajeev79dbe4c2013-10-05 11:03:42 +053030260 pBatchScanResultInd = (void *)pEventData->pEventData;
30261
Sunil Duttbd736ed2014-05-26 21:19:41 +053030262 /* Fill in the indication parameters */
Rajeev79dbe4c2013-10-05 11:03:42 +053030263 wdiInd.wdiIndicationType = WDI_BATCH_SCAN_RESULT_IND;
30264
30265 wdiInd.wdiIndicationData.pBatchScanResult = pBatchScanResultInd;
30266
Sunil Duttbd736ed2014-05-26 21:19:41 +053030267 /* Notify UMAC */
Rajeev79dbe4c2013-10-05 11:03:42 +053030268 if (pWDICtx->wdiLowLevelIndCB)
30269 {
30270 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
30271 }
30272 else
30273 {
30274 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
30275 "%s: WDILowLevelIndCb is null", __func__);
30276 WDI_ASSERT(0);
30277 return WDI_STATUS_E_FAILURE;
30278 }
30279
30280 return WDI_STATUS_SUCCESS;
30281} /*End of WDI_ProcessBatchScanResultInd*/
30282
Sunil Duttbd736ed2014-05-26 21:19:41 +053030283#ifdef WLAN_FEATURE_LINK_LAYER_STATS
30284/**
30285 @brief Process Link Layer Statistics Result indication from FW
30286
30287 @param pWDICtx: pointer to the WLAN DAL context
30288 pEventData: pointer to the event information structure
30289
30290 @see
30291 @return Result of the function call
30292*/
30293WDI_Status
30294WDI_ProcessLinkLayerStatsResultsInd
30295(
30296 WDI_ControlBlockType* pWDICtx,
30297 WDI_EventInfoType* pEventData
30298)
30299{
30300 void *pLinkLayerStatsInd;
Dino Mycled3d50022014-07-07 12:58:25 +053030301 WDI_LLstatsResultsType *halLLStatsResults;
30302 wpt_macAddr macAddr;
Sunil Duttbd736ed2014-05-26 21:19:41 +053030303 WDI_LowLevelIndType wdiInd;
30304 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
30305
30306 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
30307 "%s: Event RESULTS Indication", __func__);
30308
30309 /* sanity check */
30310 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
30311 ( NULL == pEventData->pEventData))
30312 {
30313 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
30314 "%s: Invalid parameters", __func__);
30315 WDI_ASSERT(0);
30316 return WDI_STATUS_E_FAILURE;
30317 }
30318
30319 /* extract response and send it to UMAC */
30320 pLinkLayerStatsInd = (void *)pEventData->pEventData;
30321
30322 /* Fill in the indication parameters */
30323 wdiInd.wdiIndicationType = WDI_LL_STATS_RESULTS_IND;
30324
Dino Mycled3d50022014-07-07 12:58:25 +053030325 wdiInd.wdiIndicationData.wdiLinkLayerStatsResults.pLinkLayerStatsResults
30326 = pLinkLayerStatsInd;
30327
30328 halLLStatsResults = (WDI_LLstatsResultsType *) pLinkLayerStatsInd;
30329
30330
30331 /* Need to fill in the MAC address */
30332 if ( WDI_STATUS_SUCCESS !=
30333 WDI_STATableGetStaMacAddr(pWDICtx,
30334 halLLStatsResults->iface_id,
30335 &macAddr))
30336 {
30337 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
30338 " ifaceId: %u does not exist in the WDI Station Table",
30339 halLLStatsResults->iface_id);
30340
30341 return WDI_STATUS_E_FAILURE;
30342 }
30343 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiLinkLayerStatsResults.macAddr,
30344 macAddr, WDI_MAC_ADDR_LEN);
30345
30346 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
30347 "ifaceId: %u, macAddr: %pM \n", halLLStatsResults->iface_id,
30348 wdiInd.wdiIndicationData.wdiLinkLayerStatsResults.macAddr);
Sunil Duttbd736ed2014-05-26 21:19:41 +053030349
30350 /* Notify UMAC */
30351 if (pWDICtx->wdiLowLevelIndCB)
30352 {
30353 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
30354 }
30355 else
30356 {
30357 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
30358 "%s: WDILowLevelIndCb is null", __func__);
30359 WDI_ASSERT(0);
30360 return WDI_STATUS_E_FAILURE;
30361 }
30362
30363 return WDI_STATUS_SUCCESS;
30364} /* End of WDI_ProcessLinkLayerStatsResultsInd */
30365#endif /* WLAN_FEATURE_LINK_LAYER_STATS */
30366
Rajeev79dbe4c2013-10-05 11:03:42 +053030367/**
30368 @brief WDI_ProcessSetBatchScanReq -
30369 Set batch scan request to FW
30370
30371 @param pWDICtx : wdi context
30372 pEventData : indication data
30373
30374 @see
30375 @return none
30376*/
30377WDI_Status WDI_ProcessSetBatchScanReq
30378(
30379 WDI_ControlBlockType* pWDICtx,
30380 WDI_EventInfoType* pEventData
30381)
30382{
30383 WDI_SetBatchScanReqType *pWdiReq;
30384 WDI_Status wdiStatus;
30385 wpt_uint8* pSendBuffer = NULL;
30386 wpt_uint16 usDataOffset = 0;
30387 wpt_uint16 usSendSize = 0;
30388 tHalBatchScanSetParams *pHalReq;
30389 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
30390
30391 /*sanity check*/
30392 if ((NULL == pEventData) || (NULL == pEventData->pEventData))
30393 {
30394 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
30395 "%s: Invalid parameters in set batch scan request", __func__);
30396 WDI_ASSERT(0);
30397 return WDI_STATUS_E_FAILURE;
30398 }
30399
30400
30401 pWdiReq = (WDI_SetBatchScanReqType *)pEventData->pEventData;
30402
30403
30404 /*get message buffer*/
30405 if ((WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(pWDICtx,
30406 WDI_SET_BATCH_SCAN_REQ,
30407 sizeof(tHalBatchScanSetParams),
30408 &pSendBuffer, &usDataOffset, &usSendSize))||
30409 (usSendSize < (usDataOffset + sizeof(tHalBatchScanSetParams))))
30410 {
30411 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
30412 "Unable to get send buffer for SET_BATCH_SCAN_REQ ");
30413 WDI_ASSERT(0);
30414 return WDI_STATUS_E_FAILURE;
30415 }
30416
30417 pHalReq = (tHalBatchScanSetParams *)(pSendBuffer + usDataOffset);
30418
30419 pHalReq->rtt = pWdiReq->rtt;
30420 pHalReq->rfBand = pWdiReq->rfBand;
30421 pHalReq->bestNetworks = pWdiReq->bestNetwork;
30422 pHalReq->scanInterval = pWdiReq->scanFrequency;
30423 pHalReq->numScan2Batch = pWdiReq->numberOfScansToBatch;
30424
30425 /*send set batch scan request to fw*/
30426 pWDICtx->pfncRspCB = pEventData->pCBfnc;
30427 pWDICtx->pReqStatusUserData = pEventData->pUserData;
30428
30429 wdiStatus = WDI_SendMsg(pWDICtx, pSendBuffer,
30430 usSendSize, pWDICtx->pfncRspCB,
30431 pWDICtx->pReqStatusUserData,
30432 WDI_SET_BATCH_SCAN_RESP);
30433
30434 return wdiStatus;
30435}
30436
30437/**
30438 @brief WDI_SetBatchScanReq
30439 This API is called to set batch scan request in FW
30440
30441 @param pBatchScanReqParam : pointer to set batch scan re param
30442 usrData : Client context
30443 setBatchScanRspCb : set batch scan resp callback
30444 @see
30445 @return SUCCESS or FAIL
30446*/
30447WDI_Status WDI_SetBatchScanReq
30448(
30449 void *pBatchScanReqParam,
30450 void *usrData,
30451 WDI_SetBatchScanCb setBatchScanRspCb
30452)
30453{
30454 WDI_EventInfoType wdiEventData;
30455
30456 /*sanity check*/
30457 if (eWLAN_PAL_FALSE == gWDIInitialized)
30458 {
30459 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
30460 "WDI API call before module is initialized - Fail request");
30461
30462 return WDI_STATUS_E_NOT_ALLOWED;
30463 }
30464
30465 /* fill in event data and post to the main FSM */
30466 wdiEventData.wdiRequest = WDI_SET_BATCH_SCAN_REQ;
30467 wdiEventData.pEventData = pBatchScanReqParam;
30468 wdiEventData.uEventDataSize = sizeof(WDI_SetBatchScanReqType);
30469 wdiEventData.pCBfnc = setBatchScanRspCb;
30470 wdiEventData.pUserData = usrData;
30471
30472 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
30473}
30474
30475/**
30476 @brief WDI_StopbatchScanInd: Send stop batch scan indication to FW
30477
30478 @param None
30479
30480 @see
30481
30482 @return Status of the request
30483*/
30484WDI_Status
30485WDI_StopBatchScanInd(WDI_StopBatchScanIndType *pWdiReq)
30486{
30487 WDI_EventInfoType wdiEventData;
30488
30489 /*-------------------------------------------------------------------------
30490 Sanity Check
30491 ------------------------------------------------------------------------*/
30492 if (eWLAN_PAL_FALSE == gWDIInitialized)
30493 {
30494 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
30495 "WDI API call before module is initialized - Fail request!");
30496
30497 return WDI_STATUS_E_NOT_ALLOWED;
30498 }
30499
30500 /*-------------------------------------------------------------------------
30501 Fill in Event data and post to the Main FSM
30502 ------------------------------------------------------------------------*/
30503 wdiEventData.wdiRequest = WDI_STOP_BATCH_SCAN_IND;
30504 wdiEventData.pEventData = pWdiReq;
30505 wdiEventData.uEventDataSize = sizeof(WDI_StopBatchScanIndType);
30506 wdiEventData.pCBfnc = NULL;
30507 wdiEventData.pUserData = NULL;
30508
30509 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
30510}
30511
30512/**
30513 @brief WDI_TriggerBatchScanResultInd
30514 This API is called to pull batch scan result from FW
30515
30516 @param pWdiReq : pointer to get batch scan ind param
30517 @see
30518 @return SUCCESS or FAIL
30519*/
30520WDI_Status WDI_TriggerBatchScanResultInd
30521(
30522 WDI_TriggerBatchScanResultIndType *pWdiReq
30523)
30524{
30525 WDI_EventInfoType wdiEventData;
30526 /*-------------------------------------------------------------------------
30527 Sanity Check
30528 ------------------------------------------------------------------------*/
30529 if (eWLAN_PAL_FALSE == gWDIInitialized)
30530 {
30531 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
30532 "WDI API call before module is initialized - Fail request!");
30533
30534 return WDI_STATUS_E_NOT_ALLOWED;
30535 }
30536
30537 /*-------------------------------------------------------------------------
30538 Fill in Event data and post to the Main FSM
30539 ------------------------------------------------------------------------*/
30540 wdiEventData.wdiRequest = WDI_TRIGGER_BATCH_SCAN_RESULT_IND;
30541 wdiEventData.pEventData = pWdiReq;
30542 wdiEventData.uEventDataSize = sizeof(WDI_TriggerBatchScanResultIndType);
30543 wdiEventData.pCBfnc = NULL;
30544 wdiEventData.pUserData = NULL;
30545
30546 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
30547}
Rajeev79dbe4c2013-10-05 11:03:42 +053030548#endif /*FEATURE_WLAN_BATCH_SCAN*/
Leo Chang0b0e45a2013-12-15 15:18:55 -080030549
Manjunathappa Prakash86f78ca2014-02-10 18:09:15 -080030550/**
30551 @brief Process Update Channel Rsp function (called when a response is
30552 being received over the bus from HAL)
30553
30554 @param pWDICtx: pointer to the WLAN DAL context
30555 pEventData: pointer to the event information structure
30556
30557 @see
30558 @return Result of the function call
30559*/
30560WDI_Status
30561WDI_ProcessUpdateChanRsp
30562(
30563 WDI_ControlBlockType* pWDICtx,
30564 WDI_EventInfoType* pEventData
30565)
30566{
30567 WDI_Status wdiStatus;
30568 eHalStatus halStatus;
30569 WDI_UpdateChannelRspCb wdiUpdateChanRspCb;
30570 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
30571
30572 /*-------------------------------------------------------------------------
30573 Sanity check
30574 -------------------------------------------------------------------------*/
30575 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
30576 ( NULL == pEventData->pEventData))
30577 {
30578 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
30579 "%s: Invalid parameters", __func__);
30580 WDI_ASSERT(0);
30581 return WDI_STATUS_E_FAILURE;
30582 }
30583
30584 wdiUpdateChanRspCb = (WDI_UpdateChannelRspCb)pWDICtx->pfncRspCB;
30585
30586 /*-------------------------------------------------------------------------
30587 Extract response and send it to UMAC
30588 -------------------------------------------------------------------------*/
30589 halStatus = *((eHalStatus*)pEventData->pEventData);
30590 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
30591
30592 wdiUpdateChanRspCb( wdiStatus, pWDICtx->pRspCBUserData);
30593
30594 return WDI_STATUS_SUCCESS;
30595}/*WDI_ProcessUpdateChanRsp*/
30596
Leo Chang0b0e45a2013-12-15 15:18:55 -080030597#ifdef FEATURE_WLAN_CH_AVOID
30598/**
30599 @brief v -WDI_ProcessChAvoidInd
30600
30601
30602 @param pWDICtx : wdi context
30603 pEventData : indication data
30604 @see
30605 @return Result of the function call
30606*/
30607WDI_Status
30608WDI_ProcessChAvoidInd
30609(
30610 WDI_ControlBlockType* pWDICtx,
30611 WDI_EventInfoType* pEventData
30612)
30613{
30614 WDI_LowLevelIndType wdiInd;
30615 tHalAvoidFreqRangeIndParams chAvoidIndicationParam;
30616 wpt_uint16 rangeLoop;
30617 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
30618
30619 /*-------------------------------------------------------------------------
30620 Sanity check
30621 -------------------------------------------------------------------------*/
30622 if ((NULL == pWDICtx) || (NULL == pEventData) ||
30623 (NULL == pEventData->pEventData))
30624 {
30625 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
30626 "%s: Invalid parameters", __func__);
30627 WDI_ASSERT(0);
30628 return WDI_STATUS_E_FAILURE;
30629 }
30630
30631 /*-------------------------------------------------------------------------
30632 Extract indication and send it to UMAC
30633 -------------------------------------------------------------------------*/
30634 wpalMemoryCopy(&chAvoidIndicationParam,
30635 pEventData->pEventData,
30636 sizeof(tHalAvoidFreqRangeIndParams));
30637
30638 wdiInd.wdiIndicationType = WDI_CH_AVOID_IND;
30639 wdiInd.wdiIndicationData.wdiChAvoidInd.avoidRangeCount =
30640 chAvoidIndicationParam.avoidCnt;
30641 wpalMemoryCopy((void *)wdiInd.wdiIndicationData.wdiChAvoidInd.avoidFreqRange,
30642 (void *)chAvoidIndicationParam.avoidRange,
30643 wdiInd.wdiIndicationData.wdiChAvoidInd.avoidRangeCount *
30644 sizeof(WDI_ChAvoidFreqType));
30645 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
30646 "%s: band count %d", __func__,
30647 wdiInd.wdiIndicationData.wdiChAvoidInd.avoidRangeCount);
30648 for (rangeLoop = 0; rangeLoop < chAvoidIndicationParam.avoidCnt; rangeLoop++)
30649 {
30650 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
30651 "%s: srart freq %d, end freq %d", __func__,
30652 wdiInd.wdiIndicationData.wdiChAvoidInd.avoidFreqRange[rangeLoop].startFreq,
30653 wdiInd.wdiIndicationData.wdiChAvoidInd.avoidFreqRange[rangeLoop].endFreq);
30654 }
30655
30656 /*Notify UMAC*/
30657 if (pWDICtx->wdiLowLevelIndCB)
30658 {
30659 pWDICtx->wdiLowLevelIndCB(&wdiInd, pWDICtx->pIndUserData);
30660 }
30661
30662 return WDI_STATUS_SUCCESS;
30663}
Atul Mittalc0f739f2014-07-31 13:47:47 +053030664
Leo Chang0b0e45a2013-12-15 15:18:55 -080030665#endif /* FEATURE_WLAN_CH_AVOID */
30666
Sandeep Puligilla8b8b74b2014-02-10 16:39:05 +053030667/**
30668 @brief Process OBSS Start scan result indication
30669
30670 @param pWDICtx: pointer to the WLAN DAL context
30671 pEventData: pointer to the event information structure
30672
30673 @see
30674 @return Result of the function call
30675*/
30676WDI_Status
30677WDI_ProcessHT40OBSSScanInd
30678(
30679 WDI_ControlBlockType* pWDICtx,
30680 WDI_EventInfoType* pEventData
30681)
30682{
30683 wpt_uint8* pSendBuffer = NULL;
30684 wpt_uint16 usDataOffset = 0;
30685 wpt_uint16 usSendSize = 0;
30686 wpt_uint16 usLen = 0;
30687 WDI_HT40ObssScanIndType *pwdiHT40OBSSScanInd = NULL;
30688 WDI_HT40ObssScanParamsType *pwdiHT40OBSSScanParams = NULL;
30689 tHT40ObssScanIndType* pHT40ObssScanInd = NULL;
30690 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
30691
30692 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
30693
Deepthi Gowri2bbf56f2014-12-22 13:15:14 +053030694 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Sandeep Puligilla8b8b74b2014-02-10 16:39:05 +053030695 "%s", __func__);
30696
30697 /*-------------------------------------------------------------------------
30698 Sanity check
30699 -------------------------------------------------------------------------*/
30700 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
30701 {
30702 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
30703 "%s: Invalid parameters", __func__);
30704 WDI_ASSERT(0);
30705 return WDI_STATUS_E_FAILURE;
30706 }
30707 pwdiHT40OBSSScanParams = (WDI_HT40ObssScanParamsType*)pEventData->pEventData;
30708
30709 pwdiHT40OBSSScanInd = &pwdiHT40OBSSScanParams->wdiHT40ObssScanParam;
30710 /*-----------------------------------------------------------------------
30711 Get message buffer
30712 -----------------------------------------------------------------------*/
30713
30714 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
30715 WDI_START_HT40_OBSS_SCAN_IND,
30716 sizeof(tHT40ObssScanIndType),
30717 &pSendBuffer, &usDataOffset, &usSendSize))||
30718 ( usSendSize < (usDataOffset + usLen )))
30719 {
30720 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
30721 "Unable to get send buffer in HT40 OBSS Start req %p ",
30722 pEventData);
30723 WDI_ASSERT(0);
30724 return WDI_STATUS_E_FAILURE;
30725 }
30726 pHT40ObssScanInd = (tHT40ObssScanIndType*)(pSendBuffer+usDataOffset);
30727 pHT40ObssScanInd->cmdType = pwdiHT40OBSSScanInd->cmdType;
30728 pHT40ObssScanInd->scanType = pwdiHT40OBSSScanInd->scanType;
30729 pHT40ObssScanInd->OBSSScanPassiveDwellTime =
30730 pwdiHT40OBSSScanInd->OBSSScanPassiveDwellTime;
30731 pHT40ObssScanInd->OBSSScanActiveDwellTime =
30732 pwdiHT40OBSSScanInd->OBSSScanActiveDwellTime;
30733 pHT40ObssScanInd->BSSChannelWidthTriggerScanInterval =
30734 pwdiHT40OBSSScanInd->BSSChannelWidthTriggerScanInterval;
30735 pHT40ObssScanInd->OBSSScanPassiveTotalPerChannel =
30736 pwdiHT40OBSSScanInd->OBSSScanPassiveTotalPerChannel;
30737 pHT40ObssScanInd->OBSSScanActiveTotalPerChannel =
30738 pwdiHT40OBSSScanInd->OBSSScanActiveTotalPerChannel;
30739 pHT40ObssScanInd->BSSWidthChannelTransitionDelayFactor =
30740 pwdiHT40OBSSScanInd->BSSWidthChannelTransitionDelayFactor;
30741 pHT40ObssScanInd->OBSSScanActivityThreshold =
30742 pwdiHT40OBSSScanInd->OBSSScanActivityThreshold;
30743 pHT40ObssScanInd->selfStaIdx =
30744 pwdiHT40OBSSScanInd->selfStaIdx;
30745 pHT40ObssScanInd->bssIdx =
30746 pwdiHT40OBSSScanInd->bssIdx;
Hardik Kantilal Pateld3912032014-11-21 16:54:07 +053030747 pHT40ObssScanInd->currentOperatingClass =
30748 pwdiHT40OBSSScanInd->currentOperatingClass;
Sandeep Puligilla8b8b74b2014-02-10 16:39:05 +053030749 pHT40ObssScanInd->fortyMHZIntolerent =
30750 pwdiHT40OBSSScanInd->fortyMHZIntolerent;
30751 pHT40ObssScanInd->channelCount =
30752 pwdiHT40OBSSScanInd->channelCount;
30753
30754 wpalMemoryCopy(pHT40ObssScanInd->channels, pwdiHT40OBSSScanInd->channels,
30755 WDI_ROAM_SCAN_MAX_CHANNELS);
30756 pHT40ObssScanInd->ieFieldLen =
30757 pwdiHT40OBSSScanInd->ieFieldLen;
30758
30759 wpalMemoryCopy(pHT40ObssScanInd->ieField, pwdiHT40OBSSScanInd->ieField,
30760 WDI_ROAM_SCAN_MAX_PROBE_SIZE);
30761 pWDICtx->pReqStatusUserData = NULL;
30762 pWDICtx->pfncRspCB = NULL;
30763
30764 pWDICtx->wdiReqStatusCB = pwdiHT40OBSSScanParams->wdiReqStatusCB;
30765 pWDICtx->pReqStatusUserData = pwdiHT40OBSSScanParams->pUserData;
30766
30767 /*-------------------------------------------------------------------------
30768 Send OBSS Start Indication to HAL
30769 -------------------------------------------------------------------------*/
30770 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
30771 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus:WDI_STATUS_SUCCESS_SYNC;
30772
30773} /*End of WDI_ProcessHT40OBSSStartScanInd*/
30774
30775
30776/**
30777 @brief wdi_HT40OBSSScanInd
30778 This API is called to start OBSS scan
30779
30780 @param pWdiReq : pointer to get ind param
30781 @see
30782 @return SUCCESS or FAIL
30783*/
30784WDI_Status WDI_HT40OBSSScanInd
30785(
30786 WDI_HT40ObssScanParamsType *pWdiReq
30787)
30788{
30789 WDI_EventInfoType wdiEventData;
30790
30791 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
30792 "%s", __func__);
30793 /*-------------------------------------------------------------------------
30794 Sanity Check
30795 ------------------------------------------------------------------------*/
30796 if (eWLAN_PAL_FALSE == gWDIInitialized)
30797 {
30798 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
30799 "WDI API call before module is initialized - Fail request!");
30800
30801 return WDI_STATUS_E_NOT_ALLOWED;
30802 }
30803
30804 /*-------------------------------------------------------------------------
30805 Fill in Event data and post to the Main FSM
30806 ------------------------------------------------------------------------*/
30807 wdiEventData.wdiRequest = WDI_START_HT40_OBSS_SCAN_IND;
30808 wdiEventData.pEventData = pWdiReq;
30809 wdiEventData.uEventDataSize = sizeof(WDI_HT40ObssScanParamsType);
30810 wdiEventData.pCBfnc = NULL;
30811 wdiEventData.pUserData = NULL;
30812
30813
30814 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
30815}
30816
30817/**
30818 @brief Process OBSS Stop scan result
30819
30820 @param pWDICtx: pointer to the WLAN DAL context
30821 pEventData: pointer to the event information structure
30822
30823 @see
30824 @return Result of the function call
30825*/
30826WDI_Status
30827WDI_ProcessHT40OBSSStopScanInd
30828(
30829 WDI_ControlBlockType* pWDICtx,
30830 WDI_EventInfoType* pEventData
30831)
30832{
30833 wpt_uint8* pSendBuffer = NULL;
30834 wpt_uint16 usDataOffset = 0;
30835 wpt_uint16 usSendSize = 0;
30836 wpt_uint16 usLen = 0;
30837 wpt_uint8 *wdiBssIdx = 0;
30838 tANI_U8 *bssIdx = 0;
30839 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
30840
30841 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
30842
30843 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
30844 "%s", __func__);
30845
30846 /*-------------------------------------------------------------------------
30847 Sanity check
30848 -------------------------------------------------------------------------*/
30849 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
30850 {
30851 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
30852 "%s: Invalid parameters", __func__);
30853 WDI_ASSERT(0);
30854 return WDI_STATUS_E_FAILURE;
30855 }
30856 bssIdx = (wpt_uint8*)pEventData->pEventData;
30857 /*-----------------------------------------------------------------------
30858 Get message buffer
30859 -----------------------------------------------------------------------*/
30860
30861 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
30862 WDI_STOP_HT40_OBSS_SCAN_IND,
30863 sizeof(tANI_U8),
30864 &pSendBuffer, &usDataOffset, &usSendSize))||
30865 ( usSendSize < (usDataOffset + usLen )))
30866 {
30867 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
30868 "Unable to get send buffer in HT40 OBSS Start req %p ",
30869 pEventData);
30870 WDI_ASSERT(0);
30871 return WDI_STATUS_E_FAILURE;
30872 }
30873
30874 bssIdx = (tANI_U8*)pSendBuffer+usDataOffset;
30875 bssIdx = wdiBssIdx;
30876
30877 pWDICtx->pReqStatusUserData = NULL;
30878 pWDICtx->pfncRspCB = NULL;
30879
30880 /*-------------------------------------------------------------------------
30881 Send DHCP Start Indication to HAL
30882 -------------------------------------------------------------------------*/
30883 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
30884 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus:WDI_STATUS_SUCCESS_SYNC;
30885} /*End of WDI_ProcessHT40OBSSStopScanInd*/
30886
30887/**
30888 @brief WDI_HT40OBSSStopScanInd
30889 This API is called to start OBSS scan
30890 @param pWdiReq : pointer to get ind param
30891 @see
30892 @return SUCCESS or FAIL
30893*/
30894WDI_Status WDI_HT40OBSSStopScanInd
30895(
30896 wpt_uint8 bssIdx
30897)
30898{
30899 WDI_EventInfoType wdiEventData;
30900
30901 /*-------------------------------------------------------------------------
30902 Sanity Check
30903 ------------------------------------------------------------------------*/
30904 if (eWLAN_PAL_FALSE == gWDIInitialized)
30905 {
30906 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
30907 "WDI API call before module is initialized - Fail request!");
30908
30909 return WDI_STATUS_E_NOT_ALLOWED;
30910 }
30911
30912 /*-------------------------------------------------------------------------
30913 Fill in Event data and post to the Main FSM
30914 ------------------------------------------------------------------------*/
30915 wdiEventData.wdiRequest = WDI_STOP_HT40_OBSS_SCAN_IND;
30916 wdiEventData.pEventData = &bssIdx;
30917 wdiEventData.uEventDataSize = sizeof(wpt_uint8);
30918 wdiEventData.pCBfnc = NULL;
30919 wdiEventData.pUserData = NULL;
30920
30921 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
30922}
30923
c_hpothu86041002014-04-14 19:06:51 +053030924WDI_Status
30925WDI_printRegInfo
30926(
30927 WDI_ControlBlockType* pWDICtx,
30928 WDI_EventInfoType* pEventData
30929)
30930{
30931 tHalRegDebugInfo *pRegTable;
30932 tHalRegDebugInfoParams *pRegParams;
30933 uint32 cnt=0;
30934
30935 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
30936 "%s: ", __func__);
30937 /*-------------------------------------------------------------------------
30938 Sanity check
30939 -------------------------------------------------------------------------*/
30940 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
30941 ( NULL == pEventData->pEventData))
30942 {
30943 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
30944 "%s: Invalid parameters", __func__);
30945 WDI_ASSERT(0);
30946 return WDI_STATUS_E_FAILURE;
30947 }
30948
30949 pRegParams = (tHalRegDebugInfoParams *)pEventData->pEventData;
30950
30951 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
30952 "%s: regCount: %x scenario: %x reasonCode: %x", __func__,
30953 pRegParams->regCount, pRegParams->scenario, pRegParams->reasonCode);
30954
30955 pRegTable = (tHalRegDebugInfo *)(pRegParams+1); //data starts after regParams
30956
30957 if (pRegParams->regCount <= 0)
30958 {
30959 WPAL_TRACE (eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
30960 "%s incorrect parameters passed", __func__);
30961 return WDI_STATUS_E_FAILURE;
30962 }
30963
30964 while(pRegParams->regCount--)
30965 {
30966 WPAL_TRACE (eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
30967 "%x: %x", pRegTable[cnt].regAddr, pRegTable[cnt].regValue);
30968 cnt++;
30969 }
30970
30971 return WDI_STATUS_SUCCESS;
30972}
c_hpothu92367912014-05-01 15:18:17 +053030973
30974/*
Abhishek Singh66c16762014-08-14 19:13:19 +053030975 * FUNCTION: WDI_delBaInd
30976 * send the delBA to peer.
30977 */
30978
30979WDI_Status
30980WDI_delBaInd
30981(
30982 WDI_ControlBlockType* pWDICtx,
30983 WDI_EventInfoType* pEventData
30984
30985)
30986{
30987 tHalWlanDelBaIndMsg halDelBaInd;
30988 WDI_LowLevelIndType wdiInd;
30989 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
30990
30991 /*-------------------------------------------------------------------------
30992 Sanity check
30993 -------------------------------------------------------------------------*/
30994 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
30995 ( NULL == pEventData->pEventData))
30996 {
30997 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
30998 "%s: Invalid parameters", __func__);
30999 WDI_ASSERT(0);
31000 return WDI_STATUS_E_FAILURE;
31001 }
31002
31003 /*-------------------------------------------------------------------------
31004 Extract indication and send it to UMAC
31005 -------------------------------------------------------------------------*/
31006
31007 /* Parameters need to be unpacked according to HAL struct*/
31008 wpalMemoryCopy( &halDelBaInd,
31009 pEventData->pEventData,
31010 sizeof(halDelBaInd));
31011
31012 /*Fill in the indication parameters*/
31013 wdiInd.wdiIndicationType = WDI_DEL_BA_IND;
31014
31015 wdiInd.wdiIndicationData.wdiDeleteBAInd.staIdx = halDelBaInd.staIdx;
31016 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiDeleteBAInd.peerMacAddr,
31017 halDelBaInd.peerMacAddr, WDI_MAC_ADDR_LEN);
31018
31019 wdiInd.wdiIndicationData.wdiDeleteBAInd.baTID = halDelBaInd.baTID;
31020 wdiInd.wdiIndicationData.wdiDeleteBAInd.baDirection = halDelBaInd.baDirection;
31021 wdiInd.wdiIndicationData.wdiDeleteBAInd.reasonCode = halDelBaInd.reasonCode;
31022
31023 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiDeleteBAInd.bssId,
31024 halDelBaInd.bssId, WDI_MAC_ADDR_LEN);
31025 if ( pWDICtx->wdiLowLevelIndCB )
31026 {
31027 /*Notify UMAC*/
31028 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
31029 }
31030
31031 return WDI_STATUS_SUCCESS;
31032
31033
31034}
31035
31036/*
c_hpothu92367912014-05-01 15:18:17 +053031037 * FUNCTION: WDI_ProcessGetBcnMissRateRsp
31038 * send the response to PE with beacon miss count
31039 * received from WDI.
31040 */
31041WDI_Status
31042WDI_ProcessGetBcnMissRateRsp
31043(
31044 WDI_ControlBlockType* pWDICtx,
31045 WDI_EventInfoType* pEventData
31046)
31047{
31048 WDI_GetBcnMissRateCb wdiGetBcnMissRateCb;
31049 tpHalBcnMissRateRspParams pHalBcnMissRateRsp;
31050
31051 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
31052 "In %s",__func__);
31053 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
31054
31055 /*-------------------------------------------------------------------------
31056 Sanity check
31057 -------------------------------------------------------------------------*/
31058 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
31059 ( NULL == pEventData->pEventData))
31060 {
31061 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
31062 "%s: Invalid parameters", __func__);
31063 WDI_ASSERT(0);
31064 return WDI_STATUS_E_FAILURE;
31065 }
31066
31067 pHalBcnMissRateRsp = (tHalBcnMissRateRspParams *)pEventData->pEventData;
31068 wdiGetBcnMissRateCb = (WDI_GetBcnMissRateCb)pWDICtx->pfncRspCB;
31069
31070 /*Notify UMAC*/
31071 wdiGetBcnMissRateCb(pHalBcnMissRateRsp->status,
31072 pHalBcnMissRateRsp->bcnMissCnt, pWDICtx->pRspCBUserData);
31073 return WDI_STATUS_SUCCESS;
31074}
31075
31076/*
31077 * FUNCTION: WDI_ProcessGetBcnMissRateReq
31078 * Request to WDI to get missed beacon rate.
31079 */
31080WDI_Status
31081WDI_ProcessGetBcnMissRateReq
31082(
31083 WDI_ControlBlockType* pWDICtx,
31084 WDI_EventInfoType* pEventData
31085)
31086{
31087 wpt_uint8* pSendBuffer = NULL;
31088 wpt_uint16 usDataOffset = 0;
31089 wpt_uint16 usSendSize = 0;
31090 wpt_uint8 ucCurrentBSSSesIdx = 0;
31091 WDI_BSSSessionType* pBSSSes = NULL;
c_hpothu92367912014-05-01 15:18:17 +053031092 WDI_GetBcnMissRateCb *wdiGetBcnMissRateCb;
31093 tHalBcnMissRateReqParams halBcnMissRateReq;
31094
31095/*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
31096
31097 /*-------------------------------------------------------------------------
31098 Sanity check
31099 -------------------------------------------------------------------------*/
31100 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData) ||
31101 ( NULL == pEventData->pCBfnc ) )
31102 {
31103 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
31104 "%s: Invalid parameters", __func__);
31105 WDI_ASSERT(0);
31106 return WDI_STATUS_E_FAILURE;
31107 }
31108
31109 wdiGetBcnMissRateCb = (WDI_GetBcnMissRateCb *)pEventData->pCBfnc;
31110
31111 wpalMutexAcquire(&pWDICtx->wptMutex);
31112
31113 ucCurrentBSSSesIdx = WDI_FindAssocSession(pWDICtx,
31114 pEventData->pEventData, &pBSSSes);
31115 if ( NULL == pBSSSes )
31116 {
31117 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
31118 "%s: Association sequence for this BSS does not yet exist. macBSSID"
c_hpothu3c986b22014-07-09 14:45:09 +053031119 MAC_ADDRESS_STR, __func__,
31120 MAC_ADDR_ARRAY((wpt_uint8 *)(pEventData->pEventData)));
c_hpothu92367912014-05-01 15:18:17 +053031121 wpalMutexRelease(&pWDICtx->wptMutex);
31122 return WDI_STATUS_E_NOT_ALLOWED;
31123 }
31124 wpalMutexRelease(&pWDICtx->wptMutex);
31125
31126 /*-----------------------------------------------------------------------
31127 Get message buffer
31128 -----------------------------------------------------------------------*/
31129 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
31130 pWDICtx, WDI_GET_BCN_MISS_RATE_REQ,
31131 sizeof(tHalBcnMissRateReqParams),
31132 &pSendBuffer, &usDataOffset, &usSendSize)) ||
31133 ( usSendSize < (usDataOffset + sizeof(tHalBcnMissRateReqParams))))
31134 {
31135 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
31136 "Unable to get send buffer in get WDI_GET_BCN_MISS_RATE_REQ %p",
31137 pEventData);
31138 WDI_ASSERT(0);
31139 return WDI_STATUS_E_FAILURE;
31140 }
31141
31142 pWDICtx->wdiReqStatusCB = NULL;
31143 pWDICtx->pReqStatusUserData = pEventData->pUserData;
31144
31145 halBcnMissRateReq.bssIdx = ucCurrentBSSSesIdx;
31146
31147 wpalMemoryCopy( pSendBuffer+usDataOffset,
31148 &halBcnMissRateReq,
31149 sizeof(tHalBcnMissRateReqParams));
31150 /*-------------------------------------------------------------------------
31151 Send Get STA Request to HAL
31152 -------------------------------------------------------------------------*/
31153 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize, wdiGetBcnMissRateCb,
31154 pEventData->pUserData, WDI_GET_BCN_MISS_RATE_RSP);
31155}
31156
31157/**
31158 @brief WDI_GetBcnMissRate
31159
31160 @param pUserData: user data will be passed back with the
31161 callback
31162 WDI_GetBcnMissRateCb: callback for passing back the response
31163 of the get stats operation received from the device
31164 bssid: bssid, to send bssIdx to FW
31165
31166 @return SUCCESS or FAIL
31167*/
31168WDI_Status WDI_GetBcnMissRate( void *pUserData,
31169 WDI_GetBcnMissRateCb wdiGetBcnMissRateCb,
31170 tANI_U8 *bssid )
31171{
31172 WDI_EventInfoType wdiEventData;
31173
31174 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
31175
31176 /*------------------------------------------------------------------------
31177 Sanity Check
31178 ------------------------------------------------------------------------*/
31179 if ( eWLAN_PAL_FALSE == gWDIInitialized )
31180 {
31181 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
31182 "WDI API call before module is initialized - Fail request");
31183
31184 return WDI_STATUS_E_NOT_ALLOWED;
31185 }
31186
31187 /*------------------------------------------------------------------------
31188 Fill in Event data and post to the Main FSM
31189 ------------------------------------------------------------------------*/
31190 wdiEventData.wdiRequest = WDI_GET_BCN_MISS_RATE_REQ;
31191 wdiEventData.pEventData = bssid;
31192 wdiEventData.uEventDataSize = sizeof(tSirMacAddr);
31193 wdiEventData.pCBfnc = wdiGetBcnMissRateCb;
31194 wdiEventData.pUserData = pUserData;
31195
31196 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
31197}
Abhishek Singh85b74712014-10-08 11:38:19 +053031198
31199/*
31200 * FUNCTION: WDI_ProcessGetFwStatsRsp
31201 * send the response with FW stats asked.
31202 */
31203WDI_Status
31204 WDI_ProcessGetFwStatsRsp
31205(
31206 WDI_ControlBlockType* pWDICtx,
31207 WDI_EventInfoType* pEventData
31208)
31209{
31210 WDI_FWStatsGetRspCb wdiGetFwstatsCb;
31211 tpHalfwStatsRspParams pHalFwstatsRsp;
31212 WDI_FWStatsResults fwStats;
31213
31214 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
31215
31216 /*-------------------------------------------------------------------------
31217 Sanity check
31218 -------------------------------------------------------------------------*/
31219 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
31220 ( NULL == pEventData->pEventData))
31221 {
31222 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
31223 "%s: Invalid parameters", __func__);
31224 WDI_ASSERT(0);
31225 return WDI_STATUS_E_FAILURE;
31226 }
31227 pHalFwstatsRsp = (tHalfwStatsRspParams *)pEventData->pEventData;
31228 wdiGetFwstatsCb = (WDI_FWStatsGetRspCb) pWDICtx->pfncRspCB;
31229
31230 if(pHalFwstatsRsp->length)
31231 {
31232 switch( pHalFwstatsRsp->type )
31233 {
31234 case FW_UBSP_STATS:
31235 {
31236 ubspFwStats *ubspStatsfromFw;
31237
31238 fwStats.type = pHalFwstatsRsp->type;
31239 ubspStatsfromFw = (ubspFwStats *) pHalFwstatsRsp->data;
31240 fwStats.wdiFwStatsData.ubspStats.ubsp_enter_cnt =
31241 ubspStatsfromFw->ubsp_enter_cnt;
31242 fwStats.wdiFwStatsData.ubspStats.ubsp_jump_ddr_cnt =
31243 ubspStatsfromFw->ubsp_jump_ddr_cnt;
31244 }
31245 break;
31246 default:
31247 {
31248 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
31249 "%s: No handling for stats type %d", __func__,
31250 pHalFwstatsRsp->type);
31251 wdiGetFwstatsCb(WDI_STATUS_E_FAILURE,
31252 NULL, pWDICtx->pRspCBUserData);
31253 return WDI_STATUS_E_FAILURE;
31254 }
31255 }
31256 wdiGetFwstatsCb(WDI_STATUS_SUCCESS, &fwStats , pWDICtx->pRspCBUserData);
31257 }
31258 else
31259 {
31260 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
31261 "%s: Length = 0 for type %d return failure ", __func__,
31262 pHalFwstatsRsp->type);
31263 wdiGetFwstatsCb(WDI_STATUS_E_FAILURE,
31264 NULL, pWDICtx->pRspCBUserData);
31265 return WDI_STATUS_E_FAILURE;
31266 }
31267 return WDI_STATUS_SUCCESS;
31268}
31269
31270/*
31271 * FUNCTION: WDI_ProcessGetFwStatsReq
31272 * Request to WDI to get FW Stats.
31273 */
31274WDI_Status
31275 WDI_ProcessGetFwStatsReq
31276(
31277 WDI_ControlBlockType* pWDICtx,
31278 WDI_EventInfoType* pEventData
31279)
31280{
31281 wpt_uint8* pSendBuffer = NULL;
31282 wpt_uint16 usDataOffset = 0;
31283 wpt_uint16 usSendSize = 0;
31284 WDI_FWStatsGetRspCb *wdiGetFwstatsCb;
31285 tHalfwStatsReqParams halFwStatsReq;
31286
31287 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
31288
31289 /*-------------------------------------------------------------------------
31290 Sanity check
31291 -------------------------------------------------------------------------*/
31292 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData) ||
31293 ( NULL == pEventData->pCBfnc ) )
31294 {
31295 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
31296 "%s: Invalid parameters", __func__);
31297 WDI_ASSERT(0);
31298 return WDI_STATUS_E_FAILURE;
31299 }
31300
31301 wdiGetFwstatsCb = (WDI_FWStatsGetRspCb *)pEventData->pCBfnc;
31302
31303 /*-----------------------------------------------------------------------
31304 Get message buffer
31305 -----------------------------------------------------------------------*/
31306 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
31307 pWDICtx, WDI_GET_FW_STATS_REQ,
31308 sizeof(tHalfwStatsReqParams),
31309 &pSendBuffer, &usDataOffset, &usSendSize)) ||
31310 ( usSendSize < (usDataOffset + sizeof(tHalfwStatsReqParams))))
31311 {
31312 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
31313 "Unable to get send buffer in get WDI_GET_FW_STAS_REQ %p",
31314 pEventData);
31315 WDI_ASSERT(0);
31316 return WDI_STATUS_E_FAILURE;
31317 }
31318
31319 pWDICtx->wdiReqStatusCB = NULL;
31320 pWDICtx->pReqStatusUserData = pEventData->pEventData;
31321 halFwStatsReq.type = *((wpt_uint32 *)(pEventData->pEventData));
31322 wpalMemoryCopy( pSendBuffer+usDataOffset,
31323 &halFwStatsReq,
31324 sizeof(tHalfwStatsReqParams));
31325 /*-------------------------------------------------------------------------
31326 Send Get STA Request to HAL
31327 -------------------------------------------------------------------------*/
31328 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize, wdiGetFwstatsCb,
31329 pEventData->pUserData, WDI_GET_FW_STATS_RSP);
31330}
31331
Sunil Duttbd736ed2014-05-26 21:19:41 +053031332#ifdef WLAN_FEATURE_LINK_LAYER_STATS
31333
31334/**
31335 @brief WDI_LLStatsSetReq
31336 This API is called to set link layer stats request in FW
31337
31338 @param pwdiLLStatsSetReqParams : pointer to set link layer request params
31339 wdiLLStatsSetRspCb : set link layer stats resp callback
31340 usrData : Client context
31341 @see
31342 @return SUCCESS or FAIL
31343*/
31344WDI_Status
31345WDI_LLStatsSetReq(WDI_LLStatsSetReqType* pwdiLLStatsSetReqParams,
31346 WDI_LLStatsSetRspCb wdiLLStatsSetRspCb,
31347 void* pUserData)
31348{
31349 WDI_EventInfoType wdiEventData;
31350
31351 /*------------------------------------------------------------------------
31352 Sanity Check
31353 ------------------------------------------------------------------------*/
31354 if ( eWLAN_PAL_FALSE == gWDIInitialized )
31355 {
31356 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
31357 "WDI API call before module is initialized - Fail request");
31358
31359 return WDI_STATUS_E_NOT_ALLOWED;
31360 }
31361
31362 wdiEventData.wdiRequest = WDI_LL_STATS_SET_REQ;
31363 wdiEventData.pEventData = pwdiLLStatsSetReqParams;
31364 wdiEventData.uEventDataSize = sizeof(*pwdiLLStatsSetReqParams);
31365 wdiEventData.pCBfnc = wdiLLStatsSetRspCb;
31366 wdiEventData.pUserData = pUserData;
31367
31368 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
31369}
31370
31371/**
31372 @brief WDI_ProcessLLStatsSetReq -
31373 Set Link Layer Stats request to FW
31374
31375 @param pWDICtx : wdi context
31376 pEventData : indication data
31377
31378 @see
31379 @return none
31380*/
31381WDI_Status
31382WDI_ProcessLLStatsSetReq
31383(
31384 WDI_ControlBlockType* pWDICtx,
31385 WDI_EventInfoType* pEventData
31386)
31387{
31388 WDI_LLStatsSetReqType* pwdiLLStatsSetReqParams;
31389 WDI_LLStatsSetRspCb wdiLLStatsSetCb;
31390 wpt_uint8* pSendBuffer = NULL;
31391 wpt_uint16 usSendSize = 0;
31392 wpt_uint16 usDataOffset = 0;
31393 tHalMacLlSetStatsReqParams halLLStatsSetParams;
31394
31395 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
31396 ( NULL == pEventData->pCBfnc ))
31397 {
31398 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
31399 "%s: Invalid parameters", __func__);
31400 WDI_ASSERT(0);
31401 return WDI_STATUS_E_FAILURE;
31402 }
31403
31404 pwdiLLStatsSetReqParams = (WDI_LLStatsSetReqType*)pEventData->pEventData;
31405 wdiLLStatsSetCb = (WDI_LLStatsSetRspCb)pEventData->pCBfnc;
31406
31407 /*-----------------------------------------------------------------------
31408 Get message buffer
31409 ! TO DO : proper conversion into the HAL Message Request Format
31410 -----------------------------------------------------------------------*/
31411 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
31412 pWDICtx,
31413 WDI_LL_STATS_SET_REQ,
31414 sizeof(tHalMacLlSetStatsReqParams),
31415 &pSendBuffer, &usDataOffset,
31416 &usSendSize))||
31417 ( usSendSize < (usDataOffset + sizeof(halLLStatsSetParams) )))
31418 {
31419 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
31420 "Unable to get send buffer in %s %p %p %p", __func__,
31421 pEventData, pwdiLLStatsSetReqParams, wdiLLStatsSetCb);
31422 WDI_ASSERT(0);
31423 return WDI_STATUS_E_FAILURE;
31424 }
31425
31426
Dino Mycled3d50022014-07-07 12:58:25 +053031427 /* Need to fill in the self STA Index */
31428 if ( WDI_STATUS_SUCCESS !=
31429 WDI_STATableFindStaidByAddr(pWDICtx,
31430 pwdiLLStatsSetReqParams->macAddr,
31431 &halLLStatsSetParams.sta_id))
31432 {
31433 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
31434 MAC_ADDRESS_STR
31435 ": This station does not exist in the WDI Station Table",
31436 MAC_ADDR_ARRAY(pwdiLLStatsSetReqParams->macAddr));
31437
31438 wpalMemoryFree(pSendBuffer);
31439 return WDI_STATUS_E_FAILURE;
31440 }
Sunil Duttbd736ed2014-05-26 21:19:41 +053031441
31442 halLLStatsSetParams.req_id = pwdiLLStatsSetReqParams->reqId;
Sunil Duttbd736ed2014-05-26 21:19:41 +053031443 halLLStatsSetParams.mpdu_size_threshold =
31444 pwdiLLStatsSetReqParams->mpduSizeThreshold;
31445 halLLStatsSetParams.aggressive_statistics_gathering =
31446 pwdiLLStatsSetReqParams->aggressiveStatisticsGathering;
31447
31448 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
31449 " halLLStatsSetParams.req_id = %u",
31450 halLLStatsSetParams.req_id);
31451 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
31452 " halLLStatsSetParams.sta_id = %u",
31453 halLLStatsSetParams.sta_id);
31454 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
31455 " halLLStatsSetParams.mpdu_size_threshold = %u",
31456 halLLStatsSetParams.mpdu_size_threshold);
31457 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
31458 " halLLStatsSetParams.aggressive_statistics_gathering = %u",
31459 halLLStatsSetParams.aggressive_statistics_gathering);
31460
31461 wpalMemoryCopy(pSendBuffer+usDataOffset,
31462 &halLLStatsSetParams,
31463 sizeof(halLLStatsSetParams));
31464
31465 pWDICtx->pReqStatusUserData = pEventData->pUserData;
31466
31467 /*-------------------------------------------------------------------------
31468 Send Clear Link Layer Stats Request to HAL
31469 -------------------------------------------------------------------------*/
31470 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
31471 wdiLLStatsSetCb, pEventData->pUserData,
31472 WDI_LL_STATS_SET_RSP);
31473}
31474
31475/**
31476 @brief WDI_LLStatsGetReq
31477 This API is called to get link layer stats request in FW
31478
31479 @param pwdiLLStatsGetReqParams : pointer to set link layer request params
31480 wdiLLStatsGetRspCb : get link layer stats resp callback
31481 usrData : Client context
31482 @see
31483 @return SUCCESS or FAIL
31484*/
31485WDI_Status
31486WDI_LLStatsGetReq(WDI_LLStatsGetReqType* pwdiLLStatsGetReqParams,
31487 WDI_LLStatsGetRspCb wdiLLStatsGetRspCb,
31488 void* pUserData)
31489{
31490 WDI_EventInfoType wdiEventData;
31491
31492 /*------------------------------------------------------------------------
31493 Sanity Check
31494 ------------------------------------------------------------------------*/
31495 if ( eWLAN_PAL_FALSE == gWDIInitialized )
31496 {
31497 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
31498 "WDI API call before module is initialized - Fail request");
31499
31500 return WDI_STATUS_E_NOT_ALLOWED;
31501 }
31502
31503 wdiEventData.wdiRequest = WDI_LL_STATS_GET_REQ;
31504 wdiEventData.pEventData = pwdiLLStatsGetReqParams;
31505 wdiEventData.uEventDataSize = sizeof(*pwdiLLStatsGetReqParams);
31506 wdiEventData.pCBfnc = wdiLLStatsGetRspCb;
31507 wdiEventData.pUserData = pUserData;
31508
31509 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
31510}
31511
31512/**
31513 @brief WDI_ProcessLLStatsGetReq -
31514 Get Link Layer Stats request to FW
31515
31516 @param pWDICtx : wdi context
31517 pEventData : indication data
31518
31519 @see
31520 @return none
31521*/
31522WDI_Status
31523WDI_ProcessLLStatsGetReq
31524(
31525 WDI_ControlBlockType* pWDICtx,
31526 WDI_EventInfoType* pEventData
31527)
31528{
31529 WDI_LLStatsGetReqType* pwdiLLStatsGetReqParams;
31530 WDI_LLStatsGetRspCb wdiLLStatsGetCb;
31531 wpt_uint8* pSendBuffer = NULL;
31532 wpt_uint16 usSendSize = 0;
31533 wpt_uint16 usDataOffset = 0;
31534 tHalMacLlGetStatsReqParams halLLStatsGetParams;
31535
31536 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
31537 ( NULL == pEventData->pCBfnc ))
31538 {
31539 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
31540 "%s: Invalid parameters", __func__);
31541 WDI_ASSERT(0);
31542 return WDI_STATUS_E_FAILURE;
31543 }
31544
31545 pwdiLLStatsGetReqParams = (WDI_LLStatsGetReqType*)pEventData->pEventData;
31546 wdiLLStatsGetCb = (WDI_LLStatsGetRspCb)pEventData->pCBfnc;
31547
31548 /*-----------------------------------------------------------------------
31549 Get message buffer
31550 ! TO DO : proper conversion into the HAL Message Request Format
31551 -----------------------------------------------------------------------*/
31552 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
31553 pWDICtx,
31554 WDI_LL_STATS_GET_REQ,
31555 sizeof(tHalMacLlGetStatsReqParams),
31556 &pSendBuffer, &usDataOffset,
31557 &usSendSize))||
31558 ( usSendSize < (usDataOffset + sizeof(halLLStatsGetParams) )))
31559 {
31560 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
31561 "Unable to get send buffer in %s %p %p %p", __func__,
31562 pEventData, pwdiLLStatsGetReqParams, wdiLLStatsGetCb);
31563 WDI_ASSERT(0);
31564 return WDI_STATUS_E_FAILURE;
31565 }
Dino Mycled3d50022014-07-07 12:58:25 +053031566 /* Need to fill in the self STA Index */
31567 if ( WDI_STATUS_SUCCESS !=
31568 WDI_STATableFindStaidByAddr(pWDICtx,
31569 pwdiLLStatsGetReqParams->macAddr,
31570 &halLLStatsGetParams.sta_id))
31571 {
31572 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
31573 MAC_ADDRESS_STR
31574 ": This station does not exist in the WDI Station Table",
31575 MAC_ADDR_ARRAY(pwdiLLStatsGetReqParams->macAddr));
31576
31577 wpalMemoryFree(pSendBuffer);
31578 return WDI_STATUS_E_FAILURE;
31579 }
Sunil Duttbd736ed2014-05-26 21:19:41 +053031580
31581 halLLStatsGetParams.req_id = pwdiLLStatsGetReqParams->reqId;
Sunil Duttbd736ed2014-05-26 21:19:41 +053031582 halLLStatsGetParams.param_id_mask = pwdiLLStatsGetReqParams->paramIdMask;
31583
31584 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
31585 " halLLStatsGetParams.req_id = %u",
31586 halLLStatsGetParams.req_id);
31587 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
31588 " halLLStatsGetParams.staId = %u",
31589 halLLStatsGetParams.sta_id);
31590 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
31591 " halLLStatsGetParams.Mask = %u",
31592 halLLStatsGetParams.param_id_mask);
31593
31594 wpalMemoryCopy(pSendBuffer+usDataOffset,
31595 &halLLStatsGetParams,
31596 sizeof(halLLStatsGetParams));
31597
31598 pWDICtx->pReqStatusUserData = pEventData->pUserData;
31599
31600 /*-------------------------------------------------------------------------
31601 Send Clear Link Layer Stats Request to HAL
31602 -------------------------------------------------------------------------*/
31603 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
31604 wdiLLStatsGetCb, pEventData->pUserData,
31605 WDI_LL_STATS_GET_RSP);
31606}
31607
31608/**
31609 @brief WDI_LLStatsClearReq
31610 This API is called to clear link layer stats request in FW
31611
31612 @param pwdiLLStatsClearReqParams : pointer to clear link layer request params
31613 wdiLLStatsSetRspCb : clear link layer stats resp callback
31614 usrData : Client context
31615 @see
31616 @return SUCCESS or FAIL
31617*/
31618WDI_Status
31619WDI_LLStatsClearReq(WDI_LLStatsClearReqType* pwdiLLStatsClearReqParams,
31620 WDI_LLStatsClearRspCb wdiLLStatsClearRspCb,
31621 void* pUserData)
31622{
31623 WDI_EventInfoType wdiEventData;
31624
31625 /*------------------------------------------------------------------------
31626 Sanity Check
31627 ------------------------------------------------------------------------*/
31628 if ( eWLAN_PAL_FALSE == gWDIInitialized )
31629 {
31630 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
31631 "WDI API call before module is initialized - Fail request");
31632
31633 return WDI_STATUS_E_NOT_ALLOWED;
31634 }
31635
31636 wdiEventData.wdiRequest = WDI_LL_STATS_CLEAR_REQ;
31637 wdiEventData.pEventData = pwdiLLStatsClearReqParams;
31638 wdiEventData.uEventDataSize = sizeof(*pwdiLLStatsClearReqParams);
31639 wdiEventData.pCBfnc = wdiLLStatsClearRspCb;
31640 wdiEventData.pUserData = pUserData;
31641
31642 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
31643 "%s:%d Enter", __func__, __LINE__);
31644
31645 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
31646}
31647
31648/**
31649 @brief WDI_ProcessLLStatsClearReq -
31650 Clear Link Layer Stats request to FW
31651
31652 @param pWDICtx : wdi context
31653 pEventData : indication data
31654
31655 @see
31656 @return none
31657*/
31658WDI_Status
31659WDI_ProcessLLStatsClearReq
31660(
31661 WDI_ControlBlockType* pWDICtx,
31662 WDI_EventInfoType* pEventData
31663)
31664{
31665 WDI_LLStatsClearReqType* pwdiLLStatsClearReqParams;
31666 WDI_LLStatsClearRspCb wdiLLStatsClearCb;
31667 wpt_uint8* pSendBuffer = NULL;
31668 wpt_uint16 usSendSize = 0;
31669 wpt_uint16 usDataOffset = 0;
31670 tHalMacLlClearStatsReqParams halLLStatsClearParams;
31671
31672 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
31673 ( NULL == pEventData->pCBfnc ))
31674 {
31675 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
31676 "%s: Invalid parameters", __func__);
31677 WDI_ASSERT(0);
31678 return WDI_STATUS_E_FAILURE;
31679 }
31680
31681 pwdiLLStatsClearReqParams = (WDI_LLStatsClearReqType*)pEventData->pEventData;
31682 wdiLLStatsClearCb = (WDI_LLStatsClearRspCb)pEventData->pCBfnc;
31683
31684 /*-----------------------------------------------------------------------
31685 Get message buffer
31686 ! TO DO : proper conversion into the HAL Message Request Format
31687 -----------------------------------------------------------------------*/
31688 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
31689 pWDICtx,
31690 WDI_LL_STATS_CLEAR_REQ,
31691 sizeof(tHalMacLlClearStatsReqParams),
31692 &pSendBuffer, &usDataOffset,
31693 &usSendSize))||
31694 ( usSendSize < (usDataOffset + sizeof(halLLStatsClearParams) )))
31695 {
31696 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
31697 "Unable to get send buffer in %s %p %p %p", __func__,
31698 pEventData, pwdiLLStatsClearReqParams, wdiLLStatsClearCb);
31699 WDI_ASSERT(0);
31700 return WDI_STATUS_E_FAILURE;
31701 }
Dino Mycled3d50022014-07-07 12:58:25 +053031702 /* Need to fill in the self STA Index */
31703 if ( WDI_STATUS_SUCCESS !=
31704 WDI_STATableFindStaidByAddr(pWDICtx,
31705 pwdiLLStatsClearReqParams->macAddr,
31706 &halLLStatsClearParams.sta_id))
31707 {
31708 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
31709 MAC_ADDRESS_STR
31710 ": This station does not exist in the WDI Station Table",
31711 MAC_ADDR_ARRAY(pwdiLLStatsClearReqParams->macAddr));
31712
31713 wpalMemoryFree(pSendBuffer);
31714 return WDI_STATUS_E_FAILURE;
31715 }
Sunil Duttbd736ed2014-05-26 21:19:41 +053031716
31717 halLLStatsClearParams.req_id = pwdiLLStatsClearReqParams->reqId;
Sunil Duttbd736ed2014-05-26 21:19:41 +053031718 halLLStatsClearParams.stats_clear_req_mask =
31719 pwdiLLStatsClearReqParams->statsClearReqMask;
31720 halLLStatsClearParams.stop_req = pwdiLLStatsClearReqParams->stopReq;
31721
31722 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
31723 "%s:HAL req_id = %d", __func__, halLLStatsClearParams.req_id);
31724 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
31725 "%s: HAL sta_id = %d", __func__, halLLStatsClearParams.sta_id);
31726 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
31727 "%s: HAL stats_clear_req_mask = 0x%X", __func__,
31728 halLLStatsClearParams.stats_clear_req_mask);
31729 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
31730 "%s: HAL stop_req = %d", __func__, halLLStatsClearParams.stop_req);
31731
31732 wpalMemoryCopy(pSendBuffer+usDataOffset,
31733 &halLLStatsClearParams,
31734 sizeof(halLLStatsClearParams));
31735
31736 pWDICtx->pReqStatusUserData = pEventData->pUserData;
31737
31738 /*-------------------------------------------------------------------------
31739 Send Clear Link Layer Stats Request to HAL
31740 -------------------------------------------------------------------------*/
31741 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
31742 wdiLLStatsClearCb, pEventData->pUserData,
31743 WDI_LL_STATS_CLEAR_RSP);
31744}
31745#endif /* WLAN_FEATURE_LINK_LAYER_STATS */
Dino Mycle41bdc942014-06-10 11:30:24 +053031746
Abhishek Singh85b74712014-10-08 11:38:19 +053031747WDI_Status WDI_FWStatsGetReq( void* pUserData,
31748 WDI_FWStatsGetRspCb wdiFWStatsGetRspCb,
31749 wpt_uint32 stats)
31750{
31751 WDI_EventInfoType wdiEventData;
31752
31753 /*------------------------------------------------------------------------
31754 Sanity Check
31755 ------------------------------------------------------------------------*/
31756 if ( eWLAN_PAL_FALSE == gWDIInitialized )
31757 {
31758 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
31759 "WDI API call before module is initialized - Fail request");
31760 return WDI_STATUS_E_NOT_ALLOWED;
31761 }
31762 /*------------------------------------------------------------------------
31763 Fill in Event data and post to the Main FSM
31764 ------------------------------------------------------------------------*/
31765 wdiEventData.wdiRequest = WDI_GET_FW_STATS_REQ;
31766 wdiEventData.pEventData = (void *)&stats;
31767 wdiEventData.uEventDataSize = sizeof(wpt_uint32);
31768 wdiEventData.pCBfnc = wdiFWStatsGetRspCb;
31769 wdiEventData.pUserData = pUserData;
31770
31771 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
31772
31773}
31774
Dino Mycle41bdc942014-06-10 11:30:24 +053031775#ifdef WLAN_FEATURE_EXTSCAN
31776
31777/**
31778 @brief Process EXTSCAN BUffer full indication from FW
31779
31780 @param pWDICtx: pointer to the WLAN DAL context
31781 pEventData: pointer to the event information structure
31782
31783 @see
31784 @return Result of the function call
31785*/
31786WDI_Status
31787WDI_ProcessEXTScanProgressInd
31788(
31789 WDI_ControlBlockType* pWDICtx,
31790 WDI_EventInfoType* pEventData
31791)
31792{
31793 WDI_LowLevelIndType wdiInd;
31794 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
31795
31796 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
31797 "%s: ", __func__);
31798
31799 /* sanity check */
31800 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
31801 ( NULL == pEventData->pEventData))
31802 {
31803 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
31804 "%s: Invalid parameters", __func__);
31805 WDI_ASSERT(0);
31806 return WDI_STATUS_E_FAILURE;
31807 }
31808
31809 /* Fill in the indication parameters */
31810 wdiInd.wdiIndicationType = WDI_EXTSCAN_PROGRESS_IND;
31811
31812 /* extract response and send it to UMAC */
31813 wdiInd.wdiIndicationData.pEXTScanIndData = (void *)pEventData->pEventData;
31814
31815 /* Notify UMAC */
31816 if (pWDICtx->wdiLowLevelIndCB)
31817 {
31818 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
31819 }
31820 else
31821 {
Dino Mycled3d50022014-07-07 12:58:25 +053031822 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
Dino Mycle41bdc942014-06-10 11:30:24 +053031823 "%s: WDILowLevelIndCb is null", __func__);
31824 WDI_ASSERT(0);
31825 return WDI_STATUS_E_FAILURE;
31826 }
31827 return WDI_STATUS_SUCCESS;
31828
31829} /* End of WDI_ProcessEXTScanProgressInd */
31830
31831
31832/**
31833 @brief Process EXTScan Scan Available indication from FW
31834
31835 @param pWDICtx: pointer to the WLAN DAL context
31836 pEventData: pointer to the event information structure
31837
31838 @see
31839 @return Result of the function call
31840*/
31841WDI_Status
31842WDI_ProcessEXTScanScanAvailableInd
31843(
31844 WDI_ControlBlockType* pWDICtx,
31845 WDI_EventInfoType* pEventData
31846)
31847{
31848 WDI_LowLevelIndType wdiInd;
31849 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
31850
31851 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
31852 "%s: ", __func__);
31853
31854 /* sanity check */
31855 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
31856 ( NULL == pEventData->pEventData))
31857 {
31858 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
31859 "%s: Invalid parameters", __func__);
31860 WDI_ASSERT(0);
31861 return WDI_STATUS_E_FAILURE;
31862 }
31863
31864
31865
31866 /* Fill in the indication parameters */
31867 wdiInd.wdiIndicationType = WDI_EXTSCAN_SCAN_AVAILABLE_IND;
31868
31869 /* extract response and send it to UMAC */
31870 wdiInd.wdiIndicationData.pEXTScanIndData = (void *)pEventData->pEventData;
31871
31872 /* Notify UMAC */
31873 if (pWDICtx->wdiLowLevelIndCB)
31874 {
31875 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
31876 }
31877 else
31878 {
31879 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
31880 "%s: WDILowLevelIndCb is null", __func__);
31881 WDI_ASSERT(0);
31882 return WDI_STATUS_E_FAILURE;
31883 }
31884 return WDI_STATUS_SUCCESS;
31885} /* End of WDI_ProcessEXTScanScanDoneInd */
31886
31887/**
31888 @brief Process EXTScan Result Indication indication from FW
31889
31890 @param pWDICtx: pointer to the WLAN DAL context
31891 pEventData: pointer to the event information structure
31892
31893 @see
31894 @return Result of the function call
31895*/
31896WDI_Status
31897WDI_ProcessEXTScanResultInd
31898(
31899 WDI_ControlBlockType* pWDICtx,
31900 WDI_EventInfoType* pEventData
31901)
31902{
31903 WDI_LowLevelIndType wdiInd;
31904 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
31905
31906 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
31907 "%s: ", __func__);
31908
31909 /* sanity check */
31910 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
31911 ( NULL == pEventData->pEventData))
31912 {
31913 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
31914 "%s: Invalid parameters", __func__);
31915 WDI_ASSERT(0);
31916 return WDI_STATUS_E_FAILURE;
31917 }
31918
31919 /* Fill in the indication parameters */
31920 wdiInd.wdiIndicationType = WDI_EXTSCAN_SCAN_RESULT_IND;
31921
31922 /* extract response and send it to UMAC */
31923 wdiInd.wdiIndicationData.pEXTScanIndData = (void *)pEventData->pEventData;
31924
31925 /* Notify UMAC */
31926 if (pWDICtx->wdiLowLevelIndCB)
31927 {
31928 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
31929 }
31930 else
31931 {
31932 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
31933 "%s: WDILowLevelIndCb is null", __func__);
31934 WDI_ASSERT(0);
31935 return WDI_STATUS_E_FAILURE;
31936 }
31937 return WDI_STATUS_SUCCESS;
31938} /* End of WDI_ProcessEXTScanResultInd */
31939
31940/**
31941 @brief Process EXTScan BSSID Hotlist Result Indication indication from FW
31942
31943 @param pWDICtx: pointer to the WLAN DAL context
31944 pEventData: pointer to the event information structure
31945
31946 @see
31947 @return Result of the function call
31948*/
31949WDI_Status
31950WDI_ProcessEXTScanBssidHotListResultInd
31951(
31952 WDI_ControlBlockType* pWDICtx,
31953 WDI_EventInfoType* pEventData
31954)
31955{
31956 WDI_LowLevelIndType wdiInd;
31957 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
31958
31959 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
31960 "%s: ", __func__);
31961
31962 /* sanity check */
31963 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
31964 ( NULL == pEventData->pEventData))
31965 {
31966 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
31967 "%s: Invalid parameters", __func__);
31968 WDI_ASSERT(0);
31969 return WDI_STATUS_E_FAILURE;
31970 }
31971
31972 /* Fill in the indication parameters */
31973 wdiInd.wdiIndicationType = WDI_EXTSCAN_BSSID_HOTLIST_RESULT_IND;
31974
31975 /* extract response and send it to UMAC */
31976 wdiInd.wdiIndicationData.pEXTScanIndData = (void *)pEventData->pEventData;
31977
31978 /* Notify UMAC */
31979 if (pWDICtx->wdiLowLevelIndCB)
31980 {
31981 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
31982 }
31983 else
31984 {
31985 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
31986 "%s: WDILowLevelIndCb is null", __func__);
31987 WDI_ASSERT(0);
31988 return WDI_STATUS_E_FAILURE;
31989 }
31990 return WDI_STATUS_SUCCESS;
31991} /* End of WDI_ProcessEXTScanBssidHotListResultInd */
31992
31993/**
31994 @brief Process EXTScan Significant RSSI Result Indication indication from FW
31995
31996 @param pWDICtx: pointer to the WLAN DAL context
31997 pEventData: pointer to the event information structure
31998
31999 @see
32000 @return Result of the function call
32001*/
32002WDI_Status
32003WDI_ProcessEXTScanSignfRssiResultInd
32004(
32005 WDI_ControlBlockType* pWDICtx,
32006 WDI_EventInfoType* pEventData
32007)
32008{
32009 WDI_LowLevelIndType wdiInd;
32010 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
32011
32012 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32013 "%s: ", __func__);
32014
32015 /* sanity check */
32016 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
32017 ( NULL == pEventData->pEventData))
32018 {
32019 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
32020 "%s: Invalid parameters", __func__);
32021 WDI_ASSERT(0);
32022 return WDI_STATUS_E_FAILURE;
32023 }
32024
32025 /* Fill in the indication parameters */
32026 wdiInd.wdiIndicationType = WDI_EXTSCAN_SIGN_RSSI_RESULT_IND;
32027
32028 /* extract response and send it to UMAC */
32029 wdiInd.wdiIndicationData.pEXTScanIndData = (void *)pEventData->pEventData;
32030
32031 /* Notify UMAC */
32032 if (pWDICtx->wdiLowLevelIndCB)
32033 {
32034 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
32035 }
32036 else
32037 {
32038 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32039 "%s: WDILowLevelIndCb is null", __func__);
32040 WDI_ASSERT(0);
32041 return WDI_STATUS_E_FAILURE;
32042 }
32043 return WDI_STATUS_SUCCESS;
32044} /* End of WDI_ProcessEXTScanSignfRssiResultInd */
32045
32046/**
32047 @brief WDI_EXTScanGetCapabilitiesReq
32048
32049 @param WDI_EXTScanGetCapabilitiesReqParams: Req parameter for the FW
32050 WDI_EXTScanGetCapabilitiesRspCb: callback for passing back the response
32051 of the Req operation received from the device
32052 pUserData: user data will be passed back with the callback
32053
32054 @return SUCCESS or FAIL
32055*/
32056WDI_Status
32057WDI_EXTScanGetCapabilitiesReq(
32058 WDI_EXTScanGetCapabilitiesReqParams* pwdiEXTScanGetCapabilitiesReqParams,
32059 WDI_EXTScanGetCapabilitiesRspCb wdiEXTScanGetCapabilitiesRspCb,
32060 void* pUserData)
32061{
32062 WDI_EventInfoType wdiEventData;
32063
32064 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32065 "%s: %d ",__func__, __LINE__);
32066 /*------------------------------------------------------------------------
32067 Sanity Check
32068 ------------------------------------------------------------------------*/
32069 if ( eWLAN_PAL_FALSE == gWDIInitialized )
32070 {
32071 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
32072 "WDI API call before module is initialized - Fail request");
32073
32074 return WDI_STATUS_E_NOT_ALLOWED;
32075 }
32076
32077 wdiEventData.wdiRequest = WDI_EXTSCAN_GET_CAPABILITIES_REQ;
32078 wdiEventData.pEventData = pwdiEXTScanGetCapabilitiesReqParams;
32079 wdiEventData.uEventDataSize = sizeof(*pwdiEXTScanGetCapabilitiesReqParams);
32080 wdiEventData.pCBfnc = wdiEXTScanGetCapabilitiesRspCb;
32081 wdiEventData.pUserData = pUserData;
32082
32083 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
32084}
32085
32086/**
32087 @brief WDI_ProcessEXTScanGetCapabilitiesReq -
32088 Extended Scan Get Capability request to FW
32089
32090 @param pWDICtx : wdi context
32091 pEventData : indication data
32092
32093 @see
32094 @return none
32095*/
32096WDI_Status
32097WDI_ProcessEXTScanGetCapabilitiesReq
32098(
32099 WDI_ControlBlockType* pWDICtx,
32100 WDI_EventInfoType* pEventData
32101)
32102{
32103 WDI_EXTScanGetCapabilitiesReqParams* pwdiEXTScanGetCapabilitiesReqParams;
32104 WDI_EXTScanGetCapabilitiesRspCb wdiEXTScanGetCapabilitiesRspCb;
32105 wpt_uint8* pSendBuffer = NULL;
32106 wpt_uint16 usSendSize = 0;
32107 wpt_uint16 usDataOffset = 0;
32108 tHalExtScanGetCapReq halEXTScanGetCapReqParams;
32109
32110 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32111 "%s: %d Enter",__func__, __LINE__);
32112
32113 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
32114 ( NULL == pEventData->pCBfnc ))
32115 {
32116 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32117 "%s: Invalid parameters", __func__);
32118 WDI_ASSERT(0);
32119 return WDI_STATUS_E_FAILURE;
32120 }
32121
32122 pwdiEXTScanGetCapabilitiesReqParams =
32123 (WDI_EXTScanGetCapabilitiesReqParams* )pEventData->pEventData;
32124 wdiEXTScanGetCapabilitiesRspCb =
32125 (WDI_EXTScanGetCapabilitiesRspCb)pEventData->pCBfnc;
32126
32127 /*-----------------------------------------------------------------------
32128 Get message buffer
32129 ! TO DO : proper conversion into the HAL Message Request Format
32130 -----------------------------------------------------------------------*/
32131 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
32132 pWDICtx,
32133 WDI_EXTSCAN_GET_CAPABILITIES_REQ,
32134 sizeof(halEXTScanGetCapReqParams),
32135 &pSendBuffer, &usDataOffset,
32136 &usSendSize))||
32137 ( usSendSize < (usDataOffset + sizeof(halEXTScanGetCapReqParams) )))
32138 {
32139 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32140 "Unable to get send buffer in %s %p %p %p", __func__,
32141 pEventData, pwdiEXTScanGetCapabilitiesReqParams,
32142 wdiEXTScanGetCapabilitiesRspCb);
32143 WDI_ASSERT(0);
32144 return WDI_STATUS_E_FAILURE;
32145 }
32146
32147 halEXTScanGetCapReqParams.requestId =
32148 pwdiEXTScanGetCapabilitiesReqParams->requestId;
32149 halEXTScanGetCapReqParams.sessionId =
32150 pwdiEXTScanGetCapabilitiesReqParams->sessionId;
32151
32152 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32153 " requestId %u "
32154 " sessionId %u ",
32155 halEXTScanGetCapReqParams.requestId,
32156 halEXTScanGetCapReqParams.sessionId);
32157
32158 wpalMemoryCopy(pSendBuffer+usDataOffset,
32159 &halEXTScanGetCapReqParams,
32160 sizeof(halEXTScanGetCapReqParams));
32161
32162 pWDICtx->pReqStatusUserData = pEventData->pUserData;
32163
32164
32165 /*-------------------------------------------------------------------------
32166 Send EXTScan Stop Request to HAL
32167 -------------------------------------------------------------------------*/
32168 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
32169 wdiEXTScanGetCapabilitiesRspCb, pEventData->pUserData,
32170 WDI_EXTSCAN_GET_CAPABILITIES_RSP);
32171}
32172
32173/**
32174 @brief WDI_EXTScanGetCachedResultsReq
32175
32176 @param WDI_EXTScanGetCachedResultsReqParams: Req parameter for the FW
32177 WDI_EXTScanGetCachedResultsRspCb: callback for passing back the response
32178 of the Req operation received from the device
32179 pUserData: user data will be passed back with the callback
32180
32181 @return SUCCESS or FAIL
32182*/
32183
32184WDI_Status
32185WDI_EXTScanGetCachedResultsReq(
32186 WDI_EXTScanGetCachedResultsReqParams* pwdiEXTScanGetCachedResultsReqParams,
32187 WDI_EXTScanGetCachedResultsRspCb wdiEXTScanGetCachedResultsRspCb,
32188 void* pUserData)
32189{
32190 WDI_EventInfoType wdiEventData;
32191
32192 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32193 "%s: %d Enter",__func__, __LINE__);
32194 /*------------------------------------------------------------------------
32195 Sanity Check
32196 ------------------------------------------------------------------------*/
32197 if ( eWLAN_PAL_FALSE == gWDIInitialized )
32198 {
32199 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
32200 "WDI API call before module is initialized - Fail request");
32201
32202 return WDI_STATUS_E_NOT_ALLOWED;
32203 }
32204
32205 wdiEventData.wdiRequest = WDI_EXTSCAN_GET_CACHED_RESULTS_REQ;
32206 wdiEventData.pEventData = pwdiEXTScanGetCachedResultsReqParams;
32207 wdiEventData.uEventDataSize = sizeof(*pwdiEXTScanGetCachedResultsReqParams);
32208 wdiEventData.pCBfnc = wdiEXTScanGetCachedResultsRspCb;
32209 wdiEventData.pUserData = pUserData;
32210
32211 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
32212}
32213
32214/**
32215 @brief WDI_ProcessEXTScanGetCachedResultsReq -
32216 Extended Scan Get Cached Result request to FW
32217
32218 @param pWDICtx : wdi context
32219 pEventData : indication data
32220
32221 @see
32222 @return none
32223*/
32224WDI_Status
32225WDI_ProcessEXTScanGetCachedResultsReq
32226(
32227 WDI_ControlBlockType* pWDICtx,
32228 WDI_EventInfoType* pEventData
32229)
32230{
32231 WDI_EXTScanGetCachedResultsReqParams* pwdiEXTScanGetCachedResultsReqParams;
32232 WDI_EXTScanGetCachedResultsRspCb wdiEXTScanGetCachedResultsCb;
32233 wpt_uint8* pSendBuffer = NULL;
32234 wpt_uint16 usSendSize = 0;
32235 wpt_uint16 usDataOffset = 0;
32236 tHalExtScanGetScanReq halEXTScanGetScanReqParams;
32237
32238 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32239 "%s: %d Enter",__func__, __LINE__);
32240
32241 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
32242 ( NULL == pEventData->pCBfnc ))
32243 {
32244 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32245 "%s: Invalid parameters", __func__);
32246 WDI_ASSERT(0);
32247 return WDI_STATUS_E_FAILURE;
32248 }
32249
32250 pwdiEXTScanGetCachedResultsReqParams =
32251 (WDI_EXTScanGetCachedResultsReqParams*)pEventData->pEventData;
32252 wdiEXTScanGetCachedResultsCb =
32253 (WDI_EXTScanGetCachedResultsRspCb)pEventData->pCBfnc;
32254
32255 /*-----------------------------------------------------------------------
32256 Get message buffer
32257 ! TO DO : proper conversion into the HAL Message Request Format
32258 -----------------------------------------------------------------------*/
32259 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
32260 pWDICtx,
32261 WDI_EXTSCAN_GET_CACHED_RESULTS_REQ,
32262 sizeof(tHalExtScanGetScanReq),
32263 &pSendBuffer, &usDataOffset,
32264 &usSendSize))||
32265 ( usSendSize < (usDataOffset + sizeof(halEXTScanGetScanReqParams) )))
32266 {
32267 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32268 "Unable to get send buffer in %s %p %p %p", __func__,
32269 pEventData, pwdiEXTScanGetCachedResultsReqParams,
32270 wdiEXTScanGetCachedResultsCb);
32271 WDI_ASSERT(0);
32272 return WDI_STATUS_E_FAILURE;
32273 }
32274
32275 halEXTScanGetScanReqParams.requestId =
32276 pwdiEXTScanGetCachedResultsReqParams->requestId;
32277 halEXTScanGetScanReqParams.sessionId =
32278 pwdiEXTScanGetCachedResultsReqParams->sessionId;
32279 halEXTScanGetScanReqParams.flush =
32280 pwdiEXTScanGetCachedResultsReqParams->flush;
32281
32282 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32283 " requestId %u "
32284 " sessionId %u "
32285 " flush %u ",
32286 halEXTScanGetScanReqParams.requestId,
32287 halEXTScanGetScanReqParams.sessionId,
32288 halEXTScanGetScanReqParams.flush);
32289
32290 wpalMemoryCopy(pSendBuffer+usDataOffset,
32291 &halEXTScanGetScanReqParams,
32292 sizeof(halEXTScanGetScanReqParams));
32293
32294 pWDICtx->pReqStatusUserData = pEventData->pUserData;
32295
32296
32297 /*-------------------------------------------------------------------------
32298 Send EXTScan Stop Request to HAL
32299 -------------------------------------------------------------------------*/
32300 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
32301 wdiEXTScanGetCachedResultsCb, pEventData->pUserData,
32302 WDI_EXTSCAN_GET_CACHED_RESULTS_RSP);
32303}
32304
32305/**
32306 @brief WDI_EXTScanStopReq
32307
32308 @param WDI_EXTScanStopReqParams: Req parameter for the FW
32309 WDI_EXTScanStopRspCb: callback for passing back the response
32310 of the Req operation received from the device
32311 pUserData: user data will be passed back with the callback
32312
32313 @return SUCCESS or FAIL
32314*/
32315WDI_Status
32316WDI_EXTScanStopReq(WDI_EXTScanStopReqParams* pwdiEXTScanStopReqParams,
32317 WDI_EXTScanStopRspCb wdiEXTScanStopRspCb,
32318 void* pUserData)
32319{
32320 WDI_EventInfoType wdiEventData;
32321
32322 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32323 "%s: %d ",__func__, __LINE__);
32324 /*------------------------------------------------------------------------
32325 Sanity Check
32326 ------------------------------------------------------------------------*/
32327 if ( eWLAN_PAL_FALSE == gWDIInitialized )
32328 {
32329 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
32330 "WDI API call before module is initialized - Fail request");
32331
32332 return WDI_STATUS_E_NOT_ALLOWED;
32333 }
32334
32335 wdiEventData.wdiRequest = WDI_EXTSCAN_STOP_REQ;
32336 wdiEventData.pEventData = pwdiEXTScanStopReqParams;
32337 wdiEventData.uEventDataSize = sizeof(*pwdiEXTScanStopReqParams);
32338 wdiEventData.pCBfnc = wdiEXTScanStopRspCb;
32339 wdiEventData.pUserData = pUserData;
32340
32341 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
32342}
32343
32344/**
32345 @brief WDI_ProcessEXTScanStopReq -
32346 Extended Scan Stop request to FW
32347
32348 @param pWDICtx : wdi context
32349 pEventData : indication data
32350
32351 @see
32352 @return none
32353*/
32354WDI_Status
32355WDI_ProcessEXTScanStopReq
32356(
32357 WDI_ControlBlockType* pWDICtx,
32358 WDI_EventInfoType* pEventData
32359)
32360{
32361 WDI_EXTScanStopReqParams* pwdiEXTScanStopReqParams;
32362 WDI_EXTScanStopRspCb wdiEXTScanStopCb;
32363 wpt_uint8* pSendBuffer = NULL;
32364 wpt_uint16 usSendSize = 0;
32365 wpt_uint16 usDataOffset = 0;
32366 tHalExtScanStopReq halEXTScanStopReqParams;
32367
32368 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32369 "%s: %d ",__func__, __LINE__);
32370
32371 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
32372 ( NULL == pEventData->pCBfnc ))
32373 {
32374 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32375 "%s: Invalid parameters", __func__);
32376 WDI_ASSERT(0);
32377 return WDI_STATUS_E_FAILURE;
32378 }
32379
32380 pwdiEXTScanStopReqParams = (WDI_EXTScanStopReqParams*)pEventData->pEventData;
32381 wdiEXTScanStopCb = (WDI_EXTScanStopRspCb)pEventData->pCBfnc;
32382
32383 /*-----------------------------------------------------------------------
32384 Get message buffer
32385 ! TO DO : proper conversion into the HAL Message Request Format
32386 -----------------------------------------------------------------------*/
32387 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
32388 pWDICtx,
32389 WDI_EXTSCAN_STOP_REQ,
32390 sizeof(tHalExtScanStopReq),
32391 &pSendBuffer, &usDataOffset,
32392 &usSendSize))||
32393 ( usSendSize < (usDataOffset + sizeof(halEXTScanStopReqParams) )))
32394 {
32395 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32396 "Unable to get send buffer in %s %p %p %p", __func__,
32397 pEventData, pwdiEXTScanStopReqParams, wdiEXTScanStopCb);
32398 WDI_ASSERT(0);
32399 return WDI_STATUS_E_FAILURE;
32400 }
32401
32402 halEXTScanStopReqParams.requestId =
32403 pwdiEXTScanStopReqParams->requestId;
32404 halEXTScanStopReqParams.sessionId =
32405 pwdiEXTScanStopReqParams->sessionId;
32406
32407 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32408 " halEXTScanStopReqParams.requestId %u "
32409 " halEXTScanStopReqParams.sessionId %u ",
32410 halEXTScanStopReqParams.requestId,
32411 halEXTScanStopReqParams.sessionId);
32412
32413 wpalMemoryCopy(pSendBuffer+usDataOffset,
32414 &halEXTScanStopReqParams,
32415 sizeof(halEXTScanStopReqParams));
32416
32417 pWDICtx->pReqStatusUserData = pEventData->pUserData;
32418
32419
32420 /*-------------------------------------------------------------------------
32421 Send EXTScan Stop Request to HAL
32422 -------------------------------------------------------------------------*/
32423 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
32424 wdiEXTScanStopCb, pEventData->pUserData,
32425 WDI_EXTSCAN_STOP_RSP);
32426}
32427
32428/**
32429 @brief WDI_EXTScanStartReq
32430
32431 @param WDI_EXTScanStartReqParams: Req parameter for the FW
32432 WDI_EXTScanStartRspCb: callback for passing back the response
32433 of the Req operation received from the device
32434 pUserData: user data will be passed back with the callback
32435
32436 @return SUCCESS or FAIL
32437*/
32438WDI_Status
32439WDI_EXTScanStartReq(WDI_EXTScanStartReqParams* pwdiEXTScanStartReqParams,
32440 WDI_EXTScanStartRspCb wdiEXTScanStartRspCb,
32441 void* pUserData)
32442{
32443 WDI_EventInfoType wdiEventData;
32444
32445 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32446 "%s: %d Enter",__func__, __LINE__);
32447 /*------------------------------------------------------------------------
32448 Sanity Check
32449 ------------------------------------------------------------------------*/
32450 if ( eWLAN_PAL_FALSE == gWDIInitialized )
32451 {
32452 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
32453 "WDI API call before module is initialized - Fail request");
32454
32455 return WDI_STATUS_E_NOT_ALLOWED;
32456 }
32457
32458 wdiEventData.wdiRequest = WDI_EXTSCAN_START_REQ;
32459 wdiEventData.pEventData = pwdiEXTScanStartReqParams;
32460 wdiEventData.uEventDataSize = sizeof(*pwdiEXTScanStartReqParams);
32461 wdiEventData.pCBfnc = wdiEXTScanStartRspCb;
32462 wdiEventData.pUserData = pUserData;
32463
32464 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
32465}
32466
32467/**
32468 @brief WDI_ProcessEXTScanStartReq -
32469 Extended Scan Start Request to FW
32470
32471 @param pWDICtx : wdi context
32472 pEventData : indication data
32473
32474 @see
32475 @return none
32476*/
32477WDI_Status
32478WDI_ProcessEXTScanStartReq
32479(
32480 WDI_ControlBlockType* pWDICtx,
32481 WDI_EventInfoType* pEventData
32482)
32483{
32484 WDI_EXTScanStartReqParams* pwdiEXTScanStartReqParams;
32485 WDI_EXTScanStartRspCb wdiEXTScanStartCb;
32486 wpt_uint8* pSendBuffer = NULL;
32487 wpt_uint16 usSendSize = 0;
32488 wpt_uint16 usDataOffset = 0;
32489 tpHalExtScanStartReq pHalExtScanStartReqParams;
32490 int i = 0;
32491 int j = 0;
32492
32493 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32494 "%s: %d Enter",__func__, __LINE__);
32495
32496 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
32497 ( NULL == pEventData->pCBfnc ))
32498 {
32499 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32500 "%s: Invalid parameters", __func__);
32501 WDI_ASSERT(0);
32502 return WDI_STATUS_E_FAILURE;
32503 }
32504
32505 pwdiEXTScanStartReqParams =
32506 (WDI_EXTScanStartReqParams*)pEventData->pEventData;
32507 wdiEXTScanStartCb = (WDI_EXTScanStartRspCb)pEventData->pCBfnc;
32508
32509 /*-----------------------------------------------------------------------
32510 Get message buffer
32511 ! TO DO : proper conversion into the HAL Message Request Format
32512 -----------------------------------------------------------------------*/
32513 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
32514 pWDICtx,
32515 WDI_EXTSCAN_START_REQ,
32516 sizeof(tHalExtScanStartReq),
32517 &pSendBuffer, &usDataOffset,
32518 &usSendSize))||
32519 ( usSendSize < (usDataOffset + sizeof(tHalExtScanStartReq) )))
32520 {
32521 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32522 "Unable to get send buffer in %s %p %p %p", __func__,
32523 pEventData, pwdiEXTScanStartReqParams, wdiEXTScanStartCb);
32524 WDI_ASSERT(0);
32525 return WDI_STATUS_E_FAILURE;
32526 }
32527
32528 pHalExtScanStartReqParams =
32529 (tpHalExtScanStartReq ) (pSendBuffer + usDataOffset);
32530
32531 pHalExtScanStartReqParams->basePeriod = pwdiEXTScanStartReqParams->basePeriod;
32532 pHalExtScanStartReqParams->maxApPerScan =
32533 pwdiEXTScanStartReqParams->maxAPperScan;
32534 pHalExtScanStartReqParams->reportThreshold =
32535 pwdiEXTScanStartReqParams->reportThreshold;
32536 pHalExtScanStartReqParams->requestId = pwdiEXTScanStartReqParams->requestId;
32537 pHalExtScanStartReqParams->sessionId = pwdiEXTScanStartReqParams->sessionId;
32538 pHalExtScanStartReqParams->numBuckets = pwdiEXTScanStartReqParams->numBuckets;
32539
32540 for( i = 0; i < WDI_WLAN_EXTSCAN_MAX_BUCKETS ; i++ )
32541 {
32542 pHalExtScanStartReqParams->bucketData[i].bucketId =
32543 pwdiEXTScanStartReqParams->buckets[i].bucket;
32544 pHalExtScanStartReqParams->bucketData[i].channelBand =
32545 pwdiEXTScanStartReqParams->buckets[i].band;
32546 pHalExtScanStartReqParams->bucketData[i].period =
32547 pwdiEXTScanStartReqParams->buckets[i].period;
32548 pHalExtScanStartReqParams->bucketData[i].reportEvents =
32549 pwdiEXTScanStartReqParams->buckets[i].reportEvents;
32550 pHalExtScanStartReqParams->bucketData[i].numChannels =
32551 pwdiEXTScanStartReqParams->buckets[i].numChannels;
32552
32553 for( j = 0; j< WDI_WLAN_EXTSCAN_MAX_CHANNELS; j++)
32554 {
32555 pHalExtScanStartReqParams->bucketData[i].channelList[j].channel =
32556 pwdiEXTScanStartReqParams->buckets[i].channels[j].channel;
32557 pHalExtScanStartReqParams->bucketData[i].channelList[j].dwellTimeMs =
32558 pwdiEXTScanStartReqParams->buckets[i].channels[j].dwellTimeMs;
32559 pHalExtScanStartReqParams->bucketData[i].channelList[j].passive =
32560 pwdiEXTScanStartReqParams->buckets[i].channels[j].passive;
32561 }
32562
32563 }
32564
32565
32566 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32567 " basePeriod %u maxApPerScan %u reportThreshold %u requestId %u"
32568 " sessionId %u numBuckets%u ",
32569 pHalExtScanStartReqParams->basePeriod,
32570 pHalExtScanStartReqParams->maxApPerScan,
32571 pHalExtScanStartReqParams->reportThreshold,
32572 pHalExtScanStartReqParams->requestId,
32573 pHalExtScanStartReqParams->sessionId,
32574 pHalExtScanStartReqParams->numBuckets);
32575
32576 for( i = 0; i < pHalExtScanStartReqParams->numBuckets ; i++ )
32577 {
32578 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO ,
32579 " %d) bucketId %u channelBand %u period %u "
32580 " reportEvents %u numChannels %u ",i,
32581 pHalExtScanStartReqParams->bucketData[i].bucketId,
32582 pHalExtScanStartReqParams->bucketData[i].channelBand,
32583 pHalExtScanStartReqParams->bucketData[i].period,
32584 pHalExtScanStartReqParams->bucketData[i].reportEvents,
32585 pHalExtScanStartReqParams->bucketData[i].numChannels);
32586
32587 for( j = 0; j< pHalExtScanStartReqParams->bucketData[i].numChannels; j++)
32588 {
32589 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32590 "%d) channel %u dwellTimeMs %u passive %u ",j,
32591 pHalExtScanStartReqParams->bucketData[i].channelList[j].channel,
32592 pHalExtScanStartReqParams->bucketData[i].channelList[j].dwellTimeMs,
32593 pHalExtScanStartReqParams->bucketData[i].channelList[j].passive);
32594 }
32595
32596 }
32597
Dino Mycle41bdc942014-06-10 11:30:24 +053032598 pWDICtx->pReqStatusUserData = pEventData->pUserData;
32599
32600 /*-------------------------------------------------------------------------
32601 Send EXTSCAN Start Request to HAL
32602 -------------------------------------------------------------------------*/
32603 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
32604 wdiEXTScanStartCb, pEventData->pUserData,
32605 WDI_EXTSCAN_START_RSP);
32606}
32607
32608/**
32609 @brief WDI_EXTScanSetBSSIDHotlistReq
32610
32611 @param WDI_EXTScanSetBSSIDHotlistReqParams: Req parameter for the FW
32612 WDI_EXTScanSetBSSIDHotlistRspCb: callback for passing back the response
32613 of the Req operation received from the device
32614 pUserData: user data will be passed back with the callback
32615
32616 @return SUCCESS or FAIL
32617*/
32618WDI_Status
32619WDI_EXTScanSetBSSIDHotlistReq(
32620 WDI_EXTScanSetBSSIDHotlistReqParams* pwdiEXTScanSetBSSIDHotlistReqParams,
32621 WDI_EXTScanSetBSSIDHotlistRspCb wdiEXTScanSetBSSIDHotlistRspCb,
32622 void* pUserData)
32623{
32624 WDI_EventInfoType wdiEventData;
32625
32626 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32627 "%s: %d Enter ",__func__, __LINE__);
32628 /*------------------------------------------------------------------------
32629 Sanity Check
32630 ------------------------------------------------------------------------*/
32631 if ( eWLAN_PAL_FALSE == gWDIInitialized )
32632 {
32633 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
32634 "WDI API call before module is initialized - Fail request");
32635
32636 return WDI_STATUS_E_NOT_ALLOWED;
32637 }
32638
32639 wdiEventData.wdiRequest = WDI_EXTSCAN_SET_BSSID_HOTLIST_REQ;
32640 wdiEventData.pEventData = pwdiEXTScanSetBSSIDHotlistReqParams;
32641 wdiEventData.uEventDataSize = sizeof(*pwdiEXTScanSetBSSIDHotlistReqParams);
32642 wdiEventData.pCBfnc = wdiEXTScanSetBSSIDHotlistRspCb;
32643 wdiEventData.pUserData = pUserData;
32644
32645 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
32646}
32647
32648/**
32649 @brief WDI_ProcessEXTScanSetBSSIDHotlistReq -
32650 Extended Scan Set BSSSID Hotlist Request to FW
32651
32652 @param pWDICtx : wdi context
32653 pEventData : indication data
32654
32655 @see
32656 @return none
32657*/
32658WDI_Status
32659WDI_ProcessEXTScanSetBSSIDHotlistReq
32660(
32661 WDI_ControlBlockType* pWDICtx,
32662 WDI_EventInfoType* pEventData
32663)
32664{
32665 WDI_EXTScanSetBSSIDHotlistReqParams* pwdiEXTScanSetBSSIDHotlistReqParams;
32666 WDI_EXTScanSetBSSIDHotlistRspCb wdiEXTScanSetBSSIDHotlistRspCb;
32667 wpt_uint8* pSendBuffer = NULL;
32668 wpt_uint16 usSendSize = 0;
32669 wpt_uint16 usDataOffset = 0;
32670 tpHalBssidHotlistSetReq pHalBssidHotlistSetReqParams;
32671 int i;
32672
32673 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32674 "%s: %d Enter",__func__, __LINE__);
32675
32676 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
32677 ( NULL == pEventData->pCBfnc ))
32678 {
32679 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32680 "%s: Invalid parameters", __func__);
32681 WDI_ASSERT(0);
32682 return WDI_STATUS_E_FAILURE;
32683 }
32684
32685 pwdiEXTScanSetBSSIDHotlistReqParams =
32686 (WDI_EXTScanSetBSSIDHotlistReqParams *)pEventData->pEventData;
32687 wdiEXTScanSetBSSIDHotlistRspCb =
32688 (WDI_EXTScanSetBSSIDHotlistRspCb)pEventData->pCBfnc;
32689
32690 /*-----------------------------------------------------------------------
32691 Get message buffer
32692 ! TO DO : proper conversion into the HAL Message Request Format
32693 -----------------------------------------------------------------------*/
32694 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
32695 pWDICtx,
32696 WDI_EXTSCAN_SET_BSSID_HOTLIST_REQ,
32697 sizeof(tHalBssidHotlistSetReq),
32698 &pSendBuffer, &usDataOffset,
32699 &usSendSize))||
32700 ( usSendSize < (usDataOffset + sizeof(tHalBssidHotlistSetReq) )))
32701 {
32702 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32703 "Unable to get send buffer in %s %p %p %p", __func__,
32704 pEventData, pwdiEXTScanSetBSSIDHotlistReqParams,
32705 wdiEXTScanSetBSSIDHotlistRspCb);
32706 WDI_ASSERT(0);
32707 return WDI_STATUS_E_FAILURE;
32708 }
32709 pHalBssidHotlistSetReqParams =
32710 (tpHalBssidHotlistSetReq) (pSendBuffer + usDataOffset);
32711
32712 pHalBssidHotlistSetReqParams->requestId =
32713 pwdiEXTScanSetBSSIDHotlistReqParams->requestId;
32714
32715 pHalBssidHotlistSetReqParams->sessionId =
32716 pwdiEXTScanSetBSSIDHotlistReqParams->sessionId;
32717
32718 pHalBssidHotlistSetReqParams->numAp =
32719 pwdiEXTScanSetBSSIDHotlistReqParams->numAp;
32720
32721 for( i = 0; i < WLAN_HAL_EXT_SCAN_MAX_HOTLIST_APS; i++){
32722
32723 wpalMemoryCopy(pHalBssidHotlistSetReqParams->ap[i].bssid,
32724 pwdiEXTScanSetBSSIDHotlistReqParams->ap[i].bssid,
32725 WDI_MAC_ADDR_LEN);
32726
32727 pHalBssidHotlistSetReqParams->ap[i].lowRssiThreshold =
32728 pwdiEXTScanSetBSSIDHotlistReqParams->ap[i].low;
32729
32730 pHalBssidHotlistSetReqParams->ap[i].highRssiThreshold =
32731 pwdiEXTScanSetBSSIDHotlistReqParams->ap[i].high;
32732
32733 pHalBssidHotlistSetReqParams->ap[i].channel =
32734 pwdiEXTScanSetBSSIDHotlistReqParams->ap[i].channel;
32735
32736 }
32737
32738 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32739 "ReqID %u sessionId %u numAp %u ",
32740 pHalBssidHotlistSetReqParams->requestId,
32741 pHalBssidHotlistSetReqParams->sessionId,
32742 pHalBssidHotlistSetReqParams->numAp);
32743
32744 for( i = 0; i < pHalBssidHotlistSetReqParams->numAp; i++){
32745
32746 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32747 "%s %d %d) BSSID: %pM lowRssiThreshold %d highRssiThreshold %d Channel %u ",
32748 __func__, __LINE__, i,
32749 pHalBssidHotlistSetReqParams->ap[i].bssid,
32750 pHalBssidHotlistSetReqParams->ap[i].lowRssiThreshold,
32751 pHalBssidHotlistSetReqParams->ap[i].highRssiThreshold,
32752 pHalBssidHotlistSetReqParams->ap[i].channel);
32753
32754 }
32755
32756 pWDICtx->pReqStatusUserData = pEventData->pUserData;
32757
32758
32759 /*-------------------------------------------------------------------------
32760 Send EXTScan Stop Request to HAL
32761 -------------------------------------------------------------------------*/
32762 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
32763 wdiEXTScanSetBSSIDHotlistRspCb, pEventData->pUserData,
32764 WDI_EXTSCAN_SET_HOTLIST_BSSID_RSP);
32765}
32766
32767/**
32768 @brief WDI_EXTScanResetBSSIDHotlistReq
32769
32770 @param WDI_EXTScanResetBSSIDHotlistReqParams: Req parameter for the FW
32771 WDI_EXTScanResetBSSIDHotlistRspCb: callback for passing back the response
32772 of the Req operation received from the device
32773 pUserData: user data will be passed back with the callback
32774
32775 @return SUCCESS or FAIL
32776*/
32777WDI_Status
32778WDI_EXTScanResetBSSIDHotlistReq(
32779 WDI_EXTScanResetBSSIDHotlistReqParams* pwdiEXTScanResetBSSIDHotlistReqParams,
32780 WDI_EXTScanResetBSSIDHotlistRspCb wdiEXTScanResetBSSIDHotlistRspCb,
32781 void* pUserData)
32782{
32783 WDI_EventInfoType wdiEventData;
32784
32785 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32786 "%s: %d",__func__, __LINE__);
32787 /*------------------------------------------------------------------------
32788 Sanity Check
32789 ------------------------------------------------------------------------*/
32790 if ( eWLAN_PAL_FALSE == gWDIInitialized )
32791 {
32792 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
32793 "WDI API call before module is initialized - Fail request");
32794
32795 return WDI_STATUS_E_NOT_ALLOWED;
32796 }
32797
32798 wdiEventData.wdiRequest = WDI_EXTSCAN_RESET_BSSID_HOTLIST_REQ;
32799 wdiEventData.pEventData = pwdiEXTScanResetBSSIDHotlistReqParams;
32800 wdiEventData.uEventDataSize = sizeof(*pwdiEXTScanResetBSSIDHotlistReqParams);
32801 wdiEventData.pCBfnc = wdiEXTScanResetBSSIDHotlistRspCb;
32802 wdiEventData.pUserData = pUserData;
32803
32804 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
32805}
32806
32807/**
32808 @brief WDI_ProcessEXTScanResetBSSIDHotlistReq -
32809 Extended Scan reset BSSID hotlist Request to FW
32810
32811 @param pWDICtx : wdi context
32812 pEventData : indication data
32813
32814 @see
32815 @return none
32816*/
32817WDI_Status
32818WDI_ProcessEXTScanResetBSSIDHotlistReq
32819(
32820 WDI_ControlBlockType* pWDICtx,
32821 WDI_EventInfoType* pEventData
32822)
32823{
32824 WDI_EXTScanResetBSSIDHotlistReqParams* pwdiEXTScanResetBSSIDHotlistReqParams;
32825 WDI_EXTScanResetBSSIDHotlistRspCb wdiEXTScanResetBSSIDHotlistRspCb;
32826 wpt_uint8* pSendBuffer = NULL;
32827 wpt_uint16 usSendSize = 0;
32828 wpt_uint16 usDataOffset = 0;
32829 tpHalHotlistResetReq pHalHotlistResetReqParams;
32830
32831 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32832 "%s: %d",__func__, __LINE__);
32833
32834 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
32835 ( NULL == pEventData->pCBfnc ))
32836 {
32837 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32838 "%s: Invalid parameters", __func__);
32839 WDI_ASSERT(0);
32840 return WDI_STATUS_E_FAILURE;
32841 }
32842
32843 pwdiEXTScanResetBSSIDHotlistReqParams =
32844 (WDI_EXTScanResetBSSIDHotlistReqParams *)pEventData->pEventData;
32845 wdiEXTScanResetBSSIDHotlistRspCb =
32846 (WDI_EXTScanResetBSSIDHotlistRspCb)pEventData->pCBfnc;
32847
32848 /*-----------------------------------------------------------------------
32849 Get message buffer
32850 ! TO DO : proper conversion into the HAL Message Request Format
32851 -----------------------------------------------------------------------*/
32852 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
32853 pWDICtx,
32854 WDI_EXTSCAN_RESET_BSSID_HOTLIST_REQ,
32855 sizeof(tHalHotlistResetReq),
32856 &pSendBuffer, &usDataOffset,
32857 &usSendSize))||
32858 ( usSendSize < (usDataOffset + sizeof(tHalHotlistResetReq) )))
32859 {
32860 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32861 "Unable to get send buffer in %s %p %p %p", __func__,
32862 pEventData, pwdiEXTScanResetBSSIDHotlistReqParams,
32863 wdiEXTScanResetBSSIDHotlistRspCb);
32864 WDI_ASSERT(0);
32865 return WDI_STATUS_E_FAILURE;
32866 }
32867 pHalHotlistResetReqParams =
32868 (tpHalHotlistResetReq) (pSendBuffer+usDataOffset);
32869
32870 pHalHotlistResetReqParams->requestId =
32871 pwdiEXTScanResetBSSIDHotlistReqParams->requestId;
32872
32873 pWDICtx->pReqStatusUserData = pEventData->pUserData;
32874
32875 /*-------------------------------------------------------------------------
32876 Send EXTScan Stop Request to HAL
32877 -------------------------------------------------------------------------*/
32878 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
32879 wdiEXTScanResetBSSIDHotlistRspCb, pEventData->pUserData,
32880 WDI_EXTSCAN_RESET_HOTLIST_BSSID_RSP);
32881}
32882
32883/**
32884 @brief WDI_EXTScanSetSignfRSSIChangeReq
32885
32886 @param WDI_EXTScanSetSignfRSSIChangeReqParams: Req parameter for the FW
32887 WDI_EXTScanSetSignfRSSIChangeRspCb: callback for passing back the response
32888 of the Req operation received from the device
32889 pUserData: user data will be passed back with the callback
32890
32891 @return SUCCESS or FAIL
32892*/
32893WDI_Status
32894WDI_EXTScanSetSignfRSSIChangeReq(
32895 WDI_EXTScanSetSignfRSSIChangeReqParams* pwdiEXTScanSetSignfRSSIChangeReqParams,
32896 WDI_EXTScanSetSignfRSSIChangeRspCb wdiEXTScanSetSignfRSSIChangeRspCb,
32897 void* pUserData)
32898{
32899 WDI_EventInfoType wdiEventData;
32900
32901 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32902 "%s: %d ",__func__, __LINE__);
32903 /*------------------------------------------------------------------------
32904 Sanity Check
32905 ------------------------------------------------------------------------*/
32906 if ( eWLAN_PAL_FALSE == gWDIInitialized )
32907 {
32908 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
32909 "WDI API call before module is initialized - Fail request");
32910
32911 return WDI_STATUS_E_NOT_ALLOWED;
32912 }
32913
32914 wdiEventData.wdiRequest = WDI_EXTSCAN_SET_SIGNF_RSSI_CHANGE_REQ;
32915 wdiEventData.pEventData = pwdiEXTScanSetSignfRSSIChangeReqParams;
32916 wdiEventData.uEventDataSize =
32917 sizeof(*pwdiEXTScanSetSignfRSSIChangeReqParams);
32918 wdiEventData.pCBfnc = wdiEXTScanSetSignfRSSIChangeRspCb;
32919 wdiEventData.pUserData = pUserData;
32920
32921 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
32922}
32923
32924/**
32925 @brief WDI_ProcessEXTScanSetSignifRSSIChangeReq -
32926 Extended Scan set Significant RSSI change Request to FW
32927
32928 @param pWDICtx : wdi context
32929 pEventData : indication data
32930
32931 @see
32932 @return none
32933*/
32934WDI_Status
32935WDI_ProcessEXTScanSetSignifRSSIChangeReq
32936(
32937 WDI_ControlBlockType* pWDICtx,
32938 WDI_EventInfoType* pEventData
32939)
32940{
32941 WDI_EXTScanSetSignfRSSIChangeReqParams*
32942 pwdiEXTScanSetSignfRSSIChangeReqParams;
32943 WDI_EXTScanSetSignfRSSIChangeRspCb wdiEXTScanSetSignfRSSIChangeRspCb;
32944 wpt_uint8* pSendBuffer = NULL;
32945 wpt_uint16 usSendSize = 0;
32946 wpt_uint16 usDataOffset = 0;
32947 tpHalSigRssiSetReq pHalSigRssiSetReqParams;
32948 int i;
32949
32950 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32951 "%s: %d Enter",__func__, __LINE__);
32952
32953 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
32954 ( NULL == pEventData->pCBfnc ))
32955 {
32956 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32957 "%s: Invalid parameters", __func__);
32958 WDI_ASSERT(0);
32959 return WDI_STATUS_E_FAILURE;
32960 }
32961
32962 pwdiEXTScanSetSignfRSSIChangeReqParams =
32963 (WDI_EXTScanSetSignfRSSIChangeReqParams *)pEventData->pEventData;
32964 wdiEXTScanSetSignfRSSIChangeRspCb =
32965 (WDI_EXTScanSetSignfRSSIChangeRspCb)pEventData->pCBfnc;
32966
32967 /*-----------------------------------------------------------------------
32968 Get message buffer
32969 ! TO DO : proper conversion into the HAL Message Request Format
32970 -----------------------------------------------------------------------*/
32971 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
32972 pWDICtx,
32973 WDI_EXTSCAN_SET_SIGNF_RSSI_CHANGE_REQ,
32974 sizeof(tHalSigRssiSetReq),
32975 &pSendBuffer, &usDataOffset,
32976 &usSendSize))||
32977 ( usSendSize < (usDataOffset + sizeof(tHalSigRssiSetReq) )))
32978 {
32979 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32980 "Unable to get send buffer in %s %p %p %p", __func__,
32981 pEventData, pwdiEXTScanSetSignfRSSIChangeReqParams,
32982 wdiEXTScanSetSignfRSSIChangeRspCb);
32983 WDI_ASSERT(0);
32984 return WDI_STATUS_E_FAILURE;
32985 }
32986
32987 pHalSigRssiSetReqParams =
32988 (tpHalSigRssiSetReq) (pSendBuffer + usDataOffset);
32989
32990 pHalSigRssiSetReqParams->requestId =
32991 pwdiEXTScanSetSignfRSSIChangeReqParams->requestId;
32992 pHalSigRssiSetReqParams->sessionId =
32993 pwdiEXTScanSetSignfRSSIChangeReqParams->sessionId;
32994 pHalSigRssiSetReqParams->rssiSampleSize =
32995 pwdiEXTScanSetSignfRSSIChangeReqParams->rssiSampleSize;
32996 pHalSigRssiSetReqParams->lostApSampleSize =
32997 pwdiEXTScanSetSignfRSSIChangeReqParams->lostApSampleSize;
32998 pHalSigRssiSetReqParams->minBreaching =
32999 pwdiEXTScanSetSignfRSSIChangeReqParams->minBreaching;
33000 pHalSigRssiSetReqParams->numAp =
33001 pwdiEXTScanSetSignfRSSIChangeReqParams->numAp;
33002
33003
33004 for( i = 0; i < WLAN_HAL_EXT_SCAN_MAX_SIG_CHANGE_APS; i++){
33005
33006 wpalMemoryCopy(pHalSigRssiSetReqParams->ap[i].bssid,
33007 pwdiEXTScanSetSignfRSSIChangeReqParams->ap[i].bssid,
33008 WDI_MAC_ADDR_LEN);
33009
33010 pHalSigRssiSetReqParams->ap[i].lowRssiThreshold =
33011 pwdiEXTScanSetSignfRSSIChangeReqParams->ap[i].low;
33012
33013 pHalSigRssiSetReqParams->ap[i].highRssiThreshold =
33014 pwdiEXTScanSetSignfRSSIChangeReqParams->ap[i].high;
33015
33016 pHalSigRssiSetReqParams->ap[i].channel =
33017 pwdiEXTScanSetSignfRSSIChangeReqParams->ap[i].channel;
33018
33019 }
33020
33021
33022 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33023 "ReqID %u sessionId %u rssiSampleSize %u lostApSampleSize %u "
33024 " minBreaching %u numAp %u ",
33025 pHalSigRssiSetReqParams->requestId,
33026 pHalSigRssiSetReqParams->sessionId,
33027 pHalSigRssiSetReqParams->rssiSampleSize,
33028 pHalSigRssiSetReqParams->lostApSampleSize,
33029 pHalSigRssiSetReqParams->minBreaching,
33030 pHalSigRssiSetReqParams->numAp);
33031
33032 for( i = 0; i < pHalSigRssiSetReqParams->numAp; i++){
33033
33034 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33035 "%d) BSSID: %pM lowRssiThreshold %d highRssiThreshold %d Channel %u ",
33036 i,
33037 pHalSigRssiSetReqParams->ap[i].bssid,
33038 pHalSigRssiSetReqParams->ap[i].lowRssiThreshold,
33039 pHalSigRssiSetReqParams->ap[i].highRssiThreshold,
33040 pHalSigRssiSetReqParams->ap[i].channel);
33041
33042 }
33043
33044 pWDICtx->pReqStatusUserData = pEventData->pUserData;
33045
33046
33047 /*-------------------------------------------------------------------------
33048 Send EXTScan Stop Request to HAL
33049 -------------------------------------------------------------------------*/
33050 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
33051 wdiEXTScanSetSignfRSSIChangeRspCb, pEventData->pUserData,
33052 WDI_EXTSCAN_SET_SIGNF_RSSI_CHANGE_RSP);
33053}
33054
33055/**
33056 @brief WDI_EXTScanResetSignfRSSIChangeReq
33057
33058 @param WDI_EXTScanResetSignfRSSIChangeReqParams: Req parameter for the FW
33059 WDI_EXTScanResetSignfRSSIChangeRspCb: callback for passing back the response
33060 of the Req operation received from the device
33061 pUserData: user data will be passed back with the callback
33062
33063 @return SUCCESS or FAIL
33064*/
33065WDI_Status
33066WDI_EXTScanResetSignfRSSIChangeReq(
33067 WDI_EXTScanResetSignfRSSIChangeReqParams*
33068 pwdiEXTScanResetSignfRSSIChangeReqParams,
33069 WDI_EXTScanResetSignfRSSIChangeRspCb
33070 wdiEXTScanResetSignfRSSIChangeRspCb,
33071 void* pUserData)
33072{
33073 WDI_EventInfoType wdiEventData;
33074
33075 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33076 "%s: %d ",__func__, __LINE__);
33077 /*------------------------------------------------------------------------
33078 Sanity Check
33079 ------------------------------------------------------------------------*/
33080 if ( eWLAN_PAL_FALSE == gWDIInitialized )
33081 {
33082 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
33083 "WDI API call before module is initialized - Fail request");
33084
33085 return WDI_STATUS_E_NOT_ALLOWED;
33086 }
33087
33088 wdiEventData.wdiRequest = WDI_EXTSCAN_RESET_SIGNF_RSSI_CHANGE_REQ;
33089 wdiEventData.pEventData = pwdiEXTScanResetSignfRSSIChangeReqParams;
33090 wdiEventData.uEventDataSize =
33091 sizeof(*pwdiEXTScanResetSignfRSSIChangeReqParams);
33092 wdiEventData.pCBfnc = wdiEXTScanResetSignfRSSIChangeRspCb;
33093 wdiEventData.pUserData = pUserData;
33094
33095 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
33096}
33097
33098/**
33099 @brief WDI_ProcessEXTScanResetSignfRSSIChangeReq -
33100 Extended Scana reset Significant RSSI change Request to FW
33101
33102 @param pWDICtx : wdi context
33103 pEventData : indication data
33104
33105 @see
33106 @return none
33107*/
33108WDI_Status
33109WDI_ProcessEXTScanResetSignfRSSIChangeReq
33110(
33111 WDI_ControlBlockType* pWDICtx,
33112 WDI_EventInfoType* pEventData
33113)
33114{
33115 WDI_EXTScanResetSignfRSSIChangeReqParams*
33116 pwdiEXTScanResetSignfRSSIChangeReqParams;
33117 WDI_EXTScanResetSignfRSSIChangeRspCb wdiEXTScanResetSignfRSSIChangeRspCb;
33118 wpt_uint8* pSendBuffer = NULL;
33119 wpt_uint16 usSendSize = 0;
33120 wpt_uint16 usDataOffset = 0;
33121 tpHalSigRssiResetReq pHalSigRssiResetReqParams;
33122
33123 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33124 "%s: %d ",__func__, __LINE__);
33125
33126 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
33127 ( NULL == pEventData->pCBfnc ))
33128 {
33129 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33130 "%s: Invalid parameters", __func__);
33131 WDI_ASSERT(0);
33132 return WDI_STATUS_E_FAILURE;
33133 }
33134
33135 pwdiEXTScanResetSignfRSSIChangeReqParams =
33136 (WDI_EXTScanResetSignfRSSIChangeReqParams *)pEventData->pEventData;
33137 wdiEXTScanResetSignfRSSIChangeRspCb =
33138 (WDI_EXTScanResetSignfRSSIChangeRspCb)pEventData->pCBfnc;
33139
33140 /*-----------------------------------------------------------------------
33141 Get message buffer
33142 ! TO DO : proper conversion into the HAL Message Request Format
33143 -----------------------------------------------------------------------*/
33144 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
33145 pWDICtx,
33146 WDI_EXTSCAN_RESET_SIGNF_RSSI_CHANGE_REQ,
33147 sizeof(tHalSigRssiResetReq),
33148 &pSendBuffer, &usDataOffset,
33149 &usSendSize))||
33150 ( usSendSize < (usDataOffset + sizeof(tHalSigRssiResetReq) )))
33151 {
33152 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33153 "Unable to get send buffer in %s %p %p %p", __func__,
33154 pEventData, pwdiEXTScanResetSignfRSSIChangeReqParams,
33155 wdiEXTScanResetSignfRSSIChangeRspCb);
33156 WDI_ASSERT(0);
33157 return WDI_STATUS_E_FAILURE;
33158 }
33159 pHalSigRssiResetReqParams =
33160 (tpHalSigRssiResetReq) (pSendBuffer+usDataOffset);
33161
33162 pHalSigRssiResetReqParams->requestId =
33163 pwdiEXTScanResetSignfRSSIChangeReqParams->requestId;
33164
33165 pWDICtx->pReqStatusUserData = pEventData->pUserData;
33166
33167
33168 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
33169 wdiEXTScanResetSignfRSSIChangeRspCb,
33170 pEventData->pUserData,
33171 WDI_EXTSCAN_RESET_SIGNF_RSSI_CHANGE_RSP);
33172}
33173
33174/**
33175 @brief Process Extended Scan Start Rsp function (called when a response
33176 is being received over the bus from HAL)
33177
33178 @param pWDICtx: pointer to the WLAN DAL context
33179 pEventData: pointer to the event information structure
33180
33181 @see
33182 @return Result of the function call
33183*/
33184WDI_Status
33185WDI_ProcessEXTScanStartRsp
33186(
33187 WDI_ControlBlockType* pWDICtx,
33188 WDI_EventInfoType* pEventData
33189)
33190{
33191 WDI_EXTScanStartRspCb wdiEXTScanStartRspCb;
33192
33193 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33194 "%s: %d",__func__, __LINE__);
33195 /*-------------------------------------------------------------------------
33196 Sanity check
33197 -------------------------------------------------------------------------*/
33198 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
33199 ( NULL == pEventData->pEventData))
33200 {
33201 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33202 "%s: Invalid parameters", __func__);
33203 WDI_ASSERT(0);
33204 return WDI_STATUS_E_FAILURE;
33205 }
33206
33207 wdiEXTScanStartRspCb = (WDI_EXTScanStartRspCb)pWDICtx->pfncRspCB;
33208 if ( NULL == wdiEXTScanStartRspCb)
33209 {
33210 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33211 "%s: Callback function Invalid", __func__);
33212 WDI_ASSERT(0);
33213 return WDI_STATUS_E_FAILURE;
33214 }
33215
33216 wdiEXTScanStartRspCb((void *)pEventData->pEventData, pWDICtx->pRspCBUserData);
33217
33218 return WDI_STATUS_SUCCESS;
33219}
33220
33221
33222/**
33223 @brief Process Extended Scan Stop Rsp function (called when a response
33224 is being received over the bus from HAL)
33225
33226 @param pWDICtx: pointer to the WLAN DAL context
33227 pEventData: pointer to the event information structure
33228
33229 @see
33230 @return Result of the function call
33231*/
33232WDI_Status
33233WDI_ProcessEXTScanStopRsp
33234(
33235 WDI_ControlBlockType* pWDICtx,
33236 WDI_EventInfoType* pEventData
33237)
33238{
33239 WDI_EXTScanStopRspCb wdiEXTScanStopRspCb;
33240
33241 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33242 "%s: %d",__func__, __LINE__);
33243
33244
33245 /*-------------------------------------------------------------------------
33246 Sanity check
33247 -------------------------------------------------------------------------*/
33248 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
33249 ( NULL == pEventData->pEventData))
33250 {
33251 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33252 "%s: Invalid parameters", __func__);
33253 WDI_ASSERT(0);
33254 return WDI_STATUS_E_FAILURE;
33255 }
33256
33257 wdiEXTScanStopRspCb = (WDI_EXTScanStartRspCb)pWDICtx->pfncRspCB;
33258 if ( NULL == wdiEXTScanStopRspCb)
33259 {
33260 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33261 "%s: Callback function Invalid", __func__);
33262 WDI_ASSERT(0);
33263 return WDI_STATUS_E_FAILURE;
33264 }
33265
33266 wdiEXTScanStopRspCb((void *) pEventData->pEventData, pWDICtx->pRspCBUserData);
33267
33268 return WDI_STATUS_SUCCESS;
33269}
33270
33271/**
33272 @brief Process Extended Scan Get Cached Rsp function (called when a response
33273 is being received over the bus from HAL)
33274
33275 @param pWDICtx: pointer to the WLAN DAL context
33276 pEventData: pointer to the event information structure
33277
33278 @see
33279 @return Result of the function call
33280*/
33281WDI_Status
33282WDI_ProcessEXTScanGetCachedResultsRsp
33283(
33284 WDI_ControlBlockType* pWDICtx,
33285 WDI_EventInfoType* pEventData
33286)
33287{
33288 WDI_EXTScanGetCachedResultsRspCb wdiEXTScanGetCachedResultsRspCb;
33289
33290 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33291 "%s: %d Enter",__func__, __LINE__);
33292
33293
33294 /*-------------------------------------------------------------------------
33295 Sanity check
33296 -------------------------------------------------------------------------*/
33297 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
33298 ( NULL == pEventData->pEventData))
33299 {
33300 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33301 "%s: Invalid parameters", __func__);
33302 WDI_ASSERT(0);
33303 return WDI_STATUS_E_FAILURE;
33304 }
33305
33306 wdiEXTScanGetCachedResultsRspCb = (WDI_EXTScanStartRspCb)pWDICtx->pfncRspCB;
33307 if ( NULL == wdiEXTScanGetCachedResultsRspCb)
33308 {
33309 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33310 "%s: Callback function Invalid", __func__);
33311 WDI_ASSERT(0);
33312 return WDI_STATUS_E_FAILURE;
33313 }
33314
33315 wdiEXTScanGetCachedResultsRspCb(
33316 (void *) pEventData->pEventData, pWDICtx->pRspCBUserData);
33317
33318 return WDI_STATUS_SUCCESS;
33319}
33320
33321/**
33322 @brief Process Extended Scan Get Capabilityu Rsp function (called when a response
33323 is being received over the bus from HAL)
33324
33325 @param pWDICtx: pointer to the WLAN DAL context
33326 pEventData: pointer to the event information structure
33327
33328 @see
33329 @return Result of the function call
33330*/
33331WDI_Status
33332WDI_ProcessEXTScanGetCapabilitiesRsp
33333(
33334 WDI_ControlBlockType* pWDICtx,
33335 WDI_EventInfoType* pEventData
33336)
33337{
33338 WDI_EXTScanGetCapabilitiesRspCb wdiEXTScanGetCapabilitiesRspCb;
33339
33340 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33341 "%s: %d ",__func__, __LINE__);
33342
33343
33344 /*-------------------------------------------------------------------------
33345 Sanity check
33346 -------------------------------------------------------------------------*/
33347 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
33348 ( NULL == pEventData->pEventData))
33349 {
33350 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33351 "%s: Invalid parameters", __func__);
33352 WDI_ASSERT(0);
33353 return WDI_STATUS_E_FAILURE;
33354 }
33355
33356 wdiEXTScanGetCapabilitiesRspCb =
33357 (WDI_EXTScanGetCapabilitiesRspCb)pWDICtx->pfncRspCB;
33358 if ( NULL == wdiEXTScanGetCapabilitiesRspCb)
33359 {
33360 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33361 "%s: Callback function Invalid", __func__);
33362 WDI_ASSERT(0);
33363 return WDI_STATUS_E_FAILURE;
33364 }
33365
33366 wdiEXTScanGetCapabilitiesRspCb(
33367 (void *) pEventData->pEventData, pWDICtx->pRspCBUserData);
33368
33369 return WDI_STATUS_SUCCESS;
33370}
33371
33372/**
33373 @brief Process Extended Scan Set hotlist BSSID Rsp function (called when a
33374 response is being received over the bus from HAL)
33375
33376 @param pWDICtx: pointer to the WLAN DAL context
33377 pEventData: pointer to the event information structure
33378
33379 @see
33380 @return Result of the function call
33381*/
33382WDI_Status
33383WDI_ProcessEXTScanSetHotlistBSSIDRsp
33384(
33385 WDI_ControlBlockType* pWDICtx,
33386 WDI_EventInfoType* pEventData
33387)
33388{
33389 WDI_EXTScanSetBSSIDHotlistRspCb wdiEXTScanSetBSSIDHotlistRspCb;
33390
33391 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33392 "%s: %d ",__func__, __LINE__);
33393
33394
33395 /*-------------------------------------------------------------------------
33396 Sanity check
33397 -------------------------------------------------------------------------*/
33398 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
33399 ( NULL == pEventData->pEventData))
33400 {
33401 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33402 "%s: Invalid parameters", __func__);
33403 WDI_ASSERT(0);
33404 return WDI_STATUS_E_FAILURE;
33405 }
33406
33407 wdiEXTScanSetBSSIDHotlistRspCb =
33408 (WDI_EXTScanSetBSSIDHotlistRspCb)pWDICtx->pfncRspCB;
33409 if ( NULL == wdiEXTScanSetBSSIDHotlistRspCb)
33410 {
33411 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33412 "%s: Callback function Invalid", __func__);
33413 WDI_ASSERT(0);
33414 return WDI_STATUS_E_FAILURE;
33415 }
33416
33417 wdiEXTScanSetBSSIDHotlistRspCb(
33418 (void *) pEventData->pEventData, pWDICtx->pRspCBUserData);
33419
33420 return WDI_STATUS_SUCCESS;
33421}
33422
33423/**
33424 @brief Process Extended Scan Reset Hotlist BSSID Rsp function (called
33425 when a response is being received over the bus from HAL)
33426
33427 @param pWDICtx: pointer to the WLAN DAL context
33428 pEventData: pointer to the event information structure
33429
33430 @see
33431 @return Result of the function call
33432*/
33433WDI_Status
33434WDI_ProcessEXTScanResetHotlistBSSIDRsp
33435(
33436 WDI_ControlBlockType* pWDICtx,
33437 WDI_EventInfoType* pEventData
33438)
33439{
33440 WDI_EXTScanResetBSSIDHotlistRspCb wdiEXTScanResetBSSIDHotlistRspCb;
33441
33442 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33443 "%s: %d ",__func__, __LINE__);
33444
33445
33446 /*-------------------------------------------------------------------------
33447 Sanity check
33448 -------------------------------------------------------------------------*/
33449 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
33450 ( NULL == pEventData->pEventData))
33451 {
33452 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33453 "%s: Invalid parameters", __func__);
33454 WDI_ASSERT(0);
33455 return WDI_STATUS_E_FAILURE;
33456 }
33457
33458 wdiEXTScanResetBSSIDHotlistRspCb =
33459 (WDI_EXTScanResetBSSIDHotlistRspCb)pWDICtx->pfncRspCB;
33460 if ( NULL == wdiEXTScanResetBSSIDHotlistRspCb)
33461 {
33462 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33463 "%s: Callback function Invalid", __func__);
33464 WDI_ASSERT(0);
33465 return WDI_STATUS_E_FAILURE;
33466 }
33467
33468 wdiEXTScanResetBSSIDHotlistRspCb(
33469 (void *) pEventData->pEventData, pWDICtx->pRspCBUserData);
33470
33471 return WDI_STATUS_SUCCESS;
33472}
33473
33474/**
33475 @brief Process Extended Scan Set Significant RSSI Change Rsp function (called
33476 when a response is being received over the bus from HAL)
33477
33478 @param pWDICtx: pointer to the WLAN DAL context
33479 pEventData: pointer to the event information structure
33480
33481 @see
33482 @return Result of the function call
33483*/
33484WDI_Status
33485WDI_ProcessEXTScanSetSignfRSSIChangeRsp
33486(
33487 WDI_ControlBlockType* pWDICtx,
33488 WDI_EventInfoType* pEventData
33489)
33490{
33491 WDI_EXTScanSetSignfRSSIChangeRspCb wdiEXTScanSetSignfRSSIChangeRspCb;
33492
33493 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33494 "%s: %d",__func__, __LINE__);
33495
33496
33497 /*-------------------------------------------------------------------------
33498 Sanity check
33499 -------------------------------------------------------------------------*/
33500 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
33501 ( NULL == pEventData->pEventData))
33502 {
33503 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33504 "%s: Invalid parameters", __func__);
33505 WDI_ASSERT(0);
33506 return WDI_STATUS_E_FAILURE;
33507 }
33508
33509 wdiEXTScanSetSignfRSSIChangeRspCb =
33510 (WDI_EXTScanSetSignfRSSIChangeRspCb)pWDICtx->pfncRspCB;
33511 if ( NULL == wdiEXTScanSetSignfRSSIChangeRspCb)
33512 {
33513 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33514 "%s: Callback function Invalid", __func__);
33515 WDI_ASSERT(0);
33516 return WDI_STATUS_E_FAILURE;
33517 }
33518
33519 wdiEXTScanSetSignfRSSIChangeRspCb(
33520 (void *) pEventData->pEventData, pWDICtx->pRspCBUserData);
33521
33522 return WDI_STATUS_SUCCESS;
33523}
33524
33525/**
33526 @brief Process Extended Scan Reset Significant RSSI Change Rsp function
33527 (called when a response is being received over the bus from HAL)
33528
33529 @param pWDICtx: pointer to the WLAN DAL context
33530 pEventData: pointer to the event information structure
33531
33532 @see
33533 @return Result of the function call
33534*/
33535WDI_Status
33536WDI_ProcessEXTScanResetSignfRSSIChangeRsp
33537(
33538 WDI_ControlBlockType* pWDICtx,
33539 WDI_EventInfoType* pEventData
33540)
33541{
33542 WDI_EXTScanResetSignfRSSIChangeRspCb wdiEXTScanResetSignfRSSIChangeRspCb;
33543
33544 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33545 "%s: %d Enter",__func__, __LINE__);
33546
33547
33548 /*-------------------------------------------------------------------------
33549 Sanity check
33550 -------------------------------------------------------------------------*/
33551 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
33552 ( NULL == pEventData->pEventData))
33553 {
33554 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33555 "%s: Invalid parameters", __func__);
33556 WDI_ASSERT(0);
33557 return WDI_STATUS_E_FAILURE;
33558 }
33559
33560 wdiEXTScanResetSignfRSSIChangeRspCb =
33561 (WDI_EXTScanResetSignfRSSIChangeRspCb)pWDICtx->pfncRspCB;
33562 if ( NULL == wdiEXTScanResetSignfRSSIChangeRspCb)
33563 {
33564 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33565 "%s: Callback function Invalid", __func__);
33566 WDI_ASSERT(0);
33567 return WDI_STATUS_E_FAILURE;
33568 }
33569
33570 wdiEXTScanResetSignfRSSIChangeRspCb(
33571 (void *) pEventData->pEventData, pWDICtx->pRspCBUserData);
33572
33573 return WDI_STATUS_SUCCESS;
33574}
33575#endif /* WLAN_FEATURE_EXTSCAN */
Siddharth Bhal171788a2014-09-29 21:02:40 +053033576
33577/**
33578 @brief WDI_SetSpoofMacAddrReq: Send Spoof Mac Addr request to FW
33579
33580 @param None
33581
33582 @see
33583
33584 @return Status of the request
33585*/
33586WDI_Status
33587WDI_SetSpoofMacAddrReq
33588(
33589 WDI_SpoofMacAddrInfoType* pWdiReq,
33590 WDI_SetSpoofMacAddrRspCb spoofMacAddrRspCb,
33591 void* pUserData)
33592{
33593 WDI_EventInfoType wdiEventData;
33594
33595 /*-------------------------------------------------------------------------
33596 Sanity Check
33597 ------------------------------------------------------------------------*/
33598 if (eWLAN_PAL_FALSE == gWDIInitialized)
33599 {
33600 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
33601 "WDI API call before module is initialized - Fail request!");
33602
33603 return WDI_STATUS_E_NOT_ALLOWED;
33604 }
33605
33606 /*-------------------------------------------------------------------------
33607 Fill in Event data and post to the Main FSM
33608 ------------------------------------------------------------------------*/
33609 wdiEventData.wdiRequest = WDI_SPOOF_MAC_ADDR_REQ;
33610 wdiEventData.pEventData = pWdiReq;
33611 wdiEventData.uEventDataSize = sizeof(WDI_SpoofMacAddrInfoType);
33612 wdiEventData.pCBfnc = spoofMacAddrRspCb;
33613 wdiEventData.pUserData = pUserData;
33614
33615 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
33616}
33617
33618/**
33619 @brief Process SpoofMacAddr Request
33620
33621 @param pWDICtx: pointer to the WLAN DAL context
33622 pEventData: pointer to the event information structure
33623
33624 @see
33625 @return Result of the function call
33626*/
33627WDI_Status
33628WDI_ProcessSpoofMacAddrReq
33629(
33630 WDI_ControlBlockType* pWDICtx,
33631 WDI_EventInfoType* pEventData
33632)
33633{
33634 WDI_SpoofMacAddrInfoType* wdiSpoofMacAddr;
33635 wpt_uint8* pSendBuffer = NULL;
33636 wpt_uint16 usDataOffset = 0;
33637 wpt_uint16 usSendSize = 0;
33638 WDI_Status wdiStatus;
33639 tMacSpoofedScanReqMsg halWlanSpoofMacAddr;
33640 WDI_SetSpoofMacAddrRspCb wdiMacAddrSpoofCb;
33641
33642
33643 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33644 "%s: %d Enter",__func__, __LINE__);
33645
33646 /*-------------------------------------------------------------------------
33647 Sanity check
33648 -------------------------------------------------------------------------*/
33649 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
33650 ( NULL == pEventData->pEventData))
33651 {
33652 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33653 "%s: Invalid parameters", __func__);
33654 WDI_ASSERT(0);
33655 return WDI_STATUS_E_FAILURE;
33656 }
33657 wdiSpoofMacAddr = (WDI_SpoofMacAddrInfoType *)pEventData->pEventData;
33658
33659 /*-----------------------------------------------------------------------
33660 Get message buffer
33661 -----------------------------------------------------------------------*/
33662 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
33663 WDI_SPOOF_MAC_ADDR_REQ,
33664 sizeof(halWlanSpoofMacAddr.tMacSpoofedScanReqParams),
33665 &pSendBuffer, &usDataOffset, &usSendSize))||
33666 (usSendSize < (usDataOffset +
33667 sizeof(halWlanSpoofMacAddr.tMacSpoofedScanReqParams))))
33668 {
33669 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
33670 "Unable to get send buffer in Process Spoof Mac Addr Req");
33671 WDI_ASSERT(0);
33672 return WDI_STATUS_E_FAILURE;
33673 }
33674
33675 wpalMemoryCopy(halWlanSpoofMacAddr.tMacSpoofedScanReqParams.macAddr,
33676 wdiSpoofMacAddr->macAddr,
33677 sizeof(halWlanSpoofMacAddr.tMacSpoofedScanReqParams.macAddr));
33678
33679 wdiMacAddrSpoofCb = (WDI_SetSpoofMacAddrRspCb)pEventData->pCBfnc;
33680
33681 wpalMemoryCopy( pSendBuffer+usDataOffset,
33682 &halWlanSpoofMacAddr.tMacSpoofedScanReqParams,
33683 sizeof(halWlanSpoofMacAddr.tMacSpoofedScanReqParams));
33684
33685 /*-------------------------------------------------------------------------
33686 Send Suspend Request to HAL
33687 -------------------------------------------------------------------------*/
33688 wdiStatus = WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
33689 wdiMacAddrSpoofCb, pEventData->pUserData, WDI_SPOOF_MAC_ADDR_RSP);
33690
33691 return wdiStatus;
33692}
33693
33694/**
33695 @brief Process Spoof Mac Address Rsp function
33696 (called when a response is being received over the bus from HAL)
33697
33698 @param pWDICtx: pointer to the WLAN DAL context
33699 pEventData: pointer to the event information structure
33700
33701 @see
33702 @return Result of the function call
33703*/
33704WDI_Status
33705WDI_ProcessSpoofMacAddrRsp
33706(
33707 WDI_ControlBlockType* pWDICtx,
33708 WDI_EventInfoType* pEventData
33709)
33710{
33711 tMacSpoofedScanResp halRsp;
33712 WDI_SetSpoofMacAddrRspCb wdiSpoofMacAddrRspCb;
33713 WDI_SpoofMacAddrRspParamType wdiSpoofMacAddrRsp;
33714
33715 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33716 "%s: %d Enter",__func__, __LINE__);
33717
33718 /*-------------------------------------------------------------------------
33719 Sanity check
33720 -------------------------------------------------------------------------*/
33721 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
33722 ( NULL == pEventData->pEventData))
33723 {
33724 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33725 "%s: Invalid parameters", __func__);
33726 WDI_ASSERT(0);
33727 return WDI_STATUS_E_FAILURE;
33728 }
33729 wdiSpoofMacAddrRspCb = (WDI_SetSpoofMacAddrRspCb)pWDICtx->pfncRspCB;
33730
33731 /*-------------------------------------------------------------------------
33732 Extract response and send it to UMAC
33733 -------------------------------------------------------------------------*/
33734 wpalMemoryCopy( &halRsp,
33735 pEventData->pEventData, sizeof(halRsp));
33736
33737 wdiSpoofMacAddrRsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halRsp.status);
33738
33739 /*Notify UMAC*/
33740 wdiSpoofMacAddrRspCb(
33741 &wdiSpoofMacAddrRsp, pWDICtx->pRspCBUserData);
33742
33743 return WDI_STATUS_SUCCESS;
33744}
Srinivas Dasari4dae48f2014-11-26 21:14:16 +053033745
33746/**
33747 @brief WDI_EncryptMsgReq
33748
33749 @param pwdiEncryptMsgParams: Req parameter for the FW
33750 wdiEncryptMsgCbRsp: callback for passing back the response
33751 of the Req operation received from the device
33752 pUserData: user data will be passed back with the callback
33753
33754 @return SUCCESS or FAIL
33755*/
33756WDI_Status
33757WDI_EncryptMsgReq(void* pwdiEncryptMsgParams,
33758 WDI_EncryptMsgRspCb wdiEncryptMsgCbRsp,
33759 void* pUserData)
33760{
33761 WDI_EventInfoType wdiEventData;
33762
33763 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33764 "%s: %d Enter" ,__func__, __LINE__);
33765 /*------------------------------------------------------------------------
33766 Sanity Check
33767 ------------------------------------------------------------------------*/
33768 if ( eWLAN_PAL_FALSE == gWDIInitialized )
33769 {
33770 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
33771 "WDI API call before module is initialized - Fail request");
33772
33773 return WDI_STATUS_E_NOT_ALLOWED;
33774 }
33775
33776 wdiEventData.wdiRequest = WDI_ENCRYPT_MSG_REQ;
33777 wdiEventData.pEventData = pwdiEncryptMsgParams;
33778 wdiEventData.uEventDataSize = sizeof(wpt_pkt80211);
33779 wdiEventData.pCBfnc = wdiEncryptMsgCbRsp;
33780 wdiEventData.pUserData = pUserData;
33781
33782 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
33783}
33784
33785/*
33786 * FUNCTION: WDI_ProcessEncryptMsgReq
33787 * Request to WDI to encrypt the given message.
33788 *
33789 * @param pWDICtx: pointer to the WLAN DAL context
33790 * pEventData: pointer to the event information structure
33791 *
33792 * @return Result of the function call
33793 */
33794
33795WDI_Status
33796WDI_ProcessEncryptMsgReq
33797(
33798 WDI_ControlBlockType* pWDICtx,
33799 WDI_EventInfoType* pEventData
33800)
33801{
33802 wpt_uint8* pSendBuffer = NULL;
33803 wpt_uint16 usDataOffset = 0;
33804 wpt_uint16 usSendSize = 0;
33805 WDI_EncryptMsgRspCb* wdiEncMsgCb;
33806 tSetEncryptedDataParams *pHalEncryptDataReq;
33807 wpt_pkt80211 *pkt = NULL;
33808
33809 /*-------------------------------------------------------------------------
33810 Sanity check
33811 -------------------------------------------------------------------------*/
33812 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData) ||
33813 ( NULL == pEventData->pCBfnc ) )
33814 {
33815 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33816 "%s: Invalid parameters", __func__);
33817 WDI_ASSERT(0);
33818 return WDI_STATUS_E_FAILURE;
33819 }
33820
33821 wdiEncMsgCb = (WDI_EncryptMsgRspCb*)pEventData->pCBfnc;
33822
33823 /*-----------------------------------------------------------------------
33824 Get message buffer
33825 -----------------------------------------------------------------------*/
33826 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
33827 pWDICtx, WDI_ENCRYPT_MSG_REQ,
33828 sizeof(tSetEncryptedDataReqMsg),
33829 &pSendBuffer, &usDataOffset, &usSendSize)) ||
33830 ( usSendSize < (usDataOffset + sizeof(tSetEncryptedDataReqMsg))))
33831 {
33832 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33833 "Unable to get send buffer in get WDI_ENCRYPT_MSG_REQ %p",
33834 pEventData);
33835 WDI_ASSERT(0);
33836 return WDI_STATUS_E_FAILURE;
33837 }
33838
33839 pWDICtx->wdiReqStatusCB = NULL;
33840 pWDICtx->pReqStatusUserData = pEventData->pUserData;
33841 pkt = (wpt_pkt80211 *)pEventData->pEventData;
33842
33843 pHalEncryptDataReq = &((tSetEncryptedDataReqMsg *)(pSendBuffer))->encryptedDataParams;
33844 wpalMemoryZero(pHalEncryptDataReq, sizeof(tSetEncryptedDataParams));
33845
33846 wpalMemoryCopy(&pHalEncryptDataReq->macHeader, &pkt->macHeader, 32);
33847
33848 pHalEncryptDataReq->encParams.keyParams.key[0].keyId =
33849 pkt->encParams.keyParams.key[0].keyId;
33850
33851 wpalMemoryCopy(&pHalEncryptDataReq->encParams.keyParams.key[0].key[0],
33852 &pkt->encParams.keyParams.key[0].key[0], 16);
33853
33854 wpalMemoryCopy(&pHalEncryptDataReq->encParams.pn, &pkt->encParams.pn, 6);
33855
33856 pHalEncryptDataReq->data.length = pkt->data.length;
33857 wpalMemoryCopy(&pHalEncryptDataReq->data.data[0], &pkt->data.data[0], pkt->data.length);
33858
33859 /*-------------------------------------------------------------------------
33860 Send Get STA Request to HAL
33861 -------------------------------------------------------------------------*/
33862 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize, wdiEncMsgCb,
33863 pEventData->pUserData, WDI_ENCRYPT_MSG_RSP);
33864}
33865
33866/*
33867 * FUNCTION: WDI_ProcessEncryptMsgRsp
33868 * Receives the encrypted message from the firmware
33869 * @param pWDICtx: pointer to the WLAN DAL context
33870 * pEventData: pointer to the event information structure
33871 *
33872 * @return Result of the function call
33873 */
33874WDI_Status
33875WDI_ProcessEncryptMsgRsp
33876(
33877 WDI_ControlBlockType* pWDICtx,
33878 WDI_EventInfoType* pEventData
33879)
33880{
33881 tpSetEncryptedDataRspParams pSetEncryptedDataRsp;
33882 WDI_EncryptMsgRspCb wdiEncryptMsgRspCb;
33883
33884 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
33885 "In %s",__func__);
33886
33887 /*-------------------------------------------------------------------------
33888 Sanity check
33889 -------------------------------------------------------------------------*/
33890 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
33891 ( NULL == pEventData->pEventData))
33892 {
33893 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33894 "%s: Invalid parameters", __func__);
33895 WDI_ASSERT(0);
33896 return WDI_STATUS_E_FAILURE;
33897 }
33898
33899 pSetEncryptedDataRsp = (tpSetEncryptedDataRspParams)pEventData->pEventData;
33900
33901 wdiEncryptMsgRspCb = (WDI_EncryptMsgRspCb)pWDICtx->pfncRspCB;
33902
33903 wdiEncryptMsgRspCb(WDI_STATUS_SUCCESS,
33904 pEventData->pEventData,
33905 pWDICtx->pRspCBUserData);
33906 return WDI_STATUS_SUCCESS;
33907}