blob: eb3c952b05ef6d4db0fbe2ed968d84e38e3945c9 [file] [log] [blame]
Jeff Johnson295189b2012-06-20 16:38:30 -07001/*
Varun Reddy Yeturu6c5e25c2014-01-09 21:55:37 -08002 * Copyright (c) 2012-2014, The Linux Foundation. All rights reserved.
Gopichand Nakkala92f07d82013-01-08 21:16:34 -08003 *
4 * Previously licensed under the ISC license by Qualcomm Atheros, Inc.
5 *
6 *
7 * Permission to use, copy, modify, and/or distribute this software for
8 * any purpose with or without fee is hereby granted, provided that the
9 * above copyright notice and this permission notice appear in all
10 * copies.
11 *
12 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL
13 * WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED
14 * WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE
15 * AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL
16 * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
17 * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
18 * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
19 * PERFORMANCE OF THIS SOFTWARE.
20 */
21/*
Jeff Johnson32d95a32012-09-10 13:15:23 -070022 * Copyright (c) 2012, The Linux Foundation. All rights reserved.
Jeff Johnson295189b2012-06-20 16:38:30 -070023 *
24 * Previously licensed under the ISC license by Qualcomm Atheros, Inc.
25 *
26 *
27 * Permission to use, copy, modify, and/or distribute this software for
28 * any purpose with or without fee is hereby granted, provided that the
29 * above copyright notice and this permission notice appear in all
30 * copies.
31 *
32 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL
33 * WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED
34 * WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE
35 * AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL
36 * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
37 * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
38 * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
39 * PERFORMANCE OF THIS SOFTWARE.
40 */
41
42/*===========================================================================
43
44 W L A N _ Q C T _ W D I. C
45
46 OVERVIEW:
47
Jeff Johnsone7245742012-09-05 17:12:55 -070048 This software unit holds the implementation of the WLAN Device Abstraction
Jeff Johnson295189b2012-06-20 16:38:30 -070049 Layer Interface.
50
Jeff Johnsone7245742012-09-05 17:12:55 -070051 The functions externalized by this module are to be called by any upper
Jeff Johnson295189b2012-06-20 16:38:30 -070052 MAC implementation that wishes to use the WLAN Device.
53
54 DEPENDENCIES:
55
56 Are listed for each API below.
57
58
Jeff Johnson295189b2012-06-20 16:38:30 -070059===========================================================================*/
60
61/*===========================================================================
62
63 EDIT HISTORY FOR FILE
64
65
66 This section contains comments describing changes made to the module.
67 Notice that changes are listed in reverse chronological order.
68
69
70 $Header$$DateTime$$Author$
71
72
73 when who what, where, why
74---------- --- --------------------------------------------------------
7510/05/11 hap Adding support for Keep Alive
762010-08-09 lti Created module
77
78===========================================================================*/
79
80/*----------------------------------------------------------------------------
81 * Include Files
82 * -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070083#include "wlan_qct_wdi.h"
84#include "wlan_qct_wdi_i.h"
85#include "wlan_qct_wdi_sta.h"
86#include "wlan_qct_wdi_dp.h"
Jeff Johnson295189b2012-06-20 16:38:30 -070087
Jeff Johnsone7245742012-09-05 17:12:55 -070088#include "wlan_qct_wdi_cts.h"
Jeff Johnson295189b2012-06-20 16:38:30 -070089
90#include "wlan_qct_pal_api.h"
91#include "wlan_qct_pal_type.h"
92#include "wlan_qct_pal_status.h"
93#include "wlan_qct_pal_sync.h"
94#include "wlan_qct_pal_msg.h"
95#include "wlan_qct_pal_trace.h"
96#include "wlan_qct_pal_packet.h"
97
Jeff Johnsone7245742012-09-05 17:12:55 -070098#include "wlan_qct_wdi_dts.h"
Jeff Johnson295189b2012-06-20 16:38:30 -070099
100#include "wlan_hal_msg.h"
101
Jeff Johnson295189b2012-06-20 16:38:30 -0700102#include "pttMsgApi.h"
Srikant Kuppa64eae792013-08-29 15:27:56 -0700103#include "vos_trace.h"
Jeff Johnson295189b2012-06-20 16:38:30 -0700104
105/*===========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -0700106 WLAN DAL Control Path Internal Data Definitions and Declarations
Jeff Johnson295189b2012-06-20 16:38:30 -0700107 ===========================================================================*/
108#define WDI_WCTS_ACTION_TIMEOUT 2000 /* in msec a very high upper limit */
109
Jeff Johnsone7245742012-09-05 17:12:55 -0700110#define MAC_ADDR_ARRAY(a) (a)[0], (a)[1], (a)[2], (a)[3], (a)[4], (a)[5]
111#define MAC_ADDRESS_STR "%02x:%02x:%02x:%02x:%02x:%02x"
112
Yue Mad8cac142013-03-28 11:33:46 -0700113#define FEATURE_NOT_SUPPORTED 127
Jeff Johnson295189b2012-06-20 16:38:30 -0700114
115#ifdef FEATURE_WLAN_SCAN_PNO
116#define WDI_PNO_VERSION_MASK 0x8000
117#endif
118
119/* host capability bitmap global */
Madan Mohan Koyyalamudidfd6aa82012-10-18 20:18:43 -0700120static tWlanFeatCaps *gpHostWlanFeatCaps;
Jeff Johnson295189b2012-06-20 16:38:30 -0700121/* FW capability bitmap global */
Madan Mohan Koyyalamudidfd6aa82012-10-18 20:18:43 -0700122static tWlanFeatCaps *gpFwWlanFeatCaps;
Jeff Johnson295189b2012-06-20 16:38:30 -0700123/* array of features supported. Need to add a new feature
124 * and other two places - wlan_hal_msg.h and halMsg.c (FW file)
125 */
126static placeHolderInCapBitmap supportEnabledFeatures[] =
Mohit Khanna698ba2a2012-12-04 15:08:18 -0800127 {MCC, P2P, DOT11AC, SLM_SESSIONIZATION, DOT11AC_OPMODE
Yathish9f22e662012-12-10 14:21:35 -0800128#ifdef WLAN_SOFTAP_VSTA_FEATURE
Ravi Joshid2ca7c42013-07-23 08:37:49 -0700129 ,SAP32STA //5
Yathish9f22e662012-12-10 14:21:35 -0800130#else
131 ,FEATURE_NOT_SUPPORTED
132#endif
Mohit Khanna698ba2a2012-12-04 15:08:18 -0800133#ifdef FEATURE_WLAN_TDLS
Ravi Joshid2ca7c42013-07-23 08:37:49 -0700134 ,TDLS //6
Yathish9f22e662012-12-10 14:21:35 -0800135#else
136 ,FEATURE_NOT_SUPPORTED
Mohit Khanna698ba2a2012-12-04 15:08:18 -0800137#endif
Ravi Joshid2ca7c42013-07-23 08:37:49 -0700138 ,P2P_GO_NOA_DECOUPLE_INIT_SCAN //7
Yathish9f22e662012-12-10 14:21:35 -0800139#ifdef WLAN_ACTIVEMODE_OFFLOAD_FEATURE
Ravi Joshid2ca7c42013-07-23 08:37:49 -0700140 ,WLANACTIVE_OFFLOAD //8
Yathish9f22e662012-12-10 14:21:35 -0800141#else
142 ,FEATURE_NOT_SUPPORTED
143#endif
Ravi Joshid2ca7c42013-07-23 08:37:49 -0700144 ,FEATURE_NOT_SUPPORTED //9
145 ,FEATURE_NOT_SUPPORTED //10
146 ,FEATURE_NOT_SUPPORTED //11
147 ,FEATURE_NOT_SUPPORTED //12
148 ,FEATURE_NOT_SUPPORTED //13
149 ,FEATURE_NOT_SUPPORTED //14
150 ,FEATURE_NOT_SUPPORTED //15
151 ,FEATURE_NOT_SUPPORTED //16
152 ,FEATURE_NOT_SUPPORTED //17
153 ,FEATURE_NOT_SUPPORTED //18
154 ,FEATURE_NOT_SUPPORTED //19
155 ,FEATURE_NOT_SUPPORTED //20
156 ,FEATURE_NOT_SUPPORTED //21
Yue Ma55855df2013-08-26 10:59:03 -0700157 ,WOW //22
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -0700158#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
Yue Ma55855df2013-08-26 10:59:03 -0700159 ,WLAN_ROAM_SCAN_OFFLOAD //23
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -0700160#else
161 ,FEATURE_NOT_SUPPORTED
162#endif
Ravi Joshid2ca7c42013-07-23 08:37:49 -0700163 ,FEATURE_NOT_SUPPORTED //24
164 ,FEATURE_NOT_SUPPORTED //25
165 ,IBSS_HEARTBEAT_OFFLOAD //26
Yue Ma55855df2013-08-26 10:59:03 -0700166 ,FEATURE_NOT_SUPPORTED //27
167 ,WLAN_PERIODIC_TX_PTRN //28
Madan Mohan Koyyalamudice419872013-09-13 19:36:52 +0530168#ifdef FEATURE_WLAN_TDLS
169 ,ADVANCE_TDLS //29
170#else
171 ,FEATURE_NOT_SUPPORTED //29
172#endif
Kanchanapally, Vidyullathaf9426e52013-12-24 17:28:54 +0530173 ,FEATURE_NOT_SUPPORTED //30
174 ,FW_IN_TX_PATH //31
Sandeep Puligilla60342762014-01-30 21:05:37 +0530175 ,EXTENDED_NSOFFLOAD_SLOT //32
176 ,CH_SWITCH_V1 //33
177 ,HT40_OBSS_SCAN //34
178 ,UPDATE_CHANNEL_LIST //35
Kanchanapally, Vidyullathaf9426e52013-12-24 17:28:54 +0530179};
Jeff Johnson295189b2012-06-20 16:38:30 -0700180
181/*--------------------------------------------------------------------------
182 WLAN DAL State Machine
183 --------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700184WPT_STATIC const WDI_MainFsmEntryType wdiMainFSM[WDI_MAX_ST] =
Jeff Johnson295189b2012-06-20 16:38:30 -0700185{
186 /*WDI_INIT_ST*/
187 {{
188 WDI_MainStart, /*WDI_START_EVENT*/
189 NULL, /*WDI_STOP_EVENT*/
190 WDI_MainReqBusy, /*WDI_REQUEST_EVENT*/
191 WDI_MainRspInit, /*WDI_RESPONSE_EVENT*/
192 WDI_MainClose, /*WDI_CLOSE_EVENT*/
193 WDI_MainShutdown /*WDI_SHUTDOWN_EVENT*/
194 }},
195
196 /*WDI_STARTED_ST*/
197 {{
198 WDI_MainStartStarted, /*WDI_START_EVENT*/
199 WDI_MainStopStarted, /*WDI_STOP_EVENT*/
200 WDI_MainReqStarted, /*WDI_REQUEST_EVENT*/
201 WDI_MainRsp, /*WDI_RESPONSE_EVENT*/
202 NULL, /*WDI_CLOSE_EVENT*/
203 WDI_MainShutdown /*WDI_SHUTDOWN_EVENT*/
204 }},
205
206 /*WDI_STOPPED_ST*/
207 {{
208 WDI_MainStart, /*WDI_START_EVENT*/
209 WDI_MainStopStopped, /*WDI_STOP_EVENT*/
210 NULL, /*WDI_REQUEST_EVENT*/
211 WDI_MainRsp, /*WDI_RESPONSE_EVENT*/
212 WDI_MainClose, /*WDI_CLOSE_EVENT*/
Madan Mohan Koyyalamudia2fc6412012-10-21 12:06:12 -0700213 WDI_MainShutdown /*WDI_SHUTDOWN_EVENT*/
Jeff Johnson295189b2012-06-20 16:38:30 -0700214 }},
215
216 /*WDI_BUSY_ST*/
217 {{
218 WDI_MainStartBusy, /*WDI_START_EVENT*/
219 WDI_MainStopBusy, /*WDI_STOP_EVENT*/
220 WDI_MainReqBusy, /*WDI_REQUEST_EVENT*/
221 WDI_MainRsp, /*WDI_RESPONSE_EVENT*/
222 WDI_MainCloseBusy, /*WDI_CLOSE_EVENT*/
223 WDI_MainShutdownBusy /*WDI_SHUTDOWN_EVENT*/
224 }}
225};
226
Jeff Johnsone7245742012-09-05 17:12:55 -0700227/*---------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -0700228 DAL Request Processing Array - the functions in this table will only be
229 called when the processing of the specific request is allowed by the
Jeff Johnsone7245742012-09-05 17:12:55 -0700230 Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -0700231 ---------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700232WDI_ReqProcFuncType pfnReqProcTbl[WDI_MAX_UMAC_IND] =
Jeff Johnson295189b2012-06-20 16:38:30 -0700233{
234 /*INIT*/
235 WDI_ProcessStartReq, /* WDI_START_REQ */
236 WDI_ProcessStopReq, /* WDI_STOP_REQ */
237 WDI_ProcessCloseReq, /* WDI_CLOSE_REQ */
238
239 /*SCAN*/
240 WDI_ProcessInitScanReq, /* WDI_INIT_SCAN_REQ */
241 WDI_ProcessStartScanReq, /* WDI_START_SCAN_REQ */
242 WDI_ProcessEndScanReq, /* WDI_END_SCAN_REQ */
243 WDI_ProcessFinishScanReq, /* WDI_FINISH_SCAN_REQ */
244
245 /*ASSOCIATION*/
246 WDI_ProcessJoinReq, /* WDI_JOIN_REQ */
247 WDI_ProcessConfigBSSReq, /* WDI_CONFIG_BSS_REQ */
248 WDI_ProcessDelBSSReq, /* WDI_DEL_BSS_REQ */
249 WDI_ProcessPostAssocReq, /* WDI_POST_ASSOC_REQ */
250 WDI_ProcessDelSTAReq, /* WDI_DEL_STA_REQ */
251
252 /* Security */
253 WDI_ProcessSetBssKeyReq, /* WDI_SET_BSS_KEY_REQ */
254 WDI_ProcessRemoveBssKeyReq, /* WDI_RMV_BSS_KEY_REQ */
255 WDI_ProcessSetStaKeyReq, /* WDI_SET_STA_KEY_REQ */
256 WDI_ProcessRemoveStaKeyReq, /* WDI_RMV_BSS_KEY_REQ */
257
258 /* QoS and BA APIs */
259 WDI_ProcessAddTSpecReq, /* WDI_ADD_TS_REQ */
260 WDI_ProcessDelTSpecReq, /* WDI_DEL_TS_REQ */
261 WDI_ProcessUpdateEDCAParamsReq, /* WDI_UPD_EDCA_PRMS_REQ */
262 WDI_ProcessAddBASessionReq, /* WDI_ADD_BA_SESSION_REQ */
263 WDI_ProcessDelBAReq, /* WDI_DEL_BA_REQ */
264
265 /* Miscellaneous Control APIs */
266 WDI_ProcessChannelSwitchReq, /* WDI_CH_SWITCH_REQ */
267 WDI_ProcessConfigStaReq, /* WDI_CONFIG_STA_REQ */
268 WDI_ProcessSetLinkStateReq, /* WDI_SET_LINK_ST_REQ */
269 WDI_ProcessGetStatsReq, /* WDI_GET_STATS_REQ */
270 WDI_ProcessUpdateCfgReq, /* WDI_UPDATE_CFG_REQ */
271
272 /*BA APIs*/
273 WDI_ProcessAddBAReq, /* WDI_ADD_BA_REQ */
274 WDI_ProcessTriggerBAReq, /* WDI_TRIGGER_BA_REQ */
275
276 /*Beacon processing APIs*/
277 WDI_ProcessUpdateBeaconParamsReq, /* WDI_UPD_BCON_PRMS_REQ */
278 WDI_ProcessSendBeaconParamsReq, /* WDI_SND_BCON_REQ */
279
280 WDI_ProcessUpdateProbeRspTemplateReq, /* WDI_UPD_PROBE_RSP_TEMPLATE_REQ */
281 WDI_ProcessSetStaBcastKeyReq, /* WDI_SET_STA_BCAST_KEY_REQ */
282 WDI_ProcessRemoveStaBcastKeyReq, /* WDI_RMV_STA_BCAST_KEY_REQ */
283 WDI_ProcessSetMaxTxPowerReq, /*WDI_SET_MAX_TX_POWER_REQ*/
Jeff Johnson295189b2012-06-20 16:38:30 -0700284 WDI_ProcessP2PGONOAReq, /* WDI_P2P_GO_NOTICE_OF_ABSENCE_REQ */
Jeff Johnson295189b2012-06-20 16:38:30 -0700285 /* PowerSave APIs */
286 WDI_ProcessEnterImpsReq, /* WDI_ENTER_IMPS_REQ */
287 WDI_ProcessExitImpsReq, /* WDI_EXIT_IMPS_REQ */
288 WDI_ProcessEnterBmpsReq, /* WDI_ENTER_BMPS_REQ */
289 WDI_ProcessExitBmpsReq, /* WDI_EXIT_BMPS_REQ */
290 WDI_ProcessEnterUapsdReq, /* WDI_ENTER_UAPSD_REQ */
291 WDI_ProcessExitUapsdReq, /* WDI_EXIT_UAPSD_REQ */
292 WDI_ProcessSetUapsdAcParamsReq, /* WDI_SET_UAPSD_PARAM_REQ */
293 WDI_ProcessUpdateUapsdParamsReq, /* WDI_UPDATE_UAPSD_PARAM_REQ */
294 WDI_ProcessConfigureRxpFilterReq, /* WDI_CONFIGURE_RXP_FILTER_REQ */
295 WDI_ProcessSetBeaconFilterReq, /* WDI_SET_BEACON_FILTER_REQ */
296 WDI_ProcessRemBeaconFilterReq, /* WDI_REM_BEACON_FILTER_REQ */
297 WDI_ProcessSetRSSIThresholdsReq, /* WDI_SET_RSSI_THRESHOLDS_REQ */
298 WDI_ProcessHostOffloadReq, /* WDI_HOST_OFFLOAD_REQ */
299 WDI_ProcessWowlAddBcPtrnReq, /* WDI_WOWL_ADD_BC_PTRN_REQ */
300 WDI_ProcessWowlDelBcPtrnReq, /* WDI_WOWL_DEL_BC_PTRN_REQ */
301 WDI_ProcessWowlEnterReq, /* WDI_WOWL_ENTER_REQ */
302 WDI_ProcessWowlExitReq, /* WDI_WOWL_EXIT_REQ */
303 WDI_ProcessConfigureAppsCpuWakeupStateReq, /* WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ */
304 /*NV Download APIs*/
305 WDI_ProcessNvDownloadReq, /* WDI_NV_DOWNLOAD_REQ*/
306 WDI_ProcessFlushAcReq, /* WDI_FLUSH_AC_REQ */
307 WDI_ProcessBtAmpEventReq, /* WDI_BTAMP_EVENT_REQ */
308#ifdef WLAN_FEATURE_VOWIFI_11R
309 WDI_ProcessAggrAddTSpecReq, /* WDI_AGGR_ADD_TS_REQ */
310#else
311 NULL,
312#endif /* WLAN_FEATURE_VOWIFI_11R */
313 WDI_ProcessAddSTASelfReq, /* WDI_ADD_STA_SELF_REQ */
314 WDI_ProcessDelSTASelfReq, /* WDI DEL STA SELF REQ */
Jeff Johnson295189b2012-06-20 16:38:30 -0700315 WDI_ProcessFTMCommandReq, /* WDI_FTM_CMD_REQ */
Jeff Johnsone7245742012-09-05 17:12:55 -0700316
317#ifdef FEATURE_OEM_DATA_SUPPORT
318 WDI_ProcessStartOemDataReq, /*WDI_START_OEM_DATA_REQ*/
319#else
Jeff Johnson295189b2012-06-20 16:38:30 -0700320 NULL,
Jeff Johnsone7245742012-09-05 17:12:55 -0700321#endif /*FEATURE_OEM_DATA_SUPPORT*/
Jeff Johnson295189b2012-06-20 16:38:30 -0700322 WDI_ProcessHostResumeReq, /*WDI_HOST_RESUME_REQ*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700323
324 WDI_ProcessKeepAliveReq, /* WDI_KEEP_ALIVE_REQ */
Jeff Johnson295189b2012-06-20 16:38:30 -0700325
326#ifdef FEATURE_WLAN_SCAN_PNO
327 WDI_ProcessSetPreferredNetworkReq, /* WDI_SET_PREF_NETWORK_REQ */
328 WDI_ProcessSetRssiFilterReq, /* WDI_SET_RSSI_FILTER_REQ */
329 WDI_ProcessUpdateScanParamsReq, /* WDI_UPDATE_SCAN_PARAMS_REQ */
330#else
331 NULL,
332 NULL,
333 NULL,
334#endif /* FEATURE_WLAN_SCAN_PNO */
335
336 WDI_ProcessSetTxPerTrackingReq, /* WDI_SET_TX_PER_TRACKING_REQ */
Jeff Johnsone7245742012-09-05 17:12:55 -0700337
Jeff Johnson295189b2012-06-20 16:38:30 -0700338#ifdef WLAN_FEATURE_PACKET_FILTERING
339 /* WDI_8023_MULTICAST_LIST_REQ */
Jeff Johnsone7245742012-09-05 17:12:55 -0700340 WDI_Process8023MulticastListReq,
Jeff Johnson295189b2012-06-20 16:38:30 -0700341 /* WDI_RECEIVE_FILTER_SET_FILTER_REQ */
Jeff Johnsone7245742012-09-05 17:12:55 -0700342 WDI_ProcessReceiveFilterSetFilterReq,
Jeff Johnson295189b2012-06-20 16:38:30 -0700343 /* WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ */
Jeff Johnsone7245742012-09-05 17:12:55 -0700344 WDI_ProcessFilterMatchCountReq,
Jeff Johnson295189b2012-06-20 16:38:30 -0700345 /* WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ */
Jeff Johnsone7245742012-09-05 17:12:55 -0700346 WDI_ProcessReceiveFilterClearFilterReq,
Jeff Johnson295189b2012-06-20 16:38:30 -0700347#else
348 NULL,
349 NULL,
350 NULL,
351 NULL,
352#endif // WLAN_FEATURE_PACKET_FILTERING
Jeff Johnsone7245742012-09-05 17:12:55 -0700353 WDI_ProcessInitScanReq, /* WDI_INIT_SCAN_CON_REQ */
Jeff Johnson295189b2012-06-20 16:38:30 -0700354 WDI_ProcessHALDumpCmdReq, /*WDI_HAL_DUMP_CMD_REQ */
355 WDI_ProcessShutdownReq, /* WDI_SHUTDOWN_REQ */
356
357 WDI_ProcessSetPowerParamsReq, /*WDI_SET_POWER_PARAMS_REQ*/
358#ifdef FEATURE_WLAN_CCX
359 WDI_ProcessTSMStatsReq, /* WDI_TSM_STATS_REQ */
360#else
361 NULL,
362#endif
363
364#ifdef WLAN_FEATURE_GTK_OFFLOAD
365 WDI_ProcessGTKOffloadReq, /* WDI_GTK_OFFLOAD_REQ */
366 WDI_ProcessGTKOffloadGetInfoReq, /* WDI_GTK_OFFLOAD_GETINFO_REQ */
367#else
368 NULL,
369 NULL,
370#endif // WLAN_FEATURE_GTK_OFFLOAD
371
372 WDI_ProcessSetTmLevelReq, /*WDI_SET_TM_LEVEL_REQ*/
373 WDI_ProcessFeatureCapsExchangeReq, /* WDI_FEATURE_CAPS_EXCHANGE_REQ */
Mohit Khanna4a70d262012-09-11 16:30:12 -0700374#ifdef WLAN_FEATURE_11AC
375 WDI_ProcessUpdateVHTOpModeReq, /* WDI_UPDATE_VHT_OP_MODE_REQ */
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -0800376#else
377 NULL,
Mohit Khanna4a70d262012-09-11 16:30:12 -0700378#endif
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -0800379#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_CCX || defined(FEATURE_WLAN_LFR)
380 WDI_ProcessGetRoamRssiReq, /* WDI_GET_ROAM_RSSI_REQ */
381#else
schang86c22c42013-03-13 18:41:24 -0700382 NULL,
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -0800383#endif
schang86c22c42013-03-13 18:41:24 -0700384 WDI_ProcessSetTxPowerReq, /* WDI_SET_TX_POWER_REQ*/
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -0700385#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
Varun Reddy Yeturu920df212013-05-22 08:07:23 -0700386 WDI_ProcessRoamScanOffloadReq, /* WDI_ROAM_SCAN_OFFLOAD_REQ */
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -0700387#else
388 NULL,
389#endif /* WLAN_FEATURE_ROAM_SCAN_OFFLOAD */
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +0530390#ifdef FEATURE_WLAN_TDLS
391 WDI_ProcessTdlsLinkEstablishReq, /* WDI_TDLS_LINK_ESTABLISH_REQ */
392#else
393 NULL,
394#endif
Leo Chang9056f462013-08-01 19:21:11 -0700395#ifdef FEATURE_WLAN_LPHB
396 WDI_ProcessLPHBConfReq, /* WDI_LPHB_CFG_REQ */
397#else
398 NULL,
399#endif /* FEATURE_WLAN_LPHB */
Rajeev79dbe4c2013-10-05 11:03:42 +0530400
401#ifdef FEATURE_WLAN_BATCH_SCAN
402 WDI_ProcessSetBatchScanReq, /* WDI_SET_BATCH_SCAN_REQ */
403#else
404 NULL,
405#endif /* FEATURE_WLAN_BATCH_SCAN */
406
Arif Hussaina5ebce02013-08-09 15:09:58 -0700407 WDI_ProcessSetMaxTxPowerPerBandReq, /* WDI_SET_MAX_TX_POWER_PER_BAND_REQ*/
schang86c22c42013-03-13 18:41:24 -0700408 /*-------------------------------------------------------------------------
409 Indications
410 -------------------------------------------------------------------------*/
Jeff Johnson295189b2012-06-20 16:38:30 -0700411 WDI_ProcessHostSuspendInd, /* WDI_HOST_SUSPEND_IND*/
Madan Mohan Koyyalamudi01cba042013-01-10 21:56:05 -0800412 WDI_ProcessTrafficStatsInd, /* WDI_TRAFFIC_STATS_IND*/
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +0530413 WDI_ProcessDHCPStartInd, /* WDI_DHCP_START_IND*/
414 WDI_ProcessDHCPStopInd, /* WDI_DHCP_STOP_IND*/
Chet Lanctot186b5732013-03-18 10:26:30 -0700415#ifdef WLAN_FEATURE_11W
416 WDI_ProcessExcludeUnencryptInd, /* WDI_EXCLUDE_UNENCRYPTED_IND */
417#else
418 NULL,
419#endif
Yue Mab9c86f42013-08-14 15:59:08 -0700420 WDI_ProcessAddPeriodicTxPtrnInd, /* WDI_ADD_PERIODIC_TX_PATTERN_IND */
421 WDI_ProcessDelPeriodicTxPtrnInd, /* WDI_DEL_PERIODIC_TX_PATTERN_IND */
Rajeev79dbe4c2013-10-05 11:03:42 +0530422#ifdef FEATURE_WLAN_BATCH_SCAN
423 WDI_ProcessStopBatchScanInd, /* WDI_STOP_BATCH_SCAN_IND */
424 WDI_ProcessTriggerBatchScanResultInd, /* WDI_TRIGGER_BATCH_SCAN_RESULT_IND */
425#else
426 NULL,
427 NULL,
428#endif /* FEATURE_WLAN_BATCH_SCAN */
Chittajit Mitraf5413a42013-10-18 14:20:08 -0700429 WDI_ProcessRateUpdateInd, /* WDI_RATE_UPDATE_IND */
Sandeep Puligilla8b8b74b2014-02-10 16:39:05 +0530430 WDI_ProcessHT40OBSSScanInd, /*WDI_START_HT40_OBSS_SCAN_IND */
431 WDI_ProcessHT40OBSSStopScanInd /*WDI_STOP_HT40_OBSS_SCAN_IND */
432
Jeff Johnson295189b2012-06-20 16:38:30 -0700433};
434
435
Jeff Johnsone7245742012-09-05 17:12:55 -0700436/*---------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -0700437 DAL Request Processing Array - the functions in this table will only be
438 called when the processing of the specific request is allowed by the
Jeff Johnsone7245742012-09-05 17:12:55 -0700439 Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -0700440 ---------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700441WDI_RspProcFuncType pfnRspProcTbl[WDI_MAX_RESP] =
Jeff Johnson295189b2012-06-20 16:38:30 -0700442{
443 /*INIT*/
444 WDI_ProcessStartRsp, /* WDI_START_RESP */
445 WDI_ProcessStopRsp, /* WDI_STOP_RESP */
446 WDI_ProcessCloseRsp, /* WDI_CLOSE_RESP */
447
448 /*SCAN*/
449 WDI_ProcessInitScanRsp, /* WDI_INIT_SCAN_RESP */
450 WDI_ProcessStartScanRsp, /* WDI_START_SCAN_RESP */
451 WDI_ProcessEndScanRsp, /* WDI_END_SCAN_RESP */
452 WDI_ProcessFinishScanRsp, /* WDI_FINISH_SCAN_RESP */
453
454 /* ASSOCIATION*/
455 WDI_ProcessJoinRsp, /* WDI_JOIN_RESP */
456 WDI_ProcessConfigBSSRsp, /* WDI_CONFIG_BSS_RESP */
457 WDI_ProcessDelBSSRsp, /* WDI_DEL_BSS_RESP */
458 WDI_ProcessPostAssocRsp, /* WDI_POST_ASSOC_RESP */
459 WDI_ProcessDelSTARsp, /* WDI_DEL_STA_RESP */
460
461 /* Security */
462 WDI_ProcessSetBssKeyRsp, /* WDI_SET_BSS_KEY_RESP */
463 WDI_ProcessRemoveBssKeyRsp, /* WDI_RMV_BSS_KEY_RESP */
464 WDI_ProcessSetStaKeyRsp, /* WDI_SET_STA_KEY_RESP */
465 WDI_ProcessRemoveStaKeyRsp, /* WDI_RMV_BSS_KEY_RESP */
466
467 /* QoS and BA APIs */
468 WDI_ProcessAddTSpecRsp, /* WDI_ADD_TS_RESP */
469 WDI_ProcessDelTSpecRsp, /* WDI_DEL_TS_RESP */
470 WDI_ProcessUpdateEDCAParamsRsp, /* WDI_UPD_EDCA_PRMS_RESP */
471 WDI_ProcessAddBASessionRsp, /* WDI_ADD_BA_SESSION_RESP */
472 WDI_ProcessDelBARsp, /* WDI_DEL_BA_RESP */
473
474 /* Miscellaneous Control APIs */
475 WDI_ProcessChannelSwitchRsp, /* WDI_CH_SWITCH_RESP */
476 WDI_ProcessConfigStaRsp, /* WDI_CONFIG_STA_RESP */
477 WDI_ProcessSetLinkStateRsp, /* WDI_SET_LINK_ST_RESP */
478 WDI_ProcessGetStatsRsp, /* WDI_GET_STATS_RESP */
479 WDI_ProcessUpdateCfgRsp, /* WDI_UPDATE_CFG_RESP */
480
481 /* BA APIs*/
482 WDI_ProcessAddBARsp, /* WDI_ADD_BA_RESP */
483 WDI_ProcessTriggerBARsp, /* WDI_TRIGGER_BA_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700484
Jeff Johnson295189b2012-06-20 16:38:30 -0700485 /* IBSS APIs*/
486 WDI_ProcessUpdateBeaconParamsRsp, /* WDI_UPD_BCON_PRMS_RSP */
487 WDI_ProcessSendBeaconParamsRsp, /* WDI_SND_BCON_RSP */
488
489 /*Soft AP APIs*/
490 WDI_ProcessUpdateProbeRspTemplateRsp,/*WDI_UPD_PROBE_RSP_TEMPLATE_RESP */
491 WDI_ProcessSetStaBcastKeyRsp, /*WDI_SET_STA_BCAST_KEY_RESP */
492 WDI_ProcessRemoveStaBcastKeyRsp, /*WDI_RMV_STA_BCAST_KEY_RESP */
493 WDI_ProcessSetMaxTxPowerRsp, /*WDI_SET_MAX_TX_POWER_RESP */
494
495 /* PowerSave APIs */
496 WDI_ProcessEnterImpsRsp, /* WDI_ENTER_IMPS_RESP */
497 WDI_ProcessExitImpsRsp, /* WDI_EXIT_IMPS_RESP */
498 WDI_ProcessEnterBmpsRsp, /* WDI_ENTER_BMPS_RESP */
499 WDI_ProcessExitBmpsRsp, /* WDI_EXIT_BMPS_RESP */
500 WDI_ProcessEnterUapsdRsp, /* WDI_ENTER_UAPSD_RESP */
501 WDI_ProcessExitUapsdRsp, /* WDI_EXIT_UAPSD_RESP */
502 WDI_ProcessSetUapsdAcParamsRsp, /* WDI_SET_UAPSD_PARAM_RESP */
503 WDI_ProcessUpdateUapsdParamsRsp, /* WDI_UPDATE_UAPSD_PARAM_RESP */
504 WDI_ProcessConfigureRxpFilterRsp,/* WDI_CONFIGURE_RXP_FILTER_RESP */
505 WDI_ProcessSetBeaconFilterRsp, /* WDI_SET_BEACON_FILTER_RESP */
506 WDI_ProcessRemBeaconFilterRsp, /* WDI_REM_BEACON_FILTER_RESP */
507 WDI_ProcessSetRSSIThresoldsRsp, /* WDI_SET_RSSI_THRESHOLDS_RESP */
508 WDI_ProcessHostOffloadRsp, /* WDI_HOST_OFFLOAD_RESP */
509 WDI_ProcessWowlAddBcPtrnRsp, /* WDI_WOWL_ADD_BC_PTRN_RESP */
510 WDI_ProcessWowlDelBcPtrnRsp, /* WDI_WOWL_DEL_BC_PTRN_RESP */
511 WDI_ProcessWowlEnterRsp, /* WDI_WOWL_ENTER_RESP */
512 WDI_ProcessWowlExitRsp, /* WDI_WOWL_EXIT_RESP */
513 WDI_ProcessConfigureAppsCpuWakeupStateRsp, /* WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700514
Jeff Johnson295189b2012-06-20 16:38:30 -0700515
516 WDI_ProcessNvDownloadRsp, /* WDI_NV_DOWNLOAD_RESP*/
517
518 WDI_ProcessFlushAcRsp, /* WDI_FLUSH_AC_RESP */
519 WDI_ProcessBtAmpEventRsp, /* WDI_BTAMP_EVENT_RESP */
520#ifdef WLAN_FEATURE_VOWIFI_11R
521 WDI_ProcessAggrAddTSpecRsp, /* WDI_AGGR_ADD_TS_RESP */
522#else
523 NULL,
524#endif /* WLAN_FEATURE_VOWIFI_11R */
525 WDI_ProcessAddSTASelfRsp, /* WDI_ADD_STA_SELF_RESP */
526 WDI_ProcessDelSTASelfRsp, /* WDI_DEL_STA_SELF_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700527#ifdef FEATURE_OEM_DATA_SUPPORT
528 WDI_ProcessStartOemDataRsp, /*WDI_START_OEM_DATA_RESP*/
529#else
Jeff Johnson295189b2012-06-20 16:38:30 -0700530 NULL,
Jeff Johnsone7245742012-09-05 17:12:55 -0700531#endif /*FEATURE_OEM_DATA_SUPPORT*/
Jeff Johnson295189b2012-06-20 16:38:30 -0700532 WDI_ProcessHostResumeRsp, /*WDI_HOST_RESUME_RESP*/
533
Jeff Johnson295189b2012-06-20 16:38:30 -0700534 WDI_ProcessP2PGONOARsp, /*WDI_P2P_GO_NOTICE_OF_ABSENCE_RESP */
Jeff Johnson295189b2012-06-20 16:38:30 -0700535
Jeff Johnson295189b2012-06-20 16:38:30 -0700536 WDI_ProcessFTMCommandRsp, /* WDI_FTM_CMD_RESP */
Jeff Johnson295189b2012-06-20 16:38:30 -0700537
Jeff Johnsone7245742012-09-05 17:12:55 -0700538 WDI_ProcessKeepAliveRsp, /* WDI_KEEP_ALIVE_RESP */
539
Jeff Johnson295189b2012-06-20 16:38:30 -0700540#ifdef FEATURE_WLAN_SCAN_PNO
541 WDI_ProcessSetPreferredNetworkRsp, /* WDI_SET_PREF_NETWORK_RESP */
542 WDI_ProcessSetRssiFilterRsp, /* WDI_SET_RSSI_FILTER_RESP */
543 WDI_ProcessUpdateScanParamsRsp, /* WDI_UPDATE_SCAN_PARAMS_RESP */
544#else
545 NULL,
546 NULL,
547 NULL,
548#endif // FEATURE_WLAN_SCAN_PNO
549
550 WDI_ProcessSetTxPerTrackingRsp, /* WDI_SET_TX_PER_TRACKING_RESP */
551
552 /*---------------------------------------------------------------------
553 Indications
554 ---------------------------------------------------------------------*/
555#ifdef WLAN_FEATURE_PACKET_FILTERING
556 /* WDI_8023_MULTICAST_LIST_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700557 WDI_Process8023MulticastListRsp,
Jeff Johnson295189b2012-06-20 16:38:30 -0700558 /* WDI_RECEIVE_FILTER_SET_FILTER_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700559 WDI_ProcessReceiveFilterSetFilterRsp,
Jeff Johnson295189b2012-06-20 16:38:30 -0700560 /* WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700561 WDI_ProcessFilterMatchCountRsp,
Jeff Johnson295189b2012-06-20 16:38:30 -0700562 /* WDI_RECEIVE_FILTER_CLEAR_FILTER_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700563 WDI_ProcessReceiveFilterClearFilterRsp,
Jeff Johnson295189b2012-06-20 16:38:30 -0700564#else
565 NULL,
566 NULL,
567 NULL,
568 NULL,
569#endif // WLAN_FEATURE_PACKET_FILTERING
570
571 WDI_ProcessHALDumpCmdRsp, /* WDI_HAL_DUMP_CMD_RESP */
572 WDI_ProcessShutdownRsp, /* WDI_SHUTDOWN_RESP */
573
574 WDI_ProcessSetPowerParamsRsp, /*WDI_SET_POWER_PARAMS_RESP*/
575#ifdef FEATURE_WLAN_CCX
576 WDI_ProcessTsmStatsRsp, /* WDI_TSM_STATS_RESP */
577#else
578 NULL,
579#endif
580
581#ifdef WLAN_FEATURE_GTK_OFFLOAD
Jeff Johnsone7245742012-09-05 17:12:55 -0700582 WDI_ProcessGtkOffloadRsp, /* WDI_GTK_OFFLOAD_RESP */
583 WDI_ProcessGTKOffloadGetInfoRsp, /* WDI_GTK_OFFLOAD_GETINFO_RESP */
Jeff Johnson295189b2012-06-20 16:38:30 -0700584#else
585 NULL,
586 NULL,
587#endif // WLAN_FEATURE_GTK_OFFLOAD
Jeff Johnsone7245742012-09-05 17:12:55 -0700588 WDI_ProcessSetTmLevelRsp, /* WDI_SET_TM_LEVEL_RESP */
589 WDI_ProcessFeatureCapsExchangeRsp, /* WDI_FEATURE_CAPS_EXCHANGE_RESP */
Mohit Khanna4a70d262012-09-11 16:30:12 -0700590#ifdef WLAN_FEATURE_11AC
591 WDI_ProcessUpdateVHTOpModeRsp, /* WDI_UPDATE_VHT_OP_MODE_RESP */
schang86c22c42013-03-13 18:41:24 -0700592#else
593 NULL,
Mohit Khanna4a70d262012-09-11 16:30:12 -0700594#endif
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -0800595#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_CCX || defined(FEATURE_WLAN_LFR)
596 WDI_ProcessGetRoamRssiRsp, /* WDI_GET_ROAM_RSSI_RESP */
597#else
598 NULL,
599#endif
schang86c22c42013-03-13 18:41:24 -0700600 WDI_ProcessSetTxPowerRsp, /* WDI_SET_TX_POWER_RESP */
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -0700601#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
Varun Reddy Yeturu920df212013-05-22 08:07:23 -0700602 WDI_ProcessRoamScanOffloadRsp, /* WDI_ROAM_SCAN_OFFLOAD_RESP */
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -0700603#else
604 NULL,
605#endif
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +0530606#ifdef FEATURE_WLAN_TDLS
607 WDI_ProcessLinkEstablishReqRsp, /*WDI_TDLS_LINK_ESTABLISH_REQ_RESP*/
608#else
609 NULL,
610#endif
Leo Chang9056f462013-08-01 19:21:11 -0700611#ifdef FEATURE_WLAN_LPHB
612 WDI_ProcessLphbCfgRsp, /* WDI_LPHB_CFG_RESP */
613#else
614 NULL,
615#endif /* FEATURE_WLAN_LPHB */
Rajeev79dbe4c2013-10-05 11:03:42 +0530616
617#ifdef FEATURE_WLAN_BATCH_SCAN
618 WDI_ProcessSetBatchScanRsp, /* WDI_SET_BATCH_SCAN_RESP */
619#else
620 NULL,
621#endif /*FEATURE_WLAN_BATCH_SCAN*/
Arif Hussain935a8fb2014-01-31 12:12:28 -0800622 WDI_ProcessSetMaxTxPowerPerBandRsp, /* WDI_SET_MAX_TX_POWER_PER_BAND_RSP */
Rajeev79dbe4c2013-10-05 11:03:42 +0530623
Jeff Johnson295189b2012-06-20 16:38:30 -0700624 /*---------------------------------------------------------------------
625 Indications
626 ---------------------------------------------------------------------*/
627 WDI_ProcessLowRSSIInd, /* Just threshold crossing not really low WDI_HAL_RSSI_NOTIFICATION_IND */
628 WDI_ProcessMissedBeaconInd, /* WDI_HAL_MISSED_BEACON_IND */
629 WDI_ProcessUnkAddrFrameInd, /* WDI_HAL_UNKNOWN_ADDR2_FRAME_RX_IND */
630 WDI_ProcessMicFailureInd, /* WDI_HAL_MIC_FAILURE_IND */
631 WDI_ProcessFatalErrorInd, /* WDI_HAL_FATAL_ERROR_IND */
632 WDI_ProcessDelSTAInd, /* WDI_HAL_DEL_STA_IND */
633
634 WDI_ProcessCoexInd, /* WDI_HAL_COEX_IND */
635
636 WDI_ProcessTxCompleteInd, /* WDI_HAL_TX_COMPLETE_IND */
637
Jeff Johnson295189b2012-06-20 16:38:30 -0700638 WDI_ProcessP2pNoaAttrInd, /*WDI_HOST_NOA_ATTR_IND*/
Jeff Johnson295189b2012-06-20 16:38:30 -0700639
640#ifdef FEATURE_WLAN_SCAN_PNO
641 WDI_ProcessPrefNetworkFoundInd, /* WDI_HAL_PREF_NETWORK_FOUND_IND */
642#else
643 NULL,
644#endif // FEATURE_WLAN_SCAN_PNO
645
646#ifdef WLAN_WAKEUP_EVENTS
647 WDI_ProcessWakeReasonInd, /* WDI_WAKE_REASON_IND */
648#else // WLAN_WAKEUP_EVENTS
649 NULL,
650#endif // WLAN_WAKEUP_EVENTS
651
652 WDI_ProcessTxPerHitInd, /* WDI_HAL_TX_PER_HIT_IND */
Viral Modid86bde22012-12-10 13:09:21 -0800653
Viral Modid86bde22012-12-10 13:09:21 -0800654 WDI_ProcessP2pNoaStartInd, /* WDI_NOA_START_IND */
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +0530655#ifdef FEATURE_WLAN_TDLS
656 WDI_ProcessTdlsInd, /* WDI_HAL_TDLS_IND */
657#else
658 NULL,
659#endif
Leo Chang9056f462013-08-01 19:21:11 -0700660
661#ifdef FEATURE_WLAN_LPHB
Leo Changd9df8aa2013-09-26 13:32:26 -0700662 WDI_ProcessLphbInd, /* WDI_HAL_LPHB_IND */
Leo Chang9056f462013-08-01 19:21:11 -0700663#else
664 NULL,
665#endif /* FEATURE_WLAN_LPHB */
Ravi Joshid2ca7c42013-07-23 08:37:49 -0700666
667 WDI_ProcessIbssPeerInactivityInd, /* WDI_HAL_IBSS_PEER_INACTIVITY_IND */
Yue Mab9c86f42013-08-14 15:59:08 -0700668
669 WDI_ProcessPeriodicTxPtrnFwInd, /* WDI_HAL_PERIODIC_TX_PTRN_FW_IND */
Rajeev79dbe4c2013-10-05 11:03:42 +0530670
671#ifdef FEATURE_WLAN_BATCH_SCAN
672 WDI_ProcessBatchScanResultInd, /* WDI_BATCHSCAN_RESULT_IND */
673#else
674 NULL,
675#endif
676
Leo Chang0b0e45a2013-12-15 15:18:55 -0800677#ifdef FEATURE_WLAN_CH_AVOID
678 WDI_ProcessChAvoidInd, /* WDI_LBP_UPDATE_IND_TO_HOST */
679#else
680 NULL,
681#endif /* FEATURE_WLAN_CH_AVOID */
682
Jeff Johnson295189b2012-06-20 16:38:30 -0700683};
684
685
Jeff Johnsone7245742012-09-05 17:12:55 -0700686/*---------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -0700687 WLAN DAL Global Control Block
688 ---------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700689WDI_ControlBlockType gWDICb;
Jeff Johnson295189b2012-06-20 16:38:30 -0700690static wpt_uint8 gWDIInitialized = eWLAN_PAL_FALSE;
691
Jeff Johnsone7245742012-09-05 17:12:55 -0700692const wpt_uint8 szTransportChName[] = "WLAN_CTRL";
Jeff Johnson295189b2012-06-20 16:38:30 -0700693
694/*Helper routine for retrieving the PAL Context from WDI*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700695WPT_INLINE
Jeff Johnson295189b2012-06-20 16:38:30 -0700696void* WDI_GET_PAL_CTX( void )
697{
Jeff Johnsone7245742012-09-05 17:12:55 -0700698 return gWDICb.pPALContext;
Jeff Johnson295189b2012-06-20 16:38:30 -0700699}/*WDI_GET_PAL_CTX*/
700
Jeff Johnsone7245742012-09-05 17:12:55 -0700701/*============================================================================
Jeff Johnson295189b2012-06-20 16:38:30 -0700702 Helper inline converters
703 ============================================================================*/
704/*Convert WDI driver type into HAL driver type*/
705WPT_STATIC WPT_INLINE WDI_Status
706WDI_HAL_2_WDI_STATUS
707(
708 eHalStatus halStatus
709);
710
711/*Convert WDI request type into HAL request type*/
712WPT_STATIC WPT_INLINE tHalHostMsgType
713WDI_2_HAL_REQ_TYPE
714(
715 WDI_RequestEnumType wdiReqType
716);
717
718/*Convert WDI response type into HAL response type*/
719WPT_STATIC WPT_INLINE WDI_ResponseEnumType
720HAL_2_WDI_RSP_TYPE
721(
722 tHalHostMsgType halMsg
723);
724
725/*Convert WDI driver type into HAL driver type*/
726WPT_STATIC WPT_INLINE tDriverType
727WDI_2_HAL_DRV_TYPE
728(
729 WDI_DriverType wdiDriverType
730);
731
732/*Convert WDI stop reason into HAL stop reason*/
733WPT_STATIC WPT_INLINE tHalStopType
734WDI_2_HAL_STOP_REASON
735(
736 WDI_StopType wdiStopType
737);
738
739/*Convert WDI scan mode type into HAL scan mode type*/
740WPT_STATIC WPT_INLINE eHalSysMode
741WDI_2_HAL_SCAN_MODE
742(
743 WDI_ScanMode wdiScanMode
744);
745
746/*Convert WDI sec ch offset into HAL sec ch offset type*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700747WPT_STATIC WPT_INLINE ePhyChanBondState
Jeff Johnson295189b2012-06-20 16:38:30 -0700748WDI_2_HAL_SEC_CH_OFFSET
749(
750 WDI_HTSecondaryChannelOffset wdiSecChOffset
751);
752
753/*Convert WDI BSS type into HAL BSS type*/
754WPT_STATIC WPT_INLINE tSirBssType
755WDI_2_HAL_BSS_TYPE
756(
757 WDI_BssType wdiBSSType
758);
759
760/*Convert WDI NW type into HAL NW type*/
761WPT_STATIC WPT_INLINE tSirNwType
762WDI_2_HAL_NW_TYPE
763(
764 WDI_NwType wdiNWType
765);
766
767/*Convert WDI chanel bonding type into HAL cb type*/
768WPT_STATIC WPT_INLINE ePhyChanBondState
769WDI_2_HAL_CB_STATE
770(
771 WDI_PhyChanBondState wdiCbState
772);
773
774/*Convert WDI chanel bonding type into HAL cb type*/
775WPT_STATIC WPT_INLINE tSirMacHTOperatingMode
776WDI_2_HAL_HT_OPER_MODE
777(
778 WDI_HTOperatingMode wdiHTOperMode
779);
780
781/*Convert WDI mimo PS type into HAL mimo PS type*/
782WPT_STATIC WPT_INLINE tSirMacHTMIMOPowerSaveState
783WDI_2_HAL_MIMO_PS
784(
785 WDI_HTMIMOPowerSaveState wdiHTOperMode
786);
787
788/*Convert WDI ENC type into HAL ENC type*/
789WPT_STATIC WPT_INLINE tAniEdType
790WDI_2_HAL_ENC_TYPE
791(
792 WDI_EncryptType wdiEncType
793);
794
795/*Convert WDI WEP type into HAL WEP type*/
796WPT_STATIC WPT_INLINE tAniWepType
797WDI_2_HAL_WEP_TYPE
798(
799 WDI_WepType wdiWEPType
800);
801
802/*Convert WDI Link State into HAL Link State*/
803WPT_STATIC WPT_INLINE tSirLinkState
804WDI_2_HAL_LINK_STATE
805(
806 WDI_LinkStateType wdiLinkState
807);
808
Jeff Johnsone7245742012-09-05 17:12:55 -0700809/*Translate a STA Context from WDI into HAL*/
810WPT_STATIC WPT_INLINE
Jeff Johnson295189b2012-06-20 16:38:30 -0700811void
812WDI_CopyWDIStaCtxToHALStaCtx
Jeff Johnsone7245742012-09-05 17:12:55 -0700813(
Jeff Johnson295189b2012-06-20 16:38:30 -0700814 tConfigStaParams* phalConfigSta,
815 WDI_ConfigStaReqInfoType* pwdiConfigSta
816);
Jeff Johnsone7245742012-09-05 17:12:55 -0700817
818/*Translate a Rate set info from WDI into HAL*/
819WPT_STATIC WPT_INLINE void
Jeff Johnson295189b2012-06-20 16:38:30 -0700820WDI_CopyWDIRateSetToHALRateSet
Jeff Johnsone7245742012-09-05 17:12:55 -0700821(
Jeff Johnson295189b2012-06-20 16:38:30 -0700822 tSirMacRateSet* pHalRateSet,
823 WDI_RateSet* pwdiRateSet
824);
825
826/*Translate an EDCA Parameter Record from WDI into HAL*/
827WPT_STATIC WPT_INLINE void
828WDI_CopyWDIEDCAParamsToHALEDCAParams
Jeff Johnsone7245742012-09-05 17:12:55 -0700829(
Jeff Johnson295189b2012-06-20 16:38:30 -0700830 tSirMacEdcaParamRecord* phalEdcaParam,
831 WDI_EdcaParamRecord* pWDIEdcaParam
832);
833
834/*Copy a management frame header from WDI fmt into HAL fmt*/
835WPT_STATIC WPT_INLINE void
836WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr
837(
838 tSirMacMgmtHdr* pmacMgmtHdr,
839 WDI_MacMgmtHdr* pwdiMacMgmtHdr
840);
841
842/*Copy config bss parameters from WDI fmt into HAL fmt*/
843WPT_STATIC WPT_INLINE void
844WDI_CopyWDIConfigBSSToHALConfigBSS
845(
846 tConfigBssParams* phalConfigBSS,
847 WDI_ConfigBSSReqInfoType* pwdiConfigBSS
848);
849
Jeff Johnsone7245742012-09-05 17:12:55 -0700850/*Extract the request CB function and user data from a request structure
Jeff Johnson295189b2012-06-20 16:38:30 -0700851 pointed to by user data */
852WPT_STATIC WPT_INLINE void
853WDI_ExtractRequestCBFromEvent
854(
855 WDI_EventInfoType* pEvent,
Jeff Johnsone7245742012-09-05 17:12:55 -0700856 WDI_ReqStatusCb* ppfnReqCB,
Jeff Johnson295189b2012-06-20 16:38:30 -0700857 void** ppUserData
858);
859
860wpt_uint8
861WDI_FindEmptySession
Jeff Johnsone7245742012-09-05 17:12:55 -0700862(
Jeff Johnson295189b2012-06-20 16:38:30 -0700863 WDI_ControlBlockType* pWDICtx,
864 WDI_BSSSessionType** ppSession
865);
866
867void
868WDI_AddBcastSTAtoSTATable
869(
870 WDI_ControlBlockType* pWDICtx,
871 WDI_AddStaParams * staParams,
872 wpt_uint16 usBcastStaIdx
873);
874
875WDI_Status WDI_SendNvBlobReq
Jeff Johnsone7245742012-09-05 17:12:55 -0700876(
Jeff Johnson295189b2012-06-20 16:38:30 -0700877 WDI_ControlBlockType* pWDICtx,
878 WDI_EventInfoType* pEventData
879);
880
881void
882WDI_SetPowerStateCb
883(
884 wpt_status status,
885 unsigned int dxePhyAddr,
886 void *pContext
887);
888
889#define CASE_RETURN_STRING( str ) \
890 case ( ( str ) ): return( #str ); break \
891
892/**
893 @brief WDI_getReqMsgString prints the WDI request message in string.
Jeff Johnsone7245742012-09-05 17:12:55 -0700894
895 @param wdiReqMsgId: WDI Message request Id
896
897 @see
Jeff Johnson295189b2012-06-20 16:38:30 -0700898 @return Result of the function call
899*/
900static char *WDI_getReqMsgString(wpt_uint16 wdiReqMsgId)
901{
902 switch (wdiReqMsgId)
903 {
904 CASE_RETURN_STRING( WDI_START_REQ );
905 CASE_RETURN_STRING( WDI_STOP_REQ );
906 CASE_RETURN_STRING( WDI_CLOSE_REQ );
907 CASE_RETURN_STRING( WDI_INIT_SCAN_REQ );
908 CASE_RETURN_STRING( WDI_START_SCAN_REQ );
909 CASE_RETURN_STRING( WDI_END_SCAN_REQ );
910 CASE_RETURN_STRING( WDI_FINISH_SCAN_REQ );
911 CASE_RETURN_STRING( WDI_JOIN_REQ );
912 CASE_RETURN_STRING( WDI_CONFIG_BSS_REQ );
913 CASE_RETURN_STRING( WDI_DEL_BSS_REQ );
914 CASE_RETURN_STRING( WDI_POST_ASSOC_REQ );
915 CASE_RETURN_STRING( WDI_DEL_STA_REQ );
916 CASE_RETURN_STRING( WDI_SET_BSS_KEY_REQ );
917 CASE_RETURN_STRING( WDI_RMV_BSS_KEY_REQ );
918 CASE_RETURN_STRING( WDI_SET_STA_KEY_REQ );
919 CASE_RETURN_STRING( WDI_RMV_STA_KEY_REQ );
920 CASE_RETURN_STRING( WDI_ADD_TS_REQ );
921 CASE_RETURN_STRING( WDI_DEL_TS_REQ );
922 CASE_RETURN_STRING( WDI_UPD_EDCA_PRMS_REQ );
923 CASE_RETURN_STRING( WDI_ADD_BA_SESSION_REQ );
924 CASE_RETURN_STRING( WDI_DEL_BA_REQ );
925 CASE_RETURN_STRING( WDI_CH_SWITCH_REQ );
926 CASE_RETURN_STRING( WDI_CONFIG_STA_REQ );
927 CASE_RETURN_STRING( WDI_SET_LINK_ST_REQ );
928 CASE_RETURN_STRING( WDI_GET_STATS_REQ );
929 CASE_RETURN_STRING( WDI_UPDATE_CFG_REQ );
930 CASE_RETURN_STRING( WDI_ADD_BA_REQ );
931 CASE_RETURN_STRING( WDI_TRIGGER_BA_REQ );
932 CASE_RETURN_STRING( WDI_UPD_BCON_PRMS_REQ );
933 CASE_RETURN_STRING( WDI_SND_BCON_REQ );
934 CASE_RETURN_STRING( WDI_UPD_PROBE_RSP_TEMPLATE_REQ );
935 CASE_RETURN_STRING( WDI_SET_STA_BCAST_KEY_REQ );
936 CASE_RETURN_STRING( WDI_RMV_STA_BCAST_KEY_REQ );
937 CASE_RETURN_STRING( WDI_SET_MAX_TX_POWER_REQ );
Arif Hussaina5ebce02013-08-09 15:09:58 -0700938 CASE_RETURN_STRING( WDI_SET_MAX_TX_POWER_PER_BAND_REQ );
Jeff Johnson295189b2012-06-20 16:38:30 -0700939 CASE_RETURN_STRING( WDI_P2P_GO_NOTICE_OF_ABSENCE_REQ );
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +0530940#ifdef FEATURE_WLAN_TDLS
941 CASE_RETURN_STRING( WDI_TDLS_LINK_ESTABLISH_REQ );
942#endif
Jeff Johnson295189b2012-06-20 16:38:30 -0700943 CASE_RETURN_STRING( WDI_ENTER_IMPS_REQ );
944 CASE_RETURN_STRING( WDI_EXIT_IMPS_REQ );
945 CASE_RETURN_STRING( WDI_ENTER_BMPS_REQ );
946 CASE_RETURN_STRING( WDI_EXIT_BMPS_REQ );
947 CASE_RETURN_STRING( WDI_ENTER_UAPSD_REQ );
948 CASE_RETURN_STRING( WDI_EXIT_UAPSD_REQ );
949 CASE_RETURN_STRING( WDI_SET_UAPSD_PARAM_REQ );
950 CASE_RETURN_STRING( WDI_UPDATE_UAPSD_PARAM_REQ );
951 CASE_RETURN_STRING( WDI_CONFIGURE_RXP_FILTER_REQ );
952 CASE_RETURN_STRING( WDI_SET_BEACON_FILTER_REQ);
953 CASE_RETURN_STRING( WDI_REM_BEACON_FILTER_REQ );
954 CASE_RETURN_STRING( WDI_SET_RSSI_THRESHOLDS_REQ );
955 CASE_RETURN_STRING( WDI_HOST_OFFLOAD_REQ );
956 CASE_RETURN_STRING( WDI_WOWL_ADD_BC_PTRN_REQ );
957 CASE_RETURN_STRING( WDI_WOWL_DEL_BC_PTRN_REQ );
958 CASE_RETURN_STRING( WDI_WOWL_ENTER_REQ );
959 CASE_RETURN_STRING( WDI_WOWL_EXIT_REQ );
960 CASE_RETURN_STRING( WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ );
961 CASE_RETURN_STRING( WDI_NV_DOWNLOAD_REQ );
962 CASE_RETURN_STRING( WDI_FLUSH_AC_REQ );
963 CASE_RETURN_STRING( WDI_BTAMP_EVENT_REQ );
964 CASE_RETURN_STRING( WDI_AGGR_ADD_TS_REQ );
965 CASE_RETURN_STRING( WDI_ADD_STA_SELF_REQ );
966 CASE_RETURN_STRING( WDI_DEL_STA_SELF_REQ );
967 CASE_RETURN_STRING( WDI_FTM_CMD_REQ );
Jeff Johnsone7245742012-09-05 17:12:55 -0700968 CASE_RETURN_STRING( WDI_START_OEM_DATA_REQ );
Jeff Johnson295189b2012-06-20 16:38:30 -0700969 CASE_RETURN_STRING( WDI_HOST_RESUME_REQ );
970 CASE_RETURN_STRING( WDI_KEEP_ALIVE_REQ);
971 #ifdef FEATURE_WLAN_SCAN_PNO
972 CASE_RETURN_STRING( WDI_SET_PREF_NETWORK_REQ );
973 CASE_RETURN_STRING( WDI_SET_RSSI_FILTER_REQ );
974 CASE_RETURN_STRING( WDI_UPDATE_SCAN_PARAMS_REQ );
975 #endif
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -0700976#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
Varun Reddy Yeturu920df212013-05-22 08:07:23 -0700977 CASE_RETURN_STRING( WDI_ROAM_SCAN_OFFLOAD_REQ );
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -0700978#endif
Jeff Johnson295189b2012-06-20 16:38:30 -0700979 CASE_RETURN_STRING( WDI_SET_TX_PER_TRACKING_REQ );
980 CASE_RETURN_STRING( WDI_8023_MULTICAST_LIST_REQ );
981 CASE_RETURN_STRING( WDI_RECEIVE_FILTER_SET_FILTER_REQ );
982 CASE_RETURN_STRING( WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ );
983 CASE_RETURN_STRING( WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ );
984 CASE_RETURN_STRING( WDI_INIT_SCAN_CON_REQ );
985 CASE_RETURN_STRING( WDI_HAL_DUMP_CMD_REQ );
986 CASE_RETURN_STRING( WDI_SHUTDOWN_REQ );
987 CASE_RETURN_STRING( WDI_SET_POWER_PARAMS_REQ );
Madan Mohan Koyyalamudi01cba042013-01-10 21:56:05 -0800988 CASE_RETURN_STRING( WDI_TRAFFIC_STATS_IND );
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -0800989 CASE_RETURN_STRING( WDI_GET_ROAM_RSSI_REQ );
Chet Lanctot186b5732013-03-18 10:26:30 -0700990#ifdef WLAN_FEATURE_11W
991 CASE_RETURN_STRING( WDI_EXCLUDE_UNENCRYPTED_IND );
992#endif
Rajeev79dbe4c2013-10-05 11:03:42 +0530993#ifdef FEATURE_WLAN_BATCH_SCAN
994 CASE_RETURN_STRING( WDI_SET_BATCH_SCAN_REQ);
995 CASE_RETURN_STRING( WDI_STOP_BATCH_SCAN_IND );
996 CASE_RETURN_STRING( WDI_TRIGGER_BATCH_SCAN_RESULT_IND);
997#endif
Sandeep Puligilla8b8b74b2014-02-10 16:39:05 +0530998 CASE_RETURN_STRING(WDI_START_HT40_OBSS_SCAN_IND);
999 CASE_RETURN_STRING(WDI_STOP_HT40_OBSS_SCAN_IND);
Jeff Johnson295189b2012-06-20 16:38:30 -07001000 default:
1001 return "Unknown WDI MessageId";
1002 }
1003}
1004
1005
1006
1007/**
1008 @brief WDI_getRespMsgString prints the WDI resonse message in string.
Jeff Johnsone7245742012-09-05 17:12:55 -07001009
1010 @param wdiRespMsgId: WDI Message response Id
1011
1012 @see
Jeff Johnson295189b2012-06-20 16:38:30 -07001013 @return Result of the function call
1014*/
1015static char *WDI_getRespMsgString(wpt_uint16 wdiRespMsgId)
1016{
1017 switch (wdiRespMsgId)
1018 {
1019 CASE_RETURN_STRING( WDI_START_RESP );
1020 CASE_RETURN_STRING( WDI_STOP_RESP );
1021 CASE_RETURN_STRING( WDI_CLOSE_RESP );
1022 CASE_RETURN_STRING( WDI_INIT_SCAN_RESP );
1023 CASE_RETURN_STRING( WDI_START_SCAN_RESP );
1024 CASE_RETURN_STRING( WDI_END_SCAN_RESP );
1025 CASE_RETURN_STRING( WDI_FINISH_SCAN_RESP );
1026 CASE_RETURN_STRING( WDI_JOIN_RESP );
1027 CASE_RETURN_STRING( WDI_CONFIG_BSS_RESP );
1028 CASE_RETURN_STRING( WDI_DEL_BSS_RESP );
1029 CASE_RETURN_STRING( WDI_POST_ASSOC_RESP );
1030 CASE_RETURN_STRING( WDI_DEL_STA_RESP );
1031 CASE_RETURN_STRING( WDI_SET_BSS_KEY_RESP );
1032 CASE_RETURN_STRING( WDI_RMV_BSS_KEY_RESP );
1033 CASE_RETURN_STRING( WDI_SET_STA_KEY_RESP );
1034 CASE_RETURN_STRING( WDI_RMV_STA_KEY_RESP );
1035 CASE_RETURN_STRING( WDI_ADD_TS_RESP );
1036 CASE_RETURN_STRING( WDI_DEL_TS_RESP );
1037 CASE_RETURN_STRING( WDI_UPD_EDCA_PRMS_RESP );
1038 CASE_RETURN_STRING( WDI_ADD_BA_SESSION_RESP );
1039 CASE_RETURN_STRING( WDI_DEL_BA_RESP );
1040 CASE_RETURN_STRING( WDI_CH_SWITCH_RESP );
1041 CASE_RETURN_STRING( WDI_CONFIG_STA_RESP );
1042 CASE_RETURN_STRING( WDI_SET_LINK_ST_RESP );
1043 CASE_RETURN_STRING( WDI_GET_STATS_RESP );
1044 CASE_RETURN_STRING( WDI_UPDATE_CFG_RESP );
1045 CASE_RETURN_STRING( WDI_ADD_BA_RESP );
1046 CASE_RETURN_STRING( WDI_TRIGGER_BA_RESP );
1047 CASE_RETURN_STRING( WDI_UPD_BCON_PRMS_RESP );
1048 CASE_RETURN_STRING( WDI_SND_BCON_RESP );
1049 CASE_RETURN_STRING( WDI_UPD_PROBE_RSP_TEMPLATE_RESP );
1050 CASE_RETURN_STRING( WDI_SET_STA_BCAST_KEY_RESP );
1051 CASE_RETURN_STRING( WDI_RMV_STA_BCAST_KEY_RESP );
1052 CASE_RETURN_STRING( WDI_SET_MAX_TX_POWER_RESP );
1053 CASE_RETURN_STRING( WDI_P2P_GO_NOTICE_OF_ABSENCE_RESP );
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +05301054#ifdef FEATURE_WLAN_TDLS
1055 CASE_RETURN_STRING( WDI_TDLS_LINK_ESTABLISH_REQ_RESP );
1056 CASE_RETURN_STRING( WDI_HAL_TDLS_IND );
1057#endif
Jeff Johnson295189b2012-06-20 16:38:30 -07001058 CASE_RETURN_STRING( WDI_ENTER_IMPS_RESP );
1059 CASE_RETURN_STRING( WDI_EXIT_IMPS_RESP );
1060 CASE_RETURN_STRING( WDI_ENTER_BMPS_RESP );
1061 CASE_RETURN_STRING( WDI_EXIT_BMPS_RESP );
1062 CASE_RETURN_STRING( WDI_ENTER_UAPSD_RESP );
1063 CASE_RETURN_STRING( WDI_EXIT_UAPSD_RESP );
1064 CASE_RETURN_STRING( WDI_SET_UAPSD_PARAM_RESP );
1065 CASE_RETURN_STRING( WDI_UPDATE_UAPSD_PARAM_RESP );
1066 CASE_RETURN_STRING( WDI_CONFIGURE_RXP_FILTER_RESP );
1067 CASE_RETURN_STRING( WDI_SET_BEACON_FILTER_RESP);
1068 CASE_RETURN_STRING( WDI_REM_BEACON_FILTER_RESP );
1069 CASE_RETURN_STRING( WDI_SET_RSSI_THRESHOLDS_RESP );
1070 CASE_RETURN_STRING( WDI_HOST_OFFLOAD_RESP );
1071 CASE_RETURN_STRING( WDI_WOWL_ADD_BC_PTRN_RESP );
1072 CASE_RETURN_STRING( WDI_WOWL_DEL_BC_PTRN_RESP );
1073 CASE_RETURN_STRING( WDI_WOWL_ENTER_RESP );
1074 CASE_RETURN_STRING( WDI_WOWL_EXIT_RESP );
1075 CASE_RETURN_STRING( WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_RESP );
1076 CASE_RETURN_STRING( WDI_NV_DOWNLOAD_RESP );
1077 CASE_RETURN_STRING( WDI_FLUSH_AC_RESP );
1078 CASE_RETURN_STRING( WDI_BTAMP_EVENT_RESP );
1079 CASE_RETURN_STRING( WDI_AGGR_ADD_TS_RESP );
1080 CASE_RETURN_STRING( WDI_ADD_STA_SELF_RESP );
1081 CASE_RETURN_STRING( WDI_DEL_STA_SELF_RESP );
1082 CASE_RETURN_STRING( WDI_FTM_CMD_RESP );
Jeff Johnsone7245742012-09-05 17:12:55 -07001083 CASE_RETURN_STRING( WDI_START_OEM_DATA_RESP );
Jeff Johnson295189b2012-06-20 16:38:30 -07001084 CASE_RETURN_STRING( WDI_HOST_RESUME_RESP );
1085 CASE_RETURN_STRING( WDI_KEEP_ALIVE_RESP);
1086 #ifdef FEATURE_WLAN_SCAN_PNO
1087 CASE_RETURN_STRING( WDI_SET_PREF_NETWORK_RESP );
1088 CASE_RETURN_STRING( WDI_SET_RSSI_FILTER_RESP );
1089 CASE_RETURN_STRING( WDI_UPDATE_SCAN_PARAMS_RESP );
1090 #endif
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -07001091#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
Varun Reddy Yeturu920df212013-05-22 08:07:23 -07001092 CASE_RETURN_STRING( WDI_ROAM_SCAN_OFFLOAD_RESP );
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -07001093#endif
Jeff Johnson295189b2012-06-20 16:38:30 -07001094 CASE_RETURN_STRING( WDI_SET_TX_PER_TRACKING_RESP );
1095 CASE_RETURN_STRING( WDI_8023_MULTICAST_LIST_RESP );
1096 CASE_RETURN_STRING( WDI_RECEIVE_FILTER_SET_FILTER_RESP );
1097 CASE_RETURN_STRING( WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_RESP );
1098 CASE_RETURN_STRING( WDI_RECEIVE_FILTER_CLEAR_FILTER_RESP );
1099 CASE_RETURN_STRING( WDI_HAL_DUMP_CMD_RESP );
1100 CASE_RETURN_STRING( WDI_SHUTDOWN_RESP );
1101 CASE_RETURN_STRING( WDI_SET_POWER_PARAMS_RESP );
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -08001102 CASE_RETURN_STRING( WDI_GET_ROAM_RSSI_RESP );
Rajeev79dbe4c2013-10-05 11:03:42 +05301103#ifdef FEATURE_WLAN_BATCH_SCAN
1104 CASE_RETURN_STRING( WDI_SET_BATCH_SCAN_RESP);
1105#endif
Jeff Johnson295189b2012-06-20 16:38:30 -07001106 default:
1107 return "Unknown WDI MessageId";
1108 }
1109}
1110
1111/**
Madan Mohan Koyyalamudif8d3b3f2013-07-30 19:10:54 +05301112 @brief WDI_TraceHostFWCapabilities - Parses both host and Firmware
1113 Capability bitmap array.
Abhishek Singh08b60122014-02-04 18:05:23 +05301114 @param capabilityBitmap - Base address of a 4 element Bitmap array
1115 of type tANI_U32.
Madan Mohan Koyyalamudif8d3b3f2013-07-30 19:10:54 +05301116 @see
1117 @returns None
1118 */
1119void WDI_TraceHostFWCapabilities(tANI_U32 *capabilityBitmap)
1120{
Abhishek Singh08b60122014-02-04 18:05:23 +05301121 int i,j;
Madan Mohan Koyyalamudif8d3b3f2013-07-30 19:10:54 +05301122 char capStr[512];
1123 char *pCapStr = capStr;
Abhishek Singh08b60122014-02-04 18:05:23 +05301124 for (j = 0; j < 4; j++) {
1125 for (i = 0; i < 32; i++) {
1126 if ((*(capabilityBitmap + j) & (1 << i))) {
1127 switch(i + (j * 32)) {
Madan Mohan Koyyalamudif8d3b3f2013-07-30 19:10:54 +05301128 case MCC: snprintf(pCapStr, sizeof("MCC"), "%s", "MCC");
1129 pCapStr += strlen("MCC");
1130 break;
1131 case P2P: snprintf(pCapStr, sizeof("P2P"), "%s", "P2P");
1132 pCapStr += strlen("P2P");
1133 break;
1134 case DOT11AC: snprintf(pCapStr, sizeof("DOT11AC") , "%s", "DOT11AC");
1135 pCapStr += strlen("DOT11AC");
1136 break;
1137 case SLM_SESSIONIZATION: snprintf(pCapStr, sizeof("SLM_SESSIONIZATION"), "%s", "SLM_SESSIONIZATION");
1138 pCapStr += strlen("SLM_SESSIONIZATION");
1139 break;
1140 case DOT11AC_OPMODE: snprintf(pCapStr, sizeof("DOT11AC_OPMODE"), "%s", "DOT11AC_OPMODE");
1141 pCapStr += strlen("DOT11AC_OPMODE");
1142 break;
1143 case SAP32STA: snprintf(pCapStr, sizeof("SAP32STA"), "%s", "SAP32STA");
1144 pCapStr += strlen("SAP32STA");
1145 break;
1146 case TDLS: snprintf(pCapStr, sizeof("TDLS"), "%s", "TDLS");
1147 pCapStr += strlen("TDLS");
1148 break;
1149 case P2P_GO_NOA_DECOUPLE_INIT_SCAN: snprintf(pCapStr, sizeof("P2P_GO_NOA_DECOUPLE_INIT_SCAN"), "%s", "P2P_GO_NOA_DECOUPLE_INIT_SCAN");
1150 pCapStr += strlen("P2P_GO_NOA_DECOUPLE_INIT_SCAN");
1151 break;
1152 case WLANACTIVE_OFFLOAD: snprintf(pCapStr, sizeof("WLANACTIVE_OFFLOAD"), "%s", "WLANACTIVE_OFFLOAD");
1153 pCapStr += strlen("WLANACTIVE_OFFLOAD");
1154 break;
1155 case BEACON_OFFLOAD: snprintf(pCapStr, sizeof("BEACON_OFFLOAD"), "%s","BEACON_OFFLOAD");
1156 pCapStr += strlen("BEACON_OFFLOAD");
1157 break;
1158 case SCAN_OFFLOAD: snprintf(pCapStr, sizeof("SCAN_OFFLOAD"), "%s", "SCAN_OFFLOAD");
1159 pCapStr += strlen("SCAN_OFFLOAD");
1160 break;
1161 case ROAM_OFFLOAD: snprintf(pCapStr, sizeof("ROAM_OFFLOAD"), "%s", "ROAM_OFFLOAD");
1162 pCapStr += strlen("ROAM_OFFLOAD");
1163 break;
1164 case BCN_MISS_OFFLOAD: snprintf(pCapStr, sizeof("BCN_MISS_OFFLOAD"), "%s", "BCN_MISS_OFFLOAD");
1165 pCapStr += strlen("BCN_MISS_OFFLOAD");
1166 break;
1167 case STA_POWERSAVE: snprintf(pCapStr, sizeof("STA_POWERSAVE"), "%s", "STA_POWERSAVE");
1168 pCapStr += strlen("STA_POWERSAVE");
1169 break;
1170 case AP_UAPSD: snprintf(pCapStr, sizeof("AP_UAPSD"), "%s", "AP_UAPSD");
1171 pCapStr += strlen("AP_UAPSD");
1172 break;
1173 case AP_DFS: snprintf(pCapStr, sizeof("AP_DFS"), "%s", "AP_DFS");
1174 pCapStr += strlen("AP_DFS");
1175 break;
1176 case BLOCKACK: snprintf(pCapStr, sizeof("BLOCKACK"), "%s", "BLOCKACK");
1177 pCapStr += strlen("BLOCKACK");
1178 break;
1179 case PHY_ERR: snprintf(pCapStr, sizeof("PHY_ERR"), "%s", "PHY_ERR");
1180 pCapStr += strlen("PHY_ERR");
1181 break;
1182 case BCN_FILTER: snprintf(pCapStr, sizeof("BCN_FILTER"), "%s", "BCN_FILTER");
1183 pCapStr += strlen("BCN_FILTER");
1184 break;
1185 case RTT: snprintf(pCapStr, sizeof("RTT"), "%s", "RTT");
1186 pCapStr += strlen("RTT");
1187 break;
1188 case RATECTRL: snprintf(pCapStr, sizeof("RATECTRL"), "%s", "RATECTRL");
1189 pCapStr += strlen("RATECTRL");
1190 break;
1191 case WOW: snprintf(pCapStr, sizeof("WOW"), "%s", "WOW");
1192 pCapStr += strlen("WOW");
1193 break;
1194 case WLAN_ROAM_SCAN_OFFLOAD: snprintf(pCapStr, sizeof("WLAN_ROAM_SCAN_OFFLOAD"), "%s", "WLAN_ROAM_SCAN_OFFLOAD");
1195 pCapStr += strlen("WLAN_ROAM_SCAN_OFFLOAD");
1196 break;
Kanchanapally, Vidyullathaf9426e52013-12-24 17:28:54 +05301197 case FW_IN_TX_PATH: snprintf(pCapStr, sizeof("FW_IN_TX_PATH"), "%s", "FW_IN_TX_PATH");
1198 pCapStr += strlen("FW_IN_TX_PATH");
1199 break;
Sandeep Puligilla60342762014-01-30 21:05:37 +05301200 case HT40_OBSS_SCAN:
1201 snprintf(pCapStr, sizeof("HT40_OBSS_SCAN"),
1202 "%s", "HT40_OBSS_SCAN");
1203 pCapStr += strlen("HT40_OBSS_SCAN");
1204 break;
Abhishek Singh08b60122014-02-04 18:05:23 +05301205 }
1206 *pCapStr++ = ',';
1207 *pCapStr++ = ' ';
1208 }
Madan Mohan Koyyalamudif8d3b3f2013-07-30 19:10:54 +05301209 }
1210 }
Madan Mohan Koyyalamudic2bf6172013-08-07 14:19:18 +05301211 pCapStr -= 2;
1212 *pCapStr = '\0';
Madan Mohan Koyyalamudif8d3b3f2013-07-30 19:10:54 +05301213 pCapStr = capStr;
Madan Mohan Koyyalamudic2bf6172013-08-07 14:19:18 +05301214 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR, "\t\t%s", pCapStr);
Madan Mohan Koyyalamudif8d3b3f2013-07-30 19:10:54 +05301215}
1216
1217/**
Jeff Johnson295189b2012-06-20 16:38:30 -07001218 @brief WDI_getHALStatusMsgString prints the HAL status in string.
Jeff Johnsone7245742012-09-05 17:12:55 -07001219
1220 @param halStatusId: HAL status Id
1221
1222 @see
Jeff Johnson295189b2012-06-20 16:38:30 -07001223 @return Result of the function call
1224*/
1225static char *WDI_getHALStatusMsgString(wpt_uint16 halStatusId)
1226{
1227 switch (halStatusId)
1228 {
1229 CASE_RETURN_STRING( eHAL_STATUS_SUCCESS );
1230 CASE_RETURN_STRING( PAL_STATUS_INVAL );
1231 CASE_RETURN_STRING( PAL_STATUS_ALREADY );
1232 CASE_RETURN_STRING( PAL_STATUS_EMPTY );
1233 CASE_RETURN_STRING( PAL_STATUS_FAILURE );
1234 CASE_RETURN_STRING( eHAL_STATUS_FAILURE );
1235 CASE_RETURN_STRING( eHAL_STATUS_INVALID_PARAMETER );
1236 CASE_RETURN_STRING( eHAL_STATUS_INVALID_STAIDX );
1237 CASE_RETURN_STRING( eHAL_STATUS_DPU_DESCRIPTOR_TABLE_FULL );
1238 CASE_RETURN_STRING( eHAL_STATUS_NO_INTERRUPTS );
1239 CASE_RETURN_STRING( eHAL_STATUS_INTERRUPT_PRESENT );
1240 CASE_RETURN_STRING( eHAL_STATUS_STA_TABLE_FULL );
1241 CASE_RETURN_STRING( eHAL_STATUS_DUPLICATE_STA );
1242 CASE_RETURN_STRING( eHAL_STATUS_BSSID_INVALID );
1243 CASE_RETURN_STRING( eHAL_STATUS_STA_INVALID );
1244 CASE_RETURN_STRING( eHAL_STATUS_DUPLICATE_BSSID );
1245 CASE_RETURN_STRING( eHAL_STATUS_INVALID_BSSIDX );
1246 CASE_RETURN_STRING( eHAL_STATUS_BSSID_TABLE_FULL );
1247 CASE_RETURN_STRING( eHAL_STATUS_INVALID_SIGNATURE );
1248 CASE_RETURN_STRING( eHAL_STATUS_INVALID_KEYID );
1249 CASE_RETURN_STRING( eHAL_STATUS_SET_CHAN_ALREADY_ON_REQUESTED_CHAN );
1250 CASE_RETURN_STRING( eHAL_STATUS_UMA_DESCRIPTOR_TABLE_FULL );
1251 CASE_RETURN_STRING( eHAL_STATUS_DPU_MICKEY_TABLE_FULL );
1252 CASE_RETURN_STRING( eHAL_STATUS_BA_RX_BUFFERS_FULL );
1253 CASE_RETURN_STRING( eHAL_STATUS_BA_RX_MAX_SESSIONS_REACHED );
1254 CASE_RETURN_STRING( eHAL_STATUS_BA_RX_INVALID_SESSION_ID );
1255 CASE_RETURN_STRING( eHAL_STATUS_TIMER_START_FAILED );
1256 CASE_RETURN_STRING( eHAL_STATUS_TIMER_STOP_FAILED );
1257 CASE_RETURN_STRING( eHAL_STATUS_FAILED_ALLOC );
1258 CASE_RETURN_STRING( eHAL_STATUS_NOTIFY_BSS_FAIL );
1259 CASE_RETURN_STRING( eHAL_STATUS_DEL_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO );
1260 CASE_RETURN_STRING( eHAL_STATUS_ADD_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO );
1261 CASE_RETURN_STRING( eHAL_STATUS_FW_SEND_MSG_FAILED );
1262 default:
1263 return "Unknown HAL status";
1264 }
1265}
1266
Jeff Johnsone7245742012-09-05 17:12:55 -07001267/*========================================================================
1268
Jeff Johnson295189b2012-06-20 16:38:30 -07001269 INITIALIZATION APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07001270
Jeff Johnson295189b2012-06-20 16:38:30 -07001271==========================================================================*/
1272
1273/**
1274 @brief WDI_Init is used to initialize the DAL.
Jeff Johnsone7245742012-09-05 17:12:55 -07001275
Jeff Johnson295189b2012-06-20 16:38:30 -07001276 DAL will allocate all the resources it needs. It will open PAL, it will also
1277 open both the data and the control transport which in their turn will open
Jeff Johnsone7245742012-09-05 17:12:55 -07001278 DXE/SMD or any other drivers that they need.
1279
Jeff Johnson295189b2012-06-20 16:38:30 -07001280 @param pOSContext: pointer to the OS context provided by the UMAC
1281 will be passed on to PAL on Open
1282 ppWDIGlobalCtx: output pointer of Global Context
1283 pWdiDevCapability: output pointer of device capability
1284
1285 @return Result of the function call
1286*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001287WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07001288WDI_Init
Jeff Johnsone7245742012-09-05 17:12:55 -07001289(
Jeff Johnson295189b2012-06-20 16:38:30 -07001290 void* pOSContext,
1291 void** ppWDIGlobalCtx,
1292 WDI_DeviceCapabilityType* pWdiDevCapability,
1293 unsigned int driverType
1294)
1295{
1296 wpt_uint8 i;
Jeff Johnsone7245742012-09-05 17:12:55 -07001297 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07001298 WDI_Status wdiStatus;
Jeff Johnsone7245742012-09-05 17:12:55 -07001299 WCTS_TransportCBsType wctsCBs;
Jeff Johnson295189b2012-06-20 16:38:30 -07001300 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
1301
1302 /*---------------------------------------------------------------------
1303 Sanity check
1304 ---------------------------------------------------------------------*/
1305 if (( NULL == ppWDIGlobalCtx ) || ( NULL == pWdiDevCapability ))
1306 {
1307 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1308 "Invalid input parameters in WDI_Init");
1309
Jeff Johnsone7245742012-09-05 17:12:55 -07001310 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07001311 }
1312
1313 /*---------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001314 Check to see if the module has already been initialized or not
Jeff Johnson295189b2012-06-20 16:38:30 -07001315 ---------------------------------------------------------------------*/
1316 if ( eWLAN_PAL_FALSE != gWDIInitialized )
1317 {
1318 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
1319 "WDI module already initialized - return");
1320
Jeff Johnsone7245742012-09-05 17:12:55 -07001321 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07001322 }
1323
1324 /*Module is now initialized - this flag is to ensure the fact that multiple
1325 init will not happen on WDI
1326 !! - potential race does exist because read and set are not atomic,
1327 however an atomic operation would be closely here - reanalyze if necessary*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001328 gWDIInitialized = eWLAN_PAL_TRUE;
Jeff Johnson295189b2012-06-20 16:38:30 -07001329
1330 /*Setup the control block */
1331 WDI_CleanCB(&gWDICb);
Jeff Johnsone7245742012-09-05 17:12:55 -07001332 gWDICb.pOSContext = pOSContext;
Jeff Johnson295189b2012-06-20 16:38:30 -07001333
1334 /*Setup the STA Table*/
1335 wdiStatus = WDI_STATableInit(&gWDICb);
1336 if ( WDI_STATUS_SUCCESS != wdiStatus )
1337 {
1338 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1339 "%s: Failure while initializing STA Table, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001340 __func__, wdiStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001341 goto fail_STATableInit;
1342 }
1343
1344 /*------------------------------------------------------------------------
1345 Open the PAL
1346 ------------------------------------------------------------------------*/
1347 wptStatus = wpalOpen(&gWDICb.pPALContext, pOSContext);
1348 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1349 {
1350 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1351 "%s: Failed to open PAL, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001352 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001353 goto fail_wpalOpen;
1354 }
1355
1356 /*Initialize main synchro mutex - it will be used to ensure integrity of
1357 the main WDI Control Block*/
1358 wptStatus = wpalMutexInit(&gWDICb.wptMutex);
1359 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1360 {
1361 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1362 "%s: Failed to init mutex, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001363 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001364 goto fail_mutex;
1365 }
1366
1367 /*Initialize the response timer - it will be used to time all messages
1368 expected as response from device*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001369 wptStatus = wpalTimerInit( &gWDICb.wptResponseTimer,
1370 WDI_ResponseTimerCB,
Jeff Johnson295189b2012-06-20 16:38:30 -07001371 &gWDICb);
1372 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1373 {
1374 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1375 "%s: Failed to init response timer, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001376 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001377 goto fail_timer;
1378 }
1379
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -07001380 wptStatus = wpalTimerInit( &gWDICb.ssrTimer,
1381 WDI_SsrTimerCB,
1382 &gWDICb);
1383 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1384 {
1385 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1386 "%s: Failed to init SSR timer, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001387 __func__, wptStatus);
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -07001388 goto fail_timer2;
1389 }
Jeff Johnson295189b2012-06-20 16:38:30 -07001390 /* Initialize the WDI Pending Request Queue*/
1391 wptStatus = wpal_list_init(&(gWDICb.wptPendingQueue));
1392 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1393 {
1394 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1395 "%s: Failed to init pending request queue, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001396 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001397 goto fail_pend_queue;
1398 }
1399
1400 /*Init WDI Pending Assoc Id Queue */
1401 wptStatus = wpal_list_init(&(gWDICb.wptPendingAssocSessionIdQueue));
1402 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1403 {
1404 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1405 "%s: Failed to init assoc session queue, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001406 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001407 goto fail_assoc_queue;
1408 }
1409
1410 /*Initialize the BSS sessions pending Queue */
1411 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
1412 {
1413 wptStatus = wpal_list_init(&(gWDICb.aBSSSessions[i].wptPendingQueue));
1414 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1415 {
1416 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1417 "%s: Failed to init BSS %d pending queue, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001418 __func__, i, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001419 goto fail_bss_queue;
1420 }
1421 }
1422
1423 /*Indicate the control block is sufficiently initialized for callbacks*/
1424 gWDICb.magic = WDI_CONTROL_BLOCK_MAGIC;
1425
1426 /*------------------------------------------------------------------------
1427 Initialize the Data Path Utility Module
1428 ------------------------------------------------------------------------*/
1429 wdiStatus = WDI_DP_UtilsInit(&gWDICb);
1430 if ( WDI_STATUS_SUCCESS != wdiStatus )
1431 {
1432 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1433 "%s: Failed to initialize the DP Util Module, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001434 __func__, wdiStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001435 goto fail_dp_util_init;
1436 }
1437
1438 /* Init Set power state event */
1439 wptStatus = wpalEventInit(&gWDICb.setPowerStateEvent);
Jeff Johnsone7245742012-09-05 17:12:55 -07001440 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -07001441 {
1442 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1443 "%s: Failed to initialize power state event, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001444 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001445 goto fail_power_event;
1446 }
1447
1448 /* Init WCTS action event */
1449 wptStatus = wpalEventInit(&gWDICb.wctsActionEvent);
Jeff Johnsone7245742012-09-05 17:12:55 -07001450 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -07001451 {
1452 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1453 "%s: Failed to initialize WCTS action event, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001454 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001455 goto fail_wcts_event;
1456 }
1457
1458 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001459 Open the Transport Services for Control and Data
Jeff Johnson295189b2012-06-20 16:38:30 -07001460 ------------------------------------------------------------------------*/
1461 wctsCBs.wctsNotifyCB = WDI_NotifyMsgCTSCB;
1462 wctsCBs.wctsNotifyCBData = &gWDICb;
Jeff Johnsone7245742012-09-05 17:12:55 -07001463 wctsCBs.wctsRxMsgCB = WDI_RXMsgCTSCB;
Jeff Johnson295189b2012-06-20 16:38:30 -07001464 wctsCBs.wctsRxMsgCBData = &gWDICb;
1465
Jeff Johnsone7245742012-09-05 17:12:55 -07001466 gWDICb.bCTOpened = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -07001467 gWDICb.wctsHandle = WCTS_OpenTransport( szTransportChName ,
Jeff Johnsone7245742012-09-05 17:12:55 -07001468 WDI_CT_CHANNEL_SIZE,
1469 &wctsCBs );
Jeff Johnson295189b2012-06-20 16:38:30 -07001470
1471 if ( NULL == gWDICb.wctsHandle )
1472 {
1473 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001474 "%s: Failed to open WCTS transport", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001475 goto fail_wcts_open;
1476 }
1477
1478 gWDICb.driverMode = (tDriverType)driverType;
1479 /* FTM mode not need to open Transport Driver */
1480 if(eDRIVER_TYPE_MFG != (tDriverType)driverType)
Jeff Johnsone7245742012-09-05 17:12:55 -07001481 {
Jeff Johnson295189b2012-06-20 16:38:30 -07001482 /*------------------------------------------------------------------------
1483 Open the Data Transport
1484 ------------------------------------------------------------------------*/
1485 if(eWLAN_PAL_STATUS_SUCCESS != WDTS_openTransport(&gWDICb))
1486 {
1487 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001488 "%s: Failed to open the DT Transport", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001489 goto fail_wdts_open;
1490 }
1491 }
1492
1493 /*The WDI is initialized - set state to init */
Jeff Johnsone7245742012-09-05 17:12:55 -07001494 gWDICb.uGlobalState = WDI_INIT_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07001495
1496 /*Send the context as a ptr to the global WDI Control Block*/
1497 *ppWDIGlobalCtx = &gWDICb;
1498
1499 /*Fill in the device capabilities*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001500 pWdiDevCapability->bFrameXtlSupported = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -07001501 pWdiDevCapability->ucMaxSTASupported = gWDICb.ucMaxStations;
1502 pWdiDevCapability->ucMaxBSSSupported = gWDICb.ucMaxBssids;
1503 return WDI_STATUS_SUCCESS;
1504
1505 /* ERROR handlers
1506 Undo everything that completed successfully */
1507
1508 fail_wdts_open:
1509 {
1510 wpt_status eventStatus;
1511
1512 /* Closing WCTS in this scenario is tricky since it has to close
1513 the SMD channel and then we get notified asynchronously when
1514 the channel has been closed. So we take some of the logic from
1515 the "normal" close procedure in WDI_Close()
1516 */
1517
1518 eventStatus = wpalEventReset(&gWDICb.wctsActionEvent);
Jeff Johnsone7245742012-09-05 17:12:55 -07001519 if ( eWLAN_PAL_STATUS_SUCCESS != eventStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -07001520 {
1521 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001522 "%s: Failed to reset WCTS action event", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001523 }
1524
1525 WCTS_CloseTransport(gWDICb.wctsHandle);
1526
1527 /* Wait for WCTS to close the control transport. If we were able
1528 to reset the event flag, then we'll wait for the event,
1529 otherwise we'll wait for a maximum amount of time required for
1530 the channel to be closed */
1531 if ( eWLAN_PAL_STATUS_SUCCESS == eventStatus )
1532 {
Jeff Johnsone7245742012-09-05 17:12:55 -07001533 eventStatus = wpalEventWait(&gWDICb.wctsActionEvent,
Jeff Johnson295189b2012-06-20 16:38:30 -07001534 WDI_WCTS_ACTION_TIMEOUT);
1535 if ( eWLAN_PAL_STATUS_SUCCESS != eventStatus )
1536 {
1537 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001538 "%s: Failed to wait on WCTS action event", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001539 }
1540 }
1541 else
1542 {
1543 wpalSleep(WDI_WCTS_ACTION_TIMEOUT);
1544 }
1545 }
1546 fail_wcts_open:
1547 wpalEventDelete(&gWDICb.wctsActionEvent);
1548 fail_wcts_event:
1549 wpalEventDelete(&gWDICb.setPowerStateEvent);
1550 fail_power_event:
1551 WDI_DP_UtilsExit(&gWDICb);
1552 fail_dp_util_init:
1553 gWDICb.magic = 0;
1554 fail_bss_queue:
1555 /* entries 0 thru i-1 were successfully initialized */
1556 while (0 < i)
1557 {
1558 i--;
1559 wpal_list_destroy(&(gWDICb.aBSSSessions[i].wptPendingQueue));
1560 }
1561 wpal_list_destroy(&(gWDICb.wptPendingAssocSessionIdQueue));
1562 fail_assoc_queue:
1563 wpal_list_destroy(&(gWDICb.wptPendingQueue));
1564 fail_pend_queue:
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -07001565 wpalTimerDelete(&gWDICb.ssrTimer);
1566 fail_timer2:
Jeff Johnson295189b2012-06-20 16:38:30 -07001567 wpalTimerDelete(&gWDICb.wptResponseTimer);
1568 fail_timer:
1569 wpalMutexDelete(&gWDICb.wptMutex);
1570 fail_mutex:
1571 wpalClose(gWDICb.pPALContext);
1572 fail_wpalOpen:
1573 WDI_STATableClose(&gWDICb);
1574 fail_STATableInit:
1575 gWDIInitialized = eWLAN_PAL_FALSE;
1576
1577 return WDI_STATUS_E_FAILURE;
1578
1579}/*WDI_Init*/;
1580
1581/**
1582 @brief WDI_Start will be called when the upper MAC is ready to
1583 commence operation with the WLAN Device. Upon the call
1584 of this API the WLAN DAL will pack and send a HAL Start
1585 message to the lower RIVA sub-system if the SMD channel
1586 has been fully opened and the RIVA subsystem is up.
1587
1588 If the RIVA sub-system is not yet up and running DAL
1589 will queue the request for Open and will wait for the
1590 SMD notification before attempting to send down the
Jeff Johnsone7245742012-09-05 17:12:55 -07001591 message to HAL.
Jeff Johnson295189b2012-06-20 16:38:30 -07001592
1593 WDI_Init must have been called.
1594
Jeff Johnsone7245742012-09-05 17:12:55 -07001595 @param wdiStartParams: the start parameters as specified by
Jeff Johnson295189b2012-06-20 16:38:30 -07001596 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07001597
Jeff Johnson295189b2012-06-20 16:38:30 -07001598 wdiStartRspCb: callback for passing back the response of
1599 the start operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07001600
Jeff Johnson295189b2012-06-20 16:38:30 -07001601 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07001602 callback
1603
Jeff Johnson295189b2012-06-20 16:38:30 -07001604 @see WDI_Start
1605 @return Result of the function call
1606*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001607WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07001608WDI_Start
1609(
1610 WDI_StartReqParamsType* pwdiStartParams,
1611 WDI_StartRspCb wdiStartRspCb,
1612 void* pUserData
1613)
1614{
1615 WDI_EventInfoType wdiEventData;
1616 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
1617
1618 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001619 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07001620 ------------------------------------------------------------------------*/
1621 if ( eWLAN_PAL_FALSE == gWDIInitialized )
1622 {
1623 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1624 "WDI API call before module is initialized - Fail request");
1625
Jeff Johnsone7245742012-09-05 17:12:55 -07001626 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07001627 }
1628
1629 /*------------------------------------------------------------------------
1630 Fill in Event data and post to the Main FSM
1631 ------------------------------------------------------------------------*/
1632 wdiEventData.wdiRequest = WDI_START_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07001633 wdiEventData.pEventData = pwdiStartParams;
1634 wdiEventData.uEventDataSize = sizeof(*pwdiStartParams);
1635 wdiEventData.pCBfnc = wdiStartRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07001636 wdiEventData.pUserData = pUserData;
1637
1638 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
1639
1640}/*WDI_Start*/
1641
1642/**
1643 @brief WDI_Stop will be called when the upper MAC is ready to
1644 stop any operation with the WLAN Device. Upon the call
1645 of this API the WLAN DAL will pack and send a HAL Stop
1646 message to the lower RIVA sub-system if the DAL Core is
1647 in started state.
1648
1649 In state BUSY this request will be queued.
Jeff Johnsone7245742012-09-05 17:12:55 -07001650
1651 Request will not be accepted in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07001652
1653 WDI_Start must have been called.
1654
Jeff Johnsone7245742012-09-05 17:12:55 -07001655 @param wdiStopParams: the stop parameters as specified by
Jeff Johnson295189b2012-06-20 16:38:30 -07001656 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07001657
Jeff Johnson295189b2012-06-20 16:38:30 -07001658 wdiStopRspCb: callback for passing back the response of
1659 the stop operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07001660
Jeff Johnson295189b2012-06-20 16:38:30 -07001661 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07001662 callback
1663
Jeff Johnson295189b2012-06-20 16:38:30 -07001664 @see WDI_Start
1665 @return Result of the function call
1666*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001667WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07001668WDI_Stop
1669(
1670 WDI_StopReqParamsType* pwdiStopParams,
1671 WDI_StopRspCb wdiStopRspCb,
1672 void* pUserData
1673)
1674{
1675 WDI_EventInfoType wdiEventData;
Jeff Johnson43971f52012-07-17 12:26:56 -07001676 WDI_ControlBlockType* pWDICtx = &gWDICb;
Jeff Johnson295189b2012-06-20 16:38:30 -07001677 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
1678
1679 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001680 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07001681 ------------------------------------------------------------------------*/
1682 if ( eWLAN_PAL_FALSE == gWDIInitialized )
1683 {
1684 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1685 "WDI API call before module is initialized - Fail request");
1686
Jeff Johnsone7245742012-09-05 17:12:55 -07001687 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07001688 }
1689
Jeff Johnson43971f52012-07-17 12:26:56 -07001690 /*Access to the global state must be locked before cleaning */
1691 wpalMutexAcquire(&pWDICtx->wptMutex);
1692
1693 /*Clear all pending request*/
1694 WDI_ClearPendingRequests(pWDICtx);
1695
1696 /*We have completed cleaning unlock now*/
1697 wpalMutexRelease(&pWDICtx->wptMutex);
1698
Jeff Johnson295189b2012-06-20 16:38:30 -07001699 /* Free the global variables */
1700 wpalMemoryFree(gpHostWlanFeatCaps);
1701 wpalMemoryFree(gpFwWlanFeatCaps);
Madan Mohan Koyyalamudi3352adb2012-09-28 14:57:24 -07001702 gpHostWlanFeatCaps = NULL;
1703 gpFwWlanFeatCaps = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07001704
1705 /*------------------------------------------------------------------------
1706 Fill in Event data and post to the Main FSM
1707 ------------------------------------------------------------------------*/
1708 wdiEventData.wdiRequest = WDI_STOP_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07001709 wdiEventData.pEventData = pwdiStopParams;
1710 wdiEventData.uEventDataSize = sizeof(*pwdiStopParams);
1711 wdiEventData.pCBfnc = wdiStopRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07001712 wdiEventData.pUserData = pUserData;
1713
1714 return WDI_PostMainEvent(&gWDICb, WDI_STOP_EVENT, &wdiEventData);
1715
1716}/*WDI_Stop*/
1717
1718
1719
1720/**
Jeff Johnsone7245742012-09-05 17:12:55 -07001721 @brief WDI_Close will be called when the upper MAC no longer
Jeff Johnson295189b2012-06-20 16:38:30 -07001722 needs to interact with DAL. DAL will free its control
1723 block.
Jeff Johnsone7245742012-09-05 17:12:55 -07001724
1725 It is only accepted in state STOPPED.
Jeff Johnson295189b2012-06-20 16:38:30 -07001726
1727 WDI_Stop must have been called.
1728
1729 @param none
Jeff Johnsone7245742012-09-05 17:12:55 -07001730
Jeff Johnson295189b2012-06-20 16:38:30 -07001731 @see WDI_Stop
1732 @return Result of the function call
1733*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001734WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07001735WDI_Close
1736(
1737 void
1738)
1739{
1740 wpt_uint8 i;
1741 WDI_EventInfoType wdiEventData;
1742 wpt_status wptStatus;
1743 wpt_status eventStatus;
1744 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
1745
1746 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001747 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07001748 ------------------------------------------------------------------------*/
1749 if ( eWLAN_PAL_FALSE == gWDIInitialized )
1750 {
1751 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1752 "WDI API call before module is initialized - Fail request");
1753
Jeff Johnsone7245742012-09-05 17:12:55 -07001754 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07001755 }
1756
1757 /*Reset WCTS action event prior to posting the WDI_CLOSE_REQ
1758 (the control transport will be closed by the FSM and we'll want
1759 to wait until that completes)*/
1760 eventStatus = wpalEventReset(&gWDICb.wctsActionEvent);
Jeff Johnsone7245742012-09-05 17:12:55 -07001761 if ( eWLAN_PAL_STATUS_SUCCESS != eventStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -07001762 {
1763 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001764 "%s: Failed to reset WCTS action event", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001765 /* fall through and try to finish closing via the FSM */
1766 }
1767
1768 /*------------------------------------------------------------------------
1769 Fill in Event data and post to the Main FSM
1770 ------------------------------------------------------------------------*/
1771 wdiEventData.wdiRequest = WDI_CLOSE_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07001772 wdiEventData.pEventData = NULL;
1773 wdiEventData.uEventDataSize = 0;
1774 wdiEventData.pCBfnc = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07001775 wdiEventData.pUserData = NULL;
1776
1777 gWDIInitialized = eWLAN_PAL_FALSE;
1778
1779 wptStatus = WDI_PostMainEvent(&gWDICb, WDI_CLOSE_EVENT, &wdiEventData);
1780
1781 /*Wait for WCTS to close the control transport
1782 (but only if we were able to reset the event flag*/
1783 if ( eWLAN_PAL_STATUS_SUCCESS == eventStatus )
1784 {
Jeff Johnsone7245742012-09-05 17:12:55 -07001785 eventStatus = wpalEventWait(&gWDICb.wctsActionEvent,
Jeff Johnson295189b2012-06-20 16:38:30 -07001786 WDI_WCTS_ACTION_TIMEOUT);
1787 if ( eWLAN_PAL_STATUS_SUCCESS != eventStatus )
1788 {
1789 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001790 "%s: Failed to wait on WCTS action event", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001791 }
1792 }
1793
1794 /* Destroy the WCTS action event */
1795 wptStatus = wpalEventDelete(&gWDICb.wctsActionEvent);
1796 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1797 {
1798 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
1799 "WDI Close failed to destroy an event");
Jeff Johnsone7245742012-09-05 17:12:55 -07001800 WDI_ASSERT(0);
Jeff Johnson295189b2012-06-20 16:38:30 -07001801 }
1802
1803 /* Destroy the Set Power State event */
1804 wptStatus = wpalEventDelete(&gWDICb.setPowerStateEvent);
1805 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1806 {
1807 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
1808 "WDI Close failed to destroy an event");
1809
Jeff Johnsone7245742012-09-05 17:12:55 -07001810 WDI_ASSERT(0);
Jeff Johnson295189b2012-06-20 16:38:30 -07001811 }
1812
1813 /*------------------------------------------------------------------------
1814 Closes the Data Path Utility Module
1815 ------------------------------------------------------------------------*/
1816 if ( WDI_STATUS_SUCCESS != WDI_DP_UtilsExit(&gWDICb))
1817 {
1818 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
1819 "WDI Init failed to close the DP Util Module");
1820
Jeff Johnsone7245742012-09-05 17:12:55 -07001821 WDI_ASSERT(0);
Jeff Johnson295189b2012-06-20 16:38:30 -07001822 }
1823
1824 /*destroy the BSS sessions pending Queue */
1825 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
1826 {
1827 wpal_list_destroy(&(gWDICb.aBSSSessions[i].wptPendingQueue));
1828 }
1829
1830 /* destroy the WDI Pending Assoc Id Request Queue*/
1831 wpal_list_destroy(&(gWDICb.wptPendingAssocSessionIdQueue));
1832
1833 /* destroy the WDI Pending Request Queue*/
1834 wpal_list_destroy(&(gWDICb.wptPendingQueue));
Jeff Johnsone7245742012-09-05 17:12:55 -07001835
Jeff Johnson295189b2012-06-20 16:38:30 -07001836 /*destroy the response timer */
1837 wptStatus = wpalTimerDelete( &gWDICb.wptResponseTimer);
1838
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -07001839 /*destroy the SSR timer */
1840 wptStatus = wpalTimerDelete( &gWDICb.ssrTimer);
1841
Jeff Johnson295189b2012-06-20 16:38:30 -07001842 /*invalidate the main synchro mutex */
1843 wptStatus = wpalMutexDelete(&gWDICb.wptMutex);
1844 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1845 {
1846 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1847 "Failed to delete mutex %d", wptStatus);
1848 WDI_ASSERT(0);
1849 }
1850
1851 /*Clear control block. note that this will clear the "magic"
1852 which will inhibit all asynchronous callbacks*/
1853 WDI_CleanCB(&gWDICb);
1854
1855 return wptStatus;
1856
1857}/*WDI_Close*/
1858
1859/**
1860 @brief WDI_Shutdown will be called during 'SSR shutdown' operation.
1861 This will do most of the WDI stop & close
1862 operations without doing any handshake with Riva
1863
1864 This will also make sure that the control transport
1865 will NOT be closed.
1866
1867 This request will not be queued.
1868
1869
1870 WDI_Start must have been called.
1871
1872 @param closeTransport: Close control channel if this is set
1873
1874 @return Result of the function call
1875*/
1876WDI_Status
1877WDI_Shutdown
1878(
1879 wpt_boolean closeTransport
1880)
1881{
1882 WDI_EventInfoType wdiEventData;
1883 wpt_status wptStatus;
1884 int i = 0;
1885 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
1886
1887 /*------------------------------------------------------------------------
1888 Sanity Check
1889 ------------------------------------------------------------------------*/
1890 if ( eWLAN_PAL_FALSE == gWDIInitialized )
1891 {
1892 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1893 "WDI API call before module is initialized - Fail request");
1894
1895 return WDI_STATUS_E_NOT_ALLOWED;
1896 }
1897
1898 /*------------------------------------------------------------------------
1899 Fill in Event data and post to the Main FSM
1900 ------------------------------------------------------------------------*/
1901 wdiEventData.wdiRequest = WDI_SHUTDOWN_REQ;
1902 wdiEventData.pEventData = NULL;
1903 wdiEventData.uEventDataSize = 0;
1904
1905 /* Shutdown will not be queued, if the state is busy timer will be
1906 * stopped & this message will be processed.*/
1907 wptStatus = WDI_PostMainEvent(&gWDICb, WDI_SHUTDOWN_EVENT, &wdiEventData);
1908 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1909 {
1910 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001911 "%s: Failed to process shutdown event", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001912 }
1913 /* Destroy the Set Power State event */
1914 wptStatus = wpalEventDelete(&gWDICb.setPowerStateEvent);
1915 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1916 {
1917 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
1918 "WDI Close failed to destroy an event");
1919
1920 WDI_ASSERT(0);
1921 }
1922 /*------------------------------------------------------------------------
1923 Closes the Data Path Utility Module
1924 ------------------------------------------------------------------------*/
1925 if ( WDI_STATUS_SUCCESS != WDI_DP_UtilsExit(&gWDICb))
1926 {
1927 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
1928 "WDI Init failed to close the DP Util Module");
1929
1930 WDI_ASSERT(0);
1931 }
1932 if ( closeTransport )
1933 {
1934 /* Close control transport, called from module unload */
1935 WCTS_CloseTransport(gWDICb.wctsHandle);
1936 }
Madan Mohan Koyyalamudifab2a7e2012-09-28 15:20:00 -07001937 else
1938 {
Madan Mohan Koyyalamudi8b7f1e62012-10-05 14:56:51 -07001939 /* Riva is crashed then SMD is already closed so cleaning all
Madan Mohan Koyyalamudifab2a7e2012-09-28 15:20:00 -07001940 the pending messages in the transport queue */
1941 WCTS_ClearPendingQueue(gWDICb.wctsHandle);
1942 }
Jeff Johnson295189b2012-06-20 16:38:30 -07001943 /*destroy the BSS sessions pending Queue */
1944 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
1945 {
1946 wpal_list_destroy(&(gWDICb.aBSSSessions[i].wptPendingQueue));
1947 }
1948
1949 /* destroy the WDI Pending Assoc Id Request Queue*/
1950 wpal_list_destroy(&(gWDICb.wptPendingAssocSessionIdQueue));
1951 /* destroy the WDI Pending Request Queue*/
1952 wpal_list_destroy(&(gWDICb.wptPendingQueue));
1953 /*destroy the response timer */
1954 wptStatus = wpalTimerDelete( &gWDICb.wptResponseTimer);
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -07001955 /*destroy the SSR timer */
1956 wptStatus = wpalTimerDelete( &gWDICb.ssrTimer);
Jeff Johnson295189b2012-06-20 16:38:30 -07001957
1958 /*invalidate the main synchro mutex */
1959 wptStatus = wpalMutexDelete(&gWDICb.wptMutex);
1960 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1961 {
1962 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001963 "%s: Failed to delete mutex %d", __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001964 WDI_ASSERT(0);
1965 }
Madan Mohan Koyyalamudi3513bf52012-09-18 17:35:53 -07001966 /* Free the global variables */
1967 wpalMemoryFree(gpHostWlanFeatCaps);
1968 wpalMemoryFree(gpFwWlanFeatCaps);
Madan Mohan Koyyalamudi3352adb2012-09-28 14:57:24 -07001969 gpHostWlanFeatCaps = NULL;
1970 gpFwWlanFeatCaps = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07001971 /*Clear control block. note that this will clear the "magic"
1972 which will inhibit all asynchronous callbacks*/
1973 WDI_CleanCB(&gWDICb);
1974 return wptStatus;
1975
1976}/*WDI_Shutdown*/
1977
1978
Jeff Johnsone7245742012-09-05 17:12:55 -07001979/*========================================================================
1980
Jeff Johnson295189b2012-06-20 16:38:30 -07001981 SCAN APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07001982
Jeff Johnson295189b2012-06-20 16:38:30 -07001983==========================================================================*/
1984
1985/**
Jeff Johnsone7245742012-09-05 17:12:55 -07001986 @brief WDI_InitScanReq will be called when the upper MAC wants
Jeff Johnson295189b2012-06-20 16:38:30 -07001987 the WLAN Device to get ready for a scan procedure. Upon
1988 the call of this API the WLAN DAL will pack and send a
1989 HAL Init Scan request message to the lower RIVA
1990 sub-system if DAL is in state STARTED.
1991
1992 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07001993 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07001994
1995 WDI_Start must have been called.
1996
1997 @param wdiInitScanParams: the init scan parameters as specified
1998 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07001999
Jeff Johnson295189b2012-06-20 16:38:30 -07002000 wdiInitScanRspCb: callback for passing back the response
2001 of the init scan operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002002
Jeff Johnson295189b2012-06-20 16:38:30 -07002003 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002004 callback
2005
Jeff Johnson295189b2012-06-20 16:38:30 -07002006 @see WDI_Start
2007 @return Result of the function call
2008*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002009WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002010WDI_InitScanReq
2011(
2012 WDI_InitScanReqParamsType* pwdiInitScanParams,
2013 WDI_InitScanRspCb wdiInitScanRspCb,
2014 void* pUserData
2015)
2016{
2017 WDI_EventInfoType wdiEventData;
2018 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2019
2020 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002021 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002022 ------------------------------------------------------------------------*/
2023 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2024 {
2025 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2026 "WDI API call before module is initialized - Fail request");
2027
Jeff Johnsone7245742012-09-05 17:12:55 -07002028 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002029 }
2030
2031 /*------------------------------------------------------------------------
2032 Fill in Event data and post to the Main FSM
2033 ------------------------------------------------------------------------*/
2034 wdiEventData.wdiRequest = WDI_INIT_SCAN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002035 wdiEventData.pEventData = pwdiInitScanParams;
2036 wdiEventData.uEventDataSize = sizeof(*pwdiInitScanParams);
2037 wdiEventData.pCBfnc = wdiInitScanRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002038 wdiEventData.pUserData = pUserData;
2039
2040 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2041
2042}/*WDI_InitScanReq*/
2043
2044/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002045 @brief WDI_StartScanReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07002046 wishes to change the Scan channel on the WLAN Device.
2047 Upon the call of this API the WLAN DAL will pack and
2048 send a HAL Start Scan request message to the lower RIVA
2049 sub-system if DAL is in state STARTED.
2050
2051 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002052 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002053
2054 WDI_InitScanReq must have been called.
2055
Jeff Johnsone7245742012-09-05 17:12:55 -07002056 @param wdiStartScanParams: the start scan parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002057 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002058
Jeff Johnson295189b2012-06-20 16:38:30 -07002059 wdiStartScanRspCb: callback for passing back the
2060 response of the start scan operation received from the
2061 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002062
Jeff Johnson295189b2012-06-20 16:38:30 -07002063 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002064 callback
2065
Jeff Johnson295189b2012-06-20 16:38:30 -07002066 @see WDI_InitScanReq
2067 @return Result of the function call
2068*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002069WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002070WDI_StartScanReq
2071(
2072 WDI_StartScanReqParamsType* pwdiStartScanParams,
2073 WDI_StartScanRspCb wdiStartScanRspCb,
2074 void* pUserData
2075)
2076{
2077 WDI_EventInfoType wdiEventData;
2078 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2079
2080 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002081 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002082 ------------------------------------------------------------------------*/
2083 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2084 {
2085 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2086 "WDI API call before module is initialized - Fail request");
2087
Jeff Johnsone7245742012-09-05 17:12:55 -07002088 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002089 }
2090
2091 /*------------------------------------------------------------------------
2092 Fill in Event data and post to the Main FSM
2093 ------------------------------------------------------------------------*/
2094 wdiEventData.wdiRequest = WDI_START_SCAN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002095 wdiEventData.pEventData = pwdiStartScanParams;
2096 wdiEventData.uEventDataSize = sizeof(*pwdiStartScanParams);
2097 wdiEventData.pCBfnc = wdiStartScanRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002098 wdiEventData.pUserData = pUserData;
2099
2100 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2101
2102}/*WDI_StartScanReq*/
2103
2104
2105/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002106 @brief WDI_EndScanReq will be called when the upper MAC is
Jeff Johnson295189b2012-06-20 16:38:30 -07002107 wants to end scanning for a particular channel that it
2108 had set before by calling Scan Start on the WLAN Device.
2109 Upon the call of this API the WLAN DAL will pack and
2110 send a HAL End Scan request message to the lower RIVA
2111 sub-system if DAL is in state STARTED.
2112
2113 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002114 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002115
2116 WDI_StartScanReq must have been called.
2117
Jeff Johnsone7245742012-09-05 17:12:55 -07002118 @param wdiEndScanParams: the end scan parameters as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07002119 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002120
Jeff Johnson295189b2012-06-20 16:38:30 -07002121 wdiEndScanRspCb: callback for passing back the response
2122 of the end scan operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002123
Jeff Johnson295189b2012-06-20 16:38:30 -07002124 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002125 callback
2126
Jeff Johnson295189b2012-06-20 16:38:30 -07002127 @see WDI_StartScanReq
2128 @return Result of the function call
2129*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002130WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002131WDI_EndScanReq
2132(
2133 WDI_EndScanReqParamsType* pwdiEndScanParams,
2134 WDI_EndScanRspCb wdiEndScanRspCb,
2135 void* pUserData
2136)
2137{
2138 WDI_EventInfoType wdiEventData;
2139 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2140
2141 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002142 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002143 ------------------------------------------------------------------------*/
2144 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2145 {
2146 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2147 "WDI API call before module is initialized - Fail request");
2148
Jeff Johnsone7245742012-09-05 17:12:55 -07002149 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002150 }
2151
2152 /*------------------------------------------------------------------------
2153 Fill in Event data and post to the Main FSM
2154 ------------------------------------------------------------------------*/
2155 wdiEventData.wdiRequest = WDI_END_SCAN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002156 wdiEventData.pEventData = pwdiEndScanParams;
2157 wdiEventData.uEventDataSize = sizeof(*pwdiEndScanParams);
2158 wdiEventData.pCBfnc = wdiEndScanRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002159 wdiEventData.pUserData = pUserData;
2160
2161 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2162
2163}/*WDI_EndScanReq*/
2164
2165
2166/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002167 @brief WDI_FinishScanReq will be called when the upper MAC has
Jeff Johnson295189b2012-06-20 16:38:30 -07002168 completed the scan process on the WLAN Device. Upon the
2169 call of this API the WLAN DAL will pack and send a HAL
2170 Finish Scan Request request message to the lower RIVA
2171 sub-system if DAL is in state STARTED.
2172
2173 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002174 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002175
2176 WDI_InitScanReq must have been called.
2177
Jeff Johnsone7245742012-09-05 17:12:55 -07002178 @param wdiFinishScanParams: the finish scan parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002179 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002180
Jeff Johnson295189b2012-06-20 16:38:30 -07002181 wdiFinishScanRspCb: callback for passing back the
2182 response of the finish scan operation received from the
2183 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002184
Jeff Johnson295189b2012-06-20 16:38:30 -07002185 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002186 callback
2187
Jeff Johnson295189b2012-06-20 16:38:30 -07002188 @see WDI_InitScanReq
2189 @return Result of the function call
2190*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002191WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002192WDI_FinishScanReq
2193(
2194 WDI_FinishScanReqParamsType* pwdiFinishScanParams,
2195 WDI_FinishScanRspCb wdiFinishScanRspCb,
2196 void* pUserData
2197)
2198{
2199 WDI_EventInfoType wdiEventData;
2200 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2201
2202 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002203 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002204 ------------------------------------------------------------------------*/
2205 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2206 {
2207 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2208 "WDI API call before module is initialized - Fail request");
2209
Jeff Johnsone7245742012-09-05 17:12:55 -07002210 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002211 }
2212
2213 /*------------------------------------------------------------------------
2214 Fill in Event data and post to the Main FSM
2215 ------------------------------------------------------------------------*/
2216 wdiEventData.wdiRequest = WDI_FINISH_SCAN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002217 wdiEventData.pEventData = pwdiFinishScanParams;
2218 wdiEventData.uEventDataSize = sizeof(*pwdiFinishScanParams);
2219 wdiEventData.pCBfnc = wdiFinishScanRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002220 wdiEventData.pUserData = pUserData;
2221
2222 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2223
2224}/*WDI_FinishScanReq*/
2225
Jeff Johnsone7245742012-09-05 17:12:55 -07002226/*========================================================================
2227
Jeff Johnson295189b2012-06-20 16:38:30 -07002228 ASSOCIATION APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07002229
Jeff Johnson295189b2012-06-20 16:38:30 -07002230==========================================================================*/
2231
2232/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002233 @brief WDI_JoinReq will be called when the upper MAC is ready
Jeff Johnson295189b2012-06-20 16:38:30 -07002234 to start an association procedure to a BSS. Upon the
2235 call of this API the WLAN DAL will pack and send a HAL
2236 Join request message to the lower RIVA sub-system if
2237 DAL is in state STARTED.
2238
2239 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002240 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002241
2242 WDI_Start must have been called.
2243
Jeff Johnsone7245742012-09-05 17:12:55 -07002244 @param wdiJoinParams: the join parameters as specified by
Jeff Johnson295189b2012-06-20 16:38:30 -07002245 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002246
Jeff Johnson295189b2012-06-20 16:38:30 -07002247 wdiJoinRspCb: callback for passing back the response of
2248 the join operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002249
Jeff Johnson295189b2012-06-20 16:38:30 -07002250 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002251 callback
2252
Jeff Johnson295189b2012-06-20 16:38:30 -07002253 @see WDI_Start
2254 @return Result of the function call
2255*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002256WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002257WDI_JoinReq
2258(
2259 WDI_JoinReqParamsType* pwdiJoinParams,
2260 WDI_JoinRspCb wdiJoinRspCb,
2261 void* pUserData
2262)
2263{
2264 WDI_EventInfoType wdiEventData;
2265 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2266
2267 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002268 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002269 ------------------------------------------------------------------------*/
2270 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2271 {
2272 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2273 "WDI API call before module is initialized - Fail request");
2274
Jeff Johnsone7245742012-09-05 17:12:55 -07002275 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002276 }
2277
2278 /*------------------------------------------------------------------------
2279 Fill in Event data and post to the Main FSM
2280 ------------------------------------------------------------------------*/
2281 wdiEventData.wdiRequest = WDI_JOIN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002282 wdiEventData.pEventData = pwdiJoinParams;
2283 wdiEventData.uEventDataSize = sizeof(*pwdiJoinParams);
2284 wdiEventData.pCBfnc = wdiJoinRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002285 wdiEventData.pUserData = pUserData;
2286
2287 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2288
2289}/*WDI_JoinReq*/
2290
2291/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002292 @brief WDI_ConfigBSSReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07002293 wishes to configure the newly acquired or in process of
2294 being acquired BSS to the HW . Upon the call of this API
2295 the WLAN DAL will pack and send a HAL Config BSS request
2296 message to the lower RIVA sub-system if DAL is in state
2297 STARTED.
2298
2299 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002300 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002301
2302 WDI_JoinReq must have been called.
2303
Jeff Johnsone7245742012-09-05 17:12:55 -07002304 @param wdiConfigBSSParams: the config BSS parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002305 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002306
Jeff Johnson295189b2012-06-20 16:38:30 -07002307 wdiConfigBSSRspCb: callback for passing back the
2308 response of the config BSS operation received from the
2309 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002310
Jeff Johnson295189b2012-06-20 16:38:30 -07002311 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002312 callback
2313
Jeff Johnson295189b2012-06-20 16:38:30 -07002314 @see WDI_JoinReq
2315 @return Result of the function call
2316*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002317WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002318WDI_ConfigBSSReq
2319(
2320 WDI_ConfigBSSReqParamsType* pwdiConfigBSSParams,
2321 WDI_ConfigBSSRspCb wdiConfigBSSRspCb,
2322 void* pUserData
2323)
2324{
2325 WDI_EventInfoType wdiEventData;
2326 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2327
2328 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002329 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002330 ------------------------------------------------------------------------*/
2331 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2332 {
2333 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2334 "WDI API call before module is initialized - Fail request");
2335
Jeff Johnsone7245742012-09-05 17:12:55 -07002336 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002337 }
2338
2339 /*------------------------------------------------------------------------
2340 Fill in Event data and post to the Main FSM
2341 ------------------------------------------------------------------------*/
2342 wdiEventData.wdiRequest = WDI_CONFIG_BSS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002343 wdiEventData.pEventData = pwdiConfigBSSParams;
2344 wdiEventData.uEventDataSize = sizeof(*pwdiConfigBSSParams);
2345 wdiEventData.pCBfnc = wdiConfigBSSRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002346 wdiEventData.pUserData = pUserData;
2347
2348 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2349
2350}/*WDI_ConfigBSSReq*/
2351
2352/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002353 @brief WDI_DelBSSReq will be called when the upper MAC is
Jeff Johnson295189b2012-06-20 16:38:30 -07002354 disassociating from the BSS and wishes to notify HW.
2355 Upon the call of this API the WLAN DAL will pack and
2356 send a HAL Del BSS request message to the lower RIVA
2357 sub-system if DAL is in state STARTED.
2358
2359 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002360 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002361
2362 WDI_ConfigBSSReq or WDI_PostAssocReq must have been called.
2363
Jeff Johnsone7245742012-09-05 17:12:55 -07002364 @param wdiDelBSSParams: the del BSS parameters as specified by
Jeff Johnson295189b2012-06-20 16:38:30 -07002365 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002366
Jeff Johnson295189b2012-06-20 16:38:30 -07002367 wdiDelBSSRspCb: callback for passing back the response
2368 of the del bss operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002369
Jeff Johnson295189b2012-06-20 16:38:30 -07002370 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002371 callback
2372
2373 @see WDI_ConfigBSSReq, WDI_PostAssocReq
Jeff Johnson295189b2012-06-20 16:38:30 -07002374 @return Result of the function call
2375*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002376WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002377WDI_DelBSSReq
2378(
2379 WDI_DelBSSReqParamsType* pwdiDelBSSParams,
2380 WDI_DelBSSRspCb wdiDelBSSRspCb,
2381 void* pUserData
2382)
2383{
2384 WDI_EventInfoType wdiEventData;
2385 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2386
2387 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002388 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002389 ------------------------------------------------------------------------*/
2390 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2391 {
2392 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2393 "WDI API call before module is initialized - Fail request");
2394
Jeff Johnsone7245742012-09-05 17:12:55 -07002395 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002396 }
2397
2398 /*------------------------------------------------------------------------
2399 Fill in Event data and post to the Main FSM
2400 ------------------------------------------------------------------------*/
2401 wdiEventData.wdiRequest = WDI_DEL_BSS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002402 wdiEventData.pEventData = pwdiDelBSSParams;
2403 wdiEventData.uEventDataSize = sizeof(*pwdiDelBSSParams);
2404 wdiEventData.pCBfnc = wdiDelBSSRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002405 wdiEventData.pUserData = pUserData;
2406
2407 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2408
2409}/*WDI_DelBSSReq*/
2410
2411/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002412 @brief WDI_PostAssocReq will be called when the upper MAC has
Jeff Johnson295189b2012-06-20 16:38:30 -07002413 associated to a BSS and wishes to configure HW for
2414 associated state. Upon the call of this API the WLAN DAL
2415 will pack and send a HAL Post Assoc request message to
2416 the lower RIVA sub-system if DAL is in state STARTED.
2417
2418 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002419 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002420
2421 WDI_JoinReq must have been called.
2422
2423 @param wdiPostAssocReqParams: the assoc parameters as specified
2424 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002425
Jeff Johnson295189b2012-06-20 16:38:30 -07002426 wdiPostAssocRspCb: callback for passing back the
2427 response of the post assoc operation received from the
2428 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002429
Jeff Johnson295189b2012-06-20 16:38:30 -07002430 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002431 callback
2432
Jeff Johnson295189b2012-06-20 16:38:30 -07002433 @see WDI_JoinReq
2434 @return Result of the function call
2435*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002436WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002437WDI_PostAssocReq
2438(
2439 WDI_PostAssocReqParamsType* pwdiPostAssocReqParams,
2440 WDI_PostAssocRspCb wdiPostAssocRspCb,
2441 void* pUserData
2442)
2443{
2444 WDI_EventInfoType wdiEventData;
2445 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2446
2447 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002448 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002449 ------------------------------------------------------------------------*/
2450 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2451 {
2452 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2453 "WDI API call before module is initialized - Fail request");
2454
Jeff Johnsone7245742012-09-05 17:12:55 -07002455 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002456 }
2457
2458 /*------------------------------------------------------------------------
2459 Fill in Event data and post to the Main FSM
2460 ------------------------------------------------------------------------*/
2461 wdiEventData.wdiRequest = WDI_POST_ASSOC_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002462 wdiEventData.pEventData = pwdiPostAssocReqParams;
2463 wdiEventData.uEventDataSize = sizeof(*pwdiPostAssocReqParams);
2464 wdiEventData.pCBfnc = wdiPostAssocRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002465 wdiEventData.pUserData = pUserData;
2466
2467 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2468
2469}/*WDI_PostAssocReq*/
2470
2471/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002472 @brief WDI_DelSTAReq will be called when the upper MAC when an
Jeff Johnson295189b2012-06-20 16:38:30 -07002473 association with another STA has ended and the station
2474 must be deleted from HW. Upon the call of this API the
2475 WLAN DAL will pack and send a HAL Del STA request
2476 message to the lower RIVA sub-system if DAL is in state
2477 STARTED.
2478
2479 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002480 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002481
2482 WDI_PostAssocReq must have been called.
2483
Jeff Johnsone7245742012-09-05 17:12:55 -07002484 @param wdiDelSTAParams: the Del STA parameters as specified by
Jeff Johnson295189b2012-06-20 16:38:30 -07002485 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002486
Jeff Johnson295189b2012-06-20 16:38:30 -07002487 wdiDelSTARspCb: callback for passing back the response
2488 of the del STA operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002489
Jeff Johnson295189b2012-06-20 16:38:30 -07002490 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002491 callback
2492
Jeff Johnson295189b2012-06-20 16:38:30 -07002493 @see WDI_PostAssocReq
2494 @return Result of the function call
2495*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002496WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002497WDI_DelSTAReq
2498(
2499 WDI_DelSTAReqParamsType* pwdiDelSTAParams,
2500 WDI_DelSTARspCb wdiDelSTARspCb,
2501 void* pUserData
2502)
2503{
2504 WDI_EventInfoType wdiEventData;
2505 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2506
2507 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002508 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002509 ------------------------------------------------------------------------*/
2510 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2511 {
2512 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2513 "WDI API call before module is initialized - Fail request");
2514
Jeff Johnsone7245742012-09-05 17:12:55 -07002515 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002516 }
2517
2518 /*------------------------------------------------------------------------
2519 Fill in Event data and post to the Main FSM
2520 ------------------------------------------------------------------------*/
2521 wdiEventData.wdiRequest = WDI_DEL_STA_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002522 wdiEventData.pEventData = pwdiDelSTAParams;
2523 wdiEventData.uEventDataSize = sizeof(*pwdiDelSTAParams);
2524 wdiEventData.pCBfnc = wdiDelSTARspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002525 wdiEventData.pUserData = pUserData;
2526
2527 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2528
2529}/*WDI_DelSTAReq*/
2530
Jeff Johnsone7245742012-09-05 17:12:55 -07002531/*========================================================================
2532
Jeff Johnson295189b2012-06-20 16:38:30 -07002533 SECURITY APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07002534
Jeff Johnson295189b2012-06-20 16:38:30 -07002535==========================================================================*/
2536
2537/**
2538 @brief WDI_SetBSSKeyReq will be called when the upper MAC wants to
2539 install a BSS encryption key on the HW. Upon the call of this
2540 API the WLAN DAL will pack and send a Set BSS Key request
2541 message to the lower RIVA sub-system if DAL is in state
2542 STARTED.
2543
2544 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002545 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002546
2547 WDI_PostAssocReq must have been called.
2548
Jeff Johnsone7245742012-09-05 17:12:55 -07002549 @param wdiSetBSSKeyParams: the BSS Key set parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002550 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002551
Jeff Johnson295189b2012-06-20 16:38:30 -07002552 wdiSetBSSKeyRspCb: callback for passing back the
2553 response of the set BSS Key operation received from the
2554 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002555
Jeff Johnson295189b2012-06-20 16:38:30 -07002556 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002557 callback
2558
Jeff Johnson295189b2012-06-20 16:38:30 -07002559 @see WDI_PostAssocReq
2560 @return Result of the function call
2561*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002562WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002563WDI_SetBSSKeyReq
2564(
2565 WDI_SetBSSKeyReqParamsType* pwdiSetBSSKeyParams,
2566 WDI_SetBSSKeyRspCb wdiSetBSSKeyRspCb,
2567 void* pUserData
2568)
2569{
2570 WDI_EventInfoType wdiEventData;
2571 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2572
2573 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002574 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002575 ------------------------------------------------------------------------*/
2576 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2577 {
2578 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2579 "WDI API call before module is initialized - Fail request");
2580
Jeff Johnsone7245742012-09-05 17:12:55 -07002581 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002582 }
2583
2584 /*------------------------------------------------------------------------
2585 Fill in Event data and post to the Main FSM
2586 ------------------------------------------------------------------------*/
2587 wdiEventData.wdiRequest = WDI_SET_BSS_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002588 wdiEventData.pEventData = pwdiSetBSSKeyParams;
2589 wdiEventData.uEventDataSize = sizeof(*pwdiSetBSSKeyParams);
2590 wdiEventData.pCBfnc = wdiSetBSSKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002591 wdiEventData.pUserData = pUserData;
2592
2593 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2594
2595}/*WDI_SetBSSKeyReq*/
2596
2597/**
2598 @brief WDI_RemoveBSSKeyReq will be called when the upper MAC wants to
2599 uninstall a BSS key from HW. Upon the call of this API the
2600 WLAN DAL will pack and send a HAL Remove BSS Key request
2601 message to the lower RIVA sub-system if DAL is in state
2602 STARTED.
2603
2604 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002605 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002606
2607 WDI_SetBSSKeyReq must have been called.
2608
Jeff Johnsone7245742012-09-05 17:12:55 -07002609 @param wdiRemoveBSSKeyParams: the remove BSS key parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002610 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002611
Jeff Johnson295189b2012-06-20 16:38:30 -07002612 wdiRemoveBSSKeyRspCb: callback for passing back the
2613 response of the remove BSS key operation received from
2614 the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002615
Jeff Johnson295189b2012-06-20 16:38:30 -07002616 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002617 callback
2618
Jeff Johnson295189b2012-06-20 16:38:30 -07002619 @see WDI_SetBSSKeyReq
2620 @return Result of the function call
2621*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002622WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002623WDI_RemoveBSSKeyReq
2624(
2625 WDI_RemoveBSSKeyReqParamsType* pwdiRemoveBSSKeyParams,
2626 WDI_RemoveBSSKeyRspCb wdiRemoveBSSKeyRspCb,
2627 void* pUserData
2628)
2629{
2630 WDI_EventInfoType wdiEventData;
2631 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2632
2633 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002634 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002635 ------------------------------------------------------------------------*/
2636 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2637 {
2638 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2639 "WDI API call before module is initialized - Fail request");
2640
Jeff Johnsone7245742012-09-05 17:12:55 -07002641 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002642 }
2643
2644 /*------------------------------------------------------------------------
2645 Fill in Event data and post to the Main FSM
2646 ------------------------------------------------------------------------*/
2647 wdiEventData.wdiRequest = WDI_RMV_BSS_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002648 wdiEventData.pEventData = pwdiRemoveBSSKeyParams;
2649 wdiEventData.uEventDataSize = sizeof(*pwdiRemoveBSSKeyParams);
2650 wdiEventData.pCBfnc = wdiRemoveBSSKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002651 wdiEventData.pUserData = pUserData;
2652
2653 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2654
2655}/*WDI_RemoveBSSKeyReq*/
2656
2657
2658/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002659 @brief WDI_SetSTAKeyReq will be called when the upper MAC is
Jeff Johnson295189b2012-06-20 16:38:30 -07002660 ready to install a STA(ast) encryption key in HW. Upon
2661 the call of this API the WLAN DAL will pack and send a
2662 HAL Set STA Key request message to the lower RIVA
2663 sub-system if DAL is in state STARTED.
2664
2665 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002666 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002667
2668 WDI_PostAssocReq must have been called.
2669
Jeff Johnsone7245742012-09-05 17:12:55 -07002670 @param wdiSetSTAKeyParams: the set STA key parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002671 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002672
Jeff Johnson295189b2012-06-20 16:38:30 -07002673 wdiSetSTAKeyRspCb: callback for passing back the
2674 response of the set STA key operation received from the
2675 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002676
Jeff Johnson295189b2012-06-20 16:38:30 -07002677 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002678 callback
2679
Jeff Johnson295189b2012-06-20 16:38:30 -07002680 @see WDI_PostAssocReq
2681 @return Result of the function call
2682*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002683WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002684WDI_SetSTAKeyReq
2685(
2686 WDI_SetSTAKeyReqParamsType* pwdiSetSTAKeyParams,
2687 WDI_SetSTAKeyRspCb wdiSetSTAKeyRspCb,
2688 void* pUserData
2689)
2690{
2691 WDI_EventInfoType wdiEventData;
2692 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2693
2694 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002695 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002696 ------------------------------------------------------------------------*/
2697 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2698 {
2699 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2700 "WDI API call before module is initialized - Fail request");
2701
Jeff Johnsone7245742012-09-05 17:12:55 -07002702 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002703 }
2704
2705 /*------------------------------------------------------------------------
2706 Fill in Event data and post to the Main FSM
2707 ------------------------------------------------------------------------*/
2708 wdiEventData.wdiRequest = WDI_SET_STA_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002709 wdiEventData.pEventData = pwdiSetSTAKeyParams;
2710 wdiEventData.uEventDataSize = sizeof(*pwdiSetSTAKeyParams);
2711 wdiEventData.pCBfnc = wdiSetSTAKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002712 wdiEventData.pUserData = pUserData;
2713
2714 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2715
2716}/*WDI_SetSTAKeyReq*/
2717
2718
2719/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002720 @brief WDI_RemoveSTAKeyReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07002721 wants to uninstall a previously set STA key in HW. Upon
2722 the call of this API the WLAN DAL will pack and send a
2723 HAL Remove STA Key request message to the lower RIVA
2724 sub-system if DAL is in state STARTED.
2725
2726 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002727 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002728
2729 WDI_SetSTAKeyReq must have been called.
2730
Jeff Johnsone7245742012-09-05 17:12:55 -07002731 @param wdiRemoveSTAKeyParams: the remove STA key parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002732 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002733
Jeff Johnson295189b2012-06-20 16:38:30 -07002734 wdiRemoveSTAKeyRspCb: callback for passing back the
2735 response of the remove STA key operation received from
2736 the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002737
Jeff Johnson295189b2012-06-20 16:38:30 -07002738 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002739 callback
2740
Jeff Johnson295189b2012-06-20 16:38:30 -07002741 @see WDI_SetSTAKeyReq
2742 @return Result of the function call
2743*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002744WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002745WDI_RemoveSTAKeyReq
2746(
2747 WDI_RemoveSTAKeyReqParamsType* pwdiRemoveSTAKeyParams,
2748 WDI_RemoveSTAKeyRspCb wdiRemoveSTAKeyRspCb,
2749 void* pUserData
2750)
2751{
2752 WDI_EventInfoType wdiEventData;
2753 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2754
2755 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002756 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002757 ------------------------------------------------------------------------*/
2758 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2759 {
2760 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2761 "WDI API call before module is initialized - Fail request");
2762
Jeff Johnsone7245742012-09-05 17:12:55 -07002763 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002764 }
2765
2766 /*------------------------------------------------------------------------
2767 Fill in Event data and post to the Main FSM
2768 ------------------------------------------------------------------------*/
2769 wdiEventData.wdiRequest = WDI_RMV_STA_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002770 wdiEventData.pEventData = pwdiRemoveSTAKeyParams;
2771 wdiEventData.uEventDataSize = sizeof(*pwdiRemoveSTAKeyParams);
2772 wdiEventData.pCBfnc = wdiRemoveSTAKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002773 wdiEventData.pUserData = pUserData;
2774
2775 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2776
2777}/*WDI_RemoveSTAKeyReq*/
2778
2779
2780/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002781 @brief WDI_SetSTABcastKeyReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07002782 wants to install a STA Bcast encryption key on the HW.
2783 Upon the call of this API the WLAN DAL will pack and
2784 send a HAL Start request message to the lower RIVA
2785 sub-system if DAL is in state STARTED.
2786
2787 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002788 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002789
2790 WDI_PostAssocReq must have been called.
2791
Jeff Johnsone7245742012-09-05 17:12:55 -07002792 @param pwdiSetSTABcastKeyParams: the BSS Key set parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002793 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002794
Jeff Johnson295189b2012-06-20 16:38:30 -07002795 wdiSetSTABcastKeyRspCb: callback for passing back the
2796 response of the set BSS Key operation received from the
2797 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002798
Jeff Johnson295189b2012-06-20 16:38:30 -07002799 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002800 callback
2801
Jeff Johnson295189b2012-06-20 16:38:30 -07002802 @see WDI_PostAssocReq
2803 @return Result of the function call
2804*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002805WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002806WDI_SetSTABcastKeyReq
2807(
2808 WDI_SetSTAKeyReqParamsType* pwdiSetSTABcastKeyParams,
2809 WDI_SetSTAKeyRspCb wdiSetSTABcastKeyRspCb,
2810 void* pUserData
2811)
2812
2813{
2814 WDI_EventInfoType wdiEventData;
2815 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2816
2817 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002818 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002819 ------------------------------------------------------------------------*/
2820 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2821 {
2822 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2823 "WDI API call before module is initialized - Fail request");
2824
Jeff Johnsone7245742012-09-05 17:12:55 -07002825 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002826 }
2827
2828 /*------------------------------------------------------------------------
2829 Fill in Event data and post to the Main FSM
2830 ------------------------------------------------------------------------*/
2831 wdiEventData.wdiRequest = WDI_SET_STA_BCAST_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002832 wdiEventData.pEventData = pwdiSetSTABcastKeyParams;
2833 wdiEventData.uEventDataSize = sizeof(*pwdiSetSTABcastKeyParams);
2834 wdiEventData.pCBfnc = wdiSetSTABcastKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002835 wdiEventData.pUserData = pUserData;
2836
2837 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2838
2839}/*WDI_SetSTABcastKeyReq*/
2840
2841/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002842 @brief WDI_RemoveSTABcastKeyReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07002843 MAC wants to uninstall a STA Bcast key from HW. Upon the
2844 call of this API the WLAN DAL will pack and send a HAL
2845 Remove STA Bcast Key request message to the lower RIVA
2846 sub-system if DAL is in state STARTED.
2847
2848 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002849 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002850
2851 WDI_SetSTABcastKeyReq must have been called.
2852
Jeff Johnsone7245742012-09-05 17:12:55 -07002853 @param pwdiRemoveSTABcastKeyParams: the remove BSS key
Jeff Johnson295189b2012-06-20 16:38:30 -07002854 parameters as specified by the Device
2855 Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002856
Jeff Johnson295189b2012-06-20 16:38:30 -07002857 wdiRemoveSTABcastKeyRspCb: callback for passing back the
2858 response of the remove STA Bcast key operation received
2859 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002860
Jeff Johnson295189b2012-06-20 16:38:30 -07002861 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002862 callback
2863
Jeff Johnson295189b2012-06-20 16:38:30 -07002864 @see WDI_SetSTABcastKeyReq
2865 @return Result of the function call
2866*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002867WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002868WDI_RemoveSTABcastKeyReq
2869(
2870 WDI_RemoveSTAKeyReqParamsType* pwdiRemoveSTABcastKeyParams,
2871 WDI_RemoveSTAKeyRspCb wdiRemoveSTABcastKeyRspCb,
2872 void* pUserData
2873)
2874{
2875 WDI_EventInfoType wdiEventData;
2876 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2877
2878 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002879 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002880 ------------------------------------------------------------------------*/
2881 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2882 {
2883 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2884 "WDI API call before module is initialized - Fail request");
2885
Jeff Johnsone7245742012-09-05 17:12:55 -07002886 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002887 }
2888
2889 /*------------------------------------------------------------------------
2890 Fill in Event data and post to the Main FSM
2891 ------------------------------------------------------------------------*/
2892 wdiEventData.wdiRequest = WDI_RMV_STA_BCAST_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002893 wdiEventData.pEventData = pwdiRemoveSTABcastKeyParams;
2894 wdiEventData.uEventDataSize = sizeof(*pwdiRemoveSTABcastKeyParams);
2895 wdiEventData.pCBfnc = wdiRemoveSTABcastKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002896 wdiEventData.pUserData = pUserData;
2897
2898 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2899
2900}/*WDI_RemoveSTABcastKeyReq*/
2901
2902/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002903 @brief WDI_SetMaxTxPowerReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07002904 MAC wants to set Max Tx Power to HW. Upon the
2905 call of this API the WLAN DAL will pack and send a HAL
2906 Remove STA Bcast Key request message to the lower RIVA
2907 sub-system if DAL is in state STARTED.
2908
2909 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002910 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002911
2912 WDI_SetSTABcastKeyReq must have been called.
2913
Jeff Johnsone7245742012-09-05 17:12:55 -07002914 @param pwdiRemoveSTABcastKeyParams: the remove BSS key
Jeff Johnson295189b2012-06-20 16:38:30 -07002915 parameters as specified by the Device
2916 Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002917
Jeff Johnson295189b2012-06-20 16:38:30 -07002918 wdiRemoveSTABcastKeyRspCb: callback for passing back the
2919 response of the remove STA Bcast key operation received
2920 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002921
Jeff Johnson295189b2012-06-20 16:38:30 -07002922 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002923 callback
2924
Jeff Johnson295189b2012-06-20 16:38:30 -07002925 @see WDI_SetMaxTxPowerReq
2926 @return Result of the function call
2927*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002928WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002929WDI_SetMaxTxPowerReq
2930(
2931 WDI_SetMaxTxPowerParamsType* pwdiSetMaxTxPowerParams,
2932 WDA_SetMaxTxPowerRspCb wdiReqStatusCb,
2933 void* pUserData
2934)
2935{
2936 WDI_EventInfoType wdiEventData;
2937 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2938
2939 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002940 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002941 ------------------------------------------------------------------------*/
2942 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2943 {
2944 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2945 "WDI API call before module is initialized - Fail request");
2946
Jeff Johnsone7245742012-09-05 17:12:55 -07002947 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002948 }
2949
2950 /*------------------------------------------------------------------------
2951 Fill in Event data and post to the Main FSM
2952 ------------------------------------------------------------------------*/
2953 wdiEventData.wdiRequest = WDI_SET_MAX_TX_POWER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002954 wdiEventData.pEventData = pwdiSetMaxTxPowerParams;
2955 wdiEventData.uEventDataSize = sizeof(*pwdiSetMaxTxPowerParams);
2956 wdiEventData.pCBfnc = wdiReqStatusCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002957 wdiEventData.pUserData = pUserData;
2958
2959 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2960}
2961
schang86c22c42013-03-13 18:41:24 -07002962/**
Arif Hussaina5ebce02013-08-09 15:09:58 -07002963 @brief WDI_SetMaxTxPowerPerBandReq will be called when the upper
2964 MAC wants to set Max Tx Power to HW for specific band.
2965
2966 @param pwdiSetMaxTxPowerPerBandParams: Tx Power Information
2967
2968 wdiReqStatusCb: callback for passing back the
2969 response msg from the device
2970
2971 pUserData: user data will be passed back with the
2972 callback
2973
2974 @see WDI_SetMaxTxPowerPerBandReq
2975 @return Result of the function call
2976*/
2977WDI_Status
2978WDI_SetMaxTxPowerPerBandReq
2979(
2980 WDI_SetMaxTxPowerPerBandParamsType* pwdiSetMaxTxPowerPerBandParams,
2981 WDA_SetMaxTxPowerPerBandRspCb wdiReqStatusCb,
2982 void* pUserData
2983)
2984{
2985 WDI_EventInfoType wdiEventData;
2986 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2987
2988 /*------------------------------------------------------------------------
2989 Sanity Check
2990 ------------------------------------------------------------------------*/
2991 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2992 {
2993 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2994 "WDI API call before module is initialized - Fail request");
2995
2996 return WDI_STATUS_E_NOT_ALLOWED;
2997 }
2998
2999 /*------------------------------------------------------------------------
3000 Fill in Event data and post to the Main FSM
3001 ------------------------------------------------------------------------*/
3002 wdiEventData.wdiRequest = WDI_SET_MAX_TX_POWER_PER_BAND_REQ;
3003 wdiEventData.pEventData = pwdiSetMaxTxPowerPerBandParams;
3004 wdiEventData.uEventDataSize = sizeof(*pwdiSetMaxTxPowerPerBandParams);
3005 wdiEventData.pCBfnc = wdiReqStatusCb;
3006 wdiEventData.pUserData = pUserData;
3007
3008 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3009}
3010
3011/**
schang86c22c42013-03-13 18:41:24 -07003012 @brief WDI_SetTxPowerReq will be called when the upper
3013 MAC wants to set Tx Power to HW.
3014 In state BUSY this request will be queued. Request won't
3015 be allowed in any other state.
3016
3017
3018 @param pwdiSetTxPowerParams: set TS Power parameters
3019 BSSID and target TX Power with dbm included
3020
3021 wdiReqStatusCb: callback for passing back the response
3022
3023 pUserData: user data will be passed back with the
3024 callback
3025
3026 @return Result of the function call
3027*/
3028WDI_Status
3029WDI_SetTxPowerReq
3030(
3031 WDI_SetTxPowerParamsType* pwdiSetTxPowerParams,
3032 WDA_SetTxPowerRspCb wdiReqStatusCb,
3033 void* pUserData
3034)
3035{
3036 WDI_EventInfoType wdiEventData;
3037 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3038
3039 /*------------------------------------------------------------------------
3040 Sanity Check
3041 ------------------------------------------------------------------------*/
3042 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3043 {
3044 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3045 "WDI API call before module is initialized - Fail request");
3046
3047 return WDI_STATUS_E_NOT_ALLOWED;
3048 }
3049
3050 /*------------------------------------------------------------------------
3051 Fill in Event data and post to the Main FSM
3052 ------------------------------------------------------------------------*/
3053 wdiEventData.wdiRequest = WDI_SET_TX_POWER_REQ;
3054 wdiEventData.pEventData = pwdiSetTxPowerParams;
3055 wdiEventData.uEventDataSize = sizeof(*pwdiSetTxPowerParams);
3056 wdiEventData.pCBfnc = wdiReqStatusCb;
3057 wdiEventData.pUserData = pUserData;
3058
3059 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3060}
3061
Jeff Johnson295189b2012-06-20 16:38:30 -07003062#ifdef FEATURE_WLAN_CCX
3063WDI_Status
3064WDI_TSMStatsReq
3065(
3066 WDI_TSMStatsReqParamsType* pwdiTsmReqParams,
3067 WDI_TsmRspCb wdiReqStatusCb,
3068 void* pUserData
3069)
3070{
3071 WDI_EventInfoType wdiEventData;
3072 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Jeff Johnson295189b2012-06-20 16:38:30 -07003073 /*------------------------------------------------------------------------
3074 Sanity Check
3075 ------------------------------------------------------------------------*/
3076 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3077 {
3078 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3079 "WDI API call before module is initialized - Fail request");
3080
3081 return WDI_STATUS_E_NOT_ALLOWED;
3082 }
3083
3084 /*------------------------------------------------------------------------
3085 Fill in Event data and post to the Main FSM
3086 ------------------------------------------------------------------------*/
3087 wdiEventData.wdiRequest = WDI_TSM_STATS_REQ;
3088 wdiEventData.pEventData = pwdiTsmReqParams;
3089 wdiEventData.uEventDataSize = sizeof(*pwdiTsmReqParams);
3090 wdiEventData.pCBfnc = wdiReqStatusCb;
3091 wdiEventData.pUserData = pUserData;
3092
3093 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3094
3095}
3096#endif
3097
3098/*========================================================================
3099
3100 QoS and BA APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07003101
Jeff Johnson295189b2012-06-20 16:38:30 -07003102==========================================================================*/
3103
3104/**
3105 @brief WDI_AddTSReq will be called when the upper MAC to inform
3106 the device of a successful add TSpec negotiation. HW
3107 needs to receive the TSpec Info from the UMAC in order
3108 to configure properly the QoS data traffic. Upon the
3109 call of this API the WLAN DAL will pack and send a HAL
3110 Add TS request message to the lower RIVA sub-system if
3111 DAL is in state STARTED.
3112
3113 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003114 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003115
3116 WDI_PostAssocReq must have been called.
3117
3118 @param wdiAddTsReqParams: the add TS parameters as specified by
3119 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003120
Jeff Johnson295189b2012-06-20 16:38:30 -07003121 wdiAddTsRspCb: callback for passing back the response of
3122 the add TS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003123
Jeff Johnson295189b2012-06-20 16:38:30 -07003124 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003125 callback
3126
Jeff Johnson295189b2012-06-20 16:38:30 -07003127 @see WDI_PostAssocReq
3128 @return Result of the function call
3129*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003130WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003131WDI_AddTSReq
3132(
3133 WDI_AddTSReqParamsType* pwdiAddTsReqParams,
3134 WDI_AddTsRspCb wdiAddTsRspCb,
3135 void* pUserData
3136)
3137{
3138 WDI_EventInfoType wdiEventData;
3139 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3140
3141 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003142 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003143 ------------------------------------------------------------------------*/
3144 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3145 {
3146 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3147 "WDI API call before module is initialized - Fail request");
3148
Jeff Johnsone7245742012-09-05 17:12:55 -07003149 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003150 }
3151
3152 /*------------------------------------------------------------------------
3153 Fill in Event data and post to the Main FSM
3154 ------------------------------------------------------------------------*/
3155 wdiEventData.wdiRequest = WDI_ADD_TS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003156 wdiEventData.pEventData = pwdiAddTsReqParams;
3157 wdiEventData.uEventDataSize = sizeof(*pwdiAddTsReqParams);
3158 wdiEventData.pCBfnc = wdiAddTsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003159 wdiEventData.pUserData = pUserData;
3160
3161 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3162
3163}/*WDI_AddTSReq*/
3164
3165
3166
3167/**
3168 @brief WDI_DelTSReq will be called when the upper MAC has ended
3169 admission on a specific AC. This is to inform HW that
3170 QoS traffic parameters must be rest. Upon the call of
3171 this API the WLAN DAL will pack and send a HAL Del TS
3172 request message to the lower RIVA sub-system if DAL is
3173 in state STARTED.
3174
3175 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003176 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003177
3178 WDI_AddTSReq must have been called.
3179
3180 @param wdiDelTsReqParams: the del TS parameters as specified by
3181 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003182
Jeff Johnson295189b2012-06-20 16:38:30 -07003183 wdiDelTsRspCb: callback for passing back the response of
3184 the del TS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003185
Jeff Johnson295189b2012-06-20 16:38:30 -07003186 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003187 callback
3188
Jeff Johnson295189b2012-06-20 16:38:30 -07003189 @see WDI_AddTSReq
3190 @return Result of the function call
3191*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003192WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003193WDI_DelTSReq
3194(
3195 WDI_DelTSReqParamsType* pwdiDelTsReqParams,
3196 WDI_DelTsRspCb wdiDelTsRspCb,
3197 void* pUserData
3198)
3199{
3200 WDI_EventInfoType wdiEventData;
3201 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3202
3203 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003204 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003205 ------------------------------------------------------------------------*/
3206 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3207 {
3208 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3209 "WDI API call before module is initialized - Fail request");
3210
Jeff Johnsone7245742012-09-05 17:12:55 -07003211 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003212 }
3213
3214 /*------------------------------------------------------------------------
3215 Fill in Event data and post to the Main FSM
3216 ------------------------------------------------------------------------*/
3217 wdiEventData.wdiRequest = WDI_DEL_TS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003218 wdiEventData.pEventData = pwdiDelTsReqParams;
3219 wdiEventData.uEventDataSize = sizeof(*pwdiDelTsReqParams);
3220 wdiEventData.pCBfnc = wdiDelTsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003221 wdiEventData.pUserData = pUserData;
3222
3223 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3224
3225}/*WDI_DelTSReq*/
3226
3227
3228
3229/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003230 @brief WDI_UpdateEDCAParams will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07003231 wishes to update the EDCA parameters used by HW for QoS
3232 data traffic. Upon the call of this API the WLAN DAL
3233 will pack and send a HAL Update EDCA Params request
3234 message to the lower RIVA sub-system if DAL is in state
3235 STARTED.
3236
3237 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003238 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003239
3240 WDI_PostAssocReq must have been called.
3241
Jeff Johnsone7245742012-09-05 17:12:55 -07003242 @param wdiUpdateEDCAParams: the start parameters as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07003243 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003244
Jeff Johnson295189b2012-06-20 16:38:30 -07003245 wdiUpdateEDCAParamsRspCb: callback for passing back the
3246 response of the start operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003247
Jeff Johnson295189b2012-06-20 16:38:30 -07003248 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003249 callback
3250
Jeff Johnson295189b2012-06-20 16:38:30 -07003251 @see WDI_PostAssocReq
3252 @return Result of the function call
3253*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003254WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003255WDI_UpdateEDCAParams
3256(
3257 WDI_UpdateEDCAParamsType* pwdiUpdateEDCAParams,
3258 WDI_UpdateEDCAParamsRspCb wdiUpdateEDCAParamsRspCb,
3259 void* pUserData
3260)
3261{
3262 WDI_EventInfoType wdiEventData;
3263 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3264
3265 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003266 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003267 ------------------------------------------------------------------------*/
3268 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3269 {
3270 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3271 "WDI API call before module is initialized - Fail request");
3272
Jeff Johnsone7245742012-09-05 17:12:55 -07003273 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003274 }
3275
3276 /*------------------------------------------------------------------------
3277 Fill in Event data and post to the Main FSM
3278 ------------------------------------------------------------------------*/
3279 wdiEventData.wdiRequest = WDI_UPD_EDCA_PRMS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003280 wdiEventData.pEventData = pwdiUpdateEDCAParams;
3281 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateEDCAParams);
3282 wdiEventData.pCBfnc = wdiUpdateEDCAParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003283 wdiEventData.pUserData = pUserData;
3284
3285 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3286
3287}/*WDI_UpdateEDCAParams*/
3288
3289
3290/**
3291 @brief WDI_AddBASessionReq will be called when the upper MAC has setup
3292 successfully a BA session and needs to notify the HW for
3293 the appropriate settings to take place. Upon the call of
3294 this API the WLAN DAL will pack and send a HAL Add BA
3295 request message to the lower RIVA sub-system if DAL is
3296 in state STARTED.
3297
3298 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003299 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003300
3301 WDI_PostAssocReq must have been called.
3302
3303 @param wdiAddBAReqParams: the add BA parameters as specified by
3304 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003305
Jeff Johnson295189b2012-06-20 16:38:30 -07003306 wdiAddBARspCb: callback for passing back the response of
3307 the add BA operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003308
Jeff Johnson295189b2012-06-20 16:38:30 -07003309 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003310 callback
3311
Jeff Johnson295189b2012-06-20 16:38:30 -07003312 @see WDI_PostAssocReq
3313 @return Result of the function call
3314*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003315WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003316WDI_AddBASessionReq
3317(
3318 WDI_AddBASessionReqParamsType* pwdiAddBASessionReqParams,
3319 WDI_AddBASessionRspCb wdiAddBASessionRspCb,
3320 void* pUserData
3321)
3322{
3323 WDI_EventInfoType wdiEventData;
3324 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3325
3326 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003327 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003328 ------------------------------------------------------------------------*/
3329 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3330 {
3331 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3332 "WDI API call before module is initialized - Fail request");
3333
Jeff Johnsone7245742012-09-05 17:12:55 -07003334 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003335 }
3336
3337 /*------------------------------------------------------------------------
3338 Fill in Event data and post to the Main FSM
3339 ------------------------------------------------------------------------*/
3340 wdiEventData.wdiRequest = WDI_ADD_BA_SESSION_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003341 wdiEventData.pEventData = pwdiAddBASessionReqParams;
3342 wdiEventData.uEventDataSize = sizeof(*pwdiAddBASessionReqParams);
3343 wdiEventData.pCBfnc = wdiAddBASessionRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003344 wdiEventData.pUserData = pUserData;
3345
3346 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3347
3348}/*WDI_AddBASessionReq*/
3349
3350/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003351 @brief WDI_DelBAReq will be called when the upper MAC wants to
Jeff Johnson295189b2012-06-20 16:38:30 -07003352 inform HW that it has deleted a previously created BA
3353 session. Upon the call of this API the WLAN DAL will
3354 pack and send a HAL Del BA request message to the lower
3355 RIVA sub-system if DAL is in state STARTED.
3356
3357 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003358 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003359
3360 WDI_AddBAReq must have been called.
3361
3362 @param wdiDelBAReqParams: the del BA parameters as specified by
3363 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003364
Jeff Johnson295189b2012-06-20 16:38:30 -07003365 wdiDelBARspCb: callback for passing back the response of
3366 the del BA operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003367
Jeff Johnson295189b2012-06-20 16:38:30 -07003368 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003369 callback
3370
Jeff Johnson295189b2012-06-20 16:38:30 -07003371 @see WDI_AddBAReq
3372 @return Result of the function call
3373*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003374WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003375WDI_DelBAReq
3376(
3377 WDI_DelBAReqParamsType* pwdiDelBAReqParams,
3378 WDI_DelBARspCb wdiDelBARspCb,
3379 void* pUserData
3380)
3381{
3382 WDI_EventInfoType wdiEventData;
3383 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3384
3385 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003386 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003387 ------------------------------------------------------------------------*/
3388 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3389 {
3390 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3391 "WDI API call before module is initialized - Fail request");
3392
Jeff Johnsone7245742012-09-05 17:12:55 -07003393 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003394 }
3395
3396 /*------------------------------------------------------------------------
3397 Fill in Event data and post to the Main FSM
3398 ------------------------------------------------------------------------*/
3399 wdiEventData.wdiRequest = WDI_DEL_BA_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003400 wdiEventData.pEventData = pwdiDelBAReqParams;
3401 wdiEventData.uEventDataSize = sizeof(*pwdiDelBAReqParams);
3402 wdiEventData.pCBfnc = wdiDelBARspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003403 wdiEventData.pUserData = pUserData;
3404
3405 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3406
3407}/*WDI_DelBAReq*/
3408
Jeff Johnsone7245742012-09-05 17:12:55 -07003409/*========================================================================
3410
Jeff Johnson295189b2012-06-20 16:38:30 -07003411 Power Save APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07003412
Jeff Johnson295189b2012-06-20 16:38:30 -07003413==========================================================================*/
3414
3415/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003416 @brief WDI_SetPwrSaveCfgReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07003417 wants to set the power save related configurations of
3418 the WLAN Device. Upon the call of this API the WLAN DAL
3419 will pack and send a HAL Update CFG request message to
3420 the lower RIVA sub-system if DAL is in state STARTED.
3421
3422 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003423 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003424
3425 WDI_Start must have been called.
3426
Jeff Johnsone7245742012-09-05 17:12:55 -07003427 @param pwdiPowerSaveCfg: the power save cfg parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07003428 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003429
Jeff Johnson295189b2012-06-20 16:38:30 -07003430 wdiSetPwrSaveCfgCb: callback for passing back the
3431 response of the set power save cfg operation received
3432 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003433
Jeff Johnson295189b2012-06-20 16:38:30 -07003434 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003435 callback
3436
Jeff Johnson295189b2012-06-20 16:38:30 -07003437 @see WDI_Start
Jeff Johnsone7245742012-09-05 17:12:55 -07003438 @return Result of the function call
3439*/
3440WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003441WDI_SetPwrSaveCfgReq
3442(
3443 WDI_UpdateCfgReqParamsType* pwdiPowerSaveCfg,
3444 WDI_SetPwrSaveCfgCb wdiSetPwrSaveCfgCb,
3445 void* pUserData
3446)
3447{
3448 WDI_EventInfoType wdiEventData;
3449 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3450
3451 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003452 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003453 ------------------------------------------------------------------------*/
3454 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3455 {
3456 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3457 "WDI API call before module is initialized - Fail request");
3458
Jeff Johnsone7245742012-09-05 17:12:55 -07003459 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003460 }
3461
3462 /*------------------------------------------------------------------------
3463 Fill in Event data and post to the Main FSM
3464 ------------------------------------------------------------------------*/
3465 wdiEventData.wdiRequest = WDI_UPDATE_CFG_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003466 wdiEventData.pEventData = pwdiPowerSaveCfg;
3467 wdiEventData.uEventDataSize = sizeof(*pwdiPowerSaveCfg);
3468 wdiEventData.pCBfnc = wdiSetPwrSaveCfgCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003469 wdiEventData.pUserData = pUserData;
3470
3471 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3472
3473}/*WDI_SetPwrSaveCfgReq*/
3474
3475/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003476 @brief WDI_EnterImpsReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07003477 request the device to get into IMPS power state. Upon
3478 the call of this API the WLAN DAL will send a HAL Enter
3479 IMPS request message to the lower RIVA sub-system if DAL
3480 is in state STARTED.
3481
3482 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003483 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003484
Jeff Johnsone7245742012-09-05 17:12:55 -07003485
3486 @param wdiEnterImpsRspCb: callback for passing back the
Jeff Johnson295189b2012-06-20 16:38:30 -07003487 response of the Enter IMPS operation received from the
3488 device
Jeff Johnsone7245742012-09-05 17:12:55 -07003489
Jeff Johnson295189b2012-06-20 16:38:30 -07003490 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003491 callback
3492
Jeff Johnson295189b2012-06-20 16:38:30 -07003493 @see WDI_Start
3494 @return Result of the function call
3495*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003496WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003497WDI_EnterImpsReq
3498(
3499 WDI_EnterImpsRspCb wdiEnterImpsRspCb,
3500 void* pUserData
3501)
3502{
3503 WDI_EventInfoType wdiEventData;
3504 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3505
3506 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003507 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003508 ------------------------------------------------------------------------*/
3509 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3510 {
3511 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3512 "WDI API call before module is initialized - Fail request");
3513
Jeff Johnsone7245742012-09-05 17:12:55 -07003514 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003515 }
3516
3517 /*------------------------------------------------------------------------
3518 Fill in Event data and post to the Main FSM
3519 ------------------------------------------------------------------------*/
3520 wdiEventData.wdiRequest = WDI_ENTER_IMPS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003521 wdiEventData.pEventData = NULL;
3522 wdiEventData.uEventDataSize = 0;
3523 wdiEventData.pCBfnc = wdiEnterImpsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003524 wdiEventData.pUserData = pUserData;
3525
3526 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3527
3528}/*WDI_EnterImpsReq*/
3529
3530/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003531 @brief WDI_ExitImpsReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07003532 request the device to get out of IMPS power state. Upon
3533 the call of this API the WLAN DAL will send a HAL Exit
3534 IMPS request message to the lower RIVA sub-system if DAL
3535 is in state STARTED.
3536
3537 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003538 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003539
Jeff Johnson295189b2012-06-20 16:38:30 -07003540
Jeff Johnsone7245742012-09-05 17:12:55 -07003541
3542 @param wdiExitImpsRspCb: callback for passing back the response
Jeff Johnson295189b2012-06-20 16:38:30 -07003543 of the Exit IMPS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003544
Jeff Johnson295189b2012-06-20 16:38:30 -07003545 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003546 callback
3547
Jeff Johnson295189b2012-06-20 16:38:30 -07003548 @see WDI_Start
3549 @return Result of the function call
3550*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003551WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003552WDI_ExitImpsReq
3553(
3554 WDI_ExitImpsRspCb wdiExitImpsRspCb,
3555 void* pUserData
3556)
3557{
3558 WDI_EventInfoType wdiEventData;
3559 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3560
3561 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003562 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003563 ------------------------------------------------------------------------*/
3564 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3565 {
3566 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3567 "WDI API call before module is initialized - Fail request");
3568
Jeff Johnsone7245742012-09-05 17:12:55 -07003569 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003570 }
3571
3572 /*------------------------------------------------------------------------
3573 Fill in Event data and post to the Main FSM
3574 ------------------------------------------------------------------------*/
3575 wdiEventData.wdiRequest = WDI_EXIT_IMPS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003576 wdiEventData.pEventData = NULL;
3577 wdiEventData.uEventDataSize = 0;
3578 wdiEventData.pCBfnc = wdiExitImpsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003579 wdiEventData.pUserData = pUserData;
3580
3581 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3582
3583}/*WDI_ExitImpsReq*/
3584
3585/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003586 @brief WDI_EnterBmpsReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07003587 request the device to get into BMPS power state. Upon
3588 the call of this API the WLAN DAL will pack and send a
3589 HAL Enter BMPS request message to the lower RIVA
3590 sub-system if DAL is in state STARTED.
3591
3592 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003593 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003594
3595 WDI_PostAssocReq must have been called.
3596
Jeff Johnsone7245742012-09-05 17:12:55 -07003597 @param pwdiEnterBmpsReqParams: the Enter BMPS parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07003598 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003599
Jeff Johnson295189b2012-06-20 16:38:30 -07003600 wdiEnterBmpsRspCb: callback for passing back the
3601 response of the Enter BMPS operation received from the
3602 device
Jeff Johnsone7245742012-09-05 17:12:55 -07003603
Jeff Johnson295189b2012-06-20 16:38:30 -07003604 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003605 callback
3606
Jeff Johnson295189b2012-06-20 16:38:30 -07003607 @see WDI_PostAssocReq
3608 @return Result of the function call
3609*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003610WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003611WDI_EnterBmpsReq
3612(
3613 WDI_EnterBmpsReqParamsType *pwdiEnterBmpsReqParams,
3614 WDI_EnterBmpsRspCb wdiEnterBmpsRspCb,
3615 void* pUserData
3616)
3617{
3618 WDI_EventInfoType wdiEventData;
3619 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3620
3621 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003622 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003623 ------------------------------------------------------------------------*/
3624 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3625 {
3626 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3627 "WDI API call before module is initialized - Fail request");
3628
Jeff Johnsone7245742012-09-05 17:12:55 -07003629 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003630 }
3631
3632 /*------------------------------------------------------------------------
3633 Fill in Event data and post to the Main FSM
3634 ------------------------------------------------------------------------*/
3635 wdiEventData.wdiRequest = WDI_ENTER_BMPS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003636 wdiEventData.pEventData = pwdiEnterBmpsReqParams;
3637 wdiEventData.uEventDataSize = sizeof(*pwdiEnterBmpsReqParams);
3638 wdiEventData.pCBfnc = wdiEnterBmpsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003639 wdiEventData.pUserData = pUserData;
3640
3641 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3642
3643}/*WDI_EnterBmpsReq*/
3644
3645/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003646 @brief WDI_ExitBmpsReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07003647 request the device to get out of BMPS power state. Upon
3648 the call of this API the WLAN DAL will pack and send a
3649 HAL Exit BMPS request message to the lower RIVA
3650 sub-system if DAL is in state STARTED.
3651
3652 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003653 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003654
3655 WDI_PostAssocReq must have been called.
3656
Jeff Johnsone7245742012-09-05 17:12:55 -07003657 @param pwdiExitBmpsReqParams: the Exit BMPS parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07003658 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003659
Jeff Johnson295189b2012-06-20 16:38:30 -07003660 wdiExitBmpsRspCb: callback for passing back the response
3661 of the Exit BMPS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003662
Jeff Johnson295189b2012-06-20 16:38:30 -07003663 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003664 callback
3665
Jeff Johnson295189b2012-06-20 16:38:30 -07003666 @see WDI_PostAssocReq
3667 @return Result of the function call
3668*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003669WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003670WDI_ExitBmpsReq
3671(
3672 WDI_ExitBmpsReqParamsType *pwdiExitBmpsReqParams,
3673 WDI_ExitBmpsRspCb wdiExitBmpsRspCb,
3674 void* pUserData
3675)
3676{
3677 WDI_EventInfoType wdiEventData;
3678 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3679
3680 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003681 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003682 ------------------------------------------------------------------------*/
3683 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3684 {
3685 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3686 "WDI API call before module is initialized - Fail request");
3687
Jeff Johnsone7245742012-09-05 17:12:55 -07003688 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003689 }
3690
3691 /*------------------------------------------------------------------------
3692 Fill in Event data and post to the Main FSM
3693 ------------------------------------------------------------------------*/
3694 wdiEventData.wdiRequest = WDI_EXIT_BMPS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003695 wdiEventData.pEventData = pwdiExitBmpsReqParams;
3696 wdiEventData.uEventDataSize = sizeof(*pwdiExitBmpsReqParams);
3697 wdiEventData.pCBfnc = wdiExitBmpsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003698 wdiEventData.pUserData = pUserData;
3699
3700 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3701
3702}/*WDI_ExitBmpsReq*/
3703
3704/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003705 @brief WDI_EnterUapsdReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07003706 request the device to get into UAPSD power state. Upon
3707 the call of this API the WLAN DAL will pack and send a
3708 HAL Enter UAPSD request message to the lower RIVA
3709 sub-system if DAL is in state STARTED.
3710
3711 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003712 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003713
3714 WDI_PostAssocReq must have been called.
3715 WDI_SetUapsdAcParamsReq must have been called.
Jeff Johnsone7245742012-09-05 17:12:55 -07003716
3717 @param pwdiEnterUapsdReqParams: the Enter UAPSD parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07003718 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003719
Jeff Johnson295189b2012-06-20 16:38:30 -07003720 wdiEnterUapsdRspCb: callback for passing back the
3721 response of the Enter UAPSD operation received from the
3722 device
Jeff Johnsone7245742012-09-05 17:12:55 -07003723
Jeff Johnson295189b2012-06-20 16:38:30 -07003724 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003725 callback
3726
Jeff Johnson295189b2012-06-20 16:38:30 -07003727 @see WDI_PostAssocReq, WDI_SetUapsdAcParamsReq
3728 @return Result of the function call
3729*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003730WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003731WDI_EnterUapsdReq
3732(
3733 WDI_EnterUapsdReqParamsType *pwdiEnterUapsdReqParams,
3734 WDI_EnterUapsdRspCb wdiEnterUapsdRspCb,
3735 void* pUserData
3736)
3737{
3738 WDI_EventInfoType wdiEventData;
3739 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3740
3741 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003742 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003743 ------------------------------------------------------------------------*/
3744 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3745 {
3746 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3747 "WDI API call before module is initialized - Fail request");
3748
Jeff Johnsone7245742012-09-05 17:12:55 -07003749 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003750 }
3751
3752 /*------------------------------------------------------------------------
3753 Fill in Event data and post to the Main FSM
3754 ------------------------------------------------------------------------*/
3755 wdiEventData.wdiRequest = WDI_ENTER_UAPSD_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003756 wdiEventData.pEventData = pwdiEnterUapsdReqParams;
3757 wdiEventData.uEventDataSize = sizeof(*pwdiEnterUapsdReqParams);
3758 wdiEventData.pCBfnc = wdiEnterUapsdRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003759 wdiEventData.pUserData = pUserData;
3760
3761 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3762
3763}/*WDI_EnterUapsdReq*/
3764
3765/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003766 @brief WDI_ExitUapsdReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07003767 request the device to get out of UAPSD power state. Upon
3768 the call of this API the WLAN DAL will send a HAL Exit
3769 UAPSD request message to the lower RIVA sub-system if
3770 DAL is in state STARTED.
3771
3772 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003773 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003774
3775 WDI_PostAssocReq must have been called.
3776
Jeff Johnsone7245742012-09-05 17:12:55 -07003777 @param wdiExitUapsdRspCb: callback for passing back the
Jeff Johnson295189b2012-06-20 16:38:30 -07003778 response of the Exit UAPSD operation received from the
3779 device
Jeff Johnsone7245742012-09-05 17:12:55 -07003780
Jeff Johnson295189b2012-06-20 16:38:30 -07003781 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003782 callback
3783
Jeff Johnson295189b2012-06-20 16:38:30 -07003784 @see WDI_PostAssocReq
3785 @return Result of the function call
3786*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003787WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003788WDI_ExitUapsdReq
3789(
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -07003790 WDI_ExitUapsdReqParamsType *pwdiExitUapsdReqParams,
Jeff Johnson295189b2012-06-20 16:38:30 -07003791 WDI_ExitUapsdRspCb wdiExitUapsdRspCb,
3792 void* pUserData
3793)
3794{
3795 WDI_EventInfoType wdiEventData;
3796 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3797
3798 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003799 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003800 ------------------------------------------------------------------------*/
3801 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3802 {
3803 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3804 "WDI API call before module is initialized - Fail request");
3805
Jeff Johnsone7245742012-09-05 17:12:55 -07003806 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003807 }
3808
3809 /*------------------------------------------------------------------------
3810 Fill in Event data and post to the Main FSM
3811 ------------------------------------------------------------------------*/
3812 wdiEventData.wdiRequest = WDI_EXIT_UAPSD_REQ;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -07003813 wdiEventData.pEventData = pwdiExitUapsdReqParams;
3814 wdiEventData.uEventDataSize = sizeof(*pwdiExitUapsdReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07003815 wdiEventData.pCBfnc = wdiExitUapsdRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003816 wdiEventData.pUserData = pUserData;
3817
3818 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3819
3820}/*WDI_ExitUapsdReq*/
3821
3822/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003823 @brief WDI_UpdateUapsdParamsReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07003824 MAC wants to set the UAPSD related configurations
3825 of an associated STA (while acting as an AP) to the WLAN
3826 Device. Upon the call of this API the WLAN DAL will pack
3827 and send a HAL Update UAPSD params request message to
3828 the lower RIVA sub-system if DAL is in state STARTED.
3829
3830 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003831 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003832
3833 WDI_ConfigBSSReq must have been called.
3834
Jeff Johnsone7245742012-09-05 17:12:55 -07003835 @param pwdiUpdateUapsdReqParams: the UAPSD parameters
Jeff Johnson295189b2012-06-20 16:38:30 -07003836 as specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003837
Jeff Johnson295189b2012-06-20 16:38:30 -07003838 wdiUpdateUapsdParamsCb: callback for passing back the
3839 response of the update UAPSD params operation received
3840 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003841
Jeff Johnson295189b2012-06-20 16:38:30 -07003842 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003843 callback
3844
Jeff Johnson295189b2012-06-20 16:38:30 -07003845 @see WDI_ConfigBSSReq
3846 @return Result of the function call
3847*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003848WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003849WDI_UpdateUapsdParamsReq
3850(
3851 WDI_UpdateUapsdReqParamsType *pwdiUpdateUapsdReqParams,
3852 WDI_UpdateUapsdParamsCb wdiUpdateUapsdParamsCb,
3853 void* pUserData
3854)
3855{
3856 WDI_EventInfoType wdiEventData;
3857 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3858
3859 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003860 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003861 ------------------------------------------------------------------------*/
3862 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3863 {
3864 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3865 "WDI API call before module is initialized - Fail request");
3866
Jeff Johnsone7245742012-09-05 17:12:55 -07003867 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003868 }
3869
3870 /*------------------------------------------------------------------------
3871 Fill in Event data and post to the Main FSM
3872 ------------------------------------------------------------------------*/
3873 wdiEventData.wdiRequest = WDI_UPDATE_UAPSD_PARAM_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003874 wdiEventData.pEventData = pwdiUpdateUapsdReqParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07003875 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateUapsdReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07003876 wdiEventData.pCBfnc = wdiUpdateUapsdParamsCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003877 wdiEventData.pUserData = pUserData;
3878
3879 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3880
3881}/*WDI_UpdateUapsdParamsReq*/
3882
3883/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003884 @brief WDI_SetUapsdAcParamsReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07003885 MAC wants to set the UAPSD related configurations before
3886 requesting for enter UAPSD power state to the WLAN
3887 Device. Upon the call of this API the WLAN DAL will pack
3888 and send a HAL Set UAPSD params request message to
3889 the lower RIVA sub-system if DAL is in state STARTED.
3890
3891 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003892 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003893
3894 WDI_PostAssocReq must have been called.
3895
3896 @param pwdiUapsdInfo: the UAPSD parameters as specified by
3897 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003898
Jeff Johnson295189b2012-06-20 16:38:30 -07003899 wdiSetUapsdAcParamsCb: callback for passing back the
3900 response of the set UAPSD params operation received from
3901 the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003902
Jeff Johnson295189b2012-06-20 16:38:30 -07003903 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003904 callback
3905
Jeff Johnson295189b2012-06-20 16:38:30 -07003906 @see WDI_PostAssocReq
3907 @return Result of the function call
3908*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003909WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003910WDI_SetUapsdAcParamsReq
3911(
3912 WDI_SetUapsdAcParamsReqParamsType* pwdiUapsdInfo,
3913 WDI_SetUapsdAcParamsCb wdiSetUapsdAcParamsCb,
3914 void* pUserData
3915)
3916{
3917 WDI_EventInfoType wdiEventData;
3918 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3919
3920 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003921 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003922 ------------------------------------------------------------------------*/
3923 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3924 {
3925 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3926 "WDI API call before module is initialized - Fail request");
3927
Jeff Johnsone7245742012-09-05 17:12:55 -07003928 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003929 }
3930
3931 /*------------------------------------------------------------------------
3932 Fill in Event data and post to the Main FSM
3933 ------------------------------------------------------------------------*/
3934 wdiEventData.wdiRequest = WDI_SET_UAPSD_PARAM_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003935 wdiEventData.pEventData = pwdiUapsdInfo;
3936 wdiEventData.uEventDataSize = sizeof(*pwdiUapsdInfo);
3937 wdiEventData.pCBfnc = wdiSetUapsdAcParamsCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003938 wdiEventData.pUserData = pUserData;
3939
3940 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3941
3942}/*WDI_SetUapsdAcParamsReq*/
3943
3944/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003945 @brief WDI_ConfigureRxpFilterReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07003946 MAC wants to set/reset the RXP filters for received pkts
3947 (MC, BC etc.). Upon the call of this API the WLAN DAL will pack
3948 and send a HAL configure RXP filter request message to
3949 the lower RIVA sub-system.
3950
3951 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003952 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003953
Jeff Johnsone7245742012-09-05 17:12:55 -07003954
3955 @param pwdiConfigureRxpFilterReqParams: the RXP
Jeff Johnson295189b2012-06-20 16:38:30 -07003956 filter as specified by the Device
3957 Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003958
Jeff Johnson295189b2012-06-20 16:38:30 -07003959 wdiConfigureRxpFilterCb: callback for passing back the
3960 response of the configure RXP filter operation received
3961 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003962
Jeff Johnson295189b2012-06-20 16:38:30 -07003963 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003964 callback
3965
Jeff Johnson295189b2012-06-20 16:38:30 -07003966 @return Result of the function call
3967*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003968WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003969WDI_ConfigureRxpFilterReq
3970(
3971 WDI_ConfigureRxpFilterReqParamsType *pwdiConfigureRxpFilterReqParams,
3972 WDI_ConfigureRxpFilterCb wdiConfigureRxpFilterCb,
3973 void* pUserData
3974)
3975{
3976 WDI_EventInfoType wdiEventData;
3977 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3978
3979 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003980 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003981 ------------------------------------------------------------------------*/
3982 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3983 {
3984 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3985 "WDI API call before module is initialized - Fail request");
3986
Jeff Johnsone7245742012-09-05 17:12:55 -07003987 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003988 }
3989
3990 /*------------------------------------------------------------------------
3991 Fill in Event data and post to the Main FSM
3992 ------------------------------------------------------------------------*/
3993 wdiEventData.wdiRequest = WDI_CONFIGURE_RXP_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003994 wdiEventData.pEventData = pwdiConfigureRxpFilterReqParams;
3995 wdiEventData.uEventDataSize = sizeof(*pwdiConfigureRxpFilterReqParams);
3996 wdiEventData.pCBfnc = wdiConfigureRxpFilterCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003997 wdiEventData.pUserData = pUserData;
3998
3999 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4000}/*WDI_ConfigureRxpFilterReq*/
4001
4002/**
4003 @brief WDI_SetBeaconFilterReq will be called when the upper MAC
4004 wants to set the beacon filters while in power save.
4005 Upon the call of this API the WLAN DAL will pack and
4006 send a Beacon filter request message to the
4007 lower RIVA sub-system.
4008
4009 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004010 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004011
Jeff Johnsone7245742012-09-05 17:12:55 -07004012
4013 @param pwdiBeaconFilterReqParams: the beacon
Jeff Johnson295189b2012-06-20 16:38:30 -07004014 filter as specified by the Device
4015 Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004016
Jeff Johnson295189b2012-06-20 16:38:30 -07004017 wdiBeaconFilterCb: callback for passing back the
4018 response of the set beacon filter operation received
4019 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004020
Jeff Johnson295189b2012-06-20 16:38:30 -07004021 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004022 callback
4023
Jeff Johnson295189b2012-06-20 16:38:30 -07004024 @return Result of the function call
4025*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004026WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004027WDI_SetBeaconFilterReq
4028(
4029 WDI_BeaconFilterReqParamsType *pwdiBeaconFilterReqParams,
4030 WDI_SetBeaconFilterCb wdiBeaconFilterCb,
4031 void* pUserData
4032)
4033{
4034 WDI_EventInfoType wdiEventData;
4035 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4036
4037 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004038 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004039 ------------------------------------------------------------------------*/
4040 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4041 {
4042 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4043 "WDI API call before module is initialized - Fail request");
4044
Jeff Johnsone7245742012-09-05 17:12:55 -07004045 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004046 }
4047
4048 /*------------------------------------------------------------------------
4049 Fill in Event data and post to the Main FSM
4050 ------------------------------------------------------------------------*/
4051 wdiEventData.wdiRequest = WDI_SET_BEACON_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004052 wdiEventData.pEventData = pwdiBeaconFilterReqParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07004053 wdiEventData.uEventDataSize = sizeof(*pwdiBeaconFilterReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004054 wdiEventData.pCBfnc = wdiBeaconFilterCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004055 wdiEventData.pUserData = pUserData;
4056
4057 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4058}/*WDI_SetBeaconFilterReq*/
4059
4060/**
4061 @brief WDI_RemBeaconFilterReq will be called when the upper MAC
4062 wants to remove the beacon filter for particular IE
4063 while in power save. Upon the call of this API the WLAN
4064 DAL will pack and send a remove Beacon filter request
4065 message to the lower RIVA sub-system.
4066
4067 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004068 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004069
Jeff Johnsone7245742012-09-05 17:12:55 -07004070
4071 @param pwdiBeaconFilterReqParams: the beacon
Jeff Johnson295189b2012-06-20 16:38:30 -07004072 filter as specified by the Device
4073 Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004074
Jeff Johnson295189b2012-06-20 16:38:30 -07004075 wdiBeaconFilterCb: callback for passing back the
4076 response of the remove beacon filter operation received
4077 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004078
Jeff Johnson295189b2012-06-20 16:38:30 -07004079 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004080 callback
4081
Jeff Johnson295189b2012-06-20 16:38:30 -07004082 @return Result of the function call
4083*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004084WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004085WDI_RemBeaconFilterReq
4086(
4087 WDI_RemBeaconFilterReqParamsType *pwdiBeaconFilterReqParams,
4088 WDI_RemBeaconFilterCb wdiBeaconFilterCb,
4089 void* pUserData
4090)
4091{
4092 WDI_EventInfoType wdiEventData;
4093 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4094
4095 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004096 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004097 ------------------------------------------------------------------------*/
4098 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4099 {
4100 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4101 "WDI API call before module is initialized - Fail request");
4102
Jeff Johnsone7245742012-09-05 17:12:55 -07004103 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004104 }
4105
4106 /*------------------------------------------------------------------------
4107 Fill in Event data and post to the Main FSM
4108 ------------------------------------------------------------------------*/
4109 wdiEventData.wdiRequest = WDI_REM_BEACON_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004110 wdiEventData.pEventData = pwdiBeaconFilterReqParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07004111 wdiEventData.uEventDataSize = sizeof(*pwdiBeaconFilterReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004112 wdiEventData.pCBfnc = wdiBeaconFilterCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004113 wdiEventData.pUserData = pUserData;
4114
4115 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4116}/*WDI_RemBeaconFilterReq*/
4117
4118/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004119 @brief WDI_SetRSSIThresholdsReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07004120 MAC wants to set the RSSI thresholds related
4121 configurations while in power save. Upon the call of
4122 this API the WLAN DAL will pack and send a HAL Set RSSI
4123 thresholds request message to the lower RIVA
4124 sub-system if DAL is in state STARTED.
4125
4126 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004127 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004128
4129 WDI_PostAssocReq must have been called.
4130
4131 @param pwdiUapsdInfo: the UAPSD parameters as specified by
4132 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004133
Jeff Johnson295189b2012-06-20 16:38:30 -07004134 wdiSetUapsdAcParamsCb: callback for passing back the
4135 response of the set UAPSD params operation received from
4136 the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004137
Jeff Johnson295189b2012-06-20 16:38:30 -07004138 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004139 callback
4140
Jeff Johnson295189b2012-06-20 16:38:30 -07004141 @see WDI_PostAssocReq
4142 @return Result of the function call
4143*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004144WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004145WDI_SetRSSIThresholdsReq
4146(
4147 WDI_SetRSSIThresholdsReqParamsType* pwdiRSSIThresholdsParams,
4148 WDI_SetRSSIThresholdsCb wdiSetRSSIThresholdsCb,
4149 void* pUserData
4150)
4151{
4152 WDI_EventInfoType wdiEventData;
4153 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4154
4155 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004156 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004157 ------------------------------------------------------------------------*/
4158 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4159 {
4160 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4161 "WDI API call before module is initialized - Fail request");
4162
Jeff Johnsone7245742012-09-05 17:12:55 -07004163 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004164 }
4165
4166 /*------------------------------------------------------------------------
4167 Fill in Event data and post to the Main FSM
4168 ------------------------------------------------------------------------*/
4169 wdiEventData.wdiRequest = WDI_SET_RSSI_THRESHOLDS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004170 wdiEventData.pEventData = pwdiRSSIThresholdsParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07004171 wdiEventData.uEventDataSize = sizeof(*pwdiRSSIThresholdsParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004172 wdiEventData.pCBfnc = wdiSetRSSIThresholdsCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004173 wdiEventData.pUserData = pUserData;
4174
4175 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4176}/* WDI_SetRSSIThresholdsReq*/
4177
4178/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004179 @brief WDI_HostOffloadReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004180 wants to set the filter to minimize unnecessary host
4181 wakeup due to broadcast traffic while in power save.
4182 Upon the call of this API the WLAN DAL will pack and
4183 send a HAL host offload request message to the
4184 lower RIVA sub-system if DAL is in state STARTED.
4185
4186 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004187 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004188
4189 WDI_PostAssocReq must have been called.
4190
Jeff Johnsone7245742012-09-05 17:12:55 -07004191 @param pwdiHostOffloadParams: the host offload as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07004192 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004193
Jeff Johnson295189b2012-06-20 16:38:30 -07004194 wdiHostOffloadCb: callback for passing back the response
4195 of the host offload operation received from the
4196 device
Jeff Johnsone7245742012-09-05 17:12:55 -07004197
Jeff Johnson295189b2012-06-20 16:38:30 -07004198 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004199 callback
4200
Jeff Johnson295189b2012-06-20 16:38:30 -07004201 @see WDI_PostAssocReq
4202 @return Result of the function call
4203*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004204WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004205WDI_HostOffloadReq
4206(
4207 WDI_HostOffloadReqParamsType* pwdiHostOffloadParams,
4208 WDI_HostOffloadCb wdiHostOffloadCb,
4209 void* pUserData
4210)
4211{
4212 WDI_EventInfoType wdiEventData;
4213 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4214
4215 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004216 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004217 ------------------------------------------------------------------------*/
4218 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4219 {
4220 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4221 "WDI API call before module is initialized - Fail request");
4222
Jeff Johnsone7245742012-09-05 17:12:55 -07004223 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004224 }
4225
4226 /*------------------------------------------------------------------------
4227 Fill in Event data and post to the Main FSM
4228 ------------------------------------------------------------------------*/
4229 wdiEventData.wdiRequest = WDI_HOST_OFFLOAD_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004230 wdiEventData.pEventData = pwdiHostOffloadParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07004231 wdiEventData.uEventDataSize = sizeof(*pwdiHostOffloadParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004232 wdiEventData.pCBfnc = wdiHostOffloadCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004233 wdiEventData.pUserData = pUserData;
4234
4235 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4236}/*WDI_HostOffloadReq*/
4237
4238/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004239 @brief WDI_KeepAliveReq will be called when the upper MAC
4240 wants to set the filter to send NULL or unsolicited ARP responses
Jeff Johnson295189b2012-06-20 16:38:30 -07004241 and minimize unnecessary host wakeups due to while in power save.
4242 Upon the call of this API the WLAN DAL will pack and
4243 send a HAL Keep Alive request message to the
4244 lower RIVA sub-system if DAL is in state STARTED.
4245
4246 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004247 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004248
4249 WDI_PostAssocReq must have been called.
4250
Jeff Johnsone7245742012-09-05 17:12:55 -07004251 @param pwdiKeepAliveParams: the Keep Alive as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07004252 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004253
Jeff Johnson295189b2012-06-20 16:38:30 -07004254 wdiKeepAliveCb: callback for passing back the response
4255 of the Keep Alive operation received from the
4256 device
Jeff Johnsone7245742012-09-05 17:12:55 -07004257
Jeff Johnson295189b2012-06-20 16:38:30 -07004258 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004259 callback
4260
Jeff Johnson295189b2012-06-20 16:38:30 -07004261 @see WDI_PostAssocReq
4262 @return Result of the function call
4263*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004264WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004265WDI_KeepAliveReq
4266(
4267 WDI_KeepAliveReqParamsType* pwdiKeepAliveParams,
4268 WDI_KeepAliveCb wdiKeepAliveCb,
4269 void* pUserData
4270)
4271{
4272 WDI_EventInfoType wdiEventData;
4273 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4274
4275 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004276 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004277 ------------------------------------------------------------------------*/
4278 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4279 {
4280 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4281 "WDI_KeepAliveReq: WDI API call before module "
4282 "is initialized - Fail request");
4283
Jeff Johnsone7245742012-09-05 17:12:55 -07004284 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004285 }
4286
4287 /*------------------------------------------------------------------------
4288 Fill in Event data and post to the Main FSM
4289 ------------------------------------------------------------------------*/
4290 wdiEventData.wdiRequest = WDI_KEEP_ALIVE_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004291 wdiEventData.pEventData = pwdiKeepAliveParams;
4292 wdiEventData.uEventDataSize = sizeof(*pwdiKeepAliveParams);
4293 wdiEventData.pCBfnc = wdiKeepAliveCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004294 wdiEventData.pUserData = pUserData;
4295
4296 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4297}/*WDI_KeepAliveReq*/
4298
4299/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004300 @brief WDI_WowlAddBcPtrnReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004301 wants to set the Wowl Bcast ptrn to minimize unnecessary
4302 host wakeup due to broadcast traffic while in power
4303 save. Upon the call of this API the WLAN DAL will pack
4304 and send a HAL Wowl Bcast ptrn request message to the
4305 lower RIVA sub-system if DAL is in state STARTED.
4306
4307 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004308 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004309
4310 WDI_PostAssocReq must have been called.
4311
Jeff Johnsone7245742012-09-05 17:12:55 -07004312 @param pwdiWowlAddBcPtrnParams: the Wowl bcast ptrn as
Jeff Johnson295189b2012-06-20 16:38:30 -07004313 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004314
Jeff Johnson295189b2012-06-20 16:38:30 -07004315 wdiWowlAddBcPtrnCb: callback for passing back the
4316 response of the add Wowl bcast ptrn operation received
4317 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004318
Jeff Johnson295189b2012-06-20 16:38:30 -07004319 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004320 callback
4321
Jeff Johnson295189b2012-06-20 16:38:30 -07004322 @see WDI_PostAssocReq
4323 @return Result of the function call
4324*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004325WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004326WDI_WowlAddBcPtrnReq
4327(
4328 WDI_WowlAddBcPtrnReqParamsType* pwdiWowlAddBcPtrnParams,
4329 WDI_WowlAddBcPtrnCb wdiWowlAddBcPtrnCb,
4330 void* pUserData
4331)
4332{
4333 WDI_EventInfoType wdiEventData;
4334 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4335
4336 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004337 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004338 ------------------------------------------------------------------------*/
4339 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4340 {
4341 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4342 "WDI API call before module is initialized - Fail request");
4343
Jeff Johnsone7245742012-09-05 17:12:55 -07004344 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004345 }
4346
4347 /*------------------------------------------------------------------------
4348 Fill in Event data and post to the Main FSM
4349 ------------------------------------------------------------------------*/
4350 wdiEventData.wdiRequest = WDI_WOWL_ADD_BC_PTRN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004351 wdiEventData.pEventData = pwdiWowlAddBcPtrnParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07004352 wdiEventData.uEventDataSize = sizeof(*pwdiWowlAddBcPtrnParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004353 wdiEventData.pCBfnc = wdiWowlAddBcPtrnCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004354 wdiEventData.pUserData = pUserData;
4355
4356 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4357}/*WDI_WowlAddBcPtrnReq*/
4358
4359/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004360 @brief WDI_WowlDelBcPtrnReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004361 wants to clear the Wowl Bcast ptrn. Upon the call of
4362 this API the WLAN DAL will pack and send a HAL delete
4363 Wowl Bcast ptrn request message to the lower RIVA
4364 sub-system if DAL is in state STARTED.
4365
4366 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004367 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004368
4369 WDI_WowlAddBcPtrnReq must have been called.
4370
Jeff Johnsone7245742012-09-05 17:12:55 -07004371 @param pwdiWowlDelBcPtrnParams: the Wowl bcast ptrn as
Jeff Johnson295189b2012-06-20 16:38:30 -07004372 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004373
Jeff Johnson295189b2012-06-20 16:38:30 -07004374 wdiWowlDelBcPtrnCb: callback for passing back the
4375 response of the del Wowl bcast ptrn operation received
4376 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004377
Jeff Johnson295189b2012-06-20 16:38:30 -07004378 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004379 callback
4380
Jeff Johnson295189b2012-06-20 16:38:30 -07004381 @see WDI_WowlAddBcPtrnReq
4382 @return Result of the function call
4383*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004384WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004385WDI_WowlDelBcPtrnReq
4386(
4387 WDI_WowlDelBcPtrnReqParamsType* pwdiWowlDelBcPtrnParams,
4388 WDI_WowlDelBcPtrnCb wdiWowlDelBcPtrnCb,
4389 void* pUserData
4390)
4391{
4392 WDI_EventInfoType wdiEventData;
4393 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4394
4395 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004396 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004397 ------------------------------------------------------------------------*/
4398 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4399 {
4400 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4401 "WDI API call before module is initialized - Fail request");
4402
Jeff Johnsone7245742012-09-05 17:12:55 -07004403 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004404 }
4405
4406 /*------------------------------------------------------------------------
4407 Fill in Event data and post to the Main FSM
4408 ------------------------------------------------------------------------*/
4409 wdiEventData.wdiRequest = WDI_WOWL_DEL_BC_PTRN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004410 wdiEventData.pEventData = pwdiWowlDelBcPtrnParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07004411 wdiEventData.uEventDataSize = sizeof(*pwdiWowlDelBcPtrnParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004412 wdiEventData.pCBfnc = wdiWowlDelBcPtrnCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004413 wdiEventData.pUserData = pUserData;
4414
4415 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4416}/*WDI_WowlDelBcPtrnReq*/
4417
4418/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004419 @brief WDI_WowlEnterReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004420 wants to enter the Wowl state to minimize unnecessary
4421 host wakeup while in power save. Upon the call of this
4422 API the WLAN DAL will pack and send a HAL Wowl enter
4423 request message to the lower RIVA sub-system if DAL is
4424 in state STARTED.
4425
4426 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004427 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004428
4429 WDI_PostAssocReq must have been called.
4430
Jeff Johnsone7245742012-09-05 17:12:55 -07004431 @param pwdiWowlEnterReqParams: the Wowl enter info as
Jeff Johnson295189b2012-06-20 16:38:30 -07004432 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004433
Jeff Johnson295189b2012-06-20 16:38:30 -07004434 wdiWowlEnterReqCb: callback for passing back the
4435 response of the enter Wowl operation received from the
4436 device
Jeff Johnsone7245742012-09-05 17:12:55 -07004437
Jeff Johnson295189b2012-06-20 16:38:30 -07004438 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004439 callback
4440
Jeff Johnson295189b2012-06-20 16:38:30 -07004441 @see WDI_PostAssocReq
4442 @return Result of the function call
4443*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004444WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004445WDI_WowlEnterReq
4446(
4447 WDI_WowlEnterReqParamsType* pwdiWowlEnterParams,
4448 WDI_WowlEnterReqCb wdiWowlEnterCb,
4449 void* pUserData
4450)
4451{
4452 WDI_EventInfoType wdiEventData;
4453 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4454
4455 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004456 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004457 ------------------------------------------------------------------------*/
4458 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4459 {
4460 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4461 "WDI API call before module is initialized - Fail request");
4462
Jeff Johnsone7245742012-09-05 17:12:55 -07004463 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004464 }
4465
4466 /*------------------------------------------------------------------------
4467 Fill in Event data and post to the Main FSM
4468 ------------------------------------------------------------------------*/
4469 wdiEventData.wdiRequest = WDI_WOWL_ENTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004470 wdiEventData.pEventData = pwdiWowlEnterParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07004471 wdiEventData.uEventDataSize = sizeof(*pwdiWowlEnterParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004472 wdiEventData.pCBfnc = wdiWowlEnterCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004473 wdiEventData.pUserData = pUserData;
4474
4475 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4476}/*WDI_WowlEnterReq*/
4477
4478/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004479 @brief WDI_WowlExitReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004480 wants to exit the Wowl state. Upon the call of this API
4481 the WLAN DAL will pack and send a HAL Wowl exit request
4482 message to the lower RIVA sub-system if DAL is in state
4483 STARTED.
4484
4485 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004486 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004487
4488 WDI_WowlEnterReq must have been called.
4489
Jeff Johnsone7245742012-09-05 17:12:55 -07004490 @param pwdiWowlExitReqParams: the Wowl exit info as
Jeff Johnson295189b2012-06-20 16:38:30 -07004491 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004492
Jeff Johnson295189b2012-06-20 16:38:30 -07004493 wdiWowlExitReqCb: callback for passing back the response
4494 of the exit Wowl operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004495
Jeff Johnson295189b2012-06-20 16:38:30 -07004496 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004497 callback
4498
Jeff Johnson295189b2012-06-20 16:38:30 -07004499 @see WDI_WowlEnterReq
4500 @return Result of the function call
4501*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004502WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004503WDI_WowlExitReq
4504(
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -07004505 WDI_WowlExitReqParamsType* pwdiWowlExitParams,
Jeff Johnson295189b2012-06-20 16:38:30 -07004506 WDI_WowlExitReqCb wdiWowlExitCb,
4507 void* pUserData
4508)
4509{
4510 WDI_EventInfoType wdiEventData;
4511 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4512
4513 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004514 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004515 ------------------------------------------------------------------------*/
4516 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4517 {
4518 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4519 "WDI API call before module is initialized - Fail request");
4520
Jeff Johnsone7245742012-09-05 17:12:55 -07004521 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004522 }
4523
4524 /*------------------------------------------------------------------------
4525 Fill in Event data and post to the Main FSM
4526 ------------------------------------------------------------------------*/
4527 wdiEventData.wdiRequest = WDI_WOWL_EXIT_REQ;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -07004528 wdiEventData.pEventData = pwdiWowlExitParams;
4529 wdiEventData.uEventDataSize = sizeof(*pwdiWowlExitParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004530 wdiEventData.pCBfnc = wdiWowlExitCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004531 wdiEventData.pUserData = pUserData;
4532
4533 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4534}/*WDI_WowlExitReq*/
4535
4536/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004537 @brief WDI_ConfigureAppsCpuWakeupStateReq will be called when
Jeff Johnson295189b2012-06-20 16:38:30 -07004538 the upper MAC wants to dynamically adjusts the listen
4539 interval based on the WLAN/MSM activity. Upon the call
4540 of this API the WLAN DAL will pack and send a HAL
4541 configure Apps Cpu Wakeup State request message to the
4542 lower RIVA sub-system.
4543
4544 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004545 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004546
Jeff Johnsone7245742012-09-05 17:12:55 -07004547
4548 @param pwdiConfigureAppsCpuWakeupStateReqParams: the
Jeff Johnson295189b2012-06-20 16:38:30 -07004549 Apps Cpu Wakeup State as specified by the
4550 Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004551
Jeff Johnson295189b2012-06-20 16:38:30 -07004552 wdiConfigureAppsCpuWakeupStateCb: callback for passing
4553 back the response of the configure Apps Cpu Wakeup State
4554 operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004555
Jeff Johnson295189b2012-06-20 16:38:30 -07004556 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004557 callback
4558
Jeff Johnson295189b2012-06-20 16:38:30 -07004559 @return Result of the function call
4560*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004561WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004562WDI_ConfigureAppsCpuWakeupStateReq
4563(
4564 WDI_ConfigureAppsCpuWakeupStateReqParamsType *pwdiConfigureAppsCpuWakeupStateReqParams,
4565 WDI_ConfigureAppsCpuWakeupStateCb wdiConfigureAppsCpuWakeupStateCb,
4566 void* pUserData
4567)
4568{
4569 WDI_EventInfoType wdiEventData;
4570 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4571
4572 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004573 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004574 ------------------------------------------------------------------------*/
4575 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4576 {
4577 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4578 "WDI API call before module is initialized - Fail request");
4579
Jeff Johnsone7245742012-09-05 17:12:55 -07004580 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004581 }
4582
4583 /*------------------------------------------------------------------------
4584 Fill in Event data and post to the Main FSM
4585 ------------------------------------------------------------------------*/
4586 wdiEventData.wdiRequest = WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004587 wdiEventData.pEventData = pwdiConfigureAppsCpuWakeupStateReqParams;
4588 wdiEventData.uEventDataSize = sizeof(*pwdiConfigureAppsCpuWakeupStateReqParams);
4589 wdiEventData.pCBfnc = wdiConfigureAppsCpuWakeupStateCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004590 wdiEventData.pUserData = pUserData;
4591
4592 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4593}/*WDI_ConfigureAppsCpuWakeupStateReq*/
4594/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004595 @brief WDI_FlushAcReq will be called when the upper MAC wants
Jeff Johnson295189b2012-06-20 16:38:30 -07004596 to to perform a flush operation on a given AC. Upon the
4597 call of this API the WLAN DAL will pack and send a HAL
4598 Flush AC request message to the lower RIVA sub-system if
4599 DAL is in state STARTED.
4600
4601 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004602 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004603
4604 WDI_AddBAReq must have been called.
4605
Jeff Johnsone7245742012-09-05 17:12:55 -07004606 @param pwdiFlushAcReqParams: the Flush AC parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07004607 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004608
Jeff Johnson295189b2012-06-20 16:38:30 -07004609 wdiFlushAcRspCb: callback for passing back the response
4610 of the Flush AC operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004611
Jeff Johnson295189b2012-06-20 16:38:30 -07004612 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004613 callback
4614
Jeff Johnson295189b2012-06-20 16:38:30 -07004615 @see WDI_AddBAReq
4616 @return Result of the function call
4617*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004618WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004619WDI_FlushAcReq
4620(
4621 WDI_FlushAcReqParamsType* pwdiFlushAcReqParams,
4622 WDI_FlushAcRspCb wdiFlushAcRspCb,
4623 void* pUserData
4624)
4625{
4626 WDI_EventInfoType wdiEventData;
4627 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4628
4629 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004630 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004631 ------------------------------------------------------------------------*/
4632 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4633 {
4634 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4635 "WDI API call before module is initialized - Fail request");
4636
Jeff Johnsone7245742012-09-05 17:12:55 -07004637 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004638 }
4639
4640 /*------------------------------------------------------------------------
4641 Fill in Event data and post to the Main FSM
4642 ------------------------------------------------------------------------*/
4643 wdiEventData.wdiRequest = WDI_FLUSH_AC_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004644 wdiEventData.pEventData = pwdiFlushAcReqParams;
4645 wdiEventData.uEventDataSize = sizeof(*pwdiFlushAcReqParams);
4646 wdiEventData.pCBfnc = wdiFlushAcRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004647 wdiEventData.pUserData = pUserData;
4648
4649 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4650
4651}/*WDI_FlushAcReq*/
4652
4653/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004654 @brief WDI_BtAmpEventReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004655 wants to notify the lower mac on a BT AMP event. This is
4656 to inform BTC-SLM that some BT AMP event occurred. Upon
4657 the call of this API the WLAN DAL will pack and send a
4658 HAL BT AMP event request message to the lower RIVA
4659 sub-system if DAL is in state STARTED.
4660
4661 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004662 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004663
Jeff Johnsone7245742012-09-05 17:12:55 -07004664
4665 @param wdiBtAmpEventReqParams: the BT AMP event parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07004666 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004667
Jeff Johnson295189b2012-06-20 16:38:30 -07004668 wdiBtAmpEventRspCb: callback for passing back the
4669 response of the BT AMP event operation received from the
4670 device
Jeff Johnsone7245742012-09-05 17:12:55 -07004671
Jeff Johnson295189b2012-06-20 16:38:30 -07004672 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004673 callback
4674
Jeff Johnson295189b2012-06-20 16:38:30 -07004675 @return Result of the function call
4676*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004677WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004678WDI_BtAmpEventReq
4679(
4680 WDI_BtAmpEventParamsType* pwdiBtAmpEventReqParams,
4681 WDI_BtAmpEventRspCb wdiBtAmpEventRspCb,
4682 void* pUserData
4683)
4684{
4685 WDI_EventInfoType wdiEventData;
4686 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4687
4688 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004689 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004690 ------------------------------------------------------------------------*/
4691 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4692 {
4693 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4694 "WDI API call before module is initialized - Fail request");
4695
Jeff Johnsone7245742012-09-05 17:12:55 -07004696 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004697 }
4698
4699 /*------------------------------------------------------------------------
4700 Fill in Event data and post to the Main FSM
4701 ------------------------------------------------------------------------*/
4702 wdiEventData.wdiRequest = WDI_BTAMP_EVENT_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004703 wdiEventData.pEventData = pwdiBtAmpEventReqParams;
4704 wdiEventData.uEventDataSize = sizeof(*pwdiBtAmpEventReqParams);
4705 wdiEventData.pCBfnc = wdiBtAmpEventRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004706 wdiEventData.pUserData = pUserData;
4707
4708 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4709
4710}/*WDI_BtAmpEventReq*/
4711
Jeff Johnsone7245742012-09-05 17:12:55 -07004712#ifdef FEATURE_OEM_DATA_SUPPORT
4713/**
4714 @brief WDI_Start Oem Data Req will be called when the upper MAC
4715 wants to notify the lower mac on a oem data Req event.Upon
4716 the call of this API the WLAN DAL will pack and send a
4717 HAL OEM Data Req event request message to the lower RIVA
4718 sub-system if DAL is in state STARTED.
4719
4720 In state BUSY this request will be queued. Request won't
4721 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004722
4723
Jeff Johnsone7245742012-09-05 17:12:55 -07004724
4725 @param pwdiOemDataReqParams: the Oem Data Req as
4726 specified by the Device Interface
4727
4728 wdiStartOemDataRspCb: callback for passing back the
4729 response of the Oem Data Req received from the
4730 device
4731
4732 pUserData: user data will be passed back with the
4733 callback
4734
4735 @return Result of the function call
4736*/
4737WDI_Status
4738WDI_StartOemDataReq
4739(
4740 WDI_oemDataReqParamsType* pwdiOemDataReqParams,
4741 WDI_oemDataRspCb wdiOemDataRspCb,
4742 void* pUserData
4743)
4744{
4745 WDI_EventInfoType wdiEventData;
4746 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4747
4748 /*------------------------------------------------------------------------
4749 Sanity Check
4750 ------------------------------------------------------------------------*/
4751 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4752 {
4753 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4754 "WDI API call before module is initialized - Fail request");
4755
4756 return WDI_STATUS_E_NOT_ALLOWED;
4757 }
4758
4759 /*------------------------------------------------------------------------
4760 Fill in Event data and post to the Main FSM
4761 ------------------------------------------------------------------------*/
4762 wdiEventData.wdiRequest = WDI_START_OEM_DATA_REQ;
4763 wdiEventData.pEventData = pwdiOemDataReqParams;
4764 wdiEventData.uEventDataSize = sizeof(*pwdiOemDataReqParams);
4765 wdiEventData.pCBfnc = wdiOemDataRspCb;
4766 wdiEventData.pUserData = pUserData;
4767
4768 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4769
4770
4771}
4772
4773#endif
4774
4775
4776/*========================================================================
4777
Jeff Johnson295189b2012-06-20 16:38:30 -07004778 CONTROL APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07004779
Jeff Johnson295189b2012-06-20 16:38:30 -07004780==========================================================================*/
4781/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004782 @brief WDI_SwitchChReq will be called when the upper MAC wants
Jeff Johnson295189b2012-06-20 16:38:30 -07004783 the WLAN HW to change the current channel of operation.
4784 Upon the call of this API the WLAN DAL will pack and
4785 send a HAL Start request message to the lower RIVA
4786 sub-system if DAL is in state STARTED.
4787
4788 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004789 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004790
4791 WDI_Start must have been called.
4792
Jeff Johnsone7245742012-09-05 17:12:55 -07004793 @param wdiSwitchChReqParams: the switch ch parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07004794 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004795
Jeff Johnson295189b2012-06-20 16:38:30 -07004796 wdiSwitchChRspCb: callback for passing back the response
4797 of the switch ch operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004798
Jeff Johnson295189b2012-06-20 16:38:30 -07004799 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004800 callback
4801
Jeff Johnson295189b2012-06-20 16:38:30 -07004802 @see WDI_Start
4803 @return Result of the function call
4804*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004805WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004806WDI_SwitchChReq
4807(
4808 WDI_SwitchChReqParamsType* pwdiSwitchChReqParams,
4809 WDI_SwitchChRspCb wdiSwitchChRspCb,
4810 void* pUserData
4811)
4812{
4813 WDI_EventInfoType wdiEventData;
4814 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4815
4816 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004817 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004818 ------------------------------------------------------------------------*/
4819 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4820 {
4821 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4822 "WDI API call before module is initialized - Fail request");
4823
Jeff Johnsone7245742012-09-05 17:12:55 -07004824 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004825 }
4826
4827 /*------------------------------------------------------------------------
4828 Fill in Event data and post to the Main FSM
4829 ------------------------------------------------------------------------*/
4830 wdiEventData.wdiRequest = WDI_CH_SWITCH_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004831 wdiEventData.pEventData = pwdiSwitchChReqParams;
4832 wdiEventData.uEventDataSize = sizeof(*pwdiSwitchChReqParams);
4833 wdiEventData.pCBfnc = wdiSwitchChRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004834 wdiEventData.pUserData = pUserData;
4835
4836 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4837
4838}/*WDI_SwitchChReq*/
4839
4840
4841/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004842 @brief WDI_ConfigSTAReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004843 wishes to add or update a STA in HW. Upon the call of
4844 this API the WLAN DAL will pack and send a HAL Start
4845 message request message to the lower RIVA sub-system if
4846 DAL is in state STARTED.
4847
4848 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004849 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004850
4851 WDI_Start must have been called.
4852
Jeff Johnsone7245742012-09-05 17:12:55 -07004853 @param wdiConfigSTAReqParams: the config STA parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07004854 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004855
Jeff Johnson295189b2012-06-20 16:38:30 -07004856 wdiConfigSTARspCb: callback for passing back the
4857 response of the config STA operation received from the
4858 device
Jeff Johnsone7245742012-09-05 17:12:55 -07004859
Jeff Johnson295189b2012-06-20 16:38:30 -07004860 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004861 callback
4862
Jeff Johnson295189b2012-06-20 16:38:30 -07004863 @see WDI_Start
4864 @return Result of the function call
4865*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004866WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004867WDI_ConfigSTAReq
4868(
4869 WDI_ConfigSTAReqParamsType* pwdiConfigSTAReqParams,
4870 WDI_ConfigSTARspCb wdiConfigSTARspCb,
4871 void* pUserData
4872)
4873{
4874 WDI_EventInfoType wdiEventData;
4875 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4876
4877 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004878 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004879 ------------------------------------------------------------------------*/
4880 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4881 {
4882 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4883 "WDI API call before module is initialized - Fail request");
4884
Jeff Johnsone7245742012-09-05 17:12:55 -07004885 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004886 }
4887
4888 /*------------------------------------------------------------------------
4889 Fill in Event data and post to the Main FSM
4890 ------------------------------------------------------------------------*/
4891 wdiEventData.wdiRequest = WDI_CONFIG_STA_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004892 wdiEventData.pEventData = pwdiConfigSTAReqParams;
4893 wdiEventData.uEventDataSize = sizeof(*pwdiConfigSTAReqParams);
4894 wdiEventData.pCBfnc = wdiConfigSTARspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004895 wdiEventData.pUserData = pUserData;
4896
4897 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4898
4899}/*WDI_ConfigSTAReq*/
4900
4901/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004902 @brief WDI_SetLinkStateReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004903 wants to change the state of an ongoing link. Upon the
4904 call of this API the WLAN DAL will pack and send a HAL
4905 Start message request message to the lower RIVA
4906 sub-system if DAL is in state STARTED.
4907
4908 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004909 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004910
4911 WDI_JoinStartReq must have been called.
4912
Jeff Johnsone7245742012-09-05 17:12:55 -07004913 @param wdiSetLinkStateReqParams: the set link state parameters
Jeff Johnson295189b2012-06-20 16:38:30 -07004914 as specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004915
Jeff Johnson295189b2012-06-20 16:38:30 -07004916 wdiSetLinkStateRspCb: callback for passing back the
4917 response of the set link state operation received from
4918 the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004919
Jeff Johnson295189b2012-06-20 16:38:30 -07004920 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004921 callback
4922
Jeff Johnson295189b2012-06-20 16:38:30 -07004923 @see WDI_JoinStartReq
4924 @return Result of the function call
4925*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004926WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004927WDI_SetLinkStateReq
4928(
4929 WDI_SetLinkReqParamsType* pwdiSetLinkStateReqParams,
4930 WDI_SetLinkStateRspCb wdiSetLinkStateRspCb,
4931 void* pUserData
4932)
4933{
4934 WDI_EventInfoType wdiEventData;
4935 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4936
4937 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004938 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004939 ------------------------------------------------------------------------*/
4940 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4941 {
4942 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4943 "WDI API call before module is initialized - Fail request");
4944
Jeff Johnsone7245742012-09-05 17:12:55 -07004945 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004946 }
4947
4948 /*------------------------------------------------------------------------
4949 Fill in Event data and post to the Main FSM
4950 ------------------------------------------------------------------------*/
4951 wdiEventData.wdiRequest = WDI_SET_LINK_ST_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004952 wdiEventData.pEventData = pwdiSetLinkStateReqParams;
4953 wdiEventData.uEventDataSize = sizeof(*pwdiSetLinkStateReqParams);
4954 wdiEventData.pCBfnc = wdiSetLinkStateRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004955 wdiEventData.pUserData = pUserData;
4956
4957 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4958
4959}/*WDI_SetLinkStateReq*/
4960
4961
4962/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004963 @brief WDI_GetStatsReq will be called when the upper MAC wants
Jeff Johnson295189b2012-06-20 16:38:30 -07004964 to get statistics (MIB counters) from the device. Upon
4965 the call of this API the WLAN DAL will pack and send a
4966 HAL Start request message to the lower RIVA sub-system
4967 if DAL is in state STARTED.
4968
4969 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004970 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004971
4972 WDI_Start must have been called.
4973
Jeff Johnsone7245742012-09-05 17:12:55 -07004974 @param wdiGetStatsReqParams: the stats parameters to get as
Jeff Johnson295189b2012-06-20 16:38:30 -07004975 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004976
Jeff Johnson295189b2012-06-20 16:38:30 -07004977 wdiGetStatsRspCb: callback for passing back the response
4978 of the get stats operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004979
Jeff Johnson295189b2012-06-20 16:38:30 -07004980 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004981 callback
4982
Jeff Johnson295189b2012-06-20 16:38:30 -07004983 @see WDI_Start
4984 @return Result of the function call
4985*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004986WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004987WDI_GetStatsReq
4988(
4989 WDI_GetStatsReqParamsType* pwdiGetStatsReqParams,
4990 WDI_GetStatsRspCb wdiGetStatsRspCb,
4991 void* pUserData
4992)
4993{
4994 WDI_EventInfoType wdiEventData;
4995 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4996
4997 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004998 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004999 ------------------------------------------------------------------------*/
5000 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5001 {
5002 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5003 "WDI API call before module is initialized - Fail request");
5004
Jeff Johnsone7245742012-09-05 17:12:55 -07005005 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005006 }
5007
5008 /*------------------------------------------------------------------------
5009 Fill in Event data and post to the Main FSM
5010 ------------------------------------------------------------------------*/
5011 wdiEventData.wdiRequest = WDI_GET_STATS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005012 wdiEventData.pEventData = pwdiGetStatsReqParams;
5013 wdiEventData.uEventDataSize = sizeof(*pwdiGetStatsReqParams);
5014 wdiEventData.pCBfnc = wdiGetStatsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005015 wdiEventData.pUserData = pUserData;
5016
5017 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5018
5019}/*WDI_GetStatsReq*/
5020
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -08005021#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_CCX || defined(FEATURE_WLAN_LFR)
5022/**
5023 @brief WDI_GetRoamRssiReq will be called when the upper MAC wants
5024 to get roam rssi from the device. Upon
5025 the call of this API the WLAN DAL will pack and send a
5026 HAL Start request message to the lower RIVA sub-system
5027 if DAL is in state STARTED.
5028
5029 In state BUSY this request will be queued. Request won't
5030 be allowed in any other state.
5031
5032 WDI_Start must have been called.
5033
5034 @param wdiGetRoamRssiReqParams: the stats parameters to get as
5035 specified by the Device Interface
5036
5037 wdiGetRoamRssiRspCb: callback for passing back the response
5038 of the get stats operation received from the device
5039
5040 pUserData: user data will be passed back with the
5041 callback
5042
5043 @see WDI_Start
5044 @return Result of the function call
5045*/
5046WDI_Status
5047WDI_GetRoamRssiReq
5048(
5049 WDI_GetRoamRssiReqParamsType* pwdiGetRoamRssiReqParams,
5050 WDI_GetRoamRssiRspCb wdiGetRoamRssiRspCb,
5051 void* pUserData
5052)
5053{
5054 WDI_EventInfoType wdiEventData;
5055 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5056
5057 /*------------------------------------------------------------------------
5058 Sanity Check
5059 ------------------------------------------------------------------------*/
5060 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5061 {
5062 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5063 "WDI API call before module is initialized - Fail request");
5064
5065 return WDI_STATUS_E_NOT_ALLOWED;
5066 }
5067 /*------------------------------------------------------------------------
5068 Fill in Event data and post to the Main FSM
5069 ------------------------------------------------------------------------*/
5070 wdiEventData.wdiRequest = WDI_GET_ROAM_RSSI_REQ;
5071 wdiEventData.pEventData = pwdiGetRoamRssiReqParams;
5072 wdiEventData.uEventDataSize = sizeof(*pwdiGetRoamRssiReqParams);
5073 wdiEventData.pCBfnc = wdiGetRoamRssiRspCb;
5074 wdiEventData.pUserData = pUserData;
5075
5076 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5077
5078}/*WDI_GetRoamRssiReq*/
5079#endif
5080
Jeff Johnson295189b2012-06-20 16:38:30 -07005081
5082/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005083 @brief WDI_UpdateCfgReq will be called when the upper MAC when
Jeff Johnson295189b2012-06-20 16:38:30 -07005084 it wishes to change the configuration of the WLAN
5085 Device. Upon the call of this API the WLAN DAL will pack
5086 and send a HAL Update CFG request message to the lower
5087 RIVA sub-system if DAL is in state STARTED.
5088
5089 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005090 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005091
5092 WDI_Start must have been called.
5093
Jeff Johnsone7245742012-09-05 17:12:55 -07005094 @param wdiUpdateCfgReqParams: the update cfg parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07005095 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005096
Jeff Johnson295189b2012-06-20 16:38:30 -07005097 wdiUpdateCfgsRspCb: callback for passing back the
5098 response of the update cfg operation received from the
5099 device
Jeff Johnsone7245742012-09-05 17:12:55 -07005100
Jeff Johnson295189b2012-06-20 16:38:30 -07005101 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005102 callback
5103
Jeff Johnson295189b2012-06-20 16:38:30 -07005104 @see WDI_Start
5105 @return Result of the function call
5106*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005107WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005108WDI_UpdateCfgReq
5109(
5110 WDI_UpdateCfgReqParamsType* pwdiUpdateCfgReqParams,
5111 WDI_UpdateCfgRspCb wdiUpdateCfgsRspCb,
5112 void* pUserData
5113)
5114{
5115 WDI_EventInfoType wdiEventData;
5116 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5117
5118 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005119 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005120 ------------------------------------------------------------------------*/
5121 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5122 {
5123 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5124 "WDI API call before module is initialized - Fail request");
5125
Jeff Johnsone7245742012-09-05 17:12:55 -07005126 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005127 }
5128
5129 /*------------------------------------------------------------------------
5130 Fill in Event data and post to the Main FSM
5131 ------------------------------------------------------------------------*/
5132 wdiEventData.wdiRequest = WDI_UPDATE_CFG_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005133 wdiEventData.pEventData = pwdiUpdateCfgReqParams;
5134 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateCfgReqParams);
5135 wdiEventData.pCBfnc = wdiUpdateCfgsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005136 wdiEventData.pUserData = pUserData;
5137
5138 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5139
5140}/*WDI_UpdateCfgReq*/
5141
5142
5143
5144/**
5145 @brief WDI_AddBAReq will be called when the upper MAC has setup
5146 successfully a BA session and needs to notify the HW for
5147 the appropriate settings to take place. Upon the call of
5148 this API the WLAN DAL will pack and send a HAL Add BA
5149 request message to the lower RIVA sub-system if DAL is
5150 in state STARTED.
5151
5152 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005153 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005154
5155 WDI_PostAssocReq must have been called.
5156
5157 @param wdiAddBAReqParams: the add BA parameters as specified by
5158 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005159
Jeff Johnson295189b2012-06-20 16:38:30 -07005160 wdiAddBARspCb: callback for passing back the response of
5161 the add BA operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005162
Jeff Johnson295189b2012-06-20 16:38:30 -07005163 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005164 callback
5165
Jeff Johnson295189b2012-06-20 16:38:30 -07005166 @see WDI_PostAssocReq
5167 @return Result of the function call
5168*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005169WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005170WDI_AddBAReq
5171(
5172 WDI_AddBAReqParamsType* pwdiAddBAReqParams,
5173 WDI_AddBARspCb wdiAddBARspCb,
5174 void* pUserData
5175)
5176{
5177 WDI_EventInfoType wdiEventData;
5178 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5179
5180 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005181 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005182 ------------------------------------------------------------------------*/
5183 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5184 {
5185 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5186 "WDI API call before module is initialized - Fail request");
5187
Jeff Johnsone7245742012-09-05 17:12:55 -07005188 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005189 }
5190
5191 /*------------------------------------------------------------------------
5192 Fill in Event data and post to the Main FSM
5193 ------------------------------------------------------------------------*/
5194 wdiEventData.wdiRequest = WDI_ADD_BA_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005195 wdiEventData.pEventData = pwdiAddBAReqParams;
5196 wdiEventData.uEventDataSize = sizeof(*pwdiAddBAReqParams);
5197 wdiEventData.pCBfnc = wdiAddBARspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005198 wdiEventData.pUserData = pUserData;
5199
5200 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5201
5202}/*WDI_AddBAReq*/
5203
5204
5205/**
5206 @brief WDI_TriggerBAReq will be called when the upper MAC has setup
5207 successfully a BA session and needs to notify the HW for
5208 the appropriate settings to take place. Upon the call of
5209 this API the WLAN DAL will pack and send a HAL Add BA
5210 request message to the lower RIVA sub-system if DAL is
5211 in state STARTED.
5212
5213 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005214 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005215
5216 WDI_PostAssocReq must have been called.
5217
5218 @param wdiAddBAReqParams: the add BA parameters as specified by
5219 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005220
Jeff Johnson295189b2012-06-20 16:38:30 -07005221 wdiAddBARspCb: callback for passing back the response of
5222 the add BA operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005223
Jeff Johnson295189b2012-06-20 16:38:30 -07005224 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005225 callback
5226
Jeff Johnson295189b2012-06-20 16:38:30 -07005227 @see WDI_PostAssocReq
5228 @return Result of the function call
5229*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005230WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005231WDI_TriggerBAReq
5232(
5233 WDI_TriggerBAReqParamsType* pwdiTriggerBAReqParams,
5234 WDI_TriggerBARspCb wdiTriggerBARspCb,
5235 void* pUserData
5236)
5237{
5238 WDI_EventInfoType wdiEventData;
5239 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5240
5241 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005242 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005243 ------------------------------------------------------------------------*/
5244 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5245 {
5246 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5247 "WDI API call before module is initialized - Fail request");
5248
Jeff Johnsone7245742012-09-05 17:12:55 -07005249 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005250 }
5251
5252 /*------------------------------------------------------------------------
5253 Fill in Event data and post to the Main FSM
5254 ------------------------------------------------------------------------*/
5255 wdiEventData.wdiRequest = WDI_TRIGGER_BA_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005256 wdiEventData.pEventData = pwdiTriggerBAReqParams;
5257 wdiEventData.uEventDataSize = sizeof(*pwdiTriggerBAReqParams);
5258 wdiEventData.pCBfnc = wdiTriggerBARspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005259 wdiEventData.pUserData = pUserData;
5260
5261 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5262
5263}/*WDI_AddBAReq*/
5264
5265/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005266 @brief WDI_UpdateBeaconParamsReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07005267 wishes to update any of the Beacon parameters used by HW.
5268 Upon the call of this API the WLAN DAL will pack and send a HAL Update Beacon Params request
5269 message to the lower RIVA sub-system if DAL is in state
5270 STARTED.
5271
5272 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005273 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005274
5275 WDI_PostAssocReq must have been called.
5276
Jeff Johnsone7245742012-09-05 17:12:55 -07005277 @param wdiUpdateBeaconParams: the Beacon parameters as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07005278 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005279
Jeff Johnson295189b2012-06-20 16:38:30 -07005280 wdiUpdateBeaconParamsRspCb: callback for passing back the
5281 response of the start operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005282
Jeff Johnson295189b2012-06-20 16:38:30 -07005283 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005284 callback
5285
Jeff Johnson295189b2012-06-20 16:38:30 -07005286 @see WDI_PostAssocReq
5287 @return Result of the function call
5288*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005289WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005290WDI_UpdateBeaconParamsReq
5291(
5292 WDI_UpdateBeaconParamsType* pwdiUpdateBeaconParams,
5293 WDI_UpdateBeaconParamsRspCb wdiUpdateBeaconParamsRspCb,
5294 void* pUserData
5295)
5296{
5297 WDI_EventInfoType wdiEventData;
5298 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5299
5300 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005301 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005302 ------------------------------------------------------------------------*/
5303 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5304 {
5305 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5306 "WDI API call before module is initialized - Fail request");
5307
Jeff Johnsone7245742012-09-05 17:12:55 -07005308 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005309 }
5310
5311 /*------------------------------------------------------------------------
5312 Fill in Event data and post to the Main FSM
5313 ------------------------------------------------------------------------*/
5314 wdiEventData.wdiRequest = WDI_UPD_BCON_PRMS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005315 wdiEventData.pEventData = pwdiUpdateBeaconParams;
5316 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateBeaconParams);
5317 wdiEventData.pCBfnc = wdiUpdateBeaconParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005318 wdiEventData.pUserData = pUserData;
5319
5320 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5321
5322}/*WDI_UpdateBeaconParamsReq*/
5323
5324/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005325 @brief WDI_SendBeaconParamsReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07005326 wishes to update the Beacon template used by HW.
5327 Upon the call of this API the WLAN DAL will pack and send a HAL Update Beacon template request
5328 message to the lower RIVA sub-system if DAL is in state
5329 STARTED.
5330
5331 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005332 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005333
5334 WDI_PostAssocReq must have been called.
5335
Jeff Johnsone7245742012-09-05 17:12:55 -07005336 @param wdiSendBeaconParams: the Beacon parameters as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07005337 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005338
Jeff Johnson295189b2012-06-20 16:38:30 -07005339 wdiSendBeaconParamsRspCb: callback for passing back the
5340 response of the start operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005341
Jeff Johnson295189b2012-06-20 16:38:30 -07005342 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005343 callback
5344
Jeff Johnson295189b2012-06-20 16:38:30 -07005345 @see WDI_PostAssocReq
5346 @return Result of the function call
5347*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005348WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005349WDI_SendBeaconParamsReq
5350(
5351 WDI_SendBeaconParamsType* pwdiSendBeaconParams,
5352 WDI_SendBeaconParamsRspCb wdiSendBeaconParamsRspCb,
5353 void* pUserData
5354)
5355{
5356 WDI_EventInfoType wdiEventData;
5357 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5358
5359 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005360 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005361 ------------------------------------------------------------------------*/
5362 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5363 {
5364 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5365 "WDI API call before module is initialized - Fail request");
5366
Jeff Johnsone7245742012-09-05 17:12:55 -07005367 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005368 }
5369
5370 /*------------------------------------------------------------------------
5371 Fill in Event data and post to the Main FSM
5372 ------------------------------------------------------------------------*/
5373 wdiEventData.wdiRequest = WDI_SND_BCON_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005374 wdiEventData.pEventData = pwdiSendBeaconParams;
5375 wdiEventData.uEventDataSize = sizeof(*pwdiSendBeaconParams);
5376 wdiEventData.pCBfnc = wdiSendBeaconParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005377 wdiEventData.pUserData = pUserData;
5378
5379 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5380
5381}/*WDI_SendBeaconParamsReq*/
5382
5383/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005384 @brief WDI_UpdateProbeRspTemplateReq will be called when the
Jeff Johnson295189b2012-06-20 16:38:30 -07005385 upper MAC wants to update the probe response template to
5386 be transmitted as Soft AP
5387 Upon the call of this API the WLAN DAL will
5388 pack and send the probe rsp template message to the
5389 lower RIVA sub-system if DAL is in state STARTED.
5390
5391 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005392 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005393
5394
Jeff Johnsone7245742012-09-05 17:12:55 -07005395 @param pwdiUpdateProbeRspParams: the Update Beacon parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07005396 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005397
Jeff Johnson295189b2012-06-20 16:38:30 -07005398 wdiSendBeaconParamsRspCb: callback for passing back the
5399 response of the Send Beacon Params operation received
5400 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005401
Jeff Johnson295189b2012-06-20 16:38:30 -07005402 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005403 callback
5404
Jeff Johnson295189b2012-06-20 16:38:30 -07005405 @see WDI_AddBAReq
5406 @return Result of the function call
5407*/
5408
Jeff Johnsone7245742012-09-05 17:12:55 -07005409WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005410WDI_UpdateProbeRspTemplateReq
5411(
5412 WDI_UpdateProbeRspTemplateParamsType* pwdiUpdateProbeRspParams,
5413 WDI_UpdateProbeRspTemplateRspCb wdiUpdateProbeRspParamsRspCb,
5414 void* pUserData
5415)
5416{
5417 WDI_EventInfoType wdiEventData;
5418 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5419
5420 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005421 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005422 ------------------------------------------------------------------------*/
5423 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5424 {
5425 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5426 "WDI API call before module is initialized - Fail request");
5427
Jeff Johnsone7245742012-09-05 17:12:55 -07005428 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005429 }
5430
5431 /*------------------------------------------------------------------------
5432 Fill in Event data and post to the Main FSM
5433 ------------------------------------------------------------------------*/
5434 wdiEventData.wdiRequest = WDI_UPD_PROBE_RSP_TEMPLATE_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005435 wdiEventData.pEventData = pwdiUpdateProbeRspParams;
5436 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateProbeRspParams);
5437 wdiEventData.pCBfnc = wdiUpdateProbeRspParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005438 wdiEventData.pUserData = pUserData;
5439
5440 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5441
5442}/*WDI_UpdateProbeRspTemplateReq*/
5443
5444/**
5445 @brief WDI_NvDownloadReq will be called by the UMAC to download the NV blob
5446 to the NV memory.
5447
5448
5449 @param wdiNvDownloadReqParams: the NV Download parameters as specified by
5450 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005451
Jeff Johnson295189b2012-06-20 16:38:30 -07005452 wdiNvDownloadRspCb: callback for passing back the response of
5453 the NV Download operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005454
Jeff Johnson295189b2012-06-20 16:38:30 -07005455 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005456 callback
5457
Jeff Johnson295189b2012-06-20 16:38:30 -07005458 @see WDI_PostAssocReq
5459 @return Result of the function call
5460*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005461WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005462WDI_NvDownloadReq
5463(
5464 WDI_NvDownloadReqParamsType* pwdiNvDownloadReqParams,
5465 WDI_NvDownloadRspCb wdiNvDownloadRspCb,
5466 void* pUserData
5467)
5468{
5469 WDI_EventInfoType wdiEventData;
5470
5471 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005472 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005473 ------------------------------------------------------------------------*/
5474 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5475 {
5476 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5477 "WDI API call before module is initialized - Fail request");
5478
Jeff Johnsone7245742012-09-05 17:12:55 -07005479 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005480 }
5481
5482 /*------------------------------------------------------------------------
5483 Fill in Event data and post to the Main FSM
5484 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005485 wdiEventData.wdiRequest = WDI_NV_DOWNLOAD_REQ;
5486 wdiEventData.pEventData = (void *)pwdiNvDownloadReqParams;
5487 wdiEventData.uEventDataSize = sizeof(*pwdiNvDownloadReqParams);
5488 wdiEventData.pCBfnc = wdiNvDownloadRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005489 wdiEventData.pUserData = pUserData;
5490
5491 return WDI_PostMainEvent(&gWDICb, WDI_START_EVENT, &wdiEventData);
5492
5493}/*WDI_NVDownloadReq*/
5494
Jeff Johnson295189b2012-06-20 16:38:30 -07005495/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005496 @brief WDI_SetP2PGONOAReq will be called when the
Jeff Johnson295189b2012-06-20 16:38:30 -07005497 upper MAC wants to send Notice of Absence
5498 Upon the call of this API the WLAN DAL will
5499 pack and send the probe rsp template message to the
5500 lower RIVA sub-system if DAL is in state STARTED.
5501
5502 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005503 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005504
5505
Jeff Johnsone7245742012-09-05 17:12:55 -07005506 @param pwdiUpdateProbeRspParams: the Update Beacon parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07005507 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005508
Jeff Johnson295189b2012-06-20 16:38:30 -07005509 wdiSendBeaconParamsRspCb: callback for passing back the
5510 response of the Send Beacon Params operation received
5511 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005512
Jeff Johnson295189b2012-06-20 16:38:30 -07005513 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005514 callback
5515
Jeff Johnson295189b2012-06-20 16:38:30 -07005516 @see WDI_AddBAReq
5517 @return Result of the function call
5518*/
5519WDI_Status
5520WDI_SetP2PGONOAReq
5521(
5522 WDI_SetP2PGONOAReqParamsType* pwdiP2PGONOAReqParams,
5523 WDI_SetP2PGONOAReqParamsRspCb wdiP2PGONOAReqParamsRspCb,
5524 void* pUserData
5525)
5526{
5527 WDI_EventInfoType wdiEventData;
5528 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5529
5530 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005531 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005532 ------------------------------------------------------------------------*/
5533 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5534 {
5535 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5536 "WDI API call before module is initialized - Fail request");
5537
Jeff Johnsone7245742012-09-05 17:12:55 -07005538 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005539 }
5540
5541 /*------------------------------------------------------------------------
5542 Fill in Event data and post to the Main FSM
5543 ------------------------------------------------------------------------*/
5544 wdiEventData.wdiRequest = WDI_P2P_GO_NOTICE_OF_ABSENCE_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005545 wdiEventData.pEventData = pwdiP2PGONOAReqParams;
5546 wdiEventData.uEventDataSize = sizeof(*pwdiP2PGONOAReqParams);
5547 wdiEventData.pCBfnc = wdiP2PGONOAReqParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005548 wdiEventData.pUserData = pUserData;
5549
5550 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5551
5552}/*WDI_SetP2PGONOAReq*/
Jeff Johnson295189b2012-06-20 16:38:30 -07005553
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +05305554#ifdef FEATURE_WLAN_TDLS
5555/**
5556 @brief WDI_SetTDLSLinkEstablishReq will be called when the
5557 upper MAC wants to send TDLS Link Establish Request Parameters
5558 Upon the call of this API the WLAN DAL will
5559 pack and send the TDLS Link Establish Request message to the
5560 lower RIVA sub-system if DAL is in state STARTED.
5561
5562 In state BUSY this request will be queued. Request won't
5563 be allowed in any other state.
5564
5565
5566 @param pwdiTDLSLinkEstablishReqParams: TDLS Peer Parameters
5567 for Link Establishment (Used for PUAPSD , TDLS Off Channel ...)
5568
5569 wdiTDLSLinkEstablishReqRspCb: callback for passing back the
5570 response of the TDLS Link Establish request received
5571 from the device
5572
5573 pUserData: user data will be passed back with the
5574 callback
5575
5576 @see
5577 @return Result of the function call
5578*/
5579WDI_Status
5580WDI_SetTDLSLinkEstablishReq
5581(
5582 WDI_SetTDLSLinkEstablishReqParamsType* pwdiTDLSLinkEstablishReqParams,
5583 WDI_SetTDLSLinkEstablishReqParamsRspCb wdiTDLSLinkEstablishReqRspCb,
5584 void* pUserData
5585)
5586{
5587 WDI_EventInfoType wdiEventData;
5588 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5589
5590 /*------------------------------------------------------------------------
5591 Sanity Check
5592 ------------------------------------------------------------------------*/
5593 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5594 {
5595 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5596 "WDI API call before module is initialized - Fail request");
5597
5598 return WDI_STATUS_E_NOT_ALLOWED;
5599 }
5600
5601 /*------------------------------------------------------------------------
5602 Fill in Event data and post to the Main FSM
5603 ------------------------------------------------------------------------*/
5604 wdiEventData.wdiRequest = WDI_TDLS_LINK_ESTABLISH_REQ;
5605 wdiEventData.pEventData = pwdiTDLSLinkEstablishReqParams;
5606 wdiEventData.uEventDataSize = sizeof(*pwdiTDLSLinkEstablishReqParams);
5607 wdiEventData.pCBfnc = wdiTDLSLinkEstablishReqRspCb;
5608 wdiEventData.pUserData = pUserData;
5609
5610 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5611
5612}/*WDI_SetTDLSLinkEstablishReq*/
5613#endif
5614
Jeff Johnson295189b2012-06-20 16:38:30 -07005615/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005616 @brief WDI_AddSTASelfReq will be called when the
Jeff Johnson295189b2012-06-20 16:38:30 -07005617 UMAC wanted to add STA self while opening any new session
5618 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005619 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005620
5621
Jeff Johnsone7245742012-09-05 17:12:55 -07005622 @param pwdiAddSTASelfParams: the add sta self parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07005623 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005624
Jeff Johnson295189b2012-06-20 16:38:30 -07005625 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005626 callback
5627
5628 @see
Jeff Johnson295189b2012-06-20 16:38:30 -07005629 @return Result of the function call
5630*/
5631WDI_Status
5632WDI_AddSTASelfReq
5633(
5634 WDI_AddSTASelfReqParamsType* pwdiAddSTASelfReqParams,
5635 WDI_AddSTASelfParamsRspCb wdiAddSTASelfReqParamsRspCb,
5636 void* pUserData
5637)
5638{
5639 WDI_EventInfoType wdiEventData;
5640 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5641
5642 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005643 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005644 ------------------------------------------------------------------------*/
5645 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5646 {
5647 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5648 "WDI API call before module is initialized - Fail request");
5649
Jeff Johnsone7245742012-09-05 17:12:55 -07005650 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005651 }
5652
5653 /*------------------------------------------------------------------------
5654 Fill in Event data and post to the Main FSM
5655 ------------------------------------------------------------------------*/
5656 wdiEventData.wdiRequest = WDI_ADD_STA_SELF_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005657 wdiEventData.pEventData = pwdiAddSTASelfReqParams;
5658 wdiEventData.uEventDataSize = sizeof(*pwdiAddSTASelfReqParams);
5659 wdiEventData.pCBfnc = wdiAddSTASelfReqParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005660 wdiEventData.pUserData = pUserData;
5661
5662 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5663
5664}/*WDI_AddSTASelfReq*/
5665
5666
Jeff Johnsone7245742012-09-05 17:12:55 -07005667#ifdef WLAN_FEATURE_VOWIFI_11R
Jeff Johnson295189b2012-06-20 16:38:30 -07005668/**
5669 @brief WDI_AggrAddTSReq will be called when the upper MAC to inform
5670 the device of a successful add TSpec negotiation. HW
5671 needs to receive the TSpec Info from the UMAC in order
5672 to configure properly the QoS data traffic. Upon the
5673 call of this API the WLAN DAL will pack and send a HAL
5674 Add TS request message to the lower RIVA sub-system if
5675 DAL is in state STARTED.
5676
5677 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005678 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005679
5680 WDI_PostAssocReq must have been called.
5681
5682 @param wdiAddTsReqParams: the add TS parameters as specified by
5683 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005684
Jeff Johnson295189b2012-06-20 16:38:30 -07005685 wdiAddTsRspCb: callback for passing back the response of
5686 the add TS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005687
Jeff Johnson295189b2012-06-20 16:38:30 -07005688 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005689 callback
5690
Jeff Johnson295189b2012-06-20 16:38:30 -07005691 @see WDI_PostAssocReq
5692 @return Result of the function call
5693*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005694WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005695WDI_AggrAddTSReq
5696(
5697 WDI_AggrAddTSReqParamsType* pwdiAggrAddTsReqParams,
5698 WDI_AggrAddTsRspCb wdiAggrAddTsRspCb,
5699 void* pUserData
5700)
5701{
5702 WDI_EventInfoType wdiEventData;
5703 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5704
5705 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005706 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005707 ------------------------------------------------------------------------*/
5708 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5709 {
5710 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5711 "WDI API call before module is initialized - Fail request");
5712
Jeff Johnsone7245742012-09-05 17:12:55 -07005713 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005714 }
5715
5716 /*------------------------------------------------------------------------
5717 Fill in Event data and post to the Main FSM
5718 ------------------------------------------------------------------------*/
5719 wdiEventData.wdiRequest = WDI_AGGR_ADD_TS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005720 wdiEventData.pEventData = pwdiAggrAddTsReqParams;
5721 wdiEventData.uEventDataSize = sizeof(*pwdiAggrAddTsReqParams);
5722 wdiEventData.pCBfnc = wdiAggrAddTsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005723 wdiEventData.pUserData = pUserData;
5724
5725 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5726
5727}/*WDI_AggrAddTSReq*/
5728
5729#endif /* WLAN_FEATURE_VOWIFI_11R */
5730
Jeff Johnson295189b2012-06-20 16:38:30 -07005731/**
5732 @brief WDI_FTMCommandReq
5733 Post FTM Command Event
Jeff Johnsone7245742012-09-05 17:12:55 -07005734
5735 @param ftmCommandReq: FTM Command Body
5736 @param ftmCommandRspCb: FTM Response from HAL CB
Jeff Johnson295189b2012-06-20 16:38:30 -07005737 @param pUserData: Client Data
Jeff Johnsone7245742012-09-05 17:12:55 -07005738
Jeff Johnson295189b2012-06-20 16:38:30 -07005739 @see
5740 @return Result of the function call
5741*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005742WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005743WDI_FTMCommandReq
5744(
5745 WDI_FTMCommandReqType *ftmCommandReq,
5746 WDI_FTMCommandRspCb ftmCommandRspCb,
5747 void *pUserData
5748)
5749{
5750 WDI_EventInfoType wdiEventData;
5751 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5752
5753 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005754 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005755 ------------------------------------------------------------------------*/
5756 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5757 {
5758 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5759 "WDI API call before module is initialized - Fail request");
5760
Jeff Johnsone7245742012-09-05 17:12:55 -07005761 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005762 }
5763
5764 /*------------------------------------------------------------------------
5765 Fill in Event data and post to the Main FSM
5766 ------------------------------------------------------------------------*/
5767 wdiEventData.wdiRequest = WDI_FTM_CMD_REQ;
5768 wdiEventData.pEventData = (void *)ftmCommandReq;
5769 wdiEventData.uEventDataSize = ftmCommandReq->bodyLength + sizeof(wpt_uint32);
5770 wdiEventData.pCBfnc = ftmCommandRspCb;
5771 wdiEventData.pUserData = pUserData;
5772
5773 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5774}
Jeff Johnson295189b2012-06-20 16:38:30 -07005775/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005776 @brief WDI_HostResumeReq will be called
Jeff Johnson295189b2012-06-20 16:38:30 -07005777
5778 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005779 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005780
5781
5782 @param pwdiResumeReqParams: as specified by
5783 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005784
Jeff Johnson295189b2012-06-20 16:38:30 -07005785 wdiResumeReqRspCb: callback for passing back the response of
5786 the Resume Req received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005787
Jeff Johnson295189b2012-06-20 16:38:30 -07005788 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005789 callback
5790
5791 @see
Jeff Johnson295189b2012-06-20 16:38:30 -07005792 @return Result of the function call
5793*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005794WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005795WDI_HostResumeReq
5796(
5797 WDI_ResumeParamsType* pwdiResumeReqParams,
5798 WDI_HostResumeEventRspCb wdiResumeReqRspCb,
5799 void* pUserData
5800)
5801{
5802 WDI_EventInfoType wdiEventData;
5803 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5804
5805 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005806 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005807 ------------------------------------------------------------------------*/
5808 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5809 {
5810 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5811 "WDI API call before module is initialized - Fail request");
5812
Jeff Johnsone7245742012-09-05 17:12:55 -07005813 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005814 }
5815
5816 /*------------------------------------------------------------------------
5817 Fill in Event data and post to the Main FSM
5818 ------------------------------------------------------------------------*/
5819 wdiEventData.wdiRequest = WDI_HOST_RESUME_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005820 wdiEventData.pEventData = pwdiResumeReqParams;
5821 wdiEventData.uEventDataSize = sizeof(*pwdiResumeReqParams);
5822 wdiEventData.pCBfnc = wdiResumeReqRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005823 wdiEventData.pUserData = pUserData;
5824
5825 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5826
5827}/*WDI_HostResumeReq*/
5828
5829/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005830 @brief WDI_DelSTASelfReq will be called
Jeff Johnson295189b2012-06-20 16:38:30 -07005831
5832 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005833 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005834
5835
5836 @param pwdiDelStaSelfReqParams: as specified by
5837 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005838
Jeff Johnson295189b2012-06-20 16:38:30 -07005839 wdiDelStaSelfRspCb: callback for passing back the response of
5840 the add TS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005841
Jeff Johnson295189b2012-06-20 16:38:30 -07005842 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005843 callback
5844
Jeff Johnson295189b2012-06-20 16:38:30 -07005845 @see WDI_PostAssocReq
5846 @return Result of the function call
5847*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005848WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005849WDI_DelSTASelfReq
5850(
5851 WDI_DelSTASelfReqParamsType* pwdiDelStaSelfReqParams,
5852 WDI_DelSTASelfRspCb wdiDelStaSelfRspCb,
5853 void* pUserData
5854)
5855{
5856 WDI_EventInfoType wdiEventData;
5857 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5858
5859 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005860 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005861 ------------------------------------------------------------------------*/
5862 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5863 {
5864 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5865 "WDI API call before module is initialized - Fail request");
5866
Jeff Johnsone7245742012-09-05 17:12:55 -07005867 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005868 }
5869
5870 /*------------------------------------------------------------------------
5871 Fill in Event data and post to the Main FSM
5872 ------------------------------------------------------------------------*/
5873 wdiEventData.wdiRequest = WDI_DEL_STA_SELF_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005874 wdiEventData.pEventData = pwdiDelStaSelfReqParams;
5875 wdiEventData.uEventDataSize = sizeof(*pwdiDelStaSelfReqParams);
5876 wdiEventData.pCBfnc = wdiDelStaSelfRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005877 wdiEventData.pUserData = pUserData;
5878
5879 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5880
5881}/*WDI_AggrAddTSReq*/
5882
5883/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005884 @brief WDI_SetTxPerTrackingReq will be called when the upper MAC
5885 wants to set the Tx Per Tracking configurations.
Jeff Johnson295189b2012-06-20 16:38:30 -07005886 Upon the call of this API the WLAN DAL will pack
5887 and send a HAL Set Tx Per Tracking request message to the
5888 lower RIVA sub-system if DAL is in state STARTED.
5889
5890 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005891 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005892
Jeff Johnsone7245742012-09-05 17:12:55 -07005893 @param pwdiSetTxPerTrackingReqParams: the Set Tx PER Tracking configurations as
Jeff Johnson295189b2012-06-20 16:38:30 -07005894 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005895
Jeff Johnson295189b2012-06-20 16:38:30 -07005896 pwdiSetTxPerTrackingRspCb: callback for passing back the
5897 response of the set Tx PER Tracking configurations operation received
5898 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005899
Jeff Johnson295189b2012-06-20 16:38:30 -07005900 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005901 callback
5902
Jeff Johnson295189b2012-06-20 16:38:30 -07005903 @return Result of the function call
5904*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005905WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005906WDI_SetTxPerTrackingReq
5907(
5908 WDI_SetTxPerTrackingReqParamsType* pwdiSetTxPerTrackingReqParams,
5909 WDI_SetTxPerTrackingRspCb pwdiSetTxPerTrackingRspCb,
5910 void* pUserData
5911)
5912{
5913 WDI_EventInfoType wdiEventData;
5914 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5915
5916 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005917 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005918 ------------------------------------------------------------------------*/
5919 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5920 {
5921 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5922 "WDI API call before module is initialized - Fail request");
5923
Jeff Johnsone7245742012-09-05 17:12:55 -07005924 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005925 }
5926
5927 /*------------------------------------------------------------------------
5928 Fill in Event data and post to the Main FSM
5929 ------------------------------------------------------------------------*/
5930 wdiEventData.wdiRequest = WDI_SET_TX_PER_TRACKING_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005931 wdiEventData.pEventData = pwdiSetTxPerTrackingReqParams;
Jeff Johnson295189b2012-06-20 16:38:30 -07005932 wdiEventData.uEventDataSize = sizeof(*pwdiSetTxPerTrackingReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07005933 wdiEventData.pCBfnc = pwdiSetTxPerTrackingRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005934 wdiEventData.pUserData = pUserData;
5935
5936 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5937
5938}/*WDI_SetTxPerTrackingReq*/
5939
5940/**
5941 @brief WDI_SetTmLevelReq
5942 If HW Thermal condition changed, driver should react based on new
5943 HW thermal condition.
5944
5945 @param pwdiSetTmLevelReq: New thermal condition information
5946
5947 pwdiSetTmLevelRspCb: callback
5948
5949 usrData: user data will be passed back with the
5950 callback
5951
5952 @return Result of the function call
5953*/
5954WDI_Status
5955WDI_SetTmLevelReq
5956(
5957 WDI_SetTmLevelReqType *pwdiSetTmLevelReq,
5958 WDI_SetTmLevelCb pwdiSetTmLevelRspCb,
5959 void *usrData
5960)
5961{
5962 WDI_EventInfoType wdiEventData;
5963 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5964
5965 /*------------------------------------------------------------------------
5966 Sanity Check
5967 ------------------------------------------------------------------------*/
5968 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5969 {
5970 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5971 "WDI API call before module is initialized - Fail request");
5972
5973 return WDI_STATUS_E_NOT_ALLOWED;
5974 }
5975
5976 /*------------------------------------------------------------------------
5977 Fill in Event data and post to the Main FSM
5978 ------------------------------------------------------------------------*/
5979 wdiEventData.wdiRequest = WDI_SET_TM_LEVEL_REQ;
5980 wdiEventData.pEventData = pwdiSetTmLevelReq;
5981 wdiEventData.uEventDataSize = sizeof(*pwdiSetTmLevelReq);
5982 wdiEventData.pCBfnc = pwdiSetTmLevelRspCb;
5983 wdiEventData.pUserData = usrData;
5984
5985 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5986}
5987
5988/**
5989 @brief WDI_HostSuspendInd
5990
5991 Suspend Indication from the upper layer will be sent
5992 down to HAL
Jeff Johnsone7245742012-09-05 17:12:55 -07005993
Jeff Johnson295189b2012-06-20 16:38:30 -07005994 @param WDI_SuspendResumeIndParamsType
Jeff Johnsone7245742012-09-05 17:12:55 -07005995
5996 @see
5997
Jeff Johnson295189b2012-06-20 16:38:30 -07005998 @return Status of the request
5999*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006000WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07006001WDI_HostSuspendInd
6002(
6003 WDI_SuspendParamsType* pwdiSuspendIndParams
6004)
6005{
6006
6007 WDI_EventInfoType wdiEventData;
6008 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6009
6010 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006011 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006012 ------------------------------------------------------------------------*/
6013 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6014 {
6015 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6016 "WDI API call before module is initialized - Fail request");
6017
Jeff Johnsone7245742012-09-05 17:12:55 -07006018 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006019 }
6020
6021 /*------------------------------------------------------------------------
6022 Fill in Event data and post to the Main FSM
6023 ------------------------------------------------------------------------*/
6024 wdiEventData.wdiRequest = WDI_HOST_SUSPEND_IND;
Jeff Johnsone7245742012-09-05 17:12:55 -07006025 wdiEventData.pEventData = pwdiSuspendIndParams;
6026 wdiEventData.uEventDataSize = sizeof(*pwdiSuspendIndParams);
6027 wdiEventData.pCBfnc = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07006028 wdiEventData.pUserData = NULL;
6029
6030 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6031
6032}/*WDI_HostSuspendInd*/
6033
6034/**
Madan Mohan Koyyalamudi01cba042013-01-10 21:56:05 -08006035 @brief WDI_TrafficStatsInd
6036 Traffic Stats from the upper layer will be sent
6037 down to HAL
6038
6039 @param WDI_TrafficStatsIndType
6040
6041 @see
6042
6043 @return Status of the request
6044*/
6045WDI_Status
6046WDI_TrafficStatsInd
6047(
6048 WDI_TrafficStatsIndType *pWdiTrafficStatsIndParams
6049)
6050{
6051
6052 WDI_EventInfoType wdiEventData;
6053 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6054
6055 /*------------------------------------------------------------------------
6056 Sanity Check
6057 ------------------------------------------------------------------------*/
6058 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6059 {
6060 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6061 "WDI API call before module is initialized - Fail request");
6062
6063 return WDI_STATUS_E_NOT_ALLOWED;
6064 }
6065
6066 /*------------------------------------------------------------------------
6067 Fill in Event data and post to the Main FSM
6068 ------------------------------------------------------------------------*/
6069 wdiEventData.wdiRequest = WDI_TRAFFIC_STATS_IND;
6070 wdiEventData.pEventData = pWdiTrafficStatsIndParams;
6071 wdiEventData.uEventDataSize = sizeof(*pWdiTrafficStatsIndParams);
6072 wdiEventData.pCBfnc = NULL;
6073 wdiEventData.pUserData = NULL;
6074
6075 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6076
6077}/*WDI_TrafficStatsInd*/
6078
Chet Lanctot186b5732013-03-18 10:26:30 -07006079#ifdef WLAN_FEATURE_11W
6080/**
6081 @brief WDI_ExcludeUnencryptedInd
6082 Register with HAL to receive/drop unencrypted frames
6083
6084 @param WDI_ExcludeUnencryptIndType
6085
6086 @see
6087
6088 @return Status of the request
6089*/
6090WDI_Status
6091WDI_ExcludeUnencryptedInd
6092(
6093 WDI_ExcludeUnencryptIndType *pWdiExcUnencParams
6094)
6095{
6096
6097 WDI_EventInfoType wdiEventData;
6098 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6099
6100 /*------------------------------------------------------------------------
6101 Sanity Check
6102 ------------------------------------------------------------------------*/
6103 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6104 {
6105 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6106 "WDI API call before module is initialized - Fail request");
6107
6108 return WDI_STATUS_E_NOT_ALLOWED;
6109 }
6110
6111 /*------------------------------------------------------------------------
6112 Fill in Event data and post to the Main FSM
6113 ------------------------------------------------------------------------*/
6114 wdiEventData.wdiRequest = WDI_EXCLUDE_UNENCRYPTED_IND;
6115 wdiEventData.pEventData = pWdiExcUnencParams;
6116 wdiEventData.uEventDataSize = sizeof(*pWdiExcUnencParams);
6117 wdiEventData.pCBfnc = NULL;
6118 wdiEventData.pUserData = NULL;
6119
6120 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6121
6122}/*WDI_TrafficStatsInd*/
6123#endif
6124
Madan Mohan Koyyalamudi01cba042013-01-10 21:56:05 -08006125/**
Yue Mab9c86f42013-08-14 15:59:08 -07006126 @brief WDI_AddPeriodicTxPtrnInd: Add Periodic TX Pattern Indication to FW
6127
6128 @param addPeriodicTxPtrnParams: Add Pattern parameters
6129
6130 @see
6131
6132 @return Status of the request
6133*/
6134WDI_Status
6135WDI_AddPeriodicTxPtrnInd
6136(
6137 WDI_AddPeriodicTxPtrnParamsType* addPeriodicTxPtrnParams
6138)
6139{
6140 WDI_EventInfoType wdiEventData;
6141
6142 /*-------------------------------------------------------------------------
6143 Sanity Check
6144 ------------------------------------------------------------------------*/
6145 if (eWLAN_PAL_FALSE == gWDIInitialized)
6146 {
6147 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6148 "WDI API call before module is initialized - Fail request!");
6149
6150 return WDI_STATUS_E_NOT_ALLOWED;
6151 }
6152
6153 /*-------------------------------------------------------------------------
6154 Fill in Event data and post to the Main FSM
6155 ------------------------------------------------------------------------*/
6156 wdiEventData.wdiRequest = WDI_ADD_PERIODIC_TX_PATTERN_IND;
6157 wdiEventData.pEventData = addPeriodicTxPtrnParams;
6158 wdiEventData.uEventDataSize = sizeof(WDI_AddPeriodicTxPtrnParamsType);
6159 wdiEventData.pCBfnc = NULL;
6160 wdiEventData.pUserData = NULL;
6161
6162 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6163}
6164
6165/**
6166 @brief WDI_DelPeriodicTxPtrnInd: Delete Periodic TX Pattern Indication to FW
6167
6168 @param delPeriodicTxPtrnParams: Delete Pattern parameters
6169
6170 @see
6171
6172 @return Status of the request
6173*/
6174WDI_Status
6175WDI_DelPeriodicTxPtrnInd
6176(
6177 WDI_DelPeriodicTxPtrnParamsType* delPeriodicTxPtrnParams
6178)
6179{
6180 WDI_EventInfoType wdiEventData;
6181
6182 /*-------------------------------------------------------------------------
6183 Sanity Check
6184 ------------------------------------------------------------------------*/
6185 if (eWLAN_PAL_FALSE == gWDIInitialized)
6186 {
6187 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6188 "WDI API call before module is initialized - Fail request!");
6189
6190 return WDI_STATUS_E_NOT_ALLOWED;
6191 }
6192
6193 /*-------------------------------------------------------------------------
6194 Fill in Event data and post to the Main FSM
6195 ------------------------------------------------------------------------*/
6196 wdiEventData.wdiRequest = WDI_DEL_PERIODIC_TX_PATTERN_IND;
6197 wdiEventData.pEventData = delPeriodicTxPtrnParams;
6198 wdiEventData.uEventDataSize = sizeof(WDI_DelPeriodicTxPtrnParamsType);
6199 wdiEventData.pCBfnc = NULL;
6200 wdiEventData.pUserData = NULL;
6201
6202 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6203}
6204
6205/**
Jeff Johnson295189b2012-06-20 16:38:30 -07006206 @brief WDI_HALDumpCmdReq
6207 Post HAL DUMP Command Event
Jeff Johnsone7245742012-09-05 17:12:55 -07006208
6209 @param halDumpCmdReqParams: Hal Dump Command Body
6210 @param halDumpCmdRspCb: HAL DUMP Response from HAL CB
Jeff Johnson295189b2012-06-20 16:38:30 -07006211 @param pUserData: Client Data
Jeff Johnsone7245742012-09-05 17:12:55 -07006212
Jeff Johnson295189b2012-06-20 16:38:30 -07006213 @see
6214 @return Result of the function call
6215*/
6216WDI_Status WDI_HALDumpCmdReq
6217(
6218 WDI_HALDumpCmdReqParamsType *halDumpCmdReqParams,
6219 WDI_HALDumpCmdRspCb halDumpCmdRspCb,
6220 void *pUserData
6221)
6222{
6223 WDI_EventInfoType wdiEventData;
6224 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6225
6226 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006227 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006228 ------------------------------------------------------------------------*/
6229 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6230 {
6231 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6232 "WDI API call before module is initialized - Fail request");
6233
Jeff Johnsone7245742012-09-05 17:12:55 -07006234 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006235 }
6236
6237 /*------------------------------------------------------------------------
6238 Fill in Event data and post to the Main FSM
6239 ------------------------------------------------------------------------*/
6240 wdiEventData.wdiRequest = WDI_HAL_DUMP_CMD_REQ;
6241 wdiEventData.pEventData = (void *)halDumpCmdReqParams;
6242 wdiEventData.uEventDataSize = sizeof(WDI_HALDumpCmdReqParamsType);
6243 wdiEventData.pCBfnc = halDumpCmdRspCb;
6244 wdiEventData.pUserData = pUserData;
6245
6246 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6247}
6248
Jeff Johnsone7245742012-09-05 17:12:55 -07006249/*============================================================================
6250
Jeff Johnson295189b2012-06-20 16:38:30 -07006251 DAL Control Path Main FSM Function Implementation
Jeff Johnsone7245742012-09-05 17:12:55 -07006252
Jeff Johnson295189b2012-06-20 16:38:30 -07006253 ============================================================================*/
6254
6255/**
6256 @brief Main FSM Start function for all states except BUSY
6257
Jeff Johnsone7245742012-09-05 17:12:55 -07006258
6259 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -07006260 wdiEV: event posted to the main DAL FSM
6261 pEventData: pointer to the event information
Jeff Johnsone7245742012-09-05 17:12:55 -07006262 structure
6263
Jeff Johnson295189b2012-06-20 16:38:30 -07006264 @see
6265 @return Result of the function call
6266*/
6267WDI_Status
6268WDI_PostMainEvent
6269(
Jeff Johnsone7245742012-09-05 17:12:55 -07006270 WDI_ControlBlockType* pWDICtx,
6271 WDI_MainEventType wdiEV,
Jeff Johnson295189b2012-06-20 16:38:30 -07006272 WDI_EventInfoType* pEventData
Jeff Johnsone7245742012-09-05 17:12:55 -07006273
Jeff Johnson295189b2012-06-20 16:38:30 -07006274)
6275{
Jeff Johnsone7245742012-09-05 17:12:55 -07006276 WDI_Status wdiStatus;
6277 WDI_MainFuncType pfnWDIMainEvHdlr;
6278 WDI_MainStateType wdiOldState;
Jeff Johnson295189b2012-06-20 16:38:30 -07006279 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6280
6281 /*-------------------------------------------------------------------------
6282 Sanity check
6283 -------------------------------------------------------------------------*/
6284 if (( pWDICtx->uGlobalState >= WDI_MAX_ST ) ||
6285 ( wdiEV >= WDI_MAX_EVENT ))
6286 {
6287 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6288 "Invalid state or event in Post Main Ev function ST: %d EV: %d",
6289 pWDICtx->uGlobalState, wdiEV);
Jeff Johnsone7245742012-09-05 17:12:55 -07006290 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006291 }
6292
6293 /*Access to the global state must be locked */
6294 wpalMutexAcquire(&pWDICtx->wptMutex);
6295
6296 /*Fetch event handler for state*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006297 pfnWDIMainEvHdlr = wdiMainFSM[pWDICtx->uGlobalState].pfnMainTbl[wdiEV];
Jeff Johnson295189b2012-06-20 16:38:30 -07006298
6299 wdiOldState = pWDICtx->uGlobalState;
6300
6301 /*
Jeff Johnsone7245742012-09-05 17:12:55 -07006302 --Incase of WDI event is WDI_RESPONSE_EVENT and this is called when a
6303 response comes from CCPU for the request sent by host:
6304 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 -07006305 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 -07006306 --Incase of WDI event is WDI_RESPONSE_EVENT and it is an indication from the
Jeff Johnson295189b2012-06-20 16:38:30 -07006307 CCPU:
6308 don't change the state */
6309 if ( WDI_RESPONSE_EVENT != wdiEV)
6310 {
6311 /*Transition to BUSY State - the request is now being processed by the FSM,
6312 if the request fails we shall transition back to the old state, if not
6313 the request will manage its own state transition*/
6314 WDI_STATE_TRANSITION( pWDICtx, WDI_BUSY_ST);
6315 }
6316 /* If the state function associated with the EV is NULL it means that this
6317 event is not allowed in this state*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006318 if ( NULL != pfnWDIMainEvHdlr )
Jeff Johnson295189b2012-06-20 16:38:30 -07006319 {
6320 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -07006321 "Posting event %d in state: %d to the Main FSM",
Jeff Johnson295189b2012-06-20 16:38:30 -07006322 wdiEV, wdiOldState);
Jeff Johnsone7245742012-09-05 17:12:55 -07006323 wdiStatus = pfnWDIMainEvHdlr( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07006324 }
6325 else
6326 {
6327 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07006328 "Unexpected event %d in state: %d",
Jeff Johnson295189b2012-06-20 16:38:30 -07006329 wdiEV, wdiOldState);
Jeff Johnsone7245742012-09-05 17:12:55 -07006330 wdiStatus = WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006331 }
6332
6333 /* If a request handles itself well it will end up in a success or in a
6334 pending
6335 Success - means that the request was processed and the proper state
6336 transition already occurred or will occur when the resp is received
6337 - NO other state transition or dequeueing is required
Jeff Johnsone7245742012-09-05 17:12:55 -07006338
Jeff Johnson295189b2012-06-20 16:38:30 -07006339 Pending - means the request could not be processed at this moment in time
6340 because the FSM was already busy so no state transition or dequeueing
6341 is necessary anymore
Jeff Johnsone7245742012-09-05 17:12:55 -07006342
Jeff Johnson295189b2012-06-20 16:38:30 -07006343 Success for synchronous case means that the transition may occur and
6344 processing of pending requests may continue - so it should go through
6345 and restores the state and continue processing queued requests*/
6346 if (( WDI_STATUS_SUCCESS != wdiStatus )&&
6347 ( WDI_STATUS_PENDING != wdiStatus ))
6348 {
6349 if ( WDI_RESPONSE_EVENT != wdiEV)
6350 {
6351 /*The request has failed or could not be processed - transition back to
6352 the old state - check to see if anything was queued and try to execute
6353 The dequeue logic should post a message to a thread and return - no
6354 actual processing can occur */
6355 WDI_STATE_TRANSITION( pWDICtx, wdiOldState);
6356 }
6357 WDI_DequeuePendingReq(pWDICtx);
Jeff Johnsone7245742012-09-05 17:12:55 -07006358
Jeff Johnson295189b2012-06-20 16:38:30 -07006359 }
6360
6361 /* we have completed processing the event */
6362 wpalMutexRelease(&pWDICtx->wptMutex);
6363
Jeff Johnsone7245742012-09-05 17:12:55 -07006364 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07006365
6366}/*WDI_PostMainEvent*/
6367
6368
6369/*--------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006370 INIT State Functions
Jeff Johnson295189b2012-06-20 16:38:30 -07006371--------------------------------------------------------------------------*/
6372/**
6373 @brief Main FSM Start function for all states except BUSY
6374
Jeff Johnsone7245742012-09-05 17:12:55 -07006375
6376 @param pWDICtx: pointer to the WLAN DAL context
6377 pEventData: pointer to the event information structure
6378
Jeff Johnson295189b2012-06-20 16:38:30 -07006379 @see
6380 @return Result of the function call
6381*/
6382WDI_Status
6383WDI_MainStart
Jeff Johnsone7245742012-09-05 17:12:55 -07006384(
Jeff Johnson295189b2012-06-20 16:38:30 -07006385 WDI_ControlBlockType* pWDICtx,
6386 WDI_EventInfoType* pEventData
6387)
6388{
6389
6390 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006391 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006392 ----------------------------------------------------------------------*/
6393 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6394 {
6395 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08006396 "Invalid parameters on Main Start Started %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07006397 pWDICtx, pEventData);
6398 return WDI_STATUS_E_FAILURE;
6399 }
6400
6401 wpalMutexAcquire(&pWDICtx->wptMutex);
6402
6403 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006404 Check if the Control Transport has been opened
Jeff Johnson295189b2012-06-20 16:38:30 -07006405 ----------------------------------------------------------------------*/
6406 if ( eWLAN_PAL_FALSE == pWDICtx->bCTOpened )
6407 {
6408 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
6409 "Control Transport not yet Open - queueing the request");
6410
6411 WDI_STATE_TRANSITION( pWDICtx, WDI_INIT_ST);
Jeff Johnsone7245742012-09-05 17:12:55 -07006412 WDI_QueuePendingReq( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07006413
6414 wpalMutexRelease(&pWDICtx->wptMutex);
6415 return WDI_STATUS_PENDING;
6416 }
Jeff Johnsone7245742012-09-05 17:12:55 -07006417
Jeff Johnson295189b2012-06-20 16:38:30 -07006418 wpalMutexRelease(&pWDICtx->wptMutex);
6419
6420 /*Return Success*/
6421 return WDI_ProcessRequest( pWDICtx, pEventData );
6422
6423}/*WDI_MainStart*/
6424
6425/**
6426 @brief Main FSM Response function for state INIT
6427
Jeff Johnsone7245742012-09-05 17:12:55 -07006428
6429 @param pWDICtx: pointer to the WLAN DAL context
6430 pEventData: pointer to the event information structure
6431
Jeff Johnson295189b2012-06-20 16:38:30 -07006432 @see
6433 @return Result of the function call
6434*/
6435WDI_Status
6436WDI_MainRspInit
Jeff Johnsone7245742012-09-05 17:12:55 -07006437(
Jeff Johnson295189b2012-06-20 16:38:30 -07006438 WDI_ControlBlockType* pWDICtx,
6439 WDI_EventInfoType* pEventData
6440)
6441{
6442 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006443 Not expecting a response from the device before it is started
Jeff Johnson295189b2012-06-20 16:38:30 -07006444 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006445 WDI_ASSERT(0);
Jeff Johnson295189b2012-06-20 16:38:30 -07006446
6447 /*Return Success*/
6448 return WDI_STATUS_E_NOT_ALLOWED;
6449}/* WDI_MainRspInit */
6450
6451/**
6452 @brief Main FSM Close function for all states except BUSY
6453
Jeff Johnsone7245742012-09-05 17:12:55 -07006454
6455 @param pWDICtx: pointer to the WLAN DAL context
6456 pEventData: pointer to the event information structure
6457
Jeff Johnson295189b2012-06-20 16:38:30 -07006458 @see
6459 @return Result of the function call
6460*/
6461WDI_Status
6462WDI_MainClose
Jeff Johnsone7245742012-09-05 17:12:55 -07006463(
Jeff Johnson295189b2012-06-20 16:38:30 -07006464 WDI_ControlBlockType* pWDICtx,
6465 WDI_EventInfoType* pEventData
6466)
6467{
6468
6469 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006470 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006471 ----------------------------------------------------------------------*/
6472 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6473 {
6474 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08006475 "Invalid parameters on Main Close %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07006476 pWDICtx, pEventData);
6477 return WDI_STATUS_E_FAILURE;
6478 }
6479
6480 /*Return Success*/
6481 return WDI_ProcessRequest( pWDICtx, pEventData );
6482
6483}/*WDI_MainClose*/
6484/*--------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006485 STARTED State Functions
Jeff Johnson295189b2012-06-20 16:38:30 -07006486--------------------------------------------------------------------------*/
6487/**
6488 @brief Main FSM Start function for state STARTED
6489
Jeff Johnsone7245742012-09-05 17:12:55 -07006490
6491 @param pWDICtx: pointer to the WLAN DAL context
6492 pEventData: pointer to the event information structure
6493
Jeff Johnson295189b2012-06-20 16:38:30 -07006494 @see
6495 @return Result of the function call
6496*/
6497WDI_Status
6498WDI_MainStartStarted
Jeff Johnsone7245742012-09-05 17:12:55 -07006499(
Jeff Johnson295189b2012-06-20 16:38:30 -07006500 WDI_ControlBlockType* pWDICtx,
6501 WDI_EventInfoType* pEventData
6502)
6503{
6504 WDI_StartRspCb wdiStartRspCb = NULL;
6505 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6506
6507 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006508 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006509 ----------------------------------------------------------------------*/
6510 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6511 {
6512 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08006513 "Invalid parameters on Main Start %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07006514 pWDICtx, pEventData);
6515 return WDI_STATUS_E_FAILURE;
6516 }
6517
6518 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006519 Nothing to do transport was already started
Jeff Johnson295189b2012-06-20 16:38:30 -07006520 ----------------------------------------------------------------------*/
6521 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -07006522 "Received start while transport was already started - nothing to do");
Jeff Johnson295189b2012-06-20 16:38:30 -07006523
6524 wpalMutexAcquire(&pWDICtx->wptMutex);
6525
6526 /*Transition back to started because the post function transitioned us to
6527 busy*/
6528 WDI_STATE_TRANSITION( pWDICtx, WDI_STARTED_ST);
6529
6530 /*Check to see if any request is pending*/
6531 WDI_DequeuePendingReq(pWDICtx);
Jeff Johnsone7245742012-09-05 17:12:55 -07006532
Jeff Johnson295189b2012-06-20 16:38:30 -07006533 wpalMutexRelease(&pWDICtx->wptMutex);
6534
6535 /*Tell UMAC Success*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006536 wdiStartRspCb = (WDI_StartRspCb)pEventData->pCBfnc;
6537
Jeff Johnson295189b2012-06-20 16:38:30 -07006538 /*Notify UMAC*/
6539 wdiStartRspCb( &pWDICtx->wdiCachedStartRspParams, pWDICtx->pRspCBUserData);
6540
6541 /*Return Success*/
6542 return WDI_STATUS_SUCCESS;
6543
6544}/*WDI_MainStartStarted*/
6545
6546/**
6547 @brief Main FSM Stop function for state STARTED
6548
Jeff Johnsone7245742012-09-05 17:12:55 -07006549
6550 @param pWDICtx: pointer to the WLAN DAL context
6551 pEventData: pointer to the event information structure
6552
Jeff Johnson295189b2012-06-20 16:38:30 -07006553 @see
6554 @return Result of the function call
6555*/
6556WDI_Status
6557WDI_MainStopStarted
Jeff Johnsone7245742012-09-05 17:12:55 -07006558(
Jeff Johnson295189b2012-06-20 16:38:30 -07006559 WDI_ControlBlockType* pWDICtx,
6560 WDI_EventInfoType* pEventData
6561)
6562{
6563 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006564 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006565 ----------------------------------------------------------------------*/
6566 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6567 {
6568 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08006569 "Invalid parameters on Main Stop Started %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07006570 pWDICtx, pEventData);
6571 return WDI_STATUS_E_FAILURE;
6572 }
6573
6574 /*State at this point is BUSY - because we enter this state before posting
6575 an event to the FSM in order to prevent potential race conditions*/
6576
6577 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
6578 "Processing stop request in FSM");
6579
6580 /*Return Success*/
6581 return WDI_ProcessRequest( pWDICtx, pEventData );
6582
6583}/*WDI_MainStopStarted*/
6584/**
6585 @brief Main FSM Request function for state started
6586
Jeff Johnsone7245742012-09-05 17:12:55 -07006587
6588 @param pWDICtx: pointer to the WLAN DAL context
6589 pEventData: pointer to the event information structure
6590
Jeff Johnson295189b2012-06-20 16:38:30 -07006591 @see
6592 @return Result of the function call
6593*/
6594WDI_Status
6595WDI_MainReqStarted
Jeff Johnsone7245742012-09-05 17:12:55 -07006596(
Jeff Johnson295189b2012-06-20 16:38:30 -07006597 WDI_ControlBlockType* pWDICtx,
6598 WDI_EventInfoType* pEventData
6599)
6600{
6601
6602 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006603 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006604 ----------------------------------------------------------------------*/
6605 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6606 {
6607 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08006608 "Invalid parameters on Main Req Started %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07006609 pWDICtx, pEventData);
6610 return WDI_STATUS_E_FAILURE;
6611 }
6612
6613 /*State at this point is BUSY - because we enter this state before posting
6614 an event to the FSM in order to prevent potential race conditions*/
6615
6616 /*Return Success*/
6617 return WDI_ProcessRequest( pWDICtx, pEventData );
6618
6619}/*WDI_MainReqStarted*/
6620
6621/**
6622 @brief Main FSM Response function for all states except INIT
6623
Jeff Johnsone7245742012-09-05 17:12:55 -07006624
6625 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -07006626 pEventData: pointer to the event information structure
Jeff Johnsone7245742012-09-05 17:12:55 -07006627
Jeff Johnson295189b2012-06-20 16:38:30 -07006628 @see
6629 @return Result of the function call
6630*/
6631WDI_Status
6632WDI_MainRsp
Jeff Johnsone7245742012-09-05 17:12:55 -07006633(
Jeff Johnson295189b2012-06-20 16:38:30 -07006634 WDI_ControlBlockType* pWDICtx,
6635 WDI_EventInfoType* pEventData
6636)
6637{
Jeff Johnsone7245742012-09-05 17:12:55 -07006638 WDI_Status wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07006639 wpt_boolean expectedResponse;
6640
6641 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006642 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006643 ----------------------------------------------------------------------*/
6644 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6645 {
6646 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08006647 "Invalid parameters on Main Response %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07006648 pWDICtx, pEventData);
6649 return WDI_STATUS_E_FAILURE;
6650 }
6651
6652 if ( pEventData->wdiResponse == pWDICtx->wdiExpectedResponse )
6653 {
6654 /* we received an expected response */
6655 expectedResponse = eWLAN_PAL_TRUE;
6656
6657 /*We expect that we will transition to started after this processing*/
6658 pWDICtx->ucExpectedStateTransition = WDI_STARTED_ST;
6659
6660 /* we are no longer expecting a response */
6661 pWDICtx->wdiExpectedResponse = WDI_MAX_RESP;
6662 }
6663 else
6664 {
6665 /* we received an indication or unexpected response */
6666 expectedResponse = eWLAN_PAL_FALSE;
6667 /* for indications no need to update state from what it is right
6668 now, unless it explicitly does it in the indication handler (say
6669 for device failure ind) */
6670 pWDICtx->ucExpectedStateTransition = pWDICtx->uGlobalState;
6671 }
6672
6673 /*Process the response and indication */
6674 wdiStatus = WDI_ProcessResponse( pWDICtx, pEventData );
6675
6676 /*Lock the CB as we are about to do a state transition*/
6677 wpalMutexAcquire(&pWDICtx->wptMutex);
6678
6679 /*Transition to the expected state after the response processing
6680 - this should always be started state with the following exceptions:
6681 1. processing of a failed start response
6682 2. device failure detected while processing response
6683 3. stop response received*/
6684 WDI_STATE_TRANSITION( pWDICtx, pWDICtx->ucExpectedStateTransition);
Jeff Johnsone7245742012-09-05 17:12:55 -07006685
Jeff Johnson295189b2012-06-20 16:38:30 -07006686 /*Dequeue request that may have been queued while we were waiting for the
6687 response */
6688 if ( expectedResponse )
6689 {
Jeff Johnsone7245742012-09-05 17:12:55 -07006690 WDI_DequeuePendingReq(pWDICtx);
Jeff Johnson295189b2012-06-20 16:38:30 -07006691 }
6692
6693 wpalMutexRelease(&pWDICtx->wptMutex);
6694
6695 /*Return Success - always */
Jeff Johnsone7245742012-09-05 17:12:55 -07006696 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07006697
6698}/*WDI_MainRsp*/
6699
6700/*--------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006701 STOPPED State Functions
Jeff Johnson295189b2012-06-20 16:38:30 -07006702--------------------------------------------------------------------------*/
6703/**
6704 @brief Main FSM Stop function for state STOPPED
6705
Jeff Johnsone7245742012-09-05 17:12:55 -07006706
6707 @param pWDICtx: pointer to the WLAN DAL context
6708 pEventData: pointer to the event information structure
6709
Jeff Johnson295189b2012-06-20 16:38:30 -07006710 @see
6711 @return Result of the function call
6712*/
6713WDI_Status
6714WDI_MainStopStopped
Jeff Johnsone7245742012-09-05 17:12:55 -07006715(
Jeff Johnson295189b2012-06-20 16:38:30 -07006716 WDI_ControlBlockType* pWDICtx,
6717 WDI_EventInfoType* pEventData
6718)
6719{
6720 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006721 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006722 ----------------------------------------------------------------------*/
6723 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6724 {
6725 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08006726 "Invalid parameters on Main Stop Stopped %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07006727 pWDICtx, pEventData);
6728 return WDI_STATUS_E_FAILURE;
6729 }
6730
6731 /*We should normally not get a STOP request if we are already stopped
6732 since we should normally be stopped by the UMAC. However in some
6733 error situations we put ourselves in the stopped state without the
6734 UMAC knowing, so when we get a STOP request in this state we still
6735 process it since we need to clean up the underlying state */
6736 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6737 "Processing stop request while stopped in FSM");
6738
6739 /*Return Success*/
6740 return WDI_ProcessRequest( pWDICtx, pEventData );
6741
6742}/*WDI_MainStopStopped*/
6743
6744/*--------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006745 BUSY State Functions
Jeff Johnson295189b2012-06-20 16:38:30 -07006746--------------------------------------------------------------------------*/
6747/**
6748 @brief Main FSM Start function for state BUSY
6749
Jeff Johnsone7245742012-09-05 17:12:55 -07006750
6751 @param pWDICtx: pointer to the WLAN DAL context
6752 pEventData: pointer to the event information structure
6753
Jeff Johnson295189b2012-06-20 16:38:30 -07006754 @see
6755 @return Result of the function call
6756*/
6757WDI_Status
6758WDI_MainStartBusy
Jeff Johnsone7245742012-09-05 17:12:55 -07006759(
Jeff Johnson295189b2012-06-20 16:38:30 -07006760 WDI_ControlBlockType* pWDICtx,
6761 WDI_EventInfoType* pEventData
6762)
6763{
6764 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006765 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006766 ----------------------------------------------------------------------*/
6767 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6768 {
6769 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08006770 "Invalid parameters on Main Start in BUSY %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07006771 pWDICtx, pEventData);
6772 return WDI_STATUS_E_FAILURE;
6773 }
6774
6775 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006776 Check if the Control Transport has been opened
Jeff Johnson295189b2012-06-20 16:38:30 -07006777 ----------------------------------------------------------------------*/
6778 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
6779 "WDI Busy state - queue start request");
6780
6781 /*Queue the start request*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006782 WDI_QueuePendingReq( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07006783
6784 /*Return Success*/
6785 return WDI_STATUS_PENDING;
6786}/*WDI_MainStartBusy*/
6787
6788/**
6789 @brief Main FSM Stop function for state BUSY
6790
Jeff Johnsone7245742012-09-05 17:12:55 -07006791
6792 @param pWDICtx: pointer to the WLAN DAL context
6793 pEventData: pointer to the event information structure
6794
Jeff Johnson295189b2012-06-20 16:38:30 -07006795 @see
6796 @return Result of the function call
6797*/
6798WDI_Status
6799WDI_MainStopBusy
Jeff Johnsone7245742012-09-05 17:12:55 -07006800(
Jeff Johnson295189b2012-06-20 16:38:30 -07006801 WDI_ControlBlockType* pWDICtx,
6802 WDI_EventInfoType* pEventData
6803)
6804{
6805 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006806 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006807 ----------------------------------------------------------------------*/
6808 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6809 {
6810 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08006811 "Invalid parameters on Main Stop in BUSY %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07006812 pWDICtx, pEventData);
6813 return WDI_STATUS_E_FAILURE;
6814 }
6815
6816 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006817 Check if the Control Transport has been opened
Jeff Johnson295189b2012-06-20 16:38:30 -07006818 ----------------------------------------------------------------------*/
6819 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
6820 "WDI Busy state - queue stop request");
6821
Jeff Johnsone7245742012-09-05 17:12:55 -07006822 WDI_QueuePendingReq( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07006823 return WDI_STATUS_PENDING;
Jeff Johnsone7245742012-09-05 17:12:55 -07006824
Jeff Johnson295189b2012-06-20 16:38:30 -07006825}/*WDI_MainStopBusy*/
6826
6827/**
6828 @brief Main FSM Request function for state BUSY
6829
Jeff Johnsone7245742012-09-05 17:12:55 -07006830
6831 @param pWDICtx: pointer to the WLAN DAL context
6832 pEventData: pointer to the event information structure
6833
Jeff Johnson295189b2012-06-20 16:38:30 -07006834 @see
6835 @return Result of the function call
6836*/
6837WDI_Status
6838WDI_MainReqBusy
Jeff Johnsone7245742012-09-05 17:12:55 -07006839(
Jeff Johnson295189b2012-06-20 16:38:30 -07006840 WDI_ControlBlockType* pWDICtx,
6841 WDI_EventInfoType* pEventData
6842)
6843{
6844 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006845 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006846 ----------------------------------------------------------------------*/
6847 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6848 {
6849 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08006850 "Invalid parameters on Main Request in BUSY %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07006851 pWDICtx, pEventData);
6852 return WDI_STATUS_E_FAILURE;
6853 }
6854
6855 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006856 Check if the Control Transport has been opened
Jeff Johnson295189b2012-06-20 16:38:30 -07006857 ----------------------------------------------------------------------*/
6858 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
6859 "WDI Busy state - queue request %d because waiting for response %d",
6860 pEventData->wdiRequest, pWDICtx->wdiExpectedResponse);
6861
Jeff Johnsone7245742012-09-05 17:12:55 -07006862 WDI_QueuePendingReq( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07006863 return WDI_STATUS_PENDING;
Jeff Johnsone7245742012-09-05 17:12:55 -07006864
Jeff Johnson295189b2012-06-20 16:38:30 -07006865}/*WDI_MainReqBusy*/
6866/**
6867 @brief Main FSM Close function for state BUSY
6868
Jeff Johnsone7245742012-09-05 17:12:55 -07006869
6870 @param pWDICtx: pointer to the WLAN DAL context
6871 pEventData: pointer to the event information structure
6872
Jeff Johnson295189b2012-06-20 16:38:30 -07006873 @see
6874 @return Result of the function call
6875*/
6876WDI_Status
6877WDI_MainCloseBusy
Jeff Johnsone7245742012-09-05 17:12:55 -07006878(
Jeff Johnson295189b2012-06-20 16:38:30 -07006879 WDI_ControlBlockType* pWDICtx,
6880 WDI_EventInfoType* pEventData
6881)
6882{
6883 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006884 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006885 ----------------------------------------------------------------------*/
6886 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6887 {
6888 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08006889 "Invalid parameters on Main Close in BUSY %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07006890 pWDICtx, pEventData);
6891 return WDI_STATUS_E_FAILURE;
6892 }
6893
6894 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006895 Check if the Control Transport has been opened
Jeff Johnson295189b2012-06-20 16:38:30 -07006896 ----------------------------------------------------------------------*/
6897 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
6898 "WDI Busy state - queue close request");
6899
Jeff Johnsone7245742012-09-05 17:12:55 -07006900 WDI_QueuePendingReq( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07006901 return WDI_STATUS_PENDING;
Jeff Johnsone7245742012-09-05 17:12:55 -07006902
Jeff Johnson295189b2012-06-20 16:38:30 -07006903}/*WDI_MainCloseBusy*/
6904
6905/**
6906 @brief Main FSM Shutdown function for INIT & STARTED states
6907
6908
6909 @param pWDICtx: pointer to the WLAN DAL context
6910 pEventData: pointer to the event information structure
6911
6912 @see
6913 @return Result of the function call
6914*/
6915WDI_Status
6916WDI_MainShutdown
6917(
6918 WDI_ControlBlockType* pWDICtx,
6919 WDI_EventInfoType* pEventData
6920)
6921{
6922 /*--------------------------------------------------------------------
6923 Sanity Check
6924 ----------------------------------------------------------------------*/
6925 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6926 {
6927 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08006928 "Invalid parameters on Main Start %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07006929 pWDICtx, pEventData);
6930 return WDI_STATUS_E_FAILURE;
6931 }
6932
6933 /*State at this point is BUSY - because we enter this state before posting
6934 an event to the FSM in order to prevent potential race conditions*/
6935
6936 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
6937 "Processing shutdown request in FSM");
6938
6939 /*Return Success*/
6940 return WDI_ProcessRequest( pWDICtx, pEventData );
6941
6942}/*WDI_MainShutdown*/
6943
6944/**
6945 @brief Main FSM Shutdown function for BUSY state
6946
6947
6948 @param pWDICtx: pointer to the WLAN DAL context
6949 pEventData: pointer to the event information structure
6950
6951 @see
6952 @return Result of the function call
6953*/
6954WDI_Status
6955WDI_MainShutdownBusy
6956(
6957 WDI_ControlBlockType* pWDICtx,
6958 WDI_EventInfoType* pEventData
6959)
6960{
6961 /*--------------------------------------------------------------------
6962 Sanity Check
6963 ----------------------------------------------------------------------*/
6964 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6965 {
6966 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08006967 "Invalid parameters on Main Start %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07006968 pWDICtx, pEventData);
6969 return WDI_STATUS_E_FAILURE;
6970 }
6971
6972 /* If you are waiting for a HAL response at this stage, you are not
6973 * going to get it. Riva is already shutdown/crashed.
6974 */
6975 wpalTimerStop(&gWDICb.wptResponseTimer);
6976
6977 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
6978 "Processing shutdown request in FSM: Busy state ");
6979
6980 return WDI_ProcessRequest( pWDICtx, pEventData );
6981
6982}/*WDI_MainShutdownBusy*/
6983
6984
Jeff Johnsone7245742012-09-05 17:12:55 -07006985/*=======================================================================
6986
Jeff Johnson295189b2012-06-20 16:38:30 -07006987 WLAN DAL Control Path Main Processing Functions
Jeff Johnsone7245742012-09-05 17:12:55 -07006988
Jeff Johnson295189b2012-06-20 16:38:30 -07006989*=======================================================================*/
6990
6991/*========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -07006992 Main DAL Control Path Request Processing API
Jeff Johnson295189b2012-06-20 16:38:30 -07006993========================================================================*/
6994/**
Jeff Johnsone7245742012-09-05 17:12:55 -07006995 @brief Process Start Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07006996 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07006997
6998 @param pWDICtx: pointer to the WLAN DAL context
6999 pEventData: pointer to the event information structure
7000
Jeff Johnson295189b2012-06-20 16:38:30 -07007001 @see
7002 @return Result of the function call
7003*/
7004WDI_Status
7005WDI_ProcessStartReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007006(
Jeff Johnson295189b2012-06-20 16:38:30 -07007007 WDI_ControlBlockType* pWDICtx,
7008 WDI_EventInfoType* pEventData
7009)
7010{
7011 WDI_StartReqParamsType* pwdiStartParams = NULL;
7012 WDI_StartRspCb wdiStartRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07007013 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07007014 wpt_uint16 usDataOffset = 0;
7015 wpt_uint16 usSendSize = 0;
7016
Jeff Johnsone7245742012-09-05 17:12:55 -07007017 tHalMacStartReqMsg halStartReq;
7018 wpt_uint16 usLen = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07007019 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7020
7021 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007022 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07007023 -------------------------------------------------------------------------*/
7024 if (( NULL == pEventData ) ||
7025 ( NULL == (pwdiStartParams = (WDI_StartReqParamsType*)pEventData->pEventData)) ||
7026 ( NULL == (wdiStartRspCb = (WDI_StartRspCb)pEventData->pCBfnc)))
7027 {
7028 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07007029 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07007030 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007031 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007032 }
7033
7034 /*-----------------------------------------------------------------------
7035 Get message buffer
7036 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007037 usLen = sizeof(halStartReq.startReqParams) +
Jeff Johnson295189b2012-06-20 16:38:30 -07007038 pwdiStartParams->usConfigBufferLen;
7039
Jeff Johnsone7245742012-09-05 17:12:55 -07007040 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_START_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07007041 usLen,
7042 &pSendBuffer, &usDataOffset, &usSendSize))||
7043 ( usSendSize < (usDataOffset + usLen )))
7044 {
7045 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007046 "Unable to get send buffer in start req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007047 pEventData, pwdiStartParams, wdiStartRspCb);
7048 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007049 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007050 }
7051
7052 /*-----------------------------------------------------------------------
7053 Fill in the message
7054 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007055 halStartReq.startReqParams.driverType =
7056 WDI_2_HAL_DRV_TYPE(pwdiStartParams->wdiDriverType);
Jeff Johnson295189b2012-06-20 16:38:30 -07007057
Jeff Johnsone7245742012-09-05 17:12:55 -07007058 halStartReq.startReqParams.uConfigBufferLen =
7059 pwdiStartParams->usConfigBufferLen;
7060 wpalMemoryCopy( pSendBuffer+usDataOffset,
7061 &halStartReq.startReqParams,
7062 sizeof(halStartReq.startReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07007063
Jeff Johnsone7245742012-09-05 17:12:55 -07007064 usDataOffset += sizeof(halStartReq.startReqParams);
7065 wpalMemoryCopy( pSendBuffer+usDataOffset,
7066 pwdiStartParams->pConfigBuffer,
7067 pwdiStartParams->usConfigBufferLen);
Jeff Johnson295189b2012-06-20 16:38:30 -07007068
7069 pWDICtx->wdiReqStatusCB = pwdiStartParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07007070 pWDICtx->pReqStatusUserData = pwdiStartParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07007071
7072 /*Save Low Level Ind CB and associated user data - it will be used further
7073 on when an indication is coming from the lower MAC*/
7074 pWDICtx->wdiLowLevelIndCB = pwdiStartParams->wdiLowLevelIndCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07007075 pWDICtx->pIndUserData = pwdiStartParams->pIndUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07007076
Jeff Johnsone7245742012-09-05 17:12:55 -07007077 pWDICtx->bFrameTransEnabled = pwdiStartParams->bFrameTransEnabled;
Jeff Johnson295189b2012-06-20 16:38:30 -07007078 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007079 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07007080 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007081 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07007082 wdiStartRspCb, pEventData->pUserData, WDI_START_RESP);
7083
Jeff Johnsone7245742012-09-05 17:12:55 -07007084
Jeff Johnson295189b2012-06-20 16:38:30 -07007085}/*WDI_ProcessStartReq*/
7086
7087/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007088 @brief Process Stop Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07007089 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007090
7091 @param pWDICtx: pointer to the WLAN DAL context
7092 pEventData: pointer to the event information structure
7093
Jeff Johnson295189b2012-06-20 16:38:30 -07007094 @see
7095 @return Result of the function call
7096*/
7097WDI_Status
7098WDI_ProcessStopReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007099(
Jeff Johnson295189b2012-06-20 16:38:30 -07007100 WDI_ControlBlockType* pWDICtx,
7101 WDI_EventInfoType* pEventData
7102)
7103{
7104 WDI_StopReqParamsType* pwdiStopParams = NULL;
7105 WDI_StopRspCb wdiStopRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07007106 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07007107 wpt_uint16 usDataOffset = 0;
7108 wpt_uint16 usSendSize = 0;
Jeff Johnson43971f52012-07-17 12:26:56 -07007109 wpt_status status;
Jeff Johnsone7245742012-09-05 17:12:55 -07007110 tHalMacStopReqMsg halStopReq;
Jeff Johnson295189b2012-06-20 16:38:30 -07007111 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7112
7113 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007114 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07007115 -------------------------------------------------------------------------*/
7116 if (( NULL == pEventData ) ||
7117 ( NULL == (pwdiStopParams = (WDI_StopReqParamsType*)pEventData->pEventData)) ||
7118 ( NULL == (wdiStopRspCb = (WDI_StopRspCb)pEventData->pCBfnc)))
7119 {
7120 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07007121 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07007122 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -08007123 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -07007124 }
7125
7126 /*-----------------------------------------------------------------------
7127 Get message buffer
7128 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007129 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_STOP_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07007130 sizeof(halStopReq.stopReqParams),
7131 &pSendBuffer, &usDataOffset, &usSendSize))||
7132 ( usSendSize < (usDataOffset + sizeof(halStopReq.stopReqParams) )))
7133 {
7134 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007135 "Unable to get send buffer in stop req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007136 pEventData, pwdiStopParams, wdiStopRspCb);
7137 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -08007138 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -07007139 }
7140
7141 /*-----------------------------------------------------------------------
7142 Fill in the message
7143 -----------------------------------------------------------------------*/
7144 halStopReq.stopReqParams.reason = WDI_2_HAL_STOP_REASON(
7145 pwdiStopParams->wdiStopReason);
7146
Jeff Johnsone7245742012-09-05 17:12:55 -07007147 wpalMemoryCopy( pSendBuffer+usDataOffset,
7148 &halStopReq.stopReqParams,
7149 sizeof(halStopReq.stopReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07007150
7151 pWDICtx->wdiReqStatusCB = pwdiStopParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07007152 pWDICtx->pReqStatusUserData = pwdiStopParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07007153
7154 /*! TO DO: stop the data services */
7155 if ( eDRIVER_TYPE_MFG != pWDICtx->driverMode )
7156 {
7157 /*Stop the STA Table !UT- check this logic again
7158 It is safer to do it here than on the response - because a stop is imminent*/
7159 WDI_STATableStop(pWDICtx);
7160
7161 /* Reset the event to be not signalled */
Jeff Johnson43971f52012-07-17 12:26:56 -07007162 status = wpalEventReset(&pWDICtx->setPowerStateEvent);
7163 if (eWLAN_PAL_STATUS_SUCCESS != status)
Jeff Johnson295189b2012-06-20 16:38:30 -07007164 {
7165 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7166 "WDI Init failed to reset power state event");
7167
Jeff Johnsone7245742012-09-05 17:12:55 -07007168 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -08007169 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -07007170 }
7171 /* Stop Transport Driver, DXE */
Ravali85acf6b2012-12-12 14:01:38 -08007172 status = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_DOWN, WDI_SetPowerStateCb);
7173 if( eWLAN_PAL_STATUS_SUCCESS != status )
7174 {
7175 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain9a5d5382013-11-17 22:05:35 -08007176 "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 -08007177 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -08007178 goto fail;
Ravali85acf6b2012-12-12 14:01:38 -08007179 }
Jeff Johnson295189b2012-06-20 16:38:30 -07007180 /*
Jeff Johnsone7245742012-09-05 17:12:55 -07007181 * Wait for the event to be set once the ACK comes back from DXE
Jeff Johnson295189b2012-06-20 16:38:30 -07007182 */
Jeff Johnson43971f52012-07-17 12:26:56 -07007183 status = wpalEventWait(&pWDICtx->setPowerStateEvent,
7184 WDI_SET_POWER_STATE_TIMEOUT);
7185 if (eWLAN_PAL_STATUS_SUCCESS != status)
Jeff Johnson295189b2012-06-20 16:38:30 -07007186 {
7187 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7188 "WDI Init failed to wait on an event");
7189
Jeff Johnsone7245742012-09-05 17:12:55 -07007190 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -08007191 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -07007192 }
7193 }
7194
7195 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007196 Send Stop Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07007197 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007198 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07007199 wdiStopRspCb, pEventData->pUserData, WDI_STOP_RESP);
7200
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -08007201fail:
7202 // Release the message buffer so we don't leak
7203 wpalMemoryFree(pSendBuffer);
7204
7205failRequest:
7206 //WDA should have failure check to avoid the memory leak
7207 return WDI_STATUS_E_FAILURE;
7208
Jeff Johnson295189b2012-06-20 16:38:30 -07007209}/*WDI_ProcessStopReq*/
7210
7211/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007212 @brief Process Close Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07007213 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007214
7215 @param pWDICtx: pointer to the WLAN DAL context
7216 pEventData: pointer to the event information structure
7217
Jeff Johnson295189b2012-06-20 16:38:30 -07007218 @see
7219 @return Result of the function call
7220*/
7221WDI_Status
7222WDI_ProcessCloseReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007223(
Jeff Johnson295189b2012-06-20 16:38:30 -07007224 WDI_ControlBlockType* pWDICtx,
7225 WDI_EventInfoType* pEventData
7226)
7227{
Jeff Johnsone7245742012-09-05 17:12:55 -07007228 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07007229 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7230
7231 /*Lock control block for cleanup*/
7232 wpalMutexAcquire(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07007233
Jeff Johnson295189b2012-06-20 16:38:30 -07007234 /*Clear all pending request*/
7235 WDI_ClearPendingRequests(pWDICtx);
7236
7237 /* Close Control transport*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007238 WCTS_CloseTransport(pWDICtx->wctsHandle);
Jeff Johnson295189b2012-06-20 16:38:30 -07007239
7240 /* Close Data transport*/
7241 /* FTM mode does not open Data Path */
7242 if ( eDRIVER_TYPE_MFG != pWDICtx->driverMode )
7243 {
7244 WDTS_Close(pWDICtx);
7245 }
7246
7247 /*Close the STA Table !UT- check this logic again*/
7248 WDI_STATableClose(pWDICtx);
7249
7250 /*close the PAL */
7251 wptStatus = wpalClose(pWDICtx->pPALContext);
7252 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
7253 {
7254 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
7255 "Failed to wpal Close %d", wptStatus);
7256 WDI_ASSERT(0);
7257 }
7258
7259 /*Transition back to init state*/
7260 WDI_STATE_TRANSITION( pWDICtx, WDI_INIT_ST);
7261
7262 wpalMutexRelease(&pWDICtx->wptMutex);
7263
7264 /*Make sure the expected state is properly defaulted to Init*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007265 pWDICtx->ucExpectedStateTransition = WDI_INIT_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07007266
Jeff Johnsone7245742012-09-05 17:12:55 -07007267 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07007268}/*WDI_ProcessCloseReq*/
7269
7270
7271/*===========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -07007272 SCANING REQUEST PROCESSING API
Jeff Johnson295189b2012-06-20 16:38:30 -07007273===========================================================================*/
7274
7275/**
7276 @brief Process Init Scan Request function (called when Main FSM
7277 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007278
7279 @param pWDICtx: pointer to the WLAN DAL context
7280 pEventData: pointer to the event information structure
7281
Jeff Johnson295189b2012-06-20 16:38:30 -07007282 @see
7283 @return Result of the function call
7284*/
7285WDI_Status
7286WDI_ProcessInitScanReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007287(
Jeff Johnson295189b2012-06-20 16:38:30 -07007288 WDI_ControlBlockType* pWDICtx,
7289 WDI_EventInfoType* pEventData
7290)
7291{
7292 WDI_InitScanReqParamsType* pwdiInitScanParams = NULL;
7293 WDI_InitScanRspCb wdiInitScanRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07007294 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07007295 wpt_uint16 usDataOffset = 0;
7296 wpt_uint16 usSendSize = 0;
7297 wpt_uint8 i = 0;
7298
7299 tHalInitScanReqMsg halInitScanReqMsg;
7300
Jeff Johnsone7245742012-09-05 17:12:55 -07007301 /*This is temporary fix.
Jeff Johnson295189b2012-06-20 16:38:30 -07007302 * It shold be removed once host and riva changes are in sync*/
7303 tHalInitScanConReqMsg halInitScanConReqMsg;
7304
7305 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7306
7307 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007308 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07007309 -------------------------------------------------------------------------*/
7310 if (( NULL == pEventData ) ||
7311 ( NULL == (pwdiInitScanParams = (WDI_InitScanReqParamsType*)pEventData->pEventData)) ||
7312 ( NULL == (wdiInitScanRspCb = (WDI_InitScanRspCb)pEventData->pCBfnc)))
7313 {
7314 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07007315 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07007316 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007317 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007318 }
7319
7320#if 0
7321 wpalMutexAcquire(&pWDICtx->wptMutex);
7322 /*-----------------------------------------------------------------------
7323 Check to see if SCAN is already in progress - if so reject the req
7324 We only allow one scan at a time
Jeff Johnsone7245742012-09-05 17:12:55 -07007325 ! TO DO: - revisit this constraint
Jeff Johnson295189b2012-06-20 16:38:30 -07007326 -----------------------------------------------------------------------*/
7327 if ( pWDICtx->bScanInProgress )
7328 {
7329 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
7330 "Scan is already in progress - subsequent scan is not allowed"
7331 " until the first scan completes");
7332
7333 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07007334 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07007335 }
7336
Jeff Johnsone7245742012-09-05 17:12:55 -07007337 pWDICtx->bScanInProgress = eWLAN_PAL_TRUE;
7338 pWDICtx->uScanState = WDI_SCAN_INITIALIZED_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07007339
7340 wpalMutexRelease(&pWDICtx->wptMutex);
7341#endif
Viral Modid86bde22012-12-10 13:09:21 -08007342 if ((pwdiInitScanParams->wdiReqInfo.bUseNOA) && (!WDI_getFwWlanFeatCaps(P2P_GO_NOA_DECOUPLE_INIT_SCAN)))
Jeff Johnson295189b2012-06-20 16:38:30 -07007343 {
Jeff Johnsone7245742012-09-05 17:12:55 -07007344 /*This is temporary fix.
Jeff Johnson295189b2012-06-20 16:38:30 -07007345 * It shold be removed once host and riva changes are in sync*/
7346 /*-----------------------------------------------------------------------
7347 Get message buffer
7348 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007349 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_INIT_SCAN_CON_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07007350 sizeof(halInitScanConReqMsg.initScanParams),
7351 &pSendBuffer, &usDataOffset, &usSendSize))||
7352 ( usSendSize < (usDataOffset + sizeof(halInitScanConReqMsg.initScanParams) )))
7353 {
7354 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007355 "Unable to get send buffer in init scan req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007356 pEventData, pwdiInitScanParams, wdiInitScanRspCb);
7357 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007358 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007359 }
7360
7361
7362 /*-----------------------------------------------------------------------
7363 Fill in the message
7364 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007365 halInitScanConReqMsg.initScanParams.scanMode =
Jeff Johnson295189b2012-06-20 16:38:30 -07007366 WDI_2_HAL_SCAN_MODE(pwdiInitScanParams->wdiReqInfo.wdiScanMode);
7367
7368 wpalMemoryCopy(halInitScanConReqMsg.initScanParams.bssid,
7369 pwdiInitScanParams->wdiReqInfo.macBSSID, WDI_MAC_ADDR_LEN);
7370
Jeff Johnsone7245742012-09-05 17:12:55 -07007371 halInitScanConReqMsg.initScanParams.notifyBss =
Jeff Johnson295189b2012-06-20 16:38:30 -07007372 pwdiInitScanParams->wdiReqInfo.bNotifyBSS;
Jeff Johnsone7245742012-09-05 17:12:55 -07007373 halInitScanConReqMsg.initScanParams.frameType =
Jeff Johnson295189b2012-06-20 16:38:30 -07007374 pwdiInitScanParams->wdiReqInfo.ucFrameType;
Jeff Johnsone7245742012-09-05 17:12:55 -07007375 halInitScanConReqMsg.initScanParams.frameLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07007376 pwdiInitScanParams->wdiReqInfo.ucFrameLength;
7377
7378 WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr( &halInitScanConReqMsg.initScanParams.macMgmtHdr,
7379 &pwdiInitScanParams->wdiReqInfo.wdiMACMgmtHdr);
7380
Jeff Johnson295189b2012-06-20 16:38:30 -07007381 halInitScanConReqMsg.initScanParams.useNoA = pwdiInitScanParams->wdiReqInfo.bUseNOA;
7382 halInitScanConReqMsg.initScanParams.scanDuration = pwdiInitScanParams->wdiReqInfo.scanDuration;
Jeff Johnson295189b2012-06-20 16:38:30 -07007383
Jeff Johnsone7245742012-09-05 17:12:55 -07007384 halInitScanConReqMsg.initScanParams.scanEntry.activeBSScnt =
Jeff Johnson295189b2012-06-20 16:38:30 -07007385 pwdiInitScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt;
7386
7387 for (i=0; i < pwdiInitScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt; i++)
7388 {
Jeff Johnsone7245742012-09-05 17:12:55 -07007389 halInitScanConReqMsg.initScanParams.scanEntry.bssIdx[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -07007390 pwdiInitScanParams->wdiReqInfo.wdiScanEntry.bssIdx[i];
7391 }
7392
Jeff Johnsone7245742012-09-05 17:12:55 -07007393 wpalMemoryCopy( pSendBuffer+usDataOffset,
7394 &halInitScanConReqMsg.initScanParams,
7395 sizeof(halInitScanConReqMsg.initScanParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07007396 }
7397 else
7398 {
7399 /*-----------------------------------------------------------------------
7400 Get message buffer
7401 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007402 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_INIT_SCAN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07007403 sizeof(halInitScanReqMsg.initScanParams),
7404 &pSendBuffer, &usDataOffset, &usSendSize))||
7405 ( usSendSize < (usDataOffset + sizeof(halInitScanReqMsg.initScanParams) )))
7406 {
7407 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007408 "Unable to get send buffer in init scan req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007409 pEventData, pwdiInitScanParams, wdiInitScanRspCb);
7410 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007411 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007412 }
7413
7414
7415 /*-----------------------------------------------------------------------
7416 Fill in the message
7417 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007418 halInitScanReqMsg.initScanParams.scanMode =
Jeff Johnson295189b2012-06-20 16:38:30 -07007419 WDI_2_HAL_SCAN_MODE(pwdiInitScanParams->wdiReqInfo.wdiScanMode);
7420
7421 wpalMemoryCopy(halInitScanReqMsg.initScanParams.bssid,
7422 pwdiInitScanParams->wdiReqInfo.macBSSID, WDI_MAC_ADDR_LEN);
7423
Jeff Johnsone7245742012-09-05 17:12:55 -07007424 halInitScanReqMsg.initScanParams.notifyBss =
Jeff Johnson295189b2012-06-20 16:38:30 -07007425 pwdiInitScanParams->wdiReqInfo.bNotifyBSS;
Jeff Johnsone7245742012-09-05 17:12:55 -07007426 halInitScanReqMsg.initScanParams.frameType =
Jeff Johnson295189b2012-06-20 16:38:30 -07007427 pwdiInitScanParams->wdiReqInfo.ucFrameType;
Jeff Johnsone7245742012-09-05 17:12:55 -07007428 halInitScanReqMsg.initScanParams.frameLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07007429 pwdiInitScanParams->wdiReqInfo.ucFrameLength;
7430
7431 WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr( &halInitScanReqMsg.initScanParams.macMgmtHdr,
7432 &pwdiInitScanParams->wdiReqInfo.wdiMACMgmtHdr);
7433
Jeff Johnsone7245742012-09-05 17:12:55 -07007434 halInitScanReqMsg.initScanParams.scanEntry.activeBSScnt =
Jeff Johnson295189b2012-06-20 16:38:30 -07007435 pwdiInitScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt;
7436
7437 for (i=0; i < pwdiInitScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt; i++)
7438 {
Jeff Johnsone7245742012-09-05 17:12:55 -07007439 halInitScanReqMsg.initScanParams.scanEntry.bssIdx[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -07007440 pwdiInitScanParams->wdiReqInfo.wdiScanEntry.bssIdx[i];
7441 }
7442
Jeff Johnsone7245742012-09-05 17:12:55 -07007443 wpalMemoryCopy( pSendBuffer+usDataOffset,
7444 &halInitScanReqMsg.initScanParams,
7445 sizeof(halInitScanReqMsg.initScanParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07007446 }
7447
7448 pWDICtx->wdiReqStatusCB = pwdiInitScanParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07007449 pWDICtx->pReqStatusUserData = pwdiInitScanParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07007450
7451 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007452 Send Init Scan Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07007453 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007454 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07007455 wdiInitScanRspCb, pEventData->pUserData, WDI_INIT_SCAN_RESP);
7456
7457}/*WDI_ProcessInitScanReq*/
7458
7459/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007460 @brief Process Start Scan Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -07007461 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007462
7463 @param pWDICtx: pointer to the WLAN DAL context
7464 pEventData: pointer to the event information structure
7465
Jeff Johnson295189b2012-06-20 16:38:30 -07007466 @see
7467 @return Result of the function call
7468*/
7469WDI_Status
7470WDI_ProcessStartScanReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007471(
Jeff Johnson295189b2012-06-20 16:38:30 -07007472 WDI_ControlBlockType* pWDICtx,
7473 WDI_EventInfoType* pEventData
7474)
7475{
7476 WDI_StartScanReqParamsType* pwdiStartScanParams = NULL;
7477 WDI_StartScanRspCb wdiStartScanRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07007478 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07007479 wpt_uint16 usDataOffset = 0;
7480 wpt_uint16 usSendSize = 0;
7481
Jeff Johnsone7245742012-09-05 17:12:55 -07007482 tHalStartScanReqMsg halStartScanReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07007483 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7484
7485 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007486 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07007487 -------------------------------------------------------------------------*/
7488 if (( NULL == pEventData ) ||
7489 ( NULL == (pwdiStartScanParams = (WDI_StartScanReqParamsType*)pEventData->pEventData)) ||
7490 ( NULL == (wdiStartScanRspCb = (WDI_StartScanRspCb)pEventData->pCBfnc)))
7491 {
7492 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07007493 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07007494 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007495 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007496 }
7497
7498#if 0
7499 wpalMutexAcquire(&pWDICtx->wptMutex);
7500 /*-----------------------------------------------------------------------
7501 Check to see if SCAN is already in progress - start scan is only
7502 allowed when a scan is ongoing and the state of the scan procedure
Jeff Johnsone7245742012-09-05 17:12:55 -07007503 is either init or end
Jeff Johnson295189b2012-06-20 16:38:30 -07007504 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007505 if (( !pWDICtx->bScanInProgress ) ||
Jeff Johnson295189b2012-06-20 16:38:30 -07007506 (( WDI_SCAN_INITIALIZED_ST != pWDICtx->uScanState ) &&
7507 ( WDI_SCAN_ENDED_ST != pWDICtx->uScanState )))
7508 {
7509 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
7510 "Scan start not allowed in this state %d %d",
7511 pWDICtx->bScanInProgress, pWDICtx->uScanState);
Jeff Johnsone7245742012-09-05 17:12:55 -07007512
Jeff Johnson295189b2012-06-20 16:38:30 -07007513 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07007514 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07007515 }
7516
Jeff Johnsone7245742012-09-05 17:12:55 -07007517 pWDICtx->uScanState = WDI_SCAN_STARTED_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07007518
7519 wpalMutexRelease(&pWDICtx->wptMutex);
7520#endif
7521
7522 /*-----------------------------------------------------------------------
7523 Get message buffer
7524 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007525 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_START_SCAN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07007526 sizeof(halStartScanReqMsg.startScanParams),
7527 &pSendBuffer, &usDataOffset, &usSendSize))||
7528 ( usSendSize < (usDataOffset + sizeof(halStartScanReqMsg.startScanParams) )))
7529 {
7530 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007531 "Unable to get send buffer in start scan req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007532 pEventData, pwdiStartScanParams, wdiStartScanRspCb);
7533 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007534 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007535 }
7536
Jeff Johnsone7245742012-09-05 17:12:55 -07007537 halStartScanReqMsg.startScanParams.scanChannel =
Jeff Johnson295189b2012-06-20 16:38:30 -07007538 pwdiStartScanParams->ucChannel;
Jeff Johnsone7245742012-09-05 17:12:55 -07007539 wpalMemoryCopy( pSendBuffer+usDataOffset,
7540 &halStartScanReqMsg.startScanParams,
7541 sizeof(halStartScanReqMsg.startScanParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07007542
7543 pWDICtx->wdiReqStatusCB = pwdiStartScanParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07007544 pWDICtx->pReqStatusUserData = pwdiStartScanParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07007545
7546 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007547 Send Start Scan Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07007548 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007549 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07007550 wdiStartScanRspCb, pEventData->pUserData, WDI_START_SCAN_RESP);
7551}/*WDI_ProcessStartScanReq*/
7552
7553
7554/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007555 @brief Process End Scan Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07007556 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007557
7558 @param pWDICtx: pointer to the WLAN DAL context
7559 pEventData: pointer to the event information structure
7560
Jeff Johnson295189b2012-06-20 16:38:30 -07007561 @see
7562 @return Result of the function call
7563*/
7564WDI_Status
7565WDI_ProcessEndScanReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007566(
Jeff Johnson295189b2012-06-20 16:38:30 -07007567 WDI_ControlBlockType* pWDICtx,
7568 WDI_EventInfoType* pEventData
7569)
7570{
7571 WDI_EndScanReqParamsType* pwdiEndScanParams = NULL;
7572 WDI_EndScanRspCb wdiEndScanRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07007573 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07007574 wpt_uint16 usDataOffset = 0;
7575 wpt_uint16 usSendSize = 0;
7576
Jeff Johnsone7245742012-09-05 17:12:55 -07007577 tHalEndScanReqMsg halEndScanReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07007578 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7579
7580 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007581 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07007582 -------------------------------------------------------------------------*/
7583 if (( NULL == pEventData ) ||
7584 ( NULL == (pwdiEndScanParams = (WDI_EndScanReqParamsType*)pEventData->pEventData)) ||
7585 ( NULL == (wdiEndScanRspCb = (WDI_EndScanRspCb)pEventData->pCBfnc)))
7586 {
7587 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07007588 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07007589 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007590 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007591 }
7592
Jeff Johnsone7245742012-09-05 17:12:55 -07007593 /* commenting this check as UMAC is sending END_SCAN_REQ after FINISH_SCAN
7594 * sometimes because of this check the scan request is not being
Jeff Johnson295189b2012-06-20 16:38:30 -07007595 * forwarded to HAL and result in hang*/
7596#if 0
7597 wpalMutexAcquire(&pWDICtx->wptMutex);
7598 /*-----------------------------------------------------------------------
7599 Check to see if SCAN is already in progress - end scan is only
7600 allowed when a scan is ongoing and the state of the scan procedure
7601 is started
7602 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007603 if (( !pWDICtx->bScanInProgress ) ||
Jeff Johnson295189b2012-06-20 16:38:30 -07007604 ( WDI_SCAN_STARTED_ST != pWDICtx->uScanState ))
7605 {
7606 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7607 "End start not allowed in this state %d %d",
7608 pWDICtx->bScanInProgress, pWDICtx->uScanState);
Jeff Johnsone7245742012-09-05 17:12:55 -07007609
Jeff Johnson295189b2012-06-20 16:38:30 -07007610 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07007611 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07007612 }
7613
Jeff Johnsone7245742012-09-05 17:12:55 -07007614 pWDICtx->uScanState = WDI_SCAN_ENDED_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07007615
7616 wpalMutexRelease(&pWDICtx->wptMutex);
7617#endif
7618
7619 /*-----------------------------------------------------------------------
7620 Get message buffer
7621 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007622 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_END_SCAN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07007623 sizeof(halEndScanReqMsg.endScanParams),
7624 &pSendBuffer, &usDataOffset, &usSendSize))||
7625 ( usSendSize < (usDataOffset + sizeof(halEndScanReqMsg.endScanParams) )))
7626 {
7627 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007628 "Unable to get send buffer in start scan req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007629 pEventData, pwdiEndScanParams, wdiEndScanRspCb);
7630 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007631 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007632 }
7633
7634 halEndScanReqMsg.endScanParams.scanChannel = pwdiEndScanParams->ucChannel;
7635
Jeff Johnsone7245742012-09-05 17:12:55 -07007636 wpalMemoryCopy( pSendBuffer+usDataOffset,
7637 &halEndScanReqMsg.endScanParams,
7638 sizeof(halEndScanReqMsg.endScanParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07007639
7640 pWDICtx->wdiReqStatusCB = pwdiEndScanParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07007641 pWDICtx->pReqStatusUserData = pwdiEndScanParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07007642
7643 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007644 Send End Scan Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07007645 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007646 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07007647 wdiEndScanRspCb, pEventData->pUserData, WDI_END_SCAN_RESP);
7648}/*WDI_ProcessEndScanReq*/
7649
7650
7651/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007652 @brief Process Finish Scan Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -07007653 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007654
7655 @param pWDICtx: pointer to the WLAN DAL context
7656 pEventData: pointer to the event information structure
7657
Jeff Johnson295189b2012-06-20 16:38:30 -07007658 @see
7659 @return Result of the function call
7660*/
7661WDI_Status
7662WDI_ProcessFinishScanReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007663(
Jeff Johnson295189b2012-06-20 16:38:30 -07007664 WDI_ControlBlockType* pWDICtx,
7665 WDI_EventInfoType* pEventData
7666)
7667{
7668 WDI_FinishScanReqParamsType* pwdiFinishScanParams;
7669 WDI_FinishScanRspCb wdiFinishScanRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07007670 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07007671 wpt_uint16 usDataOffset = 0;
7672 wpt_uint16 usSendSize = 0;
7673 wpt_uint8 i = 0;
Ravali85acf6b2012-12-12 14:01:38 -08007674 wpt_status wptStatus;
Jeff Johnsone7245742012-09-05 17:12:55 -07007675 tHalFinishScanReqMsg halFinishScanReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07007676 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7677
7678 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007679 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07007680 -------------------------------------------------------------------------*/
7681 if (( NULL == pEventData ) ||
7682 ( NULL == pEventData->pEventData) ||
7683 ( NULL == pEventData->pCBfnc))
7684 {
7685 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07007686 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07007687 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007688 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007689 }
7690
7691 pwdiFinishScanParams = (WDI_FinishScanReqParamsType*)pEventData->pEventData;
7692 wdiFinishScanRspCb = (WDI_FinishScanRspCb)pEventData->pCBfnc;
Jeff Johnsone7245742012-09-05 17:12:55 -07007693 /* commenting this check as UMAC is sending END_SCAN_REQ after FINISH_SCAN
7694 * sometimes because of this check the scan request is not being
Jeff Johnson295189b2012-06-20 16:38:30 -07007695 * forwarded to HAL and result in hang*/
7696#if 0
7697 wpalMutexAcquire(&pWDICtx->wptMutex);
7698 /*-----------------------------------------------------------------------
7699 Check to see if SCAN is already in progress
7700 Finish scan gets invoked any scan states. ie. abort scan
7701 It should be allowed in any states.
7702 -----------------------------------------------------------------------*/
7703 if ( !pWDICtx->bScanInProgress )
7704 {
7705 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7706 "Finish start not allowed in this state %d",
7707 pWDICtx->bScanInProgress );
7708
7709 wpalMutexRelease(&pWDICtx->wptMutex);
Ravali85acf6b2012-12-12 14:01:38 -08007710 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07007711 }
7712
7713 /*-----------------------------------------------------------------------
7714 It is safe to reset the scan flags here because until the response comes
Jeff Johnsone7245742012-09-05 17:12:55 -07007715 back all subsequent requests will be blocked at BUSY state
Jeff Johnson295189b2012-06-20 16:38:30 -07007716 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007717 pWDICtx->uScanState = WDI_SCAN_FINISHED_ST;
7718 pWDICtx->bScanInProgress = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007719 wpalMutexRelease(&pWDICtx->wptMutex);
7720#endif
7721
7722 if ( pWDICtx->bInBmps )
7723 {
7724 // notify DTS that we are entering BMPS
Ravali85acf6b2012-12-12 14:01:38 -08007725 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_BMPS, NULL);
7726 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
7727 {
7728 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain9a5d5382013-11-17 22:05:35 -08007729 "WDTS_SetPowerState returned with status %d when trying to notify DTS that host is entering BMPS", wptStatus);
Ravali85acf6b2012-12-12 14:01:38 -08007730 WDI_ASSERT(0);
7731 }
Jeff Johnson295189b2012-06-20 16:38:30 -07007732 }
7733
7734 /*-----------------------------------------------------------------------
7735 Get message buffer
7736 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007737 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_FINISH_SCAN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07007738 sizeof(halFinishScanReqMsg.finishScanParams),
7739 &pSendBuffer, &usDataOffset, &usSendSize))||
7740 ( usSendSize < (usDataOffset + sizeof(halFinishScanReqMsg.finishScanParams) )))
7741 {
7742 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007743 "Unable to get send buffer in start scan req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007744 pEventData, pwdiFinishScanParams, wdiFinishScanRspCb);
7745 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007746 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007747 }
7748
Jeff Johnsone7245742012-09-05 17:12:55 -07007749 halFinishScanReqMsg.finishScanParams.scanMode =
Jeff Johnson295189b2012-06-20 16:38:30 -07007750 WDI_2_HAL_SCAN_MODE(pwdiFinishScanParams->wdiReqInfo.wdiScanMode);
7751
Jeff Johnsone7245742012-09-05 17:12:55 -07007752 halFinishScanReqMsg.finishScanParams.currentOperChannel =
Jeff Johnson295189b2012-06-20 16:38:30 -07007753 pwdiFinishScanParams->wdiReqInfo.ucCurrentOperatingChannel;
7754
Jeff Johnsone7245742012-09-05 17:12:55 -07007755 halFinishScanReqMsg.finishScanParams.cbState =
Jeff Johnson295189b2012-06-20 16:38:30 -07007756 WDI_2_HAL_CB_STATE(pwdiFinishScanParams->wdiReqInfo.wdiCBState);
7757
7758 wpalMemoryCopy(halFinishScanReqMsg.finishScanParams.bssid,
7759 pwdiFinishScanParams->wdiReqInfo.macBSSID, WDI_MAC_ADDR_LEN);
7760
Jeff Johnsone7245742012-09-05 17:12:55 -07007761 halFinishScanReqMsg.finishScanParams.notifyBss =
Jeff Johnson295189b2012-06-20 16:38:30 -07007762 pwdiFinishScanParams->wdiReqInfo.bNotifyBSS ;
Jeff Johnsone7245742012-09-05 17:12:55 -07007763 halFinishScanReqMsg.finishScanParams.frameType =
Jeff Johnson295189b2012-06-20 16:38:30 -07007764 pwdiFinishScanParams->wdiReqInfo.ucFrameType ;
Jeff Johnsone7245742012-09-05 17:12:55 -07007765 halFinishScanReqMsg.finishScanParams.frameLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07007766 pwdiFinishScanParams->wdiReqInfo.ucFrameLength ;
7767
Jeff Johnsone7245742012-09-05 17:12:55 -07007768 halFinishScanReqMsg.finishScanParams.scanEntry.activeBSScnt =
Jeff Johnson295189b2012-06-20 16:38:30 -07007769 pwdiFinishScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt ;
7770
7771 for (i = 0; i < pwdiFinishScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt; i++)
7772 {
Jeff Johnsone7245742012-09-05 17:12:55 -07007773 halFinishScanReqMsg.finishScanParams.scanEntry.bssIdx[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -07007774 pwdiFinishScanParams->wdiReqInfo.wdiScanEntry.bssIdx[i] ;
7775 }
7776
7777 WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr( &halFinishScanReqMsg.finishScanParams.macMgmtHdr,
7778 &pwdiFinishScanParams->wdiReqInfo.wdiMACMgmtHdr);
7779
Jeff Johnsone7245742012-09-05 17:12:55 -07007780 wpalMemoryCopy( pSendBuffer+usDataOffset,
7781 &halFinishScanReqMsg.finishScanParams,
7782 sizeof(halFinishScanReqMsg.finishScanParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07007783
7784 pWDICtx->wdiReqStatusCB = pwdiFinishScanParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07007785 pWDICtx->pReqStatusUserData = pwdiFinishScanParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07007786
7787 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007788 Send Finish Scan Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07007789 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007790 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07007791 wdiFinishScanRspCb, pEventData->pUserData, WDI_FINISH_SCAN_RESP);
7792}/*WDI_ProcessFinishScanReq*/
7793
7794
7795/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -07007796 ASSOCIATION REQUEST API
Jeff Johnson295189b2012-06-20 16:38:30 -07007797==========================================================================*/
7798/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007799 @brief Process BSS Join for a given Session
7800
7801 @param pWDICtx: pointer to the WLAN DAL context
7802 pEventData: pointer to the event information structure
7803
Jeff Johnson295189b2012-06-20 16:38:30 -07007804 @see
7805 @return Result of the function call
7806*/
7807WDI_Status
7808WDI_ProcessBSSSessionJoinReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007809(
Jeff Johnson295189b2012-06-20 16:38:30 -07007810 WDI_ControlBlockType* pWDICtx,
7811 WDI_JoinReqParamsType* pwdiJoinParams,
7812 WDI_JoinRspCb wdiJoinRspCb,
7813 void* pUserData
7814)
7815{
7816 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07007817 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07007818 wpt_uint16 usDataOffset = 0;
7819 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07007820 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07007821
Jeff Johnsone7245742012-09-05 17:12:55 -07007822 tHalJoinReqMsg halJoinReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07007823 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7824
Madan Mohan Koyyalamudi35287862012-10-22 14:52:46 -07007825 wpalMutexAcquire(&pWDICtx->wptMutex);
7826
Jeff Johnson295189b2012-06-20 16:38:30 -07007827 /*------------------------------------------------------------------------
7828 Check to see if we have any session with this BSSID already stored, we
7829 should not
7830 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007831 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
7832 pwdiJoinParams->wdiReqInfo.macBSSID,
7833 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07007834
7835 if ( NULL != pBSSSes )
7836 {
7837 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi35287862012-10-22 14:52:46 -07007838 "Association for this BSSID: " MAC_ADDRESS_STR " is already in place",
7839 MAC_ADDR_ARRAY(pwdiJoinParams->wdiReqInfo.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07007840
Madan Mohan Koyyalamudi35287862012-10-22 14:52:46 -07007841 /*reset the bAssociationInProgress otherwise the next
7842 *join request will be queued*/
7843 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
7844 wpalMutexRelease(&pWDICtx->wptMutex);
7845 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07007846 }
7847
Jeff Johnson295189b2012-06-20 16:38:30 -07007848 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007849 Fetch an empty session block
Jeff Johnson295189b2012-06-20 16:38:30 -07007850 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007851 ucCurrentBSSSesIdx = WDI_FindEmptySession( pWDICtx, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07007852 if ( NULL == pBSSSes )
7853 {
7854
7855 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
7856 "DAL has no free sessions - cannot run another join");
7857
Madan Mohan Koyyalamudi35287862012-10-22 14:52:46 -07007858 /*reset the bAssociationInProgress otherwise the next
7859 *join request will be queued*/
7860 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007861 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07007862 return WDI_STATUS_RES_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007863 }
7864
7865 /*Save BSS Session Info*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007866 pBSSSes->bInUse = eWLAN_PAL_TRUE;
7867 wpalMemoryCopy( pBSSSes->macBSSID, pwdiJoinParams->wdiReqInfo.macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -07007868 WDI_MAC_ADDR_LEN);
7869
7870 /*Transition to state Joining*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007871 pBSSSes->wdiAssocState = WDI_ASSOC_JOINING_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07007872 pWDICtx->ucCurrentBSSSesIdx = ucCurrentBSSSesIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -07007873
Jeff Johnson295189b2012-06-20 16:38:30 -07007874 wpalMutexRelease(&pWDICtx->wptMutex);
7875
7876 /*-----------------------------------------------------------------------
7877 Get message buffer
7878 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007879 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_JOIN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07007880 sizeof(halJoinReqMsg.joinReqParams),
7881 &pSendBuffer, &usDataOffset, &usSendSize))||
7882 ( usSendSize < (usDataOffset + sizeof(halJoinReqMsg.joinReqParams) )))
7883 {
7884 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007885 "Unable to get send buffer in join req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007886 pUserData, pwdiJoinParams, wdiJoinRspCb);
7887 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007888 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007889 }
7890
7891 wpalMemoryCopy(halJoinReqMsg.joinReqParams.bssId,
Jeff Johnsone7245742012-09-05 17:12:55 -07007892 pwdiJoinParams->wdiReqInfo.macBSSID, WDI_MAC_ADDR_LEN);
Jeff Johnson295189b2012-06-20 16:38:30 -07007893
7894 wpalMemoryCopy(halJoinReqMsg.joinReqParams.selfStaMacAddr,
Jeff Johnsone7245742012-09-05 17:12:55 -07007895 pwdiJoinParams->wdiReqInfo.macSTASelf,
7896 WDI_MAC_ADDR_LEN);
Jeff Johnson295189b2012-06-20 16:38:30 -07007897
Jeff Johnsone7245742012-09-05 17:12:55 -07007898 halJoinReqMsg.joinReqParams.ucChannel =
Jeff Johnson295189b2012-06-20 16:38:30 -07007899 pwdiJoinParams->wdiReqInfo.wdiChannelInfo.ucChannel;
7900
7901 halJoinReqMsg.joinReqParams.linkState = pwdiJoinParams->wdiReqInfo.linkState;
7902
Madan Mohan Koyyalamudi83b12822012-11-02 12:43:10 -07007903#ifdef WLAN_FEATURE_VOWIFI
7904 halJoinReqMsg.joinReqParams.maxTxPower =
7905 pwdiJoinParams->wdiReqInfo.wdiChannelInfo.cMaxTxPower;
7906#else
Jeff Johnsone7245742012-09-05 17:12:55 -07007907 halJoinReqMsg.joinReqParams.ucLocalPowerConstraint =
Jeff Johnson295189b2012-06-20 16:38:30 -07007908 pwdiJoinParams->wdiReqInfo.wdiChannelInfo.ucLocalPowerConstraint;
7909#endif
7910
Jeff Johnsone7245742012-09-05 17:12:55 -07007911 halJoinReqMsg.joinReqParams.secondaryChannelOffset =
Jeff Johnson295189b2012-06-20 16:38:30 -07007912 WDI_2_HAL_SEC_CH_OFFSET(pwdiJoinParams->wdiReqInfo.wdiChannelInfo.
7913 wdiSecondaryChannelOffset);
7914
Jeff Johnsone7245742012-09-05 17:12:55 -07007915 wpalMemoryCopy( pSendBuffer+usDataOffset,
7916 &halJoinReqMsg.joinReqParams,
7917 sizeof(halJoinReqMsg.joinReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07007918
7919 pWDICtx->wdiReqStatusCB = pwdiJoinParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07007920 pWDICtx->pReqStatusUserData = pwdiJoinParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07007921
7922 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007923 Send Join Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07007924 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007925 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
7926 wdiJoinRspCb, pUserData, WDI_JOIN_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07007927
7928}/*WDI_ProcessBSSSessionJoinReq*/
7929
7930/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007931 @brief Process Join Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07007932 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007933
7934 @param pWDICtx: pointer to the WLAN DAL context
7935 pEventData: pointer to the event information structure
7936
Jeff Johnson295189b2012-06-20 16:38:30 -07007937 @see
7938 @return Result of the function call
7939*/
7940WDI_Status
7941WDI_ProcessJoinReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007942(
Jeff Johnson295189b2012-06-20 16:38:30 -07007943 WDI_ControlBlockType* pWDICtx,
7944 WDI_EventInfoType* pEventData
7945)
7946{
7947 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
7948 WDI_JoinReqParamsType* pwdiJoinParams = NULL;
7949 WDI_JoinRspCb wdiJoinRspCb = NULL;
7950 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7951
7952 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007953 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07007954 -------------------------------------------------------------------------*/
7955 if (( NULL == pEventData ) ||
7956 ( NULL == (pwdiJoinParams = (WDI_JoinReqParamsType*)pEventData->pEventData)) ||
7957 ( NULL == (wdiJoinRspCb = (WDI_JoinRspCb)pEventData->pCBfnc)))
7958 {
7959 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07007960 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07007961 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007962 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007963 }
Jeff Johnsone7245742012-09-05 17:12:55 -07007964
Jeff Johnson295189b2012-06-20 16:38:30 -07007965 /*-------------------------------------------------------------------------
7966 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07007967 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07007968 -------------------------------------------------------------------------*/
7969 wpalMutexAcquire(&pWDICtx->wptMutex);
7970
7971 if ( eWLAN_PAL_FALSE != pWDICtx->bAssociationInProgress )
7972 {
7973 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7974 "Association is currently in progress, queueing new join req");
7975
7976 /*Association is in progress - queue current one*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007977 wdiStatus = WDI_QueueNewAssocRequest(pWDICtx, pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -07007978 pwdiJoinParams->wdiReqInfo.macBSSID);
7979
7980 wpalMutexRelease(&pWDICtx->wptMutex);
7981
Jeff Johnsone7245742012-09-05 17:12:55 -07007982 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07007983 }
7984
7985 /*Starting a new association */
7986 pWDICtx->bAssociationInProgress = eWLAN_PAL_TRUE;
7987 wpalMutexRelease(&pWDICtx->wptMutex);
7988
7989 /*Process the Join Request*/
7990 return WDI_ProcessBSSSessionJoinReq( pWDICtx, pwdiJoinParams,
7991 wdiJoinRspCb,pEventData->pUserData);
7992
7993}/*WDI_ProcessJoinReq*/
7994
7995
7996/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007997 @brief Process Config BSS Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -07007998 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007999
8000 @param pWDICtx: pointer to the WLAN DAL context
8001 pEventData: pointer to the event information structure
8002
Jeff Johnson295189b2012-06-20 16:38:30 -07008003 @see
8004 @return Result of the function call
8005*/
8006WDI_Status
8007WDI_ProcessConfigBSSReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008008(
Jeff Johnson295189b2012-06-20 16:38:30 -07008009 WDI_ControlBlockType* pWDICtx,
8010 WDI_EventInfoType* pEventData
8011)
8012{
8013 WDI_ConfigBSSReqParamsType* pwdiConfigBSSParams;
8014 WDI_ConfigBSSRspCb wdiConfigBSSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07008015 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07008016 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008017 wpt_uint16 uMsgSize = 0;
8018 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008019 wpt_uint16 usDataOffset = 0;
8020 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07008021 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07008022
Jeff Johnsone7245742012-09-05 17:12:55 -07008023 tConfigBssReqMsg halConfigBssReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07008024 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8025
8026 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008027 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008028 -------------------------------------------------------------------------*/
8029 if (( NULL == pEventData ) ||
8030 ( NULL == pEventData->pEventData ) ||
8031 ( NULL == pEventData->pCBfnc ))
8032 {
8033 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008034 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008035 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008036 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008037 }
8038
8039 pwdiConfigBSSParams = (WDI_ConfigBSSReqParamsType*)pEventData->pEventData;
8040 wdiConfigBSSRspCb = (WDI_ConfigBSSRspCb)pEventData->pCBfnc;
8041 /*-------------------------------------------------------------------------
8042 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07008043 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07008044 -------------------------------------------------------------------------*/
8045 wpalMutexAcquire(&pWDICtx->wptMutex);
8046
8047 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008048 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07008049 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008050 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
8051 pwdiConfigBSSParams->wdiReqInfo.macBSSID,
8052 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07008053
Jeff Johnsone7245742012-09-05 17:12:55 -07008054 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07008055 {
8056#ifdef WLAN_FEATURE_VOWIFI_11R
8057 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008058 Fetch an empty session block
Jeff Johnson295189b2012-06-20 16:38:30 -07008059 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008060 ucCurrentBSSSesIdx = WDI_FindEmptySession( pWDICtx, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07008061 if ( NULL == pBSSSes )
8062 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008063
Jeff Johnson295189b2012-06-20 16:38:30 -07008064 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
8065 "DAL has no free sessions - cannot run another join");
Jeff Johnsone7245742012-09-05 17:12:55 -07008066
Jeff Johnson295189b2012-06-20 16:38:30 -07008067 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008068 return WDI_STATUS_RES_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008069 }
Jeff Johnsone7245742012-09-05 17:12:55 -07008070
Jeff Johnson295189b2012-06-20 16:38:30 -07008071 /*Save BSS Session Info*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008072 pBSSSes->bInUse = eWLAN_PAL_TRUE;
8073 wpalMemoryCopy( pBSSSes->macBSSID, pwdiConfigBSSParams->wdiReqInfo.macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -07008074 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -07008075
Jeff Johnson295189b2012-06-20 16:38:30 -07008076 /*Transition to state Joining*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008077 pBSSSes->wdiAssocState = WDI_ASSOC_JOINING_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07008078 pWDICtx->ucCurrentBSSSesIdx = ucCurrentBSSSesIdx;
8079#else
Jeff Johnsone7245742012-09-05 17:12:55 -07008080 /* If the BSS type is IBSS create the session here as there is no Join
Jeff Johnson295189b2012-06-20 16:38:30 -07008081 * Request in case of IBSS*/
8082 if((pwdiConfigBSSParams->wdiReqInfo.wdiBSSType == WDI_IBSS_MODE) ||
8083 (pwdiConfigBSSParams->wdiReqInfo.wdiBSSType == WDI_INFRA_AP_MODE) ||
8084 (pwdiConfigBSSParams->wdiReqInfo.wdiBSSType == WDI_BTAMP_AP_MODE) ||
8085 (pwdiConfigBSSParams->wdiReqInfo.wdiBSSType == WDI_BTAMP_STA_MODE))
8086 {
8087 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008088 Fetch an empty session block
Jeff Johnson295189b2012-06-20 16:38:30 -07008089 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008090 ucCurrentBSSSesIdx = WDI_FindEmptySession( pWDICtx, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07008091 if ( NULL == pBSSSes )
8092 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008093
Jeff Johnson295189b2012-06-20 16:38:30 -07008094 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
8095 "DAL has no free sessions - cannot run another join");
Jeff Johnsone7245742012-09-05 17:12:55 -07008096
Jeff Johnson295189b2012-06-20 16:38:30 -07008097 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008098 return WDI_STATUS_RES_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008099 }
Jeff Johnsone7245742012-09-05 17:12:55 -07008100
Jeff Johnson295189b2012-06-20 16:38:30 -07008101 /*Save BSS Session Info*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008102 pBSSSes->bInUse = eWLAN_PAL_TRUE;
8103 wpalMemoryCopy( pBSSSes->macBSSID, pwdiConfigBSSParams->wdiReqInfo.macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -07008104 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -07008105
Jeff Johnson295189b2012-06-20 16:38:30 -07008106 /*Transition to state Joining*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008107 pBSSSes->wdiAssocState = WDI_ASSOC_JOINING_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07008108 pWDICtx->ucCurrentBSSSesIdx = ucCurrentBSSSesIdx;
8109 }
8110 else
8111 {
8112 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07008113 "%s: Association sequence for this BSS does not yet exist." MAC_ADDRESS_STR "wdiBssType %d",
8114 __func__, MAC_ADDR_ARRAY(pwdiConfigBSSParams->wdiReqInfo.macBSSID),
8115 pwdiConfigBSSParams->wdiReqInfo.wdiBSSType);
8116
Jeff Johnson295189b2012-06-20 16:38:30 -07008117 /* for IBSS testing */
8118 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008119 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008120 }
8121#endif
8122 }
8123
8124 /*------------------------------------------------------------------------
8125 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07008126 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07008127 ------------------------------------------------------------------------*/
8128 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
8129 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008130 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8131 "%s: Association sequence for this BSS exists but currently queued. " MAC_ADDRESS_STR " bssIdx %d",
8132 __func__, MAC_ADDR_ARRAY(pwdiConfigBSSParams->wdiReqInfo.macBSSID),
8133 ucCurrentBSSSesIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07008134
Jeff Johnsone7245742012-09-05 17:12:55 -07008135 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07008136
8137 wpalMutexRelease(&pWDICtx->wptMutex);
8138
Jeff Johnsone7245742012-09-05 17:12:55 -07008139 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07008140 }
8141
8142 /* Cache the request for response processing */
Jeff Johnsone7245742012-09-05 17:12:55 -07008143 wpalMemoryCopy(&pWDICtx->wdiCachedConfigBssReq,
8144 pwdiConfigBSSParams,
Jeff Johnson295189b2012-06-20 16:38:30 -07008145 sizeof(pWDICtx->wdiCachedConfigBssReq));
8146
8147 wpalMutexRelease(&pWDICtx->wptMutex);
8148
Jeff Johnsone7245742012-09-05 17:12:55 -07008149 /* Allocation of BssReqMsg Memory Based on Firmware Capabilities */
8150#ifdef WLAN_FEATURE_11AC
8151 if (WDI_getFwWlanFeatCaps(DOT11AC))
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -07008152 uMsgSize = sizeof(halConfigBssReqMsg.uBssParams.configBssParams_V1); // Version - 1 For 11AC
Jeff Johnsone7245742012-09-05 17:12:55 -07008153 else
8154#endif
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -07008155 uMsgSize = sizeof(halConfigBssReqMsg.uBssParams.configBssParams); // default Version - 0 Structure
Jeff Johnson295189b2012-06-20 16:38:30 -07008156
8157 /*-----------------------------------------------------------------------
8158 Get message buffer
8159 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008160 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_CONFIG_BSS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008161 uMsgSize, &pSendBuffer, &usDataOffset, &usSendSize))||
8162 ( usSendSize < (usDataOffset + uMsgSize )))
8163 {
8164 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08008165 "Unable to get send buffer in config bss req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07008166 pEventData, pwdiConfigBSSParams, wdiConfigBSSRspCb);
8167 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008168 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008169 }
8170
8171 /*Copy the BSS request */
Madan Mohan Koyyalamudia208d102012-10-15 15:18:18 -07008172#ifdef WLAN_FEATURE_11AC
8173 if (WDI_getFwWlanFeatCaps(DOT11AC))
8174 WDI_CopyWDIConfigBSSToHALConfigBSS( (tConfigBssParams*)&halConfigBssReqMsg.uBssParams.configBssParams_V1,
8175 &pwdiConfigBSSParams->wdiReqInfo);
8176 else
8177#endif
Jeff Johnsone7245742012-09-05 17:12:55 -07008178 WDI_CopyWDIConfigBSSToHALConfigBSS( &halConfigBssReqMsg.uBssParams.configBssParams,
Jeff Johnson295189b2012-06-20 16:38:30 -07008179 &pwdiConfigBSSParams->wdiReqInfo);
8180
8181 /* Need to fill in the STA Index to invalid, since at this point we have not
8182 yet received it from HAL */
Jeff Johnsone7245742012-09-05 17:12:55 -07008183 halConfigBssReqMsg.uBssParams.configBssParams.staContext.staIdx = WDI_STA_INVALID_IDX;
Jeff Johnson295189b2012-06-20 16:38:30 -07008184
8185 /* Need to fill in the BSS index */
Jeff Johnsone7245742012-09-05 17:12:55 -07008186 halConfigBssReqMsg.uBssParams.configBssParams.staContext.bssIdx = pBSSSes->ucBSSIdx;
8187
Madan Mohan Koyyalamudif244d8f2012-11-29 11:21:05 -08008188#ifdef WLAN_FEATURE_11AC
8189 if (WDI_getFwWlanFeatCaps(DOT11AC)){
8190 wpalMemoryCopy( pSendBuffer+usDataOffset,
8191 &halConfigBssReqMsg.uBssParams.configBssParams_V1,
8192 uMsgSize);
8193 }else
8194#endif
Tushnim Bhattacharyya5dd94562013-03-20 20:15:03 -07008195 {
8196 if ( uMsgSize <= sizeof(tConfigBssParams) )
8197 {
Tushnim Bhattacharyyaf64c5dc2013-03-21 15:11:31 -07008198 wpalMemoryCopy( pSendBuffer+usDataOffset,
Tushnim Bhattacharyya5dd94562013-03-20 20:15:03 -07008199 &halConfigBssReqMsg.uBssParams.configBssParams,
8200 uMsgSize);
8201 }
8202 else
8203 {
8204 return WDI_STATUS_E_FAILURE;
8205 }
8206 }
Jeff Johnson295189b2012-06-20 16:38:30 -07008207
8208 pWDICtx->wdiReqStatusCB = pwdiConfigBSSParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008209 pWDICtx->pReqStatusUserData = pwdiConfigBSSParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008210
8211 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008212 Send Config BSS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008213 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008214 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
8215 wdiConfigBSSRspCb, pEventData->pUserData,
Jeff Johnson295189b2012-06-20 16:38:30 -07008216 WDI_CONFIG_BSS_RESP);
8217
8218}/*WDI_ProcessConfigBSSReq*/
8219
8220
8221/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008222 @brief Process Del BSS Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07008223 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008224
8225 @param pWDICtx: pointer to the WLAN DAL context
8226 pEventData: pointer to the event information structure
8227
Jeff Johnson295189b2012-06-20 16:38:30 -07008228 @see
8229 @return Result of the function call
8230*/
8231WDI_Status
8232WDI_ProcessDelBSSReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008233(
Jeff Johnson295189b2012-06-20 16:38:30 -07008234 WDI_ControlBlockType* pWDICtx,
8235 WDI_EventInfoType* pEventData
8236)
8237{
8238 WDI_DelBSSReqParamsType* pwdiDelBSSParams = NULL;
8239 WDI_DelBSSRspCb wdiDelBSSRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008240 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07008241 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008242 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008243 wpt_uint16 usDataOffset = 0;
8244 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07008245 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07008246
Jeff Johnsone7245742012-09-05 17:12:55 -07008247 tDeleteBssReqMsg halBssReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07008248 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8249
8250 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008251 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008252 -------------------------------------------------------------------------*/
8253 if (( NULL == pEventData ) ||
8254 ( NULL == (pwdiDelBSSParams = (WDI_DelBSSReqParamsType*)pEventData->pEventData)) ||
8255 ( NULL == (wdiDelBSSRspCb = (WDI_DelBSSRspCb)pEventData->pCBfnc)))
8256 {
8257 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008258 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008259 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008260 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008261 }
8262
8263 /*-------------------------------------------------------------------------
8264 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07008265 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07008266 -------------------------------------------------------------------------*/
8267 wpalMutexAcquire(&pWDICtx->wptMutex);
8268
8269 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008270 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07008271 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008272 ucCurrentBSSSesIdx = WDI_FindAssocSessionByBSSIdx( pWDICtx,
8273 pwdiDelBSSParams->ucBssIdx,
8274 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07008275
Jeff Johnsone7245742012-09-05 17:12:55 -07008276 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07008277 {
8278 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07008279 "%s: BSS does not yet exist. ucBssIdx %d",
8280 __func__, pwdiDelBSSParams->ucBssIdx);
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -08008281
8282 wpalMutexRelease(&pWDICtx->wptMutex);
8283
8284 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008285 }
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -08008286
8287 /*------------------------------------------------------------------------
8288 Check if this BSS is being currently processed or queued,
8289 if queued - queue the new request as well
8290 ------------------------------------------------------------------------*/
8291 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
Jeff Johnson295189b2012-06-20 16:38:30 -07008292 {
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -08008293 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8294 "%s: Association sequence for this BSS exists but currently queued. ucBssIdx %d",
8295 __func__, pwdiDelBSSParams->ucBssIdx);
8296
8297 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
8298
8299 wpalMutexRelease(&pWDICtx->wptMutex);
8300
8301 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07008302 }
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -08008303
Jeff Johnson295189b2012-06-20 16:38:30 -07008304 /*-----------------------------------------------------------------------
8305 If we receive a Del BSS request for an association that is already in
8306 progress, it indicates that the assoc has failed => we no longer have
8307 an association in progress => we must check for pending associations
Jeff Johnsone7245742012-09-05 17:12:55 -07008308 that were queued and start as soon as the Del BSS response is received
Jeff Johnson295189b2012-06-20 16:38:30 -07008309 -----------------------------------------------------------------------*/
8310 if ( ucCurrentBSSSesIdx == pWDICtx->ucCurrentBSSSesIdx )
8311 {
8312 /*We can switch to false here because even if a subsequent Join comes in
8313 it will only be processed when DAL transitions out of BUSY state which
8314 happens when the Del BSS request comes */
8315 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
8316
8317 /*Former association is complete - prepare next pending assoc for
8318 processing */
8319 WDI_DequeueAssocRequest(pWDICtx);
8320 }
8321
8322 wpalMutexRelease(&pWDICtx->wptMutex);
8323 /*-----------------------------------------------------------------------
8324 Get message buffer
8325 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008326 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_DEL_BSS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008327 sizeof(halBssReqMsg.deleteBssParams),
8328 &pSendBuffer, &usDataOffset, &usSendSize))||
8329 ( usSendSize < (usDataOffset + sizeof(halBssReqMsg.deleteBssParams) )))
8330 {
8331 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08008332 "Unable to get send buffer in start req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07008333 pEventData, pwdiDelBSSParams, wdiDelBSSRspCb);
8334 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008335 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008336 }
8337
8338 /*Fill in the message request structure*/
8339
8340 /*BSS Index is saved on config BSS response and Post Assoc Response */
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -08008341 halBssReqMsg.deleteBssParams.bssIdx = pBSSSes->ucBSSIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -07008342
Jeff Johnsone7245742012-09-05 17:12:55 -07008343 wpalMemoryCopy( pSendBuffer+usDataOffset,
8344 &halBssReqMsg.deleteBssParams,
8345 sizeof(halBssReqMsg.deleteBssParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008346
8347 pWDICtx->wdiReqStatusCB = pwdiDelBSSParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008348 pWDICtx->pReqStatusUserData = pwdiDelBSSParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008349
Jeff Johnsone7245742012-09-05 17:12:55 -07008350
Jeff Johnson295189b2012-06-20 16:38:30 -07008351 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008352 Send Del BSS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008353 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008354 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07008355 wdiDelBSSRspCb, pEventData->pUserData, WDI_DEL_BSS_RESP);
8356
Jeff Johnsone7245742012-09-05 17:12:55 -07008357
Jeff Johnson295189b2012-06-20 16:38:30 -07008358}/*WDI_ProcessDelBSSReq*/
8359
8360/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008361 @brief Process Post Assoc Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -07008362 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008363
8364 @param pWDICtx: pointer to the WLAN DAL context
8365 pEventData: pointer to the event information structure
8366
Jeff Johnson295189b2012-06-20 16:38:30 -07008367 @see
8368 @return Result of the function call
8369*/
8370WDI_Status
8371WDI_ProcessPostAssocReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008372(
Jeff Johnson295189b2012-06-20 16:38:30 -07008373 WDI_ControlBlockType* pWDICtx,
8374 WDI_EventInfoType* pEventData
8375)
8376{
8377 WDI_PostAssocReqParamsType* pwdiPostAssocParams = NULL;
8378 WDI_PostAssocRspCb wdiPostAssocRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008379 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07008380 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008381 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008382 wpt_uint16 usDataOffset = 0;
8383 wpt_uint16 usSendSize = 0;
8384 wpt_uint16 uMsgSize = 0;
8385 wpt_uint16 uOffset = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07008386 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07008387
Jeff Johnsone7245742012-09-05 17:12:55 -07008388 tPostAssocReqMsg halPostAssocReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07008389 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8390
8391 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008392 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008393 -------------------------------------------------------------------------*/
8394 if (( NULL == pEventData ) ||
8395 ( NULL == (pwdiPostAssocParams = (WDI_PostAssocReqParamsType*)pEventData->pEventData)) ||
8396 ( NULL == (wdiPostAssocRspCb = (WDI_PostAssocRspCb)pEventData->pCBfnc)))
8397 {
8398 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008399 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008400 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008401 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008402 }
8403
8404 /*-------------------------------------------------------------------------
8405 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07008406 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07008407 -------------------------------------------------------------------------*/
8408 wpalMutexAcquire(&pWDICtx->wptMutex);
8409
8410 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008411 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07008412 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008413 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
8414 pwdiPostAssocParams->wdiBSSParams.macBSSID,
8415 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07008416
8417 if ( NULL == pBSSSes )
8418 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008419 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
8420 "%s: Association sequence for this BSS does not yet exist - "
8421 "operation not allowed. macBSSID " MAC_ADDRESS_STR,
8422 __func__, MAC_ADDR_ARRAY(pwdiPostAssocParams->wdiBSSParams.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07008423
8424 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008425 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008426 }
8427
8428 /*------------------------------------------------------------------------
8429 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07008430 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07008431 ------------------------------------------------------------------------*/
8432 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
8433 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008434 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8435 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
8436 __func__, MAC_ADDR_ARRAY(pwdiPostAssocParams->wdiBSSParams.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07008437
Jeff Johnsone7245742012-09-05 17:12:55 -07008438 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07008439
8440 wpalMutexRelease(&pWDICtx->wptMutex);
8441
Jeff Johnsone7245742012-09-05 17:12:55 -07008442 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07008443 }
8444
8445 /*-----------------------------------------------------------------------
8446 If Post Assoc was not yet received - the current association must
8447 be in progress
8448 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008449 if (( ucCurrentBSSSesIdx != pWDICtx->ucCurrentBSSSesIdx ) ||
Jeff Johnson295189b2012-06-20 16:38:30 -07008450 ( eWLAN_PAL_FALSE == pWDICtx->bAssociationInProgress ))
8451 {
8452 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
8453 "Association sequence for this BSS association no longer in "
8454 "progress - not allowed");
8455
8456 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008457 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008458 }
8459
8460 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008461 Post Assoc Request is only allowed in Joining state
Jeff Johnson295189b2012-06-20 16:38:30 -07008462 -----------------------------------------------------------------------*/
8463 if ( WDI_ASSOC_JOINING_ST != pBSSSes->wdiAssocState)
8464 {
8465 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
8466 "Post Assoc not allowed before JOIN - failing request");
8467
8468 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008469 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008470 }
8471
8472 wpalMutexRelease(&pWDICtx->wptMutex);
8473
8474 uMsgSize = sizeof(halPostAssocReqMsg.postAssocReqParams.configStaParams) +
8475 sizeof(halPostAssocReqMsg.postAssocReqParams.configBssParams) ;
8476 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008477 Fill message for tx over the bus
Jeff Johnson295189b2012-06-20 16:38:30 -07008478 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008479 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_POST_ASSOC_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008480 uMsgSize,&pSendBuffer, &usDataOffset, &usSendSize))||
8481 ( usSendSize < (usDataOffset + uMsgSize )))
8482 {
8483 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08008484 "Unable to get send buffer in start req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07008485 pEventData, pwdiPostAssocParams, wdiPostAssocRspCb);
8486 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008487 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008488 }
8489
8490 /*Copy the STA parameters */
8491 WDI_CopyWDIStaCtxToHALStaCtx(&halPostAssocReqMsg.postAssocReqParams.configStaParams,
8492 &pwdiPostAssocParams->wdiSTAParams );
8493
8494 /* Need to fill in the self STA Index */
Jeff Johnsone7245742012-09-05 17:12:55 -07008495 if ( WDI_STATUS_SUCCESS !=
Jeff Johnson295189b2012-06-20 16:38:30 -07008496 WDI_STATableFindStaidByAddr(pWDICtx,
8497 pwdiPostAssocParams->wdiSTAParams.macSTA,
8498 (wpt_uint8*)&halPostAssocReqMsg.postAssocReqParams.configStaParams.staIdx ))
8499 {
8500 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08008501 MAC_ADDRESS_STR
8502 ": This station does not exist in the WDI Station Table",
8503 MAC_ADDR_ARRAY(pwdiPostAssocParams->wdiSTAParams.macSTA));
Jeff Johnson295189b2012-06-20 16:38:30 -07008504 wpalMutexRelease(&pWDICtx->wptMutex);
Madan Mohan Koyyalamudif244d8f2012-11-29 11:21:05 -08008505 wpalMemoryFree(pSendBuffer);
Jeff Johnsone7245742012-09-05 17:12:55 -07008506 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008507 }
8508
8509 /* Need to fill in the BSS index */
Jeff Johnsone7245742012-09-05 17:12:55 -07008510 halPostAssocReqMsg.postAssocReqParams.configStaParams.bssIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -07008511 pBSSSes->ucBSSIdx;
8512
8513 /*Copy the BSS parameters */
8514 WDI_CopyWDIConfigBSSToHALConfigBSS( &halPostAssocReqMsg.postAssocReqParams.configBssParams,
8515 &pwdiPostAssocParams->wdiBSSParams);
8516
8517 /* Need to fill in the STA index of the peer */
Jeff Johnsone7245742012-09-05 17:12:55 -07008518 if ( WDI_STATUS_SUCCESS !=
Jeff Johnson295189b2012-06-20 16:38:30 -07008519 WDI_STATableFindStaidByAddr(pWDICtx,
8520 pwdiPostAssocParams->wdiBSSParams.wdiSTAContext.macSTA,
Jeff Johnsone7245742012-09-05 17:12:55 -07008521 (wpt_uint8*)&halPostAssocReqMsg.postAssocReqParams.configBssParams.staContext.staIdx))
Jeff Johnson295189b2012-06-20 16:38:30 -07008522 {
8523 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08008524 MAC_ADDRESS_STR
8525 ": This station does not exist in the WDI Station Table",
8526 MAC_ADDR_ARRAY(pwdiPostAssocParams->wdiBSSParams.wdiSTAContext.macSTA));
Jeff Johnson295189b2012-06-20 16:38:30 -07008527 wpalMutexRelease(&pWDICtx->wptMutex);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -08008528 wpalMemoryFree(pSendBuffer);
Jeff Johnsone7245742012-09-05 17:12:55 -07008529 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008530 }
8531
8532 /* Need to fill in the BSS index */
Jeff Johnsone7245742012-09-05 17:12:55 -07008533 halPostAssocReqMsg.postAssocReqParams.configStaParams.bssIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -07008534 pBSSSes->ucBSSIdx;
8535
Jeff Johnsone7245742012-09-05 17:12:55 -07008536
8537 wpalMemoryCopy( pSendBuffer+usDataOffset,
8538 &halPostAssocReqMsg.postAssocReqParams.configStaParams,
8539 sizeof(halPostAssocReqMsg.postAssocReqParams.configStaParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008540
8541 uOffset = sizeof(halPostAssocReqMsg.postAssocReqParams.configStaParams);
8542
Jeff Johnsone7245742012-09-05 17:12:55 -07008543 wpalMemoryCopy( pSendBuffer+usDataOffset + uOffset,
8544 &halPostAssocReqMsg.postAssocReqParams.configBssParams,
8545 sizeof(halPostAssocReqMsg.postAssocReqParams.configBssParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008546
Jeff Johnsone7245742012-09-05 17:12:55 -07008547
Jeff Johnson295189b2012-06-20 16:38:30 -07008548 pWDICtx->wdiReqStatusCB = pwdiPostAssocParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008549 pWDICtx->pReqStatusUserData = pwdiPostAssocParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008550
Jeff Johnsone7245742012-09-05 17:12:55 -07008551
8552 wpalMemoryCopy( &pWDICtx->wdiCachedPostAssocReq,
Jeff Johnson295189b2012-06-20 16:38:30 -07008553 pwdiPostAssocParams,
Jeff Johnsone7245742012-09-05 17:12:55 -07008554 sizeof(pWDICtx->wdiCachedPostAssocReq));
Jeff Johnson295189b2012-06-20 16:38:30 -07008555
8556 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008557 Send Post Assoc Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008558 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008559 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07008560 wdiPostAssocRspCb, pEventData->pUserData, WDI_POST_ASSOC_RESP);
8561
Jeff Johnsone7245742012-09-05 17:12:55 -07008562
Jeff Johnson295189b2012-06-20 16:38:30 -07008563}/*WDI_ProcessPostAssocReq*/
8564
8565/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008566 @brief Process Del STA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07008567 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008568
8569 @param pWDICtx: pointer to the WLAN DAL context
8570 pEventData: pointer to the event information structure
8571
Jeff Johnson295189b2012-06-20 16:38:30 -07008572 @see
8573 @return Result of the function call
8574*/
8575WDI_Status
8576WDI_ProcessDelSTAReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008577(
Jeff Johnson295189b2012-06-20 16:38:30 -07008578 WDI_ControlBlockType* pWDICtx,
8579 WDI_EventInfoType* pEventData
8580)
8581{
8582 WDI_DelSTAReqParamsType* pwdiDelSTAParams;
8583 WDI_DelSTARspCb wdiDelSTARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07008584 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07008585 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008586 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008587 wpt_uint16 usDataOffset = 0;
8588 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07008589 wpt_macAddr macBSSID;
Jeff Johnson295189b2012-06-20 16:38:30 -07008590 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
8591
Jeff Johnsone7245742012-09-05 17:12:55 -07008592 tDeleteStaReqMsg halDelStaReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07008593 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8594
8595 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008596 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008597 -------------------------------------------------------------------------*/
8598 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
8599 ( NULL == pEventData->pCBfnc ))
8600 {
8601 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008602 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008603 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008604 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008605 }
8606
8607 pwdiDelSTAParams = (WDI_DelSTAReqParamsType*)pEventData->pEventData;
8608 wdiDelSTARspCb = (WDI_DelSTARspCb)pEventData->pCBfnc;
8609 /*-------------------------------------------------------------------------
8610 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07008611 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07008612 -------------------------------------------------------------------------*/
8613 wpalMutexAcquire(&pWDICtx->wptMutex);
8614
8615 /*------------------------------------------------------------------------
8616 Find the BSS for which the request is made and identify WDI session
8617 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008618 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
8619 pwdiDelSTAParams->ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07008620 &macBSSID))
8621 {
8622 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08008623 "This station does not exist in the WDI Station Table %d",
8624 pwdiDelSTAParams->ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07008625 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008626 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008627 }
8628
Jeff Johnsone7245742012-09-05 17:12:55 -07008629 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
8630 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07008631 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008632 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
8633 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
8634 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07008635
8636 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008637 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008638 }
8639
8640 /*------------------------------------------------------------------------
8641 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07008642 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07008643 ------------------------------------------------------------------------*/
8644 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
8645 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008646 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8647 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
8648 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07008649
Jeff Johnsone7245742012-09-05 17:12:55 -07008650 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07008651 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008652 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07008653 }
8654
8655 wpalMutexRelease(&pWDICtx->wptMutex);
8656 /*-----------------------------------------------------------------------
8657 Get message buffer
8658 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008659 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_DEL_STA_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008660 sizeof(halDelStaReqMsg.delStaParams),
8661 &pSendBuffer, &usDataOffset, &usSendSize))||
8662 ( usSendSize < (usDataOffset + sizeof(halDelStaReqMsg.delStaParams) )))
8663 {
8664 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08008665 "Unable to get send buffer in start req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07008666 pEventData, pwdiDelSTAParams, wdiDelSTARspCb);
8667 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008668 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008669 }
8670
Jeff Johnsone7245742012-09-05 17:12:55 -07008671 halDelStaReqMsg.delStaParams.staIdx = pwdiDelSTAParams->ucSTAIdx;
8672 wpalMemoryCopy( pSendBuffer+usDataOffset,
8673 &halDelStaReqMsg.delStaParams,
8674 sizeof(halDelStaReqMsg.delStaParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008675
8676 pWDICtx->wdiReqStatusCB = pwdiDelSTAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008677 pWDICtx->pReqStatusUserData = pwdiDelSTAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008678
8679 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008680 Send Del STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008681 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008682 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07008683 wdiDelSTARspCb, pEventData->pUserData, WDI_DEL_STA_RESP);
8684
8685}/*WDI_ProcessDelSTAReq*/
8686
8687
8688/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -07008689 SECURITY REQUEST PROCESSING API
Jeff Johnson295189b2012-06-20 16:38:30 -07008690==========================================================================*/
8691/**
8692 @brief Process Set BSS Key Request function (called when Main FSM
8693 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008694
8695 @param pWDICtx: pointer to the WLAN DAL context
8696 pEventData: pointer to the event information structure
8697
Jeff Johnson295189b2012-06-20 16:38:30 -07008698 @see
8699 @return Result of the function call
8700*/
8701WDI_Status
8702WDI_ProcessSetBssKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008703(
Jeff Johnson295189b2012-06-20 16:38:30 -07008704 WDI_ControlBlockType* pWDICtx,
8705 WDI_EventInfoType* pEventData
8706)
8707{
8708 WDI_SetBSSKeyReqParamsType* pwdiSetBSSKeyParams;
8709 WDI_SetBSSKeyRspCb wdiSetBSSKeyRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07008710 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07008711 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008712 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008713 wpt_uint16 usDataOffset = 0;
8714 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07008715 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07008716 tSetBssKeyReqMsg halSetBssKeyReqMsg = {{0}};
8717 wpt_uint8 keyIndex = 0;
8718
8719 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8720
8721 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008722 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008723 -------------------------------------------------------------------------*/
8724 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
8725 ( NULL == pEventData->pCBfnc ))
8726 {
8727 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008728 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008729 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008730 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008731 }
8732
8733 pwdiSetBSSKeyParams = (WDI_SetBSSKeyReqParamsType*)pEventData->pEventData;
8734 wdiSetBSSKeyRspCb = (WDI_SetBSSKeyRspCb)pEventData->pCBfnc;
8735 /*-------------------------------------------------------------------------
8736 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07008737 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07008738 -------------------------------------------------------------------------*/
8739 wpalMutexAcquire(&pWDICtx->wptMutex);
8740
8741 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008742 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07008743 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008744 ucCurrentBSSSesIdx = WDI_FindAssocSessionByBSSIdx( pWDICtx,
8745 pwdiSetBSSKeyParams->wdiBSSKeyInfo.ucBssIdx,
8746 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07008747
Jeff Johnsone7245742012-09-05 17:12:55 -07008748 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07008749 {
8750 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07008751 "%s: Association sequence for this BSS does not yet exist. ucBssIdx %d",
8752 __func__, pwdiSetBSSKeyParams->wdiBSSKeyInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07008753
8754 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008755 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008756 }
8757
8758 /*------------------------------------------------------------------------
8759 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07008760 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07008761 ------------------------------------------------------------------------*/
8762 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
8763 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008764 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8765 "%s: Association sequence for this BSS exists but currently queued. ucBssIdx %d",
8766 __func__, pwdiSetBSSKeyParams->wdiBSSKeyInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07008767
Jeff Johnsone7245742012-09-05 17:12:55 -07008768 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07008769 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008770 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07008771 }
8772
8773
8774 wpalMutexRelease(&pWDICtx->wptMutex);
8775 /*-----------------------------------------------------------------------
8776 Get message buffer
8777 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008778 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_BSS_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008779 sizeof(halSetBssKeyReqMsg.setBssKeyParams),
8780 &pSendBuffer, &usDataOffset, &usSendSize))||
8781 ( usSendSize < (usDataOffset + sizeof(halSetBssKeyReqMsg.setBssKeyParams) )))
8782 {
8783 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08008784 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07008785 pEventData, pwdiSetBSSKeyParams, wdiSetBSSKeyRspCb);
8786 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008787 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008788 }
8789
8790 /*-----------------------------------------------------------------------
8791 Copy the Key parameters into the HAL message
8792 -----------------------------------------------------------------------*/
8793
Jeff Johnsone7245742012-09-05 17:12:55 -07008794 halSetBssKeyReqMsg.setBssKeyParams.bssIdx = ucCurrentBSSSesIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -07008795
Jeff Johnsone7245742012-09-05 17:12:55 -07008796 halSetBssKeyReqMsg.setBssKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -07008797 WDI_2_HAL_ENC_TYPE (pwdiSetBSSKeyParams->wdiBSSKeyInfo.wdiEncType);
8798
Jeff Johnsone7245742012-09-05 17:12:55 -07008799 halSetBssKeyReqMsg.setBssKeyParams.numKeys =
Jeff Johnson295189b2012-06-20 16:38:30 -07008800 pwdiSetBSSKeyParams->wdiBSSKeyInfo.ucNumKeys;
8801
8802 for(keyIndex = 0; keyIndex < pwdiSetBSSKeyParams->wdiBSSKeyInfo.ucNumKeys ;
8803 keyIndex++)
8804 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008805 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -07008806 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].keyId;
8807 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].unicast =
8808 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].unicast;
8809 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].keyDirection =
8810 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].keyDirection;
8811 wpalMemoryCopy(halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].keyRsc,
Jeff Johnsone7245742012-09-05 17:12:55 -07008812 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].keyRsc,
Jeff Johnson295189b2012-06-20 16:38:30 -07008813 WDI_MAX_KEY_RSC_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -07008814 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].paeRole =
Jeff Johnson295189b2012-06-20 16:38:30 -07008815 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].paeRole;
Jeff Johnsone7245742012-09-05 17:12:55 -07008816 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].keyLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07008817 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].keyLength;
8818 wpalMemoryCopy(halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].key,
Jeff Johnsone7245742012-09-05 17:12:55 -07008819 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].key,
Jeff Johnson295189b2012-06-20 16:38:30 -07008820 WDI_MAX_KEY_LENGTH);
8821 }
Jeff Johnsone7245742012-09-05 17:12:55 -07008822
8823 wpalMemoryCopy( pSendBuffer+usDataOffset,
8824 &halSetBssKeyReqMsg.setBssKeyParams,
8825 sizeof(halSetBssKeyReqMsg.setBssKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008826
8827 pWDICtx->wdiReqStatusCB = pwdiSetBSSKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008828 pWDICtx->pReqStatusUserData = pwdiSetBSSKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008829
8830 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008831 Send Set BSS Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008832 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008833 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
8834 wdiSetBSSKeyRspCb, pEventData->pUserData,
8835 WDI_SET_BSS_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07008836
8837}/*WDI_ProcessSetBssKeyReq*/
8838
8839/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008840 @brief Process Remove BSS Key Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -07008841 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008842
8843 @param pWDICtx: pointer to the WLAN DAL context
8844 pEventData: pointer to the event information structure
8845
Jeff Johnson295189b2012-06-20 16:38:30 -07008846 @see
8847 @return Result of the function call
8848*/
8849WDI_Status
8850WDI_ProcessRemoveBssKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008851(
Jeff Johnson295189b2012-06-20 16:38:30 -07008852 WDI_ControlBlockType* pWDICtx,
8853 WDI_EventInfoType* pEventData
8854)
8855{
8856 WDI_RemoveBSSKeyReqParamsType* pwdiRemoveBSSKeyParams;
8857 WDI_RemoveBSSKeyRspCb wdiRemoveBSSKeyRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07008858 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07008859 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008860 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008861 wpt_uint16 usDataOffset = 0;
8862 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07008863 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07008864 tRemoveBssKeyReqMsg halRemoveBssKeyReqMsg = {{0}};
8865 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8866
8867 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008868 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008869 -------------------------------------------------------------------------*/
8870 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
8871 ( NULL == pEventData->pCBfnc ))
8872 {
8873 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008874 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008875 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008876 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008877 }
8878
8879 pwdiRemoveBSSKeyParams = (WDI_RemoveBSSKeyReqParamsType*)pEventData->pEventData;
8880 wdiRemoveBSSKeyRspCb = (WDI_RemoveBSSKeyRspCb)pEventData->pCBfnc;
8881 /*-------------------------------------------------------------------------
8882 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07008883 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07008884 -------------------------------------------------------------------------*/
8885 wpalMutexAcquire(&pWDICtx->wptMutex);
8886
8887 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008888 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07008889 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008890 ucCurrentBSSSesIdx = WDI_FindAssocSessionByBSSIdx( pWDICtx,
8891 pwdiRemoveBSSKeyParams->wdiKeyInfo.ucBssIdx,
8892 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07008893
Jeff Johnsone7245742012-09-05 17:12:55 -07008894 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07008895 {
8896 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07008897 "%s: Association sequence for this BSS does not yet exist. ucBssIdx %d",
8898 __func__, pwdiRemoveBSSKeyParams->wdiKeyInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07008899
8900 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008901 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008902 }
8903
8904 /*------------------------------------------------------------------------
8905 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07008906 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07008907 ------------------------------------------------------------------------*/
8908 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
8909 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008910 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8911 "%s: Association sequence for this BSS exists but currently queued. ucBssIdx %d",
8912 __func__, pwdiRemoveBSSKeyParams->wdiKeyInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07008913
Jeff Johnsone7245742012-09-05 17:12:55 -07008914 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07008915 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008916 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07008917 }
8918
8919
8920 wpalMutexRelease(&pWDICtx->wptMutex);
8921
8922 /*-----------------------------------------------------------------------
8923 Get message buffer
8924 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008925 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_RMV_BSS_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008926 sizeof(halRemoveBssKeyReqMsg.removeBssKeyParams),
8927 &pSendBuffer, &usDataOffset, &usSendSize))||
8928 ( usSendSize < (usDataOffset + sizeof(halRemoveBssKeyReqMsg.removeBssKeyParams) )))
8929 {
8930 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08008931 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07008932 pEventData, pwdiRemoveBSSKeyParams, wdiRemoveBSSKeyRspCb);
8933 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008934 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008935 }
8936 /*-----------------------------------------------------------------------
8937 Copy the Key parameters into the HAL message
8938 -----------------------------------------------------------------------*/
8939 halRemoveBssKeyReqMsg.removeBssKeyParams.bssIdx = ucCurrentBSSSesIdx;
8940
Jeff Johnsone7245742012-09-05 17:12:55 -07008941 halRemoveBssKeyReqMsg.removeBssKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -07008942 WDI_2_HAL_ENC_TYPE (pwdiRemoveBSSKeyParams->wdiKeyInfo.wdiEncType);
8943
8944 halRemoveBssKeyReqMsg.removeBssKeyParams.keyId = pwdiRemoveBSSKeyParams->wdiKeyInfo.ucKeyId;
8945
Jeff Johnsone7245742012-09-05 17:12:55 -07008946 halRemoveBssKeyReqMsg.removeBssKeyParams.wepType =
Jeff Johnson295189b2012-06-20 16:38:30 -07008947 WDI_2_HAL_WEP_TYPE(pwdiRemoveBSSKeyParams->wdiKeyInfo.wdiWEPType);
8948
Jeff Johnsone7245742012-09-05 17:12:55 -07008949 wpalMemoryCopy( pSendBuffer+usDataOffset,
8950 &halRemoveBssKeyReqMsg.removeBssKeyParams,
8951 sizeof(halRemoveBssKeyReqMsg.removeBssKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008952
8953 pWDICtx->wdiReqStatusCB = pwdiRemoveBSSKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008954 pWDICtx->pReqStatusUserData = pwdiRemoveBSSKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008955
8956 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008957 Send Remove BSS Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008958 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008959 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07008960 wdiRemoveBSSKeyRspCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -07008961 WDI_RMV_BSS_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07008962}/*WDI_ProcessRemoveBssKeyReq*/
8963
8964/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008965 @brief Process Set STA KeyRequest function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07008966 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008967
8968 @param pWDICtx: pointer to the WLAN DAL context
8969 pEventData: pointer to the event information structure
8970
Jeff Johnson295189b2012-06-20 16:38:30 -07008971 @see
8972 @return Result of the function call
8973*/
8974WDI_Status
8975WDI_ProcessSetStaKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008976(
Jeff Johnson295189b2012-06-20 16:38:30 -07008977 WDI_ControlBlockType* pWDICtx,
8978 WDI_EventInfoType* pEventData
8979)
8980{
8981 WDI_SetSTAKeyReqParamsType* pwdiSetSTAKeyParams;
8982 WDI_SetSTAKeyRspCb wdiSetSTAKeyRspCb;
8983 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008984 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008985 wpt_uint16 usDataOffset = 0;
8986 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07008987 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07008988 wpt_macAddr macBSSID;
Jeff Johnsone7245742012-09-05 17:12:55 -07008989 wpt_uint8 ucCurrentBSSSesIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -07008990 tSetStaKeyReqMsg halSetStaKeyReqMsg = {{0}};
8991 wpt_uint8 keyIndex = 0;
8992
8993 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8994
8995 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008996 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008997 -------------------------------------------------------------------------*/
8998 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
8999 ( NULL == pEventData->pCBfnc ))
9000 {
9001 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009002 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009003 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009004 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009005 }
9006
9007 pwdiSetSTAKeyParams = (WDI_SetSTAKeyReqParamsType*)pEventData->pEventData;
9008 wdiSetSTAKeyRspCb = (WDI_SetSTAKeyRspCb)pEventData->pCBfnc;
9009 /*-------------------------------------------------------------------------
9010 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009011 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009012 -------------------------------------------------------------------------*/
9013 wpalMutexAcquire(&pWDICtx->wptMutex);
9014
9015 /*------------------------------------------------------------------------
9016 Find the BSS for which the request is made and identify WDI session
9017 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009018 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
9019 pwdiSetSTAKeyParams->wdiKeyInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07009020 &macBSSID))
9021 {
9022 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009023 "This station does not exist in the WDI Station Table %d",
9024 pwdiSetSTAKeyParams->wdiKeyInfo.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07009025 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009026 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009027 }
9028
Jeff Johnsone7245742012-09-05 17:12:55 -07009029 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
9030 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009031 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009032 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
9033 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
9034 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009035
9036 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009037 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009038 }
Jeff Johnsone7245742012-09-05 17:12:55 -07009039
Jeff Johnson295189b2012-06-20 16:38:30 -07009040 /*------------------------------------------------------------------------
9041 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009042 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009043 ------------------------------------------------------------------------*/
9044 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9045 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009046 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9047 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
9048 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009049
Jeff Johnsone7245742012-09-05 17:12:55 -07009050 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009051 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009052 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009053 }
9054
9055
9056 wpalMutexRelease(&pWDICtx->wptMutex);
9057 /*-----------------------------------------------------------------------
9058 Get message buffer
9059 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009060 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_STA_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009061 sizeof(halSetStaKeyReqMsg.setStaKeyParams),
9062 &pSendBuffer, &usDataOffset, &usSendSize))||
9063 ( usSendSize < (usDataOffset + sizeof(halSetStaKeyReqMsg.setStaKeyParams) )))
9064 {
9065 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009066 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07009067 pEventData, pwdiSetSTAKeyParams, wdiSetSTAKeyRspCb);
9068 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009069 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009070 }
9071 /*-----------------------------------------------------------------------
9072 Copy the STA Key parameters into the HAL message
9073 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009074 halSetStaKeyReqMsg.setStaKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -07009075 WDI_2_HAL_ENC_TYPE (pwdiSetSTAKeyParams->wdiKeyInfo.wdiEncType);
9076
Jeff Johnsone7245742012-09-05 17:12:55 -07009077 halSetStaKeyReqMsg.setStaKeyParams.wepType =
Jeff Johnson295189b2012-06-20 16:38:30 -07009078 WDI_2_HAL_WEP_TYPE (pwdiSetSTAKeyParams->wdiKeyInfo.wdiWEPType );
9079
9080 halSetStaKeyReqMsg.setStaKeyParams.staIdx = pwdiSetSTAKeyParams->wdiKeyInfo.ucSTAIdx;
9081
9082 halSetStaKeyReqMsg.setStaKeyParams.defWEPIdx = pwdiSetSTAKeyParams->wdiKeyInfo.ucDefWEPIdx;
9083
9084 halSetStaKeyReqMsg.setStaKeyParams.singleTidRc = pwdiSetSTAKeyParams->wdiKeyInfo.ucSingleTidRc;
9085
Jeff Johnson295189b2012-06-20 16:38:30 -07009086 for(keyIndex = 0; keyIndex < pwdiSetSTAKeyParams->wdiKeyInfo.ucNumKeys ;
9087 keyIndex++)
9088 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009089 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -07009090 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyId;
9091 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].unicast =
9092 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].unicast;
9093 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyDirection =
9094 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyDirection;
9095 wpalMemoryCopy(halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyRsc,
Jeff Johnsone7245742012-09-05 17:12:55 -07009096 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyRsc,
Jeff Johnson295189b2012-06-20 16:38:30 -07009097 WDI_MAX_KEY_RSC_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -07009098 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].paeRole =
Jeff Johnson295189b2012-06-20 16:38:30 -07009099 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].paeRole;
Jeff Johnsone7245742012-09-05 17:12:55 -07009100 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07009101 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyLength;
9102 wpalMemoryCopy(halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].key,
Jeff Johnsone7245742012-09-05 17:12:55 -07009103 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].key,
Jeff Johnson295189b2012-06-20 16:38:30 -07009104 WDI_MAX_KEY_LENGTH);
9105 }
Jeff Johnson295189b2012-06-20 16:38:30 -07009106
Jeff Johnsone7245742012-09-05 17:12:55 -07009107 wpalMemoryCopy( pSendBuffer+usDataOffset,
9108 &halSetStaKeyReqMsg.setStaKeyParams,
9109 sizeof(halSetStaKeyReqMsg.setStaKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07009110
9111 pWDICtx->wdiReqStatusCB = pwdiSetSTAKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009112 pWDICtx->pReqStatusUserData = pwdiSetSTAKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009113
9114 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009115 Send Set STA Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009116 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009117 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
9118 wdiSetSTAKeyRspCb, pEventData->pUserData,
9119 WDI_SET_STA_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009120
9121}/*WDI_ProcessSetSTAKeyReq*/
9122
9123/**
Jeff Johnsone7245742012-09-05 17:12:55 -07009124 @brief Process Remove STA Key Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -07009125 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009126
9127 @param pWDICtx: pointer to the WLAN DAL context
9128 pEventData: pointer to the event information structure
9129
Jeff Johnson295189b2012-06-20 16:38:30 -07009130 @see
9131 @return Result of the function call
9132*/
9133WDI_Status
9134WDI_ProcessRemoveStaKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009135(
Jeff Johnson295189b2012-06-20 16:38:30 -07009136 WDI_ControlBlockType* pWDICtx,
9137 WDI_EventInfoType* pEventData
9138)
9139{
9140 WDI_RemoveSTAKeyReqParamsType* pwdiRemoveSTAKeyParams;
9141 WDI_RemoveSTAKeyRspCb wdiRemoveSTAKeyRspCb;
9142 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009143 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009144 wpt_uint16 usDataOffset = 0;
9145 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009146 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07009147 wpt_macAddr macBSSID;
9148 wpt_uint8 ucCurrentBSSSesIdx;
9149 tRemoveStaKeyReqMsg halRemoveStaKeyReqMsg = {{0}};
9150 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9151
9152 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009153 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009154 -------------------------------------------------------------------------*/
9155 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9156 ( NULL == pEventData->pCBfnc ))
9157 {
9158 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009159 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009160 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009161 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009162 }
9163
9164 pwdiRemoveSTAKeyParams = (WDI_RemoveSTAKeyReqParamsType*)pEventData->pEventData;
9165 wdiRemoveSTAKeyRspCb = (WDI_RemoveSTAKeyRspCb)pEventData->pCBfnc;
9166 /*-------------------------------------------------------------------------
9167 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009168 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009169 -------------------------------------------------------------------------*/
9170 wpalMutexAcquire(&pWDICtx->wptMutex);
9171
9172 /*------------------------------------------------------------------------
9173 Find the BSS for which the request is made and identify WDI session
9174 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009175 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
9176 pwdiRemoveSTAKeyParams->wdiKeyInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07009177 &macBSSID))
9178 {
9179 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009180 "This station does not exist in the WDI Station Table %d",
9181 pwdiRemoveSTAKeyParams->wdiKeyInfo.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07009182 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009183 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009184 }
9185
Jeff Johnsone7245742012-09-05 17:12:55 -07009186 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
9187 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009188 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009189 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
9190 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
9191 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009192
9193 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009194 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009195 }
Jeff Johnsone7245742012-09-05 17:12:55 -07009196
Jeff Johnson295189b2012-06-20 16:38:30 -07009197 /*------------------------------------------------------------------------
9198 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009199 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009200 ------------------------------------------------------------------------*/
9201 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9202 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009203 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9204 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
9205 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009206
Jeff Johnsone7245742012-09-05 17:12:55 -07009207 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009208 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009209 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009210 }
9211
9212
9213
9214 wpalMutexRelease(&pWDICtx->wptMutex);
9215 /*-----------------------------------------------------------------------
9216 Get message buffer
9217 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009218 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_RMV_STA_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009219 sizeof(halRemoveStaKeyReqMsg.removeStaKeyParams),
9220 &pSendBuffer, &usDataOffset, &usSendSize))||
9221 ( usSendSize < (usDataOffset + sizeof(halRemoveStaKeyReqMsg.removeStaKeyParams) )))
9222 {
9223 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009224 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07009225 pEventData, pwdiRemoveSTAKeyParams, wdiRemoveSTAKeyRspCb);
9226 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009227 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009228 }
9229
9230 /*-----------------------------------------------------------------------
9231 Copy the Key parameters into the HAL message
9232 -----------------------------------------------------------------------*/
9233
Jeff Johnsone7245742012-09-05 17:12:55 -07009234 halRemoveStaKeyReqMsg.removeStaKeyParams.staIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -07009235 pwdiRemoveSTAKeyParams->wdiKeyInfo.ucSTAIdx;
9236
Jeff Johnsone7245742012-09-05 17:12:55 -07009237 halRemoveStaKeyReqMsg.removeStaKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -07009238 WDI_2_HAL_ENC_TYPE (pwdiRemoveSTAKeyParams->wdiKeyInfo.wdiEncType);
9239
Jeff Johnsone7245742012-09-05 17:12:55 -07009240 halRemoveStaKeyReqMsg.removeStaKeyParams.keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -07009241 pwdiRemoveSTAKeyParams->wdiKeyInfo.ucKeyId;
9242
Jeff Johnsone7245742012-09-05 17:12:55 -07009243 halRemoveStaKeyReqMsg.removeStaKeyParams.unicast =
Jeff Johnson295189b2012-06-20 16:38:30 -07009244 pwdiRemoveSTAKeyParams->wdiKeyInfo.ucUnicast;
9245
Jeff Johnsone7245742012-09-05 17:12:55 -07009246 wpalMemoryCopy( pSendBuffer+usDataOffset,
9247 &halRemoveStaKeyReqMsg.removeStaKeyParams,
9248 sizeof(halRemoveStaKeyReqMsg.removeStaKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07009249
9250 pWDICtx->wdiReqStatusCB = pwdiRemoveSTAKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009251 pWDICtx->pReqStatusUserData = pwdiRemoveSTAKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009252
9253 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009254 Send Remove STA Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009255 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009256 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07009257 wdiRemoveSTAKeyRspCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -07009258 WDI_RMV_STA_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009259
9260}/*WDI_ProcessRemoveSTAKeyReq*/
9261
9262/**
Jeff Johnsone7245742012-09-05 17:12:55 -07009263 @brief Process Set STA KeyRequest function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07009264 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009265
9266 @param pWDICtx: pointer to the WLAN DAL context
9267 pEventData: pointer to the event information structure
9268
Jeff Johnson295189b2012-06-20 16:38:30 -07009269 @see
9270 @return Result of the function call
9271*/
9272WDI_Status
9273WDI_ProcessSetStaBcastKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009274(
Jeff Johnson295189b2012-06-20 16:38:30 -07009275 WDI_ControlBlockType* pWDICtx,
9276 WDI_EventInfoType* pEventData
9277)
9278{
9279 WDI_SetSTAKeyReqParamsType* pwdiSetSTAKeyParams;
9280 WDI_SetSTAKeyRspCb wdiSetSTAKeyRspCb;
9281 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009282 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009283 wpt_uint16 usDataOffset = 0;
9284 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009285 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07009286 wpt_macAddr macBSSID;
Jeff Johnsone7245742012-09-05 17:12:55 -07009287 wpt_uint8 ucCurrentBSSSesIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -07009288 tSetStaKeyReqMsg halSetStaKeyReqMsg = {{0}};
9289 wpt_uint8 keyIndex = 0;
9290
9291 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9292
9293 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009294 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009295 -------------------------------------------------------------------------*/
9296 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9297 ( NULL == pEventData->pCBfnc ))
9298 {
9299 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009300 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009301 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009302 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009303 }
9304
9305 pwdiSetSTAKeyParams = (WDI_SetSTAKeyReqParamsType*)pEventData->pEventData;
9306 wdiSetSTAKeyRspCb = (WDI_SetSTAKeyRspCb)pEventData->pCBfnc;
9307 /*-------------------------------------------------------------------------
9308 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009309 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009310 -------------------------------------------------------------------------*/
9311 wpalMutexAcquire(&pWDICtx->wptMutex);
9312
9313 /*------------------------------------------------------------------------
9314 Find the BSS for which the request is made and identify WDI session
9315 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009316 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
9317 pwdiSetSTAKeyParams->wdiKeyInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07009318 &macBSSID))
9319 {
9320 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009321 "This station does not exist in the WDI Station Table %d",
9322 pwdiSetSTAKeyParams->wdiKeyInfo.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07009323 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009324 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009325 }
9326
Jeff Johnsone7245742012-09-05 17:12:55 -07009327 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
9328 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009329 {
9330 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009331 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
Jeff Johnsone7245742012-09-05 17:12:55 -07009332 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009333
9334 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009335 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009336 }
Jeff Johnsone7245742012-09-05 17:12:55 -07009337
Jeff Johnson295189b2012-06-20 16:38:30 -07009338 /*------------------------------------------------------------------------
9339 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009340 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009341 ------------------------------------------------------------------------*/
9342 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9343 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009344 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9345 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
9346 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009347
Jeff Johnsone7245742012-09-05 17:12:55 -07009348 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009349 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009350 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009351 }
9352
9353
9354 wpalMutexRelease(&pWDICtx->wptMutex);
9355 /*-----------------------------------------------------------------------
9356 Get message buffer
9357 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009358 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_STA_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009359 sizeof(halSetStaKeyReqMsg.setStaKeyParams),
9360 &pSendBuffer, &usDataOffset, &usSendSize))||
9361 ( usSendSize < (usDataOffset + sizeof(halSetStaKeyReqMsg.setStaKeyParams) )))
9362 {
9363 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009364 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07009365 pEventData, pwdiSetSTAKeyParams, wdiSetSTAKeyRspCb);
9366 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009367 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009368 }
9369 /*-----------------------------------------------------------------------
9370 Copy the STA Key parameters into the HAL message
9371 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009372 halSetStaKeyReqMsg.setStaKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -07009373 WDI_2_HAL_ENC_TYPE (pwdiSetSTAKeyParams->wdiKeyInfo.wdiEncType);
9374
Jeff Johnsone7245742012-09-05 17:12:55 -07009375 halSetStaKeyReqMsg.setStaKeyParams.wepType =
Jeff Johnson295189b2012-06-20 16:38:30 -07009376 WDI_2_HAL_WEP_TYPE (pwdiSetSTAKeyParams->wdiKeyInfo.wdiWEPType );
9377
9378 halSetStaKeyReqMsg.setStaKeyParams.staIdx = pwdiSetSTAKeyParams->wdiKeyInfo.ucSTAIdx;
9379
9380 halSetStaKeyReqMsg.setStaKeyParams.defWEPIdx = pwdiSetSTAKeyParams->wdiKeyInfo.ucDefWEPIdx;
9381
9382 halSetStaKeyReqMsg.setStaKeyParams.singleTidRc = pwdiSetSTAKeyParams->wdiKeyInfo.ucSingleTidRc;
9383
Jeff Johnson295189b2012-06-20 16:38:30 -07009384 for(keyIndex = 0; keyIndex < pwdiSetSTAKeyParams->wdiKeyInfo.ucNumKeys ;
9385 keyIndex++)
9386 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009387 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -07009388 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyId;
9389 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].unicast =
9390 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].unicast;
9391 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyDirection =
9392 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyDirection;
9393 wpalMemoryCopy(halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyRsc,
Jeff Johnsone7245742012-09-05 17:12:55 -07009394 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyRsc,
Jeff Johnson295189b2012-06-20 16:38:30 -07009395 WDI_MAX_KEY_RSC_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -07009396 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].paeRole =
Jeff Johnson295189b2012-06-20 16:38:30 -07009397 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].paeRole;
Jeff Johnsone7245742012-09-05 17:12:55 -07009398 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07009399 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyLength;
9400 wpalMemoryCopy(halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].key,
Jeff Johnsone7245742012-09-05 17:12:55 -07009401 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].key,
Jeff Johnson295189b2012-06-20 16:38:30 -07009402 WDI_MAX_KEY_LENGTH);
9403 }
Jeff Johnson295189b2012-06-20 16:38:30 -07009404
Jeff Johnsone7245742012-09-05 17:12:55 -07009405 wpalMemoryCopy( pSendBuffer+usDataOffset,
9406 &halSetStaKeyReqMsg.setStaKeyParams,
9407 sizeof(halSetStaKeyReqMsg.setStaKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07009408
9409 pWDICtx->wdiReqStatusCB = pwdiSetSTAKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009410 pWDICtx->pReqStatusUserData = pwdiSetSTAKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009411
9412 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009413 Send Set STA Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009414 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009415 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
9416 wdiSetSTAKeyRspCb, pEventData->pUserData,
9417 WDI_SET_STA_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009418
9419}/*WDI_ProcessSetSTABcastKeyReq*/
9420
9421/**
Jeff Johnsone7245742012-09-05 17:12:55 -07009422 @brief Process Remove STA Key Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -07009423 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009424
9425 @param pWDICtx: pointer to the WLAN DAL context
9426 pEventData: pointer to the event information structure
9427
Jeff Johnson295189b2012-06-20 16:38:30 -07009428 @see
9429 @return Result of the function call
9430*/
9431WDI_Status
9432WDI_ProcessRemoveStaBcastKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009433(
Jeff Johnson295189b2012-06-20 16:38:30 -07009434 WDI_ControlBlockType* pWDICtx,
9435 WDI_EventInfoType* pEventData
9436)
9437{
9438 WDI_RemoveSTAKeyReqParamsType* pwdiRemoveSTABcastKeyParams;
9439 WDI_RemoveSTAKeyRspCb wdiRemoveSTAKeyRspCb;
9440 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009441 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009442 wpt_uint16 usDataOffset = 0;
9443 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009444 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07009445 wpt_macAddr macBSSID;
9446 wpt_uint8 ucCurrentBSSSesIdx;
9447 tRemoveStaKeyReqMsg halRemoveStaBcastKeyReqMsg = {{0}};
9448 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9449
9450 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009451 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009452 -------------------------------------------------------------------------*/
9453 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9454 ( NULL == pEventData->pCBfnc ))
9455 {
9456 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009457 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009458 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009459 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009460 }
9461
9462 pwdiRemoveSTABcastKeyParams = (WDI_RemoveSTAKeyReqParamsType*)pEventData->pEventData;
9463 wdiRemoveSTAKeyRspCb = (WDI_RemoveSTAKeyRspCb)pEventData->pCBfnc;
9464 /*-------------------------------------------------------------------------
9465 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009466 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009467 -------------------------------------------------------------------------*/
9468 wpalMutexAcquire(&pWDICtx->wptMutex);
9469
9470 /*------------------------------------------------------------------------
9471 Find the BSS for which the request is made and identify WDI session
9472 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009473 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
9474 pwdiRemoveSTABcastKeyParams->wdiKeyInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07009475 &macBSSID))
9476 {
9477 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009478 "This station does not exist in the WDI Station Table %d",
9479 pwdiRemoveSTABcastKeyParams->wdiKeyInfo.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07009480 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009481 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009482 }
9483
Jeff Johnsone7245742012-09-05 17:12:55 -07009484 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
9485 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009486 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009487 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
9488 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
9489 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009490
9491 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009492 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009493 }
Jeff Johnsone7245742012-09-05 17:12:55 -07009494
Jeff Johnson295189b2012-06-20 16:38:30 -07009495 /*------------------------------------------------------------------------
9496 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009497 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009498 ------------------------------------------------------------------------*/
9499 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9500 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009501 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9502 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
9503 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009504
Jeff Johnsone7245742012-09-05 17:12:55 -07009505 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009506 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009507 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009508 }
9509
9510
9511
9512 wpalMutexRelease(&pWDICtx->wptMutex);
9513 /*-----------------------------------------------------------------------
9514 Get message buffer
9515 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009516 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_RMV_STA_BCAST_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009517 sizeof(halRemoveStaBcastKeyReqMsg.removeStaKeyParams),
9518 &pSendBuffer, &usDataOffset, &usSendSize))||
9519 ( usSendSize < (usDataOffset + sizeof(halRemoveStaBcastKeyReqMsg.removeStaKeyParams) )))
9520 {
9521 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009522 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07009523 pEventData, pwdiRemoveSTABcastKeyParams, wdiRemoveSTAKeyRspCb);
9524 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009525 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009526 }
9527
9528 /*-----------------------------------------------------------------------
9529 Copy the Key parameters into the HAL message
9530 -----------------------------------------------------------------------*/
9531
Jeff Johnsone7245742012-09-05 17:12:55 -07009532 halRemoveStaBcastKeyReqMsg.removeStaKeyParams.staIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -07009533 pwdiRemoveSTABcastKeyParams->wdiKeyInfo.ucSTAIdx;
9534
Jeff Johnsone7245742012-09-05 17:12:55 -07009535 halRemoveStaBcastKeyReqMsg.removeStaKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -07009536 WDI_2_HAL_ENC_TYPE (pwdiRemoveSTABcastKeyParams->wdiKeyInfo.wdiEncType);
9537
Jeff Johnsone7245742012-09-05 17:12:55 -07009538 halRemoveStaBcastKeyReqMsg.removeStaKeyParams.keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -07009539 pwdiRemoveSTABcastKeyParams->wdiKeyInfo.ucKeyId;
9540
Jeff Johnsone7245742012-09-05 17:12:55 -07009541 halRemoveStaBcastKeyReqMsg.removeStaKeyParams.unicast =
Jeff Johnson295189b2012-06-20 16:38:30 -07009542 pwdiRemoveSTABcastKeyParams->wdiKeyInfo.ucUnicast;
9543
Jeff Johnsone7245742012-09-05 17:12:55 -07009544 wpalMemoryCopy( pSendBuffer+usDataOffset,
9545 &halRemoveStaBcastKeyReqMsg.removeStaKeyParams,
9546 sizeof(halRemoveStaBcastKeyReqMsg.removeStaKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07009547
9548 pWDICtx->wdiReqStatusCB = pwdiRemoveSTABcastKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009549 pWDICtx->pReqStatusUserData = pwdiRemoveSTABcastKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009550
9551 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009552 Send Remove STA Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009553 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009554 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07009555 wdiRemoveSTAKeyRspCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -07009556 WDI_RMV_STA_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009557
9558}/*WDI_ProcessRemoveSTABcastKeyReq*/
9559
9560/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -07009561 QOS and BA PROCESSING REQUEST API
Jeff Johnson295189b2012-06-20 16:38:30 -07009562==========================================================================*/
9563/**
9564 @brief Process Add TSpec Request function (called when Main FSM
9565 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009566
9567 @param pWDICtx: pointer to the WLAN DAL context
9568 pEventData: pointer to the event information structure
9569
Jeff Johnson295189b2012-06-20 16:38:30 -07009570 @see
9571 @return Result of the function call
9572*/
9573WDI_Status
9574WDI_ProcessAddTSpecReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009575(
Jeff Johnson295189b2012-06-20 16:38:30 -07009576 WDI_ControlBlockType* pWDICtx,
9577 WDI_EventInfoType* pEventData
9578)
9579{
9580 WDI_AddTSReqParamsType* pwdiAddTSParams;
9581 WDI_AddTsRspCb wdiAddTSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07009582 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07009583 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009584 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009585 wpt_uint16 usDataOffset = 0;
9586 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009587 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07009588 wpt_macAddr macBSSID;
9589 tAddTsParams halAddTsParams = {0};
Jeff Johnsone7245742012-09-05 17:12:55 -07009590
Jeff Johnson295189b2012-06-20 16:38:30 -07009591 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9592
9593 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009594 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009595 -------------------------------------------------------------------------*/
9596 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9597 ( NULL == pEventData->pCBfnc ))
9598 {
9599 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009600 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009601 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009602 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009603 }
9604
9605 pwdiAddTSParams = (WDI_AddTSReqParamsType*)pEventData->pEventData;
9606 wdiAddTSRspCb = (WDI_AddTsRspCb)pEventData->pCBfnc;
9607 /*-------------------------------------------------------------------------
9608 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009609 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009610 -------------------------------------------------------------------------*/
9611 wpalMutexAcquire(&pWDICtx->wptMutex);
9612
9613 /*------------------------------------------------------------------------
9614 Find the BSS for which the request is made and identify WDI session
9615 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009616 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
9617 pwdiAddTSParams->wdiTsInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07009618 &macBSSID))
9619 {
9620 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009621 "This station does not exist in the WDI Station Table %d",
9622 pwdiAddTSParams->wdiTsInfo.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07009623 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009624 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009625 }
9626
Jeff Johnsone7245742012-09-05 17:12:55 -07009627 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
9628 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009629 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009630 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
9631 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
9632 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009633
9634 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009635 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009636 }
Jeff Johnsone7245742012-09-05 17:12:55 -07009637
Jeff Johnson295189b2012-06-20 16:38:30 -07009638 /*------------------------------------------------------------------------
9639 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009640 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009641 ------------------------------------------------------------------------*/
9642 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9643 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009644 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9645 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
9646 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009647
Jeff Johnsone7245742012-09-05 17:12:55 -07009648 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009649 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009650 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009651 }
9652
9653 wpalMutexRelease(&pWDICtx->wptMutex);
9654 /*-----------------------------------------------------------------------
9655 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -07009656 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -07009657 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009658 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ADD_TS_REQ,
9659 sizeof(halAddTsParams),
9660 &pSendBuffer, &usDataOffset,
Jeff Johnson295189b2012-06-20 16:38:30 -07009661 &usSendSize))||
9662 ( usSendSize < (usDataOffset + sizeof(halAddTsParams) )))
9663 {
9664 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009665 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07009666 pEventData, pwdiAddTSParams, wdiAddTSRspCb);
9667 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009668 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009669 }
9670
9671 halAddTsParams.staIdx = pwdiAddTSParams->wdiTsInfo.ucSTAIdx;
9672 halAddTsParams.tspecIdx = pwdiAddTSParams->wdiTsInfo.ucTspecIdx;
9673
9674 //TSPEC IE
9675 halAddTsParams.tspec.type = pwdiAddTSParams->wdiTsInfo.wdiTspecIE.ucType;
9676 halAddTsParams.tspec.length = pwdiAddTSParams->wdiTsInfo.wdiTspecIE.ucLength;
Jeff Johnsone7245742012-09-05 17:12:55 -07009677 halAddTsParams.tspec.nomMsduSz =
Jeff Johnson295189b2012-06-20 16:38:30 -07009678 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.usNomMsduSz;
Jeff Johnsone7245742012-09-05 17:12:55 -07009679 halAddTsParams.tspec.maxMsduSz =
Jeff Johnson295189b2012-06-20 16:38:30 -07009680 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.usMaxMsduSz;
Jeff Johnsone7245742012-09-05 17:12:55 -07009681 halAddTsParams.tspec.minSvcInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -07009682 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMinSvcInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -07009683 halAddTsParams.tspec.maxSvcInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -07009684 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMaxSvcInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -07009685 halAddTsParams.tspec.inactInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -07009686 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uInactInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -07009687 halAddTsParams.tspec.suspendInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -07009688 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uSuspendInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -07009689 halAddTsParams.tspec.svcStartTime =
Jeff Johnson295189b2012-06-20 16:38:30 -07009690 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uSvcStartTime;
Jeff Johnsone7245742012-09-05 17:12:55 -07009691 halAddTsParams.tspec.minDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -07009692 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMinDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -07009693 halAddTsParams.tspec.meanDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -07009694 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMeanDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -07009695 halAddTsParams.tspec.peakDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -07009696 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uPeakDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -07009697 halAddTsParams.tspec.maxBurstSz =
Jeff Johnson295189b2012-06-20 16:38:30 -07009698 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMaxBurstSz;
Jeff Johnsone7245742012-09-05 17:12:55 -07009699 halAddTsParams.tspec.delayBound =
Jeff Johnson295189b2012-06-20 16:38:30 -07009700 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uDelayBound;
Jeff Johnsone7245742012-09-05 17:12:55 -07009701 halAddTsParams.tspec.minPhyRate =
Jeff Johnson295189b2012-06-20 16:38:30 -07009702 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMinPhyRate;
Jeff Johnsone7245742012-09-05 17:12:55 -07009703 halAddTsParams.tspec.surplusBw =
Jeff Johnson295189b2012-06-20 16:38:30 -07009704 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.usSurplusBw;
Jeff Johnsone7245742012-09-05 17:12:55 -07009705 halAddTsParams.tspec.mediumTime =
Jeff Johnson295189b2012-06-20 16:38:30 -07009706 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.usMediumTime;
9707
9708 //TSPEC IE : TS INFO : TRAFFIC
Jeff Johnsone7245742012-09-05 17:12:55 -07009709 halAddTsParams.tspec.tsinfo.traffic.ackPolicy =
Jeff Johnson295189b2012-06-20 16:38:30 -07009710 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.accessPolicy;
Jeff Johnsone7245742012-09-05 17:12:55 -07009711 halAddTsParams.tspec.tsinfo.traffic.userPrio =
Jeff Johnson295189b2012-06-20 16:38:30 -07009712 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.userPrio;
Jeff Johnsone7245742012-09-05 17:12:55 -07009713 halAddTsParams.tspec.tsinfo.traffic.psb =
Jeff Johnson295189b2012-06-20 16:38:30 -07009714 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.psb;
Jeff Johnsone7245742012-09-05 17:12:55 -07009715 halAddTsParams.tspec.tsinfo.traffic.aggregation =
Jeff Johnson295189b2012-06-20 16:38:30 -07009716 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.aggregation;
Jeff Johnsone7245742012-09-05 17:12:55 -07009717 halAddTsParams.tspec.tsinfo.traffic.direction =
Jeff Johnson295189b2012-06-20 16:38:30 -07009718 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.direction;
Jeff Johnsone7245742012-09-05 17:12:55 -07009719 halAddTsParams.tspec.tsinfo.traffic.tsid =
Jeff Johnson295189b2012-06-20 16:38:30 -07009720 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.tsid;
Jeff Johnsone7245742012-09-05 17:12:55 -07009721 halAddTsParams.tspec.tsinfo.traffic.trafficType =
Jeff Johnson295189b2012-06-20 16:38:30 -07009722 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.trafficType;
9723
9724 //TSPEC IE : TS INFO : SCHEDULE
Jeff Johnsone7245742012-09-05 17:12:55 -07009725 halAddTsParams.tspec.tsinfo.schedule.rsvd =
Jeff Johnson295189b2012-06-20 16:38:30 -07009726 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiSchedule.rsvd;
Jeff Johnsone7245742012-09-05 17:12:55 -07009727 halAddTsParams.tspec.tsinfo.schedule.schedule =
Jeff Johnson295189b2012-06-20 16:38:30 -07009728 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiSchedule.schedule;
9729
Jeff Johnsone7245742012-09-05 17:12:55 -07009730 wpalMemoryCopy( pSendBuffer+usDataOffset,
9731 &halAddTsParams,
9732 sizeof(halAddTsParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07009733
9734 pWDICtx->wdiReqStatusCB = pwdiAddTSParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009735 pWDICtx->pReqStatusUserData = pwdiAddTSParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009736
9737 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009738 Send Add TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009739 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009740 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07009741 wdiAddTSRspCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -07009742 WDI_ADD_TS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009743}/*WDI_ProcessAddTSpecReq*/
9744
9745
9746/**
9747 @brief Process Del TSpec Request function (called when Main FSM
9748 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009749
9750 @param pWDICtx: pointer to the WLAN DAL context
9751 pEventData: pointer to the event information structure
9752
Jeff Johnson295189b2012-06-20 16:38:30 -07009753 @see
9754 @return Result of the function call
9755*/
9756WDI_Status
9757WDI_ProcessDelTSpecReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009758(
Jeff Johnson295189b2012-06-20 16:38:30 -07009759 WDI_ControlBlockType* pWDICtx,
9760 WDI_EventInfoType* pEventData
9761)
9762{
9763 WDI_DelTSReqParamsType* pwdiDelTSParams;
9764 WDI_DelTsRspCb wdiDelTSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07009765 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07009766 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009767 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009768 wpt_uint16 usDataOffset = 0;
9769 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009770 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07009771 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9772
9773 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009774 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009775 -------------------------------------------------------------------------*/
9776 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9777 ( NULL == pEventData->pCBfnc ))
9778 {
9779 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009780 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009781 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009782 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009783 }
9784
9785 pwdiDelTSParams = (WDI_DelTSReqParamsType*)pEventData->pEventData;
9786 wdiDelTSRspCb = (WDI_DelTsRspCb)pEventData->pCBfnc;
9787
9788 /*-------------------------------------------------------------------------
9789 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009790 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009791 -------------------------------------------------------------------------*/
9792 wpalMutexAcquire(&pWDICtx->wptMutex);
9793
9794 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009795 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07009796 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009797 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
9798 pwdiDelTSParams->wdiDelTSInfo.macBSSID,
9799 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07009800
Jeff Johnsone7245742012-09-05 17:12:55 -07009801 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009802 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009803 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
9804 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
9805 __func__, MAC_ADDR_ARRAY(pwdiDelTSParams->wdiDelTSInfo.macBSSID));
9806
Jeff Johnson295189b2012-06-20 16:38:30 -07009807 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009808 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009809 }
9810
9811 /*------------------------------------------------------------------------
9812 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009813 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009814 ------------------------------------------------------------------------*/
9815 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9816 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009817 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9818 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
9819 __func__, MAC_ADDR_ARRAY(pwdiDelTSParams->wdiDelTSInfo.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009820
Jeff Johnsone7245742012-09-05 17:12:55 -07009821 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009822 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009823 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009824 }
9825
9826
9827 wpalMutexRelease(&pWDICtx->wptMutex);
9828 /*-----------------------------------------------------------------------
9829 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -07009830 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -07009831 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009832 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_DEL_TS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009833 sizeof(pwdiDelTSParams->wdiDelTSInfo),
9834 &pSendBuffer, &usDataOffset, &usSendSize))||
9835 ( usSendSize < (usDataOffset + sizeof(pwdiDelTSParams->wdiDelTSInfo) )))
9836 {
9837 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009838 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07009839 pEventData, pwdiDelTSParams, wdiDelTSRspCb);
9840 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009841 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009842 }
9843
Jeff Johnsone7245742012-09-05 17:12:55 -07009844 wpalMemoryCopy( pSendBuffer+usDataOffset,
9845 &pwdiDelTSParams->wdiDelTSInfo,
9846 sizeof(pwdiDelTSParams->wdiDelTSInfo));
Jeff Johnson295189b2012-06-20 16:38:30 -07009847
9848 pWDICtx->wdiReqStatusCB = pwdiDelTSParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009849 pWDICtx->pReqStatusUserData = pwdiDelTSParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009850
9851 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009852 Send Del TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009853 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009854 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
9855 wdiDelTSRspCb, pEventData->pUserData, WDI_DEL_TS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009856}/*WDI_ProcessDelTSpecReq*/
9857
9858/**
9859 @brief Process Update EDCA Params Request function (called when
9860 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009861
9862 @param pWDICtx: pointer to the WLAN DAL context
9863 pEventData: pointer to the event information structure
9864
Jeff Johnson295189b2012-06-20 16:38:30 -07009865 @see
9866 @return Result of the function call
9867*/
9868WDI_Status
9869WDI_ProcessUpdateEDCAParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009870(
Jeff Johnson295189b2012-06-20 16:38:30 -07009871 WDI_ControlBlockType* pWDICtx,
9872 WDI_EventInfoType* pEventData
9873)
9874{
9875 WDI_UpdateEDCAParamsType* pwdiUpdateEDCAParams;
9876 WDI_UpdateEDCAParamsRspCb wdiUpdateEDCARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07009877 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07009878 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009879 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009880 wpt_uint16 usDataOffset = 0;
9881 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009882 WDI_Status wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009883 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9884
9885 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009886 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009887 -------------------------------------------------------------------------*/
9888 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9889 ( NULL == pEventData->pCBfnc ))
9890 {
9891 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009892 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009893 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009894 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009895 }
9896
9897 pwdiUpdateEDCAParams = (WDI_UpdateEDCAParamsType*)pEventData->pEventData;
9898 wdiUpdateEDCARspCb = (WDI_UpdateEDCAParamsRspCb)pEventData->pCBfnc;
9899 /*-------------------------------------------------------------------------
9900 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009901 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009902 -------------------------------------------------------------------------*/
9903 wpalMutexAcquire(&pWDICtx->wptMutex);
9904
9905 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009906 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07009907 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009908 ucCurrentBSSSesIdx = WDI_FindAssocSessionByBSSIdx( pWDICtx,
9909 pwdiUpdateEDCAParams->wdiEDCAInfo.ucBssIdx,
9910 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07009911
Jeff Johnsone7245742012-09-05 17:12:55 -07009912 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009913 {
9914 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07009915 "%s: Association sequence for this BSS does not yet exist. ucBssIdx %d",
9916 __func__, pwdiUpdateEDCAParams->wdiEDCAInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07009917
9918 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009919 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009920 }
9921
9922 /*------------------------------------------------------------------------
9923 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009924 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009925 ------------------------------------------------------------------------*/
9926 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9927 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009928 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9929 "%s: Association sequence for this BSS exists but currently queued. ucBssIdx %d",
9930 __func__, pwdiUpdateEDCAParams->wdiEDCAInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07009931
Jeff Johnsone7245742012-09-05 17:12:55 -07009932 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009933 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009934 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009935 }
9936
9937
9938 wpalMutexRelease(&pWDICtx->wptMutex);
9939 /*-----------------------------------------------------------------------
9940 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -07009941 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -07009942 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009943 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPD_EDCA_PRMS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009944 sizeof(pwdiUpdateEDCAParams->wdiEDCAInfo),
9945 &pSendBuffer, &usDataOffset, &usSendSize))||
9946 ( usSendSize < (usDataOffset + sizeof(pwdiUpdateEDCAParams->wdiEDCAInfo) )))
9947 {
9948 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009949 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07009950 pEventData, pwdiUpdateEDCAParams, wdiUpdateEDCARspCb);
9951 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009952 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009953 }
9954
Jeff Johnsone7245742012-09-05 17:12:55 -07009955 wpalMemoryCopy( pSendBuffer+usDataOffset,
9956 &pwdiUpdateEDCAParams->wdiEDCAInfo,
9957 sizeof(pwdiUpdateEDCAParams->wdiEDCAInfo));
Jeff Johnson295189b2012-06-20 16:38:30 -07009958
9959 pWDICtx->wdiReqStatusCB = pwdiUpdateEDCAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009960 pWDICtx->pReqStatusUserData = pwdiUpdateEDCAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009961
9962 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009963 Send Update EDCA Params Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009964 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009965 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
9966 wdiUpdateEDCARspCb, pEventData->pUserData,
9967 WDI_UPD_EDCA_PRMS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009968}/*WDI_ProcessUpdateEDCAParamsReq*/
9969
9970/**
Jeff Johnsone7245742012-09-05 17:12:55 -07009971 @brief Process Add BA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07009972 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009973
9974 @param pWDICtx: pointer to the WLAN DAL context
9975 pEventData: pointer to the event information structure
9976
Jeff Johnson295189b2012-06-20 16:38:30 -07009977 @see
9978 @return Result of the function call
9979*/
9980WDI_Status
9981WDI_ProcessAddBASessionReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009982(
Jeff Johnson295189b2012-06-20 16:38:30 -07009983 WDI_ControlBlockType* pWDICtx,
9984 WDI_EventInfoType* pEventData
9985)
9986{
9987 WDI_AddBASessionReqParamsType* pwdiAddBASessionParams;
9988 WDI_AddBASessionRspCb wdiAddBASessionRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07009989 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07009990 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009991 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009992 wpt_uint16 usDataOffset = 0;
9993 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009994 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07009995 wpt_macAddr macBSSID;
9996
9997 tAddBASessionReqMsg halAddBASessionReq;
9998 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9999
10000 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010001 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010002 -------------------------------------------------------------------------*/
10003 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10004 ( NULL == pEventData->pCBfnc ))
10005 {
10006 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010007 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010008 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010009 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010010 }
10011
Jeff Johnsone7245742012-09-05 17:12:55 -070010012 pwdiAddBASessionParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070010013 (WDI_AddBASessionReqParamsType*)pEventData->pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070010014 wdiAddBASessionRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070010015 (WDI_AddBASessionRspCb)pEventData->pCBfnc;
10016 /*-------------------------------------------------------------------------
10017 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070010018 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070010019 -------------------------------------------------------------------------*/
10020 wpalMutexAcquire(&pWDICtx->wptMutex);
10021
10022 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010023 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070010024 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010025 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
10026 pwdiAddBASessionParams->wdiBASessionInfoType.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070010027 &macBSSID))
10028 {
10029 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010030 "This station does not exist in the WDI Station Table %d",
10031 pwdiAddBASessionParams->wdiBASessionInfoType.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070010032 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010033 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010034 }
10035
10036
Jeff Johnsone7245742012-09-05 17:12:55 -070010037 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070010038
Jeff Johnsone7245742012-09-05 17:12:55 -070010039 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070010040 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010041 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
10042 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
10043 __func__, MAC_ADDR_ARRAY(macBSSID));
10044
Jeff Johnson295189b2012-06-20 16:38:30 -070010045 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010046 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070010047 }
10048
10049 /*------------------------------------------------------------------------
10050 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070010051 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070010052 ------------------------------------------------------------------------*/
10053 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
10054 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010055 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10056 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
10057 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010058
Jeff Johnsone7245742012-09-05 17:12:55 -070010059 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070010060 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010061 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070010062 }
10063
10064
10065 wpalMutexRelease(&pWDICtx->wptMutex);
10066 /*-----------------------------------------------------------------------
10067 Get message buffer
10068 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010069 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
10070 WDI_ADD_BA_SESSION_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010071 sizeof(halAddBASessionReq.addBASessionParams),
10072 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070010073 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070010074 (usDataOffset + sizeof(halAddBASessionReq.addBASessionParams) )))
10075 {
10076 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010077 "Unable to get send buffer in Add BA session req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070010078 pEventData, pwdiAddBASessionParams, wdiAddBASessionRspCb);
10079 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010080 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010081 }
10082
10083 halAddBASessionReq.addBASessionParams.staIdx =
10084 pwdiAddBASessionParams->wdiBASessionInfoType.ucSTAIdx;
10085 wpalMemoryCopy(halAddBASessionReq.addBASessionParams.peerMacAddr,
10086 pwdiAddBASessionParams->wdiBASessionInfoType.macPeerAddr,
10087 WDI_MAC_ADDR_LEN);
10088 halAddBASessionReq.addBASessionParams.baTID =
10089 pwdiAddBASessionParams->wdiBASessionInfoType.ucBaTID;
10090 halAddBASessionReq.addBASessionParams.baPolicy =
10091 pwdiAddBASessionParams->wdiBASessionInfoType.ucBaPolicy;
10092 halAddBASessionReq.addBASessionParams.baBufferSize =
10093 pwdiAddBASessionParams->wdiBASessionInfoType.usBaBufferSize;
10094 halAddBASessionReq.addBASessionParams.baTimeout =
10095 pwdiAddBASessionParams->wdiBASessionInfoType.usBaTimeout;
10096 halAddBASessionReq.addBASessionParams.baSSN =
10097 pwdiAddBASessionParams->wdiBASessionInfoType.usBaSSN;
10098 halAddBASessionReq.addBASessionParams.baDirection =
10099 pwdiAddBASessionParams->wdiBASessionInfoType.ucBaDirection;
10100
Jeff Johnsone7245742012-09-05 17:12:55 -070010101 wpalMemoryCopy( pSendBuffer+usDataOffset,
10102 &halAddBASessionReq.addBASessionParams,
10103 sizeof(halAddBASessionReq.addBASessionParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070010104
10105 pWDICtx->wdiReqStatusCB = pwdiAddBASessionParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010106 pWDICtx->pReqStatusUserData = pwdiAddBASessionParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010107
10108 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010109 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010110 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010111 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10112 wdiAddBASessionRspCb, pEventData->pUserData,
10113 WDI_ADD_BA_SESSION_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010114}/*WDI_ProcessAddBASessionReq*/
10115
10116/**
Jeff Johnsone7245742012-09-05 17:12:55 -070010117 @brief Process Del BA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070010118 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010119
10120 @param pWDICtx: pointer to the WLAN DAL context
10121 pEventData: pointer to the event information structure
10122
Jeff Johnson295189b2012-06-20 16:38:30 -070010123 @see
10124 @return Result of the function call
10125*/
10126WDI_Status
10127WDI_ProcessDelBAReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010128(
Jeff Johnson295189b2012-06-20 16:38:30 -070010129 WDI_ControlBlockType* pWDICtx,
10130 WDI_EventInfoType* pEventData
10131)
10132{
10133 WDI_DelBAReqParamsType* pwdiDelBAParams;
10134 WDI_DelBARspCb wdiDelBARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010135 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070010136 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070010137 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010138 wpt_uint16 usDataOffset = 0;
10139 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070010140 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070010141 wpt_macAddr macBSSID;
10142 tDelBAParams halDelBAparam;
10143 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10144
10145 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010146 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010147 -------------------------------------------------------------------------*/
10148 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10149 ( NULL == pEventData->pCBfnc ))
10150 {
10151 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010152 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010153 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010154 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010155 }
10156
10157 pwdiDelBAParams = (WDI_DelBAReqParamsType*)pEventData->pEventData;
10158 wdiDelBARspCb = (WDI_DelBARspCb)pEventData->pCBfnc;
10159 /*-------------------------------------------------------------------------
10160 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070010161 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070010162 -------------------------------------------------------------------------*/
10163 wpalMutexAcquire(&pWDICtx->wptMutex);
10164
10165 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010166 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070010167 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010168 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
10169 pwdiDelBAParams->wdiBAInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070010170 &macBSSID))
10171 {
10172 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010173 "This station does not exist in the WDI Station Table %d",
10174 pwdiDelBAParams->wdiBAInfo.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070010175 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010176 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010177 }
10178
Jeff Johnsone7245742012-09-05 17:12:55 -070010179 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070010180
Jeff Johnsone7245742012-09-05 17:12:55 -070010181 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070010182 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010183 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
10184 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
10185 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010186
10187 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010188 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070010189 }
10190
10191 /*------------------------------------------------------------------------
10192 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070010193 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070010194 ------------------------------------------------------------------------*/
10195 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
10196 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010197 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10198 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
10199 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010200
Jeff Johnsone7245742012-09-05 17:12:55 -070010201 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070010202 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010203 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070010204 }
10205
10206 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010207 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_DEL_BA_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010208 sizeof(halDelBAparam),
10209 &pSendBuffer, &usDataOffset, &usSendSize))||
10210 ( usSendSize < (usDataOffset + sizeof(halDelBAparam) )))
10211 {
10212 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010213 "Unable to get send buffer for DEL BA req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070010214 pEventData, pwdiDelBAParams, wdiDelBARspCb);
10215 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010216 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010217 }
10218
10219 halDelBAparam.staIdx = pwdiDelBAParams->wdiBAInfo.ucSTAIdx;
10220 halDelBAparam.baTID = pwdiDelBAParams->wdiBAInfo.ucBaTID;
10221 halDelBAparam.baDirection = pwdiDelBAParams->wdiBAInfo.ucBaDirection;
10222
Jeff Johnsone7245742012-09-05 17:12:55 -070010223 wpalMemoryCopy( pSendBuffer+usDataOffset,
10224 &halDelBAparam,
10225 sizeof(halDelBAparam));
Jeff Johnson295189b2012-06-20 16:38:30 -070010226
10227 pWDICtx->wdiReqStatusCB = pwdiDelBAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010228 pWDICtx->pReqStatusUserData = pwdiDelBAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010229
10230 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010231 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010232 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010233 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10234 wdiDelBARspCb, pEventData->pUserData, WDI_DEL_BA_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010235}/*WDI_ProcessDelBAReq*/
10236
10237#ifdef FEATURE_WLAN_CCX
10238
10239WDI_Status
10240WDI_ProcessTSMStatsReq
10241(
10242 WDI_ControlBlockType* pWDICtx,
10243 WDI_EventInfoType* pEventData
10244)
10245{
10246 WDI_TSMStatsReqParamsType* pwdiTSMParams;
10247 WDI_TsmRspCb wdiTSMRspCb;
10248 wpt_uint8 ucCurrentBSSSesIdx = 0;
10249 WDI_BSSSessionType* pBSSSes = NULL;
10250 wpt_uint8* pSendBuffer = NULL;
10251 wpt_uint16 usDataOffset = 0;
10252 wpt_uint16 usSendSize = 0;
10253 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
10254 tTsmStatsParams halTsmStatsReqParams = {0};
10255
10256 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10257
10258 /*-------------------------------------------------------------------------
10259 Sanity check
10260 -------------------------------------------------------------------------*/
10261 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10262 ( NULL == pEventData->pCBfnc ))
10263 {
10264 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010265 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010266 WDI_ASSERT(0);
10267 return WDI_STATUS_E_FAILURE;
10268 }
10269
10270 pwdiTSMParams = (WDI_TSMStatsReqParamsType*)pEventData->pEventData;
10271 wdiTSMRspCb = (WDI_TsmRspCb)pEventData->pCBfnc;
10272 /*-------------------------------------------------------------------------
10273 Check to see if we are in the middle of an association, if so queue, if
10274 not it means it is free to process request
10275 -------------------------------------------------------------------------*/
10276 wpalMutexAcquire(&pWDICtx->wptMutex);
10277
10278 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, pwdiTSMParams->wdiTsmStatsParamsInfo.bssid, &pBSSSes);
10279 if ( NULL == pBSSSes )
10280 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010281 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
10282 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
10283 __func__, MAC_ADDR_ARRAY(pwdiTSMParams->wdiTsmStatsParamsInfo.bssid));
Jeff Johnson295189b2012-06-20 16:38:30 -070010284
10285 wpalMutexRelease(&pWDICtx->wptMutex);
10286 return WDI_STATUS_E_NOT_ALLOWED;
10287 }
10288
10289 /*------------------------------------------------------------------------
10290 Check if this BSS is being currently processed or queued,
10291 if queued - queue the new request as well
10292 ------------------------------------------------------------------------*/
10293 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
10294 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010295 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Srinivas Girigowda6d1f9062014-02-03 18:15:54 -080010296 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
Jeff Johnsone7245742012-09-05 17:12:55 -070010297 __func__, MAC_ADDR_ARRAY(pwdiTSMParams->wdiTsmStatsParamsInfo.bssid));
Jeff Johnson295189b2012-06-20 16:38:30 -070010298
10299 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
10300 wpalMutexRelease(&pWDICtx->wptMutex);
10301 return wdiStatus;
10302 }
10303
10304 wpalMutexRelease(&pWDICtx->wptMutex);
10305 /*-----------------------------------------------------------------------
10306 Get message buffer
10307 ! TO DO : proper conversion into the HAL Message Request Format
10308 -----------------------------------------------------------------------*/
10309 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_TSM_STATS_REQ,
10310 sizeof(halTsmStatsReqParams),
10311 &pSendBuffer, &usDataOffset, &usSendSize))||
10312 ( usSendSize < (usDataOffset + sizeof(halTsmStatsReqParams) )))
10313 {
10314 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
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, pwdiTSMParams, wdiTSMRspCb);
10317 WDI_ASSERT(0);
10318 return WDI_STATUS_E_FAILURE;
10319 }
10320
10321 halTsmStatsReqParams.tsmTID = pwdiTSMParams->wdiTsmStatsParamsInfo.ucTid;
10322 wpalMemoryCopy(halTsmStatsReqParams.bssId,
10323 pwdiTSMParams->wdiTsmStatsParamsInfo.bssid,
10324 WDI_MAC_ADDR_LEN);
10325 wpalMemoryCopy( pSendBuffer+usDataOffset,
10326 &halTsmStatsReqParams,
10327 sizeof(halTsmStatsReqParams));
10328
10329 pWDICtx->wdiReqStatusCB = pwdiTSMParams->wdiReqStatusCB;
10330 pWDICtx->pReqStatusUserData = pwdiTSMParams->pUserData;
10331
10332 /*-------------------------------------------------------------------------
10333 Send TSM Stats Request to HAL
10334 -------------------------------------------------------------------------*/
10335 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10336 wdiTSMRspCb, pEventData->pUserData,
10337 WDI_TSM_STATS_RESP);
10338}/*WDI_ProcessTSMStatsReq*/
10339
10340#endif
10341
10342
10343/**
Jeff Johnsone7245742012-09-05 17:12:55 -070010344 @brief Process Flush AC Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070010345 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010346
10347 @param pWDICtx: pointer to the WLAN DAL context
10348 pEventData: pointer to the event information structure
10349
Jeff Johnson295189b2012-06-20 16:38:30 -070010350 @see
10351 @return Result of the function call
10352*/
10353WDI_Status
10354WDI_ProcessFlushAcReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010355(
Jeff Johnson295189b2012-06-20 16:38:30 -070010356 WDI_ControlBlockType* pWDICtx,
10357 WDI_EventInfoType* pEventData
10358)
10359{
10360 WDI_FlushAcReqParamsType* pwdiFlushAcParams = NULL;
10361 WDI_FlushAcRspCb wdiFlushAcRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010362 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010363 wpt_uint16 usDataOffset = 0;
10364 wpt_uint16 usSendSize = 0;
10365 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10366
10367 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010368 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010369 -------------------------------------------------------------------------*/
10370 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10371 ( NULL == pEventData->pCBfnc ))
10372 {
10373 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010374 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010375 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010376 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010377 }
10378
10379 pwdiFlushAcParams = (WDI_FlushAcReqParamsType*)pEventData->pEventData;
10380 wdiFlushAcRspCb = (WDI_FlushAcRspCb)pEventData->pCBfnc;
10381 /*-----------------------------------------------------------------------
10382 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070010383 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070010384 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010385 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_FLUSH_AC_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010386 sizeof(pwdiFlushAcParams->wdiFlushAcInfo),
10387 &pSendBuffer, &usDataOffset, &usSendSize))||
10388 ( usSendSize < (usDataOffset + sizeof(pwdiFlushAcParams->wdiFlushAcInfo) )))
10389 {
10390 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010391 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070010392 pEventData, pwdiFlushAcParams, wdiFlushAcRspCb);
10393 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010394 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010395 }
10396
Jeff Johnsone7245742012-09-05 17:12:55 -070010397 wpalMemoryCopy( pSendBuffer+usDataOffset,
10398 &pwdiFlushAcParams->wdiFlushAcInfo,
10399 sizeof(pwdiFlushAcParams->wdiFlushAcInfo));
Jeff Johnson295189b2012-06-20 16:38:30 -070010400
10401 pWDICtx->wdiReqStatusCB = pwdiFlushAcParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010402 pWDICtx->pReqStatusUserData = pwdiFlushAcParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010403
10404 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010405 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010406 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010407 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10408 wdiFlushAcRspCb, pEventData->pUserData, WDI_FLUSH_AC_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010409}/*WDI_ProcessFlushAcReq*/
10410
10411/**
Jeff Johnsone7245742012-09-05 17:12:55 -070010412 @brief Process BT AMP event Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070010413 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010414
10415 @param pWDICtx: pointer to the WLAN DAL context
10416 pEventData: pointer to the event information structure
10417
Jeff Johnson295189b2012-06-20 16:38:30 -070010418 @see
10419 @return Result of the function call
10420*/
10421WDI_Status
10422WDI_ProcessBtAmpEventReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010423(
Jeff Johnson295189b2012-06-20 16:38:30 -070010424 WDI_ControlBlockType* pWDICtx,
10425 WDI_EventInfoType* pEventData
10426)
10427{
10428 WDI_BtAmpEventParamsType* pwdiBtAmpEventParams = NULL;
10429 WDI_BtAmpEventRspCb wdiBtAmpEventRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010430 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010431 wpt_uint16 usDataOffset = 0;
10432 wpt_uint16 usSendSize = 0;
10433
10434 tBtAmpEventMsg haltBtAmpEventMsg;
10435 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10436
10437 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010438 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010439 -------------------------------------------------------------------------*/
10440 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10441 ( NULL == pEventData->pCBfnc ))
10442 {
10443 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010444 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010445 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010446 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010447 }
10448
10449 pwdiBtAmpEventParams = (WDI_BtAmpEventParamsType*)pEventData->pEventData;
10450 wdiBtAmpEventRspCb = (WDI_BtAmpEventRspCb)pEventData->pCBfnc;
10451 /*-----------------------------------------------------------------------
10452 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070010453 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070010454 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010455 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_BTAMP_EVENT_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010456 sizeof(haltBtAmpEventMsg.btAmpEventParams),
10457 &pSendBuffer, &usDataOffset, &usSendSize))||
10458 ( usSendSize < (usDataOffset + sizeof(haltBtAmpEventMsg.btAmpEventParams) )))
10459 {
10460 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010461 "Unable to get send buffer in BT AMP event req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070010462 pEventData, pwdiBtAmpEventParams, wdiBtAmpEventRspCb);
10463 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010464 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010465 }
10466
Jeff Johnsone7245742012-09-05 17:12:55 -070010467 haltBtAmpEventMsg.btAmpEventParams.btAmpEventType =
Jeff Johnson295189b2012-06-20 16:38:30 -070010468 pwdiBtAmpEventParams->wdiBtAmpEventInfo.ucBtAmpEventType;
Jeff Johnsone7245742012-09-05 17:12:55 -070010469 wpalMemoryCopy( pSendBuffer+usDataOffset,
10470 &haltBtAmpEventMsg.btAmpEventParams,
10471 sizeof(haltBtAmpEventMsg.btAmpEventParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070010472
10473 pWDICtx->wdiReqStatusCB = pwdiBtAmpEventParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010474 pWDICtx->pReqStatusUserData = pwdiBtAmpEventParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010475
10476 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010477 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010478 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010479 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10480 wdiBtAmpEventRspCb, pEventData->pUserData, WDI_BTAMP_EVENT_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010481}/*WDI_ProcessBtAmpEventReq*/
10482
10483/**
10484 @brief Process Add STA self Request function (called when Main FSM
10485 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010486
10487 @param pWDICtx: pointer to the WLAN DAL context
10488 pEventData: pointer to the event information structure
10489
Jeff Johnson295189b2012-06-20 16:38:30 -070010490 @see
10491 @return Result of the function call
10492*/
10493WDI_Status
10494WDI_ProcessAddSTASelfReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010495(
Jeff Johnson295189b2012-06-20 16:38:30 -070010496 WDI_ControlBlockType* pWDICtx,
10497 WDI_EventInfoType* pEventData
10498)
10499{
10500 WDI_AddSTASelfReqParamsType* pwdiAddSTASelfReqParams;
10501 WDI_AddSTASelfParamsRspCb wdiAddSTASelfReqRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010502 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010503 wpt_uint16 usDataOffset = 0;
10504 wpt_uint16 usSendSize = 0;
Kiran Kumar Lokere0ad5cd32013-06-25 11:26:22 -070010505 tAddStaSelfParams_V1 halAddSTASelfParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070010506 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10507
10508 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010509 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010510 -------------------------------------------------------------------------*/
10511 if (( NULL == pEventData ) ||
10512 ( NULL == pEventData->pEventData) ||
10513 ( NULL == pEventData->pCBfnc))
10514 {
10515 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010516 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010517 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010518 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010519 }
10520
Jeff Johnsone7245742012-09-05 17:12:55 -070010521 pwdiAddSTASelfReqParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070010522 (WDI_AddSTASelfReqParamsType*)pEventData->pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070010523 wdiAddSTASelfReqRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070010524 (WDI_AddSTASelfParamsRspCb)pEventData->pCBfnc;
10525 /*-----------------------------------------------------------------------
10526 Get message buffer
10527 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010528 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
10529 WDI_ADD_STA_SELF_REQ,
Kiran Kumar Lokere0ad5cd32013-06-25 11:26:22 -070010530 sizeof(tAddStaSelfParams_V1),
Jeff Johnson295189b2012-06-20 16:38:30 -070010531 &pSendBuffer, &usDataOffset, &usSendSize))||
Kiran Kumar Lokere0ad5cd32013-06-25 11:26:22 -070010532 ( usSendSize < (usDataOffset + sizeof(tAddStaSelfParams_V1) )))
Jeff Johnson295189b2012-06-20 16:38:30 -070010533 {
10534 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010535 "Unable to get send buffer in ADD STA SELF REQ %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070010536 pEventData, pwdiAddSTASelfReqParams, wdiAddSTASelfReqRspCb);
10537 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010538 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010539 }
10540
10541 /* Cache the request for response processing */
Jeff Johnsone7245742012-09-05 17:12:55 -070010542 wpalMemoryCopy(&pWDICtx->wdiCacheAddSTASelfReq, pwdiAddSTASelfReqParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070010543 sizeof(pWDICtx->wdiCacheAddSTASelfReq));
10544
Jeff Johnsone7245742012-09-05 17:12:55 -070010545 wpalMemoryCopy(halAddSTASelfParams.selfMacAddr,
Kiran Kumar Lokere0ad5cd32013-06-25 11:26:22 -070010546 pwdiAddSTASelfReqParams->wdiAddSTASelfInfo.selfMacAddr, 6);
10547 halAddSTASelfParams.iface_persona = HAL_IFACE_UNKNOWN;
10548 if (pwdiAddSTASelfReqParams->wdiAddSTASelfInfo.currDeviceMode == VOS_STA_MODE)
10549 {
10550 halAddSTASelfParams.iface_persona = HAL_IFACE_STA_MODE;
10551 }
10552 else if ((pwdiAddSTASelfReqParams->wdiAddSTASelfInfo.currDeviceMode ==
10553 VOS_P2P_CLIENT_MODE) ||
10554 (pwdiAddSTASelfReqParams->wdiAddSTASelfInfo.currDeviceMode ==
10555 VOS_P2P_DEVICE))
10556 {
10557 halAddSTASelfParams.iface_persona = HAL_IFACE_P2P_MODE;
10558 }
Jeff Johnsone7245742012-09-05 17:12:55 -070010559 wpalMemoryCopy( pSendBuffer+usDataOffset, &halAddSTASelfParams,
Kiran Kumar Lokere0ad5cd32013-06-25 11:26:22 -070010560 sizeof(tAddStaSelfParams_V1));
Jeff Johnson295189b2012-06-20 16:38:30 -070010561
10562 pWDICtx->wdiReqStatusCB = pwdiAddSTASelfReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010563 pWDICtx->pReqStatusUserData = pwdiAddSTASelfReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010564
10565 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010566 Send Update Probe Resp Template Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010567 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010568 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10569 wdiAddSTASelfReqRspCb, pEventData->pUserData,
10570 WDI_ADD_STA_SELF_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010571}/*WDI_ProcessAddSTASelfReq*/
10572
10573
10574
10575/**
Jeff Johnsone7245742012-09-05 17:12:55 -070010576 @brief Process Del Sta Self Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070010577 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010578
10579 @param pWDICtx: pointer to the WLAN DAL context
10580 pEventData: pointer to the event information structure
10581
Jeff Johnson295189b2012-06-20 16:38:30 -070010582 @see
10583 @return Result of the function call
10584*/
10585WDI_Status
10586WDI_ProcessDelSTASelfReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010587(
Jeff Johnson295189b2012-06-20 16:38:30 -070010588 WDI_ControlBlockType* pWDICtx,
10589 WDI_EventInfoType* pEventData
10590)
10591{
10592 WDI_DelSTASelfReqParamsType* pwdiDelStaSelfReqParams;
10593 WDI_DelSTASelfRspCb wdiDelStaSelfRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010594 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010595 wpt_uint16 usDataOffset = 0;
10596 wpt_uint16 usSendSize = 0;
10597 tDelStaSelfParams halSetDelSelfSTAParams;
10598 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10599
10600 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010601 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010602 -------------------------------------------------------------------------*/
10603 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10604 ( NULL == pEventData->pCBfnc ))
10605 {
10606 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010607 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010608 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010609 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010610 }
10611
Jeff Johnsone7245742012-09-05 17:12:55 -070010612 pwdiDelStaSelfReqParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070010613 (WDI_DelSTASelfReqParamsType*)pEventData->pEventData;
10614 wdiDelStaSelfRspCb = (WDI_DelSTASelfRspCb)pEventData->pCBfnc;
10615
10616 /*-----------------------------------------------------------------------
10617 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070010618 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070010619 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010620 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_DEL_STA_SELF_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010621 sizeof(pwdiDelStaSelfReqParams->wdiDelStaSelfInfo),
10622 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070010623 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070010624 (usDataOffset + sizeof(pwdiDelStaSelfReqParams->wdiDelStaSelfInfo) )))
10625 {
10626 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010627 "Unable to get send buffer in Del Sta Self req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070010628 pEventData, pwdiDelStaSelfReqParams, wdiDelStaSelfRspCb);
10629 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010630 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010631 }
10632
Jeff Johnsone7245742012-09-05 17:12:55 -070010633 wpalMemoryCopy(halSetDelSelfSTAParams.selfMacAddr,
Jeff Johnson295189b2012-06-20 16:38:30 -070010634 pwdiDelStaSelfReqParams->wdiDelStaSelfInfo.selfMacAddr, 6) ;
10635
Jeff Johnsone7245742012-09-05 17:12:55 -070010636 wpalMemoryCopy( pSendBuffer+usDataOffset, &halSetDelSelfSTAParams,
10637 sizeof(tDelStaSelfParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070010638
10639 pWDICtx->wdiReqStatusCB = pwdiDelStaSelfReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010640 pWDICtx->pReqStatusUserData = pwdiDelStaSelfReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010641
10642 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010643 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010644 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010645 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10646 wdiDelStaSelfRspCb, pEventData->pUserData,
Jeff Johnson295189b2012-06-20 16:38:30 -070010647 WDI_DEL_STA_SELF_RESP);
10648
10649}
10650
Jeff Johnsone7245742012-09-05 17:12:55 -070010651#ifdef FEATURE_OEM_DATA_SUPPORT
10652/**
10653 @brief Process Start Oem Data Request function (called when Main
10654 FSM allows it)
10655
10656 @param pWDICtx: pointer to the WLAN DAL context
10657 pEventData: pointer to the event information structure
10658
10659 @see
10660 @return Result of the function call
10661*/
10662WDI_Status
10663WDI_ProcessStartOemDataReq
10664(
10665 WDI_ControlBlockType* pWDICtx,
10666 WDI_EventInfoType* pEventData
10667)
10668{
10669 WDI_oemDataReqParamsType* pwdiOemDataReqParams = NULL;
10670 WDI_oemDataRspCb wdiOemDataRspCb;
10671 wpt_uint8* pSendBuffer = NULL;
10672 wpt_uint16 usDataOffset = 0;
10673 wpt_uint16 usSendSize = 0;
10674 wpt_uint16 reqLen;
10675 tStartOemDataReqParams* halStartOemDataReqParams;
10676
10677 /*-------------------------------------------------------------------------
10678 Sanity check
10679 -------------------------------------------------------------------------*/
10680 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10681 ( NULL == pEventData->pCBfnc ))
10682 {
10683 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010684 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070010685 WDI_ASSERT(0);
10686 return WDI_STATUS_E_FAILURE;
10687 }
10688
10689 pwdiOemDataReqParams = (WDI_oemDataReqParamsType*)pEventData->pEventData;
10690 wdiOemDataRspCb = (WDI_oemDataRspCb)pEventData->pCBfnc;
10691
10692 /*-----------------------------------------------------------------------
10693 Get message buffer
10694 -----------------------------------------------------------------------*/
10695
10696 reqLen = sizeof(tStartOemDataReqParams);
10697
10698 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
10699 WDI_START_OEM_DATA_REQ, reqLen,
10700 &pSendBuffer, &usDataOffset, &usSendSize))||
10701 (usSendSize < (usDataOffset + reqLen)))
10702 {
10703 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010704 "Unable to get send buffer in Start Oem Data req %p %p %p",
Jeff Johnsone7245742012-09-05 17:12:55 -070010705 pEventData, pwdiOemDataReqParams, wdiOemDataRspCb);
10706 WDI_ASSERT(0);
10707 return WDI_STATUS_E_FAILURE;
10708 }
10709
10710 //copying WDI OEM DATA REQ PARAMS to shared memory
10711 halStartOemDataReqParams = (tStartOemDataReqParams *)(pSendBuffer + usDataOffset );
10712
10713 wpalMemoryCopy(&halStartOemDataReqParams->selfMacAddr, &pwdiOemDataReqParams->wdiOemDataReqInfo.selfMacAddr, sizeof(wpt_macAddr));
10714 wpalMemoryCopy(&halStartOemDataReqParams->oemDataReq, &pwdiOemDataReqParams->wdiOemDataReqInfo.oemDataReq, OEM_DATA_REQ_SIZE);
10715
10716 pWDICtx->wdiReqStatusCB = pwdiOemDataReqParams->wdiReqStatusCB;
10717 pWDICtx->pReqStatusUserData = pwdiOemDataReqParams->pUserData;
10718
10719 /*-------------------------------------------------------------------------
10720 Send Start Request to HAL
10721 -------------------------------------------------------------------------*/
10722 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10723 wdiOemDataRspCb, pEventData->pUserData,
10724 WDI_START_OEM_DATA_RESP);
10725}/*WDI_ProcessStartOemDataReq*/
10726#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070010727
10728/**
Jeff Johnsone7245742012-09-05 17:12:55 -070010729 @brief Process Host Resume Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070010730 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010731
10732 @param pWDICtx: pointer to the WLAN DAL context
10733 pEventData: pointer to the event information structure
10734
Jeff Johnson295189b2012-06-20 16:38:30 -070010735 @see
10736 @return Result of the function call
10737*/
10738WDI_Status
10739WDI_ProcessHostResumeReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010740(
Jeff Johnson295189b2012-06-20 16:38:30 -070010741 WDI_ControlBlockType* pWDICtx,
10742 WDI_EventInfoType* pEventData
10743)
10744{
10745 WDI_ResumeParamsType* pwdiHostResumeParams = NULL;
10746 WDI_HostResumeEventRspCb wdiHostResumeRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010747 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010748 wpt_uint16 usDataOffset = 0;
10749 wpt_uint16 usSendSize = 0;
10750 tHalWlanHostResumeReqParam halResumeReqParams;
10751
10752 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10753
10754 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010755 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010756 -------------------------------------------------------------------------*/
10757 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10758 ( NULL == pEventData->pCBfnc ))
10759 {
10760 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010761 "%s: Invalid parameters ",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010762 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010763 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010764 }
10765
10766 pwdiHostResumeParams = (WDI_ResumeParamsType*)pEventData->pEventData;
10767 wdiHostResumeRspCb = (WDI_HostResumeEventRspCb)pEventData->pCBfnc;
10768
10769 /*-----------------------------------------------------------------------
10770 Get message buffer
10771 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010772 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
Jeff Johnson295189b2012-06-20 16:38:30 -070010773 WDI_HOST_RESUME_REQ, sizeof(halResumeReqParams),
10774 &pSendBuffer, &usDataOffset, &usSendSize))||
10775 (usSendSize < (usDataOffset + sizeof(halResumeReqParams))))
10776 {
10777 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010778 "Unable to get send buffer in Start Oem Data req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070010779 pEventData, pwdiHostResumeParams, wdiHostResumeRspCb);
10780 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010781 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010782 }
10783
Jeff Johnsone7245742012-09-05 17:12:55 -070010784 halResumeReqParams.configuredMcstBcstFilterSetting =
Jeff Johnson295189b2012-06-20 16:38:30 -070010785 pwdiHostResumeParams->wdiResumeParams.ucConfiguredMcstBcstFilterSetting;
Jeff Johnsone7245742012-09-05 17:12:55 -070010786
10787 wpalMemoryCopy( pSendBuffer+usDataOffset,
10788 &halResumeReqParams,
10789 sizeof(halResumeReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070010790
10791 pWDICtx->wdiReqStatusCB = pwdiHostResumeParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010792 pWDICtx->pReqStatusUserData = pwdiHostResumeParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010793
10794 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010795 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010796 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010797 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10798 wdiHostResumeRspCb, pEventData->pUserData,
10799 WDI_HOST_RESUME_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010800}/*WDI_ProcessHostResumeReq*/
10801
10802/**
Jeff Johnsone7245742012-09-05 17:12:55 -070010803 @brief Process set Tx Per Tracking Parameters Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070010804 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010805
10806 @param pWDICtx: pointer to the WLAN DAL context
10807 pEventData: pointer to the event information structure
10808
Jeff Johnson295189b2012-06-20 16:38:30 -070010809 @see
10810 @return Result of the function call
10811*/
10812WDI_Status
10813WDI_ProcessSetTxPerTrackingReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010814(
Jeff Johnson295189b2012-06-20 16:38:30 -070010815 WDI_ControlBlockType* pWDICtx,
10816 WDI_EventInfoType* pEventData
10817)
10818{
10819 WDI_SetTxPerTrackingReqParamsType* pwdiSetTxPerTrackingReqParams = NULL;
10820 WDI_SetTxPerTrackingRspCb pwdiSetTxPerTrackingRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070010821 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010822 wpt_uint16 usDataOffset = 0;
10823 wpt_uint16 usSendSize = 0;
10824 tHalTxPerTrackingReqParam halTxPerTrackingReqParam;
10825 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10826
10827 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010828 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010829 -------------------------------------------------------------------------*/
10830 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10831 ( NULL == pEventData->pCBfnc ))
10832 {
10833 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010834 "%s: Invalid parameters ",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010835 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010836 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010837 }
10838
10839 pwdiSetTxPerTrackingReqParams = (WDI_SetTxPerTrackingReqParamsType*)pEventData->pEventData;
10840 pwdiSetTxPerTrackingRspCb = (WDI_SetTxPerTrackingRspCb)pEventData->pCBfnc;
Jeff Johnsone7245742012-09-05 17:12:55 -070010841
Jeff Johnson295189b2012-06-20 16:38:30 -070010842 /*-----------------------------------------------------------------------
10843 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070010844 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070010845 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010846 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_TX_PER_TRACKING_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010847 sizeof(halTxPerTrackingReqParam),
10848 &pSendBuffer, &usDataOffset, &usSendSize))||
10849 ( usSendSize < (usDataOffset + sizeof(halTxPerTrackingReqParam) )))
10850 {
10851 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010852 "Unable to get send buffer in set tx per tracking req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070010853 pEventData, pwdiSetTxPerTrackingReqParams, pwdiSetTxPerTrackingRspCb);
10854 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010855 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010856 }
Jeff Johnsone7245742012-09-05 17:12:55 -070010857
Jeff Johnson295189b2012-06-20 16:38:30 -070010858 halTxPerTrackingReqParam.ucTxPerTrackingEnable = pwdiSetTxPerTrackingReqParams->wdiTxPerTrackingParam.ucTxPerTrackingEnable;
10859 halTxPerTrackingReqParam.ucTxPerTrackingPeriod = pwdiSetTxPerTrackingReqParams->wdiTxPerTrackingParam.ucTxPerTrackingPeriod;
10860 halTxPerTrackingReqParam.ucTxPerTrackingRatio = pwdiSetTxPerTrackingReqParams->wdiTxPerTrackingParam.ucTxPerTrackingRatio;
10861 halTxPerTrackingReqParam.uTxPerTrackingWatermark = pwdiSetTxPerTrackingReqParams->wdiTxPerTrackingParam.uTxPerTrackingWatermark;
Jeff Johnsone7245742012-09-05 17:12:55 -070010862
10863 wpalMemoryCopy( pSendBuffer+usDataOffset,
10864 &halTxPerTrackingReqParam,
10865 sizeof(halTxPerTrackingReqParam));
Jeff Johnson295189b2012-06-20 16:38:30 -070010866
10867 pWDICtx->wdiReqStatusCB = pwdiSetTxPerTrackingReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010868 pWDICtx->pReqStatusUserData = pwdiSetTxPerTrackingReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010869
10870 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010871 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010872 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010873 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10874 pwdiSetTxPerTrackingRspCb, pEventData->pUserData, WDI_SET_TX_PER_TRACKING_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010875}/*WDI_ProcessSetTxPerTrackingReq*/
10876
10877/*=========================================================================
10878 Indications
10879=========================================================================*/
10880
10881/**
10882 @brief Process Suspend Indications function (called when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010883
10884 @param pWDICtx: pointer to the WLAN DAL context
10885 pEventData: pointer to the event information structure
10886
Jeff Johnson295189b2012-06-20 16:38:30 -070010887 @see
10888 @return Result of the function call
10889*/
10890WDI_Status
10891WDI_ProcessHostSuspendInd
Jeff Johnsone7245742012-09-05 17:12:55 -070010892(
Jeff Johnson295189b2012-06-20 16:38:30 -070010893 WDI_ControlBlockType* pWDICtx,
10894 WDI_EventInfoType* pEventData
10895)
10896{
10897 WDI_SuspendParamsType *pSuspendIndParams;
Jeff Johnsone7245742012-09-05 17:12:55 -070010898 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010899 wpt_uint16 usDataOffset = 0;
10900 wpt_uint16 usSendSize = 0;
10901 WDI_Status wdiStatus;
10902 tHalWlanHostSuspendIndParam halWlanSuspendIndparams;
10903 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10904
10905 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010906 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010907 -------------------------------------------------------------------------*/
10908 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
10909 {
10910 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010911 "%s: Invalid parameters in Suspend ind",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010912 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010913 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010914 }
10915
10916 pSuspendIndParams = (WDI_SuspendParamsType *)pEventData->pEventData;
10917
10918 /*-----------------------------------------------------------------------
10919 Get message buffer
10920 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010921 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
10922 WDI_HOST_SUSPEND_IND,
Jeff Johnson295189b2012-06-20 16:38:30 -070010923 sizeof(halWlanSuspendIndparams),
10924 &pSendBuffer, &usDataOffset, &usSendSize))||
10925 (usSendSize < (usDataOffset + sizeof(halWlanSuspendIndparams))))
10926 {
10927 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10928 "Unable to get send buffer in Suspend Ind ");
10929 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010930 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010931 }
10932
10933 halWlanSuspendIndparams.configuredMcstBcstFilterSetting =
10934 pSuspendIndParams->wdiSuspendParams.ucConfiguredMcstBcstFilterSetting;
10935
Jeff Johnsone7245742012-09-05 17:12:55 -070010936 halWlanSuspendIndparams.activeSessionCount =
Hoonki Lee9af07cf2013-04-24 01:21:58 -070010937 WDI_GetActiveSessionsCount(pWDICtx, NULL, eWLAN_PAL_TRUE);
Jeff Johnson295189b2012-06-20 16:38:30 -070010938
Jeff Johnsone7245742012-09-05 17:12:55 -070010939 wpalMemoryCopy( pSendBuffer+usDataOffset, &halWlanSuspendIndparams,
10940 sizeof(tHalWlanHostSuspendIndParam));
Jeff Johnson295189b2012-06-20 16:38:30 -070010941
10942 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010943 Send Suspend Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010944 -------------------------------------------------------------------------*/
10945 pWDICtx->wdiReqStatusCB = pSuspendIndParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010946 pWDICtx->pReqStatusUserData = pSuspendIndParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010947
Jeff Johnsone7245742012-09-05 17:12:55 -070010948 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070010949 return ( wdiStatus != WDI_STATUS_SUCCESS )?wdiStatus:WDI_STATUS_SUCCESS_SYNC;
10950}/*WDI_ProcessHostSuspendInd*/
10951
Madan Mohan Koyyalamudi01cba042013-01-10 21:56:05 -080010952
10953
10954/**
10955 @brief Process Traffic Stats Indications function (called when Main FSM allows it)
10956
10957 @param pWDICtx: pointer to the WLAN DAL context
10958 pEventData: pointer to the event information structure
10959
10960 @see
10961 @return Result of the function call
10962*/
10963WDI_Status
10964WDI_ProcessTrafficStatsInd
10965(
10966 WDI_ControlBlockType* pWDICtx,
10967 WDI_EventInfoType* pEventData
10968)
10969{
10970 WDI_TrafficStatsIndType* pTrafficStatsIndParams;
10971 wpt_uint8* pSendBuffer = NULL;
10972 wpt_uint16 usDataOffset = 0;
10973 wpt_uint16 usSendSize = 0;
10974 WDI_Status wdiStatus;
10975 tStatsClassBIndParams* pStatsClassBIndParams;
10976 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10977
10978 /*-------------------------------------------------------------------------
10979 Sanity check
10980 -------------------------------------------------------------------------*/
10981 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
10982 {
10983 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10984 "%s: Invalid parameters in Traffic Stats ind",__func__);
10985 WDI_ASSERT(0);
10986 return WDI_STATUS_E_FAILURE;
10987 }
10988
10989 pTrafficStatsIndParams = (WDI_TrafficStatsIndType *)pEventData->pEventData;
10990
10991 if(pTrafficStatsIndParams->length != sizeof(tStaStatsClassB)*(HAL_NUM_STA))
10992 {
10993 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10994 "%s: Invalid parameters in Traffic Stats ind",__func__);
10995 WDI_ASSERT(0);
10996 return WDI_STATUS_E_FAILURE;
10997 }
10998
10999 /*-----------------------------------------------------------------------
11000 Get message buffer
11001 -----------------------------------------------------------------------*/
11002 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
11003 WDI_TRAFFIC_STATS_IND,
11004 sizeof(tStatsClassBIndParams),
11005 &pSendBuffer, &usDataOffset, &usSendSize))||
11006 (usSendSize < (usDataOffset + sizeof(tStatsClassBIndParams))))
11007 {
11008 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
11009 "Unable to get send buffer in Traffic Stats Ind ");
11010 WDI_ASSERT(0);
11011 return WDI_STATUS_E_FAILURE;
11012 }
11013
11014 pStatsClassBIndParams = (tStatsClassBIndParams*)(pSendBuffer+usDataOffset);
11015
11016 pStatsClassBIndParams->duration = pTrafficStatsIndParams->duration;
11017
11018 wpalMemoryCopy(pStatsClassBIndParams->staStatsClassB,
11019 pTrafficStatsIndParams->pTrafficStats,
11020 pTrafficStatsIndParams->length);
11021
11022 /*-------------------------------------------------------------------------
11023 Send Suspend Request to HAL
11024 -------------------------------------------------------------------------*/
11025 pWDICtx->wdiReqStatusCB = pTrafficStatsIndParams->wdiReqStatusCB;
11026 pWDICtx->pReqStatusUserData = pTrafficStatsIndParams->pUserData;
11027
11028 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
11029 return ( wdiStatus != WDI_STATUS_SUCCESS )?wdiStatus:WDI_STATUS_SUCCESS_SYNC;
11030}/*WDI_ProcessTrafficStatsInd*/
11031
Chet Lanctot186b5732013-03-18 10:26:30 -070011032#ifdef WLAN_FEATURE_11W
11033/**
11034 @brief Process Exclude Unencrypted Indications function (called
11035 when Main FSM allows it)
11036
11037 @param pWDICtx: pointer to the WLAN DAL context
11038 pEventData: pointer to the event information structure
11039
11040 @see
11041 @return Result of the function call
11042*/
11043WDI_Status
11044WDI_ProcessExcludeUnencryptInd
11045(
11046 WDI_ControlBlockType* pWDICtx,
11047 WDI_EventInfoType* pEventData
11048)
11049{
11050 WDI_ExcludeUnencryptIndType* pWDIExcUnencIndParams;
11051 wpt_uint8* pSendBuffer = NULL;
11052 wpt_uint16 usDataOffset = 0;
11053 wpt_uint16 usSendSize = 0;
11054 WDI_Status wdiStatus;
11055 tHalWlanExcludeUnEncryptedIndParam* pHalExcUnencIndParams;
11056 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11057
11058 /*-------------------------------------------------------------------------
11059 Sanity check
11060 -------------------------------------------------------------------------*/
11061 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
11062 {
11063 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11064 "%s: Invalid parameters in Exclude Unencrypted ind",__func__);
11065 WDI_ASSERT(0);
11066 return WDI_STATUS_E_FAILURE;
11067 }
11068
11069 pWDIExcUnencIndParams = (WDI_ExcludeUnencryptIndType *)pEventData->pEventData;
11070
11071 /*-----------------------------------------------------------------------
11072 Get message buffer
11073 -----------------------------------------------------------------------*/
11074 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
11075 WDI_EXCLUDE_UNENCRYPTED_IND,
11076 sizeof(tHalWlanExcludeUnEncryptedIndParam),
11077 &pSendBuffer, &usDataOffset, &usSendSize))||
11078 (usSendSize < (usDataOffset + sizeof(tHalWlanExcludeUnEncryptedIndParam))))
11079 {
11080 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
11081 "Unable to get send buffer in Exclude Unencrypted Ind ");
11082 WDI_ASSERT(0);
11083 return WDI_STATUS_E_FAILURE;
11084 }
11085
11086 pHalExcUnencIndParams = (tHalWlanExcludeUnEncryptedIndParam*)(pSendBuffer+usDataOffset);
11087
11088 pHalExcUnencIndParams->bDot11ExcludeUnencrypted = pWDIExcUnencIndParams->bExcludeUnencrypt;
11089
11090 wpalMemoryCopy(pHalExcUnencIndParams->bssId,
11091 pWDIExcUnencIndParams->bssid, WDI_MAC_ADDR_LEN);
11092
11093 /*-------------------------------------------------------------------------
11094 Send Suspend Request to HAL
11095 -------------------------------------------------------------------------*/
11096 pWDICtx->wdiReqStatusCB = pWDIExcUnencIndParams->wdiReqStatusCB;
11097 pWDICtx->pReqStatusUserData = pWDIExcUnencIndParams->pUserData;
11098
11099 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
11100 return ( wdiStatus != WDI_STATUS_SUCCESS )?wdiStatus:WDI_STATUS_SUCCESS_SYNC;
11101}/*WDI_ProcessExcludeUnencryptInd*/
11102#endif
11103
Yue Mab9c86f42013-08-14 15:59:08 -070011104/**
11105 @brief Process Add Periodic Tx Pattern Indication function (called when
11106 Main FSM allows it)
11107
11108 @param pWDICtx: pointer to the WLAN DAL context
11109 pEventData: pointer to the event information structure
11110
11111 @see
11112 @return Result of the function call
11113*/
11114WDI_Status
11115WDI_ProcessAddPeriodicTxPtrnInd
11116(
11117 WDI_ControlBlockType* pWDICtx,
11118 WDI_EventInfoType* pEventData
11119)
11120{
11121 WDI_AddPeriodicTxPtrnParamsType *pAddPeriodicTxPtrnParams;
11122 wpt_uint8* pSendBuffer = NULL;
11123 wpt_uint16 usDataOffset = 0;
11124 wpt_uint16 usSendSize = 0;
11125 WDI_Status wdiStatus;
11126 tHalAddPeriodicTxPtrn *halAddPeriodicTxPtrn;
11127 wpt_uint8 selfStaIdx = 0;
11128
11129 /*-------------------------------------------------------------------------
11130 Sanity check
11131 -------------------------------------------------------------------------*/
11132 if ((NULL == pEventData) || (NULL == pEventData->pEventData))
11133 {
11134 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11135 "%s: Invalid parameters in AddPeriodicTxPtrnInd!", __func__);
11136 WDI_ASSERT(0);
11137 return WDI_STATUS_E_FAILURE;
11138 }
11139
11140 pAddPeriodicTxPtrnParams =
11141 (WDI_AddPeriodicTxPtrnParamsType *)pEventData->pEventData;
11142
11143 /*------------------------------------------------------------------------
11144 Get message buffer
11145 ------------------------------------------------------------------------*/
11146 if ((WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(pWDICtx,
11147 WDI_ADD_PERIODIC_TX_PATTERN_IND, sizeof(tHalAddPeriodicTxPtrn),
11148 &pSendBuffer, &usDataOffset, &usSendSize))||
11149 (usSendSize < (usDataOffset + sizeof(tHalAddPeriodicTxPtrn))))
11150 {
11151 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11152 "%s: Unable to get send buffer in AddPeriodicTxPtrnInd!",
11153 __func__);
11154 WDI_ASSERT(0);
11155 return WDI_STATUS_E_FAILURE;
11156 }
11157
11158 halAddPeriodicTxPtrn = (tHalAddPeriodicTxPtrn *)(pSendBuffer + usDataOffset);
11159
11160 if (WDI_STATUS_SUCCESS != WDI_STATableFindStaidByAddr(pWDICtx,
11161 pAddPeriodicTxPtrnParams->wdiAddPeriodicTxPtrnParams.macAddr,
11162 &selfStaIdx))
11163 {
11164 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
11165 "%s: Failed to get selfStaIdx!", __func__);
Wilson Yang00256342013-10-10 23:13:38 -070011166 wpalMemoryFree(pSendBuffer);
Yue Mab9c86f42013-08-14 15:59:08 -070011167
11168 return WDI_STATUS_E_FAILURE;
11169 }
11170
11171 halAddPeriodicTxPtrn->selfStaIdx = selfStaIdx;
11172 halAddPeriodicTxPtrn->ucPtrnId =
11173 pAddPeriodicTxPtrnParams->wdiAddPeriodicTxPtrnParams.ucPtrnId;
11174 halAddPeriodicTxPtrn->usPtrnSize =
11175 pAddPeriodicTxPtrnParams->wdiAddPeriodicTxPtrnParams.ucPtrnSize;
11176 halAddPeriodicTxPtrn->uPtrnIntervalMs =
11177 pAddPeriodicTxPtrnParams->wdiAddPeriodicTxPtrnParams.usPtrnIntervalMs;
11178
11179 wpalMemoryCopy(halAddPeriodicTxPtrn->ucPattern,
11180 pAddPeriodicTxPtrnParams->wdiAddPeriodicTxPtrnParams.ucPattern,
11181 pAddPeriodicTxPtrnParams->wdiAddPeriodicTxPtrnParams.ucPtrnSize);
11182
11183 /*-------------------------------------------------------------------------
11184 Send Indication to HAL
11185 -------------------------------------------------------------------------*/
11186 pWDICtx->wdiReqStatusCB = pAddPeriodicTxPtrnParams->wdiReqStatusCB;
11187 pWDICtx->pReqStatusUserData = pAddPeriodicTxPtrnParams->pUserData;
11188
11189 wdiStatus = WDI_SendIndication(pWDICtx, pSendBuffer, usSendSize);
11190
11191 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
11192 "%s: Sent WLAN_HAL_ADD_PERIODIC_TX_PTRN_IND to HAL.", __func__);
11193
11194 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus : WDI_STATUS_SUCCESS_SYNC;
11195} /* WDI_ProcessAddPeriodicTxPtrnInd */
11196
11197/**
11198 @brief Process Delete Periodic Tx Pattern Indication function (called when
11199 Main FSM allows it)
11200
11201 @param pWDICtx: pointer to the WLAN DAL context
11202 pEventData: pointer to the event information structure
11203
11204 @see
11205 @return Result of the function call
11206*/
11207WDI_Status
11208WDI_ProcessDelPeriodicTxPtrnInd
11209(
11210 WDI_ControlBlockType* pWDICtx,
11211 WDI_EventInfoType* pEventData
11212)
11213{
11214 WDI_DelPeriodicTxPtrnParamsType *pDelPeriodicTxPtrnParams;
11215 wpt_uint8* pSendBuffer = NULL;
11216 wpt_uint16 usDataOffset = 0;
11217 wpt_uint16 usSendSize = 0;
11218 WDI_Status wdiStatus;
11219 tHalDelPeriodicTxPtrn *halDelPeriodicTxPtrn;
11220 wpt_uint8 selfStaIdx = 0;
11221
11222 /*-------------------------------------------------------------------------
11223 Sanity check
11224 -------------------------------------------------------------------------*/
11225 if ((NULL == pEventData) || (NULL == pEventData->pEventData))
11226 {
11227 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11228 "%s: Invalid parameters in DelPeriodicTxPtrnInd!", __func__);
11229 WDI_ASSERT(0);
11230 return WDI_STATUS_E_FAILURE;
11231 }
11232
11233 pDelPeriodicTxPtrnParams =
11234 (WDI_DelPeriodicTxPtrnParamsType *)pEventData->pEventData;
11235
11236 /*------------------------------------------------------------------------
11237 Get message buffer
11238 ------------------------------------------------------------------------*/
11239 if ((WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(pWDICtx,
11240 WDI_DEL_PERIODIC_TX_PATTERN_IND, sizeof(tHalDelPeriodicTxPtrn),
11241 &pSendBuffer, &usDataOffset, &usSendSize))||
11242 (usSendSize < (usDataOffset + sizeof(tHalDelPeriodicTxPtrn))))
11243 {
11244 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11245 "%s: Unable to get send buffer in DelPeriodicTxPtrnInd!",
11246 __func__);
11247 WDI_ASSERT(0);
11248 return WDI_STATUS_E_FAILURE;
11249 }
11250
11251 halDelPeriodicTxPtrn = (tHalDelPeriodicTxPtrn *)(pSendBuffer + usDataOffset);
11252
11253 if (WDI_STATUS_SUCCESS != WDI_STATableFindStaidByAddr(pWDICtx,
11254 pDelPeriodicTxPtrnParams->wdiDelPeriodicTxPtrnParams.macAddr,
11255 &selfStaIdx))
11256 {
11257 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
11258 "%s: Failed to get selfStaIdx!", __func__);
Wilson Yang00256342013-10-10 23:13:38 -070011259 wpalMemoryFree(pSendBuffer);
Yue Mab9c86f42013-08-14 15:59:08 -070011260
11261 return WDI_STATUS_E_FAILURE;
11262 }
11263
11264 halDelPeriodicTxPtrn->selfStaIdx = selfStaIdx;
11265 halDelPeriodicTxPtrn->uPatternIdBitmap =
11266 pDelPeriodicTxPtrnParams->wdiDelPeriodicTxPtrnParams.ucPatternIdBitmap;
11267
11268 /*-------------------------------------------------------------------------
11269 Send Indication to HAL
11270 -------------------------------------------------------------------------*/
11271 pWDICtx->wdiReqStatusCB = pDelPeriodicTxPtrnParams->wdiReqStatusCB;
11272 pWDICtx->pReqStatusUserData = pDelPeriodicTxPtrnParams->pUserData;
11273
11274 wdiStatus = WDI_SendIndication(pWDICtx, pSendBuffer, usSendSize);
11275
11276 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
11277 "%s: Sent WLAN_HAL_DEL_PERIODIC_TX_PTRN_IND to HAL.", __func__);
11278
11279 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus : WDI_STATUS_SUCCESS_SYNC;
11280} /* WDI_ProcessDelPeriodicTxPtrnInd */
11281
Jeff Johnson295189b2012-06-20 16:38:30 -070011282/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070011283 MISC CONTROL PROCESSING REQUEST API
Jeff Johnson295189b2012-06-20 16:38:30 -070011284==========================================================================*/
11285/**
Jeff Johnsone7245742012-09-05 17:12:55 -070011286 @brief Process Channel Switch Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070011287 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011288
11289 @param pWDICtx: pointer to the WLAN DAL context
11290 pEventData: pointer to the event information structure
11291
Jeff Johnson295189b2012-06-20 16:38:30 -070011292 @see
11293 @return Result of the function call
11294*/
11295WDI_Status
11296WDI_ProcessChannelSwitchReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011297(
Jeff Johnson295189b2012-06-20 16:38:30 -070011298 WDI_ControlBlockType* pWDICtx,
11299 WDI_EventInfoType* pEventData
11300)
11301{
11302 WDI_SwitchChReqParamsType* pwdiSwitchChParams;
11303 WDI_SwitchChRspCb wdiSwitchChRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011304 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011305 wpt_uint16 usDataOffset = 0;
11306 wpt_uint16 usSendSize = 0;
11307 tSwitchChannelReqMsg halSwitchChannelReq = {{0}};
11308 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11309
11310 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011311 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011312 -------------------------------------------------------------------------*/
11313 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
11314 ( NULL == pEventData->pCBfnc ))
11315 {
11316 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011317 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011318 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011319 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011320 }
11321
11322 pwdiSwitchChParams = (WDI_SwitchChReqParamsType*)pEventData->pEventData;
11323 wdiSwitchChRspCb = (WDI_SwitchChRspCb)pEventData->pCBfnc;
11324 /*-----------------------------------------------------------------------
11325 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070011326 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070011327 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011328 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_CH_SWITCH_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011329 sizeof(halSwitchChannelReq.switchChannelParams),
11330 &pSendBuffer, &usDataOffset, &usSendSize))||
11331 ( usSendSize < (usDataOffset + sizeof(halSwitchChannelReq.switchChannelParams) )))
11332 {
11333 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080011334 "Unable to get send buffer in channel switch req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070011335 pEventData, pwdiSwitchChParams, wdiSwitchChRspCb);
11336 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011337 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011338 }
11339
Jeff Johnsone7245742012-09-05 17:12:55 -070011340 halSwitchChannelReq.switchChannelParams.channelNumber =
Jeff Johnson295189b2012-06-20 16:38:30 -070011341 pwdiSwitchChParams->wdiChInfo.ucChannel;
Jeff Johnsone7245742012-09-05 17:12:55 -070011342#ifndef WLAN_FEATURE_VOWIFI
11343 halSwitchChannelReq.switchChannelParams.localPowerConstraint =
Jeff Johnson295189b2012-06-20 16:38:30 -070011344 pwdiSwitchChParams->wdiChInfo.ucLocalPowerConstraint;
11345#endif
Jeff Johnsone7245742012-09-05 17:12:55 -070011346 halSwitchChannelReq.switchChannelParams.secondaryChannelOffset =
Jeff Johnson295189b2012-06-20 16:38:30 -070011347 pwdiSwitchChParams->wdiChInfo.wdiSecondaryChannelOffset;
11348
11349#ifdef WLAN_FEATURE_VOWIFI
11350 halSwitchChannelReq.switchChannelParams.maxTxPower
Jeff Johnsone7245742012-09-05 17:12:55 -070011351 = pwdiSwitchChParams->wdiChInfo.cMaxTxPower;
Jeff Johnson295189b2012-06-20 16:38:30 -070011352 wpalMemoryCopy(halSwitchChannelReq.switchChannelParams.selfStaMacAddr,
11353 pwdiSwitchChParams->wdiChInfo.macSelfStaMacAddr,
11354 WDI_MAC_ADDR_LEN);
11355 wpalMemoryCopy(halSwitchChannelReq.switchChannelParams.bssId,
11356 pwdiSwitchChParams->wdiChInfo.macBSSId,
11357 WDI_MAC_ADDR_LEN);
11358#endif
Jeff Johnsone7245742012-09-05 17:12:55 -070011359 wpalMemoryCopy( pSendBuffer+usDataOffset,
11360 &halSwitchChannelReq.switchChannelParams,
11361 sizeof(halSwitchChannelReq.switchChannelParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070011362
11363 pWDICtx->wdiReqStatusCB = pwdiSwitchChParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011364 pWDICtx->pReqStatusUserData = pwdiSwitchChParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011365
11366 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011367 Send Switch Channel Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011368 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011369 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11370 wdiSwitchChRspCb, pEventData->pUserData, WDI_CH_SWITCH_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011371}/*WDI_ProcessChannelSwitchReq*/
11372
11373/**
Jeff Johnsone7245742012-09-05 17:12:55 -070011374 @brief Process Config STA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070011375 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011376
11377 @param pWDICtx: pointer to the WLAN DAL context
11378 pEventData: pointer to the event information structure
11379
Jeff Johnson295189b2012-06-20 16:38:30 -070011380 @see
11381 @return Result of the function call
11382*/
11383WDI_Status
11384WDI_ProcessConfigStaReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011385(
Jeff Johnson295189b2012-06-20 16:38:30 -070011386 WDI_ControlBlockType* pWDICtx,
11387 WDI_EventInfoType* pEventData
11388)
11389{
11390 WDI_ConfigSTAReqParamsType* pwdiConfigSTAParams;
11391 WDI_ConfigSTARspCb wdiConfigSTARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011392 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070011393 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070011394 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011395 wpt_uint16 usDataOffset = 0;
11396 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070011397 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070011398
Jeff Johnsone7245742012-09-05 17:12:55 -070011399 tConfigStaReqMsg halConfigStaReqMsg;
11400 wpt_uint16 uMsgSize = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070011401 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11402
11403 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011404 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011405 -------------------------------------------------------------------------*/
11406 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
11407 ( NULL == pEventData->pCBfnc ))
11408 {
11409 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011410 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011411 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011412 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011413 }
11414
11415 pwdiConfigSTAParams = (WDI_ConfigSTAReqParamsType*)pEventData->pEventData;
11416 wdiConfigSTARspCb = (WDI_ConfigSTARspCb)pEventData->pCBfnc;
11417 /*-------------------------------------------------------------------------
11418 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070011419 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070011420 -------------------------------------------------------------------------*/
11421 wpalMutexAcquire(&pWDICtx->wptMutex);
11422
11423 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011424 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070011425 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011426 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
11427 pwdiConfigSTAParams->wdiReqInfo.macBSSID,
11428 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070011429
Jeff Johnsone7245742012-09-05 17:12:55 -070011430 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070011431 {
Jeff Johnsone7245742012-09-05 17:12:55 -070011432 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
11433 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
11434 __func__, MAC_ADDR_ARRAY(pwdiConfigSTAParams->wdiReqInfo.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070011435
11436 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011437 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070011438 }
11439
11440 /*------------------------------------------------------------------------
11441 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070011442 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070011443 ------------------------------------------------------------------------*/
11444 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
11445 {
Jeff Johnsone7245742012-09-05 17:12:55 -070011446 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11447 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
11448 __func__, MAC_ADDR_ARRAY(pwdiConfigSTAParams->wdiReqInfo.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070011449
Jeff Johnsone7245742012-09-05 17:12:55 -070011450 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070011451 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011452 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070011453 }
11454
11455 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011456
11457 /* Allocation of StaReqMsg Memory Based on Firmware Capabilities */
11458#ifdef WLAN_FEATURE_11AC
11459 if (WDI_getFwWlanFeatCaps(DOT11AC))
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070011460 uMsgSize = sizeof(halConfigStaReqMsg.uStaParams.configStaParams_V1); // Version-1 For 11AC
Jeff Johnsone7245742012-09-05 17:12:55 -070011461 else
11462#endif
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070011463 uMsgSize = sizeof(halConfigStaReqMsg.uStaParams.configStaParams); // Version-0 Default
Jeff Johnsone7245742012-09-05 17:12:55 -070011464
Jeff Johnson295189b2012-06-20 16:38:30 -070011465 /*-----------------------------------------------------------------------
11466 Get message buffer
11467 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011468 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_CONFIG_STA_REQ,
11469 uMsgSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070011470 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070011471 ( usSendSize < (usDataOffset + uMsgSize )))
Jeff Johnson295189b2012-06-20 16:38:30 -070011472 {
11473 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080011474 "Unable to get send buffer in config sta req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070011475 pEventData, pwdiConfigSTAParams, wdiConfigSTARspCb);
11476 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011477 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011478 }
11479
11480 /*Copy the station context*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011481 WDI_CopyWDIStaCtxToHALStaCtx( &halConfigStaReqMsg.uStaParams.configStaParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070011482 &pwdiConfigSTAParams->wdiReqInfo);
11483
11484 if(pwdiConfigSTAParams->wdiReqInfo.wdiSTAType == WDI_STA_ENTRY_SELF)
11485 {
11486 /* Need to fill in the self STA Index */
Jeff Johnsone7245742012-09-05 17:12:55 -070011487 if ( WDI_STATUS_SUCCESS !=
Jeff Johnson295189b2012-06-20 16:38:30 -070011488 WDI_STATableFindStaidByAddr(pWDICtx,
11489 pwdiConfigSTAParams->wdiReqInfo.macSTA,
Jeff Johnsone7245742012-09-05 17:12:55 -070011490 (wpt_uint8*)&halConfigStaReqMsg.uStaParams.configStaParams.staIdx ))
Jeff Johnson295189b2012-06-20 16:38:30 -070011491 {
11492 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080011493 MAC_ADDRESS_STR
11494 ": This station does not exist in the WDI Station Table",
11495 MAC_ADDR_ARRAY(pwdiConfigSTAParams->wdiReqInfo.macSTA));
Jeff Johnson295189b2012-06-20 16:38:30 -070011496 wpalMutexRelease(&pWDICtx->wptMutex);
Madan Mohan Koyyalamudif244d8f2012-11-29 11:21:05 -080011497 wpalMemoryFree(pSendBuffer);
Jeff Johnsone7245742012-09-05 17:12:55 -070011498 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011499 }
11500 }
11501 else
11502 {
11503 /* Need to fill in the STA Index to invalid, since at this point we have not
11504 yet received it from HAL */
Gopichand Nakkalae7cbc5d2013-03-27 21:09:23 -070011505 halConfigStaReqMsg.uStaParams.configStaParams.staIdx = pwdiConfigSTAParams->wdiReqInfo.staIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070011506 }
11507
11508 /* Need to fill in the BSS index */
Jeff Johnsone7245742012-09-05 17:12:55 -070011509 halConfigStaReqMsg.uStaParams.configStaParams.bssIdx = pBSSSes->ucBSSIdx;
Madan Mohan Koyyalamudi0e4acab2012-11-02 12:46:40 -070011510
Jeff Johnsone7245742012-09-05 17:12:55 -070011511 wpalMemoryCopy( pSendBuffer+usDataOffset,
11512 &halConfigStaReqMsg.uStaParams,
Madan Mohan Koyyalamudi0e4acab2012-11-02 12:46:40 -070011513 uMsgSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070011514
11515 pWDICtx->wdiReqStatusCB = pwdiConfigSTAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011516 pWDICtx->pReqStatusUserData = pwdiConfigSTAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011517
Jeff Johnsone7245742012-09-05 17:12:55 -070011518 wpalMemoryCopy( &pWDICtx->wdiCachedConfigStaReq,
11519 pwdiConfigSTAParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070011520 sizeof(pWDICtx->wdiCachedConfigStaReq));
11521
11522 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011523 Send Config STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011524 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011525 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11526 wdiConfigSTARspCb, pEventData->pUserData, WDI_CONFIG_STA_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011527}/*WDI_ProcessConfigStaReq*/
11528
11529
11530/**
Jeff Johnsone7245742012-09-05 17:12:55 -070011531 @brief Process Set Link State Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070011532 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011533
11534 @param pWDICtx: pointer to the WLAN DAL context
11535 pEventData: pointer to the event information structure
11536
Jeff Johnson295189b2012-06-20 16:38:30 -070011537 @see
11538 @return Result of the function call
11539*/
11540WDI_Status
11541WDI_ProcessSetLinkStateReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011542(
Jeff Johnson295189b2012-06-20 16:38:30 -070011543 WDI_ControlBlockType* pWDICtx,
11544 WDI_EventInfoType* pEventData
11545)
11546{
11547 WDI_SetLinkReqParamsType* pwdiSetLinkParams;
11548 WDI_SetLinkStateRspCb wdiSetLinkRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011549 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070011550 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070011551 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011552 wpt_uint16 usDataOffset = 0;
11553 wpt_uint16 usSendSize = 0;
11554 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnsone7245742012-09-05 17:12:55 -070011555 tLinkStateParams halLinkStateReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070011556 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11557
11558 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011559 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011560 -------------------------------------------------------------------------*/
11561 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
11562 ( NULL == pEventData->pCBfnc ))
11563 {
11564 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011565 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011566 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011567 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011568 }
11569
11570 pwdiSetLinkParams = (WDI_SetLinkReqParamsType*)pEventData->pEventData;
11571 wdiSetLinkRspCb = (WDI_SetLinkStateRspCb)pEventData->pCBfnc;
11572 /*-------------------------------------------------------------------------
11573 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070011574 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070011575 -------------------------------------------------------------------------*/
11576 wpalMutexAcquire(&pWDICtx->wptMutex);
11577
11578 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011579 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070011580 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011581 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
11582 pwdiSetLinkParams->wdiLinkInfo.macBSSID,
11583 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070011584
Jeff Johnsone7245742012-09-05 17:12:55 -070011585 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070011586 {
Madan Mohan Koyyalamudi891e9492012-10-21 12:19:31 -070011587 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070011588 "%s: Set link request received outside association session. macBSSID " MAC_ADDRESS_STR,
11589 __func__, MAC_ADDR_ARRAY(pwdiSetLinkParams->wdiLinkInfo.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070011590 }
11591 else
11592 {
11593 /*------------------------------------------------------------------------
11594 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070011595 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070011596 ------------------------------------------------------------------------*/
11597 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
11598 {
Jeff Johnsone7245742012-09-05 17:12:55 -070011599 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11600 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
11601 __func__, MAC_ADDR_ARRAY(pwdiSetLinkParams->wdiLinkInfo.macBSSID));
11602
11603 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070011604 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011605 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070011606 }
11607 }
11608 /* If the link is set to enter IDLE - the Session allocated for this BSS
11609 will be deleted on the Set Link State response coming from HAL
11610 - cache the request for response processing */
Jeff Johnsone7245742012-09-05 17:12:55 -070011611 wpalMemoryCopy(&pWDICtx->wdiCacheSetLinkStReq, pwdiSetLinkParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070011612 sizeof(pWDICtx->wdiCacheSetLinkStReq));
11613
11614 wpalMutexRelease(&pWDICtx->wptMutex);
11615 /*-----------------------------------------------------------------------
11616 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070011617 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070011618 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011619
11620 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_LINK_ST_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011621 sizeof(halLinkStateReqMsg),
11622 &pSendBuffer, &usDataOffset, &usSendSize))||
11623 ( usSendSize < (usDataOffset + sizeof(halLinkStateReqMsg) )))
11624 {
11625 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080011626 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070011627 pEventData, pwdiSetLinkParams, wdiSetLinkRspCb);
11628 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011629 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011630 }
11631
11632 wpalMemoryCopy(halLinkStateReqMsg.bssid,
11633 pwdiSetLinkParams->wdiLinkInfo.macBSSID, WDI_MAC_ADDR_LEN);
11634
11635 wpalMemoryCopy(halLinkStateReqMsg.selfMacAddr,
11636 pwdiSetLinkParams->wdiLinkInfo.macSelfStaMacAddr, WDI_MAC_ADDR_LEN);
11637
Jeff Johnsone7245742012-09-05 17:12:55 -070011638 halLinkStateReqMsg.state =
Jeff Johnson295189b2012-06-20 16:38:30 -070011639 WDI_2_HAL_LINK_STATE(pwdiSetLinkParams->wdiLinkInfo.wdiLinkState);
11640
Jeff Johnsone7245742012-09-05 17:12:55 -070011641 wpalMemoryCopy( pSendBuffer+usDataOffset,
11642 &halLinkStateReqMsg,
11643 sizeof(halLinkStateReqMsg));
Jeff Johnson295189b2012-06-20 16:38:30 -070011644
11645 pWDICtx->wdiReqStatusCB = pwdiSetLinkParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011646 pWDICtx->pReqStatusUserData = pwdiSetLinkParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011647
11648 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011649 Send Set Link State Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011650 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011651 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11652 wdiSetLinkRspCb, pEventData->pUserData, WDI_SET_LINK_ST_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011653}/*WDI_ProcessSetLinkStateReq*/
11654
11655
11656/**
11657 @brief Process Get Stats Request function (called when Main FSM
11658 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011659
11660 @param pWDICtx: pointer to the WLAN DAL context
11661 pEventData: pointer to the event information structure
11662
Jeff Johnson295189b2012-06-20 16:38:30 -070011663 @see
11664 @return Result of the function call
11665*/
11666WDI_Status
11667WDI_ProcessGetStatsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011668(
Jeff Johnson295189b2012-06-20 16:38:30 -070011669 WDI_ControlBlockType* pWDICtx,
11670 WDI_EventInfoType* pEventData
11671)
11672{
11673 WDI_GetStatsReqParamsType* pwdiGetStatsParams;
11674 WDI_GetStatsRspCb wdiGetStatsRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011675 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011676 wpt_uint16 usDataOffset = 0;
11677 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070011678 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070011679 WDI_BSSSessionType* pBSSSes = NULL;
11680 wpt_macAddr macBSSID;
Jeff Johnsone7245742012-09-05 17:12:55 -070011681 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070011682 tHalStatsReqMsg halStatsReqMsg;
11683 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11684
11685 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011686 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011687 -------------------------------------------------------------------------*/
11688 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData) ||
11689 ( NULL == pEventData->pCBfnc ) )
11690 {
11691 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011692 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011693 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011694 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011695 }
11696
11697 pwdiGetStatsParams = (WDI_GetStatsReqParamsType*)pEventData->pEventData;
11698 wdiGetStatsRspCb = (WDI_GetStatsRspCb)pEventData->pCBfnc;
11699
11700 /*-------------------------------------------------------------------------
11701 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070011702 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070011703 -------------------------------------------------------------------------*/
11704 wpalMutexAcquire(&pWDICtx->wptMutex);
11705
11706 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011707 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070011708 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011709 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
11710 pwdiGetStatsParams->wdiGetStatsParamsInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070011711 &macBSSID))
11712 {
11713 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080011714 "This station does not exist in the WDI Station Table %d",
11715 pwdiGetStatsParams->wdiGetStatsParamsInfo.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070011716 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011717 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011718 }
11719
Jeff Johnsone7245742012-09-05 17:12:55 -070011720 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
11721 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070011722 {
Jeff Johnsone7245742012-09-05 17:12:55 -070011723 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
11724 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
11725 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070011726
11727 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011728 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070011729 }
11730
11731 /*------------------------------------------------------------------------
11732 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070011733 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070011734 ------------------------------------------------------------------------*/
11735 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
11736 {
Jeff Johnsone7245742012-09-05 17:12:55 -070011737 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11738 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
11739 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070011740
Jeff Johnsone7245742012-09-05 17:12:55 -070011741 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070011742 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011743 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070011744 }
11745
11746
11747 wpalMutexRelease(&pWDICtx->wptMutex);
11748
11749 /*-----------------------------------------------------------------------
11750 Get message buffer
11751 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011752 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_GET_STATS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011753 sizeof(halStatsReqMsg.statsReqParams),
11754 &pSendBuffer, &usDataOffset, &usSendSize))||
11755 ( usSendSize < (usDataOffset + sizeof(halStatsReqMsg.statsReqParams) )))
11756 {
11757 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080011758 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070011759 pEventData, pwdiGetStatsParams, wdiGetStatsRspCb);
11760 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011761 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011762 }
11763
Jeff Johnsone7245742012-09-05 17:12:55 -070011764 halStatsReqMsg.statsReqParams.staId =
Jeff Johnson295189b2012-06-20 16:38:30 -070011765 pwdiGetStatsParams->wdiGetStatsParamsInfo.ucSTAIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070011766 halStatsReqMsg.statsReqParams.statsMask =
Jeff Johnson295189b2012-06-20 16:38:30 -070011767 pwdiGetStatsParams->wdiGetStatsParamsInfo.uStatsMask;
Jeff Johnsone7245742012-09-05 17:12:55 -070011768 wpalMemoryCopy( pSendBuffer+usDataOffset,
11769 &halStatsReqMsg.statsReqParams,
11770 sizeof(halStatsReqMsg.statsReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070011771
11772 pWDICtx->wdiReqStatusCB = pwdiGetStatsParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011773 pWDICtx->pReqStatusUserData = pwdiGetStatsParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011774
11775 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011776 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011777 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011778 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11779 wdiGetStatsRspCb, pEventData->pUserData, WDI_GET_STATS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011780}/*WDI_ProcessGetStatsReq*/
11781
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -080011782#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_CCX || defined(FEATURE_WLAN_LFR)
11783/**
11784 @brief Process Get Roam Rssi Request function (called when Main FSM
11785 allows it)
11786
11787 @param pWDICtx: pointer to the WLAN DAL context
11788 pEventData: pointer to the event information structure
11789
11790 @see
11791 @return Result of the function call
11792*/
11793WDI_Status
11794WDI_ProcessGetRoamRssiReq
11795(
11796 WDI_ControlBlockType* pWDICtx,
11797 WDI_EventInfoType* pEventData
11798)
11799{
11800 WDI_GetRoamRssiReqParamsType* pwdiGetRoamRssiParams;
11801 WDI_GetStatsRspCb wdiGetStatsRspCb;
11802 wpt_uint8* pSendBuffer = NULL;
11803 wpt_uint16 usDataOffset = 0;
11804 wpt_uint16 usSendSize = 0;
11805 wpt_uint8 ucCurrentBSSSesIdx = 0;
11806 WDI_BSSSessionType* pBSSSes = NULL;
11807 wpt_macAddr macBSSID;
11808 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
11809 tHalGetRoamRssiReqMsg halRssiRoamReqMsg;
11810 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11811 /*-------------------------------------------------------------------------
11812 Sanity check
11813 -------------------------------------------------------------------------*/
11814 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData) ||
11815 ( NULL == pEventData->pCBfnc ) )
11816 {
11817 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11818 "%s: Invalid parameters", __func__);
11819 WDI_ASSERT(0);
11820 return WDI_STATUS_E_FAILURE;
11821 }
11822
11823 pwdiGetRoamRssiParams = (WDI_GetRoamRssiReqParamsType*)pEventData->pEventData;
11824 wdiGetStatsRspCb = (WDI_GetStatsRspCb)pEventData->pCBfnc;
11825
11826 /*-------------------------------------------------------------------------
11827 Check to see if we are in the middle of an association, if so queue, if
11828 not it means it is free to process request
11829 -------------------------------------------------------------------------*/
11830 wpalMutexAcquire(&pWDICtx->wptMutex);
11831
11832 /*------------------------------------------------------------------------
11833 Find the BSS for which the request is made
11834 ------------------------------------------------------------------------*/
11835 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
11836 pwdiGetRoamRssiParams->wdiGetRoamRssiParamsInfo.ucSTAIdx,
11837 &macBSSID))
11838 {
11839 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080011840 "This station does not exist in the WDI Station Table %d",
11841 pwdiGetRoamRssiParams->wdiGetRoamRssiParamsInfo.ucSTAIdx);
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -080011842 wpalMutexRelease(&pWDICtx->wptMutex);
11843 return WDI_STATUS_E_FAILURE;
11844 }
11845
11846 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
11847 if ( NULL == pBSSSes )
11848 {
11849 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
11850 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
11851 __func__, MAC_ADDR_ARRAY(macBSSID));
11852
11853 wpalMutexRelease(&pWDICtx->wptMutex);
11854 return WDI_STATUS_E_NOT_ALLOWED;
11855 }
11856
11857 /*------------------------------------------------------------------------
11858 Check if this BSS is being currently processed or queued,
11859 if queued - queue the new request as well
11860 ------------------------------------------------------------------------*/
11861 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
11862 {
11863 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11864 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
11865 __func__, MAC_ADDR_ARRAY(macBSSID));
11866
11867 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
11868 wpalMutexRelease(&pWDICtx->wptMutex);
11869 return wdiStatus;
11870 }
11871
11872 wpalMutexRelease(&pWDICtx->wptMutex);
11873
11874 /*-----------------------------------------------------------------------
11875 Get message buffer
11876 -----------------------------------------------------------------------*/
11877 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_GET_ROAM_RSSI_REQ,
11878 sizeof(halRssiRoamReqMsg.roamRssiReqParams),
11879 &pSendBuffer, &usDataOffset, &usSendSize))||
11880 ( usSendSize < (usDataOffset + sizeof(halRssiRoamReqMsg.roamRssiReqParams) )))
11881 {
11882 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080011883 "Unable to get send buffer in set bss key req %p %p %p",
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -080011884 pEventData, pwdiGetRoamRssiParams, wdiGetStatsRspCb);
11885 WDI_ASSERT(0);
11886 return WDI_STATUS_E_FAILURE;
11887 }
11888
11889 halRssiRoamReqMsg.roamRssiReqParams.staId =
11890 pwdiGetRoamRssiParams->wdiGetRoamRssiParamsInfo.ucSTAIdx;
11891 wpalMemoryCopy( pSendBuffer+usDataOffset,
11892 &halRssiRoamReqMsg.roamRssiReqParams,
11893 sizeof(halRssiRoamReqMsg.roamRssiReqParams));
11894
11895 pWDICtx->wdiReqStatusCB = pwdiGetRoamRssiParams->wdiReqStatusCB;
11896 pWDICtx->pReqStatusUserData = pwdiGetRoamRssiParams->pUserData;
11897
11898 /*-------------------------------------------------------------------------
11899 Send Get STA Request to HAL
11900 -------------------------------------------------------------------------*/
11901 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11902 wdiGetStatsRspCb, pEventData->pUserData, WDI_GET_ROAM_RSSI_RESP);
11903}/*WDI_ProcessGetRoamRssiReq*/
11904#endif
11905
Jeff Johnson295189b2012-06-20 16:38:30 -070011906/**
Jeff Johnsone7245742012-09-05 17:12:55 -070011907 @brief Process Update Cfg Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070011908 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011909
11910 @param pWDICtx: pointer to the WLAN DAL context
11911 pEventData: pointer to the event information structure
11912
Jeff Johnson295189b2012-06-20 16:38:30 -070011913 @see
11914 @return Result of the function call
11915*/
11916WDI_Status
11917WDI_ProcessUpdateCfgReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011918(
Jeff Johnson295189b2012-06-20 16:38:30 -070011919 WDI_ControlBlockType* pWDICtx,
11920 WDI_EventInfoType* pEventData
11921)
11922{
11923 WDI_UpdateCfgReqParamsType* pwdiUpdateCfgParams = NULL;
11924 WDI_UpdateCfgRspCb wdiUpdateCfgRspCb = NULL;
11925
Jeff Johnsone7245742012-09-05 17:12:55 -070011926 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011927 wpt_uint16 usDataOffset = 0;
11928 wpt_uint16 usSendSize = 0;
11929 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11930
11931 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011932 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011933 -------------------------------------------------------------------------*/
11934 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
11935 ( NULL == pEventData->pCBfnc))
11936 {
11937 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011938 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011939 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011940 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011941 }
11942
11943 pwdiUpdateCfgParams = (WDI_UpdateCfgReqParamsType*)pEventData->pEventData;
11944 wdiUpdateCfgRspCb = (WDI_UpdateCfgRspCb)pEventData->pCBfnc;
11945
11946 /*-----------------------------------------------------------------------
11947 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070011948 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070011949 -----------------------------------------------------------------------*/
11950
Jeff Johnsone7245742012-09-05 17:12:55 -070011951 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_CFG_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011952 pwdiUpdateCfgParams->uConfigBufferLen + sizeof(wpt_uint32),
11953 &pSendBuffer, &usDataOffset, &usSendSize))||
11954 ( usSendSize < (usDataOffset + pwdiUpdateCfgParams->uConfigBufferLen)))
11955 {
11956 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080011957 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070011958 pEventData, pwdiUpdateCfgParams, wdiUpdateCfgRspCb);
11959 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011960 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011961 }
11962
Jeff Johnsone7245742012-09-05 17:12:55 -070011963 wpalMemoryCopy( pSendBuffer+usDataOffset,
11964 &pwdiUpdateCfgParams->uConfigBufferLen,
11965 sizeof(wpt_uint32));
11966 wpalMemoryCopy( pSendBuffer+usDataOffset+sizeof(wpt_uint32),
11967 pwdiUpdateCfgParams->pConfigBuffer,
11968 pwdiUpdateCfgParams->uConfigBufferLen);
Jeff Johnson295189b2012-06-20 16:38:30 -070011969
11970 pWDICtx->wdiReqStatusCB = pwdiUpdateCfgParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011971 pWDICtx->pReqStatusUserData = pwdiUpdateCfgParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011972
11973 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011974 Send Update Cfg Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011975 -------------------------------------------------------------------------*/
11976
Jeff Johnsone7245742012-09-05 17:12:55 -070011977 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11978 wdiUpdateCfgRspCb, pEventData->pUserData, WDI_UPDATE_CFG_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011979
11980}/*WDI_ProcessUpdateCfgReq*/
11981
11982
11983/**
Jeff Johnsone7245742012-09-05 17:12:55 -070011984 @brief Process Add BA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070011985 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011986
11987 @param pWDICtx: pointer to the WLAN DAL context
11988 pEventData: pointer to the event information structure
11989
Jeff Johnson295189b2012-06-20 16:38:30 -070011990 @see
11991 @return Result of the function call
11992*/
11993WDI_Status
11994WDI_ProcessAddBAReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011995(
Jeff Johnson295189b2012-06-20 16:38:30 -070011996 WDI_ControlBlockType* pWDICtx,
11997 WDI_EventInfoType* pEventData
11998)
11999{
12000 WDI_AddBAReqParamsType* pwdiAddBAParams;
12001 WDI_AddBARspCb wdiAddBARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070012002 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070012003 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070012004 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012005 wpt_uint16 usDataOffset = 0;
12006 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070012007 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070012008 wpt_macAddr macBSSID;
12009
12010 tAddBAReqMsg halAddBAReq;
12011 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12012
12013 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012014 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012015 -------------------------------------------------------------------------*/
12016 if (( NULL == pEventData ) ||
12017 ( NULL == pEventData->pEventData) ||
12018 ( NULL == pEventData->pCBfnc ))
12019 {
12020 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012021 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012022 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012023 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012024 }
12025
12026 pwdiAddBAParams = (WDI_AddBAReqParamsType*)pEventData->pEventData;
12027 wdiAddBARspCb = (WDI_AddBARspCb)pEventData->pCBfnc;
12028
12029 /*-------------------------------------------------------------------------
12030 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070012031 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070012032 -------------------------------------------------------------------------*/
12033 wpalMutexAcquire(&pWDICtx->wptMutex);
12034
12035 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012036 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070012037 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012038 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
12039 pwdiAddBAParams->wdiBAInfoType.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070012040 &macBSSID))
12041 {
12042 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012043 "This station does not exist in the WDI Station Table %d",
12044 pwdiAddBAParams->wdiBAInfoType.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070012045 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070012046 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012047 }
12048
Jeff Johnsone7245742012-09-05 17:12:55 -070012049 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
12050 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070012051 {
Jeff Johnsone7245742012-09-05 17:12:55 -070012052 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
12053 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
12054 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070012055
12056 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070012057 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070012058 }
12059
12060 /*------------------------------------------------------------------------
12061 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070012062 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070012063 ------------------------------------------------------------------------*/
12064 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
12065 {
Jeff Johnsone7245742012-09-05 17:12:55 -070012066 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12067 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
12068 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070012069
Jeff Johnsone7245742012-09-05 17:12:55 -070012070 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070012071 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070012072 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070012073 }
12074
12075
12076 wpalMutexRelease(&pWDICtx->wptMutex);
12077 /*-----------------------------------------------------------------------
12078 Get message buffer
12079 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012080 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ADD_BA_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012081 sizeof(halAddBAReq.addBAParams),
12082 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070012083 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070012084 (usDataOffset + sizeof(halAddBAReq.addBAParams) )))
12085 {
12086 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012087 "Unable to get send buffer in Add BA req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070012088 pEventData, pwdiAddBAParams, wdiAddBARspCb);
12089 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012090 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012091 }
12092
Jeff Johnsone7245742012-09-05 17:12:55 -070012093 halAddBAReq.addBAParams.baSessionID =
Jeff Johnson295189b2012-06-20 16:38:30 -070012094 pwdiAddBAParams->wdiBAInfoType.ucBaSessionID;
12095 halAddBAReq.addBAParams.winSize = pwdiAddBAParams->wdiBAInfoType.ucWinSize;
12096#ifdef FEATURE_ON_CHIP_REORDERING
Jeff Johnsone7245742012-09-05 17:12:55 -070012097 halAddBAReq.addBAParams.isReorderingDoneOnChip =
Jeff Johnson295189b2012-06-20 16:38:30 -070012098 pwdiAddBAParams->wdiBAInfoType.bIsReorderingDoneOnChip;
12099#endif
12100
Jeff Johnsone7245742012-09-05 17:12:55 -070012101 wpalMemoryCopy( pSendBuffer+usDataOffset,
12102 &halAddBAReq.addBAParams,
12103 sizeof(halAddBAReq.addBAParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070012104
12105 pWDICtx->wdiReqStatusCB = pwdiAddBAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012106 pWDICtx->pReqStatusUserData = pwdiAddBAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012107
12108 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012109 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012110 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012111 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12112 wdiAddBARspCb, pEventData->pUserData,
12113 WDI_ADD_BA_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012114}/*WDI_ProcessAddBAReq*/
12115
12116
12117
12118/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012119 @brief Process Trigger BA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070012120 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012121
12122 @param pWDICtx: pointer to the WLAN DAL context
12123 pEventData: pointer to the event information structure
12124
Jeff Johnson295189b2012-06-20 16:38:30 -070012125 @see
12126 @return Result of the function call
12127*/
12128WDI_Status
12129WDI_ProcessTriggerBAReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012130(
Jeff Johnson295189b2012-06-20 16:38:30 -070012131 WDI_ControlBlockType* pWDICtx,
12132 WDI_EventInfoType* pEventData
12133)
12134{
12135 WDI_TriggerBAReqParamsType* pwdiTriggerBAParams;
12136 WDI_TriggerBARspCb wdiTriggerBARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070012137 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070012138 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070012139 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012140 wpt_uint16 usDataOffset = 0;
12141 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070012142 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070012143 wpt_uint16 index;
12144 wpt_macAddr macBSSID;
Jeff Johnsone7245742012-09-05 17:12:55 -070012145
Jeff Johnson295189b2012-06-20 16:38:30 -070012146 tTriggerBAReqMsg halTriggerBAReq;
12147 tTriggerBaReqCandidate* halTriggerBACandidate;
12148 WDI_TriggerBAReqCandidateType* wdiTriggerBACandidate;
12149 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12150
12151 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012152 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012153 -------------------------------------------------------------------------*/
12154 if (( NULL == pEventData ) ||
12155 ( NULL == pEventData->pEventData ) ||
12156 ( NULL == pEventData->pCBfnc ))
12157 {
12158 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012159 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012160 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012161 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012162 }
12163
12164 pwdiTriggerBAParams = (WDI_TriggerBAReqParamsType*)pEventData->pEventData;
12165 wdiTriggerBARspCb = (WDI_TriggerBARspCb)pEventData->pCBfnc;
12166 /*-------------------------------------------------------------------------
12167 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070012168 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070012169 -------------------------------------------------------------------------*/
12170 wpalMutexAcquire(&pWDICtx->wptMutex);
12171
12172 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012173 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070012174 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012175 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
12176 pwdiTriggerBAParams->wdiTriggerBAInfoType.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070012177 &macBSSID))
12178 {
12179 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012180 "This station does not exist in the WDI Station Table %d",
12181 pwdiTriggerBAParams->wdiTriggerBAInfoType.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070012182 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070012183 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012184 }
12185
Jeff Johnsone7245742012-09-05 17:12:55 -070012186 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
12187 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070012188 {
Jeff Johnsone7245742012-09-05 17:12:55 -070012189 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
12190 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
12191 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070012192
12193 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070012194 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070012195 }
12196
12197 /*------------------------------------------------------------------------
12198 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070012199 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070012200 ------------------------------------------------------------------------*/
12201 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
12202 {
Jeff Johnsone7245742012-09-05 17:12:55 -070012203 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12204 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
12205 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070012206
Jeff Johnsone7245742012-09-05 17:12:55 -070012207 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070012208 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070012209 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070012210 }
12211
12212
12213 wpalMutexRelease(&pWDICtx->wptMutex);
12214 /*-----------------------------------------------------------------------
12215 Get message buffer
12216 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012217 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
12218 WDI_TRIGGER_BA_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012219 sizeof(halTriggerBAReq.triggerBAParams) +
Jeff Johnsone7245742012-09-05 17:12:55 -070012220 (sizeof(tTriggerBaReqCandidate) *
Jeff Johnson295189b2012-06-20 16:38:30 -070012221 pwdiTriggerBAParams->wdiTriggerBAInfoType.usBACandidateCnt),
12222 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070012223 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070012224 (usDataOffset + sizeof(halTriggerBAReq.triggerBAParams)+
Jeff Johnsone7245742012-09-05 17:12:55 -070012225 (sizeof(tTriggerBaReqCandidate) *
Jeff Johnson295189b2012-06-20 16:38:30 -070012226 pwdiTriggerBAParams->wdiTriggerBAInfoType.usBACandidateCnt) )))
12227 {
12228 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012229 "Unable to get send buffer in Trigger BA req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070012230 pEventData, pwdiTriggerBAParams, wdiTriggerBARspCb);
12231 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012232 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012233 }
12234
Jeff Johnsone7245742012-09-05 17:12:55 -070012235 halTriggerBAReq.triggerBAParams.baSessionID =
Jeff Johnson295189b2012-06-20 16:38:30 -070012236 pwdiTriggerBAParams->wdiTriggerBAInfoType.ucBASessionID;
Jeff Johnsone7245742012-09-05 17:12:55 -070012237 halTriggerBAReq.triggerBAParams.baCandidateCnt =
Jeff Johnson295189b2012-06-20 16:38:30 -070012238 pwdiTriggerBAParams->wdiTriggerBAInfoType.usBACandidateCnt;
12239
Jeff Johnsone7245742012-09-05 17:12:55 -070012240 wpalMemoryCopy( pSendBuffer+usDataOffset,
12241 &halTriggerBAReq.triggerBAParams,
12242 sizeof(halTriggerBAReq.triggerBAParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070012243
Jeff Johnsone7245742012-09-05 17:12:55 -070012244 wdiTriggerBACandidate =
Jeff Johnson295189b2012-06-20 16:38:30 -070012245 (WDI_TriggerBAReqCandidateType*)(pwdiTriggerBAParams + 1);
12246 halTriggerBACandidate = (tTriggerBaReqCandidate*)(pSendBuffer+usDataOffset+
12247 sizeof(halTriggerBAReq.triggerBAParams));
Jeff Johnsone7245742012-09-05 17:12:55 -070012248
12249 for(index = 0 ; index < halTriggerBAReq.triggerBAParams.baCandidateCnt ;
Jeff Johnson295189b2012-06-20 16:38:30 -070012250 index++)
12251 {
12252 halTriggerBACandidate->staIdx = wdiTriggerBACandidate->ucSTAIdx;
12253 halTriggerBACandidate->tidBitmap = wdiTriggerBACandidate->ucTidBitmap;
12254 halTriggerBACandidate++;
12255 wdiTriggerBACandidate++;
12256 }
12257
12258 pWDICtx->wdiReqStatusCB = pwdiTriggerBAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012259 pWDICtx->pReqStatusUserData = pwdiTriggerBAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012260
12261 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012262 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012263 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012264 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12265 wdiTriggerBARspCb, pEventData->pUserData,
12266 WDI_TRIGGER_BA_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012267}/*WDI_ProcessTriggerBAReq*/
12268
12269
12270
12271/**
12272 @brief Process Update Beacon Params Request function (called when Main FSM
12273 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012274
12275 @param pWDICtx: pointer to the WLAN DAL context
12276 pEventData: pointer to the event information structure
12277
Jeff Johnson295189b2012-06-20 16:38:30 -070012278 @see
12279 @return Result of the function call
12280*/
12281WDI_Status
12282WDI_ProcessUpdateBeaconParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012283(
Jeff Johnson295189b2012-06-20 16:38:30 -070012284 WDI_ControlBlockType* pWDICtx,
12285 WDI_EventInfoType* pEventData
12286)
12287{
12288 WDI_UpdateBeaconParamsType* pwdiUpdateBeaconParams;
12289 WDI_UpdateBeaconParamsRspCb wdiUpdateBeaconParamsRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070012290 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012291 wpt_uint16 usDataOffset = 0;
12292 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070012293 tUpdateBeaconParams halUpdateBeaconParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070012294 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12295
12296 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012297 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012298 -------------------------------------------------------------------------*/
12299 if (( NULL == pEventData ) ||
12300 ( NULL == pEventData->pEventData) ||
12301 ( NULL == pEventData->pCBfnc))
12302 {
12303 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012304 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012305 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012306 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012307 }
12308
12309 pwdiUpdateBeaconParams = (WDI_UpdateBeaconParamsType*)pEventData->pEventData;
12310 wdiUpdateBeaconParamsRspCb = (WDI_UpdateBeaconParamsRspCb)pEventData->pCBfnc;
12311 /*-----------------------------------------------------------------------
12312 Get message buffer
12313 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012314 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPD_BCON_PRMS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012315 sizeof(halUpdateBeaconParams),
12316 &pSendBuffer, &usDataOffset, &usSendSize))||
12317 ( usSendSize < (usDataOffset + sizeof(halUpdateBeaconParams) )))
12318 {
12319 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012320 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070012321 pEventData, pwdiUpdateBeaconParams, wdiUpdateBeaconParamsRspCb);
12322 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012323 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012324 }
12325
12326 /*BSS Index of the BSS*/
12327 halUpdateBeaconParams.bssIdx =
12328 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucBssIdx;
12329 /*shortPreamble mode. HAL should update all the STA rates when it
12330 receives this message*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012331 halUpdateBeaconParams.fShortPreamble =
Jeff Johnson295189b2012-06-20 16:38:30 -070012332 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucfShortPreamble;
12333 /* short Slot time.*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012334 halUpdateBeaconParams.fShortSlotTime =
Jeff Johnson295189b2012-06-20 16:38:30 -070012335 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucfShortSlotTime;
12336 /* Beacon Interval */
Jeff Johnsone7245742012-09-05 17:12:55 -070012337 halUpdateBeaconParams.beaconInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070012338 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.usBeaconInterval;
12339
12340 /*Protection related */
Jeff Johnsone7245742012-09-05 17:12:55 -070012341 halUpdateBeaconParams.llaCoexist =
Jeff Johnson295189b2012-06-20 16:38:30 -070012342 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucllaCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070012343 halUpdateBeaconParams.llbCoexist =
Jeff Johnson295189b2012-06-20 16:38:30 -070012344 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucllbCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070012345 halUpdateBeaconParams.llgCoexist =
Jeff Johnson295189b2012-06-20 16:38:30 -070012346 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucllgCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070012347 halUpdateBeaconParams.ht20MhzCoexist =
Jeff Johnson295189b2012-06-20 16:38:30 -070012348 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucHt20MhzCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070012349 halUpdateBeaconParams.llnNonGFCoexist =
Jeff Johnson295189b2012-06-20 16:38:30 -070012350 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucllnNonGFCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070012351 halUpdateBeaconParams.fLsigTXOPProtectionFullSupport =
Jeff Johnson295189b2012-06-20 16:38:30 -070012352 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucfLsigTXOPProtectionFullSupport;
12353 halUpdateBeaconParams.fRIFSMode =
12354 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucfRIFSMode;
Jeff Johnsone7245742012-09-05 17:12:55 -070012355 halUpdateBeaconParams.paramChangeBitmap =
Jeff Johnson295189b2012-06-20 16:38:30 -070012356 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.usChangeBitmap;
12357
Jeff Johnsone7245742012-09-05 17:12:55 -070012358 wpalMemoryCopy( pSendBuffer+usDataOffset, &halUpdateBeaconParams,
12359 sizeof(halUpdateBeaconParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070012360
12361 pWDICtx->wdiReqStatusCB = pwdiUpdateBeaconParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012362 pWDICtx->pReqStatusUserData = pwdiUpdateBeaconParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012363
12364 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012365 Send Del TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012366 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012367 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12368 wdiUpdateBeaconParamsRspCb, pEventData->pUserData, WDI_UPD_BCON_PRMS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012369}/*WDI_ProcessUpdateBeaconParamsReq*/
12370
12371
12372
12373/**
12374 @brief Process Send Beacon template Request function (called when Main FSM
12375 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012376
12377 @param pWDICtx: pointer to the WLAN DAL context
12378 pEventData: pointer to the event information structure
12379
Jeff Johnson295189b2012-06-20 16:38:30 -070012380 @see
12381 @return Result of the function call
12382*/
12383WDI_Status
12384WDI_ProcessSendBeaconParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012385(
Jeff Johnson295189b2012-06-20 16:38:30 -070012386 WDI_ControlBlockType* pWDICtx,
12387 WDI_EventInfoType* pEventData
12388)
12389{
12390 WDI_SendBeaconParamsType* pwdiSendBeaconParams;
12391 WDI_SendBeaconParamsRspCb wdiSendBeaconParamsRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070012392 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012393 wpt_uint16 usDataOffset = 0;
12394 wpt_uint16 usSendSize = 0;
12395 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12396
12397 tSendBeaconReqMsg halSendBeaconReq;
12398 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012399 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012400 -------------------------------------------------------------------------*/
12401 if (( NULL == pEventData ) ||
12402 ( NULL == pEventData->pEventData ) ||
12403 ( NULL == pEventData->pCBfnc ))
12404 {
12405 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012406 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012407 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012408 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012409 }
12410
12411 pwdiSendBeaconParams = (WDI_SendBeaconParamsType*)pEventData->pEventData;
12412 wdiSendBeaconParamsRspCb = (WDI_SendBeaconParamsRspCb)pEventData->pCBfnc;
12413 /*-----------------------------------------------------------------------
12414 Get message buffer
12415 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012416 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SND_BCON_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012417 sizeof(halSendBeaconReq.sendBeaconParam),
12418 &pSendBuffer, &usDataOffset, &usSendSize))||
12419 ( usSendSize < (usDataOffset + sizeof(halSendBeaconReq.sendBeaconParam) )))
12420 {
12421 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012422 "Unable to get send buffer in send beacon req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070012423 pEventData, pwdiSendBeaconParams, wdiSendBeaconParamsRspCb);
12424 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012425 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012426 }
12427
12428 wpalMemoryCopy(halSendBeaconReq.sendBeaconParam.bssId,
12429 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.macBSSID,
12430 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070012431 halSendBeaconReq.sendBeaconParam.beaconLength =
Jeff Johnson295189b2012-06-20 16:38:30 -070012432 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.beaconLength;
12433 wpalMemoryCopy(halSendBeaconReq.sendBeaconParam.beacon,
12434 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.beacon,
12435 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.beaconLength);
Jeff Johnsone7245742012-09-05 17:12:55 -070012436 halSendBeaconReq.sendBeaconParam.timIeOffset =
Jeff Johnson295189b2012-06-20 16:38:30 -070012437 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.timIeOffset;
Gopichand Nakkala81aef732013-03-22 11:15:19 +053012438 /* usP2PIeOffset should be atleast greater than timIeOffset */
12439 if ((pwdiSendBeaconParams->wdiSendBeaconParamsInfo.usP2PIeOffset != 0 ) &&
12440 (pwdiSendBeaconParams->wdiSendBeaconParamsInfo.usP2PIeOffset <
12441 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.timIeOffset))
12442 {
12443 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12444 "Invalid usP2PIeOffset %hu",
12445 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.usP2PIeOffset);
12446 WDI_ASSERT(0);
12447 return WDI_STATUS_E_FAILURE;
12448 }
12449
Jeff Johnsone7245742012-09-05 17:12:55 -070012450 halSendBeaconReq.sendBeaconParam.p2pIeOffset =
Jeff Johnson295189b2012-06-20 16:38:30 -070012451 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.usP2PIeOffset;
Jeff Johnson295189b2012-06-20 16:38:30 -070012452
Jeff Johnsone7245742012-09-05 17:12:55 -070012453 wpalMemoryCopy( pSendBuffer+usDataOffset,
12454 &halSendBeaconReq.sendBeaconParam,
12455 sizeof(halSendBeaconReq.sendBeaconParam));
Jeff Johnson295189b2012-06-20 16:38:30 -070012456
12457 pWDICtx->wdiReqStatusCB = pwdiSendBeaconParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012458 pWDICtx->pReqStatusUserData = pwdiSendBeaconParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012459
12460 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012461 Send Del TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012462 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012463 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12464 wdiSendBeaconParamsRspCb, pEventData->pUserData, WDI_SND_BCON_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012465}/*WDI_ProcessSendBeaconParamsReq*/
12466
12467/**
12468 @brief Process Update Beacon Params Request function (called when Main FSM
12469 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012470
12471 @param pWDICtx: pointer to the WLAN DAL context
12472 pEventData: pointer to the event information structure
12473
Jeff Johnson295189b2012-06-20 16:38:30 -070012474 @see
12475 @return Result of the function call
12476*/
12477WDI_Status
12478WDI_ProcessUpdateProbeRspTemplateReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012479(
Jeff Johnson295189b2012-06-20 16:38:30 -070012480 WDI_ControlBlockType* pWDICtx,
12481 WDI_EventInfoType* pEventData
12482)
12483{
12484 WDI_UpdateProbeRspTemplateParamsType* pwdiUpdateProbeRespTmplParams;
12485 WDI_UpdateProbeRspTemplateRspCb wdiUpdateProbeRespTmplRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070012486 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012487 wpt_uint16 usDataOffset = 0;
12488 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070012489 tSendProbeRespReqParams halUpdateProbeRspTmplParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070012490 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12491
12492 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012493 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012494 -------------------------------------------------------------------------*/
12495 if (( NULL == pEventData ) ||
12496 ( NULL == pEventData->pEventData) ||
12497 ( NULL == pEventData->pCBfnc))
12498 {
12499 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012500 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012501 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012502 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012503 }
12504
Jeff Johnsone7245742012-09-05 17:12:55 -070012505 pwdiUpdateProbeRespTmplParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070012506 (WDI_UpdateProbeRspTemplateParamsType*)pEventData->pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070012507 wdiUpdateProbeRespTmplRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070012508 (WDI_UpdateProbeRspTemplateRspCb)pEventData->pCBfnc;
12509 /*-----------------------------------------------------------------------
12510 Get message buffer
12511 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012512 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPD_PROBE_RSP_TEMPLATE_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012513 sizeof(halUpdateProbeRspTmplParams),
12514 &pSendBuffer, &usDataOffset, &usSendSize))||
12515 ( usSendSize < (usDataOffset + sizeof(halUpdateProbeRspTmplParams) )))
12516 {
12517 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012518 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070012519 pEventData, pwdiUpdateProbeRespTmplParams, wdiUpdateProbeRespTmplRspCb);
12520 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012521 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012522 }
12523
12524 wpalMemoryCopy(halUpdateProbeRspTmplParams.bssId,
Jeff Johnsone7245742012-09-05 17:12:55 -070012525 pwdiUpdateProbeRespTmplParams->wdiProbeRspTemplateInfo.macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -070012526 WDI_MAC_ADDR_LEN);
12527
Jeff Johnsone7245742012-09-05 17:12:55 -070012528 halUpdateProbeRspTmplParams.probeRespTemplateLen =
Jeff Johnson295189b2012-06-20 16:38:30 -070012529 pwdiUpdateProbeRespTmplParams->wdiProbeRspTemplateInfo.uProbeRespTemplateLen;
12530
12531 wpalMemoryCopy(halUpdateProbeRspTmplParams.pProbeRespTemplate,
12532 pwdiUpdateProbeRespTmplParams->wdiProbeRspTemplateInfo.pProbeRespTemplate,
Jeff Johnsone7245742012-09-05 17:12:55 -070012533 BEACON_TEMPLATE_SIZE);
Jeff Johnson295189b2012-06-20 16:38:30 -070012534
12535
12536 wpalMemoryCopy(halUpdateProbeRspTmplParams.ucProxyProbeReqValidIEBmap,
12537 pwdiUpdateProbeRespTmplParams->wdiProbeRspTemplateInfo.uaProxyProbeReqValidIEBmap,
12538 WDI_PROBE_REQ_BITMAP_IE_LEN);
12539
Jeff Johnsone7245742012-09-05 17:12:55 -070012540 wpalMemoryCopy( pSendBuffer+usDataOffset,
12541 &halUpdateProbeRspTmplParams,
12542 sizeof(halUpdateProbeRspTmplParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070012543
12544 pWDICtx->wdiReqStatusCB = pwdiUpdateProbeRespTmplParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012545 pWDICtx->pReqStatusUserData = pwdiUpdateProbeRespTmplParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012546
12547 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012548 Send Update Probe Resp Template Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012549 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012550 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12551 wdiUpdateProbeRespTmplRspCb, pEventData->pUserData,
12552 WDI_UPD_PROBE_RSP_TEMPLATE_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012553}/*WDI_ProcessUpdateProbeRspTemplateReq*/
12554
12555/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012556 @brief Process NV blob download function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070012557 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012558
12559 @param pWDICtx: pointer to the WLAN DAL context
12560 pEventData: pointer to the event information structure
12561
Jeff Johnson295189b2012-06-20 16:38:30 -070012562 @see
12563 @return Result of the function call
12564*/
12565WDI_Status
12566WDI_ProcessNvDownloadReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012567(
Jeff Johnson295189b2012-06-20 16:38:30 -070012568 WDI_ControlBlockType* pWDICtx,
12569 WDI_EventInfoType* pEventData
12570)
12571{
12572
12573 WDI_NvDownloadReqParamsType* pwdiNvDownloadReqParams = NULL;
12574 WDI_NvDownloadRspCb wdiNvDownloadRspCb = NULL;
12575
12576 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012577 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012578 -------------------------------------------------------------------------*/
12579 if (( NULL == pEventData ) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070012580 ( NULL == (pwdiNvDownloadReqParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070012581 (WDI_NvDownloadReqParamsType*)pEventData->pEventData)) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070012582 ( NULL == (wdiNvDownloadRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070012583 (WDI_NvDownloadRspCb)pEventData->pCBfnc)))
12584 {
12585 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012586 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012587 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012588 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012589 }
12590
12591 /*Intialize the Nv Blob Info */
Jeff Johnsone7245742012-09-05 17:12:55 -070012592 pWDICtx->wdiNvBlobInfo.usTotalFragment =
Jeff Johnson295189b2012-06-20 16:38:30 -070012593 TOTALFRAGMENTS(pwdiNvDownloadReqParams->wdiBlobInfo.uBlobSize);
12594
12595 /*cache the wdi nv request message here if the the first fragment
12596 * To issue the request to HAL for the next fragment */
12597 if( 0 == pWDICtx->wdiNvBlobInfo.usCurrentFragment)
12598 {
Jeff Johnsone7245742012-09-05 17:12:55 -070012599 wpalMemoryCopy(&pWDICtx->wdiCachedNvDownloadReq,
12600 pwdiNvDownloadReqParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070012601 sizeof(pWDICtx->wdiCachedNvDownloadReq));
12602
12603 pWDICtx->pfncRspCB = pEventData->pCBfnc;
12604 pWDICtx->pRspCBUserData = pEventData->pUserData;
12605 }
12606
12607 return WDI_SendNvBlobReq(pWDICtx,pEventData);
12608}
12609
12610/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012611 @brief Process Set Max Tx Power Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070012612 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012613
12614 @param pWDICtx: pointer to the WLAN DAL context
12615 pEventData: pointer to the event information structure
12616
Jeff Johnson295189b2012-06-20 16:38:30 -070012617 @see
12618 @return Result of the function call
12619*/
12620WDI_Status WDI_ProcessSetMaxTxPowerReq
12621(
12622 WDI_ControlBlockType* pWDICtx,
12623 WDI_EventInfoType* pEventData
12624)
12625{
12626 WDI_SetMaxTxPowerParamsType* pwdiSetMaxTxPowerParams = NULL;
12627 WDA_SetMaxTxPowerRspCb wdiSetMaxTxPowerRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070012628 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012629 wpt_uint16 usDataOffset = 0;
12630 wpt_uint16 usSendSize = 0;
12631 tSetMaxTxPwrReq halSetMaxTxPower;
12632 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12633
12634 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012635 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012636 -------------------------------------------------------------------------*/
12637 if (( NULL == pEventData ) ||
12638 ( NULL == pEventData->pEventData ) ||
12639 ( NULL == pEventData->pCBfnc ))
12640 {
12641 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012642 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012643 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012644 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012645 }
Jeff Johnsone7245742012-09-05 17:12:55 -070012646 pwdiSetMaxTxPowerParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070012647 (WDI_SetMaxTxPowerParamsType*)pEventData->pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070012648 wdiSetMaxTxPowerRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070012649 (WDA_SetMaxTxPowerRspCb)pEventData->pCBfnc;
12650
12651 /*-----------------------------------------------------------------------
12652 Get message buffer
12653 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012654if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_MAX_TX_POWER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012655 sizeof(halSetMaxTxPower.setMaxTxPwrParams),
12656 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070012657 ( usSendSize < (usDataOffset + sizeof(halSetMaxTxPower.setMaxTxPwrParams)
Jeff Johnson295189b2012-06-20 16:38:30 -070012658)))
12659 {
12660 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012661 "Unable to get Set Max Tx Power req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070012662 pEventData, pwdiSetMaxTxPowerParams, wdiSetMaxTxPowerRspCb);
12663 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012664 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012665 }
12666
12667 wpalMemoryCopy(halSetMaxTxPower.setMaxTxPwrParams.bssId,
12668 pwdiSetMaxTxPowerParams->wdiMaxTxPowerInfo.macBSSId,
12669 WDI_MAC_ADDR_LEN);
12670
12671 wpalMemoryCopy(halSetMaxTxPower.setMaxTxPwrParams.selfStaMacAddr,
12672 pwdiSetMaxTxPowerParams->wdiMaxTxPowerInfo.macSelfStaMacAddr,
12673 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070012674 halSetMaxTxPower.setMaxTxPwrParams.power =
Jeff Johnson295189b2012-06-20 16:38:30 -070012675 pwdiSetMaxTxPowerParams->wdiMaxTxPowerInfo.ucPower;
Jeff Johnsone7245742012-09-05 17:12:55 -070012676
12677 wpalMemoryCopy( pSendBuffer+usDataOffset,
12678 &halSetMaxTxPower.setMaxTxPwrParams,
12679 sizeof(halSetMaxTxPower.setMaxTxPwrParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070012680
12681 pWDICtx->wdiReqStatusCB = pwdiSetMaxTxPowerParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012682 pWDICtx->pReqStatusUserData = pwdiSetMaxTxPowerParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012683
12684 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012685 Send Del TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012686 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012687 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12688 wdiSetMaxTxPowerRspCb, pEventData->pUserData,
12689 WDI_SET_MAX_TX_POWER_RESP);
12690
Jeff Johnson295189b2012-06-20 16:38:30 -070012691}
12692
Arif Hussaina5ebce02013-08-09 15:09:58 -070012693/*
12694 @brief Process Set Max Tx Power Per Band Request function (called when Main
12695 FSM allows it)
12696
12697 @param pWDICtx: pointer to the WLAN DAL context
12698 pEventData: pointer to the event information structure
12699
12700 @see
12701 @return Result of the function call
12702*/
12703WDI_Status WDI_ProcessSetMaxTxPowerPerBandReq
12704(
12705 WDI_ControlBlockType* pWDICtx,
12706 WDI_EventInfoType* pEventData
12707)
12708{
12709 WDI_SetMaxTxPowerPerBandParamsType* pwdiSetMaxTxPowerPerBandParams = NULL;
12710 WDA_SetMaxTxPowerPerBandRspCb wdiSetMaxTxPowerPerBandRspCb;
12711 wpt_uint8* pSendBuffer = NULL;
12712 wpt_uint16 usDataOffset = 0;
12713 wpt_uint16 usSendSize = 0;
12714 tpSetMaxTxPwrPerBandReq phalSetMxTxPwrPerBand = NULL;
12715 WDI_Status rValue = WDI_STATUS_SUCCESS;
12716 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12717
12718 /*-------------------------------------------------------------------------
12719 Sanity check
12720 -------------------------------------------------------------------------*/
12721 if (( NULL == pEventData ) ||
12722 ( NULL == pEventData->pEventData ) ||
12723 ( NULL == pEventData->pCBfnc ))
12724 {
12725 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
12726 "%s: Invalid parameters", __func__);
12727 WDI_ASSERT(0);
12728 return WDI_STATUS_E_FAILURE;
12729 }
12730 pwdiSetMaxTxPowerPerBandParams = \
12731 (WDI_SetMaxTxPowerPerBandParamsType*)pEventData->pEventData;
12732
12733 wdiSetMaxTxPowerPerBandRspCb = \
12734 (WDA_SetMaxTxPowerPerBandRspCb)pEventData->pCBfnc;
12735
12736 /*-----------------------------------------------------------------------
12737 Get message buffer
12738 -----------------------------------------------------------------------*/
12739
12740 rValue = WDI_GetMessageBuffer(pWDICtx,
12741 WDI_SET_MAX_TX_POWER_PER_BAND_REQ,
12742 sizeof(tSetMaxTxPwrPerBandParams),
12743 &pSendBuffer, &usDataOffset, &usSendSize);
12744
12745 if ((WDI_STATUS_SUCCESS != rValue)|| (usSendSize <
12746 (usDataOffset + sizeof(tSetMaxTxPwrPerBandParams))))
12747 {
12748 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
12749 "Unable to get Set Max Tx Power Per Band req %p %p %p",
12750 pEventData, pwdiSetMaxTxPowerPerBandParams,
12751 wdiSetMaxTxPowerPerBandRspCb);
12752 WDI_ASSERT(0);
12753 return WDI_STATUS_E_FAILURE;
12754 }
12755
12756
12757 phalSetMxTxPwrPerBand = (tpSetMaxTxPwrPerBandReq)(pSendBuffer + usDataOffset);
12758 phalSetMxTxPwrPerBand->setMaxTxPwrPerBandParams.bandInfo = \
12759 pwdiSetMaxTxPowerPerBandParams->wdiMaxTxPowerPerBandInfo.bandInfo;
12760
12761 phalSetMxTxPwrPerBand->setMaxTxPwrPerBandParams.power = \
12762 pwdiSetMaxTxPowerPerBandParams->wdiMaxTxPowerPerBandInfo.ucPower;
12763
12764 pWDICtx->wdiReqStatusCB = pwdiSetMaxTxPowerPerBandParams->wdiReqStatusCB;
12765 pWDICtx->pReqStatusUserData = pwdiSetMaxTxPowerPerBandParams->pUserData;
12766
12767 /*-------------------------------------------------------------------------
12768 Send Set Max Tx Power Per Band Request to HAL
12769 -------------------------------------------------------------------------*/
12770 return WDI_SendMsg(pWDICtx, pSendBuffer, usSendSize,
12771 wdiSetMaxTxPowerPerBandRspCb, pEventData->pUserData,
12772 WDI_SET_MAX_TX_POWER_PER_BAND_RSP);
12773}
12774
schang86c22c42013-03-13 18:41:24 -070012775/**
12776 @brief Process Set Tx Power Request function (called when Main
12777 FSM allows it)
12778
12779 @param pWDICtx: pointer to the WLAN DAL context
12780 pEventData: pointer to the event information structure
12781
12782 @see
12783 @return Result of the function call
12784*/
12785WDI_Status WDI_ProcessSetTxPowerReq
12786(
12787 WDI_ControlBlockType* pWDICtx,
12788 WDI_EventInfoType* pEventData
12789)
12790{
12791 WDI_SetTxPowerParamsType* pwdiSetTxPowerParams = NULL;
12792 WDA_SetTxPowerRspCb wdiSetTxPowerRspCb;
12793 wpt_uint8* pSendBuffer = NULL;
12794 wpt_uint16 usDataOffset = 0;
12795 wpt_uint16 usSendSize = 0;
Leo Chang9a43db92013-03-25 17:39:58 -070012796 tSetTxPwrReqParams *halSetTxPower = NULL;
schang86c22c42013-03-13 18:41:24 -070012797 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12798
12799 /*-------------------------------------------------------------------------
12800 Sanity check
12801 -------------------------------------------------------------------------*/
12802 if (( NULL == pEventData ) ||
12803 ( NULL == pEventData->pEventData ) ||
12804 ( NULL == pEventData->pCBfnc ))
12805 {
12806 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
12807 "%s: Invalid parameters", __func__);
12808 WDI_ASSERT(0);
12809 return WDI_STATUS_E_FAILURE;
12810 }
12811
12812 pwdiSetTxPowerParams =
12813 (WDI_SetTxPowerParamsType*)pEventData->pEventData;
12814 wdiSetTxPowerRspCb =
12815 (WDA_SetTxPowerRspCb)pEventData->pCBfnc;
12816
12817 /*-----------------------------------------------------------------------
12818 Get message buffer
12819 -----------------------------------------------------------------------*/
12820 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_TX_POWER_REQ,
12821 sizeof(tSetTxPwrReqParams),
12822 &pSendBuffer, &usDataOffset, &usSendSize))||
12823 ( usSendSize < (usDataOffset + sizeof(tSetTxPwrReqParams)
12824 )))
12825 {
12826 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012827 "Unable to get Set Max Tx Power req %p %p %p",
schang86c22c42013-03-13 18:41:24 -070012828 pEventData, pwdiSetTxPowerParams, wdiSetTxPowerRspCb);
12829 WDI_ASSERT(0);
12830 return WDI_STATUS_E_FAILURE;
12831 }
12832
Leo Chang9a43db92013-03-25 17:39:58 -070012833 halSetTxPower = (tSetTxPwrReqParams *)(pSendBuffer + usDataOffset);
12834 halSetTxPower->txPower = pwdiSetTxPowerParams->wdiTxPowerInfo.ucPower;
12835 halSetTxPower->bssIdx = pwdiSetTxPowerParams->wdiTxPowerInfo.bssIdx;
schang86c22c42013-03-13 18:41:24 -070012836
12837 pWDICtx->wdiReqStatusCB = pwdiSetTxPowerParams->wdiReqStatusCB;
12838 pWDICtx->pReqStatusUserData = pwdiSetTxPowerParams->pUserData;
12839
12840 /*-------------------------------------------------------------------------
12841 Send Set Tx Power Request to HAL
12842 -------------------------------------------------------------------------*/
12843 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12844 wdiSetTxPowerRspCb, pEventData->pUserData,
12845 WDI_SET_TX_POWER_RESP);
12846}
Jeff Johnson295189b2012-06-20 16:38:30 -070012847
12848/**
12849 @brief Process P2P Notice Of Absence Request function (called when Main FSM
12850 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012851
12852 @param pWDICtx: pointer to the WLAN DAL context
12853 pEventData: pointer to the event information structure
12854
Jeff Johnson295189b2012-06-20 16:38:30 -070012855 @see
12856 @return Result of the function call
12857*/
12858WDI_Status
12859WDI_ProcessP2PGONOAReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012860(
Jeff Johnson295189b2012-06-20 16:38:30 -070012861 WDI_ControlBlockType* pWDICtx,
12862 WDI_EventInfoType* pEventData
12863)
12864{
12865 WDI_SetP2PGONOAReqParamsType* pwdiP2PGONOAReqParams;
12866 WDI_SetP2PGONOAReqParamsRspCb wdiP2PGONOAReqRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070012867 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012868 wpt_uint16 usDataOffset = 0;
12869 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070012870 tSetP2PGONOAParams halSetP2PGONOAParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070012871 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12872
12873 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012874 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012875 -------------------------------------------------------------------------*/
12876 if (( NULL == pEventData ) ||
12877 ( NULL == pEventData->pEventData) ||
12878 ( NULL == pEventData->pCBfnc))
12879 {
12880 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012881 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012882 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012883 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012884 }
12885
Jeff Johnsone7245742012-09-05 17:12:55 -070012886 pwdiP2PGONOAReqParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070012887 (WDI_SetP2PGONOAReqParamsType*)pEventData->pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070012888 wdiP2PGONOAReqRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070012889 (WDI_SetP2PGONOAReqParamsRspCb)pEventData->pCBfnc;
12890 /*-----------------------------------------------------------------------
12891 Get message buffer
12892 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012893 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
12894 WDI_P2P_GO_NOTICE_OF_ABSENCE_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012895 sizeof(halSetP2PGONOAParams),
12896 &pSendBuffer, &usDataOffset, &usSendSize))||
12897 ( usSendSize < (usDataOffset + sizeof(halSetP2PGONOAParams) )))
12898 {
12899 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012900 "Unable to get send buffer in set P2P GO NOA REQ %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070012901 pEventData, pwdiP2PGONOAReqParams, wdiP2PGONOAReqRspCb);
12902 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012903 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012904 }
12905
Jeff Johnsone7245742012-09-05 17:12:55 -070012906 halSetP2PGONOAParams.opp_ps =
Jeff Johnson295189b2012-06-20 16:38:30 -070012907 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.ucOpp_ps;
Jeff Johnsone7245742012-09-05 17:12:55 -070012908 halSetP2PGONOAParams.ctWindow =
Jeff Johnson295189b2012-06-20 16:38:30 -070012909 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.uCtWindow;
12910 halSetP2PGONOAParams.count = pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.ucCount;
Jeff Johnsone7245742012-09-05 17:12:55 -070012911 halSetP2PGONOAParams.duration =
Jeff Johnson295189b2012-06-20 16:38:30 -070012912 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.uDuration;
Jeff Johnsone7245742012-09-05 17:12:55 -070012913 halSetP2PGONOAParams.interval =
Jeff Johnson295189b2012-06-20 16:38:30 -070012914 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.uInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070012915 halSetP2PGONOAParams.single_noa_duration =
Jeff Johnson295189b2012-06-20 16:38:30 -070012916 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.uSingle_noa_duration;
Jeff Johnsone7245742012-09-05 17:12:55 -070012917 halSetP2PGONOAParams.psSelection =
Jeff Johnson295189b2012-06-20 16:38:30 -070012918 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.ucPsSelection;
12919
Jeff Johnsone7245742012-09-05 17:12:55 -070012920 wpalMemoryCopy( pSendBuffer+usDataOffset,
12921 &halSetP2PGONOAParams,
12922 sizeof(halSetP2PGONOAParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070012923
12924 pWDICtx->wdiReqStatusCB = pwdiP2PGONOAReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012925 pWDICtx->pReqStatusUserData = pwdiP2PGONOAReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012926
12927 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012928 Send Update Probe Resp Template Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012929 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012930 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12931 wdiP2PGONOAReqRspCb, pEventData->pUserData,
12932 WDI_P2P_GO_NOTICE_OF_ABSENCE_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012933}/*WDI_ProcessP2PGONOAReq*/
12934
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053012935#ifdef FEATURE_WLAN_TDLS
12936
12937/**
12938 @brief Process P2P Notice Of Absence Request function (called when Main FSM
12939 allows it)
12940
12941 @param pWDICtx: pointer to the WLAN DAL context
12942 pEventData: pointer to the event information structure
12943
12944 @see
12945 @return Result of the function call
12946*/
12947WDI_Status
12948WDI_ProcessTdlsLinkEstablishReq
12949(
12950 WDI_ControlBlockType* pWDICtx,
12951 WDI_EventInfoType* pEventData
12952)
12953{
12954 WDI_SetTDLSLinkEstablishReqParamsType* pwdiTDLSLinkEstablishReqParams;
12955 WDI_SetTDLSLinkEstablishReqParamsRspCb wdiTDLSLinkEstablishReqRspCb;
12956 wpt_uint8* pSendBuffer = NULL;
12957 wpt_uint16 usDataOffset = 0;
12958 wpt_uint16 usSendSize = 0;
12959
12960 tTDLSLinkEstablishedType halSetTDLSLinkEstablishParams;
12961 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12962
12963 /*-------------------------------------------------------------------------
12964 Sanity check
12965 -------------------------------------------------------------------------*/
12966 if (( NULL == pEventData ) ||
12967 ( NULL == pEventData->pEventData) ||
12968 ( NULL == pEventData->pCBfnc))
12969 {
12970 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12971 "%s: Invalid parameters", __func__);
12972 WDI_ASSERT(0);
12973 return WDI_STATUS_E_FAILURE;
12974 }
12975 pwdiTDLSLinkEstablishReqParams =
12976 (WDI_SetTDLSLinkEstablishReqParamsType*)pEventData->pEventData;
12977 wdiTDLSLinkEstablishReqRspCb =
12978 (WDI_SetTDLSLinkEstablishReqParamsRspCb)pEventData->pCBfnc;
12979
12980
12981 /*-----------------------------------------------------------------------
12982 Get message buffer
12983 -----------------------------------------------------------------------*/
12984 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
12985 WDI_TDLS_LINK_ESTABLISH_REQ,
12986 sizeof(halSetTDLSLinkEstablishParams),
12987 &pSendBuffer, &usDataOffset, &usSendSize))||
12988 ( usSendSize < (usDataOffset + sizeof(halSetTDLSLinkEstablishParams) )))
12989 {
12990 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012991 "Unable to get send buffer in set P2P GO NOA REQ %p %p %p",
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053012992 pEventData, pwdiTDLSLinkEstablishReqParams, wdiTDLSLinkEstablishReqRspCb);
12993 WDI_ASSERT(0);
12994 return WDI_STATUS_E_FAILURE;
12995 }
12996
12997 halSetTDLSLinkEstablishParams.staIdx =
12998 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uStaIdx;
12999 halSetTDLSLinkEstablishParams.bIsResponder =
13000 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uIsResponder;
13001 halSetTDLSLinkEstablishParams.acVOUAPSDFlag =
13002 (pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uUapsdQueues & 0x08) >> 3;
13003 halSetTDLSLinkEstablishParams.acVIUAPSDFlag =
13004 (pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uUapsdQueues & 0x04) >> 2;
13005 halSetTDLSLinkEstablishParams.acBKUAPSDFlag =
13006 (pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uUapsdQueues & 0x02) >> 1;
13007 halSetTDLSLinkEstablishParams.acBEUAPSDFlag =
13008 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uUapsdQueues & 0x01;
13009 halSetTDLSLinkEstablishParams.aAck = 0;
13010 halSetTDLSLinkEstablishParams.maxServicePeriodLength = (pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uMaxSp & 0x03);
13011 halSetTDLSLinkEstablishParams.moreDataAck = 0;
13012 halSetTDLSLinkEstablishParams.TPUBufferStaSupport = pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uIsBufSta;
Naresh Jayaramc7cbd782014-02-04 17:38:23 +053013013 halSetTDLSLinkEstablishParams.tdlsOffChannelSupport =
13014 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uIsOffChannelSupported;
13015
13016 wpalMemoryCopy( halSetTDLSLinkEstablishParams.validChannels,
13017 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.validChannels,
13018 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.validChannelsLen);
13019 halSetTDLSLinkEstablishParams.validChannelsLen =
13020 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.validChannelsLen;
13021
13022 wpalMemoryCopy( halSetTDLSLinkEstablishParams.validOperClasses,
13023 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.validOperClasses,
13024 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.validOperClassesLen);
13025 halSetTDLSLinkEstablishParams.validOperClassesLen =
13026 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.validOperClassesLen;
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053013027
13028 wpalMemoryCopy( pSendBuffer+usDataOffset,
13029 &halSetTDLSLinkEstablishParams,
13030 sizeof(halSetTDLSLinkEstablishParams));
13031
13032 pWDICtx->wdiReqStatusCB = pwdiTDLSLinkEstablishReqParams->wdiReqStatusCB;
13033 pWDICtx->pReqStatusUserData = pwdiTDLSLinkEstablishReqParams->pUserData;
13034
13035 /*-------------------------------------------------------------------------
13036 Send Update Probe Resp Template Request to HAL
13037 -------------------------------------------------------------------------*/
13038 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13039 wdiTDLSLinkEstablishReqRspCb, pEventData->pUserData,
13040 WDI_TDLS_LINK_ESTABLISH_REQ_RESP);
13041 return 0;
13042}/*WDI_ProcessTdlsLinkEstablishReq*/
13043
13044
13045#endif
13046
Jeff Johnson295189b2012-06-20 16:38:30 -070013047
13048
13049/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013050 @brief Function to handle the ack from DXE once the power
Jeff Johnson295189b2012-06-20 16:38:30 -070013051 state is set.
Jeff Johnsone7245742012-09-05 17:12:55 -070013052 @param None
13053
13054 @see
13055 @return void
Jeff Johnson295189b2012-06-20 16:38:30 -070013056*/
13057void
13058WDI_SetPowerStateCb
13059(
13060 wpt_status status,
13061 unsigned int dxePhyAddr,
13062 void *pContext
13063)
13064{
13065 wpt_status wptStatus;
13066 WDI_ControlBlockType *pCB = NULL;
13067 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
13068 if(eWLAN_PAL_STATUS_E_FAILURE == status )
13069 {
13070 //it shouldn't happen, put an error msg
13071 }
Jeff Johnsone7245742012-09-05 17:12:55 -070013072 /*
13073 * Trigger the event to bring the Enter BMPS req function to come
13074 * out of wait
Jeff Johnson295189b2012-06-20 16:38:30 -070013075*/
13076 if( NULL != pContext )
13077 {
Jeff Johnsone7245742012-09-05 17:12:55 -070013078 pCB = (WDI_ControlBlockType *)pContext;
Jeff Johnson295189b2012-06-20 16:38:30 -070013079 }
13080 else
13081 {
Jeff Johnsone7245742012-09-05 17:12:55 -070013082 //put an error msg
Jeff Johnson295189b2012-06-20 16:38:30 -070013083 pCB = &gWDICb;
13084 }
13085 pCB->dxePhyAddr = dxePhyAddr;
13086 wptStatus = wpalEventSet(&pCB->setPowerStateEvent);
13087 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
13088 {
13089 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13090 "Failed to set an event");
13091
Jeff Johnsone7245742012-09-05 17:12:55 -070013092 WDI_ASSERT(0);
Jeff Johnson295189b2012-06-20 16:38:30 -070013093 }
13094 return;
13095}
13096
13097
13098/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013099 @brief Process Enter IMPS Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070013100 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013101
13102 @param pWDICtx: pointer to the WLAN DAL context
13103 pEventData: pointer to the event information structure
13104
Jeff Johnson295189b2012-06-20 16:38:30 -070013105 @see
13106 @return Result of the function call
13107*/
13108WDI_Status
13109WDI_ProcessEnterImpsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013110(
Jeff Johnson295189b2012-06-20 16:38:30 -070013111 WDI_ControlBlockType* pWDICtx,
13112 WDI_EventInfoType* pEventData
13113)
13114{
Jeff Johnson43971f52012-07-17 12:26:56 -070013115 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070013116 WDI_EnterImpsRspCb wdiEnterImpsRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013117 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013118 wpt_uint16 usDataOffset = 0;
13119 wpt_uint16 usSendSize = 0;
13120 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13121
13122 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013123 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013124 -------------------------------------------------------------------------*/
13125 if (( NULL == pEventData ) ||
13126 ( NULL == (wdiEnterImpsRspCb = (WDI_EnterImpsRspCb)pEventData->pCBfnc)))
13127 {
13128 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013129 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013130 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080013131 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070013132 }
13133
13134 /*-----------------------------------------------------------------------
13135 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013136 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013137 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013138 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ENTER_IMPS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013139 0,
13140 &pSendBuffer, &usDataOffset, &usSendSize))||
13141 ( usSendSize < (usDataOffset )))
13142 {
13143 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080013144 "Unable to get send buffer in Enter IMPS req %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070013145 pEventData, wdiEnterImpsRspCb);
13146 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080013147 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070013148 }
13149
13150 /* Reset the event to be not signalled */
Jeff Johnson43971f52012-07-17 12:26:56 -070013151 wptStatus = wpalEventReset(&pWDICtx->setPowerStateEvent);
13152 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070013153 {
13154 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13155 "WDI Init failed to reset an event");
13156
Jeff Johnsone7245742012-09-05 17:12:55 -070013157 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080013158 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -070013159 }
13160
13161 // notify DTS that we are entering IMPS
Ravali85acf6b2012-12-12 14:01:38 -080013162 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_IMPS, WDI_SetPowerStateCb);
13163 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus ) {
13164 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain9a5d5382013-11-17 22:05:35 -080013165 "WDTS_SetPowerState returned with status %d when trying to notify DTS that host is entering IMPS", wptStatus);
Ravali85acf6b2012-12-12 14:01:38 -080013166 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080013167 goto fail;
Ravali85acf6b2012-12-12 14:01:38 -080013168 }
Jeff Johnson295189b2012-06-20 16:38:30 -070013169
13170 /*
Jeff Johnsone7245742012-09-05 17:12:55 -070013171 * Wait for the event to be set once the ACK comes back from DXE
Jeff Johnson295189b2012-06-20 16:38:30 -070013172 */
Jeff Johnson43971f52012-07-17 12:26:56 -070013173 wptStatus = wpalEventWait(&pWDICtx->setPowerStateEvent,
13174 WDI_SET_POWER_STATE_TIMEOUT);
13175 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070013176 {
13177 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13178 "WDI Init failed to wait on an event");
13179
Jeff Johnsone7245742012-09-05 17:12:55 -070013180 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080013181 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -070013182 }
13183
13184 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013185 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013186 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013187 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13188 wdiEnterImpsRspCb, pEventData->pUserData, WDI_ENTER_IMPS_RESP);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080013189
13190fail:
13191 // Release the message buffer so we don't leak
13192 wpalMemoryFree(pSendBuffer);
13193
13194failRequest:
13195 //WDA should have failure check to avoid the memory leak
13196 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013197}/*WDI_ProcessEnterImpsReq*/
13198
13199/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013200 @brief Process Exit IMPS Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070013201 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013202
13203 @param pWDICtx: pointer to the WLAN DAL context
13204 pEventData: pointer to the event information structure
13205
Jeff Johnson295189b2012-06-20 16:38:30 -070013206 @see
13207 @return Result of the function call
13208*/
13209WDI_Status
13210WDI_ProcessExitImpsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013211(
Jeff Johnson295189b2012-06-20 16:38:30 -070013212 WDI_ControlBlockType* pWDICtx,
13213 WDI_EventInfoType* pEventData
13214)
13215{
13216 WDI_ExitImpsRspCb wdiExitImpsRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013217 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013218 wpt_uint16 usDataOffset = 0;
13219 wpt_uint16 usSendSize = 0;
13220 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13221
13222 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013223 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013224 -------------------------------------------------------------------------*/
13225 if (( NULL == pEventData ) ||
13226 ( NULL == (wdiExitImpsRspCb = (WDI_ExitImpsRspCb)pEventData->pCBfnc)))
13227 {
13228 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013229 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013230 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013231 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013232 }
13233
13234 /*-----------------------------------------------------------------------
13235 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013236 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013237 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013238 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_EXIT_IMPS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013239 0,
13240 &pSendBuffer, &usDataOffset, &usSendSize))||
13241 ( usSendSize < (usDataOffset )))
13242 {
13243 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080013244 "Unable to get send buffer in Exit IMPS req %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070013245 pEventData, wdiExitImpsRspCb);
13246 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013247 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013248 }
13249
13250 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013251 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013252 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013253 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13254 wdiExitImpsRspCb, pEventData->pUserData, WDI_EXIT_IMPS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013255}/*WDI_ProcessExitImpsReq*/
13256
13257/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013258 @brief Process Enter BMPS Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070013259 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013260
13261 @param pWDICtx: pointer to the WLAN DAL context
13262 pEventData: pointer to the event information structure
13263
Jeff Johnson295189b2012-06-20 16:38:30 -070013264 @see
13265 @return Result of the function call
13266*/
13267WDI_Status
13268WDI_ProcessEnterBmpsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013269(
Jeff Johnson295189b2012-06-20 16:38:30 -070013270 WDI_ControlBlockType* pWDICtx,
13271 WDI_EventInfoType* pEventData
13272)
13273{
13274 WDI_EnterBmpsReqParamsType* pwdiEnterBmpsReqParams = NULL;
13275 WDI_EnterBmpsRspCb wdiEnterBmpsRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013276 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013277 wpt_uint16 usDataOffset = 0;
13278 wpt_uint16 usSendSize = 0;
13279 tHalEnterBmpsReqParams enterBmpsReq;
Jeff Johnson43971f52012-07-17 12:26:56 -070013280 wpt_status wptStatus;
13281
Jeff Johnson295189b2012-06-20 16:38:30 -070013282 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13283
13284 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013285 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013286 -------------------------------------------------------------------------*/
13287 if (( NULL == pEventData ) ||
13288 ( NULL == (pwdiEnterBmpsReqParams = (WDI_EnterBmpsReqParamsType*)pEventData->pEventData)) ||
13289 ( NULL == (wdiEnterBmpsRspCb = (WDI_EnterBmpsRspCb)pEventData->pCBfnc)))
13290 {
13291 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013292 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013293 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080013294 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070013295 }
13296
13297 /*-----------------------------------------------------------------------
13298 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013299 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013300 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013301 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ENTER_BMPS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013302 sizeof(enterBmpsReq),
13303 &pSendBuffer, &usDataOffset, &usSendSize))||
13304 ( usSendSize < (usDataOffset + sizeof(enterBmpsReq) )))
13305 {
13306 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080013307 "Unable to get send buffer in Enter BMPS req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070013308 pEventData, pwdiEnterBmpsReqParams, wdiEnterBmpsRspCb);
13309 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080013310 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070013311 }
13312
13313 /* Reset the event to be not signalled */
Jeff Johnson43971f52012-07-17 12:26:56 -070013314 wptStatus = wpalEventReset(&pWDICtx->setPowerStateEvent);
13315 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070013316 {
13317 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13318 "WDI Init failed to reset an event");
13319
Jeff Johnsone7245742012-09-05 17:12:55 -070013320 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080013321 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -070013322 }
13323
13324 // notify DTS that we are entering BMPS
Ravali85acf6b2012-12-12 14:01:38 -080013325 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_BMPS, WDI_SetPowerStateCb);
13326 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
13327 {
13328 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain9a5d5382013-11-17 22:05:35 -080013329 "WDTS_SetPowerState returned with status %d when trying to notify DTS that we are entering BMPS", wptStatus);
Ravali85acf6b2012-12-12 14:01:38 -080013330 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080013331 goto fail;
Ravali85acf6b2012-12-12 14:01:38 -080013332 }
Jeff Johnson295189b2012-06-20 16:38:30 -070013333
13334/*
Jeff Johnsone7245742012-09-05 17:12:55 -070013335 * Wait for the event to be set once the ACK comes back from DXE
Jeff Johnson295189b2012-06-20 16:38:30 -070013336 */
Jeff Johnson43971f52012-07-17 12:26:56 -070013337 wptStatus = wpalEventWait(&pWDICtx->setPowerStateEvent,
13338 WDI_SET_POWER_STATE_TIMEOUT);
13339 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070013340 {
13341 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13342 "WDI Init failed to wait on an event");
13343
Jeff Johnsone7245742012-09-05 17:12:55 -070013344 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080013345 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -070013346 }
13347
13348 pWDICtx->bInBmps = eWLAN_PAL_TRUE;
13349
13350 enterBmpsReq.bssIdx = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.ucBssIdx;
13351 enterBmpsReq.tbtt = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.uTbtt;
13352 enterBmpsReq.dtimCount = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.ucDtimCount;
13353 enterBmpsReq.dtimPeriod = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.ucDtimPeriod;
13354
13355 // For CCX and 11R Roaming
13356 enterBmpsReq.rssiFilterPeriod = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.rssiFilterPeriod;
13357 enterBmpsReq.numBeaconPerRssiAverage = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.numBeaconPerRssiAverage;
13358 enterBmpsReq.bRssiFilterEnable = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.bRssiFilterEnable;
13359
13360 wpalMemoryCopy( pSendBuffer+usDataOffset,
13361 &enterBmpsReq,
13362 sizeof(enterBmpsReq));
13363
13364 pWDICtx->wdiReqStatusCB = pwdiEnterBmpsReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013365 pWDICtx->pReqStatusUserData = pwdiEnterBmpsReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013366
13367 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013368 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013369 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013370 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13371 wdiEnterBmpsRspCb, pEventData->pUserData, WDI_ENTER_BMPS_RESP);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080013372
13373fail:
13374 // Release the message buffer so we don't leak
13375 wpalMemoryFree(pSendBuffer);
13376
13377failRequest:
13378 //WDA should have failure check to avoid the memory leak
13379 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013380}/*WDI_ProcessEnterBmpsReq*/
13381
13382/**
13383 @brief Process Exit BMPS Request function (called when Main FSM
13384 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013385
13386 @param pWDICtx: pointer to the WLAN DAL context
13387 pEventData: pointer to the event information structure
13388
Jeff Johnson295189b2012-06-20 16:38:30 -070013389 @see
13390 @return Result of the function call
13391*/
13392WDI_Status
13393WDI_ProcessExitBmpsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013394(
Jeff Johnson295189b2012-06-20 16:38:30 -070013395 WDI_ControlBlockType* pWDICtx,
13396 WDI_EventInfoType* pEventData
13397)
13398{
13399 WDI_ExitBmpsReqParamsType* pwdiExitBmpsReqParams = NULL;
13400 WDI_ExitBmpsRspCb wdiExitBmpsRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013401 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013402 wpt_uint16 usDataOffset = 0;
13403 wpt_uint16 usSendSize = 0;
13404 tHalExitBmpsReqParams exitBmpsReq;
13405 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13406
13407 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013408 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013409 -------------------------------------------------------------------------*/
13410 if (( NULL == pEventData ) ||
13411 ( NULL == (pwdiExitBmpsReqParams = (WDI_ExitBmpsReqParamsType*)pEventData->pEventData)) ||
13412 ( NULL == (wdiExitBmpsRspCb = (WDI_ExitBmpsRspCb)pEventData->pCBfnc)))
13413 {
13414 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013415 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013416 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013417 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013418 }
13419
13420 /*-----------------------------------------------------------------------
13421 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013422 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013423 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013424 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_EXIT_BMPS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013425 sizeof(exitBmpsReq),
13426 &pSendBuffer, &usDataOffset, &usSendSize))||
13427 ( usSendSize < (usDataOffset + sizeof(exitBmpsReq) )))
13428 {
13429 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080013430 "Unable to get send buffer in Exit BMPS req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070013431 pEventData, pwdiExitBmpsReqParams, wdiExitBmpsRspCb);
13432 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013433 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013434 }
13435 exitBmpsReq.sendDataNull = pwdiExitBmpsReqParams->wdiExitBmpsInfo.ucSendDataNull;
13436
Jeff Johnsone7245742012-09-05 17:12:55 -070013437 exitBmpsReq.bssIdx = pwdiExitBmpsReqParams->wdiExitBmpsInfo.bssIdx;
13438
Jeff Johnson295189b2012-06-20 16:38:30 -070013439 wpalMemoryCopy( pSendBuffer+usDataOffset,
13440 &exitBmpsReq,
13441 sizeof(exitBmpsReq));
13442
13443 pWDICtx->wdiReqStatusCB = pwdiExitBmpsReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013444 pWDICtx->pReqStatusUserData = pwdiExitBmpsReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013445
13446 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013447 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013448 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013449 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13450 wdiExitBmpsRspCb, pEventData->pUserData, WDI_EXIT_BMPS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013451}/*WDI_ProcessExitBmpsReq*/
13452
13453/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013454 @brief Process Enter UAPSD Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070013455 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013456
13457 @param pWDICtx: pointer to the WLAN DAL context
13458 pEventData: pointer to the event information structure
13459
Jeff Johnson295189b2012-06-20 16:38:30 -070013460 @see
13461 @return Result of the function call
13462*/
13463WDI_Status
13464WDI_ProcessEnterUapsdReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013465(
Jeff Johnson295189b2012-06-20 16:38:30 -070013466 WDI_ControlBlockType* pWDICtx,
13467 WDI_EventInfoType* pEventData
13468)
13469{
13470 WDI_EnterUapsdReqParamsType* pwdiEnterUapsdReqParams = NULL;
13471 WDI_EnterUapsdRspCb wdiEnterUapsdRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013472 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013473 wpt_uint16 usDataOffset = 0;
13474 wpt_uint16 usSendSize = 0;
13475 tUapsdReqParams enterUapsdReq;
13476 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13477
13478 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013479 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013480 -------------------------------------------------------------------------*/
13481 if (( NULL == pEventData ) ||
13482 ( NULL == (pwdiEnterUapsdReqParams = (WDI_EnterUapsdReqParamsType*)pEventData->pEventData)) ||
13483 ( NULL == (wdiEnterUapsdRspCb = (WDI_EnterUapsdRspCb)pEventData->pCBfnc)))
13484 {
13485 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013486 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013487 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013488 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013489 }
13490
13491 /*-----------------------------------------------------------------------
13492 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013493 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013494 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013495 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ENTER_UAPSD_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013496 sizeof(enterUapsdReq),
13497 &pSendBuffer, &usDataOffset, &usSendSize))||
13498 ( usSendSize < (usDataOffset + sizeof(enterUapsdReq) )))
13499 {
13500 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080013501 "Unable to get send buffer in Enter UAPSD req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070013502 pEventData, pwdiEnterUapsdReqParams, wdiEnterUapsdRspCb);
13503 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013504 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013505 }
13506
13507 enterUapsdReq.beDeliveryEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucBeDeliveryEnabled;
13508 enterUapsdReq.beTriggerEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucBeTriggerEnabled;
13509 enterUapsdReq.bkDeliveryEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucBkDeliveryEnabled;
13510 enterUapsdReq.bkTriggerEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucBkTriggerEnabled;
13511 enterUapsdReq.viDeliveryEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucViDeliveryEnabled;
13512 enterUapsdReq.viTriggerEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucViTriggerEnabled;
13513 enterUapsdReq.voDeliveryEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucVoDeliveryEnabled;
13514 enterUapsdReq.voTriggerEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucVoTriggerEnabled;
Jeff Johnsone7245742012-09-05 17:12:55 -070013515 enterUapsdReq.bssIdx = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.bssIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070013516
Jeff Johnsone7245742012-09-05 17:12:55 -070013517 wpalMemoryCopy( pSendBuffer+usDataOffset,
13518 &enterUapsdReq,
13519 sizeof(enterUapsdReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070013520
13521 pWDICtx->wdiReqStatusCB = pwdiEnterUapsdReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013522 pWDICtx->pReqStatusUserData = pwdiEnterUapsdReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013523
13524 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013525 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013526 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013527 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13528 wdiEnterUapsdRspCb, pEventData->pUserData, WDI_ENTER_UAPSD_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013529}/*WDI_ProcessEnterUapsdReq*/
13530
13531/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013532 @brief Process Exit UAPSD Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070013533 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013534
13535 @param pWDICtx: pointer to the WLAN DAL context
13536 pEventData: pointer to the event information structure
13537
Jeff Johnson295189b2012-06-20 16:38:30 -070013538 @see
13539 @return Result of the function call
13540*/
13541WDI_Status
13542WDI_ProcessExitUapsdReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013543(
Jeff Johnson295189b2012-06-20 16:38:30 -070013544 WDI_ControlBlockType* pWDICtx,
13545 WDI_EventInfoType* pEventData
13546)
13547{
13548 WDI_ExitUapsdRspCb wdiExitUapsdRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013549 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013550 wpt_uint16 usDataOffset = 0;
13551 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013552 WDI_ExitUapsdReqParamsType *pExitUapsdparams;
13553 wpt_uint8 bssIdx = 0;
13554
Jeff Johnson295189b2012-06-20 16:38:30 -070013555 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13556
13557 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013558 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013559 -------------------------------------------------------------------------*/
13560 if (( NULL == pEventData ) ||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013561 ( NULL == (pExitUapsdparams = (WDI_ExitUapsdReqParamsType *)pEventData->pEventData)) ||
Jeff Johnson295189b2012-06-20 16:38:30 -070013562 ( NULL == (wdiExitUapsdRspCb = (WDI_ExitUapsdRspCb)pEventData->pCBfnc)))
13563 {
13564 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013565 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013566 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013567 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013568 }
13569
13570 /*-----------------------------------------------------------------------
13571 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013572 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013573 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013574 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_EXIT_UAPSD_REQ,
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013575 sizeof(wpt_uint8),
Jeff Johnson295189b2012-06-20 16:38:30 -070013576 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013577 ( usSendSize < (usDataOffset + sizeof(wpt_uint8))))
Jeff Johnson295189b2012-06-20 16:38:30 -070013578 {
13579 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080013580 "Unable to get send buffer in Exit UAPSD req %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070013581 pEventData, wdiExitUapsdRspCb);
13582 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013583 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013584 }
13585
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013586 bssIdx = pExitUapsdparams->wdiExitUapsdInfo.bssIdx;
13587
13588 wpalMemoryCopy( pSendBuffer+usDataOffset,
13589 &bssIdx,
13590 sizeof(wpt_uint8));
13591
13592 pWDICtx->wdiReqStatusCB = pExitUapsdparams->wdiReqStatusCB;
13593 pWDICtx->pReqStatusUserData = pExitUapsdparams->pUserData;
13594
Jeff Johnson295189b2012-06-20 16:38:30 -070013595 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013596 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013597 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013598 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13599 wdiExitUapsdRspCb, pEventData->pUserData, WDI_EXIT_UAPSD_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013600}/*WDI_ProcessExitUapsdReq*/
13601
13602/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013603 @brief Process Set UAPSD params Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070013604 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013605
13606 @param pWDICtx: pointer to the WLAN DAL context
13607 pEventData: pointer to the event information structure
13608
Jeff Johnson295189b2012-06-20 16:38:30 -070013609 @see
13610 @return Result of the function call
13611*/
13612WDI_Status
13613WDI_ProcessSetUapsdAcParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013614(
Jeff Johnson295189b2012-06-20 16:38:30 -070013615 WDI_ControlBlockType* pWDICtx,
13616 WDI_EventInfoType* pEventData
13617)
13618{
13619 WDI_SetUapsdAcParamsReqParamsType* pwdiSetUapsdAcParams = NULL;
13620 WDI_SetUapsdAcParamsCb wdiSetUapsdAcParamsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013621 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013622 wpt_uint16 usDataOffset = 0;
13623 wpt_uint16 usSendSize = 0;
13624 tUapsdInfo uapsdAcParamsReq;
13625 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13626
13627 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013628 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013629 -------------------------------------------------------------------------*/
13630 if (( NULL == pEventData ) ||
13631 ( NULL == (pwdiSetUapsdAcParams = (WDI_SetUapsdAcParamsReqParamsType*)pEventData->pEventData)) ||
13632 ( NULL == (wdiSetUapsdAcParamsCb = (WDI_SetUapsdAcParamsCb)pEventData->pCBfnc)))
13633 {
13634 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013635 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013636 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013637 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013638 }
13639
13640 /*-----------------------------------------------------------------------
13641 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013642 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013643 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013644 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_UAPSD_PARAM_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013645 sizeof(uapsdAcParamsReq),
13646 &pSendBuffer, &usDataOffset, &usSendSize))||
13647 ( usSendSize < (usDataOffset + sizeof(uapsdAcParamsReq) )))
13648 {
13649 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080013650 "Unable to get send buffer in Set UAPSD params req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070013651 pEventData, pwdiSetUapsdAcParams, wdiSetUapsdAcParamsCb);
13652 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013653 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013654 }
13655
13656 uapsdAcParamsReq.ac = pwdiSetUapsdAcParams->wdiUapsdInfo.ucAc;
13657 uapsdAcParamsReq.staidx = pwdiSetUapsdAcParams->wdiUapsdInfo.ucSTAIdx;
13658 uapsdAcParamsReq.up = pwdiSetUapsdAcParams->wdiUapsdInfo.ucUp;
13659 uapsdAcParamsReq.delayInterval = pwdiSetUapsdAcParams->wdiUapsdInfo.uDelayInterval;
13660 uapsdAcParamsReq.srvInterval = pwdiSetUapsdAcParams->wdiUapsdInfo.uSrvInterval;
13661 uapsdAcParamsReq.susInterval = pwdiSetUapsdAcParams->wdiUapsdInfo.uSusInterval;
13662
Jeff Johnsone7245742012-09-05 17:12:55 -070013663 wpalMemoryCopy( pSendBuffer+usDataOffset,
13664 &uapsdAcParamsReq,
13665 sizeof(uapsdAcParamsReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070013666
13667 pWDICtx->wdiReqStatusCB = pwdiSetUapsdAcParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013668 pWDICtx->pReqStatusUserData = pwdiSetUapsdAcParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013669
13670 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013671 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013672 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013673 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13674 wdiSetUapsdAcParamsCb, pEventData->pUserData, WDI_SET_UAPSD_PARAM_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013675}/*WDI_ProcessSetUapsdAcParamsReq*/
13676
13677/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013678 @brief Process update UAPSD params Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070013679 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013680
13681 @param pWDICtx: pointer to the WLAN DAL context
13682 pEventData: pointer to the event information structure
13683
Jeff Johnson295189b2012-06-20 16:38:30 -070013684 @see
13685 @return Result of the function call
13686*/
13687WDI_Status
13688WDI_ProcessUpdateUapsdParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013689(
Jeff Johnson295189b2012-06-20 16:38:30 -070013690 WDI_ControlBlockType* pWDICtx,
13691 WDI_EventInfoType* pEventData
13692)
13693{
13694 WDI_UpdateUapsdReqParamsType* pwdiUpdateUapsdReqParams = NULL;
13695 WDI_UpdateUapsdParamsCb wdiUpdateUapsdParamsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013696 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013697 wpt_uint16 usDataOffset = 0;
13698 wpt_uint16 usSendSize = 0;
13699 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13700
13701 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013702 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013703 -------------------------------------------------------------------------*/
13704 if (( NULL == pEventData ) ||
13705 ( NULL == (pwdiUpdateUapsdReqParams = (WDI_UpdateUapsdReqParamsType*)pEventData->pEventData)) ||
13706 ( NULL == (wdiUpdateUapsdParamsCb = (WDI_UpdateUapsdParamsCb)pEventData->pCBfnc)))
13707 {
13708 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013709 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013710 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013711 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013712 }
13713
13714 /*-----------------------------------------------------------------------
13715 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013716 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013717 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013718 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_UAPSD_PARAM_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013719 sizeof(pwdiUpdateUapsdReqParams->wdiUpdateUapsdInfo),
13720 &pSendBuffer, &usDataOffset, &usSendSize))||
13721 ( usSendSize < (usDataOffset + sizeof(pwdiUpdateUapsdReqParams->wdiUpdateUapsdInfo) )))
13722 {
13723 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080013724 "Unable to get send buffer in Update UAPSD params req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070013725 pEventData, pwdiUpdateUapsdReqParams, wdiUpdateUapsdParamsCb);
13726 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013727 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013728 }
13729
Jeff Johnsone7245742012-09-05 17:12:55 -070013730 wpalMemoryCopy( pSendBuffer+usDataOffset,
13731 &pwdiUpdateUapsdReqParams->wdiUpdateUapsdInfo,
13732 sizeof(pwdiUpdateUapsdReqParams->wdiUpdateUapsdInfo));
Jeff Johnson295189b2012-06-20 16:38:30 -070013733
13734 pWDICtx->wdiReqStatusCB = pwdiUpdateUapsdReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013735 pWDICtx->pReqStatusUserData = pwdiUpdateUapsdReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013736
13737 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013738 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013739 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013740 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13741 wdiUpdateUapsdParamsCb, pEventData->pUserData, WDI_UPDATE_UAPSD_PARAM_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013742}/*WDI_ProcessUpdateUapsdParamsReq*/
13743
13744/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013745 @brief Process Configure RXP filter Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070013746 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013747
13748 @param pWDICtx: pointer to the WLAN DAL context
13749 pEventData: pointer to the event information structure
13750
Jeff Johnson295189b2012-06-20 16:38:30 -070013751 @see
13752 @return Result of the function call
13753*/
13754WDI_Status
13755WDI_ProcessConfigureRxpFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013756(
Jeff Johnson295189b2012-06-20 16:38:30 -070013757 WDI_ControlBlockType* pWDICtx,
13758 WDI_EventInfoType* pEventData
13759)
13760{
13761 WDI_ConfigureRxpFilterReqParamsType* pwdiRxpFilterParams = NULL;
13762 WDI_ConfigureRxpFilterCb wdiConfigureRxpFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013763 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013764 wpt_uint16 usDataOffset = 0;
13765 wpt_uint16 usSendSize = 0;
13766 tHalConfigureRxpFilterReqParams halRxpFilterParams;
13767
13768 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13769
13770 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013771 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013772 -------------------------------------------------------------------------*/
13773 if (( NULL == pEventData ) ||
13774 ( NULL == (pwdiRxpFilterParams = (WDI_ConfigureRxpFilterReqParamsType*)pEventData->pEventData)) ||
13775 ( NULL == (wdiConfigureRxpFilterCb = (WDI_ConfigureRxpFilterCb)pEventData->pCBfnc)))
13776 {
13777 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013778 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013779 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013780 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013781 }
13782
13783 /*-----------------------------------------------------------------------
13784 Get message buffer
13785 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013786 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_CONFIGURE_RXP_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013787 sizeof(halRxpFilterParams),
13788 &pSendBuffer, &usDataOffset, &usSendSize))||
13789 ( usSendSize < (usDataOffset + sizeof(halRxpFilterParams) )))
13790 {
13791 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080013792 "Unable to get send buffer in Set UAPSD params req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070013793 pEventData, pwdiRxpFilterParams, wdiConfigureRxpFilterCb);
13794 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013795 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013796 }
13797
Jeff Johnsone7245742012-09-05 17:12:55 -070013798 halRxpFilterParams.setMcstBcstFilterSetting =
Jeff Johnson295189b2012-06-20 16:38:30 -070013799 pwdiRxpFilterParams->wdiRxpFilterParam.ucSetMcstBcstFilterSetting;
Jeff Johnsone7245742012-09-05 17:12:55 -070013800 halRxpFilterParams.setMcstBcstFilter =
Jeff Johnson295189b2012-06-20 16:38:30 -070013801 pwdiRxpFilterParams->wdiRxpFilterParam.ucSetMcstBcstFilter;
13802
Jeff Johnsone7245742012-09-05 17:12:55 -070013803 wpalMemoryCopy( pSendBuffer+usDataOffset,
13804 &halRxpFilterParams,
13805 sizeof(halRxpFilterParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070013806
13807 pWDICtx->wdiReqStatusCB = pwdiRxpFilterParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013808 pWDICtx->pReqStatusUserData = pwdiRxpFilterParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013809
13810 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013811 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013812 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013813 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13814 wdiConfigureRxpFilterCb, pEventData->pUserData, WDI_CONFIGURE_RXP_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013815}/*WDI_ProcessConfigureRxpFilterReq*/
13816
13817/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013818 @brief Process set beacon filter Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070013819 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013820
13821 @param pWDICtx: pointer to the WLAN DAL context
13822 pEventData: pointer to the event information structure
13823
Jeff Johnson295189b2012-06-20 16:38:30 -070013824 @see
13825 @return Result of the function call
13826*/
13827WDI_Status
13828WDI_ProcessSetBeaconFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013829(
Jeff Johnson295189b2012-06-20 16:38:30 -070013830 WDI_ControlBlockType* pWDICtx,
13831 WDI_EventInfoType* pEventData
13832)
13833{
13834 WDI_BeaconFilterReqParamsType* pwdiBeaconFilterParams = NULL;
13835 WDI_SetBeaconFilterCb wdiBeaconFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013836 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013837 wpt_uint16 usDataOffset = 0;
13838 wpt_uint16 usSendSize = 0;
13839 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13840
13841 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013842 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013843 -------------------------------------------------------------------------*/
13844 if (( NULL == pEventData ) ||
13845 ( NULL == (pwdiBeaconFilterParams = (WDI_BeaconFilterReqParamsType*)pEventData->pEventData)) ||
13846 ( NULL == (wdiBeaconFilterCb = (WDI_SetBeaconFilterCb)pEventData->pCBfnc)))
13847 {
13848 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013849 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013850 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013851 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013852 }
13853
13854 /*-----------------------------------------------------------------------
13855 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013856 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013857 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013858 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_BEACON_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013859 sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo) + pwdiBeaconFilterParams->wdiBeaconFilterInfo.usIeNum * sizeof(tBeaconFilterIe),
13860 &pSendBuffer, &usDataOffset, &usSendSize))||
13861 ( usSendSize < (usDataOffset + sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo) )))
13862 {
13863 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080013864 "Unable to get send buffer in Set beacon filter req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070013865 pEventData, pwdiBeaconFilterParams, wdiBeaconFilterCb);
13866 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013867 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013868 }
13869
Jeff Johnsone7245742012-09-05 17:12:55 -070013870 wpalMemoryCopy( pSendBuffer+usDataOffset,
13871 &pwdiBeaconFilterParams->wdiBeaconFilterInfo,
13872 sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo));
13873 wpalMemoryCopy( pSendBuffer+usDataOffset+sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo),
13874 &pwdiBeaconFilterParams->aFilters[0],
13875 pwdiBeaconFilterParams->wdiBeaconFilterInfo.usIeNum * sizeof(tBeaconFilterIe));
Jeff Johnson295189b2012-06-20 16:38:30 -070013876
13877 pWDICtx->wdiReqStatusCB = pwdiBeaconFilterParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013878 pWDICtx->pReqStatusUserData = pwdiBeaconFilterParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013879
13880 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013881 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013882 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013883 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13884 wdiBeaconFilterCb, pEventData->pUserData, WDI_SET_BEACON_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013885}/*WDI_ProcessSetBeaconFilterReq*/
13886
13887/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013888 @brief Process remove beacon filter Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070013889 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013890
13891 @param pWDICtx: pointer to the WLAN DAL context
13892 pEventData: pointer to the event information structure
13893
Jeff Johnson295189b2012-06-20 16:38:30 -070013894 @see
13895 @return Result of the function call
13896*/
13897WDI_Status
13898WDI_ProcessRemBeaconFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013899(
Jeff Johnson295189b2012-06-20 16:38:30 -070013900 WDI_ControlBlockType* pWDICtx,
13901 WDI_EventInfoType* pEventData
13902)
13903{
13904 WDI_RemBeaconFilterReqParamsType* pwdiBeaconFilterParams = NULL;
13905 WDI_RemBeaconFilterCb wdiBeaconFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013906 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013907 wpt_uint16 usDataOffset = 0;
13908 wpt_uint16 usSendSize = 0;
13909 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13910
13911 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013912 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013913 -------------------------------------------------------------------------*/
13914 if (( NULL == pEventData ) ||
13915 ( NULL == (pwdiBeaconFilterParams = (WDI_RemBeaconFilterReqParamsType*)pEventData->pEventData)) ||
13916 ( NULL == (wdiBeaconFilterCb = (WDI_RemBeaconFilterCb)pEventData->pCBfnc)))
13917 {
13918 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013919 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013920 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013921 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013922 }
13923
13924 /*-----------------------------------------------------------------------
13925 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013926 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013927 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013928 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_REM_BEACON_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013929 sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo),
13930 &pSendBuffer, &usDataOffset, &usSendSize))||
13931 ( usSendSize < (usDataOffset + sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo) )))
13932 {
13933 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080013934 "Unable to get send buffer in remove beacon filter req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070013935 pEventData, pwdiBeaconFilterParams, wdiBeaconFilterCb);
13936 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013937 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013938 }
13939
Jeff Johnsone7245742012-09-05 17:12:55 -070013940 wpalMemoryCopy( pSendBuffer+usDataOffset,
13941 &pwdiBeaconFilterParams->wdiBeaconFilterInfo,
13942 sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo));
Jeff Johnson295189b2012-06-20 16:38:30 -070013943
13944 pWDICtx->wdiReqStatusCB = pwdiBeaconFilterParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013945 pWDICtx->pReqStatusUserData = pwdiBeaconFilterParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013946
13947 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013948 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013949 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013950 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13951 wdiBeaconFilterCb, pEventData->pUserData, WDI_REM_BEACON_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013952}
13953
13954/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013955 @brief Process set RSSI thresholds Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070013956 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013957
13958 @param pWDICtx: pointer to the WLAN DAL context
13959 pEventData: pointer to the event information structure
13960
Jeff Johnson295189b2012-06-20 16:38:30 -070013961 @see
13962 @return Result of the function call
13963*/
13964WDI_Status
13965WDI_ProcessSetRSSIThresholdsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013966(
Jeff Johnson295189b2012-06-20 16:38:30 -070013967 WDI_ControlBlockType* pWDICtx,
13968 WDI_EventInfoType* pEventData
13969)
13970{
13971 WDI_SetRSSIThresholdsReqParamsType* pwdiRSSIThresholdsParams = NULL;
13972 WDI_SetRSSIThresholdsCb wdiRSSIThresholdsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013973 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013974 wpt_uint16 usDataOffset = 0;
13975 wpt_uint16 usSendSize = 0;
13976 tHalRSSIThresholds rssiThresholdsReq;
13977 WDI_Status ret_status = 0;
13978 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13979
13980 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013981 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013982 -------------------------------------------------------------------------*/
13983 if (( NULL == pEventData ) ||
13984 ( NULL == (pwdiRSSIThresholdsParams = (WDI_SetRSSIThresholdsReqParamsType*)pEventData->pEventData)) ||
13985 ( NULL == (wdiRSSIThresholdsCb = (WDI_SetRSSIThresholdsCb)pEventData->pCBfnc)))
13986 {
13987 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013988 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013989 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013990 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013991 }
13992
13993 /*-----------------------------------------------------------------------
13994 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013995 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013996 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013997 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_RSSI_THRESHOLDS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013998 sizeof(rssiThresholdsReq),
13999 &pSendBuffer, &usDataOffset, &usSendSize))||
14000 ( usSendSize < (usDataOffset + sizeof(rssiThresholdsReq) )))
14001 {
14002 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014003 "Unable to get send buffer in remove beacon filter req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014004 pEventData, pwdiRSSIThresholdsParams, wdiRSSIThresholdsCb);
14005 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014006 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014007 }
14008
Jeff Johnsone7245742012-09-05 17:12:55 -070014009 rssiThresholdsReq.bReserved10 =
Jeff Johnson295189b2012-06-20 16:38:30 -070014010 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bReserved10;
Jeff Johnsone7245742012-09-05 17:12:55 -070014011 rssiThresholdsReq.bRssiThres1NegNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070014012 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres1NegNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070014013 rssiThresholdsReq.bRssiThres1PosNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070014014 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres1PosNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070014015 rssiThresholdsReq.bRssiThres2NegNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070014016 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres2NegNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070014017 rssiThresholdsReq.bRssiThres2PosNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070014018 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres2PosNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070014019 rssiThresholdsReq.bRssiThres3NegNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070014020 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres3NegNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070014021 rssiThresholdsReq.bRssiThres3PosNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070014022 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres3PosNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070014023 rssiThresholdsReq.ucRssiThreshold1 =
Jeff Johnson295189b2012-06-20 16:38:30 -070014024 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.ucRssiThreshold1;
Jeff Johnsone7245742012-09-05 17:12:55 -070014025 rssiThresholdsReq.ucRssiThreshold2 =
Jeff Johnson295189b2012-06-20 16:38:30 -070014026 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.ucRssiThreshold2;
Jeff Johnsone7245742012-09-05 17:12:55 -070014027 rssiThresholdsReq.ucRssiThreshold3 =
Jeff Johnson295189b2012-06-20 16:38:30 -070014028 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.ucRssiThreshold3;
14029
Jeff Johnsone7245742012-09-05 17:12:55 -070014030 wpalMemoryCopy( pSendBuffer+usDataOffset,
14031 &rssiThresholdsReq,
14032 sizeof(rssiThresholdsReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070014033
14034 pWDICtx->wdiReqStatusCB = pwdiRSSIThresholdsParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014035 pWDICtx->pReqStatusUserData = pwdiRSSIThresholdsParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014036
14037 /*-------------------------------------------------------------------------
14038 Send Set threshold req to HAL
14039 -------------------------------------------------------------------------*/
14040 if ((ret_status = WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14041 wdiRSSIThresholdsCb, pEventData->pUserData, WDI_SET_RSSI_THRESHOLDS_RESP)) == WDI_STATUS_SUCCESS)
14042 {
14043 // When we are in idle state WDI_STARTED_ST and we receive indication for threshold
14044 // req. Then as a result of processing the threshold cross ind, we trigger
14045 // a Set threshold req, then we need to indicate to WDI that it needs to
14046 // go to busy state as a result of the indication as we sent a req in the
14047 // same WDI context.
14048 // Hence expected state transition is to busy.
14049 pWDICtx->ucExpectedStateTransition = WDI_BUSY_ST;
14050 }
14051
14052 return ret_status;
14053}
14054
14055/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014056 @brief Process set RSSI thresholds Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070014057 when Main FSM 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_ProcessHostOffloadReq
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_HostOffloadReqParamsType* pwdiHostOffloadParams = NULL;
14073 WDI_HostOffloadCb wdiHostOffloadCb = 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 tHalHostOffloadReq hostOffloadParams;
14078 tHalNSOffloadParams nsOffloadParams;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014079 wpt_uint8 ucCurrentBSSSesIdx = 0;
14080 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014081
14082 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14083
14084 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014085 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014086 -------------------------------------------------------------------------*/
14087 if (( NULL == pEventData ) ||
14088 ( NULL == (pwdiHostOffloadParams = (WDI_HostOffloadReqParamsType*)pEventData->pEventData)) ||
14089 ( NULL == (wdiHostOffloadCb = (WDI_HostOffloadCb)pEventData->pCBfnc)))
14090 {
14091 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014092 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014093 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014094 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070014095 }
14096
14097 /*-----------------------------------------------------------------------
14098 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014099 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014100 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014101 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_HOST_OFFLOAD_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014102 sizeof(hostOffloadParams)+sizeof(nsOffloadParams),
14103 &pSendBuffer, &usDataOffset, &usSendSize))||
14104 ( usSendSize < (usDataOffset + sizeof(hostOffloadParams) + sizeof(nsOffloadParams) )))
14105 {
14106 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014107 "Unable to get send buffer in host offload req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014108 pEventData, pwdiHostOffloadParams, wdiHostOffloadCb);
14109 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014110 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070014111 }
14112
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014113 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
14114 pwdiHostOffloadParams->wdiHostOffloadInfo.bssId,
14115 &pBSSSes);
14116 if ( NULL == pBSSSes )
14117 {
14118 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Gopichand Nakkalac6c91902013-05-29 18:53:35 +053014119 " %s : Association for this BSSID does not exist " MAC_ADDRESS_STR,
14120 __func__, MAC_ADDR_ARRAY(pwdiHostOffloadParams->wdiHostOffloadInfo.bssId));
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014121 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014122 }
14123
Jeff Johnson295189b2012-06-20 16:38:30 -070014124 hostOffloadParams.offloadType = pwdiHostOffloadParams->wdiHostOffloadInfo.ucOffloadType;
14125 hostOffloadParams.enableOrDisable = pwdiHostOffloadParams->wdiHostOffloadInfo.ucEnableOrDisable;
Jeff Johnsone7245742012-09-05 17:12:55 -070014126
Jeff Johnson295189b2012-06-20 16:38:30 -070014127 if( HAL_IPV4_ARP_REPLY_OFFLOAD == hostOffloadParams.offloadType )
14128 {
14129 // ARP Offload
14130 wpalMemoryCopy(hostOffloadParams.params.hostIpv4Addr,
14131 pwdiHostOffloadParams->wdiHostOffloadInfo.params.aHostIpv4Addr,
14132 4);
14133 }
14134 else
14135 {
14136 // NS Offload
14137 wpalMemoryCopy(hostOffloadParams.params.hostIpv6Addr,
14138 pwdiHostOffloadParams->wdiHostOffloadInfo.params.aHostIpv6Addr,
14139 16);
14140
14141#ifdef WLAN_NS_OFFLOAD
14142 // copy pwdiHostOffloadParams->wdiNsOffloadParams into nsOffloadParams
14143 wpalMemoryCopy(nsOffloadParams.srcIPv6Addr,
14144 pwdiHostOffloadParams->wdiNsOffloadParams.srcIPv6Addr,
14145 16);
14146 wpalMemoryCopy(nsOffloadParams.selfIPv6Addr,
14147 pwdiHostOffloadParams->wdiNsOffloadParams.selfIPv6Addr,
14148 16);
14149 wpalMemoryCopy(nsOffloadParams.targetIPv6Addr1,
14150 pwdiHostOffloadParams->wdiNsOffloadParams.targetIPv6Addr1,
14151 16);
14152 wpalMemoryCopy(nsOffloadParams.targetIPv6Addr2,
14153 pwdiHostOffloadParams->wdiNsOffloadParams.targetIPv6Addr2,
14154 16);
14155 wpalMemoryCopy(nsOffloadParams.selfMacAddr,
14156 pwdiHostOffloadParams->wdiNsOffloadParams.selfMacAddr,
14157 6);
Gopichand Nakkala746a9452013-06-11 12:45:54 +053014158 nsOffloadParams.srcIPv6AddrValid =
14159 pwdiHostOffloadParams->wdiNsOffloadParams.srcIPv6AddrValid;
14160
14161 nsOffloadParams.targetIPv6Addr1Valid =
14162 pwdiHostOffloadParams->wdiNsOffloadParams.targetIPv6Addr1Valid;
14163
14164 nsOffloadParams.targetIPv6Addr2Valid =
14165 pwdiHostOffloadParams->wdiNsOffloadParams.targetIPv6Addr2Valid;
14166
14167 nsOffloadParams.slotIndex =
14168 pwdiHostOffloadParams->wdiNsOffloadParams.slotIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070014169
Jeff Johnson295189b2012-06-20 16:38:30 -070014170#endif // WLAN_NS_OFFLOAD
14171 }
14172
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014173 nsOffloadParams.bssIdx = pBSSSes->ucBSSIdx;
14174
Jeff Johnson295189b2012-06-20 16:38:30 -070014175 // copy hostOffloadParams into pSendBuffer
14176 wpalMemoryCopy( pSendBuffer+usDataOffset,
14177 &hostOffloadParams,
14178 sizeof(hostOffloadParams));
14179
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014180 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION) )
Jeff Johnson295189b2012-06-20 16:38:30 -070014181 {
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014182 // copy nsOffloadParams into pSendBuffer
14183 wpalMemoryCopy( pSendBuffer+usDataOffset+sizeof(hostOffloadParams),
Jeff Johnson295189b2012-06-20 16:38:30 -070014184 &nsOffloadParams,
14185 sizeof(nsOffloadParams));
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014186 }
14187 else
14188 {
14189#ifdef WLAN_NS_OFFLOAD
14190 if( HAL_IPV6_NS_OFFLOAD == hostOffloadParams.offloadType )
14191 {
14192 // copy nsOffloadParams into pSendBuffer
14193 wpalMemoryCopy( pSendBuffer+usDataOffset+sizeof(hostOffloadParams),
14194 &nsOffloadParams,
14195 sizeof(nsOffloadParams));
14196 }
14197#endif
14198 }
Jeff Johnson295189b2012-06-20 16:38:30 -070014199
14200 pWDICtx->wdiReqStatusCB = pwdiHostOffloadParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014201 pWDICtx->pReqStatusUserData = pwdiHostOffloadParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014202
14203 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014204 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014205 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014206 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14207 wdiHostOffloadCb, pEventData->pUserData, WDI_HOST_OFFLOAD_RESP);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014208
14209fail:
14210 // Release the message buffer so we don't leak
14211 wpalMemoryFree(pSendBuffer);
14212
14213failRequest:
14214 //WDA should have failure check to avoid the memory leak
14215 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014216}/*WDI_ProcessHostOffloadReq*/
14217
14218/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014219 @brief Process Keep Alive Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070014220 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014221
14222 @param pWDICtx: pointer to the WLAN DAL context
14223 pEventData: pointer to the event information structure
14224
Jeff Johnson295189b2012-06-20 16:38:30 -070014225 @see
14226 @return Result of the function call
14227*/
14228WDI_Status
14229WDI_ProcessKeepAliveReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014230(
Jeff Johnson295189b2012-06-20 16:38:30 -070014231 WDI_ControlBlockType* pWDICtx,
14232 WDI_EventInfoType* pEventData
14233)
14234{
14235 WDI_KeepAliveReqParamsType* pwdiKeepAliveParams = NULL;
14236 WDI_KeepAliveCb wdiKeepAliveCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014237 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014238 wpt_uint16 usDataOffset = 0;
14239 wpt_uint16 usSendSize = 0;
14240 tHalKeepAliveReq keepAliveReq;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014241 wpt_uint8 ucCurrentBSSSesIdx = 0;
14242 WDI_BSSSessionType* pBSSSes = NULL;
14243
Jeff Johnson295189b2012-06-20 16:38:30 -070014244 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14245
14246 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014247 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014248 -------------------------------------------------------------------------*/
14249 if (( NULL == pEventData ) ||
14250 ( NULL == (pwdiKeepAliveParams = (WDI_KeepAliveReqParamsType*)pEventData->pEventData)) ||
14251 ( NULL == (wdiKeepAliveCb = (WDI_KeepAliveCb)pEventData->pCBfnc)))
14252 {
14253 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
14254 "Invalid parameters in Keep Alive req");
14255 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014256 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070014257 }
14258
14259 /*-----------------------------------------------------------------------
14260 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014261 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014262 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014263 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_KEEP_ALIVE_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014264 sizeof(keepAliveReq),
14265 &pSendBuffer, &usDataOffset, &usSendSize))||
14266 ( usSendSize < (usDataOffset + sizeof(keepAliveReq) )))
14267 {
14268 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014269 "Unable to get send buffer in keep alive req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014270 pEventData, pwdiKeepAliveParams, wdiKeepAliveCb);
14271 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014272 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070014273 }
14274
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014275 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
14276 pwdiKeepAliveParams->wdiKeepAliveInfo.bssId,
14277 &pBSSSes);
14278 if ( NULL == pBSSSes )
14279 {
14280 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014281 " %s : Association for this BSSID does not exist",__func__);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014282 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014283 }
14284
Jeff Johnson295189b2012-06-20 16:38:30 -070014285 keepAliveReq.packetType = pwdiKeepAliveParams->wdiKeepAliveInfo.ucPacketType;
14286 keepAliveReq.timePeriod = pwdiKeepAliveParams->wdiKeepAliveInfo.ucTimePeriod;
14287
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014288 keepAliveReq.bssIdx = pBSSSes->ucBSSIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070014289
Jeff Johnson295189b2012-06-20 16:38:30 -070014290 if(pwdiKeepAliveParams->wdiKeepAliveInfo.ucPacketType == 2)
14291 {
14292 wpalMemoryCopy(keepAliveReq.hostIpv4Addr,
14293 pwdiKeepAliveParams->wdiKeepAliveInfo.aHostIpv4Addr,
14294 HAL_IPV4_ADDR_LEN);
14295 wpalMemoryCopy(keepAliveReq.destIpv4Addr,
14296 pwdiKeepAliveParams->wdiKeepAliveInfo.aDestIpv4Addr,
Jeff Johnsone7245742012-09-05 17:12:55 -070014297 HAL_IPV4_ADDR_LEN);
Jeff Johnson295189b2012-06-20 16:38:30 -070014298 wpalMemoryCopy(keepAliveReq.destMacAddr,
14299 pwdiKeepAliveParams->wdiKeepAliveInfo.aDestMacAddr,
14300 HAL_MAC_ADDR_LEN);
14301 }
Jeff Johnsone7245742012-09-05 17:12:55 -070014302
14303 wpalMemoryCopy( pSendBuffer+usDataOffset,
14304 &keepAliveReq,
14305 sizeof(keepAliveReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070014306
14307 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnson5b414462013-11-22 16:44:20 -080014308 "Process keep alive req %zu", sizeof(keepAliveReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070014309
14310 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnson5b414462013-11-22 16:44:20 -080014311 "Process keep alive req time period %d",
14312 keepAliveReq.timePeriod);
Jeff Johnson295189b2012-06-20 16:38:30 -070014313
14314 pWDICtx->wdiReqStatusCB = pwdiKeepAliveParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014315 pWDICtx->pReqStatusUserData = pwdiKeepAliveParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014316
14317 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
14318 "Sending keep alive req to HAL");
14319
14320 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014321 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014322 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014323 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14324 wdiKeepAliveCb, pEventData->pUserData, WDI_KEEP_ALIVE_RESP);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014325
14326fail:
14327 // Release the message buffer so we don't leak
14328 wpalMemoryFree(pSendBuffer);
14329
14330failRequest:
14331 //WDA should have failure check to avoid the memory leak
14332 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014333}/*WDI_ProcessKeepAliveReq*/
14334
14335
14336/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014337 @brief Process Wowl add bc ptrn Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070014338 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014339
14340 @param pWDICtx: pointer to the WLAN DAL context
14341 pEventData: pointer to the event information structure
14342
Jeff Johnson295189b2012-06-20 16:38:30 -070014343 @see
14344 @return Result of the function call
14345*/
14346WDI_Status
14347WDI_ProcessWowlAddBcPtrnReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014348(
Jeff Johnson295189b2012-06-20 16:38:30 -070014349 WDI_ControlBlockType* pWDICtx,
14350 WDI_EventInfoType* pEventData
14351)
14352{
14353 WDI_WowlAddBcPtrnReqParamsType* pwdiWowlAddBcPtrnParams = NULL;
14354 WDI_WowlAddBcPtrnCb wdiWowlAddBcPtrnCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014355 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014356 wpt_uint16 usDataOffset = 0;
14357 wpt_uint16 usSendSize = 0;
14358 tHalWowlAddBcastPtrn wowlAddBcPtrnReq;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014359 wpt_uint8 ucCurrentBSSSesIdx = 0;
14360 WDI_BSSSessionType* pBSSSes = NULL;
14361
Jeff Johnson295189b2012-06-20 16:38:30 -070014362 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14363
14364 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014365 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014366 -------------------------------------------------------------------------*/
14367 if (( NULL == pEventData ) ||
14368 ( NULL == (pwdiWowlAddBcPtrnParams = (WDI_WowlAddBcPtrnReqParamsType*)pEventData->pEventData)) ||
14369 ( NULL == (wdiWowlAddBcPtrnCb = (WDI_WowlAddBcPtrnCb)pEventData->pCBfnc)))
14370 {
14371 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014372 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014373 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014374 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070014375 }
14376
14377 /*-----------------------------------------------------------------------
14378 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014379 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014380 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014381 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_WOWL_ADD_BC_PTRN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014382 sizeof(wowlAddBcPtrnReq),
14383 &pSendBuffer, &usDataOffset, &usSendSize))||
14384 ( usSendSize < (usDataOffset + sizeof(wowlAddBcPtrnReq) )))
14385 {
14386 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014387 "Unable to get send buffer in Wowl add bc ptrn req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014388 pEventData, pwdiWowlAddBcPtrnParams, wdiWowlAddBcPtrnCb);
14389 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014390 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070014391 }
14392
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014393 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
14394 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.bssId,
14395 &pBSSSes);
14396 if ( NULL == pBSSSes )
14397 {
14398 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014399 " %s : Association for this BSSID does not exist",__func__);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014400 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014401 }
14402
Jeff Johnsone7245742012-09-05 17:12:55 -070014403 wowlAddBcPtrnReq.ucPatternId =
Jeff Johnson295189b2012-06-20 16:38:30 -070014404 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternId;
Jeff Johnsone7245742012-09-05 17:12:55 -070014405 wowlAddBcPtrnReq.ucPatternByteOffset =
Jeff Johnson295189b2012-06-20 16:38:30 -070014406 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternByteOffset;
Jeff Johnsone7245742012-09-05 17:12:55 -070014407 wowlAddBcPtrnReq.ucPatternMaskSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070014408 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMaskSize;
Jeff Johnsone7245742012-09-05 17:12:55 -070014409 wowlAddBcPtrnReq.ucPatternSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070014410 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternSize;
14411
14412 if (pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternSize <= HAL_WOWL_BCAST_PATTERN_MAX_SIZE)
14413 {
14414 wpalMemoryCopy(wowlAddBcPtrnReq.ucPattern,
14415 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPattern,
14416 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternSize);
14417 wpalMemoryCopy(wowlAddBcPtrnReq.ucPatternMask,
14418 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMask,
14419 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMaskSize);
14420 }
14421 else
14422 {
14423 wpalMemoryCopy(wowlAddBcPtrnReq.ucPattern,
14424 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPattern,
14425 HAL_WOWL_BCAST_PATTERN_MAX_SIZE);
14426 wpalMemoryCopy(wowlAddBcPtrnReq.ucPatternMask,
14427 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMask,
14428 HAL_WOWL_BCAST_PATTERN_MAX_SIZE);
14429
14430 wpalMemoryCopy(wowlAddBcPtrnReq.ucPattern,
14431 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPattern,
14432 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMaskSize - HAL_WOWL_BCAST_PATTERN_MAX_SIZE);
14433 wpalMemoryCopy(wowlAddBcPtrnReq.ucPatternMask,
14434 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMask,
14435 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMaskSize - HAL_WOWL_BCAST_PATTERN_MAX_SIZE);
14436 }
14437
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014438 wowlAddBcPtrnReq.bssIdx = pBSSSes->ucBSSIdx;
14439
Jeff Johnson295189b2012-06-20 16:38:30 -070014440 wpalMemoryCopy( pSendBuffer+usDataOffset,
14441 &wowlAddBcPtrnReq,
14442 sizeof(wowlAddBcPtrnReq));
14443
14444 pWDICtx->wdiReqStatusCB = pwdiWowlAddBcPtrnParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014445 pWDICtx->pReqStatusUserData = pwdiWowlAddBcPtrnParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014446
14447 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014448 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014449 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014450 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14451 wdiWowlAddBcPtrnCb, pEventData->pUserData, WDI_WOWL_ADD_BC_PTRN_RESP);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014452fail:
14453 // Release the message buffer so we don't leak
14454 wpalMemoryFree(pSendBuffer);
14455
14456failRequest:
14457 //WDA should have failure check to avoid the memory leak
14458 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014459}/*WDI_ProcessWowlAddBcPtrnReq*/
14460
14461/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014462 @brief Process Wowl delete bc ptrn Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070014463 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014464
14465 @param pWDICtx: pointer to the WLAN DAL context
14466 pEventData: pointer to the event information structure
14467
Jeff Johnson295189b2012-06-20 16:38:30 -070014468 @see
14469 @return Result of the function call
14470*/
14471WDI_Status
14472WDI_ProcessWowlDelBcPtrnReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014473(
Jeff Johnson295189b2012-06-20 16:38:30 -070014474 WDI_ControlBlockType* pWDICtx,
14475 WDI_EventInfoType* pEventData
14476)
14477{
14478 WDI_WowlDelBcPtrnReqParamsType* pwdiWowlDelBcPtrnParams = NULL;
14479 WDI_WowlDelBcPtrnCb wdiWowlDelBcPtrnCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014480 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014481 wpt_uint16 usDataOffset = 0;
14482 wpt_uint16 usSendSize = 0;
14483 tHalWowlDelBcastPtrn wowlDelBcPtrnReq;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014484 wpt_uint8 ucCurrentBSSSesIdx = 0;
14485 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014486 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14487
14488 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014489 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014490 -------------------------------------------------------------------------*/
14491 if (( NULL == pEventData ) ||
14492 ( NULL == (pwdiWowlDelBcPtrnParams = (WDI_WowlDelBcPtrnReqParamsType*)pEventData->pEventData)) ||
14493 ( NULL == (wdiWowlDelBcPtrnCb = (WDI_WowlDelBcPtrnCb)pEventData->pCBfnc)))
14494 {
14495 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014496 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014497 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014498 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070014499 }
14500
14501 /*-----------------------------------------------------------------------
14502 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014503 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014504 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014505 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_WOWL_DEL_BC_PTRN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014506 sizeof(wowlDelBcPtrnReq),
14507 &pSendBuffer, &usDataOffset, &usSendSize))||
14508 ( usSendSize < (usDataOffset + sizeof(wowlDelBcPtrnReq) )))
14509 {
14510 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014511 "Unable to get send buffer in Wowl del bc ptrn req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014512 pEventData, pwdiWowlDelBcPtrnParams, wdiWowlDelBcPtrnCb);
14513 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014514 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070014515 }
14516
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014517 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
14518 pwdiWowlDelBcPtrnParams->wdiWowlDelBcPtrnInfo.bssId,
14519 &pBSSSes);
14520 if ( NULL == pBSSSes )
14521 {
14522 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014523 " %s : Association for this BSSID does not exist",__func__);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014524 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014525 }
14526
Jeff Johnsone7245742012-09-05 17:12:55 -070014527 wowlDelBcPtrnReq.ucPatternId =
Jeff Johnson295189b2012-06-20 16:38:30 -070014528 pwdiWowlDelBcPtrnParams->wdiWowlDelBcPtrnInfo.ucPatternId;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014529
14530 wowlDelBcPtrnReq.bssIdx = pBSSSes->ucBSSIdx;
14531
Jeff Johnsone7245742012-09-05 17:12:55 -070014532 wpalMemoryCopy( pSendBuffer+usDataOffset,
14533 &wowlDelBcPtrnReq,
14534 sizeof(wowlDelBcPtrnReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070014535
14536 pWDICtx->wdiReqStatusCB = pwdiWowlDelBcPtrnParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014537 pWDICtx->pReqStatusUserData = pwdiWowlDelBcPtrnParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014538
14539 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014540 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014541 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014542 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14543 wdiWowlDelBcPtrnCb, pEventData->pUserData, WDI_WOWL_DEL_BC_PTRN_RESP);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014544
14545fail:
14546 // Release the message buffer so we don't leak
14547 wpalMemoryFree(pSendBuffer);
14548
14549failRequest:
14550 //WDA should have failure check to avoid the memory leak
14551 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014552}/*WDI_ProcessWowlDelBcPtrnReq*/
14553
14554/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014555 @brief Process Wowl enter Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070014556 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014557
14558 @param pWDICtx: pointer to the WLAN DAL context
14559 pEventData: pointer to the event information structure
14560
Jeff Johnson295189b2012-06-20 16:38:30 -070014561 @see
14562 @return Result of the function call
14563*/
14564WDI_Status
14565WDI_ProcessWowlEnterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014566(
Jeff Johnson295189b2012-06-20 16:38:30 -070014567 WDI_ControlBlockType* pWDICtx,
14568 WDI_EventInfoType* pEventData
14569)
14570{
14571 WDI_WowlEnterReqParamsType* pwdiWowlEnterParams = NULL;
14572 WDI_WowlEnterReqCb wdiWowlEnterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014573 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014574 wpt_uint16 usDataOffset = 0;
14575 wpt_uint16 usSendSize = 0;
14576 tHalWowlEnterParams wowlEnterReq;
14577 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14578
14579 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014580 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014581 -------------------------------------------------------------------------*/
14582 if (( NULL == pEventData ) ||
14583 ( NULL == (pwdiWowlEnterParams = (WDI_WowlEnterReqParamsType*)pEventData->pEventData)) ||
14584 ( NULL == (wdiWowlEnterCb = (WDI_WowlEnterReqCb)pEventData->pCBfnc)))
14585 {
14586 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014587 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014588 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014589 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014590 }
14591
14592 /*-----------------------------------------------------------------------
14593 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014594 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014595 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014596 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_WOWL_ENTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014597 sizeof(wowlEnterReq),
14598 &pSendBuffer, &usDataOffset, &usSendSize))||
14599 ( usSendSize < (usDataOffset + sizeof(wowlEnterReq) )))
14600 {
14601 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014602 "Unable to get send buffer in Wowl enter req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014603 pEventData, pwdiWowlEnterParams, wdiWowlEnterCb);
14604 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014605 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014606 }
14607
Kumar Anandaca924e2013-07-22 14:35:34 -070014608 wpalMemoryZero(&wowlEnterReq, sizeof(tHalWowlEnterParams));
14609
Jeff Johnsone7245742012-09-05 17:12:55 -070014610 wowlEnterReq.ucMagicPktEnable =
Jeff Johnson295189b2012-06-20 16:38:30 -070014611 pwdiWowlEnterParams->wdiWowlEnterInfo.ucMagicPktEnable;
Jeff Johnsone7245742012-09-05 17:12:55 -070014612 wowlEnterReq.ucPatternFilteringEnable =
Jeff Johnson295189b2012-06-20 16:38:30 -070014613 pwdiWowlEnterParams->wdiWowlEnterInfo.ucPatternFilteringEnable;
Jeff Johnsone7245742012-09-05 17:12:55 -070014614 wowlEnterReq.ucUcastPatternFilteringEnable =
Jeff Johnson295189b2012-06-20 16:38:30 -070014615 pwdiWowlEnterParams->wdiWowlEnterInfo.ucUcastPatternFilteringEnable;
Jeff Johnsone7245742012-09-05 17:12:55 -070014616 wowlEnterReq.ucWowChnlSwitchRcv =
Jeff Johnson295189b2012-06-20 16:38:30 -070014617 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowChnlSwitchRcv;
Jeff Johnsone7245742012-09-05 17:12:55 -070014618 wowlEnterReq.ucWowDeauthRcv =
Jeff Johnson295189b2012-06-20 16:38:30 -070014619 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowDeauthRcv;
Jeff Johnsone7245742012-09-05 17:12:55 -070014620 wowlEnterReq.ucWowDisassocRcv =
Jeff Johnson295189b2012-06-20 16:38:30 -070014621 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowDisassocRcv;
Jeff Johnsone7245742012-09-05 17:12:55 -070014622 wowlEnterReq.ucWowMaxMissedBeacons =
Jeff Johnson295189b2012-06-20 16:38:30 -070014623 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowMaxMissedBeacons;
Jeff Johnsone7245742012-09-05 17:12:55 -070014624 wowlEnterReq.ucWowMaxSleepUsec =
Jeff Johnson295189b2012-06-20 16:38:30 -070014625 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowMaxSleepUsec;
14626
14627#ifdef WLAN_WAKEUP_EVENTS
14628 wowlEnterReq.ucWoWEAPIDRequestEnable =
14629 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWoWEAPIDRequestEnable;
14630
14631 wowlEnterReq.ucWoWEAPOL4WayEnable =
14632 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWoWEAPOL4WayEnable;
14633
14634 wowlEnterReq.ucWowNetScanOffloadMatch =
14635 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowNetScanOffloadMatch;
14636
14637 wowlEnterReq.ucWowGTKRekeyError =
14638 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowGTKRekeyError;
14639
14640 wowlEnterReq.ucWoWBSSConnLoss =
14641 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWoWBSSConnLoss;
14642#endif // WLAN_WAKEUP_EVENTS
14643
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014644 wowlEnterReq.bssIdx = pwdiWowlEnterParams->wdiWowlEnterInfo.bssIdx;
14645
Jeff Johnson295189b2012-06-20 16:38:30 -070014646 wpalMemoryCopy(wowlEnterReq.magicPtrn,
14647 pwdiWowlEnterParams->wdiWowlEnterInfo.magicPtrn,
14648 sizeof(tSirMacAddr));
14649
Jeff Johnsone7245742012-09-05 17:12:55 -070014650 wpalMemoryCopy( pSendBuffer+usDataOffset,
14651 &wowlEnterReq,
14652 sizeof(wowlEnterReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070014653
14654 pWDICtx->wdiReqStatusCB = pwdiWowlEnterParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014655 pWDICtx->pReqStatusUserData = pwdiWowlEnterParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014656
14657 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014658 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014659 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014660 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14661 wdiWowlEnterCb, pEventData->pUserData, WDI_WOWL_ENTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070014662}/*WDI_ProcessWowlEnterReq*/
14663
14664/**
14665 @brief Process Wowl exit Request function (called when Main FSM
14666 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014667
14668 @param pWDICtx: pointer to the WLAN DAL context
14669 pEventData: pointer to the event information structure
14670
Jeff Johnson295189b2012-06-20 16:38:30 -070014671 @see
14672 @return Result of the function call
14673*/
14674WDI_Status
14675WDI_ProcessWowlExitReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014676(
Jeff Johnson295189b2012-06-20 16:38:30 -070014677 WDI_ControlBlockType* pWDICtx,
14678 WDI_EventInfoType* pEventData
14679)
14680{
14681 WDI_WowlExitReqCb wdiWowlExitCb = NULL;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014682 WDI_WowlExitReqParamsType* pwdiWowlExitParams = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014683 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014684 wpt_uint16 usDataOffset = 0;
14685 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014686 tHalWowlExitParams wowlExitparams;
Jeff Johnson295189b2012-06-20 16:38:30 -070014687 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14688
14689 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014690 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014691 -------------------------------------------------------------------------*/
14692 if (( NULL == pEventData ) ||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014693 ( NULL == (pwdiWowlExitParams = (WDI_WowlExitReqParamsType *)pEventData->pEventData)) ||
Jeff Johnson295189b2012-06-20 16:38:30 -070014694 ( NULL == (wdiWowlExitCb = (WDI_WowlExitReqCb)pEventData->pCBfnc)))
14695 {
14696 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014697 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014698 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014699 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014700 }
14701
14702 /*-----------------------------------------------------------------------
14703 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014704 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014705 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014706 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_WOWL_EXIT_REQ,
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014707 sizeof(wowlExitparams),
Jeff Johnson295189b2012-06-20 16:38:30 -070014708 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014709 ( usSendSize < (usDataOffset + sizeof(wowlExitparams))))
Jeff Johnson295189b2012-06-20 16:38:30 -070014710 {
14711 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014712 "Unable to get send buffer in Wowl Exit req %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014713 pEventData, wdiWowlExitCb);
14714 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014715 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014716 }
14717
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014718 wowlExitparams.bssIdx = pwdiWowlExitParams->wdiWowlExitInfo.bssIdx;
14719
14720 wpalMemoryCopy( pSendBuffer+usDataOffset,
14721 &wowlExitparams,
14722 sizeof(wowlExitparams));
Jeff Johnson295189b2012-06-20 16:38:30 -070014723 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014724 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014725 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014726 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14727 wdiWowlExitCb, pEventData->pUserData, WDI_WOWL_EXIT_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070014728}/*WDI_ProcessWowlExitReq*/
14729
14730/**
14731 @brief Process Configure Apps Cpu Wakeup State Request function
14732 (called when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014733
14734 @param pWDICtx: pointer to the WLAN DAL context
14735 pEventData: pointer to the event information structure
14736
Jeff Johnson295189b2012-06-20 16:38:30 -070014737 @see
14738 @return Result of the function call
14739*/
14740WDI_Status
14741WDI_ProcessConfigureAppsCpuWakeupStateReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014742(
Jeff Johnson295189b2012-06-20 16:38:30 -070014743 WDI_ControlBlockType* pWDICtx,
14744 WDI_EventInfoType* pEventData
14745)
14746{
14747 WDI_ConfigureAppsCpuWakeupStateReqParamsType* pwdiAppsCpuWakeupStateParams = NULL;
14748 WDI_ConfigureAppsCpuWakeupStateCb wdiConfigureAppsCpuWakeupStateCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014749 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014750 wpt_uint16 usDataOffset = 0;
14751 wpt_uint16 usSendSize = 0;
14752 tHalConfigureAppsCpuWakeupStateReqParams halCfgAppsCpuWakeupStateReqParams;
14753 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14754
14755 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014756 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014757 -------------------------------------------------------------------------*/
14758 if (( NULL == pEventData ) ||
14759 ( NULL == (pwdiAppsCpuWakeupStateParams = (WDI_ConfigureAppsCpuWakeupStateReqParamsType*)pEventData->pEventData)) ||
14760 ( NULL == (wdiConfigureAppsCpuWakeupStateCb = (WDI_ConfigureAppsCpuWakeupStateCb)pEventData->pCBfnc)))
14761 {
14762 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014763 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014764 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014765 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014766 }
14767
14768 /*-----------------------------------------------------------------------
14769 Get message buffer
14770 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014771 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014772 sizeof(halCfgAppsCpuWakeupStateReqParams),
14773 &pSendBuffer, &usDataOffset, &usSendSize))||
14774 ( usSendSize < (usDataOffset + sizeof(pwdiAppsCpuWakeupStateParams->bIsAppsAwake) )))
14775 {
14776 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014777 "Unable to get send buffer in Apps CPU Wakeup State req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014778 pEventData, pwdiAppsCpuWakeupStateParams, wdiConfigureAppsCpuWakeupStateCb);
14779 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014780 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014781 }
14782
Jeff Johnsone7245742012-09-05 17:12:55 -070014783 halCfgAppsCpuWakeupStateReqParams.isAppsCpuAwake =
Jeff Johnson295189b2012-06-20 16:38:30 -070014784 pwdiAppsCpuWakeupStateParams->bIsAppsAwake;
14785
Jeff Johnsone7245742012-09-05 17:12:55 -070014786 wpalMemoryCopy( pSendBuffer+usDataOffset,
14787 &halCfgAppsCpuWakeupStateReqParams,
14788 sizeof(halCfgAppsCpuWakeupStateReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070014789
14790 pWDICtx->wdiReqStatusCB = pwdiAppsCpuWakeupStateParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014791 pWDICtx->pReqStatusUserData = pwdiAppsCpuWakeupStateParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014792
14793 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014794 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014795 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014796 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14797 wdiConfigureAppsCpuWakeupStateCb, pEventData->pUserData,
14798 WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070014799}/*WDI_ProcessConfigureAppsCpuWakeupStateReq*/
14800
14801#ifdef WLAN_FEATURE_VOWIFI_11R
14802/**
14803 @brief Process Aggregated Add TSpec Request function (called when Main FSM
14804 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014805
14806 @param pWDICtx: pointer to the WLAN DAL context
14807 pEventData: pointer to the event information structure
14808
Jeff Johnson295189b2012-06-20 16:38:30 -070014809 @see
14810 @return Result of the function call
14811*/
14812WDI_Status
14813WDI_ProcessAggrAddTSpecReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014814(
Jeff Johnson295189b2012-06-20 16:38:30 -070014815 WDI_ControlBlockType* pWDICtx,
14816 WDI_EventInfoType* pEventData
14817)
14818{
14819 WDI_AggrAddTSReqParamsType* pwdiAggrAddTSParams;
14820 WDI_AggrAddTsRspCb wdiAggrAddTSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070014821 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070014822 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014823 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014824 wpt_uint16 usDataOffset = 0;
14825 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070014826 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070014827 wpt_macAddr macBSSID;
14828 tAggrAddTsReq halAggrAddTsReq;
14829 int i;
14830 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14831
14832 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014833 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014834 -------------------------------------------------------------------------*/
14835 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
14836 ( NULL == pEventData->pCBfnc ))
14837 {
14838 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014839 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014840 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014841 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014842 }
14843 wpalMemoryFill( &halAggrAddTsReq, sizeof(tAggrAddTsReq), 0 );
14844 pwdiAggrAddTSParams = (WDI_AggrAddTSReqParamsType*)pEventData->pEventData;
14845 wdiAggrAddTSRspCb = (WDI_AggrAddTsRspCb)pEventData->pCBfnc;
14846 /*-------------------------------------------------------------------------
14847 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070014848 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070014849 -------------------------------------------------------------------------*/
14850 wpalMutexAcquire(&pWDICtx->wptMutex);
14851
14852 /*------------------------------------------------------------------------
14853 Find the BSS for which the request is made and identify WDI session
14854 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014855 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
14856 pwdiAggrAddTSParams->wdiAggrTsInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070014857 &macBSSID))
14858 {
14859 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014860 "This station does not exist in the WDI Station Table %d",
14861 pwdiAggrAddTSParams->wdiAggrTsInfo.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070014862 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070014863 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014864 }
14865
Jeff Johnsone7245742012-09-05 17:12:55 -070014866 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
14867 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070014868 {
Jeff Johnsone7245742012-09-05 17:12:55 -070014869 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
14870 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
14871 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070014872
14873 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070014874 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070014875 }
Jeff Johnsone7245742012-09-05 17:12:55 -070014876
Jeff Johnson295189b2012-06-20 16:38:30 -070014877 /*------------------------------------------------------------------------
14878 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070014879 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070014880 ------------------------------------------------------------------------*/
14881 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
14882 {
Jeff Johnsone7245742012-09-05 17:12:55 -070014883 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
14884 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
14885 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070014886
Jeff Johnsone7245742012-09-05 17:12:55 -070014887 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070014888 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070014889 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070014890 }
14891
14892 wpalMutexRelease(&pWDICtx->wptMutex);
14893 /*-----------------------------------------------------------------------
14894 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014895 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014896 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014897 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_AGGR_ADD_TS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014898 sizeof(tAggrAddTsParams),
14899 &pSendBuffer, &usDataOffset, &usSendSize))||
14900 ( usSendSize < (usDataOffset + sizeof(tAggrAddTsParams) )))
14901 {
14902 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014903 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014904 pEventData, pwdiAggrAddTSParams, wdiAggrAddTSRspCb);
14905 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014906 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014907 }
14908
Jeff Johnsone7245742012-09-05 17:12:55 -070014909 halAggrAddTsReq.aggrAddTsParam.staIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070014910 pwdiAggrAddTSParams->wdiAggrTsInfo.ucSTAIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070014911 halAggrAddTsReq.aggrAddTsParam.tspecIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070014912 pwdiAggrAddTSParams->wdiAggrTsInfo.ucTspecIdx;
14913
14914 for( i = 0; i < WLAN_HAL_MAX_AC; i++ )
14915 {
Jeff Johnsone7245742012-09-05 17:12:55 -070014916 halAggrAddTsReq.aggrAddTsParam.tspec[i].type =
Jeff Johnson295189b2012-06-20 16:38:30 -070014917 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].ucType;
Jeff Johnsone7245742012-09-05 17:12:55 -070014918 halAggrAddTsReq.aggrAddTsParam.tspec[i].length =
Jeff Johnson295189b2012-06-20 16:38:30 -070014919 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].ucLength;
Jeff Johnsone7245742012-09-05 17:12:55 -070014920 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.ackPolicy =
Jeff Johnson295189b2012-06-20 16:38:30 -070014921 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
14922 ackPolicy;
Jeff Johnsone7245742012-09-05 17:12:55 -070014923 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.accessPolicy =
Jeff Johnson295189b2012-06-20 16:38:30 -070014924 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
14925 accessPolicy;
Jeff Johnsone7245742012-09-05 17:12:55 -070014926 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.userPrio =
Jeff Johnson295189b2012-06-20 16:38:30 -070014927 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
14928 userPrio;
Jeff Johnsone7245742012-09-05 17:12:55 -070014929 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.psb =
Jeff Johnson295189b2012-06-20 16:38:30 -070014930 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
14931 psb;
Jeff Johnsone7245742012-09-05 17:12:55 -070014932 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.aggregation =
Jeff Johnson295189b2012-06-20 16:38:30 -070014933 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
14934 aggregation;
Jeff Johnsone7245742012-09-05 17:12:55 -070014935 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.direction =
Jeff Johnson295189b2012-06-20 16:38:30 -070014936 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
14937 direction;
Jeff Johnsone7245742012-09-05 17:12:55 -070014938 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.tsid =
Jeff Johnson295189b2012-06-20 16:38:30 -070014939 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
14940 trafficType;
Jeff Johnsone7245742012-09-05 17:12:55 -070014941 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.tsid =
Jeff Johnson295189b2012-06-20 16:38:30 -070014942 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
14943 trafficType;
Jeff Johnsone7245742012-09-05 17:12:55 -070014944 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.schedule.rsvd =
Jeff Johnson295189b2012-06-20 16:38:30 -070014945 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiSchedule.rsvd;
Jeff Johnsone7245742012-09-05 17:12:55 -070014946 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.schedule.schedule =
Jeff Johnson295189b2012-06-20 16:38:30 -070014947 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiSchedule.schedule;
Jeff Johnsone7245742012-09-05 17:12:55 -070014948
14949
14950 halAggrAddTsReq.aggrAddTsParam.tspec[i].nomMsduSz =
Jeff Johnson295189b2012-06-20 16:38:30 -070014951 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].usNomMsduSz;
Jeff Johnsone7245742012-09-05 17:12:55 -070014952 halAggrAddTsReq.aggrAddTsParam.tspec[i].maxMsduSz =
Jeff Johnson295189b2012-06-20 16:38:30 -070014953 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].usMaxMsduSz;
Jeff Johnsone7245742012-09-05 17:12:55 -070014954 halAggrAddTsReq.aggrAddTsParam.tspec[i].minSvcInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070014955 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMinSvcInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070014956 halAggrAddTsReq.aggrAddTsParam.tspec[i].maxSvcInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070014957 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMaxSvcInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070014958 halAggrAddTsReq.aggrAddTsParam.tspec[i].inactInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070014959 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uInactInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070014960 halAggrAddTsReq.aggrAddTsParam.tspec[i].suspendInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070014961 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uSuspendInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070014962 halAggrAddTsReq.aggrAddTsParam.tspec[i].svcStartTime =
Jeff Johnson295189b2012-06-20 16:38:30 -070014963 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uSvcStartTime;
Jeff Johnsone7245742012-09-05 17:12:55 -070014964 halAggrAddTsReq.aggrAddTsParam.tspec[i].minDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070014965 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMinDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070014966 halAggrAddTsReq.aggrAddTsParam.tspec[i].meanDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070014967 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMeanDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070014968 halAggrAddTsReq.aggrAddTsParam.tspec[i].peakDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070014969 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uPeakDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070014970 halAggrAddTsReq.aggrAddTsParam.tspec[i].maxBurstSz =
Jeff Johnson295189b2012-06-20 16:38:30 -070014971 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMaxBurstSz;
Jeff Johnsone7245742012-09-05 17:12:55 -070014972 halAggrAddTsReq.aggrAddTsParam.tspec[i].delayBound =
Jeff Johnson295189b2012-06-20 16:38:30 -070014973 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uDelayBound;
Jeff Johnsone7245742012-09-05 17:12:55 -070014974 halAggrAddTsReq.aggrAddTsParam.tspec[i].minPhyRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070014975 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMinPhyRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070014976 halAggrAddTsReq.aggrAddTsParam.tspec[i].surplusBw =
Jeff Johnson295189b2012-06-20 16:38:30 -070014977 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].usSurplusBw;
Jeff Johnsone7245742012-09-05 17:12:55 -070014978 halAggrAddTsReq.aggrAddTsParam.tspec[i].mediumTime =
Jeff Johnson295189b2012-06-20 16:38:30 -070014979 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].usMediumTime;
14980 }
14981
Jeff Johnsone7245742012-09-05 17:12:55 -070014982 wpalMemoryCopy( pSendBuffer+usDataOffset,
14983 &halAggrAddTsReq,
14984 sizeof(halAggrAddTsReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070014985
14986 pWDICtx->wdiReqStatusCB = pwdiAggrAddTSParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014987 pWDICtx->pReqStatusUserData = pwdiAggrAddTSParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014988
14989 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014990 Send Add TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014991 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014992 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070014993 wdiAggrAddTSRspCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -070014994 WDI_AGGR_ADD_TS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070014995}/*WDI_ProcessAggrAddTSpecReq*/
14996#endif /* WLAN_FEATURE_VOWIFI_11R */
14997
14998/**
14999 @brief Process Shutdown Request function (called when Main FSM
15000 allows it)
15001
15002 @param pWDICtx: pointer to the WLAN DAL context
15003 pEventData: pointer to the event information structure
15004
15005 @see
15006 @return Result of the function call
15007*/
15008WDI_Status
15009WDI_ProcessShutdownReq
15010(
15011 WDI_ControlBlockType* pWDICtx,
15012 WDI_EventInfoType* pEventData
15013 )
15014{
15015 wpt_status wptStatus;
15016
15017
15018 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15019
15020 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015021 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015022 -------------------------------------------------------------------------*/
15023 if ( NULL == pEventData )
15024 {
15025 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015026 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015027 WDI_ASSERT(0);
15028 return WDI_STATUS_E_FAILURE;
15029 }
15030
15031 wpalMutexAcquire(&pWDICtx->wptMutex);
15032
15033
15034 gWDIInitialized = eWLAN_PAL_FALSE;
15035 /*! TO DO: stop the data services */
15036 if ( eDRIVER_TYPE_MFG != pWDICtx->driverMode )
15037 {
15038 /*Stop the STA Table !UT- check this logic again
15039 It is safer to do it here than on the response - because a stop is imminent*/
15040 WDI_STATableStop(pWDICtx);
15041
15042 /* Stop Transport Driver, DXE */
15043 WDTS_Stop(pWDICtx);
15044 }
15045
15046 /*Clear all pending request*/
15047 WDI_ClearPendingRequests(pWDICtx);
15048 /* Close Data transport*/
15049 /* FTM mode does not open Data Path */
15050 if ( eDRIVER_TYPE_MFG != pWDICtx->driverMode )
15051 {
15052 WDTS_Close(pWDICtx);
15053 }
15054 /*Close the STA Table !UT- check this logic again*/
15055 WDI_STATableClose(pWDICtx);
15056 /*close the PAL */
15057 wptStatus = wpalClose(pWDICtx->pPALContext);
15058 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
15059 {
15060 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15061 "Failed to wpal Close %d", wptStatus);
15062 WDI_ASSERT(0);
15063 }
15064
15065 /*Transition back to init state*/
15066 WDI_STATE_TRANSITION( pWDICtx, WDI_INIT_ST);
15067
15068 wpalMutexRelease(&pWDICtx->wptMutex);
15069
15070 /*Make sure the expected state is properly defaulted to Init*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015071 pWDICtx->ucExpectedStateTransition = WDI_INIT_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -070015072
15073
Jeff Johnsone7245742012-09-05 17:12:55 -070015074 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015075}/*WDI_ProcessShutdownReq*/
15076
15077/*========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070015078 Main DAL Control Path Response Processing API
Jeff Johnson295189b2012-06-20 16:38:30 -070015079========================================================================*/
15080
15081/**
15082 @brief Process Start Response function (called when a response
15083 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015084
15085 @param pWDICtx: pointer to the WLAN DAL context
15086 pEventData: pointer to the event information structure
15087
Jeff Johnson295189b2012-06-20 16:38:30 -070015088 @see
15089 @return Result of the function call
15090*/
15091WDI_Status
15092WDI_ProcessStartRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015093(
Jeff Johnson295189b2012-06-20 16:38:30 -070015094 WDI_ControlBlockType* pWDICtx,
15095 WDI_EventInfoType* pEventData
15096)
15097{
15098 WDI_StartRspParamsType wdiRspParams;
15099 WDI_StartRspCb wdiStartRspCb = NULL;
15100
15101 tHalMacStartRspParams* startRspParams;
15102
15103#ifndef HAL_SELF_STA_PER_BSS
15104 WDI_AddStaParams wdiAddSTAParam = {0};
15105#endif
15106 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15107
Jeff Johnsone7245742012-09-05 17:12:55 -070015108 wdiStartRspCb = (WDI_StartRspCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070015109 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015110 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015111 -------------------------------------------------------------------------*/
15112 if (( NULL == pEventData ) ||
15113 ( NULL == pEventData->pEventData) ||
15114 ( NULL == wdiStartRspCb ))
15115 {
15116 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015117 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015118 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015119 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015120 }
15121
15122 /*-------------------------------------------------------------------------
15123 Extract response and send it to UMAC
15124 -------------------------------------------------------------------------*/
15125 if ( sizeof(tHalMacStartRspParams) > pEventData->uEventDataSize )
15126 {
15127 // not enough data was received
15128 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnson5b414462013-11-22 16:44:20 -080015129 "Invalid response length in Start Resp Expect %zx Rcvd %x",
Jeff Johnson295189b2012-06-20 16:38:30 -070015130 sizeof(tHalMacStartRspParams), pEventData->uEventDataSize);
15131 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015132 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015133 }
15134
15135 /*-------------------------------------------------------------------------
15136 Unpack HAL Response Message - the header was already extracted by the
Jeff Johnsone7245742012-09-05 17:12:55 -070015137 main Response Handling procedure
Jeff Johnson295189b2012-06-20 16:38:30 -070015138 -------------------------------------------------------------------------*/
15139 startRspParams = (tHalMacStartRspParams *) pEventData->pEventData;
15140
15141 wdiRspParams.ucMaxBssids = startRspParams->ucMaxBssids;
15142 wdiRspParams.ucMaxStations = startRspParams->ucMaxStations;
15143 wdiRspParams.wlanCompiledVersion.major = WLAN_HAL_VER_MAJOR;
15144 wdiRspParams.wlanCompiledVersion.minor = WLAN_HAL_VER_MINOR;
15145 wdiRspParams.wlanCompiledVersion.version = WLAN_HAL_VER_VERSION;
15146 wdiRspParams.wlanCompiledVersion.revision = WLAN_HAL_VER_REVISION;
15147 wdiRspParams.wlanReportedVersion.major =
15148 startRspParams->wcnssWlanVersion.major;
15149 wdiRspParams.wlanReportedVersion.minor =
15150 startRspParams->wcnssWlanVersion.minor;
15151 wdiRspParams.wlanReportedVersion.version =
15152 startRspParams->wcnssWlanVersion.version;
15153 wdiRspParams.wlanReportedVersion.revision =
15154 startRspParams->wcnssWlanVersion.revision;
15155 wpalMemoryCopy(wdiRspParams.wcnssSoftwareVersion,
15156 startRspParams->wcnssCrmVersionString,
15157 sizeof(wdiRspParams.wcnssSoftwareVersion));
15158 wpalMemoryCopy(wdiRspParams.wcnssHardwareVersion,
15159 startRspParams->wcnssWlanVersionString,
15160 sizeof(wdiRspParams.wcnssHardwareVersion));
15161 wdiRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(startRspParams->status);
15162
Pratik Bhalgatd4404592012-11-22 17:49:14 +053015163 /*Save the HAL Version*/
15164 pWDICtx->wlanVersion = wdiRspParams.wlanReportedVersion;
15165
Jeff Johnson295189b2012-06-20 16:38:30 -070015166 wpalMutexAcquire(&pWDICtx->wptMutex);
15167 if ( WDI_STATUS_SUCCESS == wdiRspParams.wdiStatus )
15168 {
15169 pWDICtx->ucExpectedStateTransition = WDI_STARTED_ST;
15170
15171 /*Cache the start response for further use*/
15172 wpalMemoryCopy( &pWDICtx->wdiCachedStartRspParams ,
Jeff Johnsone7245742012-09-05 17:12:55 -070015173 &wdiRspParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070015174 sizeof(pWDICtx->wdiCachedStartRspParams));
15175
15176 }
15177 else
15178 {
15179 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15180 "Failed to start device with status %s(%d)",
15181 WDI_getHALStatusMsgString(startRspParams->status),
15182 startRspParams->status);
15183
15184 /*Set the expected state transition to stopped - because the start has
15185 failed*/
15186 pWDICtx->ucExpectedStateTransition = WDI_STOPPED_ST;
15187
15188 wpalMutexRelease(&pWDICtx->wptMutex);
15189
15190 /*Notify UMAC*/
15191 wdiStartRspCb( &wdiRspParams, pWDICtx->pRspCBUserData);
Jeff Johnsone7245742012-09-05 17:12:55 -070015192
Jeff Johnson295189b2012-06-20 16:38:30 -070015193 WDI_DetectedDeviceError(pWDICtx, wdiRspParams.wdiStatus);
15194
15195 /*Although the response is an error - it was processed by our function
15196 so as far as the caller is concerned this is a succesful reponse processing*/
15197 return WDI_STATUS_SUCCESS;
15198 }
Jeff Johnsone7245742012-09-05 17:12:55 -070015199
Jeff Johnson295189b2012-06-20 16:38:30 -070015200 wpalMutexRelease(&pWDICtx->wptMutex);
15201
15202 if(eDRIVER_TYPE_MFG == pWDICtx->driverMode)
15203 {
15204 /* FTM mode does not need to execute below */
15205 /* Notify UMAC */
15206 wdiStartRspCb( &wdiRspParams, pWDICtx->pRspCBUserData);
15207 return WDI_STATUS_SUCCESS;
15208 }
15209
15210 /* START the Data transport */
15211 WDTS_startTransport(pWDICtx);
15212
15213 /*Start the STA Table !- check this logic again*/
15214 WDI_STATableStart(pWDICtx);
15215
15216#ifndef HAL_SELF_STA_PER_BSS
15217 /* Store the Self STA Index */
15218 pWDICtx->ucSelfStaId = halStartRspMsg.startRspParams.selfStaIdx;
15219
15220 pWDICtx->usSelfStaDpuId = wdiRspParams.usSelfStaDpuId;
15221 wpalMemoryCopy(pWDICtx->macSelfSta, wdiRspParams.macSelfSta,
15222 WDI_MAC_ADDR_LEN);
15223
15224 /* At this point add the self-STA */
15225
15226 /*! TO DO: wdiAddSTAParam.bcastMgmtDpuSignature */
15227 /* !TO DO: wdiAddSTAParam.bcastDpuSignature */
15228 /*! TO DO: wdiAddSTAParam.dpuSig */
15229 /*! TO DO: wdiAddSTAParam.ucWmmEnabled */
15230 /*! TO DO: wdiAddSTAParam.ucHTCapable */
15231 /*! TO DO: wdiAddSTAParam.ucRmfEnabled */
15232
15233 //all DPU indices are the same for self STA
15234 wdiAddSTAParam.bcastDpuIndex = wdiRspParams.usSelfStaDpuId;
15235 wdiAddSTAParam.bcastMgmtDpuIndex = wdiRspParams.usSelfStaDpuId;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -070015236 wdiAddSTAParam.dpuIndex = wdiRspParams.usSelfStaDpuId;
Jeff Johnson295189b2012-06-20 16:38:30 -070015237 wpalMemoryCopy(wdiAddSTAParam.staMacAddr, wdiRspParams.macSelfSta,
15238 WDI_MAC_ADDR_LEN);
15239 wdiAddSTAParam.ucStaType = WDI_STA_ENTRY_SELF; /* 0 - self */
15240 wdiAddSTAParam.ucSTAIdx = halStartRspMsg.startRspParams.selfStaIdx;
15241
15242 /* Note: Since we don't get an explicit config STA request for self STA, we
15243 add the self STA upon receiving the Start response message. But the
15244 self STA entry in the table is deleted when WDI gets an explicit delete STA
15245 request */
15246 (void)WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
15247#endif
15248
15249 /*Notify UMAC*/
15250 wdiStartRspCb( &wdiRspParams, pWDICtx->pRspCBUserData);
15251
Jeff Johnsone7245742012-09-05 17:12:55 -070015252 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015253}/*WDI_ProcessStartRsp*/
15254
15255
15256/**
15257 @brief Process Stop Response function (called when a response
15258 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015259
15260 @param pWDICtx: pointer to the WLAN DAL context
15261 pEventData: pointer to the event information structure
15262
Jeff Johnson295189b2012-06-20 16:38:30 -070015263 @see
15264 @return Result of the function call
15265*/
15266WDI_Status
15267WDI_ProcessStopRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015268(
Jeff Johnson295189b2012-06-20 16:38:30 -070015269 WDI_ControlBlockType* pWDICtx,
15270 WDI_EventInfoType* pEventData
15271)
15272{
15273 WDI_Status wdiStatus;
15274 WDI_StopRspCb wdiStopRspCb = NULL;
15275
Jeff Johnsone7245742012-09-05 17:12:55 -070015276 tHalMacStopRspMsg halMacStopRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070015277 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15278
Jeff Johnsone7245742012-09-05 17:12:55 -070015279 wdiStopRspCb = (WDI_StopRspCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070015280 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015281 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015282 -------------------------------------------------------------------------*/
15283 if (( NULL == pEventData ) ||
15284 ( NULL == pEventData->pEventData) ||
15285 ( NULL == wdiStopRspCb ))
15286 {
15287 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015288 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015289 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015290 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015291 }
15292
15293 /*-------------------------------------------------------------------------
15294 Extract response and send it to UMAC
15295 -------------------------------------------------------------------------*/
15296 if ( sizeof(halMacStopRspMsg) < pEventData->uEventDataSize )
15297 {
15298 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080015299 "Invalid response length in Stop Resp %u",
Jeff Johnson295189b2012-06-20 16:38:30 -070015300 pEventData->uEventDataSize);
15301 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015302 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015303 }
15304
15305 /*-------------------------------------------------------------------------
15306 Unpack HAL Response Message - the header was already extracted by the
Jeff Johnsone7245742012-09-05 17:12:55 -070015307 main Response Handling procedure
Jeff Johnson295189b2012-06-20 16:38:30 -070015308 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015309 wpalMemoryCopy( &halMacStopRspMsg.stopRspParams,
15310 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070015311 sizeof(halMacStopRspMsg.stopRspParams));
15312
Jeff Johnsone7245742012-09-05 17:12:55 -070015313 wdiStatus = WDI_HAL_2_WDI_STATUS(halMacStopRspMsg.stopRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070015314
15315 wpalMutexAcquire(&pWDICtx->wptMutex);
15316
15317 /*--------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015318 Check to see if the stop went OK
Jeff Johnson295189b2012-06-20 16:38:30 -070015319 --------------------------------------------------------------------------*/
15320 if ( WDI_STATUS_SUCCESS != wdiStatus )
15321 {
15322 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15323 "Failed to stop the device with status %s (%d)",
15324 WDI_getHALStatusMsgString(halMacStopRspMsg.stopRspParams.status),
15325 halMacStopRspMsg.stopRspParams.status);
15326
Jeff Johnsone7245742012-09-05 17:12:55 -070015327 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
15328
Jeff Johnson295189b2012-06-20 16:38:30 -070015329 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070015330 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015331 }
Jeff Johnsone7245742012-09-05 17:12:55 -070015332
Jeff Johnson295189b2012-06-20 16:38:30 -070015333 pWDICtx->ucExpectedStateTransition = WDI_STOPPED_ST;
15334
15335 /*Transition now as WDI may get preempted imediately after it sends
15336 up the Stop Response and it will not get to process the state transition
15337 from Main Rsp function*/
15338 WDI_STATE_TRANSITION( pWDICtx, pWDICtx->ucExpectedStateTransition);
15339 wpalMutexRelease(&pWDICtx->wptMutex);
15340
15341 /*! TO DO: - STOP the Data transport */
15342
15343 /*Notify UMAC*/
15344 wdiStopRspCb( wdiStatus, pWDICtx->pRspCBUserData);
15345
Jeff Johnsone7245742012-09-05 17:12:55 -070015346 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015347}/*WDI_ProcessStopRsp*/
15348
15349/**
15350 @brief Process Close Rsp function (called when a response
15351 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015352
15353 @param pWDICtx: pointer to the WLAN DAL context
15354 pEventData: pointer to the event information structure
15355
Jeff Johnson295189b2012-06-20 16:38:30 -070015356 @see
15357 @return Result of the function call
15358*/
15359WDI_Status
15360WDI_ProcessCloseRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015361(
Jeff Johnson295189b2012-06-20 16:38:30 -070015362 WDI_ControlBlockType* pWDICtx,
15363 WDI_EventInfoType* pEventData
15364)
15365{
15366 /*There is no close response comming from HAL - function just kept for
15367 simmetry */
15368 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015369 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015370}/*WDI_ProcessCloseRsp*/
15371
15372
15373/*============================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070015374 SCAN RESPONSE PROCESSING API
Jeff Johnson295189b2012-06-20 16:38:30 -070015375============================================================================*/
15376
15377/**
15378 @brief Process Init Scan Rsp function (called when a response
15379 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015380
15381 @param pWDICtx: pointer to the WLAN DAL context
15382 pEventData: pointer to the event information structure
15383
Jeff Johnson295189b2012-06-20 16:38:30 -070015384 @see
15385 @return Result of the function call
15386*/
15387WDI_Status
15388WDI_ProcessInitScanRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015389(
Jeff Johnson295189b2012-06-20 16:38:30 -070015390 WDI_ControlBlockType* pWDICtx,
15391 WDI_EventInfoType* pEventData
15392)
15393{
15394 WDI_Status wdiStatus;
15395 WDI_InitScanRspCb wdiInitScanRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070015396 tHalInitScanRspMsg halInitScanRspMsg;
Ravali85acf6b2012-12-12 14:01:38 -080015397 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070015398 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15399
15400 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015401 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015402 -------------------------------------------------------------------------*/
15403 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15404 ( NULL == pEventData->pEventData))
15405 {
15406 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015407 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015408 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015409 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015410 }
15411
15412 wdiInitScanRspCb = (WDI_InitScanRspCb)pWDICtx->pfncRspCB;
15413 if( NULL == wdiInitScanRspCb)
15414 {
15415 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015416 "%s: call back function is NULL", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015417 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015418 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015419 }
15420
15421 /*-------------------------------------------------------------------------
15422 Unpack HAL Response Message - the header was already extracted by the
Jeff Johnsone7245742012-09-05 17:12:55 -070015423 main Response Handling procedure
Jeff Johnson295189b2012-06-20 16:38:30 -070015424 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015425 wpalMemoryCopy( &halInitScanRspMsg.initScanRspParams,
15426 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070015427 sizeof(halInitScanRspMsg.initScanRspParams));
15428
Jeff Johnsone7245742012-09-05 17:12:55 -070015429 wdiStatus = WDI_HAL_2_WDI_STATUS(halInitScanRspMsg.initScanRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070015430
15431 if ( pWDICtx->bInBmps )
15432 {
15433 // notify DTS that we are entering Full power
Ravali85acf6b2012-12-12 14:01:38 -080015434 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
15435 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus ) {
15436 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain9a5d5382013-11-17 22:05:35 -080015437 "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 -080015438 WDI_ASSERT(0);
15439 }
Jeff Johnson295189b2012-06-20 16:38:30 -070015440 }
15441
15442 /*Notify UMAC*/
15443 wdiInitScanRspCb( wdiStatus, pWDICtx->pRspCBUserData);
15444
Jeff Johnsone7245742012-09-05 17:12:55 -070015445 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015446}/*WDI_ProcessInitScanRsp*/
15447
15448
15449/**
15450 @brief Process Start Scan Rsp function (called when a response
15451 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015452
15453 @param pWDICtx: pointer to the WLAN DAL context
15454 pEventData: pointer to the event information structure
15455
Jeff Johnson295189b2012-06-20 16:38:30 -070015456 @see
15457 @return Result of the function call
15458*/
15459WDI_Status
15460WDI_ProcessStartScanRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015461(
Jeff Johnson295189b2012-06-20 16:38:30 -070015462 WDI_ControlBlockType* pWDICtx,
15463 WDI_EventInfoType* pEventData
15464)
15465{
15466 WDI_StartScanRspParamsType wdiStartScanParams;
15467 WDI_StartScanRspCb wdiStartScanRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070015468
15469 tHalStartScanRspMsg halStartScanRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070015470 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15471
15472 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015473 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015474 -------------------------------------------------------------------------*/
15475 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15476 ( NULL == pEventData->pEventData))
15477 {
15478 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015479 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015480 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015481 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015482 }
15483
15484 wdiStartScanRspCb = (WDI_StartScanRspCb)pWDICtx->pfncRspCB;
15485 if( NULL == wdiStartScanRspCb)
15486 {
15487 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015488 "%s: call back function is NULL", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015489 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015490 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015491 }
15492
15493 /*-------------------------------------------------------------------------
15494 Extract response and send it to UMAC
15495 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015496 wpalMemoryCopy( &halStartScanRspMsg.startScanRspParams,
15497 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070015498 sizeof(halStartScanRspMsg.startScanRspParams));
15499
15500 wdiStartScanParams.wdiStatus = WDI_HAL_2_WDI_STATUS(
15501 halStartScanRspMsg.startScanRspParams.status);
15502#ifdef WLAN_FEATURE_VOWIFI
Jeff Johnsone7245742012-09-05 17:12:55 -070015503 wdiStartScanParams.ucTxMgmtPower =
Jeff Johnson295189b2012-06-20 16:38:30 -070015504 halStartScanRspMsg.startScanRspParams.txMgmtPower;
Jeff Johnsone7245742012-09-05 17:12:55 -070015505 wpalMemoryCopy( wdiStartScanParams.aStartTSF,
Jeff Johnson295189b2012-06-20 16:38:30 -070015506 halStartScanRspMsg.startScanRspParams.startTSF,
15507 2);
Jeff Johnsone7245742012-09-05 17:12:55 -070015508#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070015509
15510 if ( eHAL_STATUS_SUCCESS != halStartScanRspMsg.startScanRspParams.status )
15511 {
15512 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15513 "Start scan failed with status %s (%d)",
15514 WDI_getHALStatusMsgString(halStartScanRspMsg.startScanRspParams.status),
15515 halStartScanRspMsg.startScanRspParams.status);
15516 /* send the status to UMAC, don't return from here*/
15517 }
15518
15519 /*Notify UMAC*/
15520 wdiStartScanRspCb( &wdiStartScanParams, pWDICtx->pRspCBUserData);
15521
Jeff Johnsone7245742012-09-05 17:12:55 -070015522 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015523
15524}/*WDI_ProcessStartScanRsp*/
15525
15526
15527/**
Jeff Johnsone7245742012-09-05 17:12:55 -070015528 @brief Process End Scan Response function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070015529 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015530
15531 @param pWDICtx: pointer to the WLAN DAL context
15532 pEventData: pointer to the event information structure
15533
Jeff Johnson295189b2012-06-20 16:38:30 -070015534 @see
15535 @return Result of the function call
15536*/
15537WDI_Status
15538WDI_ProcessEndScanRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015539(
Jeff Johnson295189b2012-06-20 16:38:30 -070015540 WDI_ControlBlockType* pWDICtx,
15541 WDI_EventInfoType* pEventData
15542)
15543{
15544 WDI_Status wdiStatus;
15545 tHalEndScanRspMsg halEndScanRspMsg;
15546 WDI_EndScanRspCb wdiEndScanRspCb;
15547 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15548
15549 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015550 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015551 -------------------------------------------------------------------------*/
15552 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15553 ( NULL == pEventData->pEventData))
15554 {
15555 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015556 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015557 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015558 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015559 }
15560
15561 wdiEndScanRspCb = (WDI_EndScanRspCb)pWDICtx->pfncRspCB;
15562
15563 /*-------------------------------------------------------------------------
15564 Extract response and send it to UMAC
15565 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015566 wpalMemoryCopy( &halEndScanRspMsg.endScanRspParams,
15567 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070015568 sizeof(halEndScanRspMsg.endScanRspParams));
15569
Jeff Johnsone7245742012-09-05 17:12:55 -070015570 wdiStatus = WDI_HAL_2_WDI_STATUS(halEndScanRspMsg.endScanRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070015571
15572 if ( eHAL_STATUS_SUCCESS != halEndScanRspMsg.endScanRspParams.status )
15573 {
15574 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15575 "End Scan failed with status %s (%d )",
15576 WDI_getHALStatusMsgString(halEndScanRspMsg.endScanRspParams.status),
15577 halEndScanRspMsg.endScanRspParams.status);
15578 /* send the status to UMAC, don't return from here*/
15579 }
15580
15581 /*Notify UMAC*/
15582 wdiEndScanRspCb( wdiStatus, pWDICtx->pRspCBUserData);
15583
Jeff Johnsone7245742012-09-05 17:12:55 -070015584 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015585}/*WDI_ProcessEndScanRsp*/
15586
15587
15588/**
Jeff Johnsone7245742012-09-05 17:12:55 -070015589 @brief Process Finish Scan Response function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070015590 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015591
15592 @param pWDICtx: pointer to the WLAN DAL context
15593 pEventData: pointer to the event information structure
15594
Jeff Johnson295189b2012-06-20 16:38:30 -070015595 @see
15596 @return Result of the function call
15597*/
15598WDI_Status
15599WDI_ProcessFinishScanRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015600(
Jeff Johnson295189b2012-06-20 16:38:30 -070015601 WDI_ControlBlockType* pWDICtx,
15602 WDI_EventInfoType* pEventData
Jeff Johnsone7245742012-09-05 17:12:55 -070015603)
Jeff Johnson295189b2012-06-20 16:38:30 -070015604{
15605 WDI_Status wdiStatus;
15606 WDI_FinishScanRspCb wdiFinishScanRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070015607
15608 tHalFinishScanRspMsg halFinishScanRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070015609 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15610
15611 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015612 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015613 -------------------------------------------------------------------------*/
15614 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15615 ( NULL == pEventData->pEventData))
15616 {
15617 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015618 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015619 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015620 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015621 }
15622
15623 wdiFinishScanRspCb = (WDI_FinishScanRspCb)pWDICtx->pfncRspCB;
15624
15625 /*-------------------------------------------------------------------------
15626 Extract response and send it to UMAC
15627 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015628 wpalMemoryCopy( (void *)&halFinishScanRspMsg.finishScanRspParams.status,
15629 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070015630 sizeof(halFinishScanRspMsg.finishScanRspParams.status));
15631
Jeff Johnsone7245742012-09-05 17:12:55 -070015632 wdiStatus = WDI_HAL_2_WDI_STATUS(halFinishScanRspMsg.finishScanRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070015633
15634 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO_LOW,
Jeff Johnsone7245742012-09-05 17:12:55 -070015635 "Finish scan response reported status: %d",
Jeff Johnson295189b2012-06-20 16:38:30 -070015636 halFinishScanRspMsg.finishScanRspParams.status);
15637
15638 if (( eHAL_STATUS_SUCCESS != halFinishScanRspMsg.finishScanRspParams.status )&&
15639 ( eHAL_STATUS_NOTIFY_BSS_FAIL != halFinishScanRspMsg.finishScanRspParams.status ))
15640 {
15641 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15642 "Finish Scan failed with status %s (%d)",
15643 WDI_getHALStatusMsgString(halFinishScanRspMsg.finishScanRspParams.status),
15644 halFinishScanRspMsg.finishScanRspParams.status);
15645 /* send the status to UMAC, don't return from here*/
15646 }
15647
15648 /*Notify UMAC*/
15649 wdiFinishScanRspCb( wdiStatus, pWDICtx->pRspCBUserData);
15650
Jeff Johnsone7245742012-09-05 17:12:55 -070015651 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015652}/*WDI_ProcessFinishScanRsp*/
15653
15654/**
15655 @brief Process Join Response function (called when a response
15656 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015657
15658 @param pWDICtx: pointer to the WLAN DAL context
15659 pEventData: pointer to the event information structure
15660
Jeff Johnson295189b2012-06-20 16:38:30 -070015661 @see
15662 @return Result of the function call
15663*/
15664WDI_Status
15665WDI_ProcessJoinRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015666(
Jeff Johnson295189b2012-06-20 16:38:30 -070015667 WDI_ControlBlockType* pWDICtx,
15668 WDI_EventInfoType* pEventData
15669)
15670{
15671 WDI_Status wdiStatus;
15672 WDI_JoinRspCb wdiJoinRspCb;
15673 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070015674
15675 tHalJoinRspMsg halJoinRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070015676 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15677
15678 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015679 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015680 -------------------------------------------------------------------------*/
15681 if (( NULL == pWDICtx ) ||
15682 ( NULL == pWDICtx->pfncRspCB ) ||
15683 ( NULL == pEventData ) ||
15684 ( NULL == pEventData->pEventData))
15685 {
15686 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015687 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015688 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015689 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015690 }
15691
15692 wdiJoinRspCb = (WDI_JoinRspCb)pWDICtx->pfncRspCB;
15693
15694 /*-------------------------------------------------------------------------
15695 Extract response and send it to UMAC
15696 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015697 wpalMemoryCopy( &halJoinRspMsg.joinRspParams,
15698 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070015699 sizeof(halJoinRspMsg.joinRspParams));
15700
Jeff Johnsone7245742012-09-05 17:12:55 -070015701 wdiStatus = WDI_HAL_2_WDI_STATUS(halJoinRspMsg.joinRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070015702
15703 wpalMutexAcquire(&pWDICtx->wptMutex);
15704
15705 /*-----------------------------------------------------------------------
15706 Join response can only be received for an existing assoc that
Jeff Johnsone7245742012-09-05 17:12:55 -070015707 is current and in progress
Jeff Johnson295189b2012-06-20 16:38:30 -070015708 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015709 if (( !WDI_VALID_SESSION_IDX(pWDICtx->ucCurrentBSSSesIdx )) ||
Jeff Johnson295189b2012-06-20 16:38:30 -070015710 ( eWLAN_PAL_FALSE == pWDICtx->bAssociationInProgress ))
15711 {
15712 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070015713 "%s: Association sequence for this BSS does not yet exist (bssIdx %d) or "
15714 "association no longer in progress %d - mysterious HAL response",
15715 __func__, pWDICtx->ucCurrentBSSSesIdx, pWDICtx->bAssociationInProgress);
Jeff Johnson295189b2012-06-20 16:38:30 -070015716
Jeff Johnsone7245742012-09-05 17:12:55 -070015717 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
Jeff Johnson295189b2012-06-20 16:38:30 -070015718 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070015719 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070015720 }
15721
15722 pBSSSes = &pWDICtx->aBSSSessions[pWDICtx->ucCurrentBSSSesIdx];
15723
15724 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015725 Join Response is only allowed in init state
Jeff Johnson295189b2012-06-20 16:38:30 -070015726 -----------------------------------------------------------------------*/
15727 if ( WDI_ASSOC_JOINING_ST != pBSSSes->wdiAssocState)
15728 {
15729 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15730 "Join only allowed in Joining state - failure state is %d "
15731 "strange HAL response", pBSSSes->wdiAssocState);
15732
Jeff Johnsone7245742012-09-05 17:12:55 -070015733 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
15734
Jeff Johnson295189b2012-06-20 16:38:30 -070015735 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070015736 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070015737 }
15738
15739
15740 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015741 If assoc has failed the current session will be deleted
Jeff Johnson295189b2012-06-20 16:38:30 -070015742 -----------------------------------------------------------------------*/
15743 if ( WDI_STATUS_SUCCESS != wdiStatus )
15744 {
15745 /*Association was failed by HAL - remove session*/
15746 WDI_DeleteSession(pWDICtx, pBSSSes);
15747
15748 /*Association no longer in progress */
15749 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
15750
15751 /*Association no longer in progress - prepare pending assoc for processing*/
15752 WDI_DequeueAssocRequest(pWDICtx);
Jeff Johnsone7245742012-09-05 17:12:55 -070015753
Jeff Johnson295189b2012-06-20 16:38:30 -070015754 }
15755 else
15756 {
15757 /*Transition to state Joining - this may be redundant as we are supposed
15758 to be in this state already - but just to be safe*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015759 pBSSSes->wdiAssocState = WDI_ASSOC_JOINING_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -070015760 }
15761
15762 wpalMutexRelease(&pWDICtx->wptMutex);
15763
15764 /*Notify UMAC*/
15765 wdiJoinRspCb( wdiStatus, pWDICtx->pRspCBUserData);
15766
Jeff Johnsone7245742012-09-05 17:12:55 -070015767 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015768}/*WDI_ProcessJoinRsp*/
15769
15770
15771/**
Jeff Johnsone7245742012-09-05 17:12:55 -070015772 @brief Process Config BSS Response function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070015773 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015774
15775 @param pWDICtx: pointer to the WLAN DAL context
15776 pEventData: pointer to the event information structure
15777
Jeff Johnson295189b2012-06-20 16:38:30 -070015778 @see
15779 @return Result of the function call
15780*/
15781WDI_Status
15782WDI_ProcessConfigBSSRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015783(
Jeff Johnson295189b2012-06-20 16:38:30 -070015784 WDI_ControlBlockType* pWDICtx,
15785 WDI_EventInfoType* pEventData
15786)
15787{
15788 WDI_ConfigBSSRspParamsType wdiConfigBSSParams;
15789 WDI_ConfigBSSRspCb wdiConfigBSSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070015790 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070015791 WDI_BSSSessionType* pBSSSes = NULL;
15792
Jeff Johnsone7245742012-09-05 17:12:55 -070015793 tConfigBssRspMsg halConfigBssRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070015794 WDI_AddStaParams wdiBcastAddSTAParam = {0};
15795 WDI_AddStaParams wdiAddSTAParam = {0};
Jeff Johnsone7245742012-09-05 17:12:55 -070015796
Jeff Johnson295189b2012-06-20 16:38:30 -070015797 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15798
15799 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015800 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015801 -------------------------------------------------------------------------*/
15802 if (( NULL == pEventData ) ||
15803 ( NULL == pEventData->pEventData))
15804 {
15805 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015806 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015807 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015808 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015809 }
15810
15811 wdiConfigBSSRspCb = (WDI_ConfigBSSRspCb)pWDICtx->pfncRspCB;
15812
15813 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015814 Extract response and send it to UMAC
Jeff Johnson295189b2012-06-20 16:38:30 -070015815 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015816 wpalMemoryCopy( &halConfigBssRspMsg.configBssRspParams,
15817 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070015818 sizeof(halConfigBssRspMsg.configBssRspParams));
15819
15820 wdiConfigBSSParams.wdiStatus = WDI_HAL_2_WDI_STATUS(
15821 halConfigBssRspMsg.configBssRspParams.status);
15822 if(WDI_STATUS_SUCCESS == wdiConfigBSSParams.wdiStatus)
15823 {
Jeff Johnsone7245742012-09-05 17:12:55 -070015824 wpalMemoryCopy( wdiConfigBSSParams.macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -070015825 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.macBSSID,
15826 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070015827
Jeff Johnson295189b2012-06-20 16:38:30 -070015828 wdiConfigBSSParams.ucBSSIdx = halConfigBssRspMsg.configBssRspParams.bssIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015829
15830 wdiConfigBSSParams.ucBcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070015831 halConfigBssRspMsg.configBssRspParams.bcastDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070015832
15833 wdiConfigBSSParams.ucUcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070015834 halConfigBssRspMsg.configBssRspParams.ucastDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070015835
Jeff Johnson295189b2012-06-20 16:38:30 -070015836 wdiConfigBSSParams.ucSTAIdx = halConfigBssRspMsg.configBssRspParams.bssStaIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015837
Jeff Johnson295189b2012-06-20 16:38:30 -070015838 #ifdef WLAN_FEATURE_VOWIFI
Jeff Johnsone7245742012-09-05 17:12:55 -070015839 wdiConfigBSSParams.ucTxMgmtPower =
Jeff Johnson295189b2012-06-20 16:38:30 -070015840 halConfigBssRspMsg.configBssRspParams.txMgmtPower;
15841 #endif
15842 wpalMemoryCopy( wdiConfigBSSParams.macSTA,
15843 halConfigBssRspMsg.configBssRspParams.staMac,
15844 WDI_MAC_ADDR_LEN );
Jeff Johnsone7245742012-09-05 17:12:55 -070015845
Jeff Johnson295189b2012-06-20 16:38:30 -070015846 wpalMutexAcquire(&pWDICtx->wptMutex);
15847 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015848 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070015849 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015850 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
15851 wdiConfigBSSParams.macBSSID,
15852 &pBSSSes);
15853
Jeff Johnson295189b2012-06-20 16:38:30 -070015854 /*-----------------------------------------------------------------------
15855 Config BSS response can only be received for an existing assoc that
Jeff Johnsone7245742012-09-05 17:12:55 -070015856 is current and in progress
Jeff Johnson295189b2012-06-20 16:38:30 -070015857 -----------------------------------------------------------------------*/
15858 if ( NULL == pBSSSes )
15859 {
15860 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15861 "Association sequence for this BSS does not yet exist "
15862 "- mysterious HAL response");
Jeff Johnsone7245742012-09-05 17:12:55 -070015863
15864 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
15865
Jeff Johnson295189b2012-06-20 16:38:30 -070015866 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070015867 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070015868 }
Jeff Johnsone7245742012-09-05 17:12:55 -070015869
Jeff Johnson295189b2012-06-20 16:38:30 -070015870 /*Save data for this BSS*/
15871 pBSSSes->wdiBssType = pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiBSSType;
15872 pBSSSes->ucBSSIdx = halConfigBssRspMsg.configBssRspParams.bssIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015873 pBSSSes->bcastDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070015874 halConfigBssRspMsg.configBssRspParams.bcastDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015875 pBSSSes->bcastDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070015876 halConfigBssRspMsg.configBssRspParams.bcastDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070015877 pBSSSes->bcastMgmtDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070015878 halConfigBssRspMsg.configBssRspParams.mgmtDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015879 pBSSSes->bcastMgmtDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070015880 halConfigBssRspMsg.configBssRspParams.mgmtDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070015881 pBSSSes->ucRmfEnabled =
Jeff Johnson295189b2012-06-20 16:38:30 -070015882 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.ucRMFEnabled;
15883 pBSSSes->bcastStaIdx =
15884 halConfigBssRspMsg.configBssRspParams.bssBcastStaIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015885
Jeff Johnson295189b2012-06-20 16:38:30 -070015886 /* !TO DO: Shuould we be updating the RMF Capability of self STA here? */
Jeff Johnsone7245742012-09-05 17:12:55 -070015887
Jeff Johnson295189b2012-06-20 16:38:30 -070015888 /*-------------------------------------------------------------------------
15889 Add Peer STA
15890 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015891 wdiAddSTAParam.ucSTAIdx = halConfigBssRspMsg.configBssRspParams.bssStaIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070015892 wdiAddSTAParam.dpuIndex = halConfigBssRspMsg.configBssRspParams.dpuDescIndx;
15893 wdiAddSTAParam.dpuSig = halConfigBssRspMsg.configBssRspParams.ucastDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070015894
Jeff Johnson295189b2012-06-20 16:38:30 -070015895 /*This info can be retrieved from the cached initial request*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015896 wdiAddSTAParam.ucWmmEnabled =
Jeff Johnson295189b2012-06-20 16:38:30 -070015897 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiSTAContext.ucWMMEnabled;
Jeff Johnsone7245742012-09-05 17:12:55 -070015898 wdiAddSTAParam.ucHTCapable =
15899 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiSTAContext.ucHTCapable;
15900 wdiAddSTAParam.ucStaType =
15901 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiSTAContext.wdiSTAType;
15902
Jeff Johnson295189b2012-06-20 16:38:30 -070015903 /* MAC Address of STA */
Jeff Johnsone7245742012-09-05 17:12:55 -070015904 wpalMemoryCopy(wdiAddSTAParam.staMacAddr,
15905 halConfigBssRspMsg.configBssRspParams.staMac,
Jeff Johnson295189b2012-06-20 16:38:30 -070015906 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070015907
15908 wpalMemoryCopy(wdiAddSTAParam.macBSSID,
15909 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiSTAContext.macBSSID ,
15910 WDI_MAC_ADDR_LEN);
15911
Jeff Johnson295189b2012-06-20 16:38:30 -070015912 /*Add BSS specific parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015913 wdiAddSTAParam.bcastMgmtDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070015914 halConfigBssRspMsg.configBssRspParams.mgmtDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015915 wdiAddSTAParam.bcastMgmtDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070015916 halConfigBssRspMsg.configBssRspParams.mgmtDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070015917 wdiAddSTAParam.bcastDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070015918 halConfigBssRspMsg.configBssRspParams.bcastDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015919 wdiAddSTAParam.bcastDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070015920 halConfigBssRspMsg.configBssRspParams.bcastDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070015921 wdiAddSTAParam.ucRmfEnabled =
Jeff Johnson295189b2012-06-20 16:38:30 -070015922 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.ucRMFEnabled;
Jeff Johnsone7245742012-09-05 17:12:55 -070015923 wdiAddSTAParam.ucBSSIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070015924 halConfigBssRspMsg.configBssRspParams.bssIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015925
Jeff Johnson295189b2012-06-20 16:38:30 -070015926 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
15927 "Add STA to the table index: %d", wdiAddSTAParam.ucSTAIdx );
Jeff Johnsone7245742012-09-05 17:12:55 -070015928
Jeff Johnson295189b2012-06-20 16:38:30 -070015929 WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
15930 /*-------------------------------------------------------------------------
15931 Add Broadcast STA only in AP mode
15932 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015933 if( pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.ucOperMode ==
Ravi Joshid0699502013-07-08 15:48:47 -070015934 WDI_BSS_OPERATIONAL_MODE_AP || pBSSSes->wdiBssType == WDI_IBSS_MODE)
Jeff Johnson295189b2012-06-20 16:38:30 -070015935 {
15936 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
15937 "Add BCAST STA to table for index: %d",
15938 halConfigBssRspMsg.configBssRspParams.bssBcastStaIdx );
Jeff Johnsone7245742012-09-05 17:12:55 -070015939
15940 wpalMemoryCopy( &wdiBcastAddSTAParam, &wdiAddSTAParam,
Jeff Johnson295189b2012-06-20 16:38:30 -070015941 sizeof(WDI_AddStaParams) );
Jeff Johnsone7245742012-09-05 17:12:55 -070015942
Jeff Johnson295189b2012-06-20 16:38:30 -070015943 WDI_AddBcastSTAtoSTATable( pWDICtx, &wdiBcastAddSTAParam,
15944 halConfigBssRspMsg.configBssRspParams.bssBcastStaIdx );
15945 }
15946 wpalMutexRelease(&pWDICtx->wptMutex);
15947 }
15948 else
15949 {
15950 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15951 "Config BSS RSP failed with status : %s(%d)",
15952 WDI_getHALStatusMsgString(
Jeff Johnsone7245742012-09-05 17:12:55 -070015953 halConfigBssRspMsg.configBssRspParams.status),
Jeff Johnson295189b2012-06-20 16:38:30 -070015954 halConfigBssRspMsg.configBssRspParams.status);
15955
Jeff Johnsone7245742012-09-05 17:12:55 -070015956
Jeff Johnson295189b2012-06-20 16:38:30 -070015957 /*Association was failed by HAL - remove session*/
15958 WDI_DeleteSession(pWDICtx, pBSSSes);
15959
15960 /*Association no longer in progress */
15961 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
15962
15963 /*Association no longer in progress - prepare pending assoc for processing*/
15964 WDI_DequeueAssocRequest(pWDICtx);
15965
15966 }
15967
15968 /*Notify UMAC*/
15969 wdiConfigBSSRspCb( &wdiConfigBSSParams, pWDICtx->pRspCBUserData);
15970
Jeff Johnsone7245742012-09-05 17:12:55 -070015971 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015972}/*WDI_ProcessConfigBSSRsp*/
15973
15974
15975/**
15976 @brief Process Del BSS Response function (called when a response
15977 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015978
15979 @param pWDICtx: pointer to the WLAN DAL context
15980 pEventData: pointer to the event information structure
15981
Jeff Johnson295189b2012-06-20 16:38:30 -070015982 @see
15983 @return Result of the function call
15984*/
15985WDI_Status
15986WDI_ProcessDelBSSRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015987(
Jeff Johnson295189b2012-06-20 16:38:30 -070015988 WDI_ControlBlockType* pWDICtx,
15989 WDI_EventInfoType* pEventData
15990)
15991{
15992 WDI_DelBSSRspParamsType wdiDelBSSParams;
15993 WDI_DelBSSRspCb wdiDelBSSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070015994 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070015995 WDI_BSSSessionType* pBSSSes = NULL;
15996
Jeff Johnsone7245742012-09-05 17:12:55 -070015997 tDeleteBssRspMsg halDelBssRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070015998 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15999
16000 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016001 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016002 -------------------------------------------------------------------------*/
16003 if (( NULL == pEventData ) ||
16004 ( NULL == pEventData->pEventData))
16005 {
16006 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016007 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016008 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016009 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016010 }
16011
16012 wdiDelBSSRspCb = (WDI_DelBSSRspCb)pWDICtx->pfncRspCB;
16013
16014 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016015 Extract response and send it to UMAC
Jeff Johnson295189b2012-06-20 16:38:30 -070016016 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016017 wpalMemoryCopy( &halDelBssRspMsg.deleteBssRspParams,
16018 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016019 sizeof(halDelBssRspMsg.deleteBssRspParams));
16020
16021
16022 wdiDelBSSParams.wdiStatus = WDI_HAL_2_WDI_STATUS(
Jeff Johnsone7245742012-09-05 17:12:55 -070016023 halDelBssRspMsg.deleteBssRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070016024
16025 wpalMutexAcquire(&pWDICtx->wptMutex);
16026
16027 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016028 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070016029 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016030 ucCurrentBSSSesIdx = WDI_FindAssocSessionByBSSIdx( pWDICtx,
16031 halDelBssRspMsg.deleteBssRspParams.bssIdx,
16032 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070016033
16034 /*-----------------------------------------------------------------------
16035 Del BSS response can only be received for an existing assoc that
Jeff Johnsone7245742012-09-05 17:12:55 -070016036 is current and in progress
Jeff Johnson295189b2012-06-20 16:38:30 -070016037 -----------------------------------------------------------------------*/
16038 if ( NULL == pBSSSes )
16039 {
16040 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16041 "Association sequence for this BSS does not yet exist or "
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -080016042 "association no longer in progress - mysterious HAL response");
16043
16044 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
16045
16046 wpalMutexRelease(&pWDICtx->wptMutex);
16047 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070016048 }
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -080016049
16050 /*Extract BSSID for the response to UMAC*/
16051 wpalMemoryCopy(wdiDelBSSParams.macBSSID,
16052 pBSSSes->macBSSID, WDI_MAC_ADDR_LEN);
16053
16054 wdiDelBSSParams.ucBssIdx = halDelBssRspMsg.deleteBssRspParams.bssIdx;
16055
16056 /*-----------------------------------------------------------------------
16057 The current session will be deleted
16058 -----------------------------------------------------------------------*/
16059 WDI_DeleteSession(pWDICtx, pBSSSes);
16060
16061
16062 /* Delete the BCAST STA entry from the STA table if SAP/GO session is deleted */
krunal soni3fc26642013-10-08 22:41:42 -070016063 if(WDI_INFRA_AP_MODE == pBSSSes->wdiBssType ||
16064 pBSSSes->wdiBssType == WDI_IBSS_MODE)
Jeff Johnson295189b2012-06-20 16:38:30 -070016065 {
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -080016066 (void)WDI_STATableDelSta( pWDICtx, pBSSSes->bcastStaIdx );
Madan Mohan Koyyalamudif371f172012-10-31 16:35:43 -070016067 }
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -080016068
16069 /* Delete the STA's in this BSS */
16070 WDI_STATableBSSDelSta(pWDICtx, halDelBssRspMsg.deleteBssRspParams.bssIdx);
16071
Jeff Johnson295189b2012-06-20 16:38:30 -070016072 wpalMutexRelease(&pWDICtx->wptMutex);
16073
16074 /*Notify UMAC*/
16075 wdiDelBSSRspCb( &wdiDelBSSParams, pWDICtx->pRspCBUserData);
16076
Jeff Johnsone7245742012-09-05 17:12:55 -070016077 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016078}/*WDI_ProcessDelBSSRsp*/
16079
16080/**
16081 @brief Process Post Assoc Rsp function (called when a response
16082 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016083
16084 @param pWDICtx: pointer to the WLAN DAL context
16085 pEventData: pointer to the event information structure
16086
Jeff Johnson295189b2012-06-20 16:38:30 -070016087 @see
16088 @return Result of the function call
16089*/
16090WDI_Status
16091WDI_ProcessPostAssocRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016092(
Jeff Johnson295189b2012-06-20 16:38:30 -070016093 WDI_ControlBlockType* pWDICtx,
16094 WDI_EventInfoType* pEventData
16095)
16096{
16097 WDI_PostAssocRspParamsType wdiPostAssocParams;
16098 WDI_PostAssocRspCb wdiPostAssocRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070016099 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070016100 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070016101 tPostAssocRspMsg halPostAssocRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070016102 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16103
16104 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016105 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016106 -------------------------------------------------------------------------*/
16107 if (( NULL == pEventData ) ||
16108 ( NULL == pEventData->pEventData))
16109 {
16110 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016111 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016112 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016113 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016114 }
16115
16116 wdiPostAssocRspCb = (WDI_PostAssocRspCb)pWDICtx->pfncRspCB;
16117
16118 /*-------------------------------------------------------------------------
16119 Extract response and send it to UMAC
16120 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016121 wpalMemoryCopy( &halPostAssocRspMsg.postAssocRspParams,
16122 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016123 sizeof(halPostAssocRspMsg.postAssocRspParams));
16124
16125 /*Extract the Post Assoc STA Params */
16126
Jeff Johnsone7245742012-09-05 17:12:55 -070016127 wdiPostAssocParams.staParams.ucSTAIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070016128 halPostAssocRspMsg.postAssocRspParams.configStaRspParams.staIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016129 wdiPostAssocParams.staParams.ucUcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070016130 halPostAssocRspMsg.postAssocRspParams.configStaRspParams.ucUcastSig;
Jeff Johnsone7245742012-09-05 17:12:55 -070016131 wdiPostAssocParams.staParams.ucBcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070016132 halPostAssocRspMsg.postAssocRspParams.configStaRspParams.ucBcastSig;
16133
Jeff Johnsone7245742012-09-05 17:12:55 -070016134 wdiPostAssocParams.wdiStatus =
16135 WDI_HAL_2_WDI_STATUS(halPostAssocRspMsg.postAssocRspParams.configStaRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070016136
16137 /*Copy the MAC addresses from the cached storage in the WDI CB as they are not
16138 included in the response */
Jeff Johnsone7245742012-09-05 17:12:55 -070016139 wpalMemoryCopy( wdiPostAssocParams.staParams.macSTA,
16140 pWDICtx->wdiCachedPostAssocReq.wdiSTAParams.macSTA,
Jeff Johnson295189b2012-06-20 16:38:30 -070016141 WDI_MAC_ADDR_LEN);
16142
16143 /* Extract Post Assoc BSS Params */
16144
Jeff Johnsone7245742012-09-05 17:12:55 -070016145 wpalMemoryCopy( wdiPostAssocParams.bssParams.macBSSID,
16146 pWDICtx->wdiCachedPostAssocReq.wdiBSSParams.macBSSID,
16147 WDI_MAC_ADDR_LEN);
Jeff Johnson295189b2012-06-20 16:38:30 -070016148
16149 /*Copy the MAC addresses from the cached storage in the WDI CB as they are not
16150 included in the response */
Jeff Johnsone7245742012-09-05 17:12:55 -070016151 wpalMemoryCopy( wdiPostAssocParams.bssParams.macSTA,
Jeff Johnson295189b2012-06-20 16:38:30 -070016152 pWDICtx->wdiCachedPostAssocReq.wdiBSSParams.wdiSTAContext
16153 .macSTA, WDI_MAC_ADDR_LEN);
16154
Jeff Johnsone7245742012-09-05 17:12:55 -070016155 wdiPostAssocParams.bssParams.ucBcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070016156 halPostAssocRspMsg.postAssocRspParams.configStaRspParams.ucBcastSig;
16157
Jeff Johnsone7245742012-09-05 17:12:55 -070016158 wdiPostAssocParams.bssParams.ucUcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070016159 halPostAssocRspMsg.postAssocRspParams.configStaRspParams.ucUcastSig;
16160
16161 wdiPostAssocParams.bssParams.ucBSSIdx =
16162 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bssIdx;
16163
Jeff Johnsone7245742012-09-05 17:12:55 -070016164 wdiPostAssocParams.bssParams.ucSTAIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070016165 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bssStaIdx;
16166
16167 wpalMutexAcquire(&pWDICtx->wptMutex);
16168
16169 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016170 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070016171 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016172 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
Jeff Johnson295189b2012-06-20 16:38:30 -070016173 wdiPostAssocParams.bssParams.
Jeff Johnsone7245742012-09-05 17:12:55 -070016174 macBSSID, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070016175
16176 /*-----------------------------------------------------------------------
16177 Post assoc response can only be received for an existing assoc that
Jeff Johnsone7245742012-09-05 17:12:55 -070016178 is current and in progress
Jeff Johnson295189b2012-06-20 16:38:30 -070016179 -----------------------------------------------------------------------*/
16180 if (( NULL == pBSSSes ) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070016181 ( ucCurrentBSSSesIdx != pWDICtx->ucCurrentBSSSesIdx ) ||
Jeff Johnson295189b2012-06-20 16:38:30 -070016182 ( eWLAN_PAL_FALSE == pWDICtx->bAssociationInProgress ))
16183 {
16184 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16185 "Association sequence for this BSS does not yet exist or "
16186 "association no longer in progress - mysterious HAL response");
16187
Jeff Johnsone7245742012-09-05 17:12:55 -070016188 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
16189
Jeff Johnson295189b2012-06-20 16:38:30 -070016190 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070016191 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070016192 }
16193
16194 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016195 Post Assoc Request is only allowed in Joining state
Jeff Johnson295189b2012-06-20 16:38:30 -070016196 -----------------------------------------------------------------------*/
16197 if ( WDI_ASSOC_JOINING_ST != pBSSSes->wdiAssocState)
16198 {
16199 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16200 "Post Assoc not allowed before JOIN - failing request "
16201 "strange HAL response");
16202
Jeff Johnsone7245742012-09-05 17:12:55 -070016203 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
16204
Jeff Johnson295189b2012-06-20 16:38:30 -070016205 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070016206 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070016207 }
16208
16209 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016210 If assoc has failed the current session will be deleted
Jeff Johnson295189b2012-06-20 16:38:30 -070016211 -----------------------------------------------------------------------*/
16212 if ( WDI_STATUS_SUCCESS != wdiPostAssocParams.wdiStatus )
16213 {
16214 /*Association was failed by HAL - remove session*/
16215 WDI_DeleteSession(pWDICtx, pBSSSes);
16216 }
16217 else
16218 {
16219 /*Transition to state POST Assoc*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016220 pBSSSes->wdiAssocState = WDI_ASSOC_POST_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -070016221
16222 /*Save DPU Info*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016223 pBSSSes->bcastMgmtDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070016224 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.mgmtDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016225 pBSSSes->bcastMgmtDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070016226 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.mgmtDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070016227 pBSSSes->bcastDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070016228 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bcastDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016229 pBSSSes->bcastDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070016230 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bcastDpuSignature;
16231
Jeff Johnsone7245742012-09-05 17:12:55 -070016232 pBSSSes->ucBSSIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070016233 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bssIdx;
16234 }
16235
16236 /*Association no longer in progress */
16237 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
16238
16239 /*Association no longer in progress - prepare pending assoc for processing*/
16240 WDI_DequeueAssocRequest(pWDICtx);
16241
16242 wpalMutexRelease(&pWDICtx->wptMutex);
16243
16244 /*Notify UMAC*/
16245 wdiPostAssocRspCb( &wdiPostAssocParams, pWDICtx->pRspCBUserData);
16246
Jeff Johnsone7245742012-09-05 17:12:55 -070016247 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016248}/*WDI_ProcessPostAssocRsp*/
16249
16250/**
Jeff Johnsone7245742012-09-05 17:12:55 -070016251 @brief Process Del STA Rsp function (called when a response is
Jeff Johnson295189b2012-06-20 16:38:30 -070016252 being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016253
16254 @param pWDICtx: pointer to the WLAN DAL context
16255 pEventData: pointer to the event information structure
16256
Jeff Johnson295189b2012-06-20 16:38:30 -070016257 @see
16258 @return Result of the function call
16259*/
16260WDI_Status
16261WDI_ProcessDelSTARsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016262(
Jeff Johnson295189b2012-06-20 16:38:30 -070016263 WDI_ControlBlockType* pWDICtx,
16264 WDI_EventInfoType* pEventData
16265)
16266{
16267 WDI_DelSTARspParamsType wdiDelSTARsp;
16268 WDI_DelSTARspCb wdiDelSTARspCb;
16269 wpt_uint8 staType;
Jeff Johnsone7245742012-09-05 17:12:55 -070016270 tDeleteStaRspMsg halDelStaRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070016271 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16272
16273 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016274 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016275 -------------------------------------------------------------------------*/
16276 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16277 ( NULL == pEventData->pEventData))
16278 {
16279 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016280 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016281 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016282 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016283 }
16284
16285 wdiDelSTARspCb = (WDI_DelSTARspCb)pWDICtx->pfncRspCB;
16286
16287 /*-------------------------------------------------------------------------
16288 Extract response and send it to UMAC
16289 -------------------------------------------------------------------------*/
16290 wpalMemoryCopy( &halDelStaRspMsg.delStaRspParams,
Jeff Johnsone7245742012-09-05 17:12:55 -070016291 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016292 sizeof(halDelStaRspMsg.delStaRspParams));
16293
16294 wdiDelSTARsp.ucSTAIdx = halDelStaRspMsg.delStaRspParams.staId;
Jeff Johnsone7245742012-09-05 17:12:55 -070016295 wdiDelSTARsp.wdiStatus =
16296 WDI_HAL_2_WDI_STATUS(halDelStaRspMsg.delStaRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070016297
16298 WDI_STATableGetStaType(pWDICtx, wdiDelSTARsp.ucSTAIdx, &staType);
16299
16300 /* If the DEL STA request is for self STA do not delete it - Really weird!!What happens in concurrency */
16301 if(staType == WDI_STA_ENTRY_SELF)
16302 {
16303 WDI_StaStruct* pSTATable = (WDI_StaStruct*) pWDICtx->staTable;
16304
16305 /* At this point add the self-STA */
16306
16307 /*! TO DO: wdiAddSTAParam.ucWmmEnabled */
16308 /*! TO DO: wdiAddSTAParam.ucHTCapable */
16309 /*! TO DO: wdiAddSTAParam.ucRmfEnabled */
16310
16311#define WDI_DPU_SELF_STA_DEFAULT_IDX 0
16312#define WDI_DPU_SELF_STA_DEFAULT_SIG 0
16313
16314 //all DPU indices are the same for self STA
16315 pSTATable[wdiDelSTARsp.ucSTAIdx].dpuIndex = WDI_DPU_SELF_STA_DEFAULT_IDX;
16316 pSTATable[wdiDelSTARsp.ucSTAIdx].bcastDpuIndex = WDI_DPU_SELF_STA_DEFAULT_IDX;
16317 pSTATable[wdiDelSTARsp.ucSTAIdx].bcastMgmtDpuIndex = WDI_DPU_SELF_STA_DEFAULT_IDX;
16318 pSTATable[wdiDelSTARsp.ucSTAIdx].bcastDpuSignature = WDI_DPU_SELF_STA_DEFAULT_SIG;
16319 pSTATable[wdiDelSTARsp.ucSTAIdx].bcastMgmtDpuSignature = WDI_DPU_SELF_STA_DEFAULT_SIG;
16320 pSTATable[wdiDelSTARsp.ucSTAIdx].dpuSig = WDI_DPU_SELF_STA_DEFAULT_SIG;
Madan Mohan Koyyalamudi15a48f02012-10-05 17:13:53 -070016321
16322 pSTATable[wdiDelSTARsp.ucSTAIdx].bssIdx = WDI_BSS_INVALID_IDX;
Jeff Johnson295189b2012-06-20 16:38:30 -070016323 }
16324 else
16325 {
16326 //Delete the station in the table
16327 WDI_STATableDelSta( pWDICtx, wdiDelSTARsp.ucSTAIdx);
16328 }
16329
16330 /*Notify UMAC*/
16331 wdiDelSTARspCb( &wdiDelSTARsp, pWDICtx->pRspCBUserData);
16332
Jeff Johnsone7245742012-09-05 17:12:55 -070016333 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016334}/*WDI_ProcessDelSTARsp*/
16335
16336
16337/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070016338 Security Response Processing Functions
Jeff Johnson295189b2012-06-20 16:38:30 -070016339==========================================================================*/
16340
16341/**
16342 @brief Process Set BSS Key Rsp function (called when a response
16343 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016344
16345 @param pWDICtx: pointer to the WLAN DAL context
16346 pEventData: pointer to the event information structure
16347
Jeff Johnson295189b2012-06-20 16:38:30 -070016348 @see
16349 @return Result of the function call
16350*/
16351WDI_Status
16352WDI_ProcessSetBssKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016353(
Jeff Johnson295189b2012-06-20 16:38:30 -070016354 WDI_ControlBlockType* pWDICtx,
16355 WDI_EventInfoType* pEventData
16356)
16357{
16358 WDI_Status wdiStatus;
16359 eHalStatus halStatus;
16360 WDI_SetBSSKeyRspCb wdiSetBSSKeyRspCb;
16361 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16362
16363 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016364 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016365 -------------------------------------------------------------------------*/
16366 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16367 ( NULL == pEventData->pEventData))
16368 {
16369 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016370 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016371 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016372 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016373 }
16374
16375 wdiSetBSSKeyRspCb = (WDI_SetBSSKeyRspCb)pWDICtx->pfncRspCB;
16376
16377 /*-------------------------------------------------------------------------
16378 Extract response and send it to UMAC
16379 -------------------------------------------------------------------------*/
16380 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070016381 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016382
16383 if ( eHAL_STATUS_SUCCESS != halStatus )
16384 {
16385 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16386 "Set BSS Key failed with status %s (%d)",
16387 WDI_getHALStatusMsgString(halStatus),
16388 halStatus);
16389 /* send the status to UMAC, don't return from here*/
16390 }
16391
16392 /*Notify UMAC*/
16393 wdiSetBSSKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16394
Jeff Johnsone7245742012-09-05 17:12:55 -070016395 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016396}/*WDI_ProcessSetBssKeyRsp*/
16397
16398/**
16399 @brief Process Remove BSS Key Rsp function (called when a response
16400 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016401
16402 @param pWDICtx: pointer to the WLAN DAL context
16403 pEventData: pointer to the event information structure
16404
Jeff Johnson295189b2012-06-20 16:38:30 -070016405 @see
16406 @return Result of the function call
16407*/
16408WDI_Status
16409WDI_ProcessRemoveBssKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016410(
Jeff Johnson295189b2012-06-20 16:38:30 -070016411 WDI_ControlBlockType* pWDICtx,
16412 WDI_EventInfoType* pEventData
16413)
16414{
16415 WDI_Status wdiStatus;
16416 eHalStatus halStatus;
16417 WDI_RemoveBSSKeyRspCb wdiRemoveBSSKeyRspCb;
16418 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16419
16420 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016421 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016422 -------------------------------------------------------------------------*/
16423 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16424 ( NULL == pEventData->pEventData))
16425 {
16426 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016427 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016428 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016429 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016430 }
16431
16432 wdiRemoveBSSKeyRspCb = (WDI_RemoveBSSKeyRspCb)pWDICtx->pfncRspCB;
16433
16434 /*-------------------------------------------------------------------------
16435 Extract response and send it to UMAC
16436 -------------------------------------------------------------------------*/
16437 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070016438 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016439
16440 if ( eHAL_STATUS_SUCCESS != halStatus )
16441 {
16442 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16443 "Remove BSS Key failed with status %s (%d )",
16444 WDI_getHALStatusMsgString(halStatus),
16445 halStatus);
16446 /* send the status to UMAC, don't return from here*/
16447 }
16448
16449 /*Notify UMAC*/
16450 wdiRemoveBSSKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16451
Jeff Johnsone7245742012-09-05 17:12:55 -070016452 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016453}/*WDI_ProcessSetBssKeyRsp*/
16454
16455
16456/**
16457 @brief Process Set STA Key Rsp function (called when a response
16458 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016459
16460 @param pWDICtx: pointer to the WLAN DAL context
16461 pEventData: pointer to the event information structure
16462
Jeff Johnson295189b2012-06-20 16:38:30 -070016463 @see
16464 @return Result of the function call
16465*/
16466WDI_Status
16467WDI_ProcessSetStaKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016468(
Jeff Johnson295189b2012-06-20 16:38:30 -070016469 WDI_ControlBlockType* pWDICtx,
16470 WDI_EventInfoType* pEventData
16471)
16472{
16473 WDI_Status wdiStatus;
16474 eHalStatus halStatus;
16475 WDI_SetSTAKeyRspCb wdiSetSTAKeyRspCb;
16476 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16477
16478 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016479 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016480 -------------------------------------------------------------------------*/
16481 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16482 ( NULL == pEventData->pEventData))
16483 {
16484 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016485 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016486 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016487 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016488 }
16489
16490 wdiSetSTAKeyRspCb = (WDI_SetSTAKeyRspCb)pWDICtx->pfncRspCB;
16491
16492 /*-------------------------------------------------------------------------
16493 Extract response and send it to UMAC
16494 -------------------------------------------------------------------------*/
16495 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070016496 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016497
16498 if ( eHAL_STATUS_SUCCESS != halStatus )
16499 {
16500 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16501 "Set STA Key failed with status %s (%d)",
16502 WDI_getHALStatusMsgString(halStatus),
16503 halStatus);
16504 /* send the status to UMAC, don't return from here*/
16505 }
16506
16507 /*Notify UMAC*/
16508 wdiSetSTAKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16509
Jeff Johnsone7245742012-09-05 17:12:55 -070016510 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016511}/*WDI_ProcessSetSTAKeyRsp*/
16512
16513/**
Jeff Johnsone7245742012-09-05 17:12:55 -070016514 @brief Process Remove STA Key Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070016515 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016516
16517 @param pWDICtx: pointer to the WLAN DAL context
16518 pEventData: pointer to the event information structure
16519
Jeff Johnson295189b2012-06-20 16:38:30 -070016520 @see
16521 @return Result of the function call
16522*/
16523WDI_Status
16524WDI_ProcessRemoveStaKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016525(
Jeff Johnson295189b2012-06-20 16:38:30 -070016526 WDI_ControlBlockType* pWDICtx,
16527 WDI_EventInfoType* pEventData
16528)
16529{
16530 WDI_Status wdiStatus;
16531 eHalStatus halStatus;
16532 WDI_RemoveSTAKeyRspCb wdiRemoveSTAKeyRspCb;
16533 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16534
16535 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016536 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016537 -------------------------------------------------------------------------*/
16538 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16539 ( NULL == pEventData->pEventData))
16540 {
16541 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016542 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016543 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016544 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016545 }
16546
16547 wdiRemoveSTAKeyRspCb = (WDI_RemoveSTAKeyRspCb)pWDICtx->pfncRspCB;
16548
16549 /*-------------------------------------------------------------------------
16550 Extract response and send it to UMAC
16551 -------------------------------------------------------------------------*/
16552 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070016553 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016554
16555 if ( eHAL_STATUS_SUCCESS != halStatus )
16556 {
16557 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16558 "Remove STA Key failed with status %s (%d)",
16559 WDI_getHALStatusMsgString(halStatus),
16560 halStatus);
16561 /* send the status to UMAC, don't return from here*/
16562 }
16563
16564 /*Notify UMAC*/
16565 wdiRemoveSTAKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16566
Jeff Johnsone7245742012-09-05 17:12:55 -070016567 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016568}/*WDI_ProcessRemoveStaKeyRsp*/
16569
16570/**
Jeff Johnsone7245742012-09-05 17:12:55 -070016571 @brief Process Set STA Bcast Key Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070016572 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016573
16574 @param pWDICtx: pointer to the WLAN DAL context
16575 pEventData: pointer to the event information structure
16576
Jeff Johnson295189b2012-06-20 16:38:30 -070016577 @see
16578 @return Result of the function call
16579*/
16580WDI_Status
16581WDI_ProcessSetStaBcastKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016582(
Jeff Johnson295189b2012-06-20 16:38:30 -070016583 WDI_ControlBlockType* pWDICtx,
16584 WDI_EventInfoType* pEventData
16585)
16586{
16587 WDI_Status wdiStatus;
16588 eHalStatus halStatus;
16589 WDI_SetSTAKeyRspCb wdiSetSTABcastKeyRspCb;
16590 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16591
16592 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016593 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016594 -------------------------------------------------------------------------*/
16595 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16596 ( NULL == pEventData->pEventData))
16597 {
16598 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016599 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016600 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016601 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016602 }
16603
16604 wdiSetSTABcastKeyRspCb = (WDI_SetSTAKeyRspCb)pWDICtx->pfncRspCB;
16605
16606 /*-------------------------------------------------------------------------
16607 Extract response and send it to UMAC
16608 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016609 wpalMemoryCopy( &halStatus,
16610 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016611 sizeof(halStatus));
16612
Jeff Johnsone7245742012-09-05 17:12:55 -070016613 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016614
16615 if ( eHAL_STATUS_SUCCESS != halStatus )
16616 {
16617 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16618 "Set STA Key failed with status %s (%d)",
16619 WDI_getHALStatusMsgString(halStatus),
16620 halStatus);
16621 /* send the status to UMAC, don't return from here*/
16622 }
16623
16624 /*Notify UMAC*/
16625 wdiSetSTABcastKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16626
Jeff Johnsone7245742012-09-05 17:12:55 -070016627 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016628}/*WDI_ProcessSetSTABcastKeyRsp*/
16629
16630/**
16631 @brief Process Remove STA Bcast Key Rsp function (called when a
16632 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016633
16634 @param pWDICtx: pointer to the WLAN DAL context
16635 pEventData: pointer to the event information structure
16636
Jeff Johnson295189b2012-06-20 16:38:30 -070016637 @see
16638 @return Result of the function call
16639*/
16640WDI_Status
16641WDI_ProcessRemoveStaBcastKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016642(
Jeff Johnson295189b2012-06-20 16:38:30 -070016643 WDI_ControlBlockType* pWDICtx,
16644 WDI_EventInfoType* pEventData
16645)
16646{
16647 WDI_Status wdiStatus;
16648 eHalStatus halStatus;
16649 WDI_RemoveSTAKeyRspCb wdiRemoveSTABcastKeyRspCb;
16650 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16651
16652 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016653 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016654 -------------------------------------------------------------------------*/
16655 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16656 ( NULL == pEventData->pEventData))
16657 {
16658 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016659 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016660 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016661 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016662 }
16663
16664 wdiRemoveSTABcastKeyRspCb = (WDI_RemoveSTAKeyRspCb)pWDICtx->pfncRspCB;
16665
16666 /*-------------------------------------------------------------------------
16667 Extract response and send it to UMAC
16668 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016669 wpalMemoryCopy( &halStatus,
16670 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016671 sizeof(halStatus));
16672
Jeff Johnsone7245742012-09-05 17:12:55 -070016673 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016674
16675 if ( eHAL_STATUS_SUCCESS != halStatus )
16676 {
16677 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16678 "Remove STA Key failed with status %s (%d)",
16679 WDI_getHALStatusMsgString(halStatus),
16680 halStatus);
16681 /* send the status to UMAC, don't return from here*/
16682 }
16683
16684 /*Notify UMAC*/
16685 wdiRemoveSTABcastKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16686
Jeff Johnsone7245742012-09-05 17:12:55 -070016687 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016688}/*WDI_ProcessRemoveStaBcastKeyRsp*/
16689
16690
16691/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070016692 QoS and BA Response Processing Functions
Jeff Johnson295189b2012-06-20 16:38:30 -070016693==========================================================================*/
16694
16695/**
16696 @brief Process Add TSpec Rsp function (called when a response
16697 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016698
16699 @param pWDICtx: pointer to the WLAN DAL context
16700 pEventData: pointer to the event information structure
16701
Jeff Johnson295189b2012-06-20 16:38:30 -070016702 @see
16703 @return Result of the function call
16704*/
16705WDI_Status
16706WDI_ProcessAddTSpecRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016707(
Jeff Johnson295189b2012-06-20 16:38:30 -070016708 WDI_ControlBlockType* pWDICtx,
16709 WDI_EventInfoType* pEventData
16710)
16711{
16712 WDI_Status wdiStatus;
16713 eHalStatus halStatus;
16714 WDI_AddTsRspCb wdiAddTsRspCb;
16715 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16716
16717 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016718 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016719 -------------------------------------------------------------------------*/
16720 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16721 ( NULL == pEventData->pEventData))
16722 {
16723 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016724 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016725 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016726 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016727 }
16728
16729 wdiAddTsRspCb = (WDI_AddTsRspCb)pWDICtx->pfncRspCB;
16730
16731 /*-------------------------------------------------------------------------
16732 Extract response and send it to UMAC
16733 -------------------------------------------------------------------------*/
16734 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070016735 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016736
16737 /*Notify UMAC*/
16738 wdiAddTsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16739
Jeff Johnsone7245742012-09-05 17:12:55 -070016740 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016741}/*WDI_ProcessAddTSpecRsp*/
16742
16743
16744/**
16745 @brief Process Del TSpec Rsp function (called when a response
16746 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016747
16748 @param pWDICtx: pointer to the WLAN DAL context
16749 pEventData: pointer to the event information structure
16750
Jeff Johnson295189b2012-06-20 16:38:30 -070016751 @see
16752 @return Result of the function call
16753*/
16754WDI_Status
16755WDI_ProcessDelTSpecRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016756(
Jeff Johnson295189b2012-06-20 16:38:30 -070016757 WDI_ControlBlockType* pWDICtx,
16758 WDI_EventInfoType* pEventData
16759)
16760{
16761 WDI_Status wdiStatus;
16762 eHalStatus halStatus;
16763 WDI_DelTsRspCb wdiDelTsRspCb;
16764 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16765
16766 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016767 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016768 -------------------------------------------------------------------------*/
16769 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16770 ( NULL == pEventData->pEventData))
16771 {
16772 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016773 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016774 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016775 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016776 }
16777
16778 wdiDelTsRspCb = (WDI_DelTsRspCb)pWDICtx->pfncRspCB;
16779
16780 /*-------------------------------------------------------------------------
16781 Extract response and send it to UMAC
16782 -------------------------------------------------------------------------*/
16783 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070016784 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016785
16786 /*Notify UMAC*/
16787 wdiDelTsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16788
Jeff Johnsone7245742012-09-05 17:12:55 -070016789 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016790}/*WDI_ProcessDelTSpecRsp*/
16791
16792/**
Jeff Johnsone7245742012-09-05 17:12:55 -070016793 @brief Process Update EDCA Parameters Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070016794 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016795
16796 @param pWDICtx: pointer to the WLAN DAL context
16797 pEventData: pointer to the event information structure
16798
Jeff Johnson295189b2012-06-20 16:38:30 -070016799 @see
16800 @return Result of the function call
16801*/
16802WDI_Status
16803WDI_ProcessUpdateEDCAParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016804(
Jeff Johnson295189b2012-06-20 16:38:30 -070016805 WDI_ControlBlockType* pWDICtx,
16806 WDI_EventInfoType* pEventData
16807)
16808{
16809 WDI_Status wdiStatus;
16810 eHalStatus halStatus;
16811 WDI_UpdateEDCAParamsRspCb wdiUpdateEDCAParamsRspCb;
16812 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16813
16814 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016815 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016816 -------------------------------------------------------------------------*/
16817 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16818 ( NULL == pEventData->pEventData))
16819 {
16820 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016821 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016822 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016823 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016824 }
16825
16826 wdiUpdateEDCAParamsRspCb = (WDI_UpdateEDCAParamsRspCb)pWDICtx->pfncRspCB;
16827
16828 /*-------------------------------------------------------------------------
16829 Extract response and send it to UMAC
16830 -------------------------------------------------------------------------*/
16831 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070016832 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016833
16834 /*Notify UMAC*/
16835 wdiUpdateEDCAParamsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16836
Jeff Johnsone7245742012-09-05 17:12:55 -070016837 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016838}/*WDI_ProcessUpdateEDCAParamsRsp*/
16839
16840
16841/**
16842 @brief Process Add BA Rsp function (called when a response
16843 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016844
16845 @param pWDICtx: pointer to the WLAN DAL context
16846 pEventData: pointer to the event information structure
16847
Jeff Johnson295189b2012-06-20 16:38:30 -070016848 @see
16849 @return Result of the function call
16850*/
16851WDI_Status
16852WDI_ProcessAddBASessionRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016853(
Jeff Johnson295189b2012-06-20 16:38:30 -070016854 WDI_ControlBlockType* pWDICtx,
16855 WDI_EventInfoType* pEventData
16856)
16857{
16858 WDI_AddBASessionRspCb wdiAddBASessionRspCb;
16859
16860 tAddBASessionRspParams halBASessionRsp;
16861 WDI_AddBASessionRspParamsType wdiBASessionRsp;
16862
Jeff Johnsone7245742012-09-05 17:12:55 -070016863
Jeff Johnson295189b2012-06-20 16:38:30 -070016864 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16865
16866 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016867 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016868 -------------------------------------------------------------------------*/
16869 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16870 ( NULL == pEventData->pEventData))
16871 {
16872 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016873 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016874 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016875 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016876 }
16877
16878 wdiAddBASessionRspCb = (WDI_AddBASessionRspCb)pWDICtx->pfncRspCB;
16879
16880 /*-------------------------------------------------------------------------
16881 Extract response and send it to UMAC
16882 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016883 wpalMemoryCopy( &halBASessionRsp,
16884 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016885 sizeof(halBASessionRsp));
16886
16887 wdiBASessionRsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halBASessionRsp.status);
16888
Jeff Johnson43971f52012-07-17 12:26:56 -070016889 if ( WDI_STATUS_SUCCESS == wdiBASessionRsp.wdiStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070016890 {
16891 wdiBASessionRsp.ucBaDialogToken = halBASessionRsp.baDialogToken;
16892 wdiBASessionRsp.ucBaTID = halBASessionRsp.baTID;
16893 wdiBASessionRsp.ucBaBufferSize = halBASessionRsp.baBufferSize;
16894 wdiBASessionRsp.usBaSessionID = halBASessionRsp.baSessionID;
16895 wdiBASessionRsp.ucWinSize = halBASessionRsp.winSize;
16896 wdiBASessionRsp.ucSTAIdx = halBASessionRsp.STAID;
16897 wdiBASessionRsp.usBaSSN = halBASessionRsp.SSN;
16898 }
16899
16900 /*Notify UMAC*/
16901 wdiAddBASessionRspCb( &wdiBASessionRsp, pWDICtx->pRspCBUserData);
16902
Jeff Johnsone7245742012-09-05 17:12:55 -070016903 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016904}/*WDI_ProcessAddSessionBARsp*/
16905
16906
16907/**
16908 @brief Process Del BA Rsp function (called when a response
16909 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016910
16911 @param pWDICtx: pointer to the WLAN DAL context
16912 pEventData: pointer to the event information structure
16913
Jeff Johnson295189b2012-06-20 16:38:30 -070016914 @see
16915 @return Result of the function call
16916*/
16917WDI_Status
16918WDI_ProcessDelBARsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016919(
Jeff Johnson295189b2012-06-20 16:38:30 -070016920 WDI_ControlBlockType* pWDICtx,
16921 WDI_EventInfoType* pEventData
16922)
16923{
16924 WDI_Status wdiStatus;
16925 eHalStatus halStatus;
16926 WDI_DelBARspCb wdiDelBARspCb;
16927 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16928
16929 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016930 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016931 -------------------------------------------------------------------------*/
16932 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16933 ( NULL == pEventData->pEventData))
16934 {
16935 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016936 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016937 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016938 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016939 }
16940
16941 wdiDelBARspCb = (WDI_DelBARspCb)pWDICtx->pfncRspCB;
16942
16943 /*-------------------------------------------------------------------------
16944 Extract response and send it to UMAC
16945 -------------------------------------------------------------------------*/
16946 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070016947 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016948
16949 if ( eHAL_STATUS_SUCCESS == halStatus )
16950 {
16951 /*! TO DO: I should notify the DAL Data Path that the BA was deleted*/
16952 }
16953
16954 /*Notify UMAC*/
16955 wdiDelBARspCb( wdiStatus, pWDICtx->pRspCBUserData);
16956
Jeff Johnsone7245742012-09-05 17:12:55 -070016957 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016958}/*WDI_ProcessDelBARsp*/
16959
16960#ifdef FEATURE_WLAN_CCX
16961/**
16962 @brief Process TSM Stats Rsp function (called when a response
16963 is being received over the bus from HAL)
16964
16965 @param pWDICtx: pointer to the WLAN DAL context
16966 pEventData: pointer to the event information structure
16967
16968 @see
16969 @return Result of the function call
16970*/
16971WDI_Status
16972WDI_ProcessTsmStatsRsp
16973(
16974 WDI_ControlBlockType* pWDICtx,
16975 WDI_EventInfoType* pEventData
16976)
16977{
16978 WDI_TsmRspCb wdiTsmStatsRspCb;
16979 tTsmStatsRspMsg halTsmStatsRspMsg;
16980 WDI_TSMStatsRspParamsType wdiTsmStatsRspParams;
16981 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16982
16983 /*-------------------------------------------------------------------------
16984 Sanity check
16985 -------------------------------------------------------------------------*/
16986 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16987 ( NULL == pEventData->pEventData))
16988 {
16989 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016990 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016991 WDI_ASSERT(0);
16992 return WDI_STATUS_E_FAILURE;
16993 }
16994
16995 wdiTsmStatsRspCb = (WDI_TsmRspCb)pWDICtx->pfncRspCB;
16996
16997 /*-------------------------------------------------------------------------
16998 Unpack HAL Response Message - the header was already extracted by the
16999 main Response Handling procedure
17000 -------------------------------------------------------------------------*/
17001 wpalMemoryCopy( &halTsmStatsRspMsg.tsmStatsRspParams,
17002 pEventData->pEventData,
17003 sizeof(halTsmStatsRspMsg.tsmStatsRspParams));
17004
17005 wdiTsmStatsRspParams.UplinkPktQueueDly = halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktQueueDly;
17006 wpalMemoryCopy( wdiTsmStatsRspParams.UplinkPktQueueDlyHist,
17007 halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktQueueDlyHist,
17008 sizeof(halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktQueueDlyHist)/
17009 sizeof(halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktQueueDlyHist[0]));
17010 wdiTsmStatsRspParams.UplinkPktTxDly = halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktTxDly;
17011 wdiTsmStatsRspParams.UplinkPktLoss = halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktLoss;
17012 wdiTsmStatsRspParams.UplinkPktCount = halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktCount;
17013 wdiTsmStatsRspParams.RoamingCount = halTsmStatsRspMsg.tsmStatsRspParams.RoamingCount;
17014 wdiTsmStatsRspParams.RoamingDly = halTsmStatsRspMsg.tsmStatsRspParams.RoamingDly;
17015 wdiTsmStatsRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(
17016 halTsmStatsRspMsg.tsmStatsRspParams.status);
17017
17018 /*Notify UMAC*/
17019 wdiTsmStatsRspCb( &wdiTsmStatsRspParams, pWDICtx->pRspCBUserData);
17020
17021 return WDI_STATUS_SUCCESS;
17022}/*WDI_ProcessTsmStatsRsp*/
17023
17024#endif
17025
17026
17027
17028/**
17029 @brief Process Flush AC Rsp function (called when a response
17030 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017031
17032 @param pWDICtx: pointer to the WLAN DAL context
17033 pEventData: pointer to the event information structure
17034
Jeff Johnson295189b2012-06-20 16:38:30 -070017035 @see
17036 @return Result of the function call
17037*/
17038WDI_Status
17039WDI_ProcessFlushAcRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017040(
Jeff Johnson295189b2012-06-20 16:38:30 -070017041 WDI_ControlBlockType* pWDICtx,
17042 WDI_EventInfoType* pEventData
17043)
17044{
17045 WDI_Status wdiStatus;
17046 eHalStatus halStatus;
17047 WDI_FlushAcRspCb wdiFlushAcRspCb;
17048 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17049
17050 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017051 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017052 -------------------------------------------------------------------------*/
17053 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17054 ( NULL == pEventData->pEventData))
17055 {
17056 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017057 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017058 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017059 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017060 }
17061
17062 wdiFlushAcRspCb = (WDI_FlushAcRspCb)pWDICtx->pfncRspCB;
17063
17064 /*-------------------------------------------------------------------------
17065 Extract response and send it to UMAC
17066 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017067 wpalMemoryCopy( &halStatus,
17068 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017069 sizeof(halStatus));
17070
Jeff Johnsone7245742012-09-05 17:12:55 -070017071 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017072
17073 /*Notify UMAC*/
17074 wdiFlushAcRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17075
Jeff Johnsone7245742012-09-05 17:12:55 -070017076 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017077}/*WDI_ProcessFlushAcRsp*/
17078
17079/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017080 @brief Process BT AMP event Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070017081 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017082
17083 @param pWDICtx: pointer to the WLAN DAL context
17084 pEventData: pointer to the event information structure
17085
Jeff Johnson295189b2012-06-20 16:38:30 -070017086 @see
17087 @return Result of the function call
17088*/
17089WDI_Status
17090WDI_ProcessBtAmpEventRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017091(
Jeff Johnson295189b2012-06-20 16:38:30 -070017092 WDI_ControlBlockType* pWDICtx,
17093 WDI_EventInfoType* pEventData
17094)
17095{
17096 WDI_Status wdiStatus;
17097 eHalStatus halStatus;
17098 WDI_BtAmpEventRspCb wdiBtAmpEventRspCb;
17099 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17100
17101 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017102 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017103 -------------------------------------------------------------------------*/
17104 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17105 ( NULL == pEventData->pEventData))
17106 {
17107 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017108 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017109 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017110 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017111 }
17112
17113 wdiBtAmpEventRspCb = (WDI_BtAmpEventRspCb)pWDICtx->pfncRspCB;
17114
17115 /*-------------------------------------------------------------------------
17116 Extract response and send it to UMAC
17117 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017118 wpalMemoryCopy( &halStatus,
17119 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017120 sizeof(halStatus));
17121
Jeff Johnsone7245742012-09-05 17:12:55 -070017122 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017123
17124 /*Notify UMAC*/
17125 wdiBtAmpEventRspCb( 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_ProcessBtAmpEventRsp*/
17129
17130
17131/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017132 @brief Process ADD STA SELF Rsp function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070017133 when a response 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_ProcessAddSTASelfRsp
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_AddSTASelfRspParamsType wdiAddSTASelfParams;
17149 WDI_AddSTASelfParamsRspCb wdiAddSTASelfReqParamsRspCb;
17150 tAddStaSelfRspMsg halAddStaSelfRsp;
17151 WDI_AddStaParams wdiAddSTAParam = {0};
17152 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17153
17154 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017155 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017156 -------------------------------------------------------------------------*/
17157 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17158 ( NULL == pEventData->pEventData))
17159 {
17160 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017161 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017162 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017163 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017164 }
17165
Jeff Johnsone7245742012-09-05 17:12:55 -070017166 wdiAddSTASelfReqParamsRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070017167 (WDI_AddSTASelfParamsRspCb)pWDICtx->pfncRspCB;
17168
17169 /*-------------------------------------------------------------------------
17170 Extract response and send it to UMAC
17171 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017172 wpalMemoryCopy( &halAddStaSelfRsp.addStaSelfRspParams,
17173 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017174 sizeof(halAddStaSelfRsp.addStaSelfRspParams));
17175
17176
Jeff Johnsone7245742012-09-05 17:12:55 -070017177 wdiAddSTASelfParams.wdiStatus =
17178 WDI_HAL_2_WDI_STATUS(halAddStaSelfRsp.addStaSelfRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070017179
Jeff Johnsone7245742012-09-05 17:12:55 -070017180 wdiAddSTASelfParams.ucSTASelfIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070017181 halAddStaSelfRsp.addStaSelfRspParams.selfStaIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070017182 wdiAddSTASelfParams.dpuIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070017183 halAddStaSelfRsp.addStaSelfRspParams.dpuIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070017184 wdiAddSTASelfParams.dpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070017185 halAddStaSelfRsp.addStaSelfRspParams.dpuSignature;
17186
17187 wpalMemoryCopy(wdiAddSTASelfParams.macSelfSta,
17188 pWDICtx->wdiCacheAddSTASelfReq.wdiAddSTASelfInfo.selfMacAddr,
17189 WDI_MAC_ADDR_LEN);
17190
17191
17192#ifdef HAL_SELF_STA_PER_BSS
17193
17194 /* At this point add the self-STA */
17195
17196 /*! TO DO: wdiAddSTAParam.ucWmmEnabled */
17197 /*! TO DO: wdiAddSTAParam.ucHTCapable */
17198 /*! TO DO: wdiAddSTAParam.ucRmfEnabled */
17199
17200 //all DPU indices are the same for self STA
17201
17202 /*DPU Information*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017203 wdiAddSTAParam.dpuIndex = wdiAddSTASelfParams.dpuIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070017204 wdiAddSTAParam.dpuSig = wdiAddSTASelfParams.dpuSignature;
17205 wdiAddSTAParam.bcastDpuSignature = wdiAddSTASelfParams.dpuSignature;
17206 wdiAddSTAParam.bcastMgmtDpuSignature = wdiAddSTASelfParams.dpuSignature;
17207 wdiAddSTAParam.bcastDpuIndex = wdiAddSTASelfParams.dpuIdx;
17208 wdiAddSTAParam.bcastMgmtDpuIndex = wdiAddSTASelfParams.dpuIdx;
17209
17210 wpalMemoryCopy(wdiAddSTAParam.staMacAddr, wdiAddSTASelfParams.macSelfSta,
17211 WDI_MAC_ADDR_LEN);
17212
17213 wdiAddSTAParam.ucStaType = WDI_STA_ENTRY_SELF; /* 0 - self */
17214 wdiAddSTAParam.ucSTAIdx = wdiAddSTASelfParams.ucSTASelfIdx;
17215
Jeff Johnsone7245742012-09-05 17:12:55 -070017216 if(halAddStaSelfRsp.addStaSelfRspParams.status
Jeff Johnson295189b2012-06-20 16:38:30 -070017217 != eHAL_STATUS_ADD_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO)
17218 {
17219 (void)WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
17220 }
17221#endif
17222
17223 /*Notify UMAC*/
17224 wdiAddSTASelfReqParamsRspCb( &wdiAddSTASelfParams, pWDICtx->pRspCBUserData);
17225
Jeff Johnsone7245742012-09-05 17:12:55 -070017226 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017227}/*WDI_ProcessAddSTASelfRsp*/
17228
17229
17230
17231/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017232 @brief WDI_ProcessDelSTASelfRsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070017233 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017234
17235 @param pWDICtx: pointer to the WLAN DAL context
17236 pEventData: pointer to the event information structure
17237
Jeff Johnson295189b2012-06-20 16:38:30 -070017238 @see
17239 @return Result of the function call
17240*/
17241WDI_Status
17242WDI_ProcessDelSTASelfRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017243(
Jeff Johnson295189b2012-06-20 16:38:30 -070017244 WDI_ControlBlockType* pWDICtx,
17245 WDI_EventInfoType* pEventData
17246)
17247{
17248 WDI_DelSTASelfRspParamsType wdiDelStaSelfRspParams;
17249 WDI_DelSTASelfRspCb wdiDelStaSelfRspCb;
17250 tDelStaSelfRspParams delStaSelfRspParams;
17251 wpt_uint8 ucStaIdx;
17252
17253 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17254
17255 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017256 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017257 -------------------------------------------------------------------------*/
17258 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17259 ( NULL == pEventData->pEventData))
17260 {
17261 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017262 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017263 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017264 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017265 }
17266
17267 wdiDelStaSelfRspCb = (WDI_DelSTASelfRspCb)pWDICtx->pfncRspCB;
17268
17269 /*-------------------------------------------------------------------------
17270 Extract response and send it to UMAC
17271 -------------------------------------------------------------------------*/
17272
Jeff Johnsone7245742012-09-05 17:12:55 -070017273 wpalMemoryCopy( &delStaSelfRspParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070017274 (wpt_uint8*)pEventData->pEventData,
17275 sizeof(tDelStaSelfRspParams));
17276
Jeff Johnsone7245742012-09-05 17:12:55 -070017277 wdiDelStaSelfRspParams.wdiStatus =
17278 WDI_HAL_2_WDI_STATUS(delStaSelfRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070017279
Jeff Johnsone7245742012-09-05 17:12:55 -070017280 /* delStaSelfRspParams.status is not
Jeff Johnson295189b2012-06-20 16:38:30 -070017281 eHAL_STATUS_DEL_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO*/
17282 if( eHAL_STATUS_SUCCESS == delStaSelfRspParams.status )
17283 {
17284 WDI_Status wdiStatus;
Jeff Johnsone7245742012-09-05 17:12:55 -070017285 wdiStatus = WDI_STATableFindStaidByAddr(pWDICtx,
Jeff Johnson295189b2012-06-20 16:38:30 -070017286 delStaSelfRspParams.selfMacAddr,
17287 &ucStaIdx);
17288 if(WDI_STATUS_E_FAILURE == wdiStatus)
17289 {
17290 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017291 "%s: Unable to extract the STA Idx ", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017292 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017293 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017294 }
17295 WDI_STATableDelSta(pWDICtx, ucStaIdx);
17296 }
17297
17298 /*Notify UMAC*/
17299 wdiDelStaSelfRspCb(&wdiDelStaSelfRspParams, (void*) pWDICtx->pRspCBUserData);
17300
17301 return WDI_STATUS_SUCCESS;
17302}
17303
Jeff Johnsone7245742012-09-05 17:12:55 -070017304#ifdef FEATURE_OEM_DATA_SUPPORT
17305/**
17306 @brief Start Oem Data Rsp function (called when a
17307 response is being received over the bus from HAL)
Jeff Johnson295189b2012-06-20 16:38:30 -070017308
Jeff Johnsone7245742012-09-05 17:12:55 -070017309 @param pWDICtx: pointer to the WLAN DAL context
17310 pEventData: pointer to the event information structure
17311
17312 @see
17313 @return Result of the function call
17314*/
17315#define OFFSET_OF(structType,fldName) (&((structType*)0)->fldName)
17316
17317WDI_Status
17318WDI_ProcessStartOemDataRsp
17319(
17320 WDI_ControlBlockType* pWDICtx,
17321 WDI_EventInfoType* pEventData
17322)
17323{
17324 WDI_oemDataRspCb wdiOemDataRspCb;
17325 WDI_oemDataRspParamsType* wdiOemDataRspParams;
17326 tStartOemDataRspParams* halStartOemDataRspParams;
17327
17328 /*-------------------------------------------------------------------------
17329 Sanity check
17330 -------------------------------------------------------------------------*/
17331 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17332 ( NULL == pEventData->pEventData))
17333 {
17334 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017335 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070017336 WDI_ASSERT(0);
17337 return WDI_STATUS_E_FAILURE;
17338 }
17339
17340 wdiOemDataRspCb = (WDI_oemDataRspCb)pWDICtx->pfncRspCB;
17341
17342 /*-------------------------------------------------------------------------
17343 Extract response and send it to UMAC
17344 -------------------------------------------------------------------------*/
17345 halStartOemDataRspParams = (tStartOemDataRspParams *)pEventData->pEventData;
17346
17347
17348 //It is the responsibility of the application code to check for failure
17349 //conditions!
17350
17351 //Allocate memory for WDI OEM DATA RSP structure
17352 wdiOemDataRspParams = wpalMemoryAllocate(sizeof(WDI_oemDataRspParamsType)) ;
17353
17354 if(NULL == wdiOemDataRspParams)
17355 {
17356 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080017357 "Failed to allocate memory in OEM DATA Response %p %p %p ",
Jeff Johnsone7245742012-09-05 17:12:55 -070017358 pWDICtx, pEventData, pEventData->pEventData);
17359 WDI_ASSERT(0);
17360 return WDI_STATUS_E_FAILURE;
17361 }
17362
17363 /* Populate WDI structure members */
17364 wpalMemoryCopy(wdiOemDataRspParams->oemDataRsp, halStartOemDataRspParams->oemDataRsp, OEM_DATA_RSP_SIZE);
17365
17366 /*Notify UMAC*/
17367 wdiOemDataRspCb(wdiOemDataRspParams, pWDICtx->pRspCBUserData);
17368
17369 //Free memory allocated for WDI OEM_DATA MEAS RSP structure
17370 wpalMemoryFree(wdiOemDataRspParams);
17371
17372 return WDI_STATUS_SUCCESS;
17373}/*WDI_PrcoessStartOemDataRsp*/
17374#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070017375
17376/*===========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070017377 Miscellaneous Control Response Processing API
Jeff Johnson295189b2012-06-20 16:38:30 -070017378===========================================================================*/
17379
17380/**
17381 @brief Process Channel Switch Rsp function (called when a response
17382 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017383
17384 @param pWDICtx: pointer to the WLAN DAL context
17385 pEventData: pointer to the event information structure
17386
Jeff Johnson295189b2012-06-20 16:38:30 -070017387 @see
17388 @return Result of the function call
17389*/
17390WDI_Status
17391WDI_ProcessChannelSwitchRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017392(
Jeff Johnson295189b2012-06-20 16:38:30 -070017393 WDI_ControlBlockType* pWDICtx,
17394 WDI_EventInfoType* pEventData
17395)
17396{
17397 WDI_SwitchCHRspParamsType wdiSwitchChRsp;
17398 WDI_SwitchChRspCb wdiChSwitchRspCb;
17399 tSwitchChannelRspParams halSwitchChannelRsp;
17400 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17401
17402 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017403 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017404 -------------------------------------------------------------------------*/
17405 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17406 ( NULL == pEventData->pEventData))
17407 {
17408 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017409 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017410 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017411 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017412 }
17413
17414 wdiChSwitchRspCb = (WDI_SwitchChRspCb)pWDICtx->pfncRspCB;
17415
17416 /*-------------------------------------------------------------------------
17417 Extract response and send it to UMAC
17418 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017419 wpalMemoryCopy( &halSwitchChannelRsp,
Jeff Johnson295189b2012-06-20 16:38:30 -070017420 (wpt_uint8*)pEventData->pEventData,
17421 sizeof(halSwitchChannelRsp));
17422
Jeff Johnsone7245742012-09-05 17:12:55 -070017423 wdiSwitchChRsp.wdiStatus =
17424 WDI_HAL_2_WDI_STATUS(halSwitchChannelRsp.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070017425 wdiSwitchChRsp.ucChannel = halSwitchChannelRsp.channelNumber;
17426
17427#ifdef WLAN_FEATURE_VOWIFI
Jeff Johnsone7245742012-09-05 17:12:55 -070017428 wdiSwitchChRsp.ucTxMgmtPower = halSwitchChannelRsp.txMgmtPower;
Jeff Johnson295189b2012-06-20 16:38:30 -070017429#endif
17430
17431 /*Notify UMAC*/
17432 wdiChSwitchRspCb( &wdiSwitchChRsp, pWDICtx->pRspCBUserData);
17433
Jeff Johnsone7245742012-09-05 17:12:55 -070017434 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017435}/*WDI_ProcessChannelSwitchRsp*/
17436
17437
17438/**
17439 @brief Process Config STA Rsp function (called when a response
17440 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017441
17442 @param pWDICtx: pointer to the WLAN DAL context
17443 pEventData: pointer to the event information structure
17444
Jeff Johnson295189b2012-06-20 16:38:30 -070017445 @see
17446 @return Result of the function call
17447*/
17448WDI_Status
17449WDI_ProcessConfigStaRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017450(
Jeff Johnson295189b2012-06-20 16:38:30 -070017451 WDI_ControlBlockType* pWDICtx,
17452 WDI_EventInfoType* pEventData
17453)
17454{
17455 WDI_ConfigSTARspParamsType wdiCfgSTAParams;
17456 WDI_ConfigSTARspCb wdiConfigSTARspCb;
17457 WDI_AddStaParams wdiAddSTAParam;
17458
17459 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070017460 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070017461
Jeff Johnsone7245742012-09-05 17:12:55 -070017462 tConfigStaRspMsg halConfigStaRsp;
Jeff Johnson295189b2012-06-20 16:38:30 -070017463 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17464
17465 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017466 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017467 -------------------------------------------------------------------------*/
17468 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17469 ( NULL == pEventData->pEventData))
17470 {
17471 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017472 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017473 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017474 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017475 }
17476
17477 wdiConfigSTARspCb = (WDI_ConfigSTARspCb)pWDICtx->pfncRspCB;
17478
17479 /*-------------------------------------------------------------------------
17480 Extract response and send it to UMAC
17481 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017482 wpalMemoryCopy( &halConfigStaRsp.configStaRspParams,
17483 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017484 sizeof(halConfigStaRsp.configStaRspParams));
17485
17486
17487 wdiCfgSTAParams.ucSTAIdx = halConfigStaRsp.configStaRspParams.staIdx;
17488 wdiCfgSTAParams.ucBssIdx = halConfigStaRsp.configStaRspParams.bssIdx;
17489 wdiCfgSTAParams.ucUcastSig = halConfigStaRsp.configStaRspParams.ucUcastSig;
17490 wdiCfgSTAParams.ucBcastSig = halConfigStaRsp.configStaRspParams.ucBcastSig;
17491 wdiCfgSTAParams.ucMgmtSig = halConfigStaRsp.configStaRspParams.ucMgmtSig;
17492
17493 /* MAC Address of STA - take from cache as it does not come back in the
17494 response*/
17495 wpalMemoryCopy( wdiCfgSTAParams.macSTA,
Jeff Johnsone7245742012-09-05 17:12:55 -070017496 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.macSTA,
Jeff Johnson295189b2012-06-20 16:38:30 -070017497 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070017498
17499 wdiCfgSTAParams.wdiStatus =
17500 WDI_HAL_2_WDI_STATUS(halConfigStaRsp.configStaRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070017501
17502 wdiCfgSTAParams.ucDpuIndex = halConfigStaRsp.configStaRspParams.dpuIndex;
17503 wdiCfgSTAParams.ucBcastDpuIndex = halConfigStaRsp.configStaRspParams.bcastDpuIndex;
17504 wdiCfgSTAParams.ucBcastMgmtDpuIdx = halConfigStaRsp.configStaRspParams.bcastMgmtDpuIdx;
17505
17506 if ( WDI_STATUS_SUCCESS == wdiCfgSTAParams.wdiStatus )
17507 {
17508 if ( WDI_ADD_STA == pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.wdiAction )
17509 {
17510 /* ADD STA to table */
Jeff Johnsone7245742012-09-05 17:12:55 -070017511 wdiAddSTAParam.ucSTAIdx = halConfigStaRsp.configStaRspParams.staIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070017512 wdiAddSTAParam.dpuSig = halConfigStaRsp.configStaRspParams.ucUcastSig;
17513 wdiAddSTAParam.dpuIndex = halConfigStaRsp.configStaRspParams.dpuIndex;
Jeff Johnsone7245742012-09-05 17:12:55 -070017514
Jeff Johnson295189b2012-06-20 16:38:30 -070017515 /*This info can be retrieved from the cached initial request*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017516 wdiAddSTAParam.ucWmmEnabled =
Jeff Johnson295189b2012-06-20 16:38:30 -070017517 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.ucWMMEnabled;
Jeff Johnsone7245742012-09-05 17:12:55 -070017518 wdiAddSTAParam.ucHTCapable =
17519 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.ucHTCapable;
17520 wdiAddSTAParam.ucStaType =
17521 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.wdiSTAType;
Chet Lanctot4b9abd72013-06-27 11:14:56 -070017522 wdiAddSTAParam.ucRmfEnabled =
17523 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.ucRMFEnabled;
Jeff Johnsone7245742012-09-05 17:12:55 -070017524
Jeff Johnson295189b2012-06-20 16:38:30 -070017525 /* MAC Address of STA */
Jeff Johnsone7245742012-09-05 17:12:55 -070017526 wpalMemoryCopy(wdiAddSTAParam.staMacAddr,
17527 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.macSTA,
Jeff Johnson295189b2012-06-20 16:38:30 -070017528 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070017529
17530 wpalMemoryCopy(wdiAddSTAParam.macBSSID,
17531 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.macBSSID ,
17532 WDI_MAC_ADDR_LEN);
17533
17534 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
17535 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.macBSSID,
17536 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070017537
17538 if ( NULL == pBSSSes )
17539 {
17540 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17541 "Association for this BSSID is not in place");
Jeff Johnsone7245742012-09-05 17:12:55 -070017542
Jeff Johnson295189b2012-06-20 16:38:30 -070017543 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017544 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070017545 }
17546
17547 /*Add BSS specific parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017548 wdiAddSTAParam.bcastMgmtDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070017549 halConfigStaRsp.configStaRspParams.bcastMgmtDpuIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070017550 wdiAddSTAParam.bcastMgmtDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070017551 halConfigStaRsp.configStaRspParams.ucMgmtSig;
Jeff Johnsone7245742012-09-05 17:12:55 -070017552 wdiAddSTAParam.bcastDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070017553 halConfigStaRsp.configStaRspParams.bcastDpuIndex;
Jeff Johnsone7245742012-09-05 17:12:55 -070017554 wdiAddSTAParam.bcastDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070017555 halConfigStaRsp.configStaRspParams.ucBcastSig;
Jeff Johnson295189b2012-06-20 16:38:30 -070017556 wdiAddSTAParam.ucBSSIdx = ucCurrentBSSSesIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070017557
Jeff Johnson295189b2012-06-20 16:38:30 -070017558 WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
17559 }
17560 if( WDI_UPDATE_STA == pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.wdiAction )
17561 {
17562 WDI_StaStruct* pSTATable = (WDI_StaStruct*) pWDICtx->staTable;
17563
Jeff Johnsone7245742012-09-05 17:12:55 -070017564 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bcastDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070017565 halConfigStaRsp.configStaRspParams.bcastDpuIndex;
Jeff Johnsone7245742012-09-05 17:12:55 -070017566 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bcastDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070017567 halConfigStaRsp.configStaRspParams.ucBcastSig;
Jeff Johnsone7245742012-09-05 17:12:55 -070017568 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bcastMgmtDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070017569 halConfigStaRsp.configStaRspParams.bcastMgmtDpuIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070017570 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bcastMgmtDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070017571 halConfigStaRsp.configStaRspParams.ucMgmtSig;
Jeff Johnsone7245742012-09-05 17:12:55 -070017572 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bssIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070017573 halConfigStaRsp.configStaRspParams.bssIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070017574 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].dpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070017575 halConfigStaRsp.configStaRspParams.dpuIndex;
Jeff Johnsone7245742012-09-05 17:12:55 -070017576 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].dpuSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070017577 halConfigStaRsp.configStaRspParams.ucUcastSig;
17578 }
17579 }
17580
17581 /*Notify UMAC*/
17582 wdiConfigSTARspCb( &wdiCfgSTAParams, pWDICtx->pRspCBUserData);
17583
Jeff Johnsone7245742012-09-05 17:12:55 -070017584 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017585}/*WDI_ProcessConfigStaRsp*/
17586
17587
17588/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017589 @brief Process Set Link State Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070017590 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017591
17592 @param pWDICtx: pointer to the WLAN DAL context
17593 pEventData: pointer to the event information structure
17594
Jeff Johnson295189b2012-06-20 16:38:30 -070017595 @see
17596 @return Result of the function call
17597*/
17598WDI_Status
17599WDI_ProcessSetLinkStateRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017600(
Jeff Johnson295189b2012-06-20 16:38:30 -070017601 WDI_ControlBlockType* pWDICtx,
17602 WDI_EventInfoType* pEventData
17603)
17604{
17605 WDI_Status wdiStatus;
17606 eHalStatus halStatus;
17607 WDI_SetLinkStateRspCb wdiSetLinkStateRspCb;
17608
17609 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070017610 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070017611 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17612
17613 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017614 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017615 -------------------------------------------------------------------------*/
17616 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17617 ( NULL == pEventData->pEventData))
17618 {
17619 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017620 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017621 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017622 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017623 }
17624
17625 wdiSetLinkStateRspCb = (WDI_SetLinkStateRspCb)pWDICtx->pfncRspCB;
17626
17627 wpalMutexAcquire(&pWDICtx->wptMutex);
17628
17629 /*If the link is being transitioned to idle - the BSS is to be deleted
17630 - this type of ending a session is possible when UMAC has failed an
17631 - association session during Join*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017632 if ( WDI_LINK_IDLE_STATE ==
Jeff Johnson295189b2012-06-20 16:38:30 -070017633 pWDICtx->wdiCacheSetLinkStReq.wdiLinkInfo.wdiLinkState )
17634 {
17635 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017636 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070017637 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017638 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
17639 pWDICtx->wdiCacheSetLinkStReq.wdiLinkInfo.macBSSID,
17640 &pBSSSes);
17641
Jeff Johnson295189b2012-06-20 16:38:30 -070017642 /*-----------------------------------------------------------------------
17643 Del BSS response can only be received for an existing assoc that
Jeff Johnsone7245742012-09-05 17:12:55 -070017644 is current and in progress
Jeff Johnson295189b2012-06-20 16:38:30 -070017645 -----------------------------------------------------------------------*/
17646 if ( NULL == pBSSSes )
17647 {
17648 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
17649 "Set link response received outside association session");
17650 }
17651 else
17652 {
17653 /* For BT AMP roles no need to delete the sessions if assoc fails. There
17654 will be del BSS coming after this to stop the beaconing & cleaning up the
17655 sessions*/
17656 if(( WDI_BTAMP_STA_MODE != pBSSSes->wdiBssType )&&
17657 ( WDI_BTAMP_AP_MODE != pBSSSes->wdiBssType ))
17658 {
17659 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017660 The current session will be deleted
Jeff Johnson295189b2012-06-20 16:38:30 -070017661 -----------------------------------------------------------------------*/
17662 WDI_DeleteSession(pWDICtx, pBSSSes);
17663
17664 /*-----------------------------------------------------------------------
17665 Check to see if this association is in progress - if so disable the
17666 flag as this has ended
17667 -----------------------------------------------------------------------*/
17668 if ( ucCurrentBSSSesIdx == pWDICtx->ucCurrentBSSSesIdx )
Jeff Johnsone7245742012-09-05 17:12:55 -070017669 {
Jeff Johnson295189b2012-06-20 16:38:30 -070017670 /*Association no longer in progress */
17671 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
17672 /*Association no longer in progress - prepare pending assoc for processing*/
17673 WDI_DequeueAssocRequest(pWDICtx);
17674 }
17675 }
17676 }
17677 }
17678 /* If the link state has been set to POST ASSOC, reset the "association in
17679 progress" flag */
Jeff Johnsone7245742012-09-05 17:12:55 -070017680 if ( WDI_LINK_POSTASSOC_STATE ==
Jeff Johnson295189b2012-06-20 16:38:30 -070017681 pWDICtx->wdiCacheSetLinkStReq.wdiLinkInfo.wdiLinkState )
17682 {
17683 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
17684 WDI_DequeueAssocRequest(pWDICtx);
17685 }
17686
17687 wpalMutexRelease(&pWDICtx->wptMutex);
17688
17689 /*-------------------------------------------------------------------------
17690 Extract response and send it to UMAC
17691 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017692 wpalMemoryCopy( &halStatus,
17693 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017694 sizeof(halStatus));
17695
Jeff Johnsone7245742012-09-05 17:12:55 -070017696 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017697
17698 /*Notify UMAC*/
17699 wdiSetLinkStateRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17700
Jeff Johnsone7245742012-09-05 17:12:55 -070017701 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017702}/*WDI_ProcessSetLinkStateRsp*/
17703
17704/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017705 @brief Process Get Stats Rsp function (called when a response is
Jeff Johnson295189b2012-06-20 16:38:30 -070017706 being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017707
17708 @param pWDICtx: pointer to the WLAN DAL context
17709 pEventData: pointer to the event information structure
17710
Jeff Johnson295189b2012-06-20 16:38:30 -070017711 @see
17712 @return Result of the function call
17713*/
17714WDI_Status
17715WDI_ProcessGetStatsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017716(
Jeff Johnson295189b2012-06-20 16:38:30 -070017717 WDI_ControlBlockType* pWDICtx,
17718 WDI_EventInfoType* pEventData
17719)
17720{
17721 WDI_GetStatsRspParamsType *wdiGetStatsRsp;
17722 WDI_GetStatsRspCb wdiGetStatsRspCb;
17723 tHalStatsRspParams* pHalStatsRspParams;
Jeff Johnsone7245742012-09-05 17:12:55 -070017724
Jeff Johnson295189b2012-06-20 16:38:30 -070017725 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17726
17727 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017728 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017729 -------------------------------------------------------------------------*/
17730 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17731 ( NULL == pEventData->pEventData))
17732 {
17733 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017734 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017735 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017736 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017737 }
17738
17739 /*-------------------------------------------------------------------------
17740 Extract response and send it to UMAC
17741 -------------------------------------------------------------------------*/
17742 pHalStatsRspParams = (tHalStatsRspParams *)pEventData->pEventData;
17743
17744 /*allocate the stats response buffer */
17745 wdiGetStatsRsp = (WDI_GetStatsRspParamsType *)wpalMemoryAllocate(
17746 pHalStatsRspParams->msgLen - sizeof(tHalStatsRspParams)
17747 + sizeof(WDI_GetStatsRspParamsType));
17748
17749 if(NULL == wdiGetStatsRsp)
17750 {
17751 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080017752 "Failed to allocate memory in Get Stats Response %p %p %p ",
Jeff Johnson295189b2012-06-20 16:38:30 -070017753 pWDICtx, pEventData, pEventData->pEventData);
17754 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017755 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017756 }
17757
17758 wdiGetStatsRspCb = (WDI_GetStatsRspCb)pWDICtx->pfncRspCB;
17759
17760 wpalMemoryZero(wdiGetStatsRsp, pHalStatsRspParams->msgLen);
17761 wdiGetStatsRsp->usMsgType = pHalStatsRspParams->msgType;
17762 wdiGetStatsRsp->usMsgLen = pHalStatsRspParams->msgLen;
17763 wdiGetStatsRsp->wdiStatus = WDI_HAL_2_WDI_STATUS(pHalStatsRspParams->status);
17764 wdiGetStatsRsp->ucSTAIdx = pHalStatsRspParams->staId;
17765 wdiGetStatsRsp->uStatsMask = pHalStatsRspParams->statsMask;
17766
17767 /* copy the stats from buffer at the end of the tHalStatsRspParams message */
17768 wpalMemoryCopy(wdiGetStatsRsp + 1,
17769 (wpt_uint8*)pEventData->pEventData + sizeof(tHalStatsRspParams),
17770 pHalStatsRspParams->msgLen - sizeof(tHalStatsRspParams));
17771
17772 /*Notify UMAC*/
17773 wdiGetStatsRspCb( wdiGetStatsRsp, pWDICtx->pRspCBUserData);
17774
17775 wpalMemoryFree(wdiGetStatsRsp);
17776
Jeff Johnsone7245742012-09-05 17:12:55 -070017777 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017778}/*WDI_ProcessGetStatsRsp*/
17779
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -080017780#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_CCX || defined(FEATURE_WLAN_LFR)
17781/**
17782 @brief Process Get Roam Rssi Rsp function (called when a response is
17783 being received over the bus from HAL)
17784
17785 @param pWDICtx: pointer to the WLAN DAL context
17786 pEventData: pointer to the event information structure
17787
17788 @see
17789 @return Result of the function call
17790*/
17791WDI_Status
17792WDI_ProcessGetRoamRssiRsp
17793(
17794 WDI_ControlBlockType* pWDICtx,
17795 WDI_EventInfoType* pEventData
17796)
17797{
17798 WDI_GetRoamRssiRspParamsType wdiGetRoamRssiRsp;
17799 WDI_GetRoamRssiRspCb wdiGetRoamRssiRspCb;
17800 tHalGetRoamRssiRspMsg halRoamRssiRspParams;
17801 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17802
17803 /*-------------------------------------------------------------------------
17804 Sanity check
17805 -------------------------------------------------------------------------*/
17806 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17807 ( NULL == pEventData->pEventData))
17808 {
17809 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
17810 "%s: Invalid parameters", __func__);
17811 WDI_ASSERT(0);
17812 return WDI_STATUS_E_FAILURE;
17813 }
17814
17815 wdiGetRoamRssiRspCb = (WDI_GetRoamRssiRspCb)pWDICtx->pfncRspCB;
17816 if(NULL == wdiGetRoamRssiRspCb)
17817 {
17818 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
17819 "%s: call back function is NULL", __func__);
17820 WDI_ASSERT(0);
17821 return WDI_STATUS_E_FAILURE;
17822 }
17823
17824 /*-------------------------------------------------------------------------
17825 Extract response and send it to UMAC
17826 -------------------------------------------------------------------------*/
17827 wpalMemoryCopy( &halRoamRssiRspParams.roamRssiRspParams,
17828 pEventData->pEventData,
17829 sizeof(halRoamRssiRspParams.roamRssiRspParams));
17830
17831 wdiGetRoamRssiRsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halRoamRssiRspParams.roamRssiRspParams.status);
17832 wdiGetRoamRssiRsp.ucSTAIdx = halRoamRssiRspParams.roamRssiRspParams.staId;
17833 wdiGetRoamRssiRsp.rssi = halRoamRssiRspParams.roamRssiRspParams.rssi;
17834
17835 /*Notify UMAC*/
17836 wdiGetRoamRssiRspCb( &wdiGetRoamRssiRsp, pWDICtx->pRspCBUserData);
17837
17838 return WDI_STATUS_SUCCESS;
17839}/*WDI_ProcessGetRoamRssiRsp*/
17840#endif
17841
Jeff Johnson295189b2012-06-20 16:38:30 -070017842
17843/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017844 @brief Process Update Cfg Rsp function (called when a response is
Jeff Johnson295189b2012-06-20 16:38:30 -070017845 being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017846
17847 @param pWDICtx: pointer to the WLAN DAL context
17848 pEventData: pointer to the event information structure
17849
Jeff Johnson295189b2012-06-20 16:38:30 -070017850 @see
17851 @return Result of the function call
17852*/
17853WDI_Status
17854WDI_ProcessUpdateCfgRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017855(
Jeff Johnson295189b2012-06-20 16:38:30 -070017856 WDI_ControlBlockType* pWDICtx,
17857 WDI_EventInfoType* pEventData
17858)
17859{
17860 WDI_Status wdiStatus;
17861 eHalStatus halStatus;
17862 WDI_UpdateCfgRspCb wdiUpdateCfgRspCb;
17863 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17864
17865 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017866 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017867 -------------------------------------------------------------------------*/
17868 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17869 ( NULL == pEventData->pEventData))
17870 {
17871 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017872 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017873 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017874 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017875 }
17876
17877 wdiUpdateCfgRspCb = (WDI_UpdateCfgRspCb)pWDICtx->pfncRspCB;
17878
17879 /*-------------------------------------------------------------------------
17880 Extract response and send it to UMAC
17881 -------------------------------------------------------------------------*/
17882 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070017883 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017884
17885 /*Notify UMAC*/
17886 wdiUpdateCfgRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17887
Jeff Johnsone7245742012-09-05 17:12:55 -070017888 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017889}/*WDI_ProcessUpdateCfgRsp*/
17890
17891
17892
17893/**
17894 @brief Process Add BA Rsp function (called when a response
17895 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017896
17897 @param pWDICtx: pointer to the WLAN DAL context
17898 pEventData: pointer to the event information structure
17899
Jeff Johnson295189b2012-06-20 16:38:30 -070017900 @see
17901 @return Result of the function call
17902*/
17903WDI_Status
17904WDI_ProcessAddBARsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017905(
Jeff Johnson295189b2012-06-20 16:38:30 -070017906 WDI_ControlBlockType* pWDICtx,
17907 WDI_EventInfoType* pEventData
17908)
17909{
17910 WDI_AddBARspCb wdiAddBARspCb;
17911
17912 tAddBARspParams halAddBARsp;
17913 WDI_AddBARspinfoType wdiAddBARsp;
17914
17915 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17916
17917 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017918 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017919 -------------------------------------------------------------------------*/
17920 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17921 ( NULL == pEventData->pEventData))
17922 {
17923 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017924 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017925 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017926 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017927 }
17928
17929 wdiAddBARspCb = (WDI_AddBARspCb)pWDICtx->pfncRspCB;
17930
17931 /*-------------------------------------------------------------------------
17932 Extract response and send it to UMAC
17933 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017934 wpalMemoryCopy( &halAddBARsp,
17935 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017936 sizeof(halAddBARsp));
17937
17938 wdiAddBARsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halAddBARsp.status);
17939
Jeff Johnson43971f52012-07-17 12:26:56 -070017940 if ( WDI_STATUS_SUCCESS == wdiAddBARsp.wdiStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070017941 {
17942 wdiAddBARsp.ucBaDialogToken = halAddBARsp.baDialogToken;
17943 }
17944
17945 /*Notify UMAC*/
17946 wdiAddBARspCb( &wdiAddBARsp, pWDICtx->pRspCBUserData);
17947
Jeff Johnsone7245742012-09-05 17:12:55 -070017948 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017949}/*WDI_ProcessAddSessionBARsp*/
17950
17951/**
17952 @brief Process Add BA Rsp function (called when a response
17953 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017954
17955 @param pWDICtx: pointer to the WLAN DAL context
17956 pEventData: pointer to the event information structure
17957
Jeff Johnson295189b2012-06-20 16:38:30 -070017958 @see
17959 @return Result of the function call
17960*/
17961WDI_Status
17962WDI_ProcessTriggerBARsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017963(
Jeff Johnson295189b2012-06-20 16:38:30 -070017964 WDI_ControlBlockType* pWDICtx,
17965 WDI_EventInfoType* pEventData
17966)
17967{
17968 WDI_TriggerBARspCb wdiTriggerBARspCb;
17969
17970 tTriggerBARspParams* halTriggerBARsp;
17971 tTriggerBaRspCandidate* halBaCandidate;
17972 WDI_TriggerBARspParamsType* wdiTriggerBARsp;
17973 WDI_TriggerBARspCandidateType* wdiTriggerBARspCandidate;
17974 wpt_uint16 index;
17975 wpt_uint16 TidIndex;
Tushnim Bhattacharyyaf64c5dc2013-03-21 15:11:31 -070017976 WDI_Status halTriggerBARspStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070017977 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17978
17979 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017980 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017981 -------------------------------------------------------------------------*/
17982 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17983 ( NULL == pEventData->pEventData))
17984 {
17985 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017986 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017987 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017988 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017989 }
17990
17991 wdiTriggerBARspCb = (WDI_TriggerBARspCb)pWDICtx->pfncRspCB;
17992
17993 /*-------------------------------------------------------------------------
17994 Extract response and send it to UMAC
17995 -------------------------------------------------------------------------*/
17996 halTriggerBARsp = (tTriggerBARspParams *)pEventData->pEventData;
17997
Tushnim Bhattacharyyaf64c5dc2013-03-21 15:11:31 -070017998 halTriggerBARspStatus = WDI_HAL_2_WDI_STATUS(halTriggerBARsp->status);
17999
18000 if ( WDI_STATUS_SUCCESS == halTriggerBARspStatus)
18001 {
18002 wdiTriggerBARsp = wpalMemoryAllocate(sizeof(WDI_TriggerBARspParamsType) +
Jeff Johnsone7245742012-09-05 17:12:55 -070018003 halTriggerBARsp->baCandidateCnt *
Jeff Johnson295189b2012-06-20 16:38:30 -070018004 sizeof(WDI_TriggerBARspCandidateType));
Jeff Johnson295189b2012-06-20 16:38:30 -070018005
Tushnim Bhattacharyyaf64c5dc2013-03-21 15:11:31 -070018006 if(NULL == wdiTriggerBARsp)
18007 {
18008 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080018009 "Failed to allocate memory in Trigger BA Response %p %p %p ",
Tushnim Bhattacharyyaf64c5dc2013-03-21 15:11:31 -070018010 pWDICtx, pEventData, pEventData->pEventData);
18011 WDI_ASSERT(0);
18012 return WDI_STATUS_E_FAILURE;
18013 }
Jeff Johnson295189b2012-06-20 16:38:30 -070018014
Tushnim Bhattacharyyaf64c5dc2013-03-21 15:11:31 -070018015 wdiTriggerBARsp->wdiStatus = halTriggerBARspStatus;
18016
Jeff Johnson295189b2012-06-20 16:38:30 -070018017 wdiTriggerBARsp->usBaCandidateCnt = halTriggerBARsp->baCandidateCnt;
Jeff Johnsone7245742012-09-05 17:12:55 -070018018 wpalMemoryCopy(wdiTriggerBARsp->macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -070018019 halTriggerBARsp->bssId , WDI_MAC_ADDR_LEN);
18020
18021 wdiTriggerBARspCandidate = (WDI_TriggerBARspCandidateType*)(wdiTriggerBARsp + 1);
18022 halBaCandidate = (tTriggerBaRspCandidate*)(halTriggerBARsp + 1);
18023
18024 for(index = 0; index < wdiTriggerBARsp->usBaCandidateCnt; index++)
18025 {
Jeff Johnsone7245742012-09-05 17:12:55 -070018026 wpalMemoryCopy(wdiTriggerBARspCandidate->macSTA,
Jeff Johnson295189b2012-06-20 16:38:30 -070018027 halBaCandidate->staAddr, WDI_MAC_ADDR_LEN);
18028 for(TidIndex = 0; TidIndex < STA_MAX_TC; TidIndex++)
18029 {
Jeff Johnsone7245742012-09-05 17:12:55 -070018030 wdiTriggerBARspCandidate->wdiBAInfo[TidIndex].fBaEnable =
Jeff Johnson295189b2012-06-20 16:38:30 -070018031 halBaCandidate->baInfo[TidIndex].fBaEnable;
Jeff Johnsone7245742012-09-05 17:12:55 -070018032 wdiTriggerBARspCandidate->wdiBAInfo[TidIndex].startingSeqNum =
Jeff Johnson295189b2012-06-20 16:38:30 -070018033 halBaCandidate->baInfo[TidIndex].startingSeqNum;
18034 }
18035 wdiTriggerBARspCandidate++;
18036 halBaCandidate++;
18037 }
18038 }
Tushnim Bhattacharyyaf64c5dc2013-03-21 15:11:31 -070018039 else
18040 {
18041 wdiTriggerBARsp = wpalMemoryAllocate(sizeof(WDI_TriggerBARspParamsType));
18042
18043 if(NULL == wdiTriggerBARsp)
18044 {
18045 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080018046 "Failed to allocate memory in Trigger BA Response %p %p %p ",
Tushnim Bhattacharyyaf64c5dc2013-03-21 15:11:31 -070018047 pWDICtx, pEventData, pEventData->pEventData);
18048 WDI_ASSERT(0);
18049 return WDI_STATUS_E_FAILURE;
18050 }
18051
18052 wdiTriggerBARsp->wdiStatus = halTriggerBARspStatus;
18053
18054 }
Jeff Johnson295189b2012-06-20 16:38:30 -070018055
18056 /*Notify UMAC*/
18057 wdiTriggerBARspCb( wdiTriggerBARsp, pWDICtx->pRspCBUserData);
18058
18059 wpalMemoryFree(wdiTriggerBARsp);
Jeff Johnsone7245742012-09-05 17:12:55 -070018060 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018061}/*WDI_ProcessAddSessionBARsp*/
18062
18063/**
18064 @brief Process Update Beacon Params Rsp function (called when a response
18065 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018066
18067 @param pWDICtx: pointer to the WLAN DAL context
18068 pEventData: pointer to the event information structure
18069
Jeff Johnson295189b2012-06-20 16:38:30 -070018070 @see
18071 @return Result of the function call
18072*/
18073WDI_Status
18074WDI_ProcessUpdateBeaconParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018075(
Jeff Johnson295189b2012-06-20 16:38:30 -070018076 WDI_ControlBlockType* pWDICtx,
18077 WDI_EventInfoType* pEventData
18078)
18079{
18080 WDI_Status wdiStatus;
18081 eHalStatus halStatus;
18082 WDI_UpdateBeaconParamsRspCb wdiUpdateBeaconParamsRspCb;
18083 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18084
18085 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018086 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018087 -------------------------------------------------------------------------*/
18088 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18089 ( NULL == pEventData->pEventData))
18090 {
18091 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018092 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018093 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018094 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018095 }
18096
18097 wdiUpdateBeaconParamsRspCb = (WDI_UpdateBeaconParamsRspCb)pWDICtx->pfncRspCB;
18098
18099 /*-------------------------------------------------------------------------
18100 Extract response and send it to UMAC
18101 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018102 wpalMemoryCopy( &halStatus,
18103 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070018104 sizeof(halStatus));
18105
Jeff Johnsone7245742012-09-05 17:12:55 -070018106 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018107
18108 /*Notify UMAC*/
18109 wdiUpdateBeaconParamsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
18110
Jeff Johnsone7245742012-09-05 17:12:55 -070018111 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018112}/*WDI_ProcessUpdateBeaconParamsRsp*/
18113
18114/**
18115 @brief Process Send Beacon template Rsp function (called when a response
18116 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018117
18118 @param pWDICtx: pointer to the WLAN DAL context
18119 pEventData: pointer to the event information structure
18120
Jeff Johnson295189b2012-06-20 16:38:30 -070018121 @see
18122 @return Result of the function call
18123*/
18124WDI_Status
18125WDI_ProcessSendBeaconParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018126(
Jeff Johnson295189b2012-06-20 16:38:30 -070018127 WDI_ControlBlockType* pWDICtx,
18128 WDI_EventInfoType* pEventData
18129)
18130{
18131 WDI_Status wdiStatus;
18132 eHalStatus halStatus;
18133 WDI_SendBeaconParamsRspCb wdiSendBeaconParamsRspCb;
18134 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18135
18136 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018137 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018138 -------------------------------------------------------------------------*/
18139 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18140 ( NULL == pEventData->pEventData))
18141 {
18142 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018143 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018144 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018145 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018146 }
18147
18148 wdiSendBeaconParamsRspCb = (WDI_SendBeaconParamsRspCb)pWDICtx->pfncRspCB;
18149
18150 /*-------------------------------------------------------------------------
18151 Extract response and send it to UMAC
18152 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018153 wpalMemoryCopy( &halStatus,
18154 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070018155 sizeof(halStatus));
18156
Jeff Johnsone7245742012-09-05 17:12:55 -070018157 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018158
18159 /*Notify UMAC*/
18160 wdiSendBeaconParamsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
18161
Jeff Johnsone7245742012-09-05 17:12:55 -070018162 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018163}/*WDI_ProcessSendBeaconParamsRsp*/
18164
Jeff Johnsone7245742012-09-05 17:12:55 -070018165
Jeff Johnson295189b2012-06-20 16:38:30 -070018166/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018167 @brief Process Update Probe Resp Template Rsp function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070018168 when a response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018169
18170 @param pWDICtx: pointer to the WLAN DAL context
18171 pEventData: pointer to the event information structure
18172
Jeff Johnson295189b2012-06-20 16:38:30 -070018173 @see
18174 @return Result of the function call
18175*/
18176WDI_Status
18177WDI_ProcessUpdateProbeRspTemplateRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018178(
Jeff Johnson295189b2012-06-20 16:38:30 -070018179 WDI_ControlBlockType* pWDICtx,
18180 WDI_EventInfoType* pEventData
18181)
18182{
18183 WDI_Status wdiStatus;
18184 eHalStatus halStatus;
18185 WDI_UpdateProbeRspTemplateRspCb wdiUpdProbeRspTemplRspCb;
18186 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18187
18188 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018189 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018190 -------------------------------------------------------------------------*/
18191 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18192 ( NULL == pEventData->pEventData))
18193 {
18194 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018195 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018196 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018197 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018198 }
18199
18200 wdiUpdProbeRspTemplRspCb = (WDI_UpdateProbeRspTemplateRspCb)pWDICtx->pfncRspCB;
18201
18202 /*-------------------------------------------------------------------------
18203 Extract response and send it to UMAC
18204 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018205 wpalMemoryCopy( &halStatus,
18206 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070018207 sizeof(halStatus));
18208
Jeff Johnsone7245742012-09-05 17:12:55 -070018209 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018210
18211 /*Notify UMAC*/
18212 wdiUpdProbeRspTemplRspCb( wdiStatus, pWDICtx->pRspCBUserData);
18213
Jeff Johnsone7245742012-09-05 17:12:55 -070018214 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018215}/*WDI_ProcessUpdateProbeRspTemplateRsp*/
18216
18217 /**
18218 @brief Process Set Max Tx Power Rsp function (called when a response
18219 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018220
18221 @param pWDICtx: pointer to the WLAN DAL context
18222 pEventData: pointer to the event information structure
18223
Jeff Johnson295189b2012-06-20 16:38:30 -070018224 @see
18225 @return Result of the function call
18226*/
18227WDI_Status
18228WDI_ProcessSetMaxTxPowerRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018229(
Jeff Johnson295189b2012-06-20 16:38:30 -070018230 WDI_ControlBlockType* pWDICtx,
18231 WDI_EventInfoType* pEventData
18232)
18233{
18234 tSetMaxTxPwrRspMsg halTxpowerrsp;
Jeff Johnsone7245742012-09-05 17:12:55 -070018235
Jeff Johnson295189b2012-06-20 16:38:30 -070018236 WDI_SetMaxTxPowerRspMsg wdiSetMaxTxPowerRspMsg;
Jeff Johnsone7245742012-09-05 17:12:55 -070018237
Jeff Johnson295189b2012-06-20 16:38:30 -070018238 WDA_SetMaxTxPowerRspCb wdiReqStatusCb;
18239 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18240
18241 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018242 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018243 -------------------------------------------------------------------------*/
18244 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18245 ( NULL == pEventData->pEventData))
18246 {
18247 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018248 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018249 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018250 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018251 }
18252
18253 wdiReqStatusCb = (WDA_SetMaxTxPowerRspCb)pWDICtx->pfncRspCB;
18254
18255 /*-------------------------------------------------------------------------
18256 Extract response and send it to UMAC
18257 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018258 wpalMemoryCopy( &halTxpowerrsp.setMaxTxPwrRspParams,
18259 pEventData->pEventData,
18260 sizeof(halTxpowerrsp.setMaxTxPwrRspParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070018261
18262 if ( eHAL_STATUS_SUCCESS != halTxpowerrsp.setMaxTxPwrRspParams.status )
18263 {
18264 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
18265 "Error status returned in Set Max Tx Power Response ");
Jeff Johnsone7245742012-09-05 17:12:55 -070018266 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018267 }
18268
Jeff Johnsone7245742012-09-05 17:12:55 -070018269 wdiSetMaxTxPowerRspMsg.wdiStatus =
Jeff Johnson295189b2012-06-20 16:38:30 -070018270 WDI_HAL_2_WDI_STATUS(halTxpowerrsp.setMaxTxPwrRspParams.status);
Jeff Johnsone7245742012-09-05 17:12:55 -070018271 wdiSetMaxTxPowerRspMsg.ucPower = halTxpowerrsp.setMaxTxPwrRspParams.power;
Jeff Johnson295189b2012-06-20 16:38:30 -070018272
18273 /*Notify UMAC*/
18274 wdiReqStatusCb( &wdiSetMaxTxPowerRspMsg, pWDICtx->pRspCBUserData);
18275
Jeff Johnsone7245742012-09-05 17:12:55 -070018276 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018277}
18278
schang86c22c42013-03-13 18:41:24 -070018279 /**
18280 @brief Process Set Tx Power Rsp function (called when a response
18281 is being received over the bus from HAL)
18282
18283 @param pWDICtx: pointer to the WLAN DAL context
18284 pEventData: pointer to the event information structure
18285
18286 @see
18287 @return Result of the function call
18288*/
18289WDI_Status
18290WDI_ProcessSetTxPowerRsp
18291(
18292 WDI_ControlBlockType* pWDICtx,
18293 WDI_EventInfoType* pEventData
18294)
18295{
18296 tSetTxPwrRspMsg halTxpowerrsp;
18297 WDI_SetTxPowerRspMsg wdiSetTxPowerRspMsg;
18298 WDA_SetTxPowerRspCb wdiReqStatusCb;
18299 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18300
18301 /*-------------------------------------------------------------------------
18302 Sanity check
18303 -------------------------------------------------------------------------*/
18304 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18305 ( NULL == pEventData->pEventData))
18306 {
18307 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
18308 "%s: Invalid parameters", __func__);
18309 WDI_ASSERT(0);
18310 return WDI_STATUS_E_FAILURE;
18311 }
18312
18313 wdiReqStatusCb = (WDA_SetTxPowerRspCb)pWDICtx->pfncRspCB;
18314
18315 /*-------------------------------------------------------------------------
18316 Extract response and send it to UMAC
18317 -------------------------------------------------------------------------*/
18318 wpalMemoryCopy(&halTxpowerrsp.setTxPwrRspParams,
18319 pEventData->pEventData,
18320 sizeof(halTxpowerrsp.setTxPwrRspParams));
18321
18322 if (eHAL_STATUS_SUCCESS != halTxpowerrsp.setTxPwrRspParams.status)
18323 {
18324 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
18325 "Error status returned in Set Tx Power Response ");
18326 WDI_DetectedDeviceError(pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
18327 return WDI_STATUS_E_FAILURE;
18328 }
18329
18330 wdiSetTxPowerRspMsg.wdiStatus =
18331 WDI_HAL_2_WDI_STATUS(halTxpowerrsp.setTxPwrRspParams.status);
18332
18333 /*Notify UMAC*/
18334 wdiReqStatusCb(&wdiSetTxPowerRspMsg, pWDICtx->pRspCBUserData);
18335
18336 return WDI_STATUS_SUCCESS;
18337}
Arif Hussain935a8fb2014-01-31 12:12:28 -080018338
18339/**
18340 @brief Process Set Max Tx Power Per Band Rsp function (called when a response
18341 is being received over the bus from HAL)
18342
18343 @param pWDICtx: pointer to the WLAN DAL context
18344 pEventData: pointer to the event information structure
18345
18346 @see
18347 @return Result of the function call
18348*/
18349WDI_Status
18350WDI_ProcessSetMaxTxPowerPerBandRsp
18351(
18352 WDI_ControlBlockType* pWDICtx,
18353 WDI_EventInfoType* pEventData
18354)
18355{
18356 tSetMaxTxPwrPerBandRspMsg halMaxTxPowerPerBandRsp;
18357 WDI_SetMaxTxPowerPerBandRspMsg wdiSetTxPowerPerBandRspMsg;
18358 WDA_SetMaxTxPowerPerBandRspCb wdiReqStatusCb;
18359 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18360
18361 /*-------------------------------------------------------------------------
18362 Sanity check
18363 -------------------------------------------------------------------------*/
18364 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18365 ( NULL == pEventData->pEventData))
18366 {
18367 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
18368 "%s: Invalid parameters", __func__);
18369 WDI_ASSERT(0);
18370 return WDI_STATUS_E_FAILURE;
18371 }
18372
18373 wdiReqStatusCb = (WDA_SetMaxTxPowerPerBandRspCb)pWDICtx->pfncRspCB;
18374
18375 /*-------------------------------------------------------------------------
18376 Extract response and send it to UMAC
18377 -------------------------------------------------------------------------*/
18378 wpalMemoryCopy(&halMaxTxPowerPerBandRsp.setMaxTxPwrPerBandRspParams,
18379 pEventData->pEventData,
18380 sizeof(halMaxTxPowerPerBandRsp.setMaxTxPwrPerBandRspParams));
18381
18382 if (eHAL_STATUS_SUCCESS !=
18383 halMaxTxPowerPerBandRsp.setMaxTxPwrPerBandRspParams.status)
18384 {
18385 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
18386 "Error status returned in Set Max Tx Power Per Band Response");
18387 return WDI_STATUS_E_FAILURE;
18388 }
18389
18390 wdiSetTxPowerPerBandRspMsg.wdiStatus =
18391 WDI_HAL_2_WDI_STATUS(
18392 halMaxTxPowerPerBandRsp.setMaxTxPwrPerBandRspParams.status);
18393
18394 /* Notify UMAC */
18395 wdiReqStatusCb(&wdiSetTxPowerPerBandRspMsg, pWDICtx->pRspCBUserData);
18396
18397 return WDI_STATUS_SUCCESS;
18398}
18399
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053018400#ifdef FEATURE_WLAN_TDLS
18401/**
18402 @brief Process TDLS Link Establish Rsp function (called
18403 when a response is being received over the bus from HAL)
18404
18405 @param pWDICtx: pointer to the WLAN DAL context
18406 pEventData: pointer to the event information structure
18407
18408 @see
18409 @return Result of the function call
18410*/
18411WDI_Status
18412WDI_ProcessLinkEstablishReqRsp
18413(
18414 WDI_ControlBlockType* pWDICtx,
18415 WDI_EventInfoType* pEventData
18416)
18417{
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053018418 eHalStatus halStatus;
18419 WDI_SetTDLSLinkEstablishReqParamsRspCb wdiTDLSLinkEstablishReqParamsRspCb;
Gopichand Nakkala574f6d12013-06-27 19:38:43 +053018420 tTDLSLinkEstablishedRespMsg halTdlsLinkEstablishedRespMsg;
18421 WDI_SetTdlsLinkEstablishReqResp wdiSetTdlsLinkEstablishReqResp;
18422
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053018423 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18424
18425 /*-------------------------------------------------------------------------
18426 Sanity check
18427 -------------------------------------------------------------------------*/
18428 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18429 ( NULL == pEventData->pEventData))
18430 {
18431 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
18432 "%s: Invalid parameters", __func__);
18433 WDI_ASSERT(0);
18434 return WDI_STATUS_E_FAILURE;
18435 }
18436
Gopichand Nakkala574f6d12013-06-27 19:38:43 +053018437 /*-------------------------------------------------------------------------
18438 Extract indication and send it to UMAC
18439 -------------------------------------------------------------------------*/
18440 wpalMemoryCopy( &halTdlsLinkEstablishedRespMsg.TDLSLinkEstablishedRespParams,
18441 pEventData->pEventData,
18442 sizeof(halTdlsLinkEstablishedRespMsg.TDLSLinkEstablishedRespParams) );
18443
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053018444 wdiTDLSLinkEstablishReqParamsRspCb = (WDI_SetTDLSLinkEstablishReqParamsRspCb)pWDICtx->pfncRspCB;
18445
18446 /*-------------------------------------------------------------------------
18447 Extract response and send it to UMAC
18448 -------------------------------------------------------------------------*/
18449 wpalMemoryCopy( &halStatus,
18450 pEventData->pEventData,
18451 sizeof(halStatus));
18452
Gopichand Nakkala574f6d12013-06-27 19:38:43 +053018453 wdiSetTdlsLinkEstablishReqResp.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
18454 wdiSetTdlsLinkEstablishReqResp.uStaIdx = halTdlsLinkEstablishedRespMsg.TDLSLinkEstablishedRespParams.staIdx;
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053018455
18456 /*Notify UMAC*/
Gopichand Nakkala574f6d12013-06-27 19:38:43 +053018457 wdiTDLSLinkEstablishReqParamsRspCb( &wdiSetTdlsLinkEstablishReqResp, pWDICtx->pRspCBUserData);
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053018458
18459 return WDI_STATUS_SUCCESS;
18460}/*WDI_ProcessLinkEstablishReqRsp*/
18461#endif
schang86c22c42013-03-13 18:41:24 -070018462
Jeff Johnson295189b2012-06-20 16:38:30 -070018463/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018464 @brief Process P2P Group Owner Notice Of Absense Rsp function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070018465 when a response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018466
18467 @param pWDICtx: pointer to the WLAN DAL context
18468 pEventData: pointer to the event information structure
18469
Jeff Johnson295189b2012-06-20 16:38:30 -070018470 @see
18471 @return Result of the function call
18472*/
18473WDI_Status
18474WDI_ProcessP2PGONOARsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018475(
Jeff Johnson295189b2012-06-20 16:38:30 -070018476 WDI_ControlBlockType* pWDICtx,
18477 WDI_EventInfoType* pEventData
18478)
18479{
18480 WDI_Status wdiStatus;
18481 eHalStatus halStatus;
18482 WDI_SetP2PGONOAReqParamsRspCb wdiP2PGONOAReqParamsRspCb;
18483 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18484
18485 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018486 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018487 -------------------------------------------------------------------------*/
18488 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18489 ( NULL == pEventData->pEventData))
18490 {
18491 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018492 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018493 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018494 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018495 }
18496
18497 wdiP2PGONOAReqParamsRspCb = (WDI_SetP2PGONOAReqParamsRspCb)pWDICtx->pfncRspCB;
18498
18499 /*-------------------------------------------------------------------------
18500 Extract response and send it to UMAC
18501 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018502 wpalMemoryCopy( &halStatus,
18503 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070018504 sizeof(halStatus));
18505
Jeff Johnsone7245742012-09-05 17:12:55 -070018506 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018507
18508 /*Notify UMAC*/
18509 wdiP2PGONOAReqParamsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
18510
Jeff Johnsone7245742012-09-05 17:12:55 -070018511 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018512}/*WDI_ProcessP2PGONOARsp*/
Jeff Johnson295189b2012-06-20 16:38:30 -070018513/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018514 @brief Process Enter IMPS Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070018515 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018516
18517 @param pWDICtx: pointer to the WLAN DAL context
18518 pEventData: pointer to the event information structure
18519
Jeff Johnson295189b2012-06-20 16:38:30 -070018520 @see
18521 @return Result of the function call
18522*/
18523WDI_Status
18524WDI_ProcessEnterImpsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018525(
Jeff Johnson295189b2012-06-20 16:38:30 -070018526 WDI_ControlBlockType* pWDICtx,
18527 WDI_EventInfoType* pEventData
18528)
18529{
18530 WDI_Status wdiStatus;
18531 eHalStatus halStatus;
18532 WDI_EnterImpsRspCb wdiEnterImpsRspCb;
Ravali85acf6b2012-12-12 14:01:38 -080018533 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070018534 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18535
18536 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018537 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018538 -------------------------------------------------------------------------*/
18539 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18540 ( NULL == pEventData->pEventData))
18541 {
18542 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018543 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018544 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018545 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018546 }
18547
18548 wdiEnterImpsRspCb = (WDI_EnterImpsRspCb)pWDICtx->pfncRspCB;
18549
18550 /*-------------------------------------------------------------------------
18551 Extract response and send it to UMAC
18552 -------------------------------------------------------------------------*/
18553 halStatus = *((eHalStatus*)pEventData->pEventData);
18554
Jeff Johnsone7245742012-09-05 17:12:55 -070018555 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018556
Madan Mohan Koyyalamudi48e375a2012-09-24 13:19:17 -070018557 /* If IMPS req failed, riva is not power collapsed Put the DXE in FULL state.
18558 * Other module states are taken care by PMC.
18559 * TODO: How do we take care of the case where IMPS is success, but riva power collapse fails??
18560 */
18561 if (wdiStatus != WDI_STATUS_SUCCESS) {
18562
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070018563 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
18564 "WDI Process Enter IMPS RSP failed With HAL Status Code: %d",
18565 halStatus);
18566 /* Call Back is not required as we are putting the DXE in FULL
18567 * and riva is already in full (IMPS RSP Failed)*/
Ravali85acf6b2012-12-12 14:01:38 -080018568 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
18569
18570 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus ) {
18571 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain9a5d5382013-11-17 22:05:35 -080018572 "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 -080018573 WDI_ASSERT(0);
18574 }
Madan Mohan Koyyalamudi48e375a2012-09-24 13:19:17 -070018575 }
Jeff Johnson295189b2012-06-20 16:38:30 -070018576 /*Notify UMAC*/
18577 wdiEnterImpsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
18578
Jeff Johnsone7245742012-09-05 17:12:55 -070018579 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018580}/*WDI_ProcessEnterImpsRsp*/
18581
18582/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018583 @brief Process Exit IMPS Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070018584 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018585
18586 @param pWDICtx: pointer to the WLAN DAL context
18587 pEventData: pointer to the event information structure
18588
Jeff Johnson295189b2012-06-20 16:38:30 -070018589 @see
18590 @return Result of the function call
18591*/
18592WDI_Status
18593WDI_ProcessExitImpsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018594(
Jeff Johnson295189b2012-06-20 16:38:30 -070018595 WDI_ControlBlockType* pWDICtx,
18596 WDI_EventInfoType* pEventData
18597)
18598{
18599 WDI_Status wdiStatus;
18600 eHalStatus halStatus;
18601 WDI_ExitImpsRspCb wdiExitImpsRspCb;
Ravali85acf6b2012-12-12 14:01:38 -080018602 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070018603 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18604
18605 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018606 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018607 -------------------------------------------------------------------------*/
18608 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18609 ( NULL == pEventData->pEventData))
18610 {
18611 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018612 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018613 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018614 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018615 }
18616
18617 wdiExitImpsRspCb = (WDI_ExitImpsRspCb)pWDICtx->pfncRspCB;
18618
18619 /*-------------------------------------------------------------------------
18620 Extract response and send it to UMAC
18621 -------------------------------------------------------------------------*/
18622 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070018623 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018624
Gopichand Nakkalac6c91902013-05-29 18:53:35 +053018625 if (halStatus != eHAL_STATUS_SUCCESS)
18626 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
18627 "%s: Exit IMPS response is a failure with halStatus %d", __func__, halStatus);
18628
Jeff Johnson295189b2012-06-20 16:38:30 -070018629 // notify DTS that we are entering Full power
Ravali85acf6b2012-12-12 14:01:38 -080018630 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
18631 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
18632 {
18633 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain9a5d5382013-11-17 22:05:35 -080018634 "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 -080018635 WDI_ASSERT(0);
18636 }
Jeff Johnson295189b2012-06-20 16:38:30 -070018637 /*Notify UMAC*/
18638 wdiExitImpsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
18639
Jeff Johnsone7245742012-09-05 17:12:55 -070018640 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018641}/*WDI_ProcessExitImpsRsp*/
18642
18643/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018644 @brief Process Enter BMPS Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070018645 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018646
18647 @param pWDICtx: pointer to the WLAN DAL context
18648 pEventData: pointer to the event information structure
18649
Jeff Johnson295189b2012-06-20 16:38:30 -070018650 @see
18651 @return Result of the function call
18652*/
18653WDI_Status
18654WDI_ProcessEnterBmpsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018655(
Jeff Johnson295189b2012-06-20 16:38:30 -070018656 WDI_ControlBlockType* pWDICtx,
18657 WDI_EventInfoType* pEventData
18658)
18659{
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018660 eHalStatus halStatus = eHAL_STATUS_FAILURE;
18661 tHalEnterBmpsRspParams halEnterBmpsRsp;
18662 WDI_EnterBmpsRspCb wdiEnterBmpsRspCb;
18663 WDI_EnterBmpsRspParamsType wdiEnterBmpsRspparams;
Ravali85acf6b2012-12-12 14:01:38 -080018664 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070018665 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18666
18667 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018668 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018669 -------------------------------------------------------------------------*/
18670 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18671 ( NULL == pEventData->pEventData))
18672 {
18673 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018674 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018675 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018676 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018677 }
18678
Jeff Johnson295189b2012-06-20 16:38:30 -070018679 /*-------------------------------------------------------------------------
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018680 Extract response and send it to UMAC
18681 -------------------------------------------------------------------------*/
18682 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
18683 {
18684 wpalMemoryCopy( &halEnterBmpsRsp,
18685 pEventData->pEventData,
18686 sizeof(halEnterBmpsRsp));
18687
18688 //Used to print debug message
18689 halStatus = halEnterBmpsRsp.status;
18690 wdiEnterBmpsRspparams.wdiStatus = WDI_HAL_2_WDI_STATUS(halEnterBmpsRsp.status);
18691 wdiEnterBmpsRspparams.bssIdx = halEnterBmpsRsp.bssIdx;
18692 }
18693 else
18694 {
18695 halStatus = *((eHalStatus*)pEventData->pEventData);
18696 wdiEnterBmpsRspparams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
18697 }
18698
18699 wdiEnterBmpsRspCb = (WDI_EnterBmpsRspCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070018700
Madan Mohan Koyyalamudi48e375a2012-09-24 13:19:17 -070018701 /* If BMPS req failed, riva is not power collapsed put the DXE in FULL state.
18702 * Other module states are taken care by PMC.
18703 * TODO: How do we take care of the case where BMPS is success, but riva power collapse fails??
18704 */
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018705 if (wdiEnterBmpsRspparams.wdiStatus != WDI_STATUS_SUCCESS)
18706 {
Madan Mohan Koyyalamudi48e375a2012-09-24 13:19:17 -070018707
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018708 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070018709 "WDI Process Enter BMPS RSP failed With HAL Status Code: %d",
18710 halStatus);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018711 /* Call Back is not required as we are putting the DXE in FULL
18712 * and riva is already in FULL (BMPS RSP Failed)*/
Ravali85acf6b2012-12-12 14:01:38 -080018713 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
18714 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
18715 {
18716 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain9a5d5382013-11-17 22:05:35 -080018717 "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 -080018718 WDI_ASSERT(0);
18719 }
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018720 pWDICtx->bInBmps = eWLAN_PAL_FALSE;
Madan Mohan Koyyalamudi48e375a2012-09-24 13:19:17 -070018721 }
18722
Jeff Johnson295189b2012-06-20 16:38:30 -070018723 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018724 wdiEnterBmpsRspCb( &wdiEnterBmpsRspparams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070018725
Jeff Johnsone7245742012-09-05 17:12:55 -070018726 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018727}/*WDI_ProcessEnterBmpsRsp*/
18728
18729/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018730 @brief Process Exit BMPS Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070018731 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018732
18733 @param pWDICtx: pointer to the WLAN DAL context
18734 pEventData: pointer to the event information structure
18735
Jeff Johnson295189b2012-06-20 16:38:30 -070018736 @see
18737 @return Result of the function call
18738*/
18739WDI_Status
18740WDI_ProcessExitBmpsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018741(
Jeff Johnson295189b2012-06-20 16:38:30 -070018742 WDI_ControlBlockType* pWDICtx,
18743 WDI_EventInfoType* pEventData
18744)
18745{
Jeff Johnson295189b2012-06-20 16:38:30 -070018746 eHalStatus halStatus;
18747 WDI_ExitBmpsRspCb wdiExitBmpsRspCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018748 tHalExitBmpsRspParams halExitBmpsRsp;
Ravali85acf6b2012-12-12 14:01:38 -080018749 WDI_ExitBmpsRspParamsType wdiExitBmpsRspParams;
18750 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070018751 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18752
18753 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018754 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018755 -------------------------------------------------------------------------*/
18756 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18757 ( NULL == pEventData->pEventData))
18758 {
18759 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018760 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018761 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018762 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018763 }
18764
18765 wdiExitBmpsRspCb = (WDI_ExitBmpsRspCb)pWDICtx->pfncRspCB;
18766
18767 /*-------------------------------------------------------------------------
18768 Extract response and send it to UMAC
18769 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018770
18771 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
18772 {
18773 wpalMemoryCopy( &halExitBmpsRsp,
18774 pEventData->pEventData,
18775 sizeof(halExitBmpsRsp));
18776
18777 wdiExitBmpsRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halExitBmpsRsp.status);
18778 wdiExitBmpsRspParams.bssIdx = halExitBmpsRsp.bssIdx;
18779 }
18780 else
18781 {
18782 halStatus = *((eHalStatus*)pEventData->pEventData);
18783 wdiExitBmpsRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
18784 }
Jeff Johnson295189b2012-06-20 16:38:30 -070018785
18786 // notify DTS that we are entering Full power
Ravali85acf6b2012-12-12 14:01:38 -080018787 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
18788 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
18789 {
18790 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain9a5d5382013-11-17 22:05:35 -080018791 "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 -080018792 WDI_ASSERT(0);
18793 }
Jeff Johnson295189b2012-06-20 16:38:30 -070018794 pWDICtx->bInBmps = eWLAN_PAL_FALSE;
18795
18796 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018797 wdiExitBmpsRspCb( &wdiExitBmpsRspParams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070018798
Jeff Johnsone7245742012-09-05 17:12:55 -070018799 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018800}/*WDI_ProcessExitBmpsRsp*/
18801
18802/**
18803 @brief Process Enter UAPSD Rsp function (called when a response
18804 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018805
18806 @param pWDICtx: pointer to the WLAN DAL context
18807 pEventData: pointer to the event information structure
18808
Jeff Johnson295189b2012-06-20 16:38:30 -070018809 @see
18810 @return Result of the function call
18811*/
18812WDI_Status
18813WDI_ProcessEnterUapsdRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018814(
Jeff Johnson295189b2012-06-20 16:38:30 -070018815 WDI_ControlBlockType* pWDICtx,
18816 WDI_EventInfoType* pEventData
18817)
18818{
Jeff Johnson295189b2012-06-20 16:38:30 -070018819 eHalStatus halStatus;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018820 tUapsdRspParams halEnterUapsdRsp;
Jeff Johnson295189b2012-06-20 16:38:30 -070018821 WDI_EnterUapsdRspCb wdiEnterUapsdRspCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018822 WDI_EnterUapsdRspParamsType wdiEnterUapsdRspParams;
18823
Jeff Johnson295189b2012-06-20 16:38:30 -070018824 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18825
18826 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018827 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018828 -------------------------------------------------------------------------*/
18829 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18830 ( NULL == pEventData->pEventData))
18831 {
18832 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018833 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018834 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018835 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018836 }
18837
18838 wdiEnterUapsdRspCb = (WDI_EnterUapsdRspCb)pWDICtx->pfncRspCB;
18839
18840 /*-------------------------------------------------------------------------
18841 Extract response and send it to UMAC
18842 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018843 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
18844 {
18845 wpalMemoryCopy( &halEnterUapsdRsp,
18846 pEventData->pEventData,
18847 sizeof(halEnterUapsdRsp));
Jeff Johnson295189b2012-06-20 16:38:30 -070018848
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018849 wdiEnterUapsdRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halEnterUapsdRsp.status);
18850 wdiEnterUapsdRspParams.bssIdx = halEnterUapsdRsp.bssIdx;
18851 }
18852 else
18853 {
18854 halStatus = *((eHalStatus*)pEventData->pEventData);
18855 wdiEnterUapsdRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
18856 }
18857
18858 if(WDI_STATUS_SUCCESS == wdiEnterUapsdRspParams.wdiStatus)
Jeff Johnson295189b2012-06-20 16:38:30 -070018859 {
18860 // Set the DPU routing flag to the FW WQ, all the TX frames would be now pushed
18861 // from DPU to the FW-WQ (5) in UAPSD. FW would be in data path, monitoring
18862 // the traffic to decide when to suspend the trigger frames when there is no traffic
18863 // activity on the trigger enabled ACs
18864 pWDICtx->ucDpuRF = BMUWQ_FW_DPU_TX;
18865
18866#ifdef WLAN_PERF
18867 // Increment the BD signature to refresh the fast path BD utilization
18868 pWDICtx->uBdSigSerialNum++;
18869#endif
18870 }
18871
18872 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018873 wdiEnterUapsdRspCb( &wdiEnterUapsdRspParams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070018874
Jeff Johnsone7245742012-09-05 17:12:55 -070018875 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018876}/*WDI_ProcessEnterUapsdRsp*/
18877
18878/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018879 @brief Process Exit UAPSD Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070018880 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018881
18882 @param pWDICtx: pointer to the WLAN DAL context
18883 pEventData: pointer to the event information structure
18884
Jeff Johnson295189b2012-06-20 16:38:30 -070018885 @see
18886 @return Result of the function call
18887*/
18888WDI_Status
18889WDI_ProcessExitUapsdRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018890(
Jeff Johnson295189b2012-06-20 16:38:30 -070018891 WDI_ControlBlockType* pWDICtx,
18892 WDI_EventInfoType* pEventData
18893)
18894{
Jeff Johnson295189b2012-06-20 16:38:30 -070018895 eHalStatus halStatus;
18896 WDI_ExitUapsdRspCb wdiExitUapsdRspCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018897 tHalExitUapsdRspParams halExitUapsdRsp;
18898 WDI_ExitUapsdRspParamsType wdiExitUapsdRspParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070018899 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18900
18901 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018902 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018903 -------------------------------------------------------------------------*/
18904 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18905 ( NULL == pEventData->pEventData))
18906 {
18907 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018908 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018909 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018910 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018911 }
18912
18913 wdiExitUapsdRspCb = (WDI_ExitUapsdRspCb)pWDICtx->pfncRspCB;
18914
18915 /*-------------------------------------------------------------------------
18916 Extract response and send it to UMAC
18917 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018918 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
18919 {
18920 wpalMemoryCopy( &halExitUapsdRsp,
18921 pEventData->pEventData,
18922 sizeof(halExitUapsdRsp));
18923
18924 wdiExitUapsdRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halExitUapsdRsp.status);
18925 wdiExitUapsdRspParams.bssIdx = halExitUapsdRsp.bssIdx;
18926 }
18927 else
18928 {
18929 halStatus = *((eHalStatus*)pEventData->pEventData);
18930 wdiExitUapsdRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
18931 }
Jeff Johnson295189b2012-06-20 16:38:30 -070018932 // Restore back the DPU routing flag in the TxBD, for DPU to push the TxBDs to BTQM
18933 // directly instead of the FW WQ.
18934 pWDICtx->ucDpuRF = BMUWQ_BTQM_TX_MGMT;
18935
18936#ifdef WLAN_PERF
18937 // Increment the BD signature to refresh the fast path BD utilization
18938 pWDICtx->uBdSigSerialNum++;
18939#endif
18940
18941 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018942 wdiExitUapsdRspCb( &wdiExitUapsdRspParams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070018943
Jeff Johnsone7245742012-09-05 17:12:55 -070018944 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018945}/*WDI_ProcessExitUapsdRsp*/
18946
18947/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018948 @brief Process set UAPSD params Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070018949 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018950
18951 @param pWDICtx: pointer to the WLAN DAL context
18952 pEventData: pointer to the event information structure
18953
Jeff Johnson295189b2012-06-20 16:38:30 -070018954 @see
18955 @return Result of the function call
18956*/
18957WDI_Status
18958WDI_ProcessSetUapsdAcParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018959(
Jeff Johnson295189b2012-06-20 16:38:30 -070018960 WDI_ControlBlockType* pWDICtx,
18961 WDI_EventInfoType* pEventData
18962)
18963{
18964 WDI_Status wdiStatus;
18965 eHalStatus halStatus;
18966 WDI_SetUapsdAcParamsCb wdiSetUapsdAcParamsCb;
18967 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18968
18969 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018970 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018971 -------------------------------------------------------------------------*/
18972 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18973 ( NULL == pEventData->pEventData))
18974 {
18975 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018976 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018977 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018978 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018979 }
18980
18981 wdiSetUapsdAcParamsCb = (WDI_SetUapsdAcParamsCb)pWDICtx->pfncRspCB;
18982
18983 /*-------------------------------------------------------------------------
18984 Extract response and send it to UMAC
18985 -------------------------------------------------------------------------*/
18986 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070018987 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018988
18989 /*Notify UMAC*/
18990 wdiSetUapsdAcParamsCb( wdiStatus, pWDICtx->pRspCBUserData);
18991
Jeff Johnsone7245742012-09-05 17:12:55 -070018992 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018993}/*WDI_ProcessSetUapsdAcParamsRsp*/
18994
18995/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018996 @brief Process update UAPSD params Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070018997 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018998
18999 @param pWDICtx: pointer to the WLAN DAL context
19000 pEventData: pointer to the event information structure
19001
Jeff Johnson295189b2012-06-20 16:38:30 -070019002 @see
19003 @return Result of the function call
19004*/
19005WDI_Status
19006WDI_ProcessUpdateUapsdParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019007(
Jeff Johnson295189b2012-06-20 16:38:30 -070019008 WDI_ControlBlockType* pWDICtx,
19009 WDI_EventInfoType* pEventData
19010)
19011{
19012 WDI_Status wdiStatus;
19013 eHalStatus halStatus;
19014 WDI_UpdateUapsdParamsCb wdiUpdateUapsdParamsCb;
19015 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19016
19017 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019018 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019019 -------------------------------------------------------------------------*/
19020 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19021 ( NULL == pEventData->pEventData))
19022 {
19023 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019024 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019025 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019026 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019027 }
19028
19029 wdiUpdateUapsdParamsCb = (WDI_UpdateUapsdParamsCb)pWDICtx->pfncRspCB;
19030
19031 /*-------------------------------------------------------------------------
19032 Extract response and send it to UMAC
19033 -------------------------------------------------------------------------*/
19034 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070019035 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019036
19037 /*Notify UMAC*/
19038 wdiUpdateUapsdParamsCb( wdiStatus, pWDICtx->pRspCBUserData);
19039
Jeff Johnsone7245742012-09-05 17:12:55 -070019040 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019041}/*WDI_ProcessUpdateUapsdParamsRsp*/
19042
19043/**
19044 @brief Process Configure RXP filter Rsp function (called when a
19045 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019046
19047 @param pWDICtx: pointer to the WLAN DAL context
19048 pEventData: pointer to the event information structure
19049
Jeff Johnson295189b2012-06-20 16:38:30 -070019050 @see
19051 @return Result of the function call
19052*/
19053WDI_Status
19054WDI_ProcessConfigureRxpFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019055(
Jeff Johnson295189b2012-06-20 16:38:30 -070019056 WDI_ControlBlockType* pWDICtx,
19057 WDI_EventInfoType* pEventData
19058)
19059{
19060 WDI_Status wdiStatus;
19061 eHalStatus halStatus;
19062 WDI_ConfigureRxpFilterCb wdiConfigureRxpFilterCb;
19063 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19064
19065 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019066 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019067 -------------------------------------------------------------------------*/
19068 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19069 ( NULL == pEventData->pEventData))
19070 {
19071 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019072 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019073 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019074 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019075 }
19076
19077 wdiConfigureRxpFilterCb = (WDI_ConfigureRxpFilterCb)pWDICtx->pfncRspCB;
19078
19079 /*-------------------------------------------------------------------------
19080 Extract response and send it to UMAC
19081 -------------------------------------------------------------------------*/
19082 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070019083 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019084
19085 /*Notify UMAC*/
19086 wdiConfigureRxpFilterCb( wdiStatus, pWDICtx->pRspCBUserData);
19087
Jeff Johnsone7245742012-09-05 17:12:55 -070019088 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019089}/*WDI_ProcessConfigureRxpFilterRsp*/
19090
19091/**
19092 @brief Process Set beacon filter Rsp function (called when a
19093 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019094
19095 @param pWDICtx: pointer to the WLAN DAL context
19096 pEventData: pointer to the event information structure
19097
Jeff Johnson295189b2012-06-20 16:38:30 -070019098 @see
19099 @return Result of the function call
19100*/
19101WDI_Status
19102WDI_ProcessSetBeaconFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019103(
Jeff Johnson295189b2012-06-20 16:38:30 -070019104 WDI_ControlBlockType* pWDICtx,
19105 WDI_EventInfoType* pEventData
19106)
19107{
19108 WDI_Status wdiStatus;
19109 eHalStatus halStatus;
19110 WDI_SetBeaconFilterCb wdiBeaconFilterCb;
19111 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19112
19113 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019114 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019115 -------------------------------------------------------------------------*/
19116 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19117 ( NULL == pEventData->pEventData))
19118 {
19119 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019120 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019121 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019122 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019123 }
19124
19125 wdiBeaconFilterCb = (WDI_SetBeaconFilterCb)pWDICtx->pfncRspCB;
19126
19127 /*-------------------------------------------------------------------------
19128 Extract response and send it to UMAC
19129 -------------------------------------------------------------------------*/
19130 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070019131 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019132
19133 /*Notify UMAC*/
19134 wdiBeaconFilterCb( wdiStatus, pWDICtx->pRspCBUserData);
19135
Jeff Johnsone7245742012-09-05 17:12:55 -070019136 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019137}/*WDI_ProcessSetBeaconFilterRsp*/
19138
19139/**
19140 @brief Process remove beacon filter Rsp function (called when a
19141 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019142
19143 @param pWDICtx: pointer to the WLAN DAL context
19144 pEventData: pointer to the event information structure
19145
Jeff Johnson295189b2012-06-20 16:38:30 -070019146 @see
19147 @return Result of the function call
19148*/
19149WDI_Status
19150WDI_ProcessRemBeaconFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019151(
Jeff Johnson295189b2012-06-20 16:38:30 -070019152 WDI_ControlBlockType* pWDICtx,
19153 WDI_EventInfoType* pEventData
19154)
19155{
19156 WDI_Status wdiStatus;
19157 eHalStatus halStatus;
19158 WDI_RemBeaconFilterCb wdiBeaconFilterCb;
19159 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19160
19161 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019162 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019163 -------------------------------------------------------------------------*/
19164 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19165 ( NULL == pEventData->pEventData))
19166 {
19167 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019168 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019169 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019170 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019171 }
19172
19173 wdiBeaconFilterCb = (WDI_RemBeaconFilterCb)pWDICtx->pfncRspCB;
19174
19175 /*-------------------------------------------------------------------------
19176 Extract response and send it to UMAC
19177 -------------------------------------------------------------------------*/
19178 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070019179 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019180
19181 /*Notify UMAC*/
19182 wdiBeaconFilterCb( wdiStatus, pWDICtx->pRspCBUserData);
19183
Jeff Johnsone7245742012-09-05 17:12:55 -070019184 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019185}/*WDI_ProcessRemBeaconFilterRsp*/
19186
19187/**
19188 @brief Process set RSSI thresholds Rsp function (called when a
19189 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019190
19191 @param pWDICtx: pointer to the WLAN DAL context
19192 pEventData: pointer to the event information structure
19193
Jeff Johnson295189b2012-06-20 16:38:30 -070019194 @see
19195 @return Result of the function call
19196*/
19197WDI_Status
19198WDI_ProcessSetRSSIThresoldsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019199(
Jeff Johnson295189b2012-06-20 16:38:30 -070019200 WDI_ControlBlockType* pWDICtx,
19201 WDI_EventInfoType* pEventData
19202)
19203{
19204 WDI_Status wdiStatus;
19205 eHalStatus halStatus;
19206 WDI_SetRSSIThresholdsCb wdiRSSIThresholdsCb;
19207 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19208
19209 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019210 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019211 -------------------------------------------------------------------------*/
19212 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19213 ( NULL == pEventData->pEventData))
19214 {
19215 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019216 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019217 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019218 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019219 }
19220
19221 wdiRSSIThresholdsCb = (WDI_SetRSSIThresholdsCb)pWDICtx->pfncRspCB;
19222
19223 /*-------------------------------------------------------------------------
19224 Extract response and send it to UMAC
19225 -------------------------------------------------------------------------*/
19226 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070019227 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019228
19229 /*Notify UMAC*/
19230 wdiRSSIThresholdsCb( wdiStatus, pWDICtx->pRspCBUserData);
19231
Jeff Johnsone7245742012-09-05 17:12:55 -070019232 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019233}/*WDI_ProcessSetRSSIThresoldsRsp*/
19234
19235/**
19236 @brief Process host offload Rsp function (called when a
19237 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019238
19239 @param pWDICtx: pointer to the WLAN DAL context
19240 pEventData: pointer to the event information structure
19241
Jeff Johnson295189b2012-06-20 16:38:30 -070019242 @see
19243 @return Result of the function call
19244*/
19245WDI_Status
19246WDI_ProcessHostOffloadRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019247(
Jeff Johnson295189b2012-06-20 16:38:30 -070019248 WDI_ControlBlockType* pWDICtx,
19249 WDI_EventInfoType* pEventData
19250)
19251{
19252 WDI_Status wdiStatus;
19253 eHalStatus halStatus;
19254 WDI_HostOffloadCb wdiHostOffloadCb;
19255 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19256
19257 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019258 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019259 -------------------------------------------------------------------------*/
19260 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19261 ( NULL == pEventData->pEventData))
19262 {
19263 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019264 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019265 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019266 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019267 }
19268
19269 wdiHostOffloadCb = (WDI_HostOffloadCb)pWDICtx->pfncRspCB;
19270
19271 /*-------------------------------------------------------------------------
19272 Extract response and send it to UMAC
19273 -------------------------------------------------------------------------*/
19274 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070019275 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019276
19277 /*Notify UMAC*/
19278 wdiHostOffloadCb( wdiStatus, pWDICtx->pRspCBUserData);
19279
Jeff Johnsone7245742012-09-05 17:12:55 -070019280 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019281}/*WDI_ProcessHostOffloadRsp*/
19282
19283/**
19284 @brief Process keep alive Rsp function (called when a
19285 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019286
19287 @param pWDICtx: pointer to the WLAN DAL context
19288 pEventData: pointer to the event information structure
19289
Jeff Johnson295189b2012-06-20 16:38:30 -070019290 @see
19291 @return Result of the function call
19292*/
19293WDI_Status
19294WDI_ProcessKeepAliveRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019295(
Jeff Johnson295189b2012-06-20 16:38:30 -070019296 WDI_ControlBlockType* pWDICtx,
19297 WDI_EventInfoType* pEventData
19298)
19299{
19300 WDI_Status wdiStatus;
19301 eHalStatus halStatus;
19302 WDI_KeepAliveCb wdiKeepAliveCb;
19303 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19304 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
19305 "Received WDI_ProcessKeepAliveRsp Callback from HAL");
19306
19307
19308 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019309 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019310 -------------------------------------------------------------------------*/
19311 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19312 ( NULL == pEventData->pEventData))
19313 {
19314 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019315 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019316 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019317 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019318 }
19319
Jeff Johnsone7245742012-09-05 17:12:55 -070019320 wdiKeepAliveCb = (WDI_KeepAliveCb)pWDICtx->pfncRspCB;
19321
Jeff Johnson295189b2012-06-20 16:38:30 -070019322 /*-------------------------------------------------------------------------
19323 Extract response and send it to UMAC
19324 -------------------------------------------------------------------------*/
19325 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070019326 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019327
19328 /*Notify UMAC*/
19329 wdiKeepAliveCb( wdiStatus, pWDICtx->pRspCBUserData);
19330
Jeff Johnsone7245742012-09-05 17:12:55 -070019331 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019332}/*WDI_ProcessKeepAliveRsp*/
19333
19334/**
19335 @brief Process wowl add ptrn Rsp function (called when a
19336 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019337
19338 @param pWDICtx: pointer to the WLAN DAL context
19339 pEventData: pointer to the event information structure
19340
Jeff Johnson295189b2012-06-20 16:38:30 -070019341 @see
19342 @return Result of the function call
19343*/
19344WDI_Status
19345WDI_ProcessWowlAddBcPtrnRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019346(
Jeff Johnson295189b2012-06-20 16:38:30 -070019347 WDI_ControlBlockType* pWDICtx,
19348 WDI_EventInfoType* pEventData
19349)
19350{
Jeff Johnson295189b2012-06-20 16:38:30 -070019351 eHalStatus halStatus;
19352 WDI_WowlAddBcPtrnCb wdiWowlAddBcPtrnCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019353 tHalAddWowlBcastPtrnRspParams halAddWowlBcastPtrRsp;
19354 WDI_WowlAddBcPtrnRspParamsType wdiWowlAddBcPtrRsp;
19355
Jeff Johnson295189b2012-06-20 16:38:30 -070019356 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19357
19358 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019359 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019360 -------------------------------------------------------------------------*/
19361 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19362 ( NULL == pEventData->pEventData))
19363 {
19364 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019365 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019366 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019367 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019368 }
19369
19370 wdiWowlAddBcPtrnCb = (WDI_WowlAddBcPtrnCb)pWDICtx->pfncRspCB;
19371
19372 /*-------------------------------------------------------------------------
19373 Extract response and send it to UMAC
19374 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019375 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
19376 {
19377 wpalMemoryCopy( &halAddWowlBcastPtrRsp,
19378 pEventData->pEventData,
19379 sizeof(halAddWowlBcastPtrRsp));
19380
19381 wdiWowlAddBcPtrRsp.wdiStatus =
19382 WDI_HAL_2_WDI_STATUS(halAddWowlBcastPtrRsp.status);
19383 }
19384 else
19385 {
19386 halStatus = *((eHalStatus*)pEventData->pEventData);
19387 wdiWowlAddBcPtrRsp.wdiStatus =
19388 WDI_HAL_2_WDI_STATUS(halStatus);
19389 }
Jeff Johnson295189b2012-06-20 16:38:30 -070019390
19391 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019392 wdiWowlAddBcPtrnCb( &wdiWowlAddBcPtrRsp, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070019393
Jeff Johnsone7245742012-09-05 17:12:55 -070019394 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019395}/*WDI_ProcessWowlAddBcPtrnRsp*/
19396
19397/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019398 @brief Process wowl delete ptrn Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070019399 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019400
19401 @param pWDICtx: pointer to the WLAN DAL context
19402 pEventData: pointer to the event information structure
19403
Jeff Johnson295189b2012-06-20 16:38:30 -070019404 @see
19405 @return Result of the function call
19406*/
19407WDI_Status
19408WDI_ProcessWowlDelBcPtrnRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019409(
Jeff Johnson295189b2012-06-20 16:38:30 -070019410 WDI_ControlBlockType* pWDICtx,
19411 WDI_EventInfoType* pEventData
19412)
19413{
Jeff Johnson295189b2012-06-20 16:38:30 -070019414 eHalStatus halStatus;
19415 WDI_WowlDelBcPtrnCb wdiWowlDelBcPtrnCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019416 tHalDelWowlBcastPtrnRspParams halDelWowlBcastPtrRsp;
19417 WDI_WowlDelBcPtrnRspParamsType wdiWowlDelBcstPtrRsp;
Jeff Johnson295189b2012-06-20 16:38:30 -070019418 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19419
19420 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019421 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019422 -------------------------------------------------------------------------*/
19423 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19424 ( NULL == pEventData->pEventData))
19425 {
19426 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019427 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019428 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019429 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019430 }
19431
19432 wdiWowlDelBcPtrnCb = (WDI_WowlDelBcPtrnCb)pWDICtx->pfncRspCB;
19433
19434 /*-------------------------------------------------------------------------
19435 Extract response and send it to UMAC
19436 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019437 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
19438 {
19439 wpalMemoryCopy( &halDelWowlBcastPtrRsp,
19440 pEventData->pEventData,
19441 sizeof(halDelWowlBcastPtrRsp));
Jeff Johnson295189b2012-06-20 16:38:30 -070019442
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019443 wdiWowlDelBcstPtrRsp.wdiStatus =
19444 WDI_HAL_2_WDI_STATUS(halDelWowlBcastPtrRsp.status);
19445 }
19446 else
19447 {
19448 halStatus = *((eHalStatus*)pEventData->pEventData);
19449 wdiWowlDelBcstPtrRsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
19450 }
Jeff Johnson295189b2012-06-20 16:38:30 -070019451 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019452 wdiWowlDelBcPtrnCb( &wdiWowlDelBcstPtrRsp, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070019453
Jeff Johnsone7245742012-09-05 17:12:55 -070019454 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019455}/*WDI_ProcessWowlDelBcPtrnRsp*/
19456
19457/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019458 @brief Process wowl enter Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070019459 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019460
19461 @param pWDICtx: pointer to the WLAN DAL context
19462 pEventData: pointer to the event information structure
19463
Jeff Johnson295189b2012-06-20 16:38:30 -070019464 @see
19465 @return Result of the function call
19466*/
19467WDI_Status
19468WDI_ProcessWowlEnterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019469(
Jeff Johnson295189b2012-06-20 16:38:30 -070019470 WDI_ControlBlockType* pWDICtx,
19471 WDI_EventInfoType* pEventData
19472)
19473{
Jeff Johnson295189b2012-06-20 16:38:30 -070019474 eHalStatus halStatus;
19475 WDI_WowlEnterReqCb wdiWowlEnterCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019476 WDI_WowlEnterRspParamsType wdiwowlEnterRsp;
19477 tHalEnterWowlRspParams halEnterWowlRspParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070019478 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19479
19480 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019481 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019482 -------------------------------------------------------------------------*/
19483 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19484 ( NULL == pEventData->pEventData))
19485 {
19486 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019487 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019488 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019489 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019490 }
19491
19492 wdiWowlEnterCb = (WDI_WowlEnterReqCb)pWDICtx->pfncRspCB;
19493
19494 /*-------------------------------------------------------------------------
19495 Extract response and send it to UMAC
19496 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019497 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
19498 {
19499 wpalMemoryCopy( &halEnterWowlRspParams,
19500 (wpt_uint8*)pEventData->pEventData,
19501 sizeof(halEnterWowlRspParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070019502
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019503 wdiwowlEnterRsp.bssIdx = halEnterWowlRspParams.bssIdx;
19504 wdiwowlEnterRsp.status =
19505 WDI_HAL_2_WDI_STATUS(halEnterWowlRspParams.status);
19506 }
19507 else
19508 {
19509 halStatus = *((eHalStatus*)pEventData->pEventData);
19510 wdiwowlEnterRsp.status = WDI_HAL_2_WDI_STATUS(halStatus);
19511 }
Jeff Johnson295189b2012-06-20 16:38:30 -070019512 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019513 wdiWowlEnterCb( &wdiwowlEnterRsp, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070019514
Jeff Johnsone7245742012-09-05 17:12:55 -070019515 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019516}/*WDI_ProcessWowlEnterRsp*/
19517
19518/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019519 @brief Process wowl exit Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070019520 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019521
19522 @param pWDICtx: pointer to the WLAN DAL context
19523 pEventData: pointer to the event information structure
19524
Jeff Johnson295189b2012-06-20 16:38:30 -070019525 @see
19526 @return Result of the function call
19527*/
19528WDI_Status
19529WDI_ProcessWowlExitRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019530(
Jeff Johnson295189b2012-06-20 16:38:30 -070019531 WDI_ControlBlockType* pWDICtx,
19532 WDI_EventInfoType* pEventData
19533)
19534{
Jeff Johnson295189b2012-06-20 16:38:30 -070019535 eHalStatus halStatus;
19536 WDI_WowlExitReqCb wdiWowlExitCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019537 tHalExitWowlRspParams halExitWowlRspParams;
19538 WDI_WowlExitRspParamsType wdiWowlExitRsp;
19539
Jeff Johnson295189b2012-06-20 16:38:30 -070019540 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19541
19542 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019543 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019544 -------------------------------------------------------------------------*/
19545 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19546 ( NULL == pEventData->pEventData))
19547 {
19548 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019549 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019550 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019551 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019552 }
19553
19554 wdiWowlExitCb = (WDI_WowlExitReqCb)pWDICtx->pfncRspCB;
19555
19556 /*-------------------------------------------------------------------------
19557 Extract response and send it to UMAC
19558 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019559 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
19560 {
19561 wpalMemoryCopy( &halExitWowlRspParams,
19562 pEventData->pEventData,
19563 sizeof(halExitWowlRspParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070019564
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019565 wdiWowlExitRsp.status = WDI_HAL_2_WDI_STATUS(halExitWowlRspParams.status);
19566 wdiWowlExitRsp.bssIdx = halExitWowlRspParams.bssIdx;
19567
19568 }
19569 else
19570 {
19571 halStatus = *((eHalStatus*)pEventData->pEventData);
19572 wdiWowlExitRsp.status = WDI_HAL_2_WDI_STATUS(halStatus);
19573 }
Jeff Johnson295189b2012-06-20 16:38:30 -070019574 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019575 wdiWowlExitCb( &wdiWowlExitRsp, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070019576
Jeff Johnsone7245742012-09-05 17:12:55 -070019577 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019578}/*WDI_ProcessWowlExitRsp*/
19579
19580/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019581 @brief Process Configure Apps CPU wakeup State Rsp function
Jeff Johnson295189b2012-06-20 16:38:30 -070019582 (called when a response is being received over the bus
19583 from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019584
19585 @param pWDICtx: pointer to the WLAN DAL context
19586 pEventData: pointer to the event information structure
19587
Jeff Johnson295189b2012-06-20 16:38:30 -070019588 @see
19589 @return Result of the function call
19590*/
19591WDI_Status
19592WDI_ProcessConfigureAppsCpuWakeupStateRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019593(
Jeff Johnson295189b2012-06-20 16:38:30 -070019594 WDI_ControlBlockType* pWDICtx,
19595 WDI_EventInfoType* pEventData
19596)
19597{
19598 WDI_Status wdiStatus;
19599 eHalStatus halStatus;
19600 WDI_ConfigureAppsCpuWakeupStateCb wdiConfigureAppsCpuWakeupStateCb;
19601 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19602
19603 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019604 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019605 -------------------------------------------------------------------------*/
19606 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19607 ( NULL == pEventData->pEventData))
19608 {
19609 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019610 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019611 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019612 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019613 }
19614
19615 wdiConfigureAppsCpuWakeupStateCb = (WDI_ConfigureAppsCpuWakeupStateCb)pWDICtx->pfncRspCB;
19616
19617 /*-------------------------------------------------------------------------
19618 Extract response and send it to UMAC
19619 -------------------------------------------------------------------------*/
19620 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070019621 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019622
19623 /*Notify UMAC*/
19624 wdiConfigureAppsCpuWakeupStateCb( wdiStatus, pWDICtx->pRspCBUserData);
19625
Jeff Johnsone7245742012-09-05 17:12:55 -070019626 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019627}/*WDI_ProcessConfigureAppsCpuWakeupStateRsp*/
19628
19629
19630/**
19631 @brief Process Nv download(called when a response
19632 is being received over the bus from HAL,will check if the responce is )
Jeff Johnsone7245742012-09-05 17:12:55 -070019633
19634 @param pWDICtx: pointer to the WLAN DAL context
19635 pEventData: pointer to the event information structure
19636
Jeff Johnson295189b2012-06-20 16:38:30 -070019637 @see
19638 @return Result of the function call
19639*/
19640WDI_Status
19641WDI_ProcessNvDownloadRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019642(
Jeff Johnson295189b2012-06-20 16:38:30 -070019643 WDI_ControlBlockType* pWDICtx,
19644 WDI_EventInfoType* pEventData
19645)
19646{
19647
19648 WDI_NvDownloadRspCb wdiNvDownloadRspCb;
19649 tHalNvImgDownloadRspParams halNvDownloadRsp;
19650 WDI_NvDownloadRspInfoType wdiNvDownloadRsp;
19651
19652 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019653 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019654 -------------------------------------------------------------------------*/
19655 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19656 ( NULL == pEventData->pEventData))
19657 {
19658 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019659 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019660 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019661 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019662 }
19663
19664 /*-------------------------------------------------------------------------
19665 Extract response and send it to UMAC
19666 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019667 wpalMemoryCopy( &halNvDownloadRsp,
19668 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070019669 sizeof(halNvDownloadRsp));
19670
19671 wdiNvDownloadRsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halNvDownloadRsp.status);
19672
19673 if((wdiNvDownloadRsp.wdiStatus == WDI_STATUS_SUCCESS) &&
Jeff Johnsone7245742012-09-05 17:12:55 -070019674 (pWDICtx->wdiNvBlobInfo.usCurrentFragment !=
19675 pWDICtx->wdiNvBlobInfo.usTotalFragment ))
Jeff Johnson295189b2012-06-20 16:38:30 -070019676 {
19677 WDI_NvDownloadReq(&pWDICtx->wdiCachedNvDownloadReq,
Jeff Johnsone7245742012-09-05 17:12:55 -070019678 (WDI_NvDownloadRspCb)pWDICtx->pfncRspCB, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070019679 }
19680 else
19681 {
19682 /*Reset the Nv related global information in WDI context information */
19683 pWDICtx->wdiNvBlobInfo.usTotalFragment = 0;
19684 pWDICtx->wdiNvBlobInfo.usFragmentSize = 0;
19685 pWDICtx->wdiNvBlobInfo.usCurrentFragment = 0;
19686 /*call WDA callback function for last fragment */
19687 wdiNvDownloadRspCb = (WDI_NvDownloadRspCb)pWDICtx->pfncRspCB;
19688 wdiNvDownloadRspCb( &wdiNvDownloadRsp, pWDICtx->pRspCBUserData);
19689 }
19690
Jeff Johnsone7245742012-09-05 17:12:55 -070019691 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019692}
19693#ifdef WLAN_FEATURE_VOWIFI_11R
19694/**
19695 @brief Process Add TSpec Rsp function (called when a response
19696 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019697
19698 @param pWDICtx: pointer to the WLAN DAL context
19699 pEventData: pointer to the event information structure
19700
Jeff Johnson295189b2012-06-20 16:38:30 -070019701 @see
19702 @return Result of the function call
19703*/
19704WDI_Status
19705WDI_ProcessAggrAddTSpecRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019706(
Jeff Johnson295189b2012-06-20 16:38:30 -070019707 WDI_ControlBlockType* pWDICtx,
19708 WDI_EventInfoType* pEventData
19709)
19710{
19711 WDI_Status wdiStatus;
19712 tAggrAddTsRspParams aggrAddTsRsp;
19713 WDI_AggrAddTsRspCb wdiAggrAddTsRspCb;
19714 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19715
19716 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019717 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019718 -------------------------------------------------------------------------*/
19719 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19720 ( NULL == pEventData->pEventData))
19721 {
19722 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019723 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019724 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019725 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019726 }
19727
19728 wdiAggrAddTsRspCb = (WDI_AddTsRspCb)pWDICtx->pfncRspCB;
19729
19730 /*-------------------------------------------------------------------------
19731 Extract response and send it to UMAC
19732 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019733 wpalMemoryCopy( &aggrAddTsRsp,
19734 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070019735 sizeof(aggrAddTsRsp));
19736
19737 /* What is the difference between status0 and status1? */
Jeff Johnsone7245742012-09-05 17:12:55 -070019738 wdiStatus = WDI_HAL_2_WDI_STATUS(aggrAddTsRsp.status0);
Jeff Johnson295189b2012-06-20 16:38:30 -070019739
19740 /*Notify UMAC*/
19741 wdiAggrAddTsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
19742
Jeff Johnsone7245742012-09-05 17:12:55 -070019743 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019744}/*WDI_ProcessAddTSpecRsp*/
19745#endif /* WLAN_FEATURE_VOWIFI_11R */
19746
19747/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019748 @brief WDI_ProcessHostResumeRsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070019749 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019750
19751 @param pWDICtx: pointer to the WLAN DAL context
19752 pEventData: pointer to the event information structure
19753
Jeff Johnson295189b2012-06-20 16:38:30 -070019754 @see
19755 @return Result of the function call
19756*/
19757WDI_Status
19758WDI_ProcessHostResumeRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019759(
Jeff Johnson295189b2012-06-20 16:38:30 -070019760 WDI_ControlBlockType* pWDICtx,
19761 WDI_EventInfoType* pEventData
19762)
19763{
19764 WDI_SuspendResumeRspParamsType wdiResumeRspParams;
19765 WDI_HostResumeEventRspCb wdiHostResumeRspCb;
19766 tHalHostResumeRspParams hostResumeRspMsg;
19767 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19768
19769 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019770 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019771 -------------------------------------------------------------------------*/
19772 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19773 ( NULL == pEventData->pEventData))
19774 {
19775 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019776 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019777 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019778 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019779 }
19780
19781 wdiHostResumeRspCb = (WDI_HostResumeEventRspCb)pWDICtx->pfncRspCB;
19782
19783 /*-------------------------------------------------------------------------
19784 Extract response and send it to UMAC
19785 -------------------------------------------------------------------------*/
19786
Jeff Johnsone7245742012-09-05 17:12:55 -070019787 wpalMemoryCopy( &hostResumeRspMsg,
Jeff Johnson295189b2012-06-20 16:38:30 -070019788 (wpt_uint8*)pEventData->pEventData,
19789 sizeof(hostResumeRspMsg));
19790
Jeff Johnsone7245742012-09-05 17:12:55 -070019791 wdiResumeRspParams.wdiStatus =
19792 WDI_HAL_2_WDI_STATUS(hostResumeRspMsg.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070019793
19794 /*Notify UMAC*/
19795 wdiHostResumeRspCb(&wdiResumeRspParams, (void*) pWDICtx->pRspCBUserData);
19796
19797 return WDI_STATUS_SUCCESS;
19798}
19799
19800/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019801 @brief Process Set Tx PER Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070019802 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019803
19804 @param pWDICtx: pointer to the WLAN DAL context
19805 pEventData: pointer to the event information structure
19806
Jeff Johnson295189b2012-06-20 16:38:30 -070019807 @see
19808 @return Result of the function call
19809*/
19810WDI_Status
19811WDI_ProcessSetTxPerTrackingRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019812(
Jeff Johnson295189b2012-06-20 16:38:30 -070019813 WDI_ControlBlockType* pWDICtx,
19814 WDI_EventInfoType* pEventData
19815)
19816{
19817 WDI_Status wdiStatus;
19818 eHalStatus halStatus;
19819 WDI_SetTxPerTrackingRspCb pwdiSetTxPerTrackingRspCb;
19820 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19821
19822 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019823 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019824 -------------------------------------------------------------------------*/
19825 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19826 ( NULL == pEventData->pEventData))
19827 {
19828 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019829 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019830 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019831 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019832 }
Jeff Johnsone7245742012-09-05 17:12:55 -070019833
19834 pwdiSetTxPerTrackingRspCb = (WDI_SetTxPerTrackingRspCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070019835
19836 /*-------------------------------------------------------------------------
19837 Extract response and send it to UMAC
19838 -------------------------------------------------------------------------*/
19839 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070019840 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019841
19842 /*Notify UMAC*/
19843 pwdiSetTxPerTrackingRspCb( wdiStatus, pWDICtx->pRspCBUserData);
19844
Jeff Johnsone7245742012-09-05 17:12:55 -070019845 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019846}/*WDI_ProcessSetTxPerTrackingRsp*/
19847
19848/*==========================================================================
19849 Indications from HAL
19850 ==========================================================================*/
19851/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019852 @brief Process Low RSSI Indication function (called when an
Jeff Johnson295189b2012-06-20 16:38:30 -070019853 indication of this kind is being received over the bus
19854 from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019855
19856 @param pWDICtx: pointer to the WLAN DAL context
19857 pEventData: pointer to the event information structure
19858
Jeff Johnson295189b2012-06-20 16:38:30 -070019859 @see
19860 @return Result of the function call
19861*/
19862WDI_Status
19863WDI_ProcessLowRSSIInd
Jeff Johnsone7245742012-09-05 17:12:55 -070019864(
Jeff Johnson295189b2012-06-20 16:38:30 -070019865 WDI_ControlBlockType* pWDICtx,
19866 WDI_EventInfoType* pEventData
19867)
19868{
19869 WDI_LowLevelIndType wdiInd;
19870 tHalRSSINotificationIndMsg halRSSINotificationIndMsg;
19871 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19872
19873 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019874 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019875 -------------------------------------------------------------------------*/
19876 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19877 ( NULL == pEventData->pEventData))
19878 {
19879 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019880 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019881 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019882 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019883 }
19884
19885 /*-------------------------------------------------------------------------
19886 Extract indication and send it to UMAC
19887 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019888 wpalMemoryCopy( (void *)&halRSSINotificationIndMsg.rssiNotificationParams,
19889 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070019890 sizeof(tHalRSSINotification));
19891
19892 /*Fill in the indication parameters*/
19893 wdiInd.wdiIndicationType = WDI_RSSI_NOTIFICATION_IND;
19894 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres1PosCross =
19895 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres1PosCross;
19896 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres1NegCross =
19897 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres1NegCross;
19898 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres2PosCross =
19899 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres2PosCross;
19900 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres2NegCross =
19901 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres2NegCross;
19902 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres3PosCross =
19903 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres3PosCross;
19904 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres3NegCross =
19905 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres3NegCross;
Srinivasdaaec712012-12-12 15:59:44 -080019906 wdiInd.wdiIndicationData.wdiLowRSSIInfo.avgRssi =
19907 halRSSINotificationIndMsg.rssiNotificationParams.avgRssi;
Jeff Johnson295189b2012-06-20 16:38:30 -070019908
ltimariub77f24b2013-01-24 18:54:33 -080019909 if ( pWDICtx->wdiLowLevelIndCB )
19910 {
19911 /*Notify UMAC of indication*/
19912 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
19913 }
Jeff Johnsone7245742012-09-05 17:12:55 -070019914
19915 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019916}/*WDI_ProcessLowRSSIInd*/
19917
19918
19919/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019920 @brief Process Missed Beacon Indication function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070019921 an indication of this kind is being received over the
19922 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019923
19924 @param pWDICtx: pointer to the WLAN DAL context
19925 pEventData: pointer to the event information structure
19926
Jeff Johnson295189b2012-06-20 16:38:30 -070019927 @see
19928 @return Result of the function call
19929*/
19930WDI_Status
19931WDI_ProcessMissedBeaconInd
Jeff Johnsone7245742012-09-05 17:12:55 -070019932(
Jeff Johnson295189b2012-06-20 16:38:30 -070019933 WDI_ControlBlockType* pWDICtx,
19934 WDI_EventInfoType* pEventData
19935)
19936{
19937 WDI_Status wdiStatus;
19938 eHalStatus halStatus;
19939 WDI_LowLevelIndType wdiInd;
Leela Venkata Kiran Kumar Reddy Chirala3ca17902013-02-27 19:50:05 -080019940 tpHalMissedBeaconIndParams halMissedBeaconIndParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070019941 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19942
19943 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019944 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019945 -------------------------------------------------------------------------*/
19946 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19947 ( NULL == pEventData->pEventData))
19948 {
19949 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019950 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019951 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019952 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019953 }
Leela Venkata Kiran Kumar Reddy Chirala3ca17902013-02-27 19:50:05 -080019954 halMissedBeaconIndParams = (tpHalMissedBeaconIndParams)pEventData->pEventData;
Jeff Johnson295189b2012-06-20 16:38:30 -070019955 /*-------------------------------------------------------------------------
19956 Extract indication and send it to UMAC
19957 -------------------------------------------------------------------------*/
19958 /*! TO DO: Parameters need to be unpacked according to HAL struct*/
19959 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070019960 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019961
19962 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019963 wdiInd.wdiIndicationType = WDI_MISSED_BEACON_IND;
Leela Venkata Kiran Kumar Reddy Chirala3ca17902013-02-27 19:50:05 -080019964 wdiInd.wdiIndicationData.wdiMissedBeaconInd.bssIdx =
19965 halMissedBeaconIndParams->bssIdx;
ltimariub77f24b2013-01-24 18:54:33 -080019966 if ( pWDICtx->wdiLowLevelIndCB )
19967 {
19968 /*Notify UMAC*/
19969 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
19970 }
Jeff Johnsone7245742012-09-05 17:12:55 -070019971
19972 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019973}/*WDI_ProcessMissedBeaconInd*/
19974
19975
19976/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019977 @brief Process Unk Addr Frame Indication function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070019978 an indication of this kind is being received over the
19979 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019980
19981 @param pWDICtx: pointer to the WLAN DAL context
19982 pEventData: pointer to the event information structure
19983
Jeff Johnson295189b2012-06-20 16:38:30 -070019984 @see
19985 @return Result of the function call
19986*/
19987WDI_Status
19988WDI_ProcessUnkAddrFrameInd
Jeff Johnsone7245742012-09-05 17:12:55 -070019989(
Jeff Johnson295189b2012-06-20 16:38:30 -070019990 WDI_ControlBlockType* pWDICtx,
19991 WDI_EventInfoType* pEventData
19992)
19993{
19994 WDI_Status wdiStatus;
19995 eHalStatus halStatus;
19996 WDI_LowLevelIndType wdiInd;
19997 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19998
19999 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020000 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020001 -------------------------------------------------------------------------*/
20002 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20003 ( NULL == pEventData->pEventData))
20004 {
20005 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020006 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020007 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020008 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020009 }
20010
20011 /*-------------------------------------------------------------------------
20012 Extract indication and send it to UMAC
20013 -------------------------------------------------------------------------*/
20014 /*! TO DO: Parameters need to be unpacked according to HAL struct*/
20015 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070020016 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070020017
20018 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020019 wdiInd.wdiIndicationType = WDI_UNKNOWN_ADDR2_FRAME_RX_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070020020 /* ! TO DO - fill in from HAL struct:
20021 wdiInd.wdiIndicationData.wdiUnkAddr2FrmInfo*/
20022
ltimariub77f24b2013-01-24 18:54:33 -080020023 if ( pWDICtx->wdiLowLevelIndCB )
20024 {
20025 /*Notify UMAC*/
20026 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
20027 }
Jeff Johnsone7245742012-09-05 17:12:55 -070020028
20029 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020030}/*WDI_ProcessUnkAddrFrameInd*/
20031
20032
20033/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020034 @brief Process MIC Failure Indication function (called when an
Jeff Johnson295189b2012-06-20 16:38:30 -070020035 indication of this kind is being received over the bus
20036 from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020037
20038 @param pWDICtx: pointer to the WLAN DAL context
20039 pEventData: pointer to the event information structure
20040
Jeff Johnson295189b2012-06-20 16:38:30 -070020041 @see
20042 @return Result of the function call
20043*/
20044WDI_Status
20045WDI_ProcessMicFailureInd
Jeff Johnsone7245742012-09-05 17:12:55 -070020046(
Jeff Johnson295189b2012-06-20 16:38:30 -070020047 WDI_ControlBlockType* pWDICtx,
20048 WDI_EventInfoType* pEventData
20049)
20050{
20051 WDI_LowLevelIndType wdiInd;
20052 tpSirMicFailureInd pHalMicFailureInd;
20053
20054 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20055
20056 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020057 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020058 -------------------------------------------------------------------------*/
20059 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20060 ( NULL == pEventData->pEventData))
20061 {
20062 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020063 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020064 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020065 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020066 }
Jeff Johnsone7245742012-09-05 17:12:55 -070020067
Jeff Johnson295189b2012-06-20 16:38:30 -070020068 pHalMicFailureInd = (tpSirMicFailureInd)pEventData->pEventData;
20069 /*-------------------------------------------------------------------------
20070 Extract indication and send it to UMAC
20071 -------------------------------------------------------------------------*/
20072
20073 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020074 wdiInd.wdiIndicationType = WDI_MIC_FAILURE_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070020075 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.bssId,
20076 pHalMicFailureInd->bssId, WDI_MAC_ADDR_LEN);
20077 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.macSrcAddr,
20078 pHalMicFailureInd->info.srcMacAddr, WDI_MAC_ADDR_LEN);
20079 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.macTaAddr,
20080 pHalMicFailureInd->info.taMacAddr, WDI_MAC_ADDR_LEN);
20081 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.macDstAddr,
20082 pHalMicFailureInd->info.dstMacAddr, WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070020083 wdiInd.wdiIndicationData.wdiMICFailureInfo.ucMulticast =
Jeff Johnson295189b2012-06-20 16:38:30 -070020084 pHalMicFailureInd->info.multicast;
Jeff Johnsone7245742012-09-05 17:12:55 -070020085 wdiInd.wdiIndicationData.wdiMICFailureInfo.ucIV1 =
Jeff Johnson295189b2012-06-20 16:38:30 -070020086 pHalMicFailureInd->info.IV1;
Jeff Johnsone7245742012-09-05 17:12:55 -070020087 wdiInd.wdiIndicationData.wdiMICFailureInfo.keyId=
Jeff Johnson295189b2012-06-20 16:38:30 -070020088 pHalMicFailureInd->info.keyId;
20089 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.TSC,
20090 pHalMicFailureInd->info.TSC,WDI_CIPHER_SEQ_CTR_SIZE);
20091 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.macRxAddr,
20092 pHalMicFailureInd->info.rxMacAddr, WDI_MAC_ADDR_LEN);
ltimariub77f24b2013-01-24 18:54:33 -080020093
20094 if ( pWDICtx->wdiLowLevelIndCB )
20095 {
20096 /*Notify UMAC*/
20097 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
20098 }
Jeff Johnsone7245742012-09-05 17:12:55 -070020099
20100 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020101}/*WDI_ProcessMicFailureInd*/
20102
20103
20104/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020105 @brief Process Fatal Failure Indication function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070020106 an indication of this kind is being received over the
20107 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020108
20109 @param pWDICtx: pointer to the WLAN DAL context
20110 pEventData: pointer to the event information structure
20111
Jeff Johnson295189b2012-06-20 16:38:30 -070020112 @see
20113 @return Result of the function call
20114*/
20115WDI_Status
20116WDI_ProcessFatalErrorInd
Jeff Johnsone7245742012-09-05 17:12:55 -070020117(
Jeff Johnson295189b2012-06-20 16:38:30 -070020118 WDI_ControlBlockType* pWDICtx,
20119 WDI_EventInfoType* pEventData
20120)
20121{
20122 WDI_Status wdiStatus;
20123 eHalStatus halStatus;
20124 WDI_LowLevelIndType wdiInd;
20125 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20126
20127 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020128 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020129 -------------------------------------------------------------------------*/
20130 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20131 ( NULL == pEventData->pEventData))
20132 {
20133 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020134 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020135 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020136 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020137 }
20138
20139 /*-------------------------------------------------------------------------
20140 Extract indication and send it to UMAC
20141 -------------------------------------------------------------------------*/
20142
20143 /*! TO DO: Parameters need to be unpacked according to HAL struct*/
20144 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070020145 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070020146
20147 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
20148 "Fatal failure received from device %d ", halStatus );
Jeff Johnsone7245742012-09-05 17:12:55 -070020149
Jeff Johnson295189b2012-06-20 16:38:30 -070020150 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020151 wdiInd.wdiIndicationType = WDI_FATAL_ERROR_IND;
20152 wdiInd.wdiIndicationData.usErrorCode = WDI_ERR_DEV_INTERNAL_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020153
ltimariub77f24b2013-01-24 18:54:33 -080020154 if ( pWDICtx->wdiLowLevelIndCB )
20155 {
20156 /*Notify UMAC*/
20157 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
20158 }
Jeff Johnsone7245742012-09-05 17:12:55 -070020159
20160 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020161}/*WDI_ProcessFatalErrorInd*/
20162
20163/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020164 @brief Process Delete STA Indication function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070020165 an indication of this kind is being received over the
20166 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020167
20168 @param pWDICtx: pointer to the WLAN DAL context
20169 pEventData: pointer to the event information structure
20170
Jeff Johnson295189b2012-06-20 16:38:30 -070020171 @see
20172 @return Result of the function call
20173*/
20174WDI_Status
20175WDI_ProcessDelSTAInd
Jeff Johnsone7245742012-09-05 17:12:55 -070020176(
Jeff Johnson295189b2012-06-20 16:38:30 -070020177 WDI_ControlBlockType* pWDICtx,
20178 WDI_EventInfoType* pEventData
20179)
20180{
20181 tDeleteStaContextParams halDelSTACtx;
20182 WDI_LowLevelIndType wdiInd;
20183 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20184
20185 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020186 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020187 -------------------------------------------------------------------------*/
20188 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20189 ( NULL == pEventData->pEventData))
20190 {
20191 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020192 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020193 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020194 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020195 }
20196
20197 /*-------------------------------------------------------------------------
20198 Extract indication and send it to UMAC
20199 -------------------------------------------------------------------------*/
20200
20201 /* Parameters need to be unpacked according to HAL struct*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020202 wpalMemoryCopy( &halDelSTACtx,
20203 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070020204 sizeof(halDelSTACtx));
20205
20206 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020207 wdiInd.wdiIndicationType = WDI_DEL_STA_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070020208
20209 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiDeleteSTAIndType.macADDR2,
20210 halDelSTACtx.addr2, WDI_MAC_ADDR_LEN);
20211 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiDeleteSTAIndType.macBSSID,
20212 halDelSTACtx.bssId, WDI_MAC_ADDR_LEN);
20213
Jeff Johnsone7245742012-09-05 17:12:55 -070020214 wdiInd.wdiIndicationData.wdiDeleteSTAIndType.usAssocId =
Jeff Johnson295189b2012-06-20 16:38:30 -070020215 halDelSTACtx.assocId;
Jeff Johnsone7245742012-09-05 17:12:55 -070020216 wdiInd.wdiIndicationData.wdiDeleteSTAIndType.ucSTAIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070020217 halDelSTACtx.staId;
Jeff Johnsone7245742012-09-05 17:12:55 -070020218 wdiInd.wdiIndicationData.wdiDeleteSTAIndType.wptReasonCode =
20219 halDelSTACtx.reasonCode;
Jeff Johnson295189b2012-06-20 16:38:30 -070020220
ltimariub77f24b2013-01-24 18:54:33 -080020221 if ( pWDICtx->wdiLowLevelIndCB )
20222 {
20223 /*Notify UMAC*/
20224 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
20225 }
Jeff Johnsone7245742012-09-05 17:12:55 -070020226
20227 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020228}/*WDI_ProcessDelSTAInd*/
20229
20230/**
20231*@brief Process Coex Indication function (called when
20232 an indication of this kind is being received over the
20233 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020234
20235 @param pWDICtx: pointer to the WLAN DAL context
20236 pEventData: pointer to the event information structure
20237
Jeff Johnson295189b2012-06-20 16:38:30 -070020238 @see
20239 @return Result of the function call
20240*/
20241WDI_Status
20242WDI_ProcessCoexInd
Jeff Johnsone7245742012-09-05 17:12:55 -070020243(
Jeff Johnson295189b2012-06-20 16:38:30 -070020244 WDI_ControlBlockType* pWDICtx,
20245 WDI_EventInfoType* pEventData
20246)
20247{
20248 WDI_LowLevelIndType wdiInd;
20249 tCoexIndMsg halCoexIndMsg;
20250 wpt_uint32 index;
20251 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20252
20253 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020254 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020255 -------------------------------------------------------------------------*/
20256 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20257 ( NULL == pEventData->pEventData ))
20258 {
20259 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020260 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020261 WDI_ASSERT( 0 );
Jeff Johnsone7245742012-09-05 17:12:55 -070020262 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020263 }
20264
20265 /*-------------------------------------------------------------------------
20266 Extract indication and send it to UMAC
20267 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020268 wpalMemoryCopy( &halCoexIndMsg.coexIndParams,
20269 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070020270 sizeof(halCoexIndMsg.coexIndParams) );
20271
20272 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020273 wdiInd.wdiIndicationType = WDI_COEX_IND;
20274 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndType = halCoexIndMsg.coexIndParams.coexIndType;
Jeff Johnson295189b2012-06-20 16:38:30 -070020275 for (index = 0; index < WDI_COEX_IND_DATA_SIZE; index++)
20276 {
Jeff Johnsone7245742012-09-05 17:12:55 -070020277 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[index] = halCoexIndMsg.coexIndParams.coexIndData[index];
Jeff Johnson295189b2012-06-20 16:38:30 -070020278 }
20279
20280 // DEBUG
20281 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
20282 "[COEX WDI] Coex Ind Type (%x) data (%x %x %x %x)",
Jeff Johnsone7245742012-09-05 17:12:55 -070020283 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndType,
20284 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[0],
20285 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[1],
20286 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[2],
20287 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[3] );
Jeff Johnson295189b2012-06-20 16:38:30 -070020288
ltimariub77f24b2013-01-24 18:54:33 -080020289 if ( pWDICtx->wdiLowLevelIndCB )
20290 {
20291 /*Notify UMAC*/
20292 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
20293 }
Jeff Johnsone7245742012-09-05 17:12:55 -070020294
20295 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020296}/*WDI_ProcessCoexInd*/
20297
20298/**
20299*@brief Process Tx Complete Indication function (called when
20300 an indication of this kind is being received over the
20301 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020302
20303 @param pWDICtx: pointer to the WLAN DAL context
20304 pEventData: pointer to the event information structure
20305
Jeff Johnson295189b2012-06-20 16:38:30 -070020306 @see
20307 @return Result of the function call
20308*/
20309WDI_Status
20310WDI_ProcessTxCompleteInd
Jeff Johnsone7245742012-09-05 17:12:55 -070020311(
Jeff Johnson295189b2012-06-20 16:38:30 -070020312 WDI_ControlBlockType* pWDICtx,
20313 WDI_EventInfoType* pEventData
20314)
20315{
20316 WDI_LowLevelIndType wdiInd;
20317 tTxComplIndMsg halTxComplIndMsg;
20318 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20319
20320 /*-------------------------------------------------------------------------
20321 Sanity check
20322 -------------------------------------------------------------------------*/
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 );
20329 return WDI_STATUS_E_FAILURE;
20330 }
20331
20332 /*-------------------------------------------------------------------------
20333 Extract indication and send it to UMAC
20334 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020335 wpalMemoryCopy( &halTxComplIndMsg.txComplParams,
20336 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070020337 sizeof(halTxComplIndMsg.txComplParams) );
20338
20339 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020340 wdiInd.wdiIndicationType = WDI_TX_COMPLETE_IND;
20341 wdiInd.wdiIndicationData.tx_complete_status
20342 = halTxComplIndMsg.txComplParams.status;
Jeff Johnson295189b2012-06-20 16:38:30 -070020343
ltimariub77f24b2013-01-24 18:54:33 -080020344 if ( pWDICtx->wdiLowLevelIndCB )
20345 {
20346 /*Notify UMAC*/
20347 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
20348 }
Jeff Johnsone7245742012-09-05 17:12:55 -070020349
20350 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020351}/*WDI_ProcessTxCompleteInd*/
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053020352#ifdef FEATURE_WLAN_TDLS
20353/**
20354*@brief Process TDLS Indication function (called when
20355 an indication of this kind is being received over the
20356 bus from HAL)
Jeff Johnson295189b2012-06-20 16:38:30 -070020357
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053020358 @param pWDICtx: pointer to the WLAN DAL context
20359 pEventData: pointer to the event information structure
20360
20361 @see
20362 @return Result of the function call
20363*/
20364WDI_Status
20365WDI_ProcessTdlsInd
20366(
20367 WDI_ControlBlockType* pWDICtx,
20368 WDI_EventInfoType* pEventData
20369)
20370{
20371 WDI_LowLevelIndType wdiInd;
20372 tTdlsIndMsg halTdlsIndMsg;
20373 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20374
20375 /*-------------------------------------------------------------------------
20376 Sanity check
20377 -------------------------------------------------------------------------*/
20378 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20379 ( NULL == pEventData->pEventData ))
20380 {
20381 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
20382 "%s: Invalid parameters", __func__);
20383 WDI_ASSERT( 0 );
20384 return WDI_STATUS_E_FAILURE;
20385 }
20386
20387 /*-------------------------------------------------------------------------
20388 Extract indication and send it to UMAC
20389 -------------------------------------------------------------------------*/
20390 wpalMemoryCopy( &halTdlsIndMsg.tdlsIndParams,
20391 pEventData->pEventData,
20392 sizeof(halTdlsIndMsg.tdlsIndParams) );
20393
20394 /*Fill in the indication parameters*/
20395 wdiInd.wdiIndicationType = WDI_TDLS_IND;
20396
20397 wdiInd.wdiIndicationData.wdiTdlsIndInfo.status
20398 = halTdlsIndMsg.tdlsIndParams.status;
20399
20400 wdiInd.wdiIndicationData.wdiTdlsIndInfo.staIdx
20401 = halTdlsIndMsg.tdlsIndParams.staIdx;
20402
20403 wdiInd.wdiIndicationData.wdiTdlsIndInfo.reasonCode
20404 = halTdlsIndMsg.tdlsIndParams.reasonCode;
20405
20406 /*Notify UMAC*/
20407 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
20408
20409 return WDI_STATUS_SUCCESS;
20410}/*WDI_ProcessTdlsInd*/
20411#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070020412/**
Viral Modid86bde22012-12-10 13:09:21 -080020413*@brief Process Noa Start Indication function (called when
20414 an indication of this kind is being received over the
20415 bus from HAL)
20416
20417 @param pWDICtx: pointer to the WLAN DAL context
20418 pEventData: pointer to the event information structure
20419
20420 @see
20421 @return Result of the function call
20422*/
20423WDI_Status
20424WDI_ProcessP2pNoaStartInd
20425(
20426 WDI_ControlBlockType* pWDICtx,
20427 WDI_EventInfoType* pEventData
20428)
20429{
20430 WDI_LowLevelIndType wdiInd;
20431 tNoaStartIndMsg halNoaStartIndMsg;
20432 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20433
20434 /*-------------------------------------------------------------------------
20435 Sanity check
20436 -------------------------------------------------------------------------*/
20437 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20438 ( NULL == pEventData->pEventData ))
20439 {
20440 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
20441 "%s: Invalid parameters", __func__);
20442 WDI_ASSERT( 0 );
20443 return WDI_STATUS_E_FAILURE;
20444 }
20445
20446 /*-------------------------------------------------------------------------
20447 Extract indication and send it to UMAC
20448 -------------------------------------------------------------------------*/
20449 wpalMemoryCopy( &halNoaStartIndMsg.noaStartIndParams,
20450 pEventData->pEventData,
20451 sizeof(halNoaStartIndMsg.noaStartIndParams) );
20452
20453 /*Fill in the indication parameters*/
20454 wdiInd.wdiIndicationType = WDI_P2P_NOA_START_IND;
20455
20456 wdiInd.wdiIndicationData.wdiP2pNoaStartInfo.status
20457 = halNoaStartIndMsg.noaStartIndParams.status;
20458
20459 wdiInd.wdiIndicationData.wdiP2pNoaStartInfo.bssIdx
20460 = halNoaStartIndMsg.noaStartIndParams.bssIdx;
20461
20462 /*Notify UMAC*/
20463 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
20464
20465 return WDI_STATUS_SUCCESS;
20466}/*WDI_ProcessNoaAttrInd*/
20467
20468/**
Jeff Johnson295189b2012-06-20 16:38:30 -070020469*@brief Process Noa Attr Indication function (called when
20470 an indication of this kind is being received over the
20471 bus from HAL)
20472
20473 @param pWDICtx: pointer to the WLAN DAL context
20474 pEventData: pointer to the event information structure
20475
20476 @see
20477 @return Result of the function call
20478*/
20479WDI_Status
20480WDI_ProcessP2pNoaAttrInd
20481(
20482 WDI_ControlBlockType* pWDICtx,
20483 WDI_EventInfoType* pEventData
20484)
20485{
20486 WDI_LowLevelIndType wdiInd;
20487 tNoaAttrIndMsg halNoaAttrIndMsg;
20488 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20489
20490 /*-------------------------------------------------------------------------
20491 Sanity check
20492 -------------------------------------------------------------------------*/
20493 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20494 ( NULL == pEventData->pEventData ))
20495 {
20496 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020497 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020498 WDI_ASSERT( 0 );
20499 return WDI_STATUS_E_FAILURE;
20500 }
20501
20502 /*-------------------------------------------------------------------------
20503 Extract indication and send it to UMAC
20504 -------------------------------------------------------------------------*/
20505 wpalMemoryCopy( &halNoaAttrIndMsg.noaAttrIndParams,
20506 pEventData->pEventData,
20507 sizeof(halNoaAttrIndMsg.noaAttrIndParams) );
20508
20509 /*Fill in the indication parameters*/
20510 wdiInd.wdiIndicationType = WDI_P2P_NOA_ATTR_IND;
Jeff Johnsone7245742012-09-05 17:12:55 -070020511
Jeff Johnson295189b2012-06-20 16:38:30 -070020512 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.status
20513 = halNoaAttrIndMsg.noaAttrIndParams.status;
Jeff Johnsone7245742012-09-05 17:12:55 -070020514
Jeff Johnson295189b2012-06-20 16:38:30 -070020515 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.ucIndex
20516 = halNoaAttrIndMsg.noaAttrIndParams.index;
20517 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.ucOppPsFlag
20518 = halNoaAttrIndMsg.noaAttrIndParams.oppPsFlag;
20519 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.usCtWin
20520 = halNoaAttrIndMsg.noaAttrIndParams.ctWin;
Jeff Johnsone7245742012-09-05 17:12:55 -070020521
Jeff Johnson295189b2012-06-20 16:38:30 -070020522 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.usNoa1IntervalCnt
20523 = halNoaAttrIndMsg.noaAttrIndParams.uNoa1IntervalCnt;
20524 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa1Duration
20525 = halNoaAttrIndMsg.noaAttrIndParams.uNoa1Duration;
20526 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa1Interval
20527 = halNoaAttrIndMsg.noaAttrIndParams.uNoa1Interval;
20528 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa1StartTime
20529 = halNoaAttrIndMsg.noaAttrIndParams.uNoa1StartTime;
Jeff Johnsone7245742012-09-05 17:12:55 -070020530
Jeff Johnson295189b2012-06-20 16:38:30 -070020531 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.usNoa2IntervalCnt
20532 = halNoaAttrIndMsg.noaAttrIndParams.uNoa2IntervalCnt;
20533 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa2Duration
20534 = halNoaAttrIndMsg.noaAttrIndParams.uNoa2Duration;
20535 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa2Interval
20536 = halNoaAttrIndMsg.noaAttrIndParams.uNoa2Interval;
20537 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa2StartTime
20538 = halNoaAttrIndMsg.noaAttrIndParams.uNoa2StartTime;
20539
ltimariub77f24b2013-01-24 18:54:33 -080020540 if ( pWDICtx->wdiLowLevelIndCB )
20541 {
20542 /*Notify UMAC*/
20543 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
20544 }
Jeff Johnson295189b2012-06-20 16:38:30 -070020545
20546 return WDI_STATUS_SUCCESS;
20547}/*WDI_ProcessNoaAttrInd*/
Jeff Johnson295189b2012-06-20 16:38:30 -070020548
20549/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020550 @brief Process Tx PER Hit Indication function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070020551 an indication of this kind is being received over the
20552 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020553
20554 @param pWDICtx: pointer to the WLAN DAL context
20555 pEventData: pointer to the event information structure
20556
Jeff Johnson295189b2012-06-20 16:38:30 -070020557 @see
20558 @return Result of the function call
20559*/
20560WDI_Status
20561WDI_ProcessTxPerHitInd
Jeff Johnsone7245742012-09-05 17:12:55 -070020562(
Jeff Johnson295189b2012-06-20 16:38:30 -070020563 WDI_ControlBlockType* pWDICtx,
20564 WDI_EventInfoType* pEventData
20565)
20566{
20567 WDI_LowLevelIndType wdiInd;
20568 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Jeff Johnsone7245742012-09-05 17:12:55 -070020569
Jeff Johnson295189b2012-06-20 16:38:30 -070020570 /*-------------------------------------------------------------------------
20571 Extract indication and send it to UMAC
20572 -------------------------------------------------------------------------*/
20573 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020574 wdiInd.wdiIndicationType = WDI_TX_PER_HIT_IND;
20575
ltimariub77f24b2013-01-24 18:54:33 -080020576 if ( pWDICtx->wdiLowLevelIndCB )
20577 {
20578 /*Notify UMAC*/
20579 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
20580 }
Jeff Johnson295189b2012-06-20 16:38:30 -070020581
Jeff Johnsone7245742012-09-05 17:12:55 -070020582 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020583}/*WDI_ProcessTxPerHitInd*/
20584
Jeff Johnson295189b2012-06-20 16:38:30 -070020585/**
Yue Mab9c86f42013-08-14 15:59:08 -070020586 @brief Process Periodic Tx Pattern Fw Indication function
20587
20588 @param pWDICtx: pointer to the WLAN DAL context
20589 pEventData: pointer to the event information structure
20590
20591 @see
20592 @return Result of the function call
20593*/
20594WDI_Status
20595WDI_ProcessPeriodicTxPtrnFwInd
20596(
20597 WDI_ControlBlockType* pWDICtx,
20598 WDI_EventInfoType* pEventData
20599)
20600{
20601 WDI_LowLevelIndType wdiInd;
20602
20603 /*-------------------------------------------------------------------------
20604 Sanity check
20605 -------------------------------------------------------------------------*/
20606 if ((NULL == pWDICtx) || (NULL == pEventData) ||
20607 (NULL == pEventData->pEventData))
20608 {
20609 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
20610 "%s: Invalid parameters", __func__);
20611 WDI_ASSERT(0);
20612 return WDI_STATUS_E_FAILURE;
20613 }
20614
20615 /*-------------------------------------------------------------------------
20616 Extract indication and send it to UMAC
20617 -------------------------------------------------------------------------*/
20618 wpalMemoryCopy(&(wdiInd.wdiIndicationData.wdiPeriodicTxPtrnFwInd),
20619 (tHalPeriodicTxPtrnFwInd *)pEventData->pEventData,
20620 sizeof(tHalPeriodicTxPtrnFwInd));
20621
20622 if (pWDICtx->wdiLowLevelIndCB)
20623 {
20624 /*Notify UMAC*/
20625 pWDICtx->wdiLowLevelIndCB(&wdiInd, pWDICtx->pIndUserData);
20626 }
20627
20628 return WDI_STATUS_SUCCESS;
20629}
20630
20631/**
Jeff Johnson295189b2012-06-20 16:38:30 -070020632 @brief WDI_ProcessFTMCommandReq
20633 Process FTM Command, simply route to HAL
Jeff Johnsone7245742012-09-05 17:12:55 -070020634
20635 @param pWDICtx: pointer to the WLAN DAL context
20636 pEventData: pointer to the event information structure
20637
Jeff Johnson295189b2012-06-20 16:38:30 -070020638 @see
20639 @return Result of the function call
20640*/
20641WDI_Status
20642WDI_ProcessFTMCommandReq
Jeff Johnsone7245742012-09-05 17:12:55 -070020643(
Jeff Johnson295189b2012-06-20 16:38:30 -070020644 WDI_ControlBlockType* pWDICtx,
20645 WDI_EventInfoType* pEventData
20646)
20647{
20648 WDI_FTMCommandReqType *ftmCommandReq = NULL;
20649 wpt_uint8 *ftmCommandBuffer = NULL;
20650 wpt_uint16 dataOffset;
20651 wpt_uint16 bufferSize;
20652 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020653 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020654 -------------------------------------------------------------------------*/
20655 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20656 ( NULL == pEventData->pEventData))
20657
20658 {
20659 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020660 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020661 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020662 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020663 }
20664
20665 ftmCommandReq = (WDI_FTMCommandReqType *)pEventData->pEventData;
20666
20667 /* Get MSG Buffer */
20668 WDI_GetMessageBuffer(pWDICtx,
20669 WDI_FTM_CMD_REQ,
20670 ftmCommandReq->bodyLength,
20671 &ftmCommandBuffer,
20672 &dataOffset,
20673 &bufferSize);
20674
20675 wpalMemoryCopy(ftmCommandBuffer + dataOffset,
20676 ftmCommandReq->FTMCommandBody,
20677 ftmCommandReq->bodyLength);
20678
20679 /* Send MSG */
20680 return WDI_SendMsg(pWDICtx,
20681 ftmCommandBuffer,
20682 bufferSize,
20683 pEventData->pCBfnc,
20684 pEventData->pUserData,
20685 WDI_FTM_CMD_RESP);
20686}
20687
20688/**
20689 @brief WDI_ProcessFTMCommandRsp
20690 Process FTM Command Response from HAL, simply route to HDD FTM
Jeff Johnsone7245742012-09-05 17:12:55 -070020691
20692 @param pWDICtx: pointer to the WLAN DAL context
20693 pEventData: pointer to the event information structure
20694
Jeff Johnson295189b2012-06-20 16:38:30 -070020695 @see
20696 @return Result of the function call
20697*/
20698WDI_Status
20699WDI_ProcessFTMCommandRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020700(
Jeff Johnson295189b2012-06-20 16:38:30 -070020701 WDI_ControlBlockType* pWDICtx,
20702 WDI_EventInfoType* pEventData
20703)
20704{
20705 WDI_FTMCommandRspCb ftmCMDRspCb;
20706 tProcessPttRspParams *ftmCMDRspData = NULL;
20707 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20708
20709 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020710 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020711 -------------------------------------------------------------------------*/
20712 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20713 ( NULL == pEventData->pEventData))
20714 {
20715 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020716 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020717 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020718 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020719 }
20720
20721 ftmCMDRspCb = (WDI_FTMCommandRspCb)pWDICtx->pfncRspCB;
20722
20723 ftmCMDRspData = (tProcessPttRspParams *)pEventData->pEventData;
20724
Jeff Johnsone7245742012-09-05 17:12:55 -070020725 wpalMemoryCopy((void *)pWDICtx->ucFTMCommandRspBuffer,
20726 (void *)&ftmCMDRspData->pttMsgBuffer,
Jeff Johnson295189b2012-06-20 16:38:30 -070020727 ftmCMDRspData->pttMsgBuffer.msgBodyLength);
20728
20729 /*Notify UMAC*/
20730 ftmCMDRspCb((void *)pWDICtx->ucFTMCommandRspBuffer, pWDICtx->pRspCBUserData);
20731
Jeff Johnsone7245742012-09-05 17:12:55 -070020732 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020733}
Jeff Johnson295189b2012-06-20 16:38:30 -070020734/**
20735 @brief WDI_ProcessHalDumpCmdReq
20736 Process hal dump Command, simply route to HAL
Jeff Johnsone7245742012-09-05 17:12:55 -070020737
20738 @param pWDICtx: pointer to the WLAN DAL context
20739 pEventData: pointer to the event information structure
20740
Jeff Johnson295189b2012-06-20 16:38:30 -070020741 @see
20742 @return Result of the function call
20743*/
20744WDI_Status
20745WDI_ProcessHALDumpCmdReq
Jeff Johnsone7245742012-09-05 17:12:55 -070020746(
Jeff Johnson295189b2012-06-20 16:38:30 -070020747 WDI_ControlBlockType* pWDICtx,
20748 WDI_EventInfoType* pEventData
20749)
20750{
20751 WDI_HALDumpCmdReqParamsType* pwdiHALDumpCmdParams = NULL;
20752 WDI_HALDumpCmdRspCb wdiHALDumpCmdRspCb = NULL;
20753 wpt_uint16 usDataOffset = 0;
20754 wpt_uint16 usSendSize = 0;
20755 tHalDumpCmdReqMsg halDumpCmdReqMsg;
Jeff Johnsone7245742012-09-05 17:12:55 -070020756 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070020757
20758 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020759 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020760 -------------------------------------------------------------------------*/
20761 if (( NULL == pEventData ) ||
20762 ( NULL == pEventData->pEventData) ||
20763 ( NULL == pEventData->pCBfnc ))
20764 {
20765 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020766 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020767 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020768 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020769 }
20770
20771 pwdiHALDumpCmdParams = (WDI_HALDumpCmdReqParamsType*)pEventData->pEventData;
20772 wdiHALDumpCmdRspCb = (WDI_HALDumpCmdRspCb)pEventData->pCBfnc;
20773
20774 /* Copying the HAL DUMP Command Information HAL Structure*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020775 halDumpCmdReqMsg.dumpCmdReqParams.argument1 =
Jeff Johnson295189b2012-06-20 16:38:30 -070020776 pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.command;
Jeff Johnsone7245742012-09-05 17:12:55 -070020777 halDumpCmdReqMsg.dumpCmdReqParams.argument2 =
Jeff Johnson295189b2012-06-20 16:38:30 -070020778 pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.argument1;
Jeff Johnsone7245742012-09-05 17:12:55 -070020779 halDumpCmdReqMsg.dumpCmdReqParams.argument3 =
Jeff Johnson295189b2012-06-20 16:38:30 -070020780 pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.argument2;
Jeff Johnsone7245742012-09-05 17:12:55 -070020781 halDumpCmdReqMsg.dumpCmdReqParams.argument4 =
Jeff Johnson295189b2012-06-20 16:38:30 -070020782 pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.argument3;
Jeff Johnsone7245742012-09-05 17:12:55 -070020783 halDumpCmdReqMsg.dumpCmdReqParams.argument5 =
Jeff Johnson295189b2012-06-20 16:38:30 -070020784 pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.argument4;
Jeff Johnsone7245742012-09-05 17:12:55 -070020785
Jeff Johnson295189b2012-06-20 16:38:30 -070020786 /*-----------------------------------------------------------------------
20787 Get message buffer
20788 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020789 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_HAL_DUMP_CMD_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070020790 sizeof(halDumpCmdReqMsg.dumpCmdReqParams),
20791 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070020792 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070020793 (usDataOffset + sizeof(halDumpCmdReqMsg.dumpCmdReqParams) )))
20794 {
20795 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080020796 "Unable to get send buffer in HAL Dump Command req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070020797 pEventData, pwdiHALDumpCmdParams, wdiHALDumpCmdRspCb);
20798 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020799 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020800 }
20801
Jeff Johnsone7245742012-09-05 17:12:55 -070020802 wpalMemoryCopy( pSendBuffer+usDataOffset,
20803 &halDumpCmdReqMsg.dumpCmdReqParams,
20804 sizeof(halDumpCmdReqMsg.dumpCmdReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070020805
20806 pWDICtx->wdiReqStatusCB = pwdiHALDumpCmdParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070020807 pWDICtx->pReqStatusUserData = pwdiHALDumpCmdParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070020808
20809 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020810 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070020811 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020812 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
20813 wdiHALDumpCmdRspCb, pEventData->pUserData,
20814 WDI_HAL_DUMP_CMD_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070020815}
20816
20817/**
20818 @brief WDI_ProcessHalDumpCmdRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020819 Process hal Dump Command Response from HAL, simply route to HDD
20820
20821 @param pWDICtx: pointer to the WLAN DAL context
20822 pEventData: pointer to the event information structure
20823
Jeff Johnson295189b2012-06-20 16:38:30 -070020824 @see
20825 @return Result of the function call
20826*/
20827WDI_Status
20828WDI_ProcessHALDumpCmdRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020829(
Jeff Johnson295189b2012-06-20 16:38:30 -070020830 WDI_ControlBlockType* pWDICtx,
20831 WDI_EventInfoType* pEventData
20832)
20833{
20834 WDI_HALDumpCmdRspCb wdiHALDumpCmdRspCb;
Gopichand Nakkalafab3fae2013-01-07 15:01:01 -080020835 tHalDumpCmdRspParams halDumpCmdRspParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070020836 WDI_HALDumpCmdRspParamsType wdiHALDumpCmdRsp;
20837
20838 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020839 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020840 -------------------------------------------------------------------------*/
20841 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20842 ( NULL == pEventData->pEventData))
20843 {
20844 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020845 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020846 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020847 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020848 }
20849
Jeff Johnsone7245742012-09-05 17:12:55 -070020850 wdiHALDumpCmdRspCb = (WDI_HALDumpCmdRspCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070020851
20852 /*Initialize the WDI Response structure */
20853 wdiHALDumpCmdRsp.usBufferLen = 0;
20854 wdiHALDumpCmdRsp.pBuffer = NULL;
20855
Gopichand Nakkalafab3fae2013-01-07 15:01:01 -080020856 wpalMemoryCopy( &halDumpCmdRspParams,
20857 pEventData->pEventData,
20858 sizeof(tHalDumpCmdRspParams));
Jeff Johnsone7245742012-09-05 17:12:55 -070020859
20860 wdiHALDumpCmdRsp.wdiStatus =
Gopichand Nakkalafab3fae2013-01-07 15:01:01 -080020861 WDI_HAL_2_WDI_STATUS(halDumpCmdRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070020862
20863 if (( wdiHALDumpCmdRsp.wdiStatus == WDI_STATUS_SUCCESS) &&
Gopichand Nakkalafab3fae2013-01-07 15:01:01 -080020864 (halDumpCmdRspParams.rspLength != 0))
Jeff Johnson295189b2012-06-20 16:38:30 -070020865 {
20866 /* Copy the response data */
Gopichand Nakkalafab3fae2013-01-07 15:01:01 -080020867 wdiHALDumpCmdRsp.usBufferLen = halDumpCmdRspParams.rspLength;
20868 wdiHALDumpCmdRsp.pBuffer = wpalMemoryAllocate(halDumpCmdRspParams.rspLength);
20869
20870 wpalMemoryCopy( wdiHALDumpCmdRsp.pBuffer,
20871 &halDumpCmdRspParams.rspBuffer,
Gopichand Nakkala089c2582013-04-04 15:40:10 +053020872 halDumpCmdRspParams.rspLength);
Jeff Johnson295189b2012-06-20 16:38:30 -070020873 }
Jeff Johnsone7245742012-09-05 17:12:55 -070020874
Jeff Johnson295189b2012-06-20 16:38:30 -070020875 /*Notify UMAC*/
20876 wdiHALDumpCmdRspCb(&wdiHALDumpCmdRsp, pWDICtx->pRspCBUserData);
20877
20878 if(wdiHALDumpCmdRsp.pBuffer != NULL)
20879 {
20880 /* Free the allocated buffer */
20881 wpalMemoryFree(wdiHALDumpCmdRsp.pBuffer);
20882 }
20883 return WDI_STATUS_SUCCESS;
20884}
20885
20886/*==========================================================================
20887 CONTRL TRANSPORT INTERACTION
Jeff Johnsone7245742012-09-05 17:12:55 -070020888
Jeff Johnson295189b2012-06-20 16:38:30 -070020889 Callback function registered with the control transport - for receiving
Jeff Johnsone7245742012-09-05 17:12:55 -070020890 notifications and packets
Jeff Johnson295189b2012-06-20 16:38:30 -070020891==========================================================================*/
20892/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020893 @brief This callback is invoked by the control transport
Jeff Johnson295189b2012-06-20 16:38:30 -070020894 when it wishes to send up a notification like the ones
20895 mentioned above.
Jeff Johnsone7245742012-09-05 17:12:55 -070020896
Jeff Johnson295189b2012-06-20 16:38:30 -070020897 @param
Jeff Johnsone7245742012-09-05 17:12:55 -070020898
20899 wctsHandle: handle to the control transport service
Jeff Johnson295189b2012-06-20 16:38:30 -070020900 wctsEvent: the event being notified
Jeff Johnsone7245742012-09-05 17:12:55 -070020901 wctsNotifyCBData: the callback data of the user
20902
Jeff Johnson295189b2012-06-20 16:38:30 -070020903 @see WCTS_OpenTransport
Jeff Johnsone7245742012-09-05 17:12:55 -070020904
20905 @return None
Jeff Johnson295189b2012-06-20 16:38:30 -070020906*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020907void
Jeff Johnson295189b2012-06-20 16:38:30 -070020908WDI_NotifyMsgCTSCB
20909(
Jeff Johnsone7245742012-09-05 17:12:55 -070020910 WCTS_HandleType wctsHandle,
Jeff Johnson295189b2012-06-20 16:38:30 -070020911 WCTS_NotifyEventType wctsEvent,
20912 void* wctsNotifyCBData
20913)
20914{
Jeff Johnsone7245742012-09-05 17:12:55 -070020915 WDI_ControlBlockType* pWDICtx = (WDI_ControlBlockType*)wctsNotifyCBData;
Jeff Johnson295189b2012-06-20 16:38:30 -070020916 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20917
20918 if (NULL == pWDICtx )
20919 {
20920 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020921 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020922 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020923 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070020924 }
20925
20926 if (WDI_CONTROL_BLOCK_MAGIC != pWDICtx->magic)
20927 {
20928 /* callback presumably occurred after close */
20929 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020930 "%s: Invalid control block", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070020931 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070020932 }
20933
20934 if ( WCTS_EVENT_OPEN == wctsEvent )
20935 {
20936 /*Flag must be set atomically as it is checked from incoming request
20937 functions*/
20938 wpalMutexAcquire(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070020939 pWDICtx->bCTOpened = eWLAN_PAL_TRUE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020940
20941 /*Nothing to do - so try to dequeue any pending request that may have
20942 occurred while we were trying to establish this*/
20943 WDI_DequeuePendingReq(pWDICtx);
Jeff Johnsone7245742012-09-05 17:12:55 -070020944 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnson295189b2012-06-20 16:38:30 -070020945 }
Jeff Johnsone7245742012-09-05 17:12:55 -070020946 else if ( WCTS_EVENT_CLOSE == wctsEvent )
Jeff Johnson295189b2012-06-20 16:38:30 -070020947 {
20948 /*Flag must be set atomically as it is checked from incoming request
20949 functions*/
20950 wpalMutexAcquire(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070020951 pWDICtx->bCTOpened = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020952
20953 /*No other request will be processed from now on - fail all*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020954 WDI_ClearPendingRequests(pWDICtx);
Jeff Johnson295189b2012-06-20 16:38:30 -070020955 wpalMutexRelease(&pWDICtx->wptMutex);
20956
20957 /*Notify that the Control Channel is closed */
20958 wpalEventSet(&pWDICtx->wctsActionEvent);
20959 }
20960
20961}/*WDI_NotifyMsgCTSCB*/
20962
20963
20964/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020965 @brief This callback is invoked by the control transport
Jeff Johnson295189b2012-06-20 16:38:30 -070020966 when it wishes to send up a packet received over the
20967 bus.
Jeff Johnsone7245742012-09-05 17:12:55 -070020968
Jeff Johnson295189b2012-06-20 16:38:30 -070020969 @param
Jeff Johnsone7245742012-09-05 17:12:55 -070020970
20971 wctsHandle: handle to the control transport service
Jeff Johnson295189b2012-06-20 16:38:30 -070020972 pMsg: the packet
20973 uLen: the packet length
Jeff Johnsone7245742012-09-05 17:12:55 -070020974 wctsRxMsgCBData: the callback data of the user
20975
Jeff Johnson295189b2012-06-20 16:38:30 -070020976 @see WCTS_OpenTransport
Jeff Johnsone7245742012-09-05 17:12:55 -070020977
20978 @return None
Jeff Johnson295189b2012-06-20 16:38:30 -070020979*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020980void
20981WDI_RXMsgCTSCB
Jeff Johnson295189b2012-06-20 16:38:30 -070020982(
Jeff Johnsone7245742012-09-05 17:12:55 -070020983 WCTS_HandleType wctsHandle,
Jeff Johnson295189b2012-06-20 16:38:30 -070020984 void* pMsg,
20985 wpt_uint32 uLen,
20986 void* wctsRxMsgCBData
20987)
20988{
Jeff Johnsone7245742012-09-05 17:12:55 -070020989 tHalMsgHeader *pHalMsgHeader;
20990 WDI_EventInfoType wdiEventData;
Jeff Johnson295189b2012-06-20 16:38:30 -070020991 WDI_ControlBlockType* pWDICtx = (WDI_ControlBlockType*)wctsRxMsgCBData;
20992 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
20993
20994 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020995 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020996 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020997 if ((NULL == pWDICtx ) || ( NULL == pMsg ) ||
Jeff Johnson295189b2012-06-20 16:38:30 -070020998 ( uLen < sizeof(tHalMsgHeader)))
20999 {
21000 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021001 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021002 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021003 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070021004 }
21005
21006 if (WDI_CONTROL_BLOCK_MAGIC != pWDICtx->magic)
21007 {
21008 /* callback presumably occurred after close */
21009 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021010 "%s: Invalid control block", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070021011 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070021012 }
21013
Jeff Johnsone7245742012-09-05 17:12:55 -070021014 /*The RX Callback is expected to be serialized in the proper control thread
Jeff Johnson295189b2012-06-20 16:38:30 -070021015 context - so no serialization is necessary here
21016 ! - revisit this assumption */
21017
21018 pHalMsgHeader = (tHalMsgHeader *)pMsg;
21019
21020 if ( uLen != pHalMsgHeader->msgLen )
21021 {
21022 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
21023 "Invalid packet received from HAL - catastrophic failure");
Jeff Johnsone7245742012-09-05 17:12:55 -070021024 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_INVALID_RSP_FMT);
21025 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070021026 }
21027
21028 wdiEventData.wdiResponse = HAL_2_WDI_RSP_TYPE( pHalMsgHeader->msgType );
21029
21030 /*The message itself starts after the header*/
21031 wdiEventData.pEventData = (wpt_uint8*)pMsg + sizeof(tHalMsgHeader);
21032 wdiEventData.uEventDataSize = pHalMsgHeader->msgLen - sizeof(tHalMsgHeader);
21033 wdiEventData.pCBfnc = gWDICb.pfncRspCB;
21034 wdiEventData.pUserData = gWDICb.pRspCBUserData;
21035
21036
21037 if ( wdiEventData.wdiResponse == pWDICtx->wdiExpectedResponse )
21038 {
21039 /*Stop the timer as the response was received */
21040 /*!UT - check for potential race conditions between stop and response */
21041 wpalTimerStop(&pWDICtx->wptResponseTimer);
21042 }
21043 /* Check if we receive a response message which is not expected */
21044 else if ( wdiEventData.wdiResponse < WDI_HAL_IND_MIN )
21045 {
21046 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
21047 "Received response %s (%d) when expecting %s (%d) - catastrophic failure",
21048 WDI_getRespMsgString(wdiEventData.wdiResponse),
Jeff Johnsone7245742012-09-05 17:12:55 -070021049 wdiEventData.wdiResponse,
Jeff Johnson295189b2012-06-20 16:38:30 -070021050 WDI_getRespMsgString(pWDICtx->wdiExpectedResponse),
21051 pWDICtx->wdiExpectedResponse);
Sameer Thalappil4bb20cb2013-11-15 14:50:51 -080021052
21053 if (gWDICb.bEnableSSR == false)
21054 {
21055 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
21056 "SSR is not enabled on WDI timeout");
21057 WDI_DetectedDeviceError(pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
21058 return;
21059 }
21060 wpalWcnssResetIntr();
21061 /* if this timer fires, it means Riva did not receive the FIQ */
21062 wpalTimerStart(&pWDICtx->ssrTimer, WDI_SSR_TIMEOUT);
21063
Jeff Johnson295189b2012-06-20 16:38:30 -070021064 return;
21065 }
21066
21067 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
21068 "Rx smth from HAL: %d", wdiEventData.wdiResponse);
21069
21070 /*Post response event to the state machine*/
21071 WDI_PostMainEvent(pWDICtx, WDI_RESPONSE_EVENT, &wdiEventData);
21072
21073}/*WDI_RXMsgCTSCB*/
21074
21075
21076/*========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070021077 Internal Helper Routines
Jeff Johnson295189b2012-06-20 16:38:30 -070021078========================================================================*/
21079
21080/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021081 @brief WDI_CleanCB - internal helper routine used to clean the
Jeff Johnson295189b2012-06-20 16:38:30 -070021082 WDI Main Control Block
Jeff Johnsone7245742012-09-05 17:12:55 -070021083
Jeff Johnson295189b2012-06-20 16:38:30 -070021084 @param pWDICtx - pointer to the control block
21085
21086 @return Result of the function call
21087*/
21088WPT_INLINE WDI_Status
21089WDI_CleanCB
21090(
21091 WDI_ControlBlockType* pWDICtx
21092)
21093{
21094 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
21095
21096 /*Clean the WDI Control Block*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021097 wpalMemoryZero( pWDICtx, sizeof(*pWDICtx));
Jeff Johnson295189b2012-06-20 16:38:30 -070021098
Jeff Johnsone7245742012-09-05 17:12:55 -070021099 pWDICtx->uGlobalState = WDI_MAX_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -070021100 pWDICtx->ucMaxBssids = WDI_MAX_SUPPORTED_BSS;
21101 pWDICtx->ucMaxStations = WDI_MAX_SUPPORTED_STAS;
21102
21103 WDI_ResetAssocSessions( pWDICtx );
21104
21105 return WDI_STATUS_SUCCESS;
21106}/*WDI_CleanCB*/
21107
21108
21109/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021110 @brief Process request helper function
Jeff Johnson295189b2012-06-20 16:38:30 -070021111
Jeff Johnsone7245742012-09-05 17:12:55 -070021112
21113 @param pWDICtx: pointer to the WLAN DAL context
21114 pEventData: pointer to the event information structure
21115
Jeff Johnson295189b2012-06-20 16:38:30 -070021116 @see
21117 @return Result of the function call
21118*/
21119WPT_INLINE WDI_Status
21120WDI_ProcessRequest
21121(
21122 WDI_ControlBlockType* pWDICtx,
21123 WDI_EventInfoType* pEventData
21124)
21125{
21126 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21127
Jeff Johnsone7245742012-09-05 17:12:55 -070021128 /*!! Skip sanity check as this is called from the FSM functionss which
Jeff Johnson295189b2012-06-20 16:38:30 -070021129 already checked these pointers*/
21130
21131 if (( pEventData->wdiRequest < WDI_MAX_UMAC_IND ) &&
21132 ( NULL != pfnReqProcTbl[pEventData->wdiRequest] ))
Jeff Johnsone7245742012-09-05 17:12:55 -070021133 {
Jeff Johnson295189b2012-06-20 16:38:30 -070021134 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080021135 "Calling request processing function for req %s (%d) %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070021136 WDI_getReqMsgString(pEventData->wdiRequest),
21137 pEventData->wdiRequest, pfnReqProcTbl[pEventData->wdiRequest]);
21138 return pfnReqProcTbl[pEventData->wdiRequest](pWDICtx, pEventData);
21139 }
21140 else
21141 {
21142 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070021143 "Operation %d is not yet implemented ",
Jeff Johnson295189b2012-06-20 16:38:30 -070021144 pEventData->wdiRequest);
21145 return WDI_STATUS_E_NOT_IMPLEMENT;
21146 }
21147}/*WDI_ProcessRequest*/
21148
21149
21150/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021151 @brief Get message helper function - it allocates memory for a
Jeff Johnson295189b2012-06-20 16:38:30 -070021152 message that is to be sent to HAL accross the bus and
Jeff Johnsone7245742012-09-05 17:12:55 -070021153 prefixes it with a send message header
21154
21155 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070021156 wdiReqType: type of the request being sent
21157 uBufferLen: message buffer len
21158 pMsgBuffer: resulting allocated buffer
21159 pusDataOffset: offset in the buffer where the caller
21160 can start copying its message data
21161 puBufferSize: the resulting buffer size (offset+buff
21162 len)
Jeff Johnsone7245742012-09-05 17:12:55 -070021163
Jeff Johnson295189b2012-06-20 16:38:30 -070021164 @see
21165 @return Result of the function call
21166*/
21167WDI_Status
21168WDI_GetMessageBuffer
Jeff Johnsone7245742012-09-05 17:12:55 -070021169(
21170 WDI_ControlBlockType* pWDICtx,
21171 WDI_RequestEnumType wdiReqType,
Jeff Johnson295189b2012-06-20 16:38:30 -070021172 wpt_uint16 usBufferLen,
Jeff Johnsone7245742012-09-05 17:12:55 -070021173 wpt_uint8** pMsgBuffer,
21174 wpt_uint16* pusDataOffset,
Jeff Johnson295189b2012-06-20 16:38:30 -070021175 wpt_uint16* pusBufferSize
21176)
21177{
21178 tHalMsgHeader halMsgHeader;
21179 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21180
Jeff Johnsone7245742012-09-05 17:12:55 -070021181 /*!! No sanity check here as we trust the called - ! check this assumption
Jeff Johnson295189b2012-06-20 16:38:30 -070021182 again*/
21183
21184 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021185 Try to allocate message buffer from PAL
Jeff Johnson295189b2012-06-20 16:38:30 -070021186 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021187 *pusBufferSize = sizeof(halMsgHeader) + usBufferLen;
Jeff Johnson295189b2012-06-20 16:38:30 -070021188 *pMsgBuffer = (wpt_uint8*)wpalMemoryAllocate(*pusBufferSize);
21189 if ( NULL == *pMsgBuffer )
21190 {
21191 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
21192 "Unable to allocate message buffer for req %s (%d)",
21193 WDI_getReqMsgString(wdiReqType),
Jeff Johnsone7245742012-09-05 17:12:55 -070021194 wdiReqType);
Jeff Johnson295189b2012-06-20 16:38:30 -070021195 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021196 return WDI_STATUS_MEM_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021197 }
21198
21199 /*-------------------------------------------------------------------------
21200 Fill in the message header
21201 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021202 halMsgHeader.msgType = WDI_2_HAL_REQ_TYPE(wdiReqType);
21203 /* Fill msgVersion */
21204#ifdef WLAN_FEATURE_11AC
21205 if (WDI_getFwWlanFeatCaps(DOT11AC))
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070021206 halMsgHeader.msgVersion = WLAN_HAL_MSG_VERSION1;
Jeff Johnsone7245742012-09-05 17:12:55 -070021207 else
21208#endif
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070021209 halMsgHeader.msgVersion = WLAN_HAL_MSG_VERSION0;
Jeff Johnson295189b2012-06-20 16:38:30 -070021210
Jeff Johnsone7245742012-09-05 17:12:55 -070021211 halMsgHeader.msgLen = sizeof(halMsgHeader) + usBufferLen;
21212 *pusDataOffset = sizeof(halMsgHeader);
21213 wpalMemoryCopy(*pMsgBuffer, &halMsgHeader, sizeof(halMsgHeader));
21214
21215 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021216}/*WDI_GetMessageBuffer*/
21217
21218
21219/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021220 @brief Send message helper function - sends a message over the
Jeff Johnson295189b2012-06-20 16:38:30 -070021221 bus using the control tranport and saves some info in
Jeff Johnsone7245742012-09-05 17:12:55 -070021222 the CB
21223
21224 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070021225 pSendBuffer: buffer to be sent
Jeff Johnsone7245742012-09-05 17:12:55 -070021226
Jeff Johnson295189b2012-06-20 16:38:30 -070021227 usSendSize size of the buffer to be sent
21228 pRspCb: response callback - save in the WDI
21229 CB
21230 pUserData: user data associated with the
21231 callback
21232 wdiExpectedResponse: the code of the response that is
21233 expected to be rx-ed for this request
Jeff Johnsone7245742012-09-05 17:12:55 -070021234
Jeff Johnson295189b2012-06-20 16:38:30 -070021235 @see
21236 @return Result of the function call
21237*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021238WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070021239WDI_SendMsg
Jeff Johnsone7245742012-09-05 17:12:55 -070021240(
21241 WDI_ControlBlockType* pWDICtx,
21242 wpt_uint8* pSendBuffer,
21243 wpt_uint32 usSendSize,
21244 void* pRspCb,
Jeff Johnson295189b2012-06-20 16:38:30 -070021245 void* pUserData,
21246 WDI_ResponseEnumType wdiExpectedResponse
21247)
21248{
Jeff Johnsond13512a2012-07-17 11:42:19 -070021249 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080021250 wpt_uint32 ret;
Jeff Johnson295189b2012-06-20 16:38:30 -070021251 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
21252
21253 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021254 Save needed info in the CB
Jeff Johnson295189b2012-06-20 16:38:30 -070021255 ------------------------------------------------------------------------*/
21256 pWDICtx->pRspCBUserData = pUserData;
Jeff Johnsone7245742012-09-05 17:12:55 -070021257 pWDICtx->pfncRspCB = pRspCb;
21258 pWDICtx->wdiExpectedResponse = wdiExpectedResponse;
Jeff Johnson295189b2012-06-20 16:38:30 -070021259
21260 /*-----------------------------------------------------------------------
21261 Call the CTS to send this message over - free message afterwards
21262 - notify transport failure
21263 Note: CTS is reponsible for freeing the message buffer.
21264 -----------------------------------------------------------------------*/
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080021265 ret = WCTS_SendMessage(pWDICtx->wctsHandle, (void*)pSendBuffer, usSendSize);
21266 if ((eWLAN_PAL_STATUS_SUCCESS != ret) &&
21267 (eWLAN_PAL_STATUS_E_RESOURCES != ret))
Jeff Johnson295189b2012-06-20 16:38:30 -070021268 {
Jeff Johnsond13512a2012-07-17 11:42:19 -070021269 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnson295189b2012-06-20 16:38:30 -070021270 "Failed to send message over the bus - catastrophic failure");
21271
Jeff Johnsond13512a2012-07-17 11:42:19 -070021272 wdiStatus = WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021273 }
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080021274 else
21275 {
21276 /* even when message was placed in CTS deferred Q, we will treat it
21277 success but log this info
21278 */
21279 if (eWLAN_PAL_STATUS_E_RESOURCES == ret)
21280 {
21281 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
21282 "WDI_SendMsg: message placed in CTS deferred Q, expected "
21283 "response %s (%d)",
21284 WDI_getRespMsgString(pWDICtx->wdiExpectedResponse),
21285 pWDICtx->wdiExpectedResponse);
Gopichand Nakkala3c5b0632012-12-23 08:30:59 -080021286 WDI_ASSERT(0);
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080021287 }
21288 }
Jeff Johnson295189b2012-06-20 16:38:30 -070021289
Jeff Johnsond13512a2012-07-17 11:42:19 -070021290 /*Check if originator provided a request status callback*/
Jeff Johnson295189b2012-06-20 16:38:30 -070021291 if ( NULL != pWDICtx->wdiReqStatusCB )
21292 {
Jeff Johnsond13512a2012-07-17 11:42:19 -070021293 /*Inform originator whether request went through or not*/
21294 WDI_ReqStatusCb callback = pWDICtx->wdiReqStatusCB;
21295 void *callbackContext = pWDICtx->pReqStatusUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070021296 pWDICtx->wdiReqStatusCB = NULL;
21297 pWDICtx->pReqStatusUserData = NULL;
Jeff Johnsond13512a2012-07-17 11:42:19 -070021298 callback(wdiStatus, callbackContext);
21299
21300 /*For WDI requests which have registered a request callback,
21301 inform the WDA caller of the same via setting the return value
21302 (wdiStatus) to WDI_STATUS_PENDING. This makes sure that WDA doesnt
21303 end up repeating the functonality in the req callback for the
21304 WDI_STATUS_E_FAILURE case*/
21305 if (wdiStatus == WDI_STATUS_E_FAILURE)
21306 wdiStatus = WDI_STATUS_PENDING;
Jeff Johnson295189b2012-06-20 16:38:30 -070021307 }
21308
Jeff Johnsond13512a2012-07-17 11:42:19 -070021309 if ( wdiStatus == WDI_STATUS_SUCCESS )
21310 {
Jeff Johnson295189b2012-06-20 16:38:30 -070021311 /*Start timer for the expected response */
21312 wpalTimerStart(&pWDICtx->wptResponseTimer, WDI_RESPONSE_TIMEOUT);
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080021313
21314 /*cache current timestamp for debugging */
Gopichand Nakkala3c5b0632012-12-23 08:30:59 -080021315 pWDICtx->uTimeStampRspTmrStart = wpalGetSystemTime();
Arif Hussain6c8947a2013-11-27 13:57:14 -080021316 pWDICtx->uArchTimeStampRspTmrStart = wpalGetArchCounterTime();
Jeff Johnsond13512a2012-07-17 11:42:19 -070021317 }
21318 else
21319 {
Jeff Johnson902c9832012-12-10 14:28:09 -080021320 /*Inform upper stack layers that a transport fatal error occurred*/
Jeff Johnsond13512a2012-07-17 11:42:19 -070021321 WDI_DetectedDeviceError(pWDICtx, WDI_ERR_TRANSPORT_FAILURE);
21322 }
Jeff Johnson295189b2012-06-20 16:38:30 -070021323
Jeff Johnsond13512a2012-07-17 11:42:19 -070021324 return wdiStatus;
21325
Jeff Johnson295189b2012-06-20 16:38:30 -070021326}/*WDI_SendMsg*/
21327
21328
21329
21330/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021331 @brief Send indication helper function - sends a message over
Jeff Johnson295189b2012-06-20 16:38:30 -070021332 the bus using the control transport and saves some info
21333 in the CB
Jeff Johnsone7245742012-09-05 17:12:55 -070021334
21335 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070021336 pSendBuffer: buffer to be sent
21337 usSendSize: size of the buffer to be sent
Jeff Johnsone7245742012-09-05 17:12:55 -070021338
Jeff Johnson295189b2012-06-20 16:38:30 -070021339 @see
21340 @return Result of the function call
21341*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021342WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070021343WDI_SendIndication
Jeff Johnsone7245742012-09-05 17:12:55 -070021344(
21345 WDI_ControlBlockType* pWDICtx,
21346 wpt_uint8* pSendBuffer,
Jeff Johnson295189b2012-06-20 16:38:30 -070021347 wpt_uint32 usSendSize
21348)
21349{
21350 wpt_uint32 uStatus ;
21351 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
21352
21353 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021354 Call the CTS to send this message over
Jeff Johnson295189b2012-06-20 16:38:30 -070021355 Note: CTS is reponsible for freeing the message buffer.
21356 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021357 uStatus = WCTS_SendMessage( pWDICtx->wctsHandle,
Jeff Johnson295189b2012-06-20 16:38:30 -070021358 (void*)pSendBuffer, usSendSize );
21359
21360 /*Inform Upper MAC about the outcome of the request*/
21361 if ( NULL != pWDICtx->wdiReqStatusCB )
21362 {
21363 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
21364 "Send indication status : %d", uStatus);
21365
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080021366 /* even if CTS placed indication into its deferred Q, we treat it
21367 * as success and let CTS drain its queue as per smd interrupt to CTS
21368 */
21369 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 -070021370 pWDICtx->pReqStatusUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070021371 }
21372
21373 /*If sending of the message failed - it is considered catastrophic and
21374 indicates an error with the device*/
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080021375 if (( eWLAN_PAL_STATUS_SUCCESS != uStatus) &&
21376 ( eWLAN_PAL_STATUS_E_RESOURCES != uStatus))
21377
Jeff Johnson295189b2012-06-20 16:38:30 -070021378 {
21379 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnsone7245742012-09-05 17:12:55 -070021380 "Failed to send indication over the bus - catastrophic failure");
Jeff Johnson295189b2012-06-20 16:38:30 -070021381
21382 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_TRANSPORT_FAILURE);
21383 return WDI_STATUS_E_FAILURE;
21384 }
21385
Jeff Johnsone7245742012-09-05 17:12:55 -070021386 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021387}/*WDI_SendIndication*/
21388
21389
21390/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021391 @brief WDI_DetectedDeviceError - called internally by DAL when
21392 it has detected a failure in the device
21393
21394 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070021395 usErrorCode: error code detected by WDI or received
21396 from HAL
Jeff Johnsone7245742012-09-05 17:12:55 -070021397
Jeff Johnson295189b2012-06-20 16:38:30 -070021398 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070021399 @return None
Jeff Johnson295189b2012-06-20 16:38:30 -070021400*/
21401void
21402WDI_DetectedDeviceError
21403(
21404 WDI_ControlBlockType* pWDICtx,
21405 wpt_uint16 usErrorCode
21406)
21407{
21408 WDI_LowLevelIndType wdiInd;
21409 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
21410
21411 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
21412 "Device Error detected code: %d - transitioning to stopped state",
21413 usErrorCode);
21414
21415 wpalMutexAcquire(&pWDICtx->wptMutex);
21416
21417 WDI_STATableStop(pWDICtx);
21418
21419 WDI_ResetAssocSessions(pWDICtx);
21420
21421 /*Set the expected state transition to stopped - because the device
21422 experienced a failure*/
21423 pWDICtx->ucExpectedStateTransition = WDI_STOPPED_ST;
21424
21425 /*Transition to stopped to fail all incomming requests from this point on*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021426 WDI_STATE_TRANSITION( pWDICtx, WDI_STOPPED_ST);
Jeff Johnson295189b2012-06-20 16:38:30 -070021427
Jeff Johnsone7245742012-09-05 17:12:55 -070021428 WDI_ClearPendingRequests(pWDICtx);
Jeff Johnson295189b2012-06-20 16:38:30 -070021429
21430 /*TO DO: - there should be an attempt to reset the device here*/
21431
21432 wpalMutexRelease(&pWDICtx->wptMutex);
21433
21434 /*------------------------------------------------------------------------
21435 Notify UMAC if a handler is registered
21436 ------------------------------------------------------------------------*/
21437 if (pWDICtx->wdiLowLevelIndCB)
21438 {
Jeff Johnsone7245742012-09-05 17:12:55 -070021439 wdiInd.wdiIndicationType = WDI_FATAL_ERROR_IND;
21440 wdiInd.wdiIndicationData.usErrorCode = usErrorCode;
Jeff Johnson295189b2012-06-20 16:38:30 -070021441
21442 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData);
21443 }
21444}/*WDI_DetectedDeviceError*/
21445
21446/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021447 @brief This callback is invoked by the wpt when a timer that
Jeff Johnson295189b2012-06-20 16:38:30 -070021448 we started on send message has expire - this should
21449 never happen - it means device is stuck and cannot
Jeff Johnsone7245742012-09-05 17:12:55 -070021450 reply - trigger catastrophic failure
21451 @param
21452
Jeff Johnson295189b2012-06-20 16:38:30 -070021453 pUserData: the callback data of the user (ptr to WDI CB)
Jeff Johnsone7245742012-09-05 17:12:55 -070021454
21455 @see
21456 @return None
Jeff Johnson295189b2012-06-20 16:38:30 -070021457*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021458void
Jeff Johnson295189b2012-06-20 16:38:30 -070021459WDI_ResponseTimerCB
21460(
21461 void *pUserData
21462)
21463{
21464 WDI_ControlBlockType* pWDICtx = (WDI_ControlBlockType*)pUserData;
21465 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21466
Gopichand Nakkalae620d5a2013-04-26 05:45:57 -070021467 if (NULL == pWDICtx)
Jeff Johnson295189b2012-06-20 16:38:30 -070021468 {
Gopichand Nakkalae620d5a2013-04-26 05:45:57 -070021469 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021470 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021471 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021472 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070021473 }
21474
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080021475 /*cache current timestamp for debugging */
Gopichand Nakkala3c5b0632012-12-23 08:30:59 -080021476 pWDICtx->uTimeStampRspTmrExp = wpalGetSystemTime();
Arif Hussain6c8947a2013-11-27 13:57:14 -080021477 pWDICtx->uArchTimeStampRspTmrExp = wpalGetArchCounterTime();
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080021478
21479 /* If response timer is running at this time that means this timer
21480 * event is not for the last request but rather last-to-last request and
21481 * this timer event has come after we recevied respone for last-to-last
21482 * message
21483 */
21484 if (VOS_TIMER_STATE_RUNNING == wpalTimerGetCurStatus(&pWDICtx->wptResponseTimer))
21485 {
21486 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
21487 "WDI_ResponseTimerCB: timer in running state on timer event, "
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080021488 "ignore tmr event, timeStampTmrStart: %u, timeStampTmrExp: %u",
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080021489 pWDICtx->uTimeStampRspTmrStart, pWDICtx->uTimeStampRspTmrExp);
Arif Hussain6c8947a2013-11-27 13:57:14 -080021490 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
21491 "uArchTimeStampTmrStart: %llu seconds, "
21492 "uArchTimeStampTmrExp: %llu seconds",
21493 pWDICtx->uArchTimeStampRspTmrStart,
21494 pWDICtx->uArchTimeStampRspTmrExp);
21495
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080021496 return;
21497 }
21498
Gopichand Nakkalae620d5a2013-04-26 05:45:57 -070021499 if (WDI_MAX_RESP != pWDICtx->wdiExpectedResponse)
Jeff Johnson295189b2012-06-20 16:38:30 -070021500 {
21501
Gopichand Nakkalae620d5a2013-04-26 05:45:57 -070021502 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnson295189b2012-06-20 16:38:30 -070021503 "Timeout occurred while waiting for %s (%d) message from device "
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080021504 " - catastrophic failure, timeStampTmrStart: %u, timeStampTmrExp: %u",
Jeff Johnson295189b2012-06-20 16:38:30 -070021505 WDI_getRespMsgString(pWDICtx->wdiExpectedResponse),
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080021506 pWDICtx->wdiExpectedResponse, pWDICtx->uTimeStampRspTmrStart,
21507 pWDICtx->uTimeStampRspTmrExp);
Arif Hussain6c8947a2013-11-27 13:57:14 -080021508 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
21509 "uArchTimeStampTmrStart: %llu seconds, "
21510 "uArchTimeStampTmrExp: %llu seconds",
21511 pWDICtx->uArchTimeStampRspTmrStart,
21512 pWDICtx->uArchTimeStampRspTmrExp);
Gopichand Nakkalae620d5a2013-04-26 05:45:57 -070021513
21514 /* WDI timeout means Riva is not responding or SMD communication to Riva
21515 * is not happening. The only possible way to recover from this error
21516 * is to initiate SSR from APPS.
21517 * There is also an option to re-enable wifi, which will eventually
21518 * trigger SSR
21519 */
21520 if (gWDICb.bEnableSSR == false)
21521 {
21522 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
21523 "SSR is not enabled on WDI timeout");
21524 WDI_DetectedDeviceError(pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
21525 return;
21526 }
Madan Mohan Koyyalamudia2fc6412012-10-21 12:06:12 -070021527#ifndef WDI_RE_ENABLE_WIFI_ON_WDI_TIMEOUT
Gopichand Nakkalae620d5a2013-04-26 05:45:57 -070021528 wpalWcnssResetIntr();
21529 /* if this timer fires, it means Riva did not receive the FIQ */
21530 wpalTimerStart(&pWDICtx->ssrTimer, WDI_SSR_TIMEOUT);
Madan Mohan Koyyalamudia2fc6412012-10-21 12:06:12 -070021531#else
Gopichand Nakkalae620d5a2013-04-26 05:45:57 -070021532 WDI_DetectedDeviceError(pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
21533 wpalWlanReload();
Madan Mohan Koyyalamudia2fc6412012-10-21 12:06:12 -070021534#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070021535 }
21536 else
21537 {
Gopichand Nakkalae620d5a2013-04-26 05:45:57 -070021538 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080021539 "Timeout occurred but not waiting for any response %d "
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080021540 "timeStampTmrStart: %u, timeStampTmrExp: %u",
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080021541 pWDICtx->wdiExpectedResponse, pWDICtx->uTimeStampRspTmrStart,
21542 pWDICtx->uTimeStampRspTmrExp);
Arif Hussain6c8947a2013-11-27 13:57:14 -080021543 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
21544 "uArchTimeStampTmrStart: %llu seconds, "
21545 "uArchTimeStampTmrExp: %llu seconds",
21546 pWDICtx->uArchTimeStampRspTmrStart,
21547 pWDICtx->uArchTimeStampRspTmrExp);
21548
Jeff Johnson295189b2012-06-20 16:38:30 -070021549 }
21550
21551 return;
21552
21553}/*WDI_ResponseTimerCB*/
21554
21555
21556/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021557 @brief Process response helper function
Jeff Johnson295189b2012-06-20 16:38:30 -070021558
Jeff Johnsone7245742012-09-05 17:12:55 -070021559
21560 @param pWDICtx: pointer to the WLAN DAL context
21561 pEventData: pointer to the event information structure
21562
Jeff Johnson295189b2012-06-20 16:38:30 -070021563 @see
21564 @return Result of the function call
21565*/
21566WPT_INLINE WDI_Status
21567WDI_ProcessResponse
21568(
21569 WDI_ControlBlockType* pWDICtx,
21570 WDI_EventInfoType* pEventData
21571)
21572{
21573 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21574
Jeff Johnsone7245742012-09-05 17:12:55 -070021575 /* Skip sanity check as this is called from the FSM functions which
Jeff Johnson295189b2012-06-20 16:38:30 -070021576 already checked these pointers
21577 ! - revisit this assumption */
21578 if (( pEventData->wdiResponse < WDI_MAX_RESP ) &&
21579 ( NULL != pfnRspProcTbl[pEventData->wdiResponse] ))
Jeff Johnsone7245742012-09-05 17:12:55 -070021580 {
Jeff Johnson295189b2012-06-20 16:38:30 -070021581 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080021582 "Calling response processing function for resp %s (%d) %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070021583 WDI_getRespMsgString(pEventData->wdiResponse),
21584 pEventData->wdiResponse, pfnRspProcTbl[pEventData->wdiResponse]);
21585 return pfnRspProcTbl[pEventData->wdiResponse](pWDICtx, pEventData);
21586 }
21587 else
21588 {
21589 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070021590 "Operation %d is not yet implemented ",
Jeff Johnson295189b2012-06-20 16:38:30 -070021591 pEventData->wdiResponse);
21592 return WDI_STATUS_E_NOT_IMPLEMENT;
21593 }
21594}/*WDI_ProcessResponse*/
21595
21596
21597/*=========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070021598 QUEUE SUPPORT UTILITY FUNCTIONS
Jeff Johnson295189b2012-06-20 16:38:30 -070021599=========================================================================*/
21600
21601/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021602 @brief Utility function used by the DAL Core to help queue a
21603 request that cannot be processed right away.
21604 @param
21605
Jeff Johnson295189b2012-06-20 16:38:30 -070021606 pWDICtx: - pointer to the WDI control block
21607 pEventData: - pointer to the evnt info that needs to be
Jeff Johnsone7245742012-09-05 17:12:55 -070021608 queued
21609
21610 @see
21611 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070021612*/
21613WDI_Status
21614WDI_QueuePendingReq
21615(
21616 WDI_ControlBlockType* pWDICtx,
21617 WDI_EventInfoType* pEventData
21618)
21619{
Jeff Johnsone7245742012-09-05 17:12:55 -070021620 wpt_list_node* pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070021621 WDI_EventInfoType* pEventDataQueue = wpalMemoryAllocate(sizeof(*pEventData));
Jeff Johnsone7245742012-09-05 17:12:55 -070021622 void* pEventInfo = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070021623 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21624
21625 if ( NULL == pEventDataQueue )
21626 {
21627 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070021628 "Cannot allocate memory for queueing");
Jeff Johnson295189b2012-06-20 16:38:30 -070021629 WDI_ASSERT(0);
21630 return WDI_STATUS_MEM_FAILURE;
21631 }
21632
21633 pEventDataQueue->pCBfnc = pEventData->pCBfnc;
21634 pEventDataQueue->pUserData = pEventData->pUserData;
21635 pEventDataQueue->uEventDataSize = pEventData->uEventDataSize;
21636 pEventDataQueue->wdiRequest = pEventData->wdiRequest;
Jeff Johnsone7245742012-09-05 17:12:55 -070021637 pEventDataQueue->wdiResponse = pEventData->wdiResponse;
Jeff Johnson295189b2012-06-20 16:38:30 -070021638
21639 if( pEventData->uEventDataSize != 0 && pEventData->pEventData != NULL )
21640 {
21641 pEventInfo = wpalMemoryAllocate(pEventData->uEventDataSize);
Jeff Johnsone7245742012-09-05 17:12:55 -070021642
Jeff Johnson295189b2012-06-20 16:38:30 -070021643 if ( NULL == pEventInfo )
21644 {
21645 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070021646 "Cannot allocate memory for queueing event data info");
Jeff Johnson295189b2012-06-20 16:38:30 -070021647 WDI_ASSERT(0);
21648 wpalMemoryFree(pEventDataQueue);
21649 return WDI_STATUS_MEM_FAILURE;
21650 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021651
Jeff Johnson295189b2012-06-20 16:38:30 -070021652 wpalMemoryCopy(pEventInfo, pEventData->pEventData, pEventData->uEventDataSize);
21653
21654 }
21655 pEventDataQueue->pEventData = pEventInfo;
21656
21657 /*Send wpt a pointer to the node (this is the 1st element in the event data)*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021658 pNode = (wpt_list_node*)pEventDataQueue;
Jeff Johnson295189b2012-06-20 16:38:30 -070021659
Jeff Johnsone7245742012-09-05 17:12:55 -070021660 wpal_list_insert_back(&(pWDICtx->wptPendingQueue), pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070021661
21662 return WDI_STATUS_SUCCESS;
21663}/*WDI_QueuePendingReq*/
21664
21665/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021666 @brief Callback function for serializing queued message
Jeff Johnson295189b2012-06-20 16:38:30 -070021667 processing in the control context
Jeff Johnsone7245742012-09-05 17:12:55 -070021668 @param
21669
21670 pMsg - pointer to the message
21671
21672 @see
21673 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070021674*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021675void
Jeff Johnson295189b2012-06-20 16:38:30 -070021676WDI_PALCtrlMsgCB
21677(
21678 wpt_msg *pMsg
21679)
21680{
21681 WDI_EventInfoType* pEventData = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070021682 WDI_ControlBlockType* pWDICtx = NULL;
21683 WDI_Status wdiStatus;
21684 WDI_ReqStatusCb pfnReqStatusCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070021685 void* pUserData;
21686 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21687
21688 if (( NULL == pMsg )||
21689 ( NULL == (pEventData = (WDI_EventInfoType*)pMsg->ptr)) ||
21690 ( NULL == (pWDICtx = (WDI_ControlBlockType*)pMsg->pContext )))
21691 {
21692 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070021693 "Invalid message received on serialize ctrl context API");
Jeff Johnson295189b2012-06-20 16:38:30 -070021694 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021695 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070021696 }
21697
21698 /*Transition back to the state that we had before serialization
21699 - serialization transitions us to BUSY to stop any incomming requests
21700 ! TO DO L: possible race condition here if a request comes in between the
21701 state transition and the post function*/
21702
Jeff Johnsone7245742012-09-05 17:12:55 -070021703 WDI_STATE_TRANSITION( pWDICtx, pMsg->val);
Jeff Johnson295189b2012-06-20 16:38:30 -070021704
21705 /*-----------------------------------------------------------------------
21706 Check to see what type of event we are serializing
Jeff Johnsone7245742012-09-05 17:12:55 -070021707 - responses are never expected to come through here
Jeff Johnson295189b2012-06-20 16:38:30 -070021708 -----------------------------------------------------------------------*/
21709 switch ( pEventData->wdiRequest )
21710 {
21711
Jeff Johnsone7245742012-09-05 17:12:55 -070021712 case WDI_STOP_REQ:
Jeff Johnson295189b2012-06-20 16:38:30 -070021713 wdiStatus = WDI_PostMainEvent(&gWDICb, WDI_STOP_EVENT, pEventData);
21714 break;
21715
Jeff Johnson295189b2012-06-20 16:38:30 -070021716 case WDI_NV_DOWNLOAD_REQ:
21717 // When WDI State is WDI_STARTED_ST, send WDI request message with event type WDI_REQUEST_EVENT.
21718 // In this case, because this request is called from response process, we could call WDI_ProcessRequest() directly.
21719 if (pWDICtx->uGlobalState == WDI_STARTED_ST)
21720 {
21721 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021722 "%s: WDI_NV_DOWNLOAD_REQ called in WDI_STARTED_ST - send with WDI_REQUEST_EVENT", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021723 wdiStatus = WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, pEventData);
21724 }
21725 else
21726 {
21727 wdiStatus = WDI_PostMainEvent(&gWDICb, WDI_START_EVENT, pEventData);
21728 }
21729
21730 break;
21731
21732 default:
21733 wdiStatus = WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, pEventData);
21734 break;
21735 }/*switch ( pEventData->wdiRequest )*/
21736
21737 if ( WDI_STATUS_SUCCESS != wdiStatus )
21738 {
21739 WDI_ExtractRequestCBFromEvent(pEventData, &pfnReqStatusCB, &pUserData);
21740
21741 if ( NULL != pfnReqStatusCB )
21742 {
21743 /*Fail the request*/
21744 pfnReqStatusCB( wdiStatus, pUserData);
21745 }
21746 }
21747
21748 /* Free data - that was allocated when queueing*/
21749 if( pEventData != NULL )
21750 {
21751 if( pEventData->pEventData != NULL )
21752 {
21753 wpalMemoryFree(pEventData->pEventData);
21754 }
21755 wpalMemoryFree(pEventData);
21756 }
21757
21758 if( pMsg != NULL )
21759 {
21760 wpalMemoryFree(pMsg);
21761 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021762
Jeff Johnson295189b2012-06-20 16:38:30 -070021763}/*WDI_PALCtrlMsgCB*/
21764
21765/**
21766 @brief Utility function used by the DAL Core to help dequeue
Jeff Johnsone7245742012-09-05 17:12:55 -070021767 and schedule for execution a pending request
21768 @param
21769
Jeff Johnson295189b2012-06-20 16:38:30 -070021770 pWDICtx: - pointer to the WDI control block
21771 pEventData: - pointer to the evnt info that needs to be
Jeff Johnsone7245742012-09-05 17:12:55 -070021772 queued
21773
21774 @see
21775 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070021776*/
21777WDI_Status
21778WDI_DequeuePendingReq
21779(
21780 WDI_ControlBlockType* pWDICtx
21781)
21782{
Jeff Johnsone7245742012-09-05 17:12:55 -070021783 wpt_list_node* pNode = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070021784 WDI_EventInfoType* pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070021785 wpt_msg* palMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070021786 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21787
Jeff Johnsone7245742012-09-05 17:12:55 -070021788 wpal_list_remove_front(&(pWDICtx->wptPendingQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070021789
21790 if ( NULL == pNode )
21791 {
21792 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -070021793 "List is empty - return");
Jeff Johnson295189b2012-06-20 16:38:30 -070021794 return WDI_STATUS_SUCCESS;
21795 }
21796
21797 /*The node actually points to the 1st element inside the Event Data struct -
21798 just cast it back to the struct*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021799 pEventData = (WDI_EventInfoType*)pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070021800
21801 /*Serialize processing in the control thread
21802 !TO DO: - check to see if these are all the messages params that need
21803 to be filled in*/
21804 palMsg = wpalMemoryAllocate(sizeof(wpt_msg));
21805
21806 if ( NULL == palMsg )
21807 {
21808 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070021809 "WDI_DequeuePendingReq: Cannot allocate memory for palMsg.");
Jeff Johnson295189b2012-06-20 16:38:30 -070021810 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021811 return WDI_STATUS_MEM_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021812 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021813 palMsg->pContext = pWDICtx;
Jeff Johnson295189b2012-06-20 16:38:30 -070021814 palMsg->callback = WDI_PALCtrlMsgCB;
21815 palMsg->ptr = pEventData;
21816
21817 /*Save the global state as we need it on the other side*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021818 palMsg->val = pWDICtx->uGlobalState;
Leo Chang0f24ca12013-12-17 13:35:00 -080021819 palMsg->type = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070021820
Jeff Johnson295189b2012-06-20 16:38:30 -070021821 /*Transition back to BUSY as we need to handle a queued request*/
21822 WDI_STATE_TRANSITION( pWDICtx, WDI_BUSY_ST);
Jeff Johnsone7245742012-09-05 17:12:55 -070021823
Jeff Johnson295189b2012-06-20 16:38:30 -070021824 wpalPostCtrlMsg(pWDICtx->pPALContext, palMsg);
21825
21826 return WDI_STATUS_PENDING;
21827}/*WDI_DequeuePendingReq*/
21828
21829
21830/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021831 @brief Utility function used by the DAL Core to help queue
Jeff Johnson295189b2012-06-20 16:38:30 -070021832 an association request that cannot be processed right
Jeff Johnsone7245742012-09-05 17:12:55 -070021833 away.- The assoc requests will be queued by BSSID
21834 @param
21835
Jeff Johnson295189b2012-06-20 16:38:30 -070021836 pWDICtx: - pointer to the WDI control block
21837 pEventData: pointer to the evnt info that needs to be queued
21838 macBSSID: bssid
Jeff Johnsone7245742012-09-05 17:12:55 -070021839
21840 @see
21841 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070021842*/
21843WDI_Status
21844WDI_QueueNewAssocRequest
21845(
21846 WDI_ControlBlockType* pWDICtx,
21847 WDI_EventInfoType* pEventData,
21848 wpt_macAddr macBSSID
21849)
21850{
Jeff Johnsone7245742012-09-05 17:12:55 -070021851 wpt_uint8 i;
21852 WDI_BSSSessionType* pSession = NULL;
21853 wpt_list_node* pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070021854 WDI_EventInfoType* pEventDataQueue;
Jeff Johnsone7245742012-09-05 17:12:55 -070021855 void* pEventInfo;
21856 WDI_NextSessionIdType* pSessionIdElement;
Jeff Johnson295189b2012-06-20 16:38:30 -070021857 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Jeff Johnson295189b2012-06-20 16:38:30 -070021858
Jeff Johnsone7245742012-09-05 17:12:55 -070021859
21860 /*------------------------------------------------------------------------
21861 Search for a session that matches the BSSID
Jeff Johnson295189b2012-06-20 16:38:30 -070021862 ------------------------------------------------------------------------*/
21863 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
21864 {
21865 if ( eWLAN_PAL_FALSE == pWDICtx->aBSSSessions[i].bInUse )
21866 {
21867 /*Found an empty session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021868 pSession = &pWDICtx->aBSSSessions[i];
21869 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070021870 }
21871 }
21872
21873 if ( i >= WDI_MAX_BSS_SESSIONS )
21874 {
21875 /*Cannot find any empty sessions*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021876 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021877 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021878
Jeff Johnson295189b2012-06-20 16:38:30 -070021879 /*------------------------------------------------------------------------
21880 Fill in the BSSID for this session and set the usage flag
21881 ------------------------------------------------------------------------*/
21882 wpalMemoryCopy(pWDICtx->aBSSSessions[i].macBSSID, macBSSID, WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070021883 pWDICtx->aBSSSessions[i].bInUse = eWLAN_PAL_TRUE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021884
21885 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021886 Allocate memory for this and place it in the queue
Jeff Johnson295189b2012-06-20 16:38:30 -070021887 ------------------------------------------------------------------------*/
21888 pEventDataQueue = (WDI_EventInfoType*)wpalMemoryAllocate(sizeof(WDI_EventInfoType));
21889 if ( NULL == pEventDataQueue )
21890 {
21891 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021892 "%s: Cannot allocate memory for queue node", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021893 WDI_ASSERT(0);
21894 return WDI_STATUS_MEM_FAILURE;
21895 }
21896
21897 pSessionIdElement = (WDI_NextSessionIdType*)wpalMemoryAllocate(sizeof(WDI_NextSessionIdType));
21898 if ( NULL == pSessionIdElement )
21899 {
21900 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021901 "%s: Cannot allocate memory for session ID", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021902 WDI_ASSERT(0);
21903 wpalMemoryFree(pEventDataQueue);
21904 return WDI_STATUS_MEM_FAILURE;
21905 }
21906
21907 pEventInfo = wpalMemoryAllocate(pEventData->uEventDataSize);
21908 if ( NULL == pEventInfo )
21909 {
21910 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021911 "%s: Cannot allocate memory for event data info", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021912 WDI_ASSERT(0);
21913 wpalMemoryFree(pSessionIdElement);
21914 wpalMemoryFree(pEventDataQueue);
21915 return WDI_STATUS_MEM_FAILURE;
21916 }
21917
21918 pEventDataQueue->pCBfnc = pEventData->pCBfnc;
21919 pEventDataQueue->pUserData = pEventData->pUserData;
21920 pEventDataQueue->uEventDataSize = pEventData->uEventDataSize;
21921 pEventDataQueue->wdiRequest = pEventData->wdiRequest;
Jeff Johnsone7245742012-09-05 17:12:55 -070021922 pEventDataQueue->wdiResponse = pEventData->wdiResponse;
Jeff Johnson295189b2012-06-20 16:38:30 -070021923
21924 wpalMemoryCopy(pEventInfo, pEventData->pEventData, pEventData->uEventDataSize);
21925 pEventDataQueue->pEventData = pEventInfo;
21926
21927 /*Send wpt a pointer to the node (this is the 1st element in the event data)*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021928 pNode = (wpt_list_node*)pEventDataQueue;
Jeff Johnson295189b2012-06-20 16:38:30 -070021929
21930 /*This association is currently being queued*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021931 pSession->bAssocReqQueued = eWLAN_PAL_TRUE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021932
Jeff Johnsone7245742012-09-05 17:12:55 -070021933 wpal_list_insert_back(&(pSession->wptPendingQueue), pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070021934
21935 /*We need to maintain a separate list that keeps track of the order in which
21936 the new assoc requests are being queued such that we can start processing
21937 them in the order that they had arrived*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021938 pSessionIdElement->ucIndex = i;
21939 pNode = (wpt_list_node*)pSessionIdElement;
Jeff Johnson295189b2012-06-20 16:38:30 -070021940
21941 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
21942 "Queueing up new assoc session : %d ", pSessionIdElement->ucIndex);
Jeff Johnsone7245742012-09-05 17:12:55 -070021943 wpal_list_insert_back(&pWDICtx->wptPendingAssocSessionIdQueue, pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070021944
21945 /*Return pending as this is what the status of the request is since it has
21946 been queued*/
21947 return WDI_STATUS_PENDING;
21948}/*WDI_QueueNewAssocRequest*/
21949
21950/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021951 @brief Utility function used by the DAL Core to help queue
Jeff Johnson295189b2012-06-20 16:38:30 -070021952 an association request that cannot be processed right
Jeff Johnsone7245742012-09-05 17:12:55 -070021953 away.- The assoc requests will be queued by BSSID
21954 @param
21955
Jeff Johnson295189b2012-06-20 16:38:30 -070021956 pWDICtx: - pointer to the WDI control block
21957 pSession: - session in which to queue
21958 pEventData: pointer to the event info that needs to be
21959 queued
Jeff Johnsone7245742012-09-05 17:12:55 -070021960
21961 @see
21962 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070021963*/
21964WDI_Status
21965WDI_QueueAssocRequest
21966(
21967 WDI_ControlBlockType* pWDICtx,
21968 WDI_BSSSessionType* pSession,
21969 WDI_EventInfoType* pEventData
21970)
21971{
Jeff Johnsone7245742012-09-05 17:12:55 -070021972 wpt_list_node* pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070021973 WDI_EventInfoType* pEventDataQueue;
Jeff Johnsone7245742012-09-05 17:12:55 -070021974 void* pEventInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070021975 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Jeff Johnsone7245742012-09-05 17:12:55 -070021976
21977 /*------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -070021978 Sanity check
21979 ------------------------------------------------------------------------*/
21980 if (( NULL == pSession ) || ( NULL == pWDICtx ))
21981 {
21982 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021983 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021984
Jeff Johnsone7245742012-09-05 17:12:55 -070021985 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021986 }
21987
21988 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021989 Allocate memory for this and place it in the queue
Jeff Johnson295189b2012-06-20 16:38:30 -070021990 ------------------------------------------------------------------------*/
21991 pEventDataQueue = (WDI_EventInfoType*)wpalMemoryAllocate(sizeof(WDI_EventInfoType));
21992 if ( NULL == pEventDataQueue )
21993 {
21994 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021995 "%s: Cannot allocate memory for queueing", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021996 WDI_ASSERT(0);
21997 return WDI_STATUS_MEM_FAILURE;
21998 }
21999
22000 pEventInfo = wpalMemoryAllocate(pEventData->uEventDataSize);
22001 if ( NULL == pEventInfo )
22002 {
22003 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
22004 "%s: Cannot allocate memory for queueing event data info",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022005 __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070022006 WDI_ASSERT(0);
22007 wpalMemoryFree(pEventDataQueue);
22008 return WDI_STATUS_MEM_FAILURE;
22009 }
22010
22011 pEventDataQueue->pCBfnc = pEventData->pCBfnc;
22012 pEventDataQueue->pUserData = pEventData->pUserData;
22013 pEventDataQueue->uEventDataSize = pEventData->uEventDataSize;
22014 pEventDataQueue->wdiRequest = pEventData->wdiRequest;
Jeff Johnsone7245742012-09-05 17:12:55 -070022015 pEventDataQueue->wdiResponse = pEventData->wdiResponse;
Jeff Johnson295189b2012-06-20 16:38:30 -070022016 pEventDataQueue->pEventData = pEventInfo;
22017
22018 wpalMemoryCopy(pEventInfo, pEventData->pEventData, pEventData->uEventDataSize);
22019
22020 /*Send wpt a pointer to the node (this is the 1st element in the event data)*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022021 pNode = (wpt_list_node*)pEventDataQueue;
Jeff Johnson295189b2012-06-20 16:38:30 -070022022
22023 /*This association is currently being queued*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022024 pSession->bAssocReqQueued = eWLAN_PAL_TRUE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022025
Jeff Johnsone7245742012-09-05 17:12:55 -070022026 wpal_list_insert_back(&(pSession->wptPendingQueue), pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070022027
22028 /*The result of this operation is pending because the request has been
22029 queued and it will be processed at a later moment in time */
22030 return WDI_STATUS_PENDING;
22031}/*WDI_QueueAssocRequest*/
22032
22033/**
22034 @brief Utility function used by the DAL Core to help dequeue
22035 an association request that was pending
22036 The request will be queued up in front of the main
22037 pending queue for imediate processing
Jeff Johnsone7245742012-09-05 17:12:55 -070022038 @param
22039
Jeff Johnson295189b2012-06-20 16:38:30 -070022040 pWDICtx: - pointer to the WDI control block
Jeff Johnsone7245742012-09-05 17:12:55 -070022041
22042
22043 @see
22044 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070022045*/
22046WDI_Status
22047WDI_DequeueAssocRequest
22048(
22049 WDI_ControlBlockType* pWDICtx
22050)
22051{
Jeff Johnsone7245742012-09-05 17:12:55 -070022052 wpt_list_node* pNode = NULL;
22053 WDI_NextSessionIdType* pSessionIdElement;
Jeff Johnson295189b2012-06-20 16:38:30 -070022054 WDI_BSSSessionType* pSession;
22055 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Jeff Johnsone7245742012-09-05 17:12:55 -070022056
22057 /*------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -070022058 Sanity check
22059 ------------------------------------------------------------------------*/
22060 if ( NULL == pWDICtx )
22061 {
22062 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022063 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070022064
Jeff Johnsone7245742012-09-05 17:12:55 -070022065 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022066 }
22067
22068 /*------------------------------------------------------------------------
22069 An association has been completed => a new association can occur
22070 Check to see if there are any pending associations ->
22071 If so , transfer all the pending requests into the busy queue for
22072 processing
22073 These requests have arrived prior to the requests in the busy queue
22074 (bc they needed to be processed in order to be placed in this queue)
22075 => they will be placed at the front of the busy queue
22076 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022077 wpal_list_remove_front(&(pWDICtx->wptPendingAssocSessionIdQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070022078
22079 if ( NULL == pNode )
22080 {
22081 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -070022082 "List is empty - return");
Jeff Johnson295189b2012-06-20 16:38:30 -070022083 return WDI_STATUS_SUCCESS;
22084 }
22085
22086 /*The node actually points to the 1st element inside the Session Id struct -
22087 just cast it back to the struct*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022088 pSessionIdElement = (WDI_NextSessionIdType*)pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070022089
22090 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
22091 "Dequeueing new assoc session : %d ", pSessionIdElement->ucIndex);
22092
22093 if ( pSessionIdElement->ucIndex < WDI_MAX_BSS_SESSIONS )
22094 {
22095 pSession = &pWDICtx->aBSSSessions[pSessionIdElement->ucIndex];
Jeff Johnsone7245742012-09-05 17:12:55 -070022096
Jeff Johnson295189b2012-06-20 16:38:30 -070022097 /*Transfer all the pending requests in this assoc queue to
Jeff Johnsone7245742012-09-05 17:12:55 -070022098 the front of the main waiting queue for subsequent execution*/
22099 wpal_list_remove_back(&(pSession->wptPendingQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070022100 while ( NULL != pNode )
22101 {
22102 /*Place it in front of the main pending list*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022103 wpal_list_insert_front( &(pWDICtx->wptPendingQueue), &pNode);
22104 wpal_list_remove_back(&(pSession->wptPendingQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070022105 }
Jeff Johnsone7245742012-09-05 17:12:55 -070022106 pSession->bAssocReqQueued = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022107 }
22108 else
22109 {
22110 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnsone7245742012-09-05 17:12:55 -070022111 "Invalid session id queued up for assoc");
Jeff Johnson295189b2012-06-20 16:38:30 -070022112 WPAL_ASSERT(0);
22113 wpalMemoryFree(pSessionIdElement);
Jeff Johnsone7245742012-09-05 17:12:55 -070022114 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022115 }
Jeff Johnsone7245742012-09-05 17:12:55 -070022116
Jeff Johnson295189b2012-06-20 16:38:30 -070022117 /*Clean this up as it is no longer needed in order to prevent memory leak*/
22118 wpalMemoryFree(pSessionIdElement);
22119 return WDI_STATUS_SUCCESS;
22120}/*WDI_DequeueAssocRequest*/
22121
22122/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022123 @brief Utility function used by the DAL Core to clear any
Jeff Johnson295189b2012-06-20 16:38:30 -070022124 pending requests - all req cb will be called with
22125 failure and the queue will be emptied.
Jeff Johnsone7245742012-09-05 17:12:55 -070022126 @param
22127
Jeff Johnson295189b2012-06-20 16:38:30 -070022128 pWDICtx: - pointer to the WDI control block
Jeff Johnsone7245742012-09-05 17:12:55 -070022129
22130 @see
22131 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070022132*/
22133WDI_Status
22134WDI_ClearPendingRequests
Jeff Johnsone7245742012-09-05 17:12:55 -070022135(
Jeff Johnson295189b2012-06-20 16:38:30 -070022136 WDI_ControlBlockType* pWDICtx
22137)
22138{
Jeff Johnsone7245742012-09-05 17:12:55 -070022139 wpt_list_node* pNode = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070022140 WDI_EventInfoType* pEventDataQueue = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070022141 WDI_ReqStatusCb pfnReqStatusCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070022142 void* pUserData;
22143 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
22144
Jeff Johnsone7245742012-09-05 17:12:55 -070022145 wpal_list_remove_front(&(pWDICtx->wptPendingQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070022146
22147 /*------------------------------------------------------------------------
22148 Go through all the requests and fail them - this will only be called
22149 when device is being stopped or an error was detected - either case the
Jeff Johnsone7245742012-09-05 17:12:55 -070022150 pending requests can no longer be sent down to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070022151 ------------------------------------------------------------------------*/
22152 while( pNode )
22153 {
22154 /*The node actually points to the 1st element inside the Event Data struct -
22155 just cast it back to the struct*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022156 pEventDataQueue = (WDI_EventInfoType*)pNode;
22157
Jeff Johnson295189b2012-06-20 16:38:30 -070022158 WDI_ExtractRequestCBFromEvent(pEventDataQueue, &pfnReqStatusCB, &pUserData);
22159 if ( NULL != pfnReqStatusCB )
22160 {
22161 /*Fail the request*/
22162 pfnReqStatusCB( WDI_STATUS_E_FAILURE, pUserData);
22163 }
22164 /* Free data - that was allocated when queueing */
22165 if ( pEventDataQueue->pEventData != NULL )
22166 {
22167 wpalMemoryFree(pEventDataQueue->pEventData);
22168 }
22169 wpalMemoryFree(pEventDataQueue);
22170
22171 if (wpal_list_remove_front(&(pWDICtx->wptPendingQueue), &pNode) != eWLAN_PAL_STATUS_SUCCESS)
22172 {
22173 break;
22174 }
Jeff Johnsone7245742012-09-05 17:12:55 -070022175 }
22176
Jeff Johnson295189b2012-06-20 16:38:30 -070022177 return WDI_STATUS_SUCCESS;
22178}/*WDI_ClearPendingRequests*/
22179
22180/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022181 @brief Helper routine used to init the BSS Sessions in the WDI control block
22182
22183
22184 @param pWDICtx: pointer to the WLAN DAL context
22185
Jeff Johnson295189b2012-06-20 16:38:30 -070022186 @see
22187*/
22188void
22189WDI_ResetAssocSessions
Jeff Johnsone7245742012-09-05 17:12:55 -070022190(
Jeff Johnson295189b2012-06-20 16:38:30 -070022191 WDI_ControlBlockType* pWDICtx
22192)
22193{
Jeff Johnsone7245742012-09-05 17:12:55 -070022194 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070022195 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
22196
22197 /*-------------------------------------------------------------------------
22198 No Sanity check
22199 -------------------------------------------------------------------------*/
22200 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
22201 {
Jeff Johnsone7245742012-09-05 17:12:55 -070022202 wpalMemoryZero( &pWDICtx->aBSSSessions[i], sizeof(WDI_BSSSessionType) );
Jeff Johnson295189b2012-06-20 16:38:30 -070022203 pWDICtx->aBSSSessions[i].wdiAssocState = WDI_ASSOC_INIT_ST;
22204 pWDICtx->aBSSSessions[i].bcastStaIdx = WDI_STA_INVALID_IDX;
22205 pWDICtx->aBSSSessions[i].ucBSSIdx = WDI_BSS_INVALID_IDX;
22206 }
22207}/*WDI_ResetAssocSessions*/
22208
22209/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022210 @brief Helper routine used to find a session based on the BSSID
22211
22212
22213 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070022214 macBSSID: BSSID of the session
Jeff Johnsone7245742012-09-05 17:12:55 -070022215 pSession: pointer to the session (if found)
22216
Jeff Johnson295189b2012-06-20 16:38:30 -070022217 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070022218 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070022219*/
22220wpt_uint8
22221WDI_FindAssocSession
Jeff Johnsone7245742012-09-05 17:12:55 -070022222(
Jeff Johnson295189b2012-06-20 16:38:30 -070022223 WDI_ControlBlockType* pWDICtx,
22224 wpt_macAddr macBSSID,
22225 WDI_BSSSessionType** ppSession
22226)
22227{
Jeff Johnsone7245742012-09-05 17:12:55 -070022228 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070022229 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
22230
22231 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022232 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070022233 -------------------------------------------------------------------------*/
22234 if ( NULL == ppSession )
22235 {
22236 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022237 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070022238 return WDI_MAX_BSS_SESSIONS;
Jeff Johnson295189b2012-06-20 16:38:30 -070022239 }
22240
Jeff Johnsone7245742012-09-05 17:12:55 -070022241 *ppSession = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070022242
Jeff Johnsone7245742012-09-05 17:12:55 -070022243 /*------------------------------------------------------------------------
22244 Search for a session that matches the BSSID
Jeff Johnson295189b2012-06-20 16:38:30 -070022245 ------------------------------------------------------------------------*/
22246 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
22247 {
Madan Mohan Koyyalamudi35287862012-10-22 14:52:46 -070022248 if ( (pWDICtx->aBSSSessions[i].bInUse == eWLAN_PAL_TRUE) &&
22249 (eWLAN_PAL_TRUE ==
22250 wpalMemoryCompare(pWDICtx->aBSSSessions[i].macBSSID, macBSSID,
22251 WDI_MAC_ADDR_LEN)) )
Jeff Johnson295189b2012-06-20 16:38:30 -070022252 {
22253 /*Found the session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022254 *ppSession = &pWDICtx->aBSSSessions[i];
Jeff Johnson295189b2012-06-20 16:38:30 -070022255 return i;
22256 }
22257 }
22258
Jeff Johnsone7245742012-09-05 17:12:55 -070022259 return i;
Jeff Johnson295189b2012-06-20 16:38:30 -070022260}/*WDI_FindAssocSession*/
22261
22262/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022263 @brief Helper routine used to find a session based on the BSSID
22264
22265
22266 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070022267 ucBSSIdx: BSS Index of the session
22268 ppSession: out pointer to the session (if found)
Jeff Johnsone7245742012-09-05 17:12:55 -070022269
Jeff Johnson295189b2012-06-20 16:38:30 -070022270 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070022271 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070022272*/
22273wpt_uint8
22274WDI_FindAssocSessionByBSSIdx
Jeff Johnsone7245742012-09-05 17:12:55 -070022275(
Jeff Johnson295189b2012-06-20 16:38:30 -070022276 WDI_ControlBlockType* pWDICtx,
22277 wpt_uint16 ucBSSIdx,
22278 WDI_BSSSessionType** ppSession
22279)
22280{
Jeff Johnsone7245742012-09-05 17:12:55 -070022281 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070022282 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
22283
22284 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022285 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070022286 -------------------------------------------------------------------------*/
22287 if ( NULL == ppSession )
22288 {
22289 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022290 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070022291 return WDI_MAX_BSS_SESSIONS;
Jeff Johnson295189b2012-06-20 16:38:30 -070022292 }
22293
Jeff Johnsone7245742012-09-05 17:12:55 -070022294 *ppSession = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070022295
Jeff Johnsone7245742012-09-05 17:12:55 -070022296 /*------------------------------------------------------------------------
22297 Search for a session that matches the BSSID
Jeff Johnson295189b2012-06-20 16:38:30 -070022298 ------------------------------------------------------------------------*/
22299 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
22300 {
22301 if ( ucBSSIdx == pWDICtx->aBSSSessions[i].ucBSSIdx )
22302 {
22303 /*Found the session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022304 *ppSession = &pWDICtx->aBSSSessions[i];
Jeff Johnson295189b2012-06-20 16:38:30 -070022305 return i;
22306 }
22307 }
22308
Jeff Johnsone7245742012-09-05 17:12:55 -070022309 return i;
Jeff Johnson295189b2012-06-20 16:38:30 -070022310}/*WDI_FindAssocSessionByBSSIdx*/
22311
22312/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022313 @brief Helper routine used to find a session based on the BSSID
22314
22315
22316 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070022317 ucBSSIdx: BSS Index of the session
22318 ppSession: out pointer to the session (if found)
Jeff Johnsone7245742012-09-05 17:12:55 -070022319
Jeff Johnson295189b2012-06-20 16:38:30 -070022320 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070022321 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070022322*/
22323wpt_uint8
22324WDI_FindAssocSessionByIdx
Jeff Johnsone7245742012-09-05 17:12:55 -070022325(
Jeff Johnson295189b2012-06-20 16:38:30 -070022326 WDI_ControlBlockType* pWDICtx,
22327 wpt_uint16 usIdx,
22328 WDI_BSSSessionType** ppSession
22329)
22330{
22331 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
22332
22333 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022334 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070022335 -------------------------------------------------------------------------*/
22336 if ( NULL == ppSession || usIdx >= WDI_MAX_BSS_SESSIONS )
22337 {
22338 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022339 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070022340 return WDI_MAX_BSS_SESSIONS;
Jeff Johnson295189b2012-06-20 16:38:30 -070022341 }
22342
22343 /*Found the session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022344 *ppSession = &pWDICtx->aBSSSessions[usIdx];
Jeff Johnson295189b2012-06-20 16:38:30 -070022345
22346 return usIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070022347
Jeff Johnson295189b2012-06-20 16:38:30 -070022348}/*WDI_FindAssocSessionByBSSIdx*/
22349
22350/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022351 @brief Helper routine used to find an empty session in the WDI
Jeff Johnson295189b2012-06-20 16:38:30 -070022352 CB
Jeff Johnsone7245742012-09-05 17:12:55 -070022353
22354
22355 @param pWDICtx: pointer to the WLAN DAL context
22356 pSession: pointer to the session (if found)
22357
Jeff Johnson295189b2012-06-20 16:38:30 -070022358 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070022359 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070022360*/
22361wpt_uint8
22362WDI_FindEmptySession
Jeff Johnsone7245742012-09-05 17:12:55 -070022363(
Jeff Johnson295189b2012-06-20 16:38:30 -070022364 WDI_ControlBlockType* pWDICtx,
22365 WDI_BSSSessionType** ppSession
22366)
22367{
Jeff Johnsone7245742012-09-05 17:12:55 -070022368 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070022369 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
22370 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022371 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070022372 -------------------------------------------------------------------------*/
22373 if ( NULL == ppSession )
22374 {
22375 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022376 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070022377 return WDI_MAX_BSS_SESSIONS;
Jeff Johnson295189b2012-06-20 16:38:30 -070022378 }
22379
Jeff Johnsone7245742012-09-05 17:12:55 -070022380 *ppSession = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070022381
Jeff Johnsone7245742012-09-05 17:12:55 -070022382 /*------------------------------------------------------------------------
22383 Search for a session that it is not in use
Jeff Johnson295189b2012-06-20 16:38:30 -070022384 ------------------------------------------------------------------------*/
22385 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
22386 {
22387 if ( ! pWDICtx->aBSSSessions[i].bInUse )
22388 {
22389 /*Found a session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022390 *ppSession = &pWDICtx->aBSSSessions[i];
Jeff Johnson295189b2012-06-20 16:38:30 -070022391 return i;
22392 }
22393 }
22394
Jeff Johnsone7245742012-09-05 17:12:55 -070022395 return i;
Jeff Johnson295189b2012-06-20 16:38:30 -070022396}/*WDI_FindEmptySession*/
22397
22398
22399/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022400 @brief Helper routine used to get the total count of active
Jeff Johnson295189b2012-06-20 16:38:30 -070022401 sessions
Jeff Johnsone7245742012-09-05 17:12:55 -070022402
22403
22404 @param pWDICtx: pointer to the WLAN DAL context
Hoonki Lee9af07cf2013-04-24 01:21:58 -070022405 macBSSID: pointer to BSSID. If NULL, get all the session.
22406 If not NULL, count ActiveSession by excluding (TRUE) or including (FALSE) skipBSSID.
22407 skipBSSID: if TRUE, get all the sessions except matching to macBSSID. If FALSE, get all session.
22408 This argument is ignored if macBSSID is NULL.
Jeff Johnson295189b2012-06-20 16:38:30 -070022409 @see
22410 @return Number of sessions in use
22411*/
22412wpt_uint8
22413WDI_GetActiveSessionsCount
Jeff Johnsone7245742012-09-05 17:12:55 -070022414(
Hoonki Lee9af07cf2013-04-24 01:21:58 -070022415 WDI_ControlBlockType* pWDICtx,
22416 wpt_macAddr macBSSID,
22417 wpt_boolean skipBSSID
Jeff Johnson295189b2012-06-20 16:38:30 -070022418)
22419{
Jeff Johnsone7245742012-09-05 17:12:55 -070022420 wpt_uint8 i, ucCount = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070022421 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022422
22423 /*------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -070022424 Count all sessions in use
22425 ------------------------------------------------------------------------*/
22426 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
22427 {
Hoonki Lee9af07cf2013-04-24 01:21:58 -070022428 if ( macBSSID && skipBSSID &&
22429 (eWLAN_PAL_TRUE ==
22430 wpalMemoryCompare(pWDICtx->aBSSSessions[i].macBSSID, macBSSID,
22431 WDI_MAC_ADDR_LEN)))
22432 {
22433 continue;
22434 }
22435 else if ( pWDICtx->aBSSSessions[i].bInUse )
22436 {
Jeff Johnson295189b2012-06-20 16:38:30 -070022437 ucCount++;
Hoonki Lee9af07cf2013-04-24 01:21:58 -070022438 }
Jeff Johnson295189b2012-06-20 16:38:30 -070022439 }
22440
Jeff Johnsone7245742012-09-05 17:12:55 -070022441 return ucCount;
Jeff Johnson295189b2012-06-20 16:38:30 -070022442}/*WDI_GetActiveSessionsCount*/
22443
22444/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022445 @brief Helper routine used to delete session in the WDI
Jeff Johnson295189b2012-06-20 16:38:30 -070022446 CB
Jeff Johnsone7245742012-09-05 17:12:55 -070022447
22448
22449 @param pWDICtx: pointer to the WLAN DAL context
22450 pSession: pointer to the session (if found)
22451
Jeff Johnson295189b2012-06-20 16:38:30 -070022452 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070022453 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070022454*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022455void
Jeff Johnson295189b2012-06-20 16:38:30 -070022456WDI_DeleteSession
Jeff Johnsone7245742012-09-05 17:12:55 -070022457(
Jeff Johnson295189b2012-06-20 16:38:30 -070022458 WDI_ControlBlockType* pWDICtx,
22459 WDI_BSSSessionType* ppSession
22460)
22461{
22462 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022463 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070022464 -------------------------------------------------------------------------*/
22465 if ( NULL == ppSession )
22466 {
22467 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022468 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070022469 return ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022470 }
22471
Jeff Johnsone7245742012-09-05 17:12:55 -070022472 /*------------------------------------------------------------------------
22473 Reset the entries int session
Jeff Johnson295189b2012-06-20 16:38:30 -070022474 ------------------------------------------------------------------------*/
22475 wpal_list_destroy(&ppSession->wptPendingQueue);
22476 wpalMemoryZero(ppSession, sizeof(*ppSession));
Jeff Johnsone7245742012-09-05 17:12:55 -070022477 ppSession->wdiAssocState = WDI_ASSOC_INIT_ST;
22478 ppSession->bInUse = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022479 ppSession->wdiBssType = WDI_INFRASTRUCTURE_MODE;
22480 wpal_list_init(&ppSession->wptPendingQueue);
22481
22482}/*WDI_DeleteSession*/
22483
22484/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022485 @brief Utility function to add the broadcast STA to the the STA table.
Jeff Johnson295189b2012-06-20 16:38:30 -070022486 The bcast STA ID is assigned by HAL and must be valid.
Jeff Johnsone7245742012-09-05 17:12:55 -070022487 @param
22488
Jeff Johnson295189b2012-06-20 16:38:30 -070022489 WDI_AddStaParams: - pointer to the WDI Add STA params
22490 usBcastStaIdx: - Broadcast STA index passed by HAL
Jeff Johnsone7245742012-09-05 17:12:55 -070022491
22492 @see
22493 @return void
Jeff Johnson295189b2012-06-20 16:38:30 -070022494*/
22495void
22496WDI_AddBcastSTAtoSTATable
22497(
22498 WDI_ControlBlockType* pWDICtx,
22499 WDI_AddStaParams * staParams,
22500 wpt_uint16 usBcastStaIdx
22501)
22502{
22503 WDI_AddStaParams wdiAddSTAParam = {0};
22504 wpt_macAddr bcastMacAddr = {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF};
22505 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
22506
22507 /*---------------------------------------------------------------------
22508 Sanity check
22509 ---------------------------------------------------------------------*/
22510 if ( NULL == staParams )
22511 {
22512 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022513 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070022514
Jeff Johnsone7245742012-09-05 17:12:55 -070022515 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070022516 }
22517
22518 wdiAddSTAParam.bcastDpuIndex = staParams->bcastDpuIndex;
22519 wdiAddSTAParam.bcastDpuSignature = staParams->bcastDpuSignature;
22520 wdiAddSTAParam.bcastMgmtDpuIndex = staParams->bcastMgmtDpuIndex;
22521 wdiAddSTAParam.bcastMgmtDpuSignature = staParams->bcastMgmtDpuSignature;
22522 wdiAddSTAParam.dpuIndex = staParams->dpuIndex;
22523 wdiAddSTAParam.dpuSig = staParams->dpuSig;
22524 wpalMemoryCopy( wdiAddSTAParam.macBSSID, staParams->macBSSID,
22525 WDI_MAC_ADDR_LEN );
22526 wpalMemoryCopy( wdiAddSTAParam.staMacAddr, bcastMacAddr, WDI_MAC_ADDR_LEN );
22527 wdiAddSTAParam.ucBSSIdx = staParams->ucBSSIdx;
22528 wdiAddSTAParam.ucHTCapable = staParams->ucHTCapable;
22529 wdiAddSTAParam.ucRmfEnabled = staParams->ucRmfEnabled;
22530 wdiAddSTAParam.ucStaType = WDI_STA_ENTRY_BCAST;
22531 wdiAddSTAParam.ucWmmEnabled = staParams->ucWmmEnabled;
22532 wdiAddSTAParam.ucSTAIdx = usBcastStaIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070022533
Jeff Johnson295189b2012-06-20 16:38:30 -070022534 (void)WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
22535}
22536
22537/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022538 @brief NV blob will be divided into fragments of size 4kb and
22539 Sent to HAL
22540
22541 @param pWDICtx: pointer to the WLAN DAL context
22542 pEventData: pointer to the event information structure
22543
Jeff Johnson295189b2012-06-20 16:38:30 -070022544 @see
22545 @return Result of the function call
22546 */
22547
22548WDI_Status WDI_SendNvBlobReq
Jeff Johnsone7245742012-09-05 17:12:55 -070022549(
Jeff Johnson295189b2012-06-20 16:38:30 -070022550 WDI_ControlBlockType* pWDICtx,
22551 WDI_EventInfoType* pEventData
22552)
22553{
22554
22555 tHalNvImgDownloadReqMsg halNvImgDownloadParam;
22556 wpt_uint8* pSendBuffer = NULL;
22557 wpt_uint16 usDataOffset = 0;
22558 wpt_uint16 usSendSize = 0;
22559 wpt_uint16 usCurrentFragmentSize =0;
22560 wpt_uint8* pSrcBuffer = NULL;
22561 WDI_NvDownloadReqParamsType* pwdiNvDownloadReqParams =NULL ;
22562 WDI_NvDownloadRspCb wdiNvDownloadRspCb;
22563
22564 wdiNvDownloadRspCb = (WDI_NvDownloadRspCb)pEventData->pCBfnc;
22565 WDI_ASSERT(NULL != wdiNvDownloadRspCb);
22566 pwdiNvDownloadReqParams = (WDI_NvDownloadReqParamsType*)pEventData->pEventData;
22567
Jeff Johnsone7245742012-09-05 17:12:55 -070022568 /* Sanity Check is done by the caller */
Jeff Johnson295189b2012-06-20 16:38:30 -070022569 pSrcBuffer =(wpt_uint8 *) pwdiNvDownloadReqParams->wdiBlobInfo.pBlobAddress;
22570
22571 /* Update the current Fragment Number */
22572 pWDICtx->wdiNvBlobInfo.usCurrentFragment += 1;
22573
22574 /*Update the HAL REQ structure */
22575 /*HAL maintaining the fragment count as 0,1,2...n where at WDI it is represented as 1,2,3.. n*/
22576 halNvImgDownloadParam.nvImageReqParams.fragNumber =
22577 pWDICtx->wdiNvBlobInfo.usCurrentFragment-1;
22578
22579 /* Divide the NV Image to size of 'FRAGMENT_SIZE' fragments and send it to HAL.
Jeff Johnsone7245742012-09-05 17:12:55 -070022580 If the size of the Image is less than 'FRAGMENT_SIZE' then in one iteration total
Jeff Johnson295189b2012-06-20 16:38:30 -070022581 image will be sent to HAL*/
22582
Jeff Johnsone7245742012-09-05 17:12:55 -070022583 if(pWDICtx->wdiNvBlobInfo.usTotalFragment
Jeff Johnson295189b2012-06-20 16:38:30 -070022584 == pWDICtx->wdiNvBlobInfo.usCurrentFragment)
Jeff Johnsone7245742012-09-05 17:12:55 -070022585 {
Jeff Johnson295189b2012-06-20 16:38:30 -070022586 /* Taking care of boundry condition */
Jeff Johnsone7245742012-09-05 17:12:55 -070022587 if( !(usCurrentFragmentSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070022588 pwdiNvDownloadReqParams->wdiBlobInfo.uBlobSize%FRAGMENT_SIZE ))
22589 usCurrentFragmentSize = FRAGMENT_SIZE;
22590
22591 /*Update the HAL REQ structure */
22592 halNvImgDownloadParam.nvImageReqParams.isLastFragment = 1;
22593 halNvImgDownloadParam.nvImageReqParams.nvImgBufferSize= usCurrentFragmentSize;
22594
22595 }
22596 else
Jeff Johnsone7245742012-09-05 17:12:55 -070022597 {
Jeff Johnson295189b2012-06-20 16:38:30 -070022598 usCurrentFragmentSize = FRAGMENT_SIZE;
22599
22600 /*Update the HAL REQ structure */
22601 halNvImgDownloadParam.nvImageReqParams.isLastFragment =0;
22602 halNvImgDownloadParam.nvImageReqParams.nvImgBufferSize = usCurrentFragmentSize;
22603 }
22604
22605 /*-----------------------------------------------------------------------
22606 Get message buffer
22607 -----------------------------------------------------------------------*/
22608 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,WDI_NV_DOWNLOAD_REQ,
22609 sizeof(halNvImgDownloadParam.nvImageReqParams)+ usCurrentFragmentSize,
22610 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070022611 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070022612 (usDataOffset + sizeof(halNvImgDownloadParam.nvImageReqParams) + usCurrentFragmentSize )))
22613 {
22614 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080022615 "Unable to get send buffer in NV Download req %p %p ",
Jeff Johnson295189b2012-06-20 16:38:30 -070022616 pEventData, pwdiNvDownloadReqParams);
22617 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070022618 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022619 }
22620
22621 /* Copying the Hal NV download REQ structure */
Jeff Johnsone7245742012-09-05 17:12:55 -070022622 wpalMemoryCopy(pSendBuffer + usDataOffset ,
Jeff Johnson295189b2012-06-20 16:38:30 -070022623 &halNvImgDownloadParam.nvImageReqParams ,sizeof(tHalNvImgDownloadReqParams));
22624
22625 /* Appending the NV image fragment */
22626 wpalMemoryCopy(pSendBuffer + usDataOffset + sizeof(tHalNvImgDownloadReqParams),
22627 (void *)(pSrcBuffer + halNvImgDownloadParam.nvImageReqParams.fragNumber * FRAGMENT_SIZE),
22628 usCurrentFragmentSize);
22629
22630 pWDICtx->wdiReqStatusCB = pwdiNvDownloadReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070022631 pWDICtx->pReqStatusUserData = pwdiNvDownloadReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070022632
Jeff Johnsone7245742012-09-05 17:12:55 -070022633 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
22634 wdiNvDownloadRspCb, pEventData->pUserData,
Jeff Johnson295189b2012-06-20 16:38:30 -070022635 WDI_NV_DOWNLOAD_RESP);
22636
22637}
Jeff Johnsone7245742012-09-05 17:12:55 -070022638/*============================================================================
22639 Helper inline functions for
Jeff Johnson295189b2012-06-20 16:38:30 -070022640 ============================================================================*/
22641/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022642 @brief Helper routine used to find a session based on the BSSID
22643 @param pContext: pointer to the WLAN DAL context
22644 @param pDPContext: pointer to the Datapath context
22645
Jeff Johnson295189b2012-06-20 16:38:30 -070022646 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070022647 @return
Jeff Johnson295189b2012-06-20 16:38:30 -070022648*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022649WPT_INLINE void
Jeff Johnson295189b2012-06-20 16:38:30 -070022650WDI_DS_AssignDatapathContext (void *pContext, void *pDPContext)
22651{
22652 WDI_ControlBlockType *pCB = (WDI_ControlBlockType *)pContext;
22653
22654 pCB->pDPContext = pDPContext;
22655 return;
22656}
22657
22658/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022659 @brief Helper routine used to find a session based on the BSSID
22660
22661
22662 @param pContext: pointer to the WLAN DAL context
22663
Jeff Johnson295189b2012-06-20 16:38:30 -070022664 @see
22665 @return pointer to Datapath context
22666*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022667WPT_INLINE void *
Jeff Johnson295189b2012-06-20 16:38:30 -070022668WDI_DS_GetDatapathContext (void *pContext)
22669{
22670 WDI_ControlBlockType *pCB = (WDI_ControlBlockType *)pContext;
22671 return pCB->pDPContext;
22672}
22673/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022674 @brief Helper routine used to find a session based on the BSSID
22675
22676
22677 @param pContext: pointer to the WLAN DAL context
22678 @param pDTDriverContext: pointer to the Transport Driver context
22679
Jeff Johnson295189b2012-06-20 16:38:30 -070022680 @see
22681 @return void
22682*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022683WPT_INLINE void
Jeff Johnson295189b2012-06-20 16:38:30 -070022684WDT_AssignTransportDriverContext (void *pContext, void *pDTDriverContext)
22685{
22686 WDI_ControlBlockType *pCB = (WDI_ControlBlockType *)pContext;
22687
22688 pCB->pDTDriverContext = pDTDriverContext;
Jeff Johnsone7245742012-09-05 17:12:55 -070022689 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070022690}
22691
22692/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022693 @brief Helper routine used to find a session based on the BSSID
22694
22695
22696 @param pWDICtx: pointer to the WLAN DAL context
22697
Jeff Johnson295189b2012-06-20 16:38:30 -070022698 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070022699 @return pointer to datapath context
Jeff Johnson295189b2012-06-20 16:38:30 -070022700*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022701WPT_INLINE void *
Jeff Johnson295189b2012-06-20 16:38:30 -070022702WDT_GetTransportDriverContext (void *pContext)
22703{
22704 WDI_ControlBlockType *pCB = (WDI_ControlBlockType *)pContext;
Jeff Johnsone7245742012-09-05 17:12:55 -070022705 return(pCB->pDTDriverContext);
Jeff Johnson295189b2012-06-20 16:38:30 -070022706}
22707
Jeff Johnsone7245742012-09-05 17:12:55 -070022708/*============================================================================
Jeff Johnson295189b2012-06-20 16:38:30 -070022709 Helper inline converters
22710 ============================================================================*/
22711/*Convert WDI driver type into HAL driver type*/
22712WPT_STATIC WPT_INLINE WDI_Status
22713WDI_HAL_2_WDI_STATUS
22714(
22715 eHalStatus halStatus
22716)
22717{
Jeff Johnsone7245742012-09-05 17:12:55 -070022718 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070022719 the chances of getting inlined*/
22720 switch( halStatus )
22721 {
22722 case eHAL_STATUS_SUCCESS:
22723 case eHAL_STATUS_ADD_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO:
22724 case eHAL_STATUS_DEL_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO:
22725 return WDI_STATUS_SUCCESS;
22726 case eHAL_STATUS_FAILURE:
22727 return WDI_STATUS_E_FAILURE;
22728 case eHAL_STATUS_FAILED_ALLOC:
Jeff Johnsone7245742012-09-05 17:12:55 -070022729 return WDI_STATUS_MEM_FAILURE;
22730 /*The rest of the HAL error codes must be kept hidden from the UMAC as
Jeff Johnson295189b2012-06-20 16:38:30 -070022731 they refer to specific internal modules of our device*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022732 default:
22733 return WDI_STATUS_DEV_INTERNAL_FAILURE;
22734 }
Jeff Johnson295189b2012-06-20 16:38:30 -070022735
Jeff Johnsone7245742012-09-05 17:12:55 -070022736 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022737}/*WDI_HAL_2_WDI_STATUS*/
22738
22739/*Convert WDI request type into HAL request type*/
22740WPT_STATIC WPT_INLINE tHalHostMsgType
22741WDI_2_HAL_REQ_TYPE
22742(
22743 WDI_RequestEnumType wdiReqType
22744)
22745{
Jeff Johnsone7245742012-09-05 17:12:55 -070022746 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070022747 the chances of getting inlined*/
22748 switch( wdiReqType )
Jeff Johnsone7245742012-09-05 17:12:55 -070022749 {
Jeff Johnson295189b2012-06-20 16:38:30 -070022750 case WDI_START_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022751 return WLAN_HAL_START_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022752 case WDI_STOP_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022753 return WLAN_HAL_STOP_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022754 case WDI_INIT_SCAN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022755 return WLAN_HAL_INIT_SCAN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022756 case WDI_START_SCAN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022757 return WLAN_HAL_START_SCAN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022758 case WDI_END_SCAN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022759 return WLAN_HAL_END_SCAN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022760 case WDI_FINISH_SCAN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022761 return WLAN_HAL_FINISH_SCAN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022762 case WDI_JOIN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022763 return WLAN_HAL_JOIN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022764 case WDI_CONFIG_BSS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022765 return WLAN_HAL_CONFIG_BSS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022766 case WDI_DEL_BSS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022767 return WLAN_HAL_DELETE_BSS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022768 case WDI_POST_ASSOC_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022769 return WLAN_HAL_POST_ASSOC_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022770 case WDI_DEL_STA_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022771 return WLAN_HAL_DELETE_STA_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022772 case WDI_SET_BSS_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022773 return WLAN_HAL_SET_BSSKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022774 case WDI_RMV_BSS_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022775 return WLAN_HAL_RMV_BSSKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022776 case WDI_SET_STA_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022777 return WLAN_HAL_SET_STAKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022778 case WDI_RMV_STA_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022779 return WLAN_HAL_RMV_STAKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022780 case WDI_SET_STA_BCAST_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022781 return WLAN_HAL_SET_BCASTKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022782 case WDI_RMV_STA_BCAST_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022783 //Some conflict in the old code - check this: return WLAN_HAL_RMV_BCASTKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022784 return WLAN_HAL_RMV_STAKEY_REQ;
22785 case WDI_ADD_TS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022786 return WLAN_HAL_ADD_TS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022787 case WDI_DEL_TS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022788 return WLAN_HAL_DEL_TS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022789 case WDI_UPD_EDCA_PRMS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022790 return WLAN_HAL_UPD_EDCA_PARAMS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022791 case WDI_ADD_BA_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022792 return WLAN_HAL_ADD_BA_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022793 case WDI_DEL_BA_REQ:
22794 return WLAN_HAL_DEL_BA_REQ;
22795#ifdef FEATURE_WLAN_CCX
22796 case WDI_TSM_STATS_REQ:
22797 return WLAN_HAL_TSM_STATS_REQ;
22798#endif
22799 case WDI_CH_SWITCH_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022800 return WLAN_HAL_CH_SWITCH_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022801 case WDI_CONFIG_STA_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022802 return WLAN_HAL_CONFIG_STA_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022803 case WDI_SET_LINK_ST_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022804 return WLAN_HAL_SET_LINK_ST_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022805 case WDI_GET_STATS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022806 return WLAN_HAL_GET_STATS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022807 case WDI_UPDATE_CFG_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022808 return WLAN_HAL_UPDATE_CFG_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022809 case WDI_ADD_BA_SESSION_REQ:
22810 return WLAN_HAL_ADD_BA_SESSION_REQ;
22811 case WDI_TRIGGER_BA_REQ:
22812 return WLAN_HAL_TRIGGER_BA_REQ;
22813 case WDI_UPD_BCON_PRMS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022814 return WLAN_HAL_UPDATE_BEACON_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022815 case WDI_SND_BCON_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022816 return WLAN_HAL_SEND_BEACON_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022817 case WDI_UPD_PROBE_RSP_TEMPLATE_REQ:
22818 return WLAN_HAL_UPDATE_PROBE_RSP_TEMPLATE_REQ;
22819 case WDI_SET_MAX_TX_POWER_REQ:
22820 return WLAN_HAL_SET_MAX_TX_POWER_REQ;
Arif Hussaina5ebce02013-08-09 15:09:58 -070022821 case WDI_SET_MAX_TX_POWER_PER_BAND_REQ:
22822 return WLAN_HAL_SET_MAX_TX_POWER_PER_BAND_REQ;
schang86c22c42013-03-13 18:41:24 -070022823 case WDI_SET_TX_POWER_REQ:
22824 return WLAN_HAL_SET_TX_POWER_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022825 case WDI_P2P_GO_NOTICE_OF_ABSENCE_REQ:
22826 return WLAN_HAL_SET_P2P_GONOA_REQ;
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053022827#ifdef FEATURE_WLAN_TDLS
22828 case WDI_TDLS_LINK_ESTABLISH_REQ:
22829 return WLAN_HAL_TDLS_LINK_ESTABLISHED_REQ;
22830#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070022831 case WDI_ENTER_IMPS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022832 return WLAN_HAL_ENTER_IMPS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022833 case WDI_EXIT_IMPS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022834 return WLAN_HAL_EXIT_IMPS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022835 case WDI_ENTER_BMPS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022836 return WLAN_HAL_ENTER_BMPS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022837 case WDI_EXIT_BMPS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022838 return WLAN_HAL_EXIT_BMPS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022839 case WDI_ENTER_UAPSD_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022840 return WLAN_HAL_ENTER_UAPSD_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022841 case WDI_EXIT_UAPSD_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022842 return WLAN_HAL_EXIT_UAPSD_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022843 case WDI_SET_UAPSD_PARAM_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022844 return WLAN_HAL_SET_UAPSD_AC_PARAMS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022845 case WDI_UPDATE_UAPSD_PARAM_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022846 return WLAN_HAL_UPDATE_UAPSD_PARAM_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022847 case WDI_CONFIGURE_RXP_FILTER_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022848 return WLAN_HAL_CONFIGURE_RXP_FILTER_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022849 case WDI_SET_BEACON_FILTER_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022850 return WLAN_HAL_ADD_BCN_FILTER_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022851 case WDI_REM_BEACON_FILTER_REQ:
22852 return WLAN_HAL_REM_BCN_FILTER_REQ;
22853 case WDI_SET_RSSI_THRESHOLDS_REQ:
22854 return WLAN_HAL_SET_RSSI_THRESH_REQ;
22855 case WDI_HOST_OFFLOAD_REQ:
22856 return WLAN_HAL_HOST_OFFLOAD_REQ;
22857 case WDI_WOWL_ADD_BC_PTRN_REQ:
22858 return WLAN_HAL_ADD_WOWL_BCAST_PTRN;
22859 case WDI_WOWL_DEL_BC_PTRN_REQ:
22860 return WLAN_HAL_DEL_WOWL_BCAST_PTRN;
22861 case WDI_WOWL_ENTER_REQ:
22862 return WLAN_HAL_ENTER_WOWL_REQ;
22863 case WDI_WOWL_EXIT_REQ:
22864 return WLAN_HAL_EXIT_WOWL_REQ;
22865 case WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ:
22866 return WLAN_HAL_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ;
22867 case WDI_NV_DOWNLOAD_REQ:
22868 return WLAN_HAL_DOWNLOAD_NV_REQ;
22869 case WDI_FLUSH_AC_REQ:
22870 return WLAN_HAL_TL_HAL_FLUSH_AC_REQ;
22871 case WDI_BTAMP_EVENT_REQ:
22872 return WLAN_HAL_SIGNAL_BTAMP_EVENT_REQ;
22873#ifdef WLAN_FEATURE_VOWIFI_11R
22874 case WDI_AGGR_ADD_TS_REQ:
22875 return WLAN_HAL_AGGR_ADD_TS_REQ;
22876#endif /* WLAN_FEATURE_VOWIFI_11R */
Jeff Johnson295189b2012-06-20 16:38:30 -070022877 case WDI_FTM_CMD_REQ:
22878 return WLAN_HAL_PROCESS_PTT_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022879 case WDI_ADD_STA_SELF_REQ:
22880 return WLAN_HAL_ADD_STA_SELF_REQ;
22881 case WDI_DEL_STA_SELF_REQ:
22882 return WLAN_HAL_DEL_STA_SELF_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070022883#ifdef FEATURE_OEM_DATA_SUPPORT
22884 case WDI_START_OEM_DATA_REQ:
22885 return WLAN_HAL_START_OEM_DATA_REQ;
22886#endif /* FEATURE_OEM_DATA_SUPPORT */
Jeff Johnson295189b2012-06-20 16:38:30 -070022887 case WDI_HOST_RESUME_REQ:
22888 return WLAN_HAL_HOST_RESUME_REQ;
22889 case WDI_HOST_SUSPEND_IND:
22890 return WLAN_HAL_HOST_SUSPEND_IND;
Madan Mohan Koyyalamudi01cba042013-01-10 21:56:05 -080022891 case WDI_TRAFFIC_STATS_IND:
22892 return WLAN_HAL_CLASS_B_STATS_IND;
Chet Lanctot186b5732013-03-18 10:26:30 -070022893#ifdef WLAN_FEATURE_11W
22894 case WDI_EXCLUDE_UNENCRYPTED_IND:
22895 return WLAN_HAL_EXCLUDE_UNENCRYPTED_IND;
22896#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070022897 case WDI_KEEP_ALIVE_REQ:
22898 return WLAN_HAL_KEEP_ALIVE_REQ;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070022899#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070022900 case WDI_ROAM_SCAN_OFFLOAD_REQ:
22901 return WLAN_ROAM_SCAN_OFFLOAD_REQ;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070022902#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070022903#ifdef FEATURE_WLAN_SCAN_PNO
22904 case WDI_SET_PREF_NETWORK_REQ:
22905 return WLAN_HAL_SET_PREF_NETWORK_REQ;
22906 case WDI_SET_RSSI_FILTER_REQ:
22907 return WLAN_HAL_SET_RSSI_FILTER_REQ;
22908 case WDI_UPDATE_SCAN_PARAMS_REQ:
22909 return WLAN_HAL_UPDATE_SCAN_PARAM_REQ;
22910#endif // FEATURE_WLAN_SCAN_PNO
22911 case WDI_SET_TX_PER_TRACKING_REQ:
22912 return WLAN_HAL_SET_TX_PER_TRACKING_REQ;
22913#ifdef WLAN_FEATURE_PACKET_FILTERING
22914 case WDI_8023_MULTICAST_LIST_REQ:
22915 return WLAN_HAL_8023_MULTICAST_LIST_REQ;
22916 case WDI_RECEIVE_FILTER_SET_FILTER_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022917 return WLAN_HAL_SET_PACKET_FILTER_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022918 case WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ:
22919 return WLAN_HAL_PACKET_FILTER_MATCH_COUNT_REQ;
22920 case WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ:
22921 return WLAN_HAL_CLEAR_PACKET_FILTER_REQ;
22922#endif // WLAN_FEATURE_PACKET_FILTERING
22923 case WDI_HAL_DUMP_CMD_REQ:
22924 return WLAN_HAL_DUMP_COMMAND_REQ;
22925#ifdef WLAN_FEATURE_GTK_OFFLOAD
22926 case WDI_GTK_OFFLOAD_REQ:
22927 return WLAN_HAL_GTK_OFFLOAD_REQ;
22928 case WDI_GTK_OFFLOAD_GETINFO_REQ:
22929 return WLAN_HAL_GTK_OFFLOAD_GETINFO_REQ;
22930#endif /* WLAN_FEATURE_GTK_OFFLOAD */
22931
22932 case WDI_INIT_SCAN_CON_REQ:
22933 return WLAN_HAL_INIT_SCAN_CON_REQ;
22934 case WDI_SET_POWER_PARAMS_REQ:
22935 return WLAN_HAL_SET_POWER_PARAMS_REQ;
22936 case WDI_SET_TM_LEVEL_REQ:
22937 return WLAN_HAL_SET_THERMAL_MITIGATION_REQ;
22938 case WDI_FEATURE_CAPS_EXCHANGE_REQ:
22939 return WLAN_HAL_FEATURE_CAPS_EXCHANGE_REQ;
Mohit Khanna4a70d262012-09-11 16:30:12 -070022940#ifdef WLAN_FEATURE_11AC
22941 case WDI_UPDATE_VHT_OP_MODE_REQ:
22942 return WLAN_HAL_UPDATE_VHT_OP_MODE_REQ;
22943#endif
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -080022944 case WDI_GET_ROAM_RSSI_REQ:
22945 return WLAN_HAL_GET_ROAM_RSSI_REQ;
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +053022946 case WDI_DHCP_START_IND:
22947 return WLAN_HAL_DHCP_START_IND;
22948 case WDI_DHCP_STOP_IND:
22949 return WLAN_HAL_DHCP_STOP_IND;
Leo Chang9056f462013-08-01 19:21:11 -070022950#ifdef FEATURE_WLAN_LPHB
22951 case WDI_LPHB_CFG_REQ:
22952 return WLAN_HAL_LPHB_CFG_REQ;
22953#endif /* FEATURE_WLAN_LPHB */
Yue Mab9c86f42013-08-14 15:59:08 -070022954 case WDI_ADD_PERIODIC_TX_PATTERN_IND:
22955 return WLAN_HAL_ADD_PERIODIC_TX_PTRN_IND;
22956 case WDI_DEL_PERIODIC_TX_PATTERN_IND:
22957 return WLAN_HAL_DEL_PERIODIC_TX_PTRN_IND;
22958
Rajeev79dbe4c2013-10-05 11:03:42 +053022959#ifdef FEATURE_WLAN_BATCH_SCAN
22960 case WDI_SET_BATCH_SCAN_REQ:
22961 return WLAN_HAL_BATCHSCAN_SET_REQ;
22962 case WDI_STOP_BATCH_SCAN_IND:
22963 return WLAN_HAL_BATCHSCAN_STOP_IND;
22964 case WDI_TRIGGER_BATCH_SCAN_RESULT_IND:
22965 return WLAN_HAL_BATCHSCAN_TRIGGER_RESULT_IND;
22966#endif
Chittajit Mitraf5413a42013-10-18 14:20:08 -070022967 case WDI_RATE_UPDATE_IND:
22968 return WLAN_HAL_RATE_UPDATE_IND;
Rajeev79dbe4c2013-10-05 11:03:42 +053022969
Jeff Johnson295189b2012-06-20 16:38:30 -070022970 default:
Jeff Johnsone7245742012-09-05 17:12:55 -070022971 return WLAN_HAL_MSG_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070022972 }
Jeff Johnsone7245742012-09-05 17:12:55 -070022973
Jeff Johnson295189b2012-06-20 16:38:30 -070022974}/*WDI_2_HAL_REQ_TYPE*/
22975
22976/*Convert WDI response type into HAL response type*/
22977WPT_STATIC WPT_INLINE WDI_ResponseEnumType
22978HAL_2_WDI_RSP_TYPE
22979(
22980 tHalHostMsgType halMsg
22981)
22982{
Jeff Johnsone7245742012-09-05 17:12:55 -070022983 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070022984 the chances of getting inlined*/
22985 switch( halMsg )
22986 {
22987 case WLAN_HAL_START_RSP:
22988 return WDI_START_RESP;
22989 case WLAN_HAL_STOP_RSP:
22990 return WDI_STOP_RESP;
22991 case WLAN_HAL_INIT_SCAN_RSP:
22992 return WDI_INIT_SCAN_RESP;
22993 case WLAN_HAL_START_SCAN_RSP:
22994 return WDI_START_SCAN_RESP;
22995 case WLAN_HAL_END_SCAN_RSP:
22996 return WDI_END_SCAN_RESP;
22997 case WLAN_HAL_FINISH_SCAN_RSP:
22998 return WDI_FINISH_SCAN_RESP;
22999 case WLAN_HAL_CONFIG_STA_RSP:
23000 return WDI_CONFIG_STA_RESP;
23001 case WLAN_HAL_DELETE_STA_RSP:
23002 return WDI_DEL_STA_RESP;
23003 case WLAN_HAL_CONFIG_BSS_RSP:
23004 return WDI_CONFIG_BSS_RESP;
23005 case WLAN_HAL_DELETE_BSS_RSP:
23006 return WDI_DEL_BSS_RESP;
23007 case WLAN_HAL_JOIN_RSP:
23008 return WDI_JOIN_RESP;
23009 case WLAN_HAL_POST_ASSOC_RSP:
23010 return WDI_POST_ASSOC_RESP;
23011 case WLAN_HAL_SET_BSSKEY_RSP:
23012 return WDI_SET_BSS_KEY_RESP;
23013 case WLAN_HAL_SET_STAKEY_RSP:
23014 return WDI_SET_STA_KEY_RESP;
23015 case WLAN_HAL_RMV_BSSKEY_RSP:
23016 return WDI_RMV_BSS_KEY_RESP;
23017 case WLAN_HAL_RMV_STAKEY_RSP:
23018 return WDI_RMV_STA_KEY_RESP;
23019 case WLAN_HAL_SET_BCASTKEY_RSP:
23020 return WDI_SET_STA_BCAST_KEY_RESP;
23021 //Some conflict in the old code - check this: case WLAN_HAL_RMV_BCASTKEY_RSP:
23022 // return WDI_RMV_STA_BCAST_KEY_RESP;
23023 case WLAN_HAL_ADD_TS_RSP:
23024 return WDI_ADD_TS_RESP;
23025 case WLAN_HAL_DEL_TS_RSP:
23026 return WDI_DEL_TS_RESP;
23027 case WLAN_HAL_UPD_EDCA_PARAMS_RSP:
23028 return WDI_UPD_EDCA_PRMS_RESP;
23029 case WLAN_HAL_ADD_BA_RSP:
23030 return WDI_ADD_BA_RESP;
23031 case WLAN_HAL_DEL_BA_RSP:
23032 return WDI_DEL_BA_RESP;
23033#ifdef FEATURE_WLAN_CCX
23034 case WLAN_HAL_TSM_STATS_RSP:
23035 return WDI_TSM_STATS_RESP;
23036#endif
23037 case WLAN_HAL_CH_SWITCH_RSP:
23038 return WDI_CH_SWITCH_RESP;
23039 case WLAN_HAL_SET_LINK_ST_RSP:
23040 return WDI_SET_LINK_ST_RESP;
23041 case WLAN_HAL_GET_STATS_RSP:
23042 return WDI_GET_STATS_RESP;
23043 case WLAN_HAL_UPDATE_CFG_RSP:
23044 return WDI_UPDATE_CFG_RESP;
23045 case WLAN_HAL_ADD_BA_SESSION_RSP:
23046 return WDI_ADD_BA_SESSION_RESP;
23047 case WLAN_HAL_TRIGGER_BA_RSP:
23048 return WDI_TRIGGER_BA_RESP;
23049 case WLAN_HAL_UPDATE_BEACON_RSP:
23050 return WDI_UPD_BCON_PRMS_RESP;
23051 case WLAN_HAL_SEND_BEACON_RSP:
23052 return WDI_SND_BCON_RESP;
23053 case WLAN_HAL_UPDATE_PROBE_RSP_TEMPLATE_RSP:
23054 return WDI_UPD_PROBE_RSP_TEMPLATE_RESP;
23055 /*Indications*/
23056 case WLAN_HAL_RSSI_NOTIFICATION_IND:
23057 return WDI_HAL_RSSI_NOTIFICATION_IND;
23058 case WLAN_HAL_MISSED_BEACON_IND:
23059 return WDI_HAL_MISSED_BEACON_IND;
23060 case WLAN_HAL_UNKNOWN_ADDR2_FRAME_RX_IND:
23061 return WDI_HAL_UNKNOWN_ADDR2_FRAME_RX_IND;
23062 case WLAN_HAL_MIC_FAILURE_IND:
23063 return WDI_HAL_MIC_FAILURE_IND;
23064 case WLAN_HAL_FATAL_ERROR_IND:
23065 return WDI_HAL_FATAL_ERROR_IND;
23066 case WLAN_HAL_DELETE_STA_CONTEXT_IND:
23067 return WDI_HAL_DEL_STA_IND;
23068 case WLAN_HAL_COEX_IND:
23069 return WDI_HAL_COEX_IND;
23070 case WLAN_HAL_OTA_TX_COMPL_IND:
23071 return WDI_HAL_TX_COMPLETE_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070023072 case WLAN_HAL_P2P_NOA_ATTR_IND:
23073 return WDI_HAL_P2P_NOA_ATTR_IND;
Viral Modid86bde22012-12-10 13:09:21 -080023074 case WLAN_HAL_P2P_NOA_START_IND:
23075 return WDI_HAL_P2P_NOA_START_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070023076 case WLAN_HAL_TX_PER_HIT_IND:
23077 return WDI_HAL_TX_PER_HIT_IND;
23078 case WLAN_HAL_SET_MAX_TX_POWER_RSP:
23079 return WDI_SET_MAX_TX_POWER_RESP;
Arif Hussaina5ebce02013-08-09 15:09:58 -070023080 case WLAN_HAL_SET_MAX_TX_POWER_PER_BAND_RSP:
23081 return WDI_SET_MAX_TX_POWER_PER_BAND_RSP;
schang86c22c42013-03-13 18:41:24 -070023082 case WLAN_HAL_SET_TX_POWER_RSP:
23083 return WDI_SET_TX_POWER_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070023084 case WLAN_HAL_SET_P2P_GONOA_RSP:
23085 return WDI_P2P_GO_NOTICE_OF_ABSENCE_RESP;
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053023086#ifdef FEATURE_WLAN_TDLS
23087 case WLAN_HAL_TDLS_LINK_ESTABLISHED_RSP:
23088 return WDI_TDLS_LINK_ESTABLISH_REQ_RESP;
23089 case WLAN_HAL_TDLS_IND:
23090 return WDI_HAL_TDLS_IND;
23091#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070023092 case WLAN_HAL_ENTER_IMPS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070023093 return WDI_ENTER_IMPS_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070023094 case WLAN_HAL_EXIT_IMPS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070023095 return WDI_EXIT_IMPS_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070023096 case WLAN_HAL_ENTER_BMPS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070023097 return WDI_ENTER_BMPS_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070023098 case WLAN_HAL_EXIT_BMPS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070023099 return WDI_EXIT_BMPS_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070023100 case WLAN_HAL_ENTER_UAPSD_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070023101 return WDI_ENTER_UAPSD_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070023102 case WLAN_HAL_EXIT_UAPSD_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070023103 return WDI_EXIT_UAPSD_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070023104 case WLAN_HAL_SET_UAPSD_AC_PARAMS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070023105 return WDI_SET_UAPSD_PARAM_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070023106 case WLAN_HAL_UPDATE_UAPSD_PARAM_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070023107 return WDI_UPDATE_UAPSD_PARAM_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070023108 case WLAN_HAL_CONFIGURE_RXP_FILTER_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070023109 return WDI_CONFIGURE_RXP_FILTER_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070023110 case WLAN_HAL_ADD_BCN_FILTER_RSP:
23111 return WDI_SET_BEACON_FILTER_RESP;
23112 case WLAN_HAL_REM_BCN_FILTER_RSP:
23113 return WDI_REM_BEACON_FILTER_RESP;
23114 case WLAN_HAL_SET_RSSI_THRESH_RSP:
23115 return WDI_SET_RSSI_THRESHOLDS_RESP;
23116 case WLAN_HAL_HOST_OFFLOAD_RSP:
23117 return WDI_HOST_OFFLOAD_RESP;
23118 case WLAN_HAL_ADD_WOWL_BCAST_PTRN_RSP:
23119 return WDI_WOWL_ADD_BC_PTRN_RESP;
23120 case WLAN_HAL_DEL_WOWL_BCAST_PTRN_RSP:
23121 return WDI_WOWL_DEL_BC_PTRN_RESP;
23122 case WLAN_HAL_ENTER_WOWL_RSP:
23123 return WDI_WOWL_ENTER_RESP;
23124 case WLAN_HAL_EXIT_WOWL_RSP:
23125 return WDI_WOWL_EXIT_RESP;
23126 case WLAN_HAL_CONFIGURE_APPS_CPU_WAKEUP_STATE_RSP:
23127 return WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_RESP;
23128 case WLAN_HAL_DOWNLOAD_NV_RSP:
23129 return WDI_NV_DOWNLOAD_RESP;
23130 case WLAN_HAL_TL_HAL_FLUSH_AC_RSP:
23131 return WDI_FLUSH_AC_RESP;
23132 case WLAN_HAL_SIGNAL_BTAMP_EVENT_RSP:
23133 return WDI_BTAMP_EVENT_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070023134 case WLAN_HAL_PROCESS_PTT_RSP:
23135 return WDI_FTM_CMD_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070023136 case WLAN_HAL_ADD_STA_SELF_RSP:
23137 return WDI_ADD_STA_SELF_RESP;
23138case WLAN_HAL_DEL_STA_SELF_RSP:
23139 return WDI_DEL_STA_SELF_RESP;
Jeff Johnsone7245742012-09-05 17:12:55 -070023140#ifdef FEATURE_OEM_DATA_SUPPORT
23141 case WLAN_HAL_START_OEM_DATA_RSP:
23142 return WDI_START_OEM_DATA_RESP;
23143#endif /* FEATURE_OEM_DATA_SUPPORT */
Jeff Johnson295189b2012-06-20 16:38:30 -070023144 case WLAN_HAL_HOST_RESUME_RSP:
23145 return WDI_HOST_RESUME_RESP;
23146 case WLAN_HAL_KEEP_ALIVE_RSP:
23147 return WDI_KEEP_ALIVE_RESP;
23148#ifdef FEATURE_WLAN_SCAN_PNO
23149 case WLAN_HAL_SET_PREF_NETWORK_RSP:
23150 return WDI_SET_PREF_NETWORK_RESP;
23151 case WLAN_HAL_SET_RSSI_FILTER_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070023152 return WDI_SET_RSSI_FILTER_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070023153 case WLAN_HAL_UPDATE_SCAN_PARAM_RSP:
23154 return WDI_UPDATE_SCAN_PARAMS_RESP;
23155 case WLAN_HAL_PREF_NETW_FOUND_IND:
23156 return WDI_HAL_PREF_NETWORK_FOUND_IND;
23157#endif // FEATURE_WLAN_SCAN_PNO
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070023158#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070023159 case WLAN_ROAM_SCAN_OFFLOAD_RSP:
23160 return WDI_ROAM_SCAN_OFFLOAD_RESP;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070023161#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070023162 case WLAN_HAL_SET_TX_PER_TRACKING_RSP:
23163 return WDI_SET_TX_PER_TRACKING_RESP;
23164#ifdef WLAN_FEATURE_PACKET_FILTERING
23165 case WLAN_HAL_8023_MULTICAST_LIST_RSP:
23166 return WDI_8023_MULTICAST_LIST_RESP;
23167 case WLAN_HAL_SET_PACKET_FILTER_RSP:
23168 return WDI_RECEIVE_FILTER_SET_FILTER_RESP;
23169 case WLAN_HAL_PACKET_FILTER_MATCH_COUNT_RSP:
23170 return WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_RESP;
23171 case WLAN_HAL_CLEAR_PACKET_FILTER_RSP:
23172 return WDI_RECEIVE_FILTER_CLEAR_FILTER_RESP;
23173#endif // WLAN_FEATURE_PACKET_FILTERING
23174
23175 case WLAN_HAL_DUMP_COMMAND_RSP:
23176 return WDI_HAL_DUMP_CMD_RESP;
23177 case WLAN_HAL_SET_POWER_PARAMS_RSP:
23178 return WDI_SET_POWER_PARAMS_RESP;
23179#ifdef WLAN_FEATURE_VOWIFI_11R
23180 case WLAN_HAL_AGGR_ADD_TS_RSP:
23181 return WDI_AGGR_ADD_TS_RESP;
23182#endif
23183
23184#ifdef WLAN_FEATURE_GTK_OFFLOAD
23185 case WLAN_HAL_GTK_OFFLOAD_RSP:
23186 return WDI_GTK_OFFLOAD_RESP;
23187 case WLAN_HAL_GTK_OFFLOAD_GETINFO_RSP:
23188 return WDI_GTK_OFFLOAD_GETINFO_RESP;
23189#endif /* WLAN_FEATURE_GTK_OFFLOAD */
23190#ifdef WLAN_WAKEUP_EVENTS
23191 case WLAN_HAL_WAKE_REASON_IND:
23192 return WDI_HAL_WAKE_REASON_IND;
23193#endif // WLAN_WAKEUP_EVENTS
23194
23195 case WLAN_HAL_SET_THERMAL_MITIGATION_RSP:
23196 return WDI_SET_TM_LEVEL_RESP;
23197 case WLAN_HAL_FEATURE_CAPS_EXCHANGE_RSP:
23198 return WDI_FEATURE_CAPS_EXCHANGE_RESP;
Mohit Khanna4a70d262012-09-11 16:30:12 -070023199#ifdef WLAN_FEATURE_11AC
23200 case WLAN_HAL_UPDATE_VHT_OP_MODE_RSP:
23201 return WDI_UPDATE_VHT_OP_MODE_RESP;
23202#endif
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -080023203#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_CCX || defined(FEATURE_WLAN_LFR)
23204 case WLAN_HAL_GET_ROAM_RSSI_RSP:
23205 return WDI_GET_ROAM_RSSI_RESP;
23206#endif
Ravi Joshid2ca7c42013-07-23 08:37:49 -070023207
Leo Chang9056f462013-08-01 19:21:11 -070023208#ifdef FEATURE_WLAN_LPHB
23209 case WLAN_HAL_LPHB_IND:
Leo Changd9df8aa2013-09-26 13:32:26 -070023210 return WDI_HAL_LPHB_IND;
Leo Chang9056f462013-08-01 19:21:11 -070023211 case WLAN_HAL_LPHB_CFG_RSP:
23212 return WDI_LPHB_CFG_RESP;
23213#endif /* FEATURE_WLAN_LPHB */
Ravi Joshid2ca7c42013-07-23 08:37:49 -070023214
23215 case WLAN_HAL_IBSS_PEER_INACTIVITY_IND:
23216 return WDI_HAL_IBSS_PEER_INACTIVITY_IND;
Yue Mab9c86f42013-08-14 15:59:08 -070023217 case WLAN_HAL_PERIODIC_TX_PTRN_FW_IND:
23218 return WDI_HAL_PERIODIC_TX_PTRN_FW_IND;
Ravi Joshid2ca7c42013-07-23 08:37:49 -070023219
Rajeev79dbe4c2013-10-05 11:03:42 +053023220#ifdef FEATURE_WLAN_BATCH_SCAN
23221 case WLAN_HAL_BATCHSCAN_SET_RSP:
23222 return WDI_SET_BATCH_SCAN_RESP;
23223 case WLAN_HAL_BATCHSCAN_RESULT_IND:
23224 return WDI_BATCHSCAN_RESULT_IND;
23225#endif // FEATURE_WLAN_BATCH_SCAN
23226
Leo Chang0b0e45a2013-12-15 15:18:55 -080023227#ifdef FEATURE_WLAN_CH_AVOID
23228 case WLAN_HAL_AVOID_FREQ_RANGE_IND:
23229 return WDI_HAL_CH_AVOID_IND;
23230#endif /* FEATURE_WLAN_CH_AVOID */
23231
Jeff Johnson295189b2012-06-20 16:38:30 -070023232 default:
Jeff Johnsone7245742012-09-05 17:12:55 -070023233 return eDRIVER_TYPE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070023234 }
23235
23236}/*HAL_2_WDI_RSP_TYPE*/
23237
23238
23239/*Convert WDI driver type into HAL driver type*/
23240WPT_STATIC WPT_INLINE tDriverType
23241WDI_2_HAL_DRV_TYPE
23242(
23243 WDI_DriverType wdiDriverType
23244)
23245{
Jeff Johnsone7245742012-09-05 17:12:55 -070023246 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070023247 the chances of getting inlined*/
23248 switch( wdiDriverType )
23249 {
23250 case WDI_DRIVER_TYPE_PRODUCTION:
23251 return eDRIVER_TYPE_PRODUCTION;
23252 case WDI_DRIVER_TYPE_MFG:
23253 return eDRIVER_TYPE_MFG;
23254 case WDI_DRIVER_TYPE_DVT:
23255 return eDRIVER_TYPE_DVT;
23256 }
23257
Jeff Johnsone7245742012-09-05 17:12:55 -070023258 return eDRIVER_TYPE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070023259}/*WDI_2_HAL_DRV_TYPE*/
23260
23261
23262/*Convert WDI stop reason into HAL stop reason*/
23263WPT_STATIC WPT_INLINE tHalStopType
23264WDI_2_HAL_STOP_REASON
23265(
23266 WDI_StopType wdiDriverType
23267)
23268{
Jeff Johnsone7245742012-09-05 17:12:55 -070023269 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070023270 the chances of getting inlined*/
23271 switch( wdiDriverType )
23272 {
23273 case WDI_STOP_TYPE_SYS_RESET:
23274 return HAL_STOP_TYPE_SYS_RESET;
Yue Mad8cac142013-03-28 11:33:46 -070023275 case WDI_STOP_TYPE_SYS_DEEP_SLEEP:
23276 return HAL_STOP_TYPE_SYS_DEEP_SLEEP;
Jeff Johnson295189b2012-06-20 16:38:30 -070023277 case WDI_STOP_TYPE_RF_KILL:
23278 return HAL_STOP_TYPE_RF_KILL;
23279 }
23280
Jeff Johnsone7245742012-09-05 17:12:55 -070023281 return HAL_STOP_TYPE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070023282}/*WDI_2_HAL_STOP_REASON*/
23283
23284
23285/*Convert WDI scan mode type into HAL scan mode type*/
23286WPT_STATIC WPT_INLINE eHalSysMode
23287WDI_2_HAL_SCAN_MODE
23288(
23289 WDI_ScanMode wdiScanMode
23290)
23291{
Jeff Johnsone7245742012-09-05 17:12:55 -070023292 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070023293 the chances of getting inlined*/
23294 switch( wdiScanMode )
23295 {
23296 case WDI_SCAN_MODE_NORMAL:
23297 return eHAL_SYS_MODE_NORMAL;
23298 case WDI_SCAN_MODE_LEARN:
23299 return eHAL_SYS_MODE_LEARN;
23300 case WDI_SCAN_MODE_SCAN:
23301 return eHAL_SYS_MODE_SCAN;
23302 case WDI_SCAN_MODE_PROMISC:
23303 return eHAL_SYS_MODE_PROMISC;
23304 case WDI_SCAN_MODE_SUSPEND_LINK:
23305 return eHAL_SYS_MODE_SUSPEND_LINK;
Madan Mohan Koyyalamudi9b876782012-10-11 16:22:51 -070023306 case WDI_SCAN_MODE_ROAM_SCAN:
23307 return eHAL_SYS_MODE_ROAM_SCAN;
23308 case WDI_SCAN_MODE_ROAM_SUSPEND_LINK:
23309 return eHAL_SYS_MODE_ROAM_SUSPEND_LINK;
Jeff Johnson295189b2012-06-20 16:38:30 -070023310 }
23311
Jeff Johnsone7245742012-09-05 17:12:55 -070023312 return eHAL_SYS_MODE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070023313}/*WDI_2_HAL_SCAN_MODE*/
23314
23315/*Convert WDI sec ch offset into HAL sec ch offset type*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023316WPT_STATIC WPT_INLINE ePhyChanBondState
Jeff Johnson295189b2012-06-20 16:38:30 -070023317WDI_2_HAL_SEC_CH_OFFSET
23318(
23319 WDI_HTSecondaryChannelOffset wdiSecChOffset
23320)
23321{
Jeff Johnsone7245742012-09-05 17:12:55 -070023322 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070023323 the chances of getting inlined*/
23324 switch( wdiSecChOffset )
23325 {
23326 case WDI_SECONDARY_CHANNEL_OFFSET_NONE:
Jeff Johnsone7245742012-09-05 17:12:55 -070023327 return PHY_SINGLE_CHANNEL_CENTERED;
Jeff Johnson295189b2012-06-20 16:38:30 -070023328 case WDI_SECONDARY_CHANNEL_OFFSET_UP:
Jeff Johnsone7245742012-09-05 17:12:55 -070023329 return PHY_DOUBLE_CHANNEL_LOW_PRIMARY;
Jeff Johnson295189b2012-06-20 16:38:30 -070023330 case WDI_SECONDARY_CHANNEL_OFFSET_DOWN:
Jeff Johnsone7245742012-09-05 17:12:55 -070023331 return PHY_DOUBLE_CHANNEL_HIGH_PRIMARY;
23332#ifdef WLAN_FEATURE_11AC
23333 case WDI_CHANNEL_20MHZ_LOW_40MHZ_CENTERED:
23334 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_CENTERED;
23335 case WDI_CHANNEL_20MHZ_CENTERED_40MHZ_CENTERED:
23336 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_CENTERED;
23337 case WDI_CHANNEL_20MHZ_HIGH_40MHZ_CENTERED:
23338 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_CENTERED;
23339 case WDI_CHANNEL_20MHZ_LOW_40MHZ_LOW:
23340 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_LOW;
23341 case WDI_CHANNEL_20MHZ_HIGH_40MHZ_LOW:
23342 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_LOW;
23343 case WDI_CHANNEL_20MHZ_LOW_40MHZ_HIGH:
23344 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_HIGH;
23345 case WDI_CHANNEL_20MHZ_HIGH_40MHZ_HIGH:
23346 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_HIGH;
23347#endif
23348 default:
23349 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070023350 }
23351
Jeff Johnsone7245742012-09-05 17:12:55 -070023352 return PHY_CHANNEL_BONDING_STATE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070023353}/*WDI_2_HAL_SEC_CH_OFFSET*/
23354
23355/*Convert WDI BSS type into HAL BSS type*/
23356WPT_STATIC WPT_INLINE tSirBssType
23357WDI_2_HAL_BSS_TYPE
23358(
23359 WDI_BssType wdiBSSType
23360)
23361{
Jeff Johnsone7245742012-09-05 17:12:55 -070023362 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070023363 the chances of getting inlined*/
23364 switch( wdiBSSType )
23365 {
23366 case WDI_INFRASTRUCTURE_MODE:
23367 return eSIR_INFRASTRUCTURE_MODE;
23368 case WDI_INFRA_AP_MODE:
23369 return eSIR_INFRA_AP_MODE;
23370 case WDI_IBSS_MODE:
23371 return eSIR_IBSS_MODE;
23372 case WDI_BTAMP_STA_MODE:
23373 return eSIR_BTAMP_STA_MODE;
23374 case WDI_BTAMP_AP_MODE:
Jeff Johnsone7245742012-09-05 17:12:55 -070023375 return eSIR_BTAMP_AP_MODE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023376 case WDI_BSS_AUTO_MODE:
23377 return eSIR_AUTO_MODE;
23378 }
23379
Jeff Johnsone7245742012-09-05 17:12:55 -070023380 return eSIR_DONOT_USE_BSS_TYPE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023381}/*WDI_2_HAL_BSS_TYPE*/
23382
23383/*Convert WDI NW type into HAL NW type*/
23384WPT_STATIC WPT_INLINE tSirNwType
23385WDI_2_HAL_NW_TYPE
23386(
23387 WDI_NwType wdiNWType
23388)
23389{
Jeff Johnsone7245742012-09-05 17:12:55 -070023390 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070023391 the chances of getting inlined*/
23392 switch( wdiNWType )
23393 {
23394 case WDI_11A_NW_TYPE:
23395 return eSIR_11A_NW_TYPE;
23396 case WDI_11B_NW_TYPE:
23397 return eSIR_11B_NW_TYPE;
23398 case WDI_11G_NW_TYPE:
23399 return eSIR_11G_NW_TYPE;
23400 case WDI_11N_NW_TYPE:
23401 return eSIR_11N_NW_TYPE;
23402 }
23403
Jeff Johnsone7245742012-09-05 17:12:55 -070023404 return eSIR_DONOT_USE_NW_TYPE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023405}/*WDI_2_HAL_NW_TYPE*/
23406
23407/*Convert WDI chanel bonding type into HAL cb type*/
23408WPT_STATIC WPT_INLINE ePhyChanBondState
23409WDI_2_HAL_CB_STATE
23410(
23411 WDI_PhyChanBondState wdiCbState
23412)
23413{
Jeff Johnsone7245742012-09-05 17:12:55 -070023414 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070023415 the chances of getting inlined*/
23416 switch ( wdiCbState )
23417 {
23418 case WDI_PHY_SINGLE_CHANNEL_CENTERED:
23419 return PHY_SINGLE_CHANNEL_CENTERED;
23420 case WDI_PHY_DOUBLE_CHANNEL_LOW_PRIMARY:
23421 return PHY_DOUBLE_CHANNEL_LOW_PRIMARY;
23422 case WDI_PHY_DOUBLE_CHANNEL_CENTERED:
23423 return PHY_DOUBLE_CHANNEL_CENTERED;
23424 case WDI_PHY_DOUBLE_CHANNEL_HIGH_PRIMARY:
23425 return PHY_DOUBLE_CHANNEL_HIGH_PRIMARY;
Jeff Johnsone7245742012-09-05 17:12:55 -070023426#ifdef WLAN_FEATURE_11AC
23427 case WDI_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_CENTERED:
23428 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_CENTERED;
23429 case WDI_QUADRUPLE_CHANNEL_20MHZ_CENTERED_40MHZ_CENTERED:
23430 return PHY_QUADRUPLE_CHANNEL_20MHZ_CENTERED_40MHZ_CENTERED;
23431 case WDI_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_CENTERED:
23432 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_CENTERED;
23433 case WDI_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_LOW:
23434 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_LOW;
23435 case WDI_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_LOW:
23436 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_LOW;
23437 case WDI_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_HIGH:
23438 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_HIGH;
23439 case WDI_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_HIGH:
23440 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_HIGH;
23441#endif
23442 case WDI_MAX_CB_STATE:
23443 default:
23444 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070023445 }
Jeff Johnsone7245742012-09-05 17:12:55 -070023446
Jeff Johnson295189b2012-06-20 16:38:30 -070023447 return PHY_CHANNEL_BONDING_STATE_MAX;
23448}/*WDI_2_HAL_CB_STATE*/
23449
23450/*Convert WDI chanel bonding type into HAL cb type*/
23451WPT_STATIC WPT_INLINE tSirMacHTOperatingMode
23452WDI_2_HAL_HT_OPER_MODE
23453(
23454 WDI_HTOperatingMode wdiHTOperMode
23455)
23456{
Jeff Johnsone7245742012-09-05 17:12:55 -070023457 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070023458 the chances of getting inlined*/
23459 switch ( wdiHTOperMode )
23460 {
23461 case WDI_HT_OP_MODE_PURE:
23462 return eSIR_HT_OP_MODE_PURE;
23463 case WDI_HT_OP_MODE_OVERLAP_LEGACY:
23464 return eSIR_HT_OP_MODE_OVERLAP_LEGACY;
23465 case WDI_HT_OP_MODE_NO_LEGACY_20MHZ_HT:
23466 return eSIR_HT_OP_MODE_NO_LEGACY_20MHZ_HT;
23467 case WDI_HT_OP_MODE_MIXED:
23468 return eSIR_HT_OP_MODE_MIXED;
23469 }
Jeff Johnsone7245742012-09-05 17:12:55 -070023470
Jeff Johnson295189b2012-06-20 16:38:30 -070023471 return eSIR_HT_OP_MODE_MAX;
23472}/*WDI_2_HAL_HT_OPER_MODE*/
23473
23474/*Convert WDI mimo PS type into HAL mimo PS type*/
23475WPT_STATIC WPT_INLINE tSirMacHTMIMOPowerSaveState
23476WDI_2_HAL_MIMO_PS
23477(
23478 WDI_HTMIMOPowerSaveState wdiHTOperMode
23479)
23480{
Jeff Johnsone7245742012-09-05 17:12:55 -070023481 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070023482 the chances of getting inlined*/
23483 switch ( wdiHTOperMode )
23484 {
23485 case WDI_HT_MIMO_PS_STATIC:
23486 return eSIR_HT_MIMO_PS_STATIC;
23487 case WDI_HT_MIMO_PS_DYNAMIC:
23488 return eSIR_HT_MIMO_PS_DYNAMIC;
23489 case WDI_HT_MIMO_PS_NA:
23490 return eSIR_HT_MIMO_PS_NA;
23491 case WDI_HT_MIMO_PS_NO_LIMIT:
23492 return eSIR_HT_MIMO_PS_NO_LIMIT;
23493 }
Jeff Johnsone7245742012-09-05 17:12:55 -070023494
Jeff Johnson295189b2012-06-20 16:38:30 -070023495 return eSIR_HT_MIMO_PS_MAX;
23496}/*WDI_2_HAL_MIMO_PS*/
23497
23498/*Convert WDI ENC type into HAL ENC type*/
23499WPT_STATIC WPT_INLINE tAniEdType
23500WDI_2_HAL_ENC_TYPE
23501(
23502 WDI_EncryptType wdiEncType
23503)
23504{
Jeff Johnsone7245742012-09-05 17:12:55 -070023505 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070023506 the chances of getting inlined*/
23507 switch ( wdiEncType )
23508 {
23509 case WDI_ENCR_NONE:
23510 return eSIR_ED_NONE;
23511
23512 case WDI_ENCR_WEP40:
23513 return eSIR_ED_WEP40;
23514
23515 case WDI_ENCR_WEP104:
23516 return eSIR_ED_WEP104;
23517
23518 case WDI_ENCR_TKIP:
23519 return eSIR_ED_TKIP;
23520
23521 case WDI_ENCR_CCMP:
23522 return eSIR_ED_CCMP;
23523
23524 case WDI_ENCR_AES_128_CMAC:
23525 return eSIR_ED_AES_128_CMAC;
23526#if defined(FEATURE_WLAN_WAPI)
23527 case WDI_ENCR_WPI:
23528 return eSIR_ED_WPI;
23529#endif
23530 default:
23531 return eSIR_ED_NOT_IMPLEMENTED;
23532 }
23533
23534}/*WDI_2_HAL_ENC_TYPE*/
23535
23536/*Convert WDI WEP type into HAL WEP type*/
23537WPT_STATIC WPT_INLINE tAniWepType
23538WDI_2_HAL_WEP_TYPE
23539(
23540 WDI_WepType wdiWEPType
23541)
23542{
Jeff Johnsone7245742012-09-05 17:12:55 -070023543 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070023544 the chances of getting inlined*/
23545 switch ( wdiWEPType )
23546 {
23547 case WDI_WEP_STATIC:
23548 return eSIR_WEP_STATIC;
23549
23550 case WDI_WEP_DYNAMIC:
23551 return eSIR_WEP_DYNAMIC;
23552 }
Jeff Johnsone7245742012-09-05 17:12:55 -070023553
Jeff Johnson295189b2012-06-20 16:38:30 -070023554 return eSIR_WEP_MAX;
23555}/*WDI_2_HAL_WEP_TYPE*/
23556
23557WPT_STATIC WPT_INLINE tSirLinkState
23558WDI_2_HAL_LINK_STATE
23559(
23560 WDI_LinkStateType wdiLinkState
23561)
23562{
Jeff Johnsone7245742012-09-05 17:12:55 -070023563 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070023564 the chances of getting inlined*/
23565 switch ( wdiLinkState )
23566 {
23567 case WDI_LINK_IDLE_STATE:
23568 return eSIR_LINK_IDLE_STATE;
23569
23570 case WDI_LINK_PREASSOC_STATE:
23571 return eSIR_LINK_PREASSOC_STATE;
23572
23573 case WDI_LINK_POSTASSOC_STATE:
23574 return eSIR_LINK_POSTASSOC_STATE;
23575
23576 case WDI_LINK_AP_STATE:
23577 return eSIR_LINK_AP_STATE;
23578
23579 case WDI_LINK_IBSS_STATE:
23580 return eSIR_LINK_IBSS_STATE;
23581
23582 case WDI_LINK_BTAMP_PREASSOC_STATE:
23583 return eSIR_LINK_BTAMP_PREASSOC_STATE;
23584
23585 case WDI_LINK_BTAMP_POSTASSOC_STATE:
23586 return eSIR_LINK_BTAMP_POSTASSOC_STATE;
23587
23588 case WDI_LINK_BTAMP_AP_STATE:
23589 return eSIR_LINK_BTAMP_AP_STATE;
23590
23591 case WDI_LINK_BTAMP_STA_STATE:
23592 return eSIR_LINK_BTAMP_STA_STATE;
23593
23594 case WDI_LINK_LEARN_STATE:
23595 return eSIR_LINK_LEARN_STATE;
23596
23597 case WDI_LINK_SCAN_STATE:
23598 return eSIR_LINK_SCAN_STATE;
23599
23600 case WDI_LINK_FINISH_SCAN_STATE:
23601 return eSIR_LINK_FINISH_SCAN_STATE;
23602
23603 case WDI_LINK_INIT_CAL_STATE:
23604 return eSIR_LINK_INIT_CAL_STATE;
23605
23606 case WDI_LINK_FINISH_CAL_STATE:
23607 return eSIR_LINK_FINISH_CAL_STATE;
23608
Jeff Johnson295189b2012-06-20 16:38:30 -070023609 case WDI_LINK_LISTEN_STATE:
23610 return eSIR_LINK_LISTEN_STATE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023611
Gopichand Nakkala924e4552013-05-08 19:18:14 +053023612 case WDI_LINK_SEND_ACTION_STATE:
23613 return eSIR_LINK_SEND_ACTION_STATE;
23614
Jeff Johnson295189b2012-06-20 16:38:30 -070023615 default:
23616 return eSIR_LINK_MAX;
Jeff Johnsone7245742012-09-05 17:12:55 -070023617 }
Jeff Johnson295189b2012-06-20 16:38:30 -070023618}
23619
Jeff Johnsone7245742012-09-05 17:12:55 -070023620/*Translate a STA Context from WDI into HAL*/
23621WPT_STATIC WPT_INLINE
Jeff Johnson295189b2012-06-20 16:38:30 -070023622void
23623WDI_CopyWDIStaCtxToHALStaCtx
Jeff Johnsone7245742012-09-05 17:12:55 -070023624(
Jeff Johnson295189b2012-06-20 16:38:30 -070023625 tConfigStaParams* phalConfigSta,
23626 WDI_ConfigStaReqInfoType* pwdiConfigSta
23627)
23628{
23629 wpt_uint8 i;
Jeff Johnsone7245742012-09-05 17:12:55 -070023630#ifdef WLAN_FEATURE_11AC
23631 /* Get the Version 1 Handler */
23632 tConfigStaParams_V1* phalConfigSta_V1 = NULL;
23633 if (WDI_getFwWlanFeatCaps(DOT11AC))
23634 {
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070023635 phalConfigSta_V1 = (tConfigStaParams_V1*)phalConfigSta;
Jeff Johnsone7245742012-09-05 17:12:55 -070023636 }
23637#endif
23638 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070023639 the chances of getting inlined*/
23640
Jeff Johnsone7245742012-09-05 17:12:55 -070023641 wpalMemoryCopy(phalConfigSta->bssId,
23642 pwdiConfigSta->macBSSID, WDI_MAC_ADDR_LEN);
23643
23644 wpalMemoryCopy(phalConfigSta->staMac,
23645 pwdiConfigSta->macSTA, WDI_MAC_ADDR_LEN);
Jeff Johnson295189b2012-06-20 16:38:30 -070023646
23647 phalConfigSta->assocId = pwdiConfigSta->usAssocId;
23648 phalConfigSta->staType = pwdiConfigSta->wdiSTAType;
23649 phalConfigSta->shortPreambleSupported = pwdiConfigSta->ucShortPreambleSupported;
23650 phalConfigSta->listenInterval = pwdiConfigSta->usListenInterval;
23651 phalConfigSta->wmmEnabled = pwdiConfigSta->ucWMMEnabled;
23652 phalConfigSta->htCapable = pwdiConfigSta->ucHTCapable;
23653 phalConfigSta->txChannelWidthSet = pwdiConfigSta->ucTXChannelWidthSet;
23654 phalConfigSta->rifsMode = pwdiConfigSta->ucRIFSMode;
23655 phalConfigSta->lsigTxopProtection = pwdiConfigSta->ucLSIGTxopProtection;
23656 phalConfigSta->maxAmpduSize = pwdiConfigSta->ucMaxAmpduSize;
23657 phalConfigSta->maxAmpduDensity = pwdiConfigSta->ucMaxAmpduDensity;
23658 phalConfigSta->maxAmsduSize = pwdiConfigSta->ucMaxAmsduSize;
23659 phalConfigSta->fShortGI40Mhz = pwdiConfigSta->ucShortGI40Mhz;
23660 phalConfigSta->fShortGI20Mhz = pwdiConfigSta->ucShortGI20Mhz;
23661 phalConfigSta->rmfEnabled = pwdiConfigSta->ucRMFEnabled;
23662 phalConfigSta->action = pwdiConfigSta->wdiAction;
23663 phalConfigSta->uAPSD = pwdiConfigSta->ucAPSD;
23664 phalConfigSta->maxSPLen = pwdiConfigSta->ucMaxSPLen;
23665 phalConfigSta->greenFieldCapable = pwdiConfigSta->ucGreenFieldCapable;
23666 phalConfigSta->delayedBASupport = pwdiConfigSta->ucDelayedBASupport;
23667 phalConfigSta->us32MaxAmpduDuration = pwdiConfigSta->us32MaxAmpduDuratio;
23668 phalConfigSta->fDsssCckMode40Mhz = pwdiConfigSta->ucDsssCckMode40Mhz;
23669 phalConfigSta->encryptType = pwdiConfigSta->ucEncryptType;
Jeff Johnsone7245742012-09-05 17:12:55 -070023670
Jeff Johnson295189b2012-06-20 16:38:30 -070023671 phalConfigSta->mimoPS = WDI_2_HAL_MIMO_PS(pwdiConfigSta->wdiMIMOPS);
23672
Jeff Johnsone7245742012-09-05 17:12:55 -070023673 phalConfigSta->supportedRates.opRateMode =
Jeff Johnson295189b2012-06-20 16:38:30 -070023674 pwdiConfigSta->wdiSupportedRates.opRateMode;
23675 for(i = 0; i < SIR_NUM_11B_RATES; i ++)
23676 {
Jeff Johnsone7245742012-09-05 17:12:55 -070023677 phalConfigSta->supportedRates.llbRates[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -070023678 pwdiConfigSta->wdiSupportedRates.llbRates[i];
23679 }
23680 for(i = 0; i < SIR_NUM_11A_RATES; i ++)
23681 {
Jeff Johnsone7245742012-09-05 17:12:55 -070023682 phalConfigSta->supportedRates.llaRates[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -070023683 pwdiConfigSta->wdiSupportedRates.llaRates[i];
23684 }
23685 for(i = 0; i < SIR_NUM_POLARIS_RATES; i ++)
23686 {
23687 phalConfigSta->supportedRates.aniLegacyRates[i] =
23688 pwdiConfigSta->wdiSupportedRates.aLegacyRates[i];
23689 }
Jeff Johnsone7245742012-09-05 17:12:55 -070023690 phalConfigSta->supportedRates.aniEnhancedRateBitmap =
Jeff Johnson295189b2012-06-20 16:38:30 -070023691 pwdiConfigSta->wdiSupportedRates.uEnhancedRateBitmap;
23692 for(i = 0; i < SIR_MAC_MAX_SUPPORTED_MCS_SET; i ++)
23693 {
Jeff Johnsone7245742012-09-05 17:12:55 -070023694 phalConfigSta->supportedRates.supportedMCSSet[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -070023695 pwdiConfigSta->wdiSupportedRates.aSupportedMCSSet[i];
23696 }
23697 phalConfigSta->supportedRates.rxHighestDataRate =
23698 pwdiConfigSta->wdiSupportedRates.aRxHighestDataRate;
23699
Jeff Johnsone7245742012-09-05 17:12:55 -070023700#ifdef WLAN_FEATURE_11AC
23701 if(phalConfigSta_V1 != NULL)
23702 {
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070023703 phalConfigSta_V1->supportedRates.vhtRxMCSMap = pwdiConfigSta->wdiSupportedRates.vhtRxMCSMap;
23704 phalConfigSta_V1->supportedRates.vhtRxHighestDataRate = pwdiConfigSta->wdiSupportedRates.vhtRxHighestDataRate;
23705 phalConfigSta_V1->supportedRates.vhtTxMCSMap = pwdiConfigSta->wdiSupportedRates.vhtTxMCSMap;
23706 phalConfigSta_V1->supportedRates.vhtTxHighestDataRate = pwdiConfigSta->wdiSupportedRates.vhtTxHighestDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070023707 }
23708#endif
23709
Jeff Johnson295189b2012-06-20 16:38:30 -070023710 phalConfigSta->p2pCapableSta = pwdiConfigSta->ucP2pCapableSta ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023711
Jeff Johnsone7245742012-09-05 17:12:55 -070023712#ifdef WLAN_FEATURE_11AC
23713 if(phalConfigSta_V1 != NULL)
23714 {
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070023715 phalConfigSta_V1->vhtCapable = pwdiConfigSta->ucVhtCapableSta;
23716 phalConfigSta_V1->vhtTxChannelWidthSet = pwdiConfigSta->ucVhtTxChannelWidthSet;
Shailender Karmuchi08f87c22013-01-17 12:51:24 -080023717 phalConfigSta_V1->vhtTxBFEnabled = pwdiConfigSta->ucVhtTxBFEnabled;
Gopichand Nakkalab2d2c312013-01-04 11:41:02 -080023718 phalConfigSta_V1->htLdpcEnabled = pwdiConfigSta->ucHtLdpcEnabled;
23719 phalConfigSta_V1->vhtLdpcEnabled = pwdiConfigSta->ucVhtLdpcEnabled;
23720
Jeff Johnsone7245742012-09-05 17:12:55 -070023721 }
23722#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070023723}/*WDI_CopyWDIStaCtxToHALStaCtx*/;
Jeff Johnsone7245742012-09-05 17:12:55 -070023724
23725/*Translate a Rate set info from WDI into HAL*/
23726WPT_STATIC WPT_INLINE void
Jeff Johnson295189b2012-06-20 16:38:30 -070023727WDI_CopyWDIRateSetToHALRateSet
Jeff Johnsone7245742012-09-05 17:12:55 -070023728(
Jeff Johnson295189b2012-06-20 16:38:30 -070023729 tSirMacRateSet* pHalRateSet,
23730 WDI_RateSet* pwdiRateSet
23731)
23732{
Jeff Johnsone7245742012-09-05 17:12:55 -070023733 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070023734 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
23735
23736 pHalRateSet->numRates = ( pwdiRateSet->ucNumRates <= SIR_MAC_RATESET_EID_MAX )?
23737 pwdiRateSet->ucNumRates:SIR_MAC_RATESET_EID_MAX;
23738
23739 for ( i = 0; i < pHalRateSet->numRates; i++ )
23740 {
23741 pHalRateSet->rate[i] = pwdiRateSet->aRates[i];
23742 }
Jeff Johnsone7245742012-09-05 17:12:55 -070023743
Jeff Johnson295189b2012-06-20 16:38:30 -070023744}/*WDI_CopyWDIRateSetToHALRateSet*/
23745
23746
23747/*Translate an EDCA Parameter Record from WDI into HAL*/
23748WPT_STATIC WPT_INLINE void
23749WDI_CopyWDIEDCAParamsToHALEDCAParams
Jeff Johnsone7245742012-09-05 17:12:55 -070023750(
Jeff Johnson295189b2012-06-20 16:38:30 -070023751 tSirMacEdcaParamRecord* phalEdcaParam,
23752 WDI_EdcaParamRecord* pWDIEdcaParam
23753)
23754{
Jeff Johnsone7245742012-09-05 17:12:55 -070023755 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070023756 the chances of getting inlined*/
23757
23758 phalEdcaParam->aci.rsvd = pWDIEdcaParam->wdiACI.rsvd;
23759 phalEdcaParam->aci.aci = pWDIEdcaParam->wdiACI.aci;
23760 phalEdcaParam->aci.acm = pWDIEdcaParam->wdiACI.acm;
23761 phalEdcaParam->aci.aifsn = pWDIEdcaParam->wdiACI.aifsn;
23762
23763 phalEdcaParam->cw.max = pWDIEdcaParam->wdiCW.max;
23764 phalEdcaParam->cw.min = pWDIEdcaParam->wdiCW.min;
23765 phalEdcaParam->txoplimit = pWDIEdcaParam->usTXOPLimit;
23766}/*WDI_CopyWDIEDCAParamsToHALEDCAParams*/
23767
23768
23769/*Copy a management frame header from WDI fmt into HAL fmt*/
23770WPT_STATIC WPT_INLINE void
23771WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr
23772(
23773 tSirMacMgmtHdr* pmacMgmtHdr,
23774 WDI_MacMgmtHdr* pwdiMacMgmtHdr
23775)
23776{
23777 pmacMgmtHdr->fc.protVer = pwdiMacMgmtHdr->fc.protVer;
23778 pmacMgmtHdr->fc.type = pwdiMacMgmtHdr->fc.type;
23779 pmacMgmtHdr->fc.subType = pwdiMacMgmtHdr->fc.subType;
23780 pmacMgmtHdr->fc.toDS = pwdiMacMgmtHdr->fc.toDS;
23781 pmacMgmtHdr->fc.fromDS = pwdiMacMgmtHdr->fc.fromDS;
23782 pmacMgmtHdr->fc.moreFrag = pwdiMacMgmtHdr->fc.moreFrag;
23783 pmacMgmtHdr->fc.retry = pwdiMacMgmtHdr->fc.retry;
23784 pmacMgmtHdr->fc.powerMgmt = pwdiMacMgmtHdr->fc.powerMgmt;
23785 pmacMgmtHdr->fc.moreData = pwdiMacMgmtHdr->fc.moreData;
23786 pmacMgmtHdr->fc.wep = pwdiMacMgmtHdr->fc.wep;
23787 pmacMgmtHdr->fc.order = pwdiMacMgmtHdr->fc.order;
23788
23789 pmacMgmtHdr->durationLo = pwdiMacMgmtHdr->durationLo;
23790 pmacMgmtHdr->durationHi = pwdiMacMgmtHdr->durationHi;
23791
Jeff Johnsone7245742012-09-05 17:12:55 -070023792 wpalMemoryCopy(pmacMgmtHdr->da,
Jeff Johnson295189b2012-06-20 16:38:30 -070023793 pwdiMacMgmtHdr->da, 6);
Jeff Johnsone7245742012-09-05 17:12:55 -070023794 wpalMemoryCopy(pmacMgmtHdr->sa,
Jeff Johnson295189b2012-06-20 16:38:30 -070023795 pwdiMacMgmtHdr->sa, 6);
Jeff Johnsone7245742012-09-05 17:12:55 -070023796 wpalMemoryCopy(pmacMgmtHdr->bssId,
Jeff Johnson295189b2012-06-20 16:38:30 -070023797 pwdiMacMgmtHdr->bssId, 6);
23798
23799 pmacMgmtHdr->seqControl.fragNum = pwdiMacMgmtHdr->seqControl.fragNum;
23800 pmacMgmtHdr->seqControl.seqNumLo = pwdiMacMgmtHdr->seqControl.seqNumLo;
23801 pmacMgmtHdr->seqControl.seqNumHi = pwdiMacMgmtHdr->seqControl.seqNumHi;
23802
23803}/*WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr*/
23804
23805
23806/*Copy config bss parameters from WDI fmt into HAL fmt*/
23807WPT_STATIC WPT_INLINE void
23808WDI_CopyWDIConfigBSSToHALConfigBSS
23809(
23810 tConfigBssParams* phalConfigBSS,
23811 WDI_ConfigBSSReqInfoType* pwdiConfigBSS
23812)
23813{
23814
23815 wpt_uint8 keyIndex = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070023816#ifdef WLAN_FEATURE_11AC
23817 /* Get the Version 1 Handler */
23818 tConfigBssParams_V1* phalConfigBSS_V1 = NULL;
23819 if (WDI_getFwWlanFeatCaps(DOT11AC))
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070023820 phalConfigBSS_V1 = (tConfigBssParams_V1*)phalConfigBSS;
Jeff Johnsone7245742012-09-05 17:12:55 -070023821#endif
23822
Jeff Johnson295189b2012-06-20 16:38:30 -070023823 wpalMemoryCopy( phalConfigBSS->bssId,
23824 pwdiConfigBSS->macBSSID,
23825 WDI_MAC_ADDR_LEN);
23826
23827#ifdef HAL_SELF_STA_PER_BSS
23828 wpalMemoryCopy( phalConfigBSS->selfMacAddr,
23829 pwdiConfigBSS->macSelfAddr,
23830 WDI_MAC_ADDR_LEN);
23831#endif
23832
23833 phalConfigBSS->bssType = WDI_2_HAL_BSS_TYPE(pwdiConfigBSS->wdiBSSType);
23834
23835 phalConfigBSS->operMode = pwdiConfigBSS->ucOperMode;
23836 phalConfigBSS->nwType = WDI_2_HAL_NW_TYPE(pwdiConfigBSS->wdiNWType);
23837
Jeff Johnsone7245742012-09-05 17:12:55 -070023838 phalConfigBSS->shortSlotTimeSupported =
Jeff Johnson295189b2012-06-20 16:38:30 -070023839 pwdiConfigBSS->ucShortSlotTimeSupported;
23840 phalConfigBSS->llaCoexist = pwdiConfigBSS->ucllaCoexist;
23841 phalConfigBSS->llbCoexist = pwdiConfigBSS->ucllbCoexist;
23842 phalConfigBSS->llgCoexist = pwdiConfigBSS->ucllgCoexist;
23843 phalConfigBSS->ht20Coexist = pwdiConfigBSS->ucHT20Coexist;
23844 phalConfigBSS->llnNonGFCoexist = pwdiConfigBSS->ucllnNonGFCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070023845 phalConfigBSS->fLsigTXOPProtectionFullSupport =
Jeff Johnson295189b2012-06-20 16:38:30 -070023846 pwdiConfigBSS->ucTXOPProtectionFullSupport;
23847 phalConfigBSS->fRIFSMode = pwdiConfigBSS->ucRIFSMode;
23848 phalConfigBSS->beaconInterval = pwdiConfigBSS->usBeaconInterval;
23849 phalConfigBSS->dtimPeriod = pwdiConfigBSS->ucDTIMPeriod;
23850 phalConfigBSS->txChannelWidthSet = pwdiConfigBSS->ucTXChannelWidthSet;
23851 phalConfigBSS->currentOperChannel = pwdiConfigBSS->ucCurrentOperChannel;
23852 phalConfigBSS->currentExtChannel = pwdiConfigBSS->ucCurrentExtChannel;
23853 phalConfigBSS->action = pwdiConfigBSS->wdiAction;
23854 phalConfigBSS->htCapable = pwdiConfigBSS->ucHTCapable;
23855 phalConfigBSS->obssProtEnabled = pwdiConfigBSS->ucObssProtEnabled;
23856 phalConfigBSS->rmfEnabled = pwdiConfigBSS->ucRMFEnabled;
23857
Jeff Johnsone7245742012-09-05 17:12:55 -070023858 phalConfigBSS->htOperMode =
23859 WDI_2_HAL_HT_OPER_MODE(pwdiConfigBSS->wdiHTOperMod);
Jeff Johnson295189b2012-06-20 16:38:30 -070023860
23861 phalConfigBSS->dualCTSProtection = pwdiConfigBSS->ucDualCTSProtection;
23862 phalConfigBSS->ucMaxProbeRespRetryLimit = pwdiConfigBSS->ucMaxProbeRespRetryLimit;
23863 phalConfigBSS->bHiddenSSIDEn = pwdiConfigBSS->bHiddenSSIDEn;
23864 phalConfigBSS->bProxyProbeRespEn = pwdiConfigBSS->bProxyProbeRespEn;
23865
23866#ifdef WLAN_FEATURE_VOWIFI
23867 phalConfigBSS->maxTxPower = pwdiConfigBSS->cMaxTxPower;
23868#endif
23869
23870 /*! Used 32 as magic number because that is how the ssid is declared inside the
23871 hal header - hal needs a macro for it */
Jeff Johnsone7245742012-09-05 17:12:55 -070023872 phalConfigBSS->ssId.length =
Jeff Johnson295189b2012-06-20 16:38:30 -070023873 (pwdiConfigBSS->wdiSSID.ucLength <= 32)?
23874 pwdiConfigBSS->wdiSSID.ucLength : 32;
23875 wpalMemoryCopy(phalConfigBSS->ssId.ssId,
Jeff Johnsone7245742012-09-05 17:12:55 -070023876 pwdiConfigBSS->wdiSSID.sSSID,
23877 phalConfigBSS->ssId.length);
Jeff Johnson295189b2012-06-20 16:38:30 -070023878
23879 WDI_CopyWDIStaCtxToHALStaCtx( &phalConfigBSS->staContext,
23880 &pwdiConfigBSS->wdiSTAContext);
Jeff Johnsone7245742012-09-05 17:12:55 -070023881
Jeff Johnson295189b2012-06-20 16:38:30 -070023882 WDI_CopyWDIRateSetToHALRateSet( &phalConfigBSS->rateSet,
23883 &pwdiConfigBSS->wdiRateSet);
23884
23885 phalConfigBSS->edcaParamsValid = pwdiConfigBSS->ucEDCAParamsValid;
23886
23887 if(phalConfigBSS->edcaParamsValid)
23888 {
23889 WDI_CopyWDIEDCAParamsToHALEDCAParams( &phalConfigBSS->acbe,
23890 &pwdiConfigBSS->wdiBEEDCAParams);
23891 WDI_CopyWDIEDCAParamsToHALEDCAParams( &phalConfigBSS->acbk,
23892 &pwdiConfigBSS->wdiBKEDCAParams);
23893 WDI_CopyWDIEDCAParamsToHALEDCAParams( &phalConfigBSS->acvi,
23894 &pwdiConfigBSS->wdiVIEDCAParams);
23895 WDI_CopyWDIEDCAParamsToHALEDCAParams( &phalConfigBSS->acvo,
23896 &pwdiConfigBSS->wdiVOEDCAParams);
23897 }
23898
Jeff Johnsone7245742012-09-05 17:12:55 -070023899 phalConfigBSS->halPersona = pwdiConfigBSS->ucPersona;
Jeff Johnson295189b2012-06-20 16:38:30 -070023900
23901 phalConfigBSS->bSpectrumMgtEnable = pwdiConfigBSS->bSpectrumMgtEn;
23902
23903#ifdef WLAN_FEATURE_VOWIFI_11R
23904
Jeff Johnsone7245742012-09-05 17:12:55 -070023905 phalConfigBSS->extSetStaKeyParamValid =
Jeff Johnson295189b2012-06-20 16:38:30 -070023906 pwdiConfigBSS->bExtSetStaKeyParamValid;
Jeff Johnsone7245742012-09-05 17:12:55 -070023907
Jeff Johnson295189b2012-06-20 16:38:30 -070023908 if( phalConfigBSS->extSetStaKeyParamValid )
23909 {
23910 /*-----------------------------------------------------------------------
23911 Copy the STA Key parameters into the HAL message
23912 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023913 phalConfigBSS->extSetStaKeyParam.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -070023914 WDI_2_HAL_ENC_TYPE (pwdiConfigBSS->wdiExtSetKeyParam.wdiEncType);
23915
Jeff Johnsone7245742012-09-05 17:12:55 -070023916 phalConfigBSS->extSetStaKeyParam.wepType =
Jeff Johnson295189b2012-06-20 16:38:30 -070023917 WDI_2_HAL_WEP_TYPE (pwdiConfigBSS->wdiExtSetKeyParam.wdiWEPType );
23918
23919 phalConfigBSS->extSetStaKeyParam.staIdx = pwdiConfigBSS->wdiExtSetKeyParam.ucSTAIdx;
23920
23921 phalConfigBSS->extSetStaKeyParam.defWEPIdx = pwdiConfigBSS->wdiExtSetKeyParam.ucDefWEPIdx;
23922
23923 phalConfigBSS->extSetStaKeyParam.singleTidRc = pwdiConfigBSS->wdiExtSetKeyParam.ucSingleTidRc;
23924
Jeff Johnson295189b2012-06-20 16:38:30 -070023925 for(keyIndex = 0; keyIndex < pwdiConfigBSS->wdiExtSetKeyParam.ucNumKeys ;
23926 keyIndex++)
23927 {
Jeff Johnsone7245742012-09-05 17:12:55 -070023928 phalConfigBSS->extSetStaKeyParam.key[keyIndex].keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -070023929 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].keyId;
23930 phalConfigBSS->extSetStaKeyParam.key[keyIndex].unicast =
23931 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].unicast;
23932 phalConfigBSS->extSetStaKeyParam.key[keyIndex].keyDirection =
23933 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].keyDirection;
23934 wpalMemoryCopy(phalConfigBSS->extSetStaKeyParam.key[keyIndex].keyRsc,
Jeff Johnsone7245742012-09-05 17:12:55 -070023935 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].keyRsc,
Jeff Johnson295189b2012-06-20 16:38:30 -070023936 WDI_MAX_KEY_RSC_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070023937 phalConfigBSS->extSetStaKeyParam.key[keyIndex].paeRole =
Jeff Johnson295189b2012-06-20 16:38:30 -070023938 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].paeRole;
Jeff Johnsone7245742012-09-05 17:12:55 -070023939 phalConfigBSS->extSetStaKeyParam.key[keyIndex].keyLength =
Jeff Johnson295189b2012-06-20 16:38:30 -070023940 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].keyLength;
23941 wpalMemoryCopy(phalConfigBSS->extSetStaKeyParam.key[keyIndex].key,
Jeff Johnsone7245742012-09-05 17:12:55 -070023942 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].key,
Jeff Johnson295189b2012-06-20 16:38:30 -070023943 WDI_MAX_KEY_LENGTH);
23944 }
Jeff Johnson295189b2012-06-20 16:38:30 -070023945 }
23946 else/* phalConfigBSS->extSetStaKeyParamValid is not set */
23947 {
Jeff Johnsone7245742012-09-05 17:12:55 -070023948 wpalMemoryZero( &phalConfigBSS->extSetStaKeyParam,
Jeff Johnson295189b2012-06-20 16:38:30 -070023949 sizeof(phalConfigBSS->extSetStaKeyParam) );
23950 }
23951
23952#endif /*WLAN_FEATURE_VOWIFI_11R*/
23953
Jeff Johnsone7245742012-09-05 17:12:55 -070023954#ifdef WLAN_FEATURE_11AC
23955 if(phalConfigBSS_V1 != NULL)
23956 {
23957 phalConfigBSS_V1->vhtCapable = pwdiConfigBSS->ucVhtCapableSta;
23958 phalConfigBSS_V1->vhtTxChannelWidthSet = pwdiConfigBSS->ucVhtTxChannelWidthSet;
23959 }
23960#endif
23961
Jeff Johnson295189b2012-06-20 16:38:30 -070023962}/*WDI_CopyWDIConfigBSSToHALConfigBSS*/
23963
23964
Jeff Johnsone7245742012-09-05 17:12:55 -070023965/*Extract the request CB function and user data from a request structure
Jeff Johnson295189b2012-06-20 16:38:30 -070023966 pointed to by user data */
23967WPT_STATIC WPT_INLINE void
23968WDI_ExtractRequestCBFromEvent
23969(
23970 WDI_EventInfoType* pEvent,
Jeff Johnsone7245742012-09-05 17:12:55 -070023971 WDI_ReqStatusCb* ppfnReqCB,
Jeff Johnson295189b2012-06-20 16:38:30 -070023972 void** ppUserData
23973)
23974{
23975 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
23976 switch ( pEvent->wdiRequest )
23977 {
23978 case WDI_START_REQ:
23979 *ppfnReqCB = ((WDI_StartReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23980 *ppUserData = ((WDI_StartReqParamsType*)pEvent->pEventData)->pUserData;
23981 break;
23982 case WDI_STOP_REQ:
23983 *ppfnReqCB = ((WDI_StopReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23984 *ppUserData = ((WDI_StopReqParamsType*)pEvent->pEventData)->pUserData;
23985 break;
23986 case WDI_INIT_SCAN_REQ:
23987 *ppfnReqCB = ((WDI_InitScanReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23988 *ppUserData = ((WDI_InitScanReqParamsType*)pEvent->pEventData)->pUserData;
23989 break;
23990 case WDI_START_SCAN_REQ:
23991 *ppfnReqCB = ((WDI_StartScanReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23992 *ppUserData = ((WDI_StartScanReqParamsType*)pEvent->pEventData)->pUserData;
23993 break;
23994 case WDI_END_SCAN_REQ:
23995 *ppfnReqCB = ((WDI_EndScanReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23996 *ppUserData = ((WDI_EndScanReqParamsType*)pEvent->pEventData)->pUserData;
23997 break;
23998 case WDI_FINISH_SCAN_REQ:
23999 *ppfnReqCB = ((WDI_FinishScanReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24000 *ppUserData = ((WDI_FinishScanReqParamsType*)pEvent->pEventData)->pUserData;
24001 break;
24002 case WDI_JOIN_REQ:
24003 *ppfnReqCB = ((WDI_JoinReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24004 *ppUserData = ((WDI_JoinReqParamsType*)pEvent->pEventData)->pUserData;
24005 break;
24006 case WDI_CONFIG_BSS_REQ:
24007 *ppfnReqCB = ((WDI_ConfigBSSReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24008 *ppUserData = ((WDI_ConfigBSSReqParamsType*)pEvent->pEventData)->pUserData;
24009 break;
24010 case WDI_DEL_BSS_REQ:
24011 *ppfnReqCB = ((WDI_DelBSSReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24012 *ppUserData = ((WDI_DelBSSReqParamsType*)pEvent->pEventData)->pUserData;
24013 break;
24014 case WDI_POST_ASSOC_REQ:
24015 *ppfnReqCB = ((WDI_PostAssocReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24016 *ppUserData = ((WDI_PostAssocReqParamsType*)pEvent->pEventData)->pUserData;
24017 break;
24018 case WDI_DEL_STA_REQ:
24019 *ppfnReqCB = ((WDI_DelSTAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24020 *ppUserData = ((WDI_DelSTAReqParamsType*)pEvent->pEventData)->pUserData;
24021 break;
24022 case WDI_DEL_STA_SELF_REQ:
24023 *ppfnReqCB = ((WDI_DelSTASelfReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24024 *ppUserData = ((WDI_DelSTASelfReqParamsType*)pEvent->pEventData)->pUserData;
24025 break;
24026
24027 case WDI_SET_BSS_KEY_REQ:
24028 *ppfnReqCB = ((WDI_SetBSSKeyReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24029 *ppUserData = ((WDI_SetBSSKeyReqParamsType*)pEvent->pEventData)->pUserData;
24030 break;
24031 case WDI_RMV_BSS_KEY_REQ:
24032 *ppfnReqCB = ((WDI_RemoveBSSKeyReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24033 *ppUserData = ((WDI_RemoveBSSKeyReqParamsType*)pEvent->pEventData)->pUserData;
24034 break;
24035 case WDI_SET_STA_KEY_REQ:
24036 *ppfnReqCB = ((WDI_SetSTAKeyReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24037 *ppUserData = ((WDI_SetSTAKeyReqParamsType*)pEvent->pEventData)->pUserData;
24038 break;
24039 case WDI_RMV_STA_KEY_REQ:
24040 *ppfnReqCB = ((WDI_RemoveSTAKeyReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24041 *ppUserData = ((WDI_RemoveSTAKeyReqParamsType*)pEvent->pEventData)->pUserData;
24042 break;
24043 case WDI_ADD_TS_REQ:
24044 *ppfnReqCB = ((WDI_AddTSReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24045 *ppUserData = ((WDI_AddTSReqParamsType*)pEvent->pEventData)->pUserData;
24046 break;
24047 case WDI_DEL_TS_REQ:
24048 *ppfnReqCB = ((WDI_DelTSReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24049 *ppUserData = ((WDI_DelTSReqParamsType*)pEvent->pEventData)->pUserData;
24050 break;
24051 case WDI_UPD_EDCA_PRMS_REQ:
24052 *ppfnReqCB = ((WDI_UpdateEDCAParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24053 *ppUserData = ((WDI_UpdateEDCAParamsType*)pEvent->pEventData)->pUserData;
24054 break;
24055 case WDI_ADD_BA_SESSION_REQ:
24056 *ppfnReqCB = ((WDI_AddBASessionReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24057 *ppUserData = ((WDI_AddBASessionReqParamsType*)pEvent->pEventData)->pUserData;
24058 break;
24059 case WDI_DEL_BA_REQ:
24060 *ppfnReqCB = ((WDI_DelBAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24061 *ppUserData = ((WDI_DelBAReqParamsType*)pEvent->pEventData)->pUserData;
24062 break;
24063#ifdef FEATURE_WLAN_CCX
24064 case WDI_TSM_STATS_REQ:
24065 *ppfnReqCB = ((WDI_TSMStatsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24066 *ppUserData = ((WDI_TSMStatsReqParamsType*)pEvent->pEventData)->pUserData;
24067 break;
24068#endif
24069 case WDI_CH_SWITCH_REQ:
24070 *ppfnReqCB = ((WDI_SwitchChReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24071 *ppUserData = ((WDI_SwitchChReqParamsType*)pEvent->pEventData)->pUserData;
24072 break;
24073 case WDI_CONFIG_STA_REQ:
24074 *ppfnReqCB = ((WDI_ConfigSTAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24075 *ppUserData = ((WDI_ConfigSTAReqParamsType*)pEvent->pEventData)->pUserData;
24076 break;
24077 case WDI_SET_LINK_ST_REQ:
24078 *ppfnReqCB = ((WDI_SetLinkReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24079 *ppUserData = ((WDI_SetLinkReqParamsType*)pEvent->pEventData)->pUserData;
24080 break;
24081 case WDI_GET_STATS_REQ:
24082 *ppfnReqCB = ((WDI_GetStatsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24083 *ppUserData = ((WDI_GetStatsReqParamsType*)pEvent->pEventData)->pUserData;
24084 break;
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -080024085#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_CCX || defined(FEATURE_WLAN_LFR)
24086 case WDI_GET_ROAM_RSSI_REQ:
24087 *ppfnReqCB = ((WDI_GetRoamRssiReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24088 *ppUserData = ((WDI_GetRoamRssiReqParamsType*)pEvent->pEventData)->pUserData;
24089 break;
24090#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070024091 case WDI_UPDATE_CFG_REQ:
24092 *ppfnReqCB = ((WDI_UpdateCfgReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24093 *ppUserData = ((WDI_UpdateCfgReqParamsType*)pEvent->pEventData)->pUserData;
24094 break;
24095 case WDI_ADD_BA_REQ:
24096 *ppfnReqCB = ((WDI_AddBAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24097 *ppUserData = ((WDI_AddBAReqParamsType*)pEvent->pEventData)->pUserData;
24098 break;
24099 case WDI_TRIGGER_BA_REQ:
24100 *ppfnReqCB = ((WDI_TriggerBAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24101 *ppUserData = ((WDI_TriggerBAReqParamsType*)pEvent->pEventData)->pUserData;
24102 break;
24103 case WDI_UPD_BCON_PRMS_REQ:
24104 *ppfnReqCB = ((WDI_UpdateBeaconParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24105 *ppUserData = ((WDI_UpdateBeaconParamsType*)pEvent->pEventData)->pUserData;
24106 break;
24107 case WDI_SND_BCON_REQ:
24108 *ppfnReqCB = ((WDI_SendBeaconParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24109 *ppUserData = ((WDI_SendBeaconParamsType*)pEvent->pEventData)->pUserData;
24110 break;
24111 case WDI_ENTER_BMPS_REQ:
24112 *ppfnReqCB = ((WDI_EnterBmpsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24113 *ppUserData = ((WDI_EnterBmpsReqParamsType*)pEvent->pEventData)->pUserData;
24114 break;
24115 case WDI_EXIT_BMPS_REQ:
24116 *ppfnReqCB = ((WDI_ExitBmpsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24117 *ppUserData = ((WDI_ExitBmpsReqParamsType*)pEvent->pEventData)->pUserData;
24118 break;
24119 case WDI_ENTER_UAPSD_REQ:
24120 *ppfnReqCB = ((WDI_EnterUapsdReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24121 *ppUserData = ((WDI_EnterUapsdReqParamsType*)pEvent->pEventData)->pUserData;
24122 break;
Yue Ma7f44bbe2013-04-12 11:47:39 -070024123 case WDI_EXIT_UAPSD_REQ:
24124 *ppfnReqCB = ((WDI_ExitUapsdReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24125 *ppUserData = ((WDI_ExitUapsdReqParamsType*)pEvent->pEventData)->pUserData;
24126 break;
24127 case WDI_SET_UAPSD_PARAM_REQ:
24128 *ppfnReqCB = ((WDI_SetUapsdAcParamsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24129 *ppUserData = ((WDI_SetUapsdAcParamsReqParamsType*)pEvent->pEventData)->pUserData;
24130 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070024131 case WDI_UPDATE_UAPSD_PARAM_REQ:
24132 *ppfnReqCB = ((WDI_UpdateUapsdReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24133 *ppUserData = ((WDI_UpdateUapsdReqParamsType*)pEvent->pEventData)->pUserData;
24134 break;
24135 case WDI_CONFIGURE_RXP_FILTER_REQ:
24136 *ppfnReqCB = ((WDI_ConfigureRxpFilterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24137 *ppUserData = ((WDI_ConfigureRxpFilterReqParamsType*)pEvent->pEventData)->pUserData;
24138 break;
24139 case WDI_SET_BEACON_FILTER_REQ:
24140 *ppfnReqCB = ((WDI_BeaconFilterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24141 *ppUserData = ((WDI_BeaconFilterReqParamsType*)pEvent->pEventData)->pUserData;
24142 break;
24143 case WDI_REM_BEACON_FILTER_REQ:
24144 *ppfnReqCB = ((WDI_RemBeaconFilterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24145 *ppUserData = ((WDI_RemBeaconFilterReqParamsType*)pEvent->pEventData)->pUserData;
Jeff Johnsone7245742012-09-05 17:12:55 -070024146 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070024147 case WDI_SET_RSSI_THRESHOLDS_REQ:
24148 *ppfnReqCB = ((WDI_SetRSSIThresholdsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24149 *ppUserData = ((WDI_SetRSSIThresholdsReqParamsType*)pEvent->pEventData)->pUserData;
24150 break;
24151 case WDI_HOST_OFFLOAD_REQ:
24152 *ppfnReqCB = ((WDI_HostOffloadReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24153 *ppUserData = ((WDI_HostOffloadReqParamsType*)pEvent->pEventData)->pUserData;
24154 break;
24155 case WDI_WOWL_ADD_BC_PTRN_REQ:
24156 *ppfnReqCB = ((WDI_WowlAddBcPtrnReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24157 *ppUserData = ((WDI_WowlAddBcPtrnReqParamsType*)pEvent->pEventData)->pUserData;
24158 break;
24159 case WDI_WOWL_DEL_BC_PTRN_REQ:
24160 *ppfnReqCB = ((WDI_WowlDelBcPtrnReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24161 *ppUserData = ((WDI_WowlDelBcPtrnReqParamsType*)pEvent->pEventData)->pUserData;
24162 break;
24163 case WDI_WOWL_ENTER_REQ:
24164 *ppfnReqCB = ((WDI_WowlEnterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24165 *ppUserData = ((WDI_WowlEnterReqParamsType*)pEvent->pEventData)->pUserData;
24166 break;
Yue Ma7f44bbe2013-04-12 11:47:39 -070024167 case WDI_WOWL_EXIT_REQ:
24168 *ppfnReqCB = ((WDI_WowlExitReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24169 *ppUserData = ((WDI_WowlExitReqParamsType*)pEvent->pEventData)->pUserData;
24170 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070024171 case WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ:
24172 *ppfnReqCB = ((WDI_ConfigureAppsCpuWakeupStateReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24173 *ppUserData = ((WDI_ConfigureAppsCpuWakeupStateReqParamsType*)pEvent->pEventData)->pUserData;
24174 break;
24175 case WDI_FLUSH_AC_REQ:
24176 *ppfnReqCB = ((WDI_FlushAcReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24177 *ppUserData = ((WDI_FlushAcReqParamsType*)pEvent->pEventData)->pUserData;
24178 break;
24179 case WDI_BTAMP_EVENT_REQ:
24180 *ppfnReqCB = ((WDI_BtAmpEventParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24181 *ppUserData = ((WDI_BtAmpEventParamsType*)pEvent->pEventData)->pUserData;
24182 break;
24183 case WDI_KEEP_ALIVE_REQ:
24184 *ppfnReqCB = ((WDI_KeepAliveReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24185 *ppUserData = ((WDI_KeepAliveReqParamsType*)pEvent->pEventData)->pUserData;
24186 break;
Yue Ma7f44bbe2013-04-12 11:47:39 -070024187#if defined FEATURE_WLAN_SCAN_PNO
24188 case WDI_SET_PREF_NETWORK_REQ:
24189 *ppfnReqCB = ((WDI_PNOScanReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24190 *ppUserData = ((WDI_PNOScanReqParamsType*)pEvent->pEventData)->pUserData;
24191 break;
24192 case WDI_SET_RSSI_FILTER_REQ:
24193 *ppfnReqCB = ((WDI_SetRssiFilterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24194 *ppUserData = ((WDI_SetRssiFilterReqParamsType*)pEvent->pEventData)->pUserData;
24195 break;
24196 case WDI_UPDATE_SCAN_PARAMS_REQ:
24197 *ppfnReqCB = ((WDI_UpdateScanParamsInfoType*)pEvent->pEventData)->wdiReqStatusCB;
24198 *ppUserData = ((WDI_UpdateScanParamsInfoType*)pEvent->pEventData)->pUserData;
24199 break;
24200#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070024201 case WDI_SET_TX_PER_TRACKING_REQ:
24202 *ppfnReqCB = ((WDI_SetTxPerTrackingReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24203 *ppUserData = ((WDI_SetTxPerTrackingReqParamsType*)pEvent->pEventData)->pUserData;
Tushnim Bhattacharyya4858ab62013-03-08 10:15:42 -080024204 break;
Yue Ma7f44bbe2013-04-12 11:47:39 -070024205#if defined WLAN_FEATURE_PACKET_FILTERING
24206 case WDI_8023_MULTICAST_LIST_REQ:
24207 *ppfnReqCB = ((WDI_RcvFltPktSetMcListReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24208 *ppUserData = ((WDI_RcvFltPktSetMcListReqParamsType*)pEvent->pEventData)->pUserData;
24209 break;
Tushnim Bhattacharyya4858ab62013-03-08 10:15:42 -080024210 case WDI_RECEIVE_FILTER_SET_FILTER_REQ:
24211 *ppfnReqCB = ((WDI_SetRcvPktFilterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24212 *ppUserData = ((WDI_SetRcvPktFilterReqParamsType*)pEvent->pEventData)->pUserData;
24213 break;
24214 case WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ:
24215 *ppfnReqCB = ((WDI_RcvFltPktMatchCntReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24216 *ppUserData = ((WDI_RcvFltPktMatchCntReqParamsType*)pEvent->pEventData)->pUserData;
24217 break;
24218 case WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ:
24219 *ppfnReqCB = ((WDI_RcvFltPktClearReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24220 *ppUserData = ((WDI_RcvFltPktClearReqParamsType*)pEvent->pEventData)->pUserData;
24221 break;
Yue Ma7f44bbe2013-04-12 11:47:39 -070024222#endif
24223 case WDI_SET_POWER_PARAMS_REQ:
24224 *ppfnReqCB = ((WDI_SetPowerParamsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24225 *ppUserData = ((WDI_SetPowerParamsReqParamsType*)pEvent->pEventData)->pUserData;
24226 break;
24227#if defined WLAN_FEATURE_GTK_OFFLOAD
24228 case WDI_GTK_OFFLOAD_REQ:
24229 *ppfnReqCB = ((WDI_GtkOffloadReqMsg*)pEvent->pEventData)->wdiReqStatusCB;
24230 *ppUserData = ((WDI_GtkOffloadReqMsg*)pEvent->pEventData)->pUserData;
24231 break;
24232 case WDI_GTK_OFFLOAD_GETINFO_REQ:
24233 *ppfnReqCB = ((WDI_GtkOffloadGetInfoReqMsg*)pEvent->pEventData)->wdiReqStatusCB;
24234 *ppUserData = ((WDI_GtkOffloadGetInfoReqMsg*)pEvent->pEventData)->pUserData;
24235 break;
24236#endif
Tushnim Bhattacharyya4858ab62013-03-08 10:15:42 -080024237
Jeff Johnson295189b2012-06-20 16:38:30 -070024238 default:
24239 *ppfnReqCB = NULL;
24240 *ppUserData = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070024241 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070024242 }
24243}/*WDI_ExtractRequestCBFromEvent*/
24244
24245
24246/**
Jeff Johnsone7245742012-09-05 17:12:55 -070024247 @brief WDI_IsHwFrameTxTranslationCapable checks to see if HW
Jeff Johnson295189b2012-06-20 16:38:30 -070024248 frame xtl is enabled for a particular STA.
24249
24250 WDI_PostAssocReq must have been called.
24251
Jeff Johnsone7245742012-09-05 17:12:55 -070024252 @param uSTAIdx: STA index
24253
Jeff Johnson295189b2012-06-20 16:38:30 -070024254 @see WDI_PostAssocReq
24255 @return Result of the function call
24256*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024257wpt_boolean
Jeff Johnson295189b2012-06-20 16:38:30 -070024258WDI_IsHwFrameTxTranslationCapable
24259(
24260 wpt_uint8 uSTAIdx
24261)
24262{
Jeff Johnsone7245742012-09-05 17:12:55 -070024263 /*!! FIX ME - this must eventually be per station - for now just feedback
Jeff Johnson295189b2012-06-20 16:38:30 -070024264 uma value*/
24265 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024266 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070024267 ------------------------------------------------------------------------*/
24268 if ( eWLAN_PAL_FALSE == gWDIInitialized )
24269 {
24270 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
24271 "WDI API call before module is initialized - Fail request");
24272
Jeff Johnsone7245742012-09-05 17:12:55 -070024273 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070024274 }
24275
Gopichand Nakkala976e3252013-01-03 15:45:56 -080024276#ifdef WLAN_SOFTAP_VSTA_FEATURE
24277 if (IS_VSTA_IDX(uSTAIdx))
24278 {
24279 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
24280 "STA %d is a Virtual STA, "
24281 "HW frame translation disabled", uSTAIdx);
24282 return eWLAN_PAL_FALSE;
24283 }
24284#endif
Jeff Johnsone7245742012-09-05 17:12:55 -070024285
Jeff Johnson295189b2012-06-20 16:38:30 -070024286 return gWDICb.bFrameTransEnabled;
24287}/*WDI_IsHwFrameTxTranslationCapable*/
24288
24289#ifdef FEATURE_WLAN_SCAN_PNO
24290/**
24291 @brief WDI_SetPreferredNetworkList
24292
Jeff Johnsone7245742012-09-05 17:12:55 -070024293 @param pwdiPNOScanReqParams: the Set PNO as specified
Jeff Johnson295189b2012-06-20 16:38:30 -070024294 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -070024295
Jeff Johnson295189b2012-06-20 16:38:30 -070024296 wdiPNOScanCb: callback for passing back the response
24297 of the Set PNO operation received from the
24298 device
Jeff Johnsone7245742012-09-05 17:12:55 -070024299
Jeff Johnson295189b2012-06-20 16:38:30 -070024300 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -070024301 callback
24302
Jeff Johnson295189b2012-06-20 16:38:30 -070024303 @return Result of the function call
24304*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024305WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070024306WDI_SetPreferredNetworkReq
24307(
24308 WDI_PNOScanReqParamsType* pwdiPNOScanReqParams,
24309 WDI_PNOScanCb wdiPNOScanCb,
24310 void* pUserData
24311)
24312{
24313 WDI_EventInfoType wdiEventData = {{0}};
24314 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
24315
24316 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024317 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070024318 ------------------------------------------------------------------------*/
24319 if ( eWLAN_PAL_FALSE == gWDIInitialized )
24320 {
24321 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
24322 "WDI API call before module is initialized - Fail request");
24323
Jeff Johnsone7245742012-09-05 17:12:55 -070024324 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070024325 }
24326
24327 /*------------------------------------------------------------------------
24328 Fill in Event data and post to the Main FSM
24329 ------------------------------------------------------------------------*/
24330 wdiEventData.wdiRequest = WDI_SET_PREF_NETWORK_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070024331 wdiEventData.pEventData = pwdiPNOScanReqParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070024332 wdiEventData.uEventDataSize = sizeof(*pwdiPNOScanReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -070024333 wdiEventData.pCBfnc = wdiPNOScanCb;
Jeff Johnson295189b2012-06-20 16:38:30 -070024334 wdiEventData.pUserData = pUserData;
24335
24336 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
24337}
24338
24339
24340/**
24341 @brief WDI_SetRssiFilterReq
24342
Jeff Johnsone7245742012-09-05 17:12:55 -070024343 @param pwdiRssiFilterReqParams: the Set RSSI Filter as
Jeff Johnson295189b2012-06-20 16:38:30 -070024344 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -070024345
Jeff Johnson295189b2012-06-20 16:38:30 -070024346 wdiRssiFilterCb: callback for passing back the response
24347 of the Set RSSI Filter operation received from the
24348 device
Jeff Johnsone7245742012-09-05 17:12:55 -070024349
Jeff Johnson295189b2012-06-20 16:38:30 -070024350 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -070024351 callback
24352
Jeff Johnson295189b2012-06-20 16:38:30 -070024353 @return Result of the function call
24354*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024355WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070024356WDI_SetRssiFilterReq
24357(
24358 WDI_SetRssiFilterReqParamsType* pwdiRssiFilterReqParams,
24359 WDI_RssiFilterCb wdiRssiFilterCb,
24360 void* pUserData
24361)
24362{
24363 WDI_EventInfoType wdiEventData = {{0}};
24364 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
24365
24366 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024367 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070024368 ------------------------------------------------------------------------*/
24369 if ( eWLAN_PAL_FALSE == gWDIInitialized )
24370 {
24371 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
24372 "WDI API call before module is initialized - Fail request");
24373
Jeff Johnsone7245742012-09-05 17:12:55 -070024374 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070024375 }
24376
24377 /*------------------------------------------------------------------------
24378 Fill in Event data and post to the Main FSM
24379 ------------------------------------------------------------------------*/
24380 wdiEventData.wdiRequest = WDI_SET_RSSI_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070024381 wdiEventData.pEventData = pwdiRssiFilterReqParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070024382 wdiEventData.uEventDataSize = sizeof(*pwdiRssiFilterReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -070024383 wdiEventData.pCBfnc = wdiRssiFilterCb;
Jeff Johnson295189b2012-06-20 16:38:30 -070024384 wdiEventData.pUserData = pUserData;
24385
24386 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
24387}/*WDI_SetRssiFilterReq*/
24388
24389/**
24390 @brief WDI_UpdateScanParamsReq
24391
Jeff Johnsone7245742012-09-05 17:12:55 -070024392 @param pwdiUpdateScanParamsInfoType: the Update Scan Params as specified
Jeff Johnson295189b2012-06-20 16:38:30 -070024393 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -070024394
Jeff Johnson295189b2012-06-20 16:38:30 -070024395 wdiUpdateScanParamsCb: callback for passing back the response
24396 of the Set PNO operation received from the
24397 device
Jeff Johnsone7245742012-09-05 17:12:55 -070024398
Jeff Johnson295189b2012-06-20 16:38:30 -070024399 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -070024400 callback
24401
Jeff Johnson295189b2012-06-20 16:38:30 -070024402 @return Result of the function call
24403*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024404WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070024405WDI_UpdateScanParamsReq
24406(
24407 WDI_UpdateScanParamsInfoType* pwdiUpdateScanParamsInfoType,
24408 WDI_UpdateScanParamsCb wdiUpdateScanParamsCb,
24409 void* pUserData
24410)
24411{
24412 WDI_EventInfoType wdiEventData = {{0}};
24413 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
24414
24415 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024416 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070024417 ------------------------------------------------------------------------*/
24418 if ( eWLAN_PAL_FALSE == gWDIInitialized )
24419 {
24420 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
24421 "WDI API call before module is initialized - Fail request");
24422
Jeff Johnsone7245742012-09-05 17:12:55 -070024423 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070024424 }
24425
24426 /*------------------------------------------------------------------------
24427 Fill in Event data and post to the Main FSM
24428 ------------------------------------------------------------------------*/
24429 wdiEventData.wdiRequest = WDI_UPDATE_SCAN_PARAMS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070024430 wdiEventData.pEventData = pwdiUpdateScanParamsInfoType;
Jeff Johnson295189b2012-06-20 16:38:30 -070024431 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateScanParamsInfoType);
Jeff Johnsone7245742012-09-05 17:12:55 -070024432 wdiEventData.pCBfnc = wdiUpdateScanParamsCb;
Jeff Johnson295189b2012-06-20 16:38:30 -070024433 wdiEventData.pUserData = pUserData;
24434
24435 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
24436}
24437
24438/**
Jeff Johnsone7245742012-09-05 17:12:55 -070024439 @brief Helper function to pack Set Preferred Network List
Jeff Johnson295189b2012-06-20 16:38:30 -070024440 Request parameters
Jeff Johnsone7245742012-09-05 17:12:55 -070024441
24442 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070024443 pwdiPNOScanReqParams: pointer to the info received
24444 from upper layers
24445 ppSendBuffer, pSize - out pointers of the packed buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070024446 and its size
24447
Jeff Johnson295189b2012-06-20 16:38:30 -070024448 @return Result of the function call
24449*/
24450
24451WDI_Status
24452WDI_PackPreferredNetworkList
24453(
24454 WDI_ControlBlockType* pWDICtx,
24455 WDI_PNOScanReqParamsType* pwdiPNOScanReqParams,
24456 wpt_uint8** ppSendBuffer,
24457 wpt_uint16* pSize
24458)
24459{
Jeff Johnsone7245742012-09-05 17:12:55 -070024460 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070024461 wpt_uint16 usDataOffset = 0;
24462 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024463 tpPrefNetwListParams pPrefNetwListParams = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070024464 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070024465 /*-----------------------------------------------------------------------
24466 Get message buffer
24467 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024468 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_PREF_NETWORK_REQ,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024469 sizeof(tPrefNetwListParams),
Jeff Johnson295189b2012-06-20 16:38:30 -070024470 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024471 ( usSendSize < (usDataOffset + sizeof(tPrefNetwListParams) )))
Jeff Johnson295189b2012-06-20 16:38:30 -070024472 {
24473 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080024474 "Unable to get send buffer in Set PNO req %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070024475 pwdiPNOScanReqParams);
24476 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070024477 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024478 }
24479
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024480 pPrefNetwListParams = (tpPrefNetwListParams)(pSendBuffer + usDataOffset);
24481
Jeff Johnson295189b2012-06-20 16:38:30 -070024482 /*-------------------------------------------------------------------------
24483 Fill prefNetwListParams from pwdiPNOScanReqParams->wdiPNOScanInfo
24484 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024485 pPrefNetwListParams->enable =
Jeff Johnson295189b2012-06-20 16:38:30 -070024486 pwdiPNOScanReqParams->wdiPNOScanInfo.bEnable;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024487 pPrefNetwListParams->modePNO =
Jeff Johnson295189b2012-06-20 16:38:30 -070024488 pwdiPNOScanReqParams->wdiPNOScanInfo.wdiModePNO;
24489
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024490 pPrefNetwListParams->ucNetworksCount =
Jeff Johnsone7245742012-09-05 17:12:55 -070024491 (pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount <
Jeff Johnson295189b2012-06-20 16:38:30 -070024492 WLAN_HAL_PNO_MAX_SUPP_NETWORKS)?
Jeff Johnsone7245742012-09-05 17:12:55 -070024493 pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount :
Jeff Johnson295189b2012-06-20 16:38:30 -070024494 WLAN_HAL_PNO_MAX_SUPP_NETWORKS;
24495
24496 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070024497 "WDI SET PNO: Enable %d, Mode %d, Netw Count %d",
Jeff Johnson295189b2012-06-20 16:38:30 -070024498 pwdiPNOScanReqParams->wdiPNOScanInfo.bEnable,
24499 pwdiPNOScanReqParams->wdiPNOScanInfo.wdiModePNO,
24500 pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount);
24501
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024502 for ( i = 0; i < pPrefNetwListParams->ucNetworksCount; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070024503 {
24504 /*SSID of the BSS*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024505 pPrefNetwListParams->aNetworks[i].ssId.length
Jeff Johnson295189b2012-06-20 16:38:30 -070024506 = pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ssId.ucLength;
24507
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024508 wpalMemoryCopy( pPrefNetwListParams->aNetworks[i].ssId.ssId,
Jeff Johnson295189b2012-06-20 16:38:30 -070024509 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ssId.sSSID,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024510 pPrefNetwListParams->aNetworks[i].ssId.length);
Jeff Johnson295189b2012-06-20 16:38:30 -070024511
24512 /*Authentication type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024513 pPrefNetwListParams->aNetworks[i].authentication =
Jeff Johnsone7245742012-09-05 17:12:55 -070024514 (tAuthType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiAuth;
Jeff Johnson295189b2012-06-20 16:38:30 -070024515
24516 /*Encryption type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024517 pPrefNetwListParams->aNetworks[i].encryption =
Jeff Johnsone7245742012-09-05 17:12:55 -070024518 (tEdType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiEncryption;
Jeff Johnson295189b2012-06-20 16:38:30 -070024519
Jeff Johnsone7245742012-09-05 17:12:55 -070024520 /*Indicate the channel on which the Network can be found
Jeff Johnson295189b2012-06-20 16:38:30 -070024521 0 - if all channels */
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024522 pPrefNetwListParams->aNetworks[i].ucChannelCount =
Madan Mohan Koyyalamudia208d102012-10-15 15:18:18 -070024523 (pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ucChannelCount <
24524 WLAN_HAL_PNO_MAX_NETW_CHANNELS)?
24525 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ucChannelCount :
24526 WLAN_HAL_PNO_MAX_NETW_CHANNELS;
Jeff Johnson295189b2012-06-20 16:38:30 -070024527
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024528 wpalMemoryCopy(pPrefNetwListParams->aNetworks[i].aChannels,
Jeff Johnson295189b2012-06-20 16:38:30 -070024529 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].aChannels,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024530 pPrefNetwListParams->aNetworks[i].ucChannelCount);
Jeff Johnson295189b2012-06-20 16:38:30 -070024531
24532 /*Indicates the RSSI threshold for the network to be considered*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024533 pPrefNetwListParams->aNetworks[i].rssiThreshold =
Jeff Johnson295189b2012-06-20 16:38:30 -070024534 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].rssiThreshold;
24535
24536 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070024537 "WDI SET PNO: SSID %d %s",
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024538 pPrefNetwListParams->aNetworks[i].ssId.length,
24539 pPrefNetwListParams->aNetworks[i].ssId.ssId);
Jeff Johnson295189b2012-06-20 16:38:30 -070024540 }
24541
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024542 pPrefNetwListParams->scanTimers.ucScanTimersCount =
Jeff Johnsone7245742012-09-05 17:12:55 -070024543 (pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.ucScanTimersCount <
Jeff Johnson295189b2012-06-20 16:38:30 -070024544 WLAN_HAL_PNO_MAX_SCAN_TIMERS)?
24545 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.ucScanTimersCount :
24546 WLAN_HAL_PNO_MAX_SCAN_TIMERS;
24547
24548 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070024549 "WDI SET PNO: Scan timers count %d 24G P %d 5G Probe %d",
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024550 pPrefNetwListParams->scanTimers.ucScanTimersCount,
Jeff Johnson295189b2012-06-20 16:38:30 -070024551 pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize,
24552 pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize);
24553
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024554 for ( i = 0; i < pPrefNetwListParams->scanTimers.ucScanTimersCount; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070024555 {
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024556 pPrefNetwListParams->scanTimers.aTimerValues[i].uTimerValue =
Jeff Johnson295189b2012-06-20 16:38:30 -070024557 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.aTimerValues[i].uTimerValue;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024558 pPrefNetwListParams->scanTimers.aTimerValues[i].uTimerRepeat =
Jeff Johnson295189b2012-06-20 16:38:30 -070024559 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.aTimerValues[i].uTimerRepeat;
24560 }
24561
24562 /*Copy the probe template*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024563 pPrefNetwListParams->us24GProbeSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070024564 (pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize<
24565 WLAN_HAL_PNO_MAX_PROBE_SIZE)?
24566 pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize:
Jeff Johnsone7245742012-09-05 17:12:55 -070024567 WLAN_HAL_PNO_MAX_PROBE_SIZE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024568
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024569 wpalMemoryCopy(pPrefNetwListParams->a24GProbeTemplate,
Jeff Johnsone7245742012-09-05 17:12:55 -070024570 pwdiPNOScanReqParams->wdiPNOScanInfo.a24GProbeTemplate,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024571 pPrefNetwListParams->us24GProbeSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070024572
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024573 pPrefNetwListParams->us5GProbeSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070024574 (pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize <
24575 WLAN_HAL_PNO_MAX_PROBE_SIZE)?
24576 pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize:
Jeff Johnsone7245742012-09-05 17:12:55 -070024577 WLAN_HAL_PNO_MAX_PROBE_SIZE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024578
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024579 wpalMemoryCopy(pPrefNetwListParams->a5GProbeTemplate,
Jeff Johnsone7245742012-09-05 17:12:55 -070024580 pwdiPNOScanReqParams->wdiPNOScanInfo.a5GProbeTemplate,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024581 pPrefNetwListParams->us5GProbeSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070024582
24583 /*Set the output values*/
24584 *ppSendBuffer = pSendBuffer;
Jeff Johnsone7245742012-09-05 17:12:55 -070024585 *pSize = usSendSize;
Jeff Johnson295189b2012-06-20 16:38:30 -070024586
24587 return WDI_STATUS_SUCCESS;
24588}/*WDI_PackPreferredNetworkList*/
24589
24590/**
Jeff Johnsone7245742012-09-05 17:12:55 -070024591 @brief Helper function to pack Set Preferred Network List
Jeff Johnson295189b2012-06-20 16:38:30 -070024592 Request parameters
Jeff Johnsone7245742012-09-05 17:12:55 -070024593
24594 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070024595 pwdiPNOScanReqParams: pointer to the info received
24596 from upper layers
24597 ppSendBuffer, pSize - out pointers of the packed buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070024598 and its size
24599
Jeff Johnson295189b2012-06-20 16:38:30 -070024600 @return Result of the function call
24601*/
24602
24603WDI_Status
24604WDI_PackPreferredNetworkListNew
24605(
24606 WDI_ControlBlockType* pWDICtx,
24607 WDI_PNOScanReqParamsType* pwdiPNOScanReqParams,
24608 wpt_uint8** ppSendBuffer,
24609 wpt_uint16* pSize
24610)
24611{
Jeff Johnsone7245742012-09-05 17:12:55 -070024612 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070024613 wpt_uint16 usDataOffset = 0;
24614 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024615 tpPrefNetwListParamsNew pPrefNetwListParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070024616 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070024617
24618 /*-----------------------------------------------------------------------
24619 Get message buffer
24620 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024621 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_PREF_NETWORK_REQ,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024622 sizeof(tPrefNetwListParamsNew),
Jeff Johnson295189b2012-06-20 16:38:30 -070024623 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024624 ( usSendSize < (usDataOffset + sizeof(tPrefNetwListParamsNew) )))
Jeff Johnson295189b2012-06-20 16:38:30 -070024625 {
24626 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080024627 "Unable to get send buffer in Set PNO req %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070024628 pwdiPNOScanReqParams);
24629 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070024630 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024631 }
24632
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024633 pPrefNetwListParams = (tpPrefNetwListParamsNew)(pSendBuffer + usDataOffset);
24634
Jeff Johnson295189b2012-06-20 16:38:30 -070024635 /*-------------------------------------------------------------------------
24636 Fill prefNetwListParams from pwdiPNOScanReqParams->wdiPNOScanInfo
24637 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024638 pPrefNetwListParams->enable =
Jeff Johnson295189b2012-06-20 16:38:30 -070024639 pwdiPNOScanReqParams->wdiPNOScanInfo.bEnable;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024640 pPrefNetwListParams->modePNO =
Jeff Johnson295189b2012-06-20 16:38:30 -070024641 pwdiPNOScanReqParams->wdiPNOScanInfo.wdiModePNO;
24642
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024643 pPrefNetwListParams->ucNetworksCount =
Jeff Johnsone7245742012-09-05 17:12:55 -070024644 (pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount <
Jeff Johnson295189b2012-06-20 16:38:30 -070024645 WLAN_HAL_PNO_MAX_SUPP_NETWORKS)?
Jeff Johnsone7245742012-09-05 17:12:55 -070024646 pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount :
Jeff Johnson295189b2012-06-20 16:38:30 -070024647 WLAN_HAL_PNO_MAX_SUPP_NETWORKS;
24648
24649 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070024650 "WDI SET PNO: Enable %d, Mode %d, Netw Count %d",
Jeff Johnson295189b2012-06-20 16:38:30 -070024651 pwdiPNOScanReqParams->wdiPNOScanInfo.bEnable,
24652 pwdiPNOScanReqParams->wdiPNOScanInfo.wdiModePNO,
24653 pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount);
24654
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024655 for ( i = 0; i < pPrefNetwListParams->ucNetworksCount; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070024656 {
24657 /*SSID of the BSS*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024658 pPrefNetwListParams->aNetworks[i].ssId.length
Jeff Johnson295189b2012-06-20 16:38:30 -070024659 = pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ssId.ucLength;
24660
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024661 wpalMemoryCopy( pPrefNetwListParams->aNetworks[i].ssId.ssId,
Jeff Johnson295189b2012-06-20 16:38:30 -070024662 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ssId.sSSID,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024663 pPrefNetwListParams->aNetworks[i].ssId.length);
Jeff Johnson295189b2012-06-20 16:38:30 -070024664
24665 /*Authentication type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024666 pPrefNetwListParams->aNetworks[i].authentication =
Jeff Johnsone7245742012-09-05 17:12:55 -070024667 (tAuthType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiAuth;
Jeff Johnson295189b2012-06-20 16:38:30 -070024668
24669 /*Encryption type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024670 pPrefNetwListParams->aNetworks[i].encryption =
Jeff Johnsone7245742012-09-05 17:12:55 -070024671 (tEdType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiEncryption;
Jeff Johnson295189b2012-06-20 16:38:30 -070024672
24673 /*SSID bcast type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024674 pPrefNetwListParams->aNetworks[i].bcastNetworkType =
Jeff Johnsone7245742012-09-05 17:12:55 -070024675 (tSSIDBcastType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiBcastNetworkType;
Jeff Johnson295189b2012-06-20 16:38:30 -070024676
Jeff Johnsone7245742012-09-05 17:12:55 -070024677 /*Indicate the channel on which the Network can be found
Jeff Johnson295189b2012-06-20 16:38:30 -070024678 0 - if all channels */
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024679 pPrefNetwListParams->aNetworks[i].ucChannelCount =
Jeff Johnson295189b2012-06-20 16:38:30 -070024680 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ucChannelCount;
24681
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024682 wpalMemoryCopy(pPrefNetwListParams->aNetworks[i].aChannels,
Jeff Johnson295189b2012-06-20 16:38:30 -070024683 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].aChannels,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024684 pPrefNetwListParams->aNetworks[i].ucChannelCount);
Jeff Johnson295189b2012-06-20 16:38:30 -070024685
24686 /*Indicates the RSSI threshold for the network to be considered*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024687 pPrefNetwListParams->aNetworks[i].rssiThreshold =
Jeff Johnson295189b2012-06-20 16:38:30 -070024688 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].rssiThreshold;
24689
24690 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070024691 "WDI SET PNO: SSID %d %s",
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024692 pPrefNetwListParams->aNetworks[i].ssId.length,
24693 pPrefNetwListParams->aNetworks[i].ssId.ssId);
Jeff Johnson295189b2012-06-20 16:38:30 -070024694 }
24695
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024696 pPrefNetwListParams->scanTimers.ucScanTimersCount =
Jeff Johnsone7245742012-09-05 17:12:55 -070024697 (pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.ucScanTimersCount <
Jeff Johnson295189b2012-06-20 16:38:30 -070024698 WLAN_HAL_PNO_MAX_SCAN_TIMERS)?
24699 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.ucScanTimersCount :
24700 WLAN_HAL_PNO_MAX_SCAN_TIMERS;
24701
24702 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070024703 "WDI SET PNO: Scan timers count %d 24G P %d 5G Probe %d",
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024704 pPrefNetwListParams->scanTimers.ucScanTimersCount,
Jeff Johnson295189b2012-06-20 16:38:30 -070024705 pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize,
24706 pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize);
24707
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024708 for ( i = 0; i < pPrefNetwListParams->scanTimers.ucScanTimersCount; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070024709 {
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024710 pPrefNetwListParams->scanTimers.aTimerValues[i].uTimerValue =
Jeff Johnson295189b2012-06-20 16:38:30 -070024711 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.aTimerValues[i].uTimerValue;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024712 pPrefNetwListParams->scanTimers.aTimerValues[i].uTimerRepeat =
Jeff Johnson295189b2012-06-20 16:38:30 -070024713 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.aTimerValues[i].uTimerRepeat;
24714 }
24715
24716 /*Copy the probe template*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024717 pPrefNetwListParams->us24GProbeSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070024718 (pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize<
24719 WLAN_HAL_PNO_MAX_PROBE_SIZE)?
24720 pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize:
Jeff Johnsone7245742012-09-05 17:12:55 -070024721 WLAN_HAL_PNO_MAX_PROBE_SIZE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024722
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024723 wpalMemoryCopy(pPrefNetwListParams->a24GProbeTemplate,
Jeff Johnsone7245742012-09-05 17:12:55 -070024724 pwdiPNOScanReqParams->wdiPNOScanInfo.a24GProbeTemplate,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024725 pPrefNetwListParams->us24GProbeSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070024726
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024727 pPrefNetwListParams->us5GProbeSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070024728 (pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize <
24729 WLAN_HAL_PNO_MAX_PROBE_SIZE)?
24730 pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize:
Jeff Johnsone7245742012-09-05 17:12:55 -070024731 WLAN_HAL_PNO_MAX_PROBE_SIZE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024732
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024733 wpalMemoryCopy(pPrefNetwListParams->a5GProbeTemplate,
Jeff Johnsone7245742012-09-05 17:12:55 -070024734 pwdiPNOScanReqParams->wdiPNOScanInfo.a5GProbeTemplate,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024735 pPrefNetwListParams->us5GProbeSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070024736
Jeff Johnson295189b2012-06-20 16:38:30 -070024737
24738 /*Set the output values*/
24739 *ppSendBuffer = pSendBuffer;
Jeff Johnsone7245742012-09-05 17:12:55 -070024740 *pSize = usSendSize;
Jeff Johnson295189b2012-06-20 16:38:30 -070024741
24742 return WDI_STATUS_SUCCESS;
24743}/*WDI_PackPreferredNetworkListNew*/
24744
24745/**
24746 @brief Process Set Preferred Network List Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070024747
24748 @param pWDICtx: pointer to the WLAN DAL context
24749 pEventData: pointer to the event information structure
24750
Jeff Johnson295189b2012-06-20 16:38:30 -070024751 @return Result of the function call
24752*/
24753WDI_Status
24754WDI_ProcessSetPreferredNetworkReq
Jeff Johnsone7245742012-09-05 17:12:55 -070024755(
Jeff Johnson295189b2012-06-20 16:38:30 -070024756 WDI_ControlBlockType* pWDICtx,
24757 WDI_EventInfoType* pEventData
24758)
24759{
24760 WDI_PNOScanReqParamsType* pwdiPNOScanReqParams = NULL;
24761 WDI_PNOScanCb wdiPNOScanCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070024762 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070024763 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070024764 WDI_Status wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070024765
24766 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024767 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070024768 -------------------------------------------------------------------------*/
24769 if (( NULL == pEventData ) ||
24770 ( NULL == (pwdiPNOScanReqParams = (WDI_PNOScanReqParamsType*)pEventData->pEventData)) ||
24771 ( NULL == (wdiPNOScanCb = (WDI_PNOScanCb)pEventData->pCBfnc)))
24772 {
24773 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024774 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024775 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070024776 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024777 }
24778
24779 /*-------------------------------------------------------------------------
24780 Pack the PNO request structure based on version
24781 -------------------------------------------------------------------------*/
24782 if ( pWDICtx->wdiPNOVersion > 0 )
24783 {
24784 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024785 "%s: PNO new version %d ", __func__,
Jeff Johnson295189b2012-06-20 16:38:30 -070024786 pWDICtx->wdiPNOVersion);
24787
24788 wdiStatus = WDI_PackPreferredNetworkListNew( pWDICtx, pwdiPNOScanReqParams,
24789 &pSendBuffer, &usSendSize);
24790 }
24791 else
24792 {
24793 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024794 "%s: PNO old version %d ", __func__,
Jeff Johnson295189b2012-06-20 16:38:30 -070024795 pWDICtx->wdiPNOVersion);
24796
24797 wdiStatus = WDI_PackPreferredNetworkList( pWDICtx, pwdiPNOScanReqParams,
24798 &pSendBuffer, &usSendSize);
24799 }
24800
24801 if (( WDI_STATUS_SUCCESS != wdiStatus )||
24802 ( NULL == pSendBuffer )||( 0 == usSendSize ))
24803 {
24804 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024805 "%s: failed to pack request parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024806 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070024807 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070024808 }
24809
24810 pWDICtx->wdiReqStatusCB = pwdiPNOScanReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070024811 pWDICtx->pReqStatusUserData = pwdiPNOScanReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070024812
24813 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024814 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070024815 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024816 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
24817 wdiPNOScanCb, pEventData->pUserData, WDI_SET_PREF_NETWORK_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070024818}
24819
24820/**
24821 @brief Process Set RSSI Filter Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070024822
24823 @param pWDICtx: pointer to the WLAN DAL context
24824 pEventData: pointer to the event information structure
24825
Jeff Johnson295189b2012-06-20 16:38:30 -070024826 @see
24827 @return Result of the function call
24828*/
24829WDI_Status
24830WDI_ProcessSetRssiFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070024831(
Jeff Johnson295189b2012-06-20 16:38:30 -070024832 WDI_ControlBlockType* pWDICtx,
24833 WDI_EventInfoType* pEventData
24834)
24835{
24836 WDI_SetRssiFilterReqParamsType* pwdiRssiFilterReqParams = NULL;
24837 WDI_RssiFilterCb wdiRssiFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070024838 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070024839 wpt_uint16 usDataOffset = 0;
24840 wpt_uint16 usSendSize = 0;
24841 wpt_uint8 ucRssiThreshold;
24842
24843 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024844 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070024845 -------------------------------------------------------------------------*/
24846 if (( NULL == pEventData ) ||
24847 ( NULL == (pwdiRssiFilterReqParams = (WDI_SetRssiFilterReqParamsType*)pEventData->pEventData)) ||
24848 ( NULL == (wdiRssiFilterCb = (WDI_RssiFilterCb)pEventData->pCBfnc)))
24849 {
24850 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024851 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024852 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070024853 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024854 }
24855
24856 /*-----------------------------------------------------------------------
24857 Get message buffer
24858 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024859 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_PREF_NETWORK_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070024860 sizeof(ucRssiThreshold),
24861 &pSendBuffer, &usDataOffset, &usSendSize))||
24862 ( usSendSize < (usDataOffset + sizeof(ucRssiThreshold) )))
24863 {
24864 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080024865 "Unable to get send buffer in Set PNO req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070024866 pEventData, pwdiRssiFilterReqParams, wdiRssiFilterCb);
24867 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070024868 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024869 }
24870
24871 ucRssiThreshold = pwdiRssiFilterReqParams->rssiThreshold;
24872
Jeff Johnsone7245742012-09-05 17:12:55 -070024873 wpalMemoryCopy( pSendBuffer+usDataOffset,
24874 &ucRssiThreshold,
24875 sizeof(ucRssiThreshold));
Jeff Johnson295189b2012-06-20 16:38:30 -070024876
24877 pWDICtx->wdiReqStatusCB = pwdiRssiFilterReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070024878 pWDICtx->pReqStatusUserData = pwdiRssiFilterReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070024879
24880 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024881 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070024882 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024883 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
24884 wdiRssiFilterCb, pEventData->pUserData, WDI_SET_RSSI_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070024885}
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070024886#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
24887/**
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070024888 @brief WDI_RoamScanOffloadReq
Jeff Johnson295189b2012-06-20 16:38:30 -070024889
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070024890 @param pwdiRoamScanOffloadReqParams: the LookupReq as specified
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070024891 by the Device Interface
24892
24893 wdiRoamOffloadScancb: callback for passing back the response
24894 of the Roam Candidate Lookup Req operation received from the
24895 device
24896
24897 pUserData: user data will be passed back with the
24898 callback
24899 @return Result of the function call
24900*/
24901WDI_Status
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070024902WDI_RoamScanOffloadReq
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070024903(
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070024904 WDI_RoamScanOffloadReqParamsType* pwdiRoamScanOffloadReqParams,
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070024905 WDI_RoamOffloadScanCb wdiRoamOffloadScancb,
24906 void* pUserData
24907)
24908{
24909 WDI_EventInfoType wdiEventData = {{0}};
24910 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
24911
24912 /*------------------------------------------------------------------------
24913 Sanity Check
24914 ------------------------------------------------------------------------*/
24915 if ( eWLAN_PAL_FALSE == gWDIInitialized )
24916 {
24917 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
24918 "WDI API call before module is initialized - Fail request");
24919
24920 return WDI_STATUS_E_NOT_ALLOWED;
24921 }
24922
24923 /*------------------------------------------------------------------------
24924 Fill in Event data and post to the Main FSM
24925 ------------------------------------------------------------------------*/
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070024926 wdiEventData.wdiRequest = WDI_ROAM_SCAN_OFFLOAD_REQ;
24927 wdiEventData.pEventData = pwdiRoamScanOffloadReqParams;
24928 wdiEventData.uEventDataSize = sizeof(*pwdiRoamScanOffloadReqParams);
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070024929 wdiEventData.pCBfnc = wdiRoamOffloadScancb;
24930 wdiEventData.pUserData = pUserData;
24931
24932 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
24933}
24934
24935void
24936WDI_wdiEdTypeEncToEdTypeEnc(tEdType *EdType, WDI_EdType wdiEdType)
24937{
24938 switch (wdiEdType)
24939 {
24940 case WDI_ED_NONE:
24941 *EdType = eED_NONE;
24942 break;
24943 case WDI_ED_WEP40:
24944 case WDI_ED_WEP104:
24945 *EdType = eED_WEP;
24946 break;
24947 case WDI_ED_TKIP:
24948 *EdType = eED_TKIP;
24949 break;
24950 case WDI_ED_CCMP:
24951#ifdef WLAN_FEATURE_11W
24952 case WDI_ED_AES_128_CMAC:
24953#endif
24954 *EdType = eED_CCMP;
24955 break;
24956#ifdef FEATURE_WLAN_WAPI
24957 case WDI_ED_WPI:
24958 *EdType = eED_WPI;
24959 break;
24960#endif
24961 case WDI_ED_ANY:
24962 *EdType = eED_ANY;
24963 break;
24964
24965 default:
24966 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
24967 "%s: Unknown Encryption Type", __func__);
24968 break;
24969 }
24970}
24971
24972/**
24973 @brief Helper function to pack Start Roam Candidate Lookup
24974 Request parameters
24975
24976 @param pWDICtx: pointer to the WLAN DAL context
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070024977 pwdiRoamScanOffloadReqParams: pointer to the info received
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070024978 from upper layers
24979 ppSendBuffer, pSize - out pointers of the packed buffer
24980 and its size
24981
24982 @return Result of the function call
24983*/
24984
24985WDI_Status
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070024986WDI_PackRoamScanOffloadParams
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070024987(
24988 WDI_ControlBlockType* pWDICtx,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070024989 WDI_RoamScanOffloadReqParamsType* pwdiRoamScanOffloadReqParams,
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070024990 wpt_uint8** ppSendBuffer,
24991 wpt_uint16* pSize
24992)
24993{
24994 wpt_uint8* pSendBuffer = NULL;
24995 wpt_uint16 usDataOffset = 0;
24996 wpt_uint16 usSendSize = 0;
24997 tpRoamCandidateListParams pRoamCandidateListParams = NULL;
24998 wpt_uint8 i;
24999 /*-----------------------------------------------------------------------
25000 Get message buffer
25001 -----------------------------------------------------------------------*/
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025002 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ROAM_SCAN_OFFLOAD_REQ,
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025003 sizeof(tRoamCandidateListParams),
25004 &pSendBuffer, &usDataOffset, &usSendSize))||
Varun Reddy Yeturu83952072013-06-03 11:31:52 -070025005 ( usSendSize < (usDataOffset + sizeof(tRoamCandidateListParams) )))
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025006 {
25007 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080025008 "Unable to get send buffer in Start Roam Candidate Lookup Req %p",
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025009 pwdiRoamScanOffloadReqParams);
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025010 WDI_ASSERT(0);
25011 return WDI_STATUS_E_FAILURE;
25012 }
25013 pRoamCandidateListParams = (tpRoamCandidateListParams)(pSendBuffer + usDataOffset);
Varun Reddy Yeturu83952072013-06-03 11:31:52 -070025014 wpalMemoryZero(pRoamCandidateListParams, sizeof(tRoamCandidateListParams));
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025015 pRoamCandidateListParams->RoamScanOffloadEnabled = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.RoamScanOffloadEnabled;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025016 wpalMemoryCopy(pRoamCandidateListParams->ConnectedNetwork.currAPbssid,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025017 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.currAPbssid,
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025018 HAL_MAC_ADDR_LEN);
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025019 pRoamCandidateListParams->ConnectedNetwork.authentication = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.authentication;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025020 WDI_wdiEdTypeEncToEdTypeEnc(&pRoamCandidateListParams->ConnectedNetwork.encryption,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025021 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.encryption);
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025022 WDI_wdiEdTypeEncToEdTypeEnc(&pRoamCandidateListParams->ConnectedNetwork.mcencryption,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025023 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.mcencryption);
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025024
25025 pRoamCandidateListParams->ConnectedNetwork.ssId.length
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025026 = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.ssId.ucLength;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025027 wpalMemoryCopy( pRoamCandidateListParams->ConnectedNetwork.ssId.ssId,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025028 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.ssId.sSSID,
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025029 pRoamCandidateListParams->ConnectedNetwork.ssId.length);
25030 wpalMemoryCopy(pRoamCandidateListParams->ConnectedNetwork.ChannelCache,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025031 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.ChannelCache,
25032 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.ChannelCount );
25033 pRoamCandidateListParams->ConnectedNetwork.ChannelCount = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.ChannelCount;
25034 pRoamCandidateListParams->ChannelCacheType = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ChannelCacheType ;
25035 pRoamCandidateListParams->LookupThreshold = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.LookupThreshold;
Varun Reddy Yeturu6c5e25c2014-01-09 21:55:37 -080025036 pRoamCandidateListParams->RxSensitivityThreshold = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.RxSensitivityThreshold;
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025037 pRoamCandidateListParams->RoamRssiDiff = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.RoamRssiDiff ;
Sameer Thalappil4ae66ec2013-11-05 14:17:35 -080025038 pRoamCandidateListParams->MAWCEnabled = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.MAWCEnabled ;
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025039 pRoamCandidateListParams->Command = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.Command ;
25040 pRoamCandidateListParams->StartScanReason = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.StartScanReason ;
25041 pRoamCandidateListParams->NeighborScanTimerPeriod = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.NeighborScanTimerPeriod ;
25042 pRoamCandidateListParams->NeighborRoamScanRefreshPeriod = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.NeighborRoamScanRefreshPeriod ;
25043 pRoamCandidateListParams->NeighborScanChannelMinTime = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.NeighborScanChannelMinTime ;
25044 pRoamCandidateListParams->NeighborScanChannelMaxTime = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.NeighborScanChannelMaxTime ;
25045 pRoamCandidateListParams->EmptyRefreshScanPeriod = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.EmptyRefreshScanPeriod ;
25046 pRoamCandidateListParams->IsCCXEnabled = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.IsCCXEnabled ;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025047 wpalMemoryCopy(pRoamCandidateListParams->ValidChannelList,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025048 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ValidChannelList,
25049 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ValidChannelCount);
25050 pRoamCandidateListParams->ValidChannelCount = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ValidChannelCount;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025051
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025052 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO_HIGH,
25053 "Values are ssid = %s, RoamOffloadScan=%d,Command=%d,"
25054 "StartScanReason=%d,NeighborScanTimerPeriod=%d,"
25055 "NeighborRoamScanRefreshPeriod=%d,NeighborScanChannelMinTime=%d,"
25056 "NeighborScanChannelMaxTime = %d,EmptyRefreshScanPeriod=%d,"
25057 "mdiePresent=%d,MDID=%d, auth=%d, uce=%d, mce=%d, nProbes=%d,"
Arif Hussain9a5d5382013-11-17 22:05:35 -080025058 "HomeAwayTime=%d",
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025059 pRoamCandidateListParams->ConnectedNetwork.ssId.ssId,
25060 pRoamCandidateListParams->RoamScanOffloadEnabled,
25061 pRoamCandidateListParams->Command,
25062 pRoamCandidateListParams->StartScanReason,
25063 pRoamCandidateListParams->NeighborScanTimerPeriod,
25064 pRoamCandidateListParams->NeighborRoamScanRefreshPeriod,
25065 pRoamCandidateListParams->NeighborScanChannelMinTime,
25066 pRoamCandidateListParams->NeighborScanChannelMaxTime,
25067 pRoamCandidateListParams->EmptyRefreshScanPeriod,
25068 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.MDID.mdiePresent,
25069 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.MDID.mobilityDomain,
25070 pRoamCandidateListParams->ConnectedNetwork.authentication,
25071 pRoamCandidateListParams->ConnectedNetwork.encryption,
25072 pRoamCandidateListParams->ConnectedNetwork.mcencryption,
25073 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.nProbes,
25074 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.HomeAwayTime);
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025075 pRoamCandidateListParams->us24GProbeSize =
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025076 (pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.us24GProbeSize<
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025077 WLAN_HAL_ROAM_SCAN_MAX_PROBE_SIZE)?
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025078 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.us24GProbeSize:
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025079 WLAN_HAL_ROAM_SCAN_MAX_PROBE_SIZE;
25080 wpalMemoryCopy(pRoamCandidateListParams->a24GProbeTemplate,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025081 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.a24GProbeTemplate,
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025082 pRoamCandidateListParams->us24GProbeSize);
25083 pRoamCandidateListParams->us5GProbeSize =
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025084 (pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.us5GProbeSize<
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025085 WLAN_HAL_ROAM_SCAN_MAX_PROBE_SIZE)?
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025086 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.us5GProbeSize:
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025087 WLAN_HAL_ROAM_SCAN_MAX_PROBE_SIZE;
25088 wpalMemoryCopy(pRoamCandidateListParams->a5GProbeTemplate,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025089 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.a5GProbeTemplate,
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025090 pRoamCandidateListParams->us5GProbeSize);
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025091 pRoamCandidateListParams->MDID.mdiePresent = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.MDID.mdiePresent;
25092 pRoamCandidateListParams->MDID.mobilityDomain = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.MDID.mobilityDomain;
25093 pRoamCandidateListParams->nProbes =
25094 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.nProbes;
25095 pRoamCandidateListParams->HomeAwayTime =
25096 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.HomeAwayTime;
25097 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO_HIGH,"Valid Channel List");
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025098 for (i=0; i<pRoamCandidateListParams->ValidChannelCount ; i++)
25099 {
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025100 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO_HIGH,"%d", pRoamCandidateListParams->ValidChannelList[i]);
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025101 }
25102
25103
25104 /*Set the output values*/
25105 *ppSendBuffer = pSendBuffer;
25106 *pSize = usSendSize;
25107 return WDI_STATUS_SUCCESS;
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025108}/*WDI_PackRoamScanOffloadParams*/
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025109
25110/**
25111 @brief Process Start Roam Candidate Lookup Request function
25112
25113 @param pWDICtx: pointer to the WLAN DAL context
25114 pEventData: pointer to the event information structure
25115
25116 @return Result of the function call
25117*/
25118WDI_Status
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025119WDI_ProcessRoamScanOffloadReq
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025120(
25121 WDI_ControlBlockType* pWDICtx,
25122 WDI_EventInfoType* pEventData
25123)
25124{
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025125 WDI_RoamScanOffloadReqParamsType* pwdiRoamScanOffloadReqParams = NULL;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025126 WDI_RoamOffloadScanCb wdiRoamOffloadScancb = NULL;
25127 wpt_uint8* pSendBuffer = NULL;
25128 wpt_uint16 usSendSize = 0;
25129 WDI_Status wdiStatus;
25130 /*-------------------------------------------------------------------------
25131 Sanity check
25132 -------------------------------------------------------------------------*/
25133 if (( NULL == pEventData ) ||
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025134 ( NULL == (pwdiRoamScanOffloadReqParams = (WDI_RoamScanOffloadReqParamsType*)pEventData->pEventData)) ||
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025135 ( NULL == (wdiRoamOffloadScancb = (WDI_RoamOffloadScanCb)pEventData->pCBfnc)))
25136 {
25137 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
25138 "%s: Invalid parameters", __func__);
25139 WDI_ASSERT(0);
25140 return WDI_STATUS_E_FAILURE;
25141 }
25142
25143 /*-------------------------------------------------------------------------
25144 Pack the Start Roam Candidate Lookup request structure based on version
25145 -------------------------------------------------------------------------*/
25146 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
25147 "%s: Packing Roam Candidate Lookup request ", __func__);
25148
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025149 wdiStatus = WDI_PackRoamScanOffloadParams( pWDICtx, pwdiRoamScanOffloadReqParams,
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025150 &pSendBuffer, &usSendSize);
25151
25152 if (( WDI_STATUS_SUCCESS != wdiStatus )||
25153 ( NULL == pSendBuffer )||( 0 == usSendSize ))
25154 {
25155 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
25156 "%s: failed to pack request parameters", __func__);
25157 WDI_ASSERT(0);
25158 return wdiStatus;
25159 }
25160
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025161 pWDICtx->wdiReqStatusCB = pwdiRoamScanOffloadReqParams->wdiReqStatusCB;
25162 pWDICtx->pReqStatusUserData = pwdiRoamScanOffloadReqParams->pUserData;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025163
25164 /*-------------------------------------------------------------------------
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025165 Send WDI_ROAM_SCAN_OFFLOAD_REQ to HAL
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025166 -------------------------------------------------------------------------*/
25167 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025168 wdiRoamOffloadScancb, pEventData->pUserData, WDI_ROAM_SCAN_OFFLOAD_RESP);
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025169}
25170
25171/**
25172 @brief Process Start Roam Candidate Lookup Rsp function (called when a
25173 response is being received over the bus from HAL)
25174
25175 @param pWDICtx: pointer to the WLAN DAL context
25176 pEventData: pointer to the event information structure
25177
25178 @see
25179 @return Result of the function call
25180*/
25181WDI_Status
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025182WDI_ProcessRoamScanOffloadRsp
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025183(
25184 WDI_ControlBlockType* pWDICtx,
25185 WDI_EventInfoType* pEventData
25186)
25187{
25188 WDI_Status wdiStatus;
25189 eHalStatus halStatus;
25190 WDI_RoamOffloadScanCb wdiRoamOffloadScancb = NULL;
25191
25192 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25193
25194 /*-------------------------------------------------------------------------
25195 Sanity check
25196 -------------------------------------------------------------------------*/
25197 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
25198 ( NULL == pEventData->pEventData ))
25199 {
25200 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
25201 "%s: Invalid parameters", __func__);
25202 WDI_ASSERT(0);
25203 return WDI_STATUS_E_FAILURE;
25204 }
25205
25206 wdiRoamOffloadScancb = (WDI_RoamOffloadScanCb)pWDICtx->pfncRspCB;
25207
25208 /*-------------------------------------------------------------------------
25209 Extract response and send it to UMAC
25210 -------------------------------------------------------------------------*/
25211 halStatus = *((eHalStatus*)pEventData->pEventData);
25212 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
25213
25214 /*Notify UMAC*/
25215 wdiRoamOffloadScancb(wdiStatus, pWDICtx->pRspCBUserData);
25216
25217 return WDI_STATUS_SUCCESS;
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025218}/* WDI_ProcessRoamScanOffloadRsp */
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025219#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070025220
25221/**
25222 @brief Process Update Scan Params function
Jeff Johnsone7245742012-09-05 17:12:55 -070025223
25224 @param pWDICtx: pointer to the WLAN DAL context
25225 pEventData: pointer to the event information structure
25226
Jeff Johnson295189b2012-06-20 16:38:30 -070025227 @see
25228 @return Result of the function call
25229*/
25230WDI_Status
Pratik Bhalgatd4404592012-11-22 17:49:14 +053025231WDI_PackUpdateScanParamsReq
25232(
25233 WDI_ControlBlockType* pWDICtx,
25234 WDI_UpdateScanParamsInfoType* pwdiUpdateScanParams,
25235 wpt_uint8** ppSendBuffer,
25236 wpt_uint16* pSize
25237)
25238{
25239 wpt_uint8* pSendBuffer = NULL;
25240 wpt_uint16 usDataOffset = 0;
25241 wpt_uint16 usSendSize = 0;
25242 tUpdateScanParams updateScanParams = {0};
25243
25244
Varun Reddy Yeturuf68abd62013-02-11 14:05:06 -080025245 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Pratik Bhalgatd4404592012-11-22 17:49:14 +053025246 "Begin WDI Update Scan Parameters Old Style Params");
25247 /*-----------------------------------------------------------------------
25248 Get message buffer
25249 -----------------------------------------------------------------------*/
25250 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_SCAN_PARAMS_REQ,
25251 sizeof(updateScanParams),
25252 &pSendBuffer, &usDataOffset, &usSendSize))||
25253 ( usSendSize < (usDataOffset + sizeof(updateScanParams) )))
25254 {
25255 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080025256 "Unable to get send buffer in Update Scan Params req %p",
Pratik Bhalgatd4404592012-11-22 17:49:14 +053025257 pwdiUpdateScanParams);
25258 WDI_ASSERT(0);
25259 return WDI_STATUS_E_FAILURE;
25260 }
25261
25262 //
25263 // Fill updateScanParams from pwdiUpdateScanParams->wdiUpdateScanParamsInfo
25264 //
25265
25266 updateScanParams.b11dEnabled = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.b11dEnabled;
25267 updateScanParams.b11dResolved = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.b11dResolved;
25268
25269 updateScanParams.ucChannelCount =
25270 (pwdiUpdateScanParams->wdiUpdateScanParamsInfo.ucChannelCount <
25271 WLAN_HAL_PNO_MAX_NETW_CHANNELS)?
25272 pwdiUpdateScanParams->wdiUpdateScanParamsInfo.ucChannelCount :
25273 WLAN_HAL_PNO_MAX_NETW_CHANNELS;
25274
25275 wpalMemoryCopy( updateScanParams.aChannels,
25276 pwdiUpdateScanParams->wdiUpdateScanParamsInfo.aChannels,
25277 updateScanParams.ucChannelCount);
25278
25279
25280 updateScanParams.usActiveMinChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usActiveMinChTime;
25281 updateScanParams.usActiveMaxChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usActiveMaxChTime;
25282 updateScanParams.usPassiveMinChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usPassiveMinChTime;
25283 updateScanParams.usPassiveMaxChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usPassiveMaxChTime;
25284 updateScanParams.cbState = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.cbState;
25285
25286 wpalMemoryCopy( pSendBuffer+usDataOffset,
25287 &updateScanParams,
25288 sizeof(updateScanParams));
25289
25290 pWDICtx->wdiReqStatusCB = pwdiUpdateScanParams->wdiReqStatusCB;
25291 pWDICtx->pReqStatusUserData = pwdiUpdateScanParams->pUserData;
25292
Varun Reddy Yeturuf68abd62013-02-11 14:05:06 -080025293 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Pratik Bhalgatd4404592012-11-22 17:49:14 +053025294 "End Update Scan Parameters Old Style");
25295
25296 /*Set the output values*/
25297 *ppSendBuffer = pSendBuffer;
25298 *pSize = usSendSize;
25299
25300 return WDI_STATUS_SUCCESS;
25301}
25302
25303/**
25304 @brief Process Update Scan Params function
25305
25306 @param pWDICtx: pointer to the WLAN DAL context
25307 pEventData: pointer to the event information structure
25308
25309 @see
25310 @return Result of the function call
25311*/
25312WDI_Status
25313WDI_PackUpdateScanParamsReqEx
25314(
25315 WDI_ControlBlockType* pWDICtx,
25316 WDI_UpdateScanParamsInfoType* pwdiUpdateScanParams,
25317 wpt_uint8** ppSendBuffer,
25318 wpt_uint16* pSize
25319)
25320{
25321 wpt_uint8* pSendBuffer = NULL;
25322 wpt_uint16 usDataOffset = 0;
25323 wpt_uint16 usSendSize = 0;
25324 tUpdateScanParamsEx updateScanParams = {0};
25325
25326
Pratik Bhalgatd4404592012-11-22 17:49:14 +053025327 /*-----------------------------------------------------------------------
25328 Get message buffer
25329 -----------------------------------------------------------------------*/
25330 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_SCAN_PARAMS_REQ,
25331 sizeof(updateScanParams),
25332 &pSendBuffer, &usDataOffset, &usSendSize))||
25333 ( usSendSize < (usDataOffset + sizeof(updateScanParams) )))
25334 {
25335 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080025336 "Unable to get send buffer in Update Scan Params Ex req %p",
Pratik Bhalgatd4404592012-11-22 17:49:14 +053025337 pwdiUpdateScanParams);
25338 WDI_ASSERT(0);
25339 return WDI_STATUS_E_FAILURE;
25340 }
25341
25342 //
25343 // Fill updateScanParams from pwdiUpdateScanParams->wdiUpdateScanParamsInfo
25344 //
25345
25346 updateScanParams.b11dEnabled = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.b11dEnabled;
25347 updateScanParams.b11dResolved = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.b11dResolved;
25348
25349 updateScanParams.ucChannelCount =
25350 (pwdiUpdateScanParams->wdiUpdateScanParamsInfo.ucChannelCount <
25351 WLAN_HAL_PNO_MAX_NETW_CHANNELS_EX)?
25352 pwdiUpdateScanParams->wdiUpdateScanParamsInfo.ucChannelCount :
25353 WLAN_HAL_PNO_MAX_NETW_CHANNELS_EX;
25354
25355 wpalMemoryCopy( updateScanParams.aChannels,
25356 pwdiUpdateScanParams->wdiUpdateScanParamsInfo.aChannels,
25357 updateScanParams.ucChannelCount);
25358
25359
25360 updateScanParams.usActiveMinChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usActiveMinChTime;
25361 updateScanParams.usActiveMaxChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usActiveMaxChTime;
25362 updateScanParams.usPassiveMinChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usPassiveMinChTime;
25363 updateScanParams.usPassiveMaxChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usPassiveMaxChTime;
25364 updateScanParams.cbState = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.cbState;
25365
25366 wpalMemoryCopy( pSendBuffer+usDataOffset,
25367 &updateScanParams,
25368 sizeof(updateScanParams));
25369
25370 pWDICtx->wdiReqStatusCB = pwdiUpdateScanParams->wdiReqStatusCB;
25371 pWDICtx->pReqStatusUserData = pwdiUpdateScanParams->pUserData;
25372
Pratik Bhalgatd4404592012-11-22 17:49:14 +053025373 /*Set the output values*/
25374 *ppSendBuffer = pSendBuffer;
25375 *pSize = usSendSize;
25376
25377 return WDI_STATUS_SUCCESS;
25378}
25379
25380/**
25381 @brief Process Update Scan Params function
25382
25383 @param pWDICtx: pointer to the WLAN DAL context
25384 pEventData: pointer to the event information structure
25385
25386 @see
25387 @return Result of the function call
25388*/
25389WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070025390WDI_ProcessUpdateScanParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070025391(
Jeff Johnson295189b2012-06-20 16:38:30 -070025392 WDI_ControlBlockType* pWDICtx,
25393 WDI_EventInfoType* pEventData
25394)
25395{
25396 WDI_UpdateScanParamsInfoType* pwdiUpdateScanParams = NULL;
25397 WDI_UpdateScanParamsCb wdiUpdateScanParamsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070025398 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070025399 wpt_uint16 usSendSize = 0;
Pullela Naga Venkata Sai Ravaliab91c6b2012-12-27 17:31:42 -080025400 WDI_Status wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070025401
25402 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025403 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070025404 -------------------------------------------------------------------------*/
25405 if (( NULL == pEventData ) ||
25406 ( NULL == (pwdiUpdateScanParams = (WDI_UpdateScanParamsInfoType*)pEventData->pEventData)) ||
25407 ( NULL == (wdiUpdateScanParamsCb = (WDI_UpdateScanParamsCb)pEventData->pCBfnc)))
25408 {
25409 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025410 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025411 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070025412 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025413 }
25414
25415 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
25416 "Begin WDI Update Scan Parameters");
Jeff Johnson295189b2012-06-20 16:38:30 -070025417
25418 //
25419 // Fill updateScanParams from pwdiUpdateScanParams->wdiUpdateScanParamsInfo
25420 //
Pratik Bhalgatd4404592012-11-22 17:49:14 +053025421 if ( pWDICtx->wlanVersion.revision < 1 )
25422 {
Pullela Naga Venkata Sai Ravaliab91c6b2012-12-27 17:31:42 -080025423 wdiStatus = WDI_PackUpdateScanParamsReq( pWDICtx, pwdiUpdateScanParams,
Pratik Bhalgatd4404592012-11-22 17:49:14 +053025424 &pSendBuffer, &usSendSize);
25425 }
25426 else
25427 {
Pullela Naga Venkata Sai Ravaliab91c6b2012-12-27 17:31:42 -080025428 wdiStatus = WDI_PackUpdateScanParamsReqEx( pWDICtx, pwdiUpdateScanParams,
25429 &pSendBuffer, &usSendSize);
25430 }
25431
25432 if(WDI_STATUS_SUCCESS != wdiStatus)
25433 {
25434 //memory allocation failed
25435 return WDI_STATUS_E_FAILURE;
Pratik Bhalgatd4404592012-11-22 17:49:14 +053025436 }
Jeff Johnson295189b2012-06-20 16:38:30 -070025437
Jeff Johnson295189b2012-06-20 16:38:30 -070025438 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025439 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070025440 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025441 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Pratik Bhalgatd4404592012-11-22 17:49:14 +053025442 wdiUpdateScanParamsCb, pEventData->pUserData,
25443 WDI_UPDATE_SCAN_PARAMS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070025444}
25445
25446/**
25447 @brief Process Preferred Network Found Indication function
Jeff Johnsone7245742012-09-05 17:12:55 -070025448
25449 @param pWDICtx: pointer to the WLAN DAL context
25450 pEventData: pointer to the event information structure
25451
Jeff Johnson295189b2012-06-20 16:38:30 -070025452 @see
25453 @return Result of the function call
25454*/
25455WDI_Status
25456WDI_ProcessPrefNetworkFoundInd
Jeff Johnsone7245742012-09-05 17:12:55 -070025457(
Jeff Johnson295189b2012-06-20 16:38:30 -070025458 WDI_ControlBlockType* pWDICtx,
25459 WDI_EventInfoType* pEventData
25460)
25461{
Srikant Kuppa066904f2013-05-07 13:56:02 -070025462 WDI_LowLevelIndType wdiInd;
25463 tpPrefNetwFoundParams pNetwFoundParams;
25464 wpt_uint32 msgsize;
Jeff Johnson295189b2012-06-20 16:38:30 -070025465
25466
25467 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025468 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070025469 -------------------------------------------------------------------------*/
25470 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
25471 ( NULL == pEventData->pEventData ))
25472 {
25473 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025474 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025475 WDI_ASSERT( 0 );
Jeff Johnsone7245742012-09-05 17:12:55 -070025476 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025477 }
25478
25479 /*-------------------------------------------------------------------------
25480 Extract indication and send it to UMAC
25481 -------------------------------------------------------------------------*/
Srikant Kuppa066904f2013-05-07 13:56:02 -070025482 pNetwFoundParams = (tpPrefNetwFoundParams)(pEventData->pEventData);
25483
25484 msgsize = sizeof(tPrefNetwFoundParams) + pNetwFoundParams->frameLength;
25485 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.pData =
25486 (wpt_uint8 *)wpalMemoryAllocate(msgsize);
25487
25488 if (NULL == wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.pData)
25489 {
25490 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25491 "%s: fail to allocate memory", __func__);
25492 return WDI_STATUS_MEM_FAILURE;
25493 }
25494
25495 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.ucLength =
25496 (pNetwFoundParams->ssId.length < 32 )?
25497 pNetwFoundParams->ssId.length : 32;
25498 wpalMemoryCopy( wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.sSSID,
25499 pNetwFoundParams->ssId.ssId,
25500 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.ucLength);
25501 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.rssi = pNetwFoundParams->rssi;
25502 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.frameLength =
25503 pNetwFoundParams->frameLength;
25504 wpalMemoryCopy( wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.pData,
25505 (wpt_uint8 *)pEventData->pEventData + sizeof(tPrefNetwFoundParams),
25506 pNetwFoundParams->frameLength);
Jeff Johnson295189b2012-06-20 16:38:30 -070025507
25508 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025509 wdiInd.wdiIndicationType = WDI_PREF_NETWORK_FOUND_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070025510
Jeff Johnson295189b2012-06-20 16:38:30 -070025511 // DEBUG
25512 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Wilson Yang56002a22013-08-28 17:55:56 -070025513 "[PNO WDI] PREF_NETWORK_FOUND_IND Type (%x) data (SSID=%.*s, LENGTH=%u, RSSI=%u)",
Jeff Johnson295189b2012-06-20 16:38:30 -070025514 wdiInd.wdiIndicationType,
Wilson Yang56002a22013-08-28 17:55:56 -070025515 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.ucLength,
Jeff Johnson295189b2012-06-20 16:38:30 -070025516 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.sSSID,
Wilson Yang56002a22013-08-28 17:55:56 -070025517 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.ucLength,
Jeff Johnson295189b2012-06-20 16:38:30 -070025518 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.rssi );
25519
ltimariub77f24b2013-01-24 18:54:33 -080025520 if ( pWDICtx->wdiLowLevelIndCB )
25521 {
25522 /*Notify UMAC*/
25523 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
25524 }
Jeff Johnsone7245742012-09-05 17:12:55 -070025525
25526 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070025527}
25528
25529/**
25530 @brief Process PNO Rsp function (called when a
25531 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070025532
25533 @param pWDICtx: pointer to the WLAN DAL context
25534 pEventData: pointer to the event information structure
25535
Jeff Johnson295189b2012-06-20 16:38:30 -070025536 @see
25537 @return Result of the function call
25538*/
25539WDI_Status
25540WDI_ProcessSetPreferredNetworkRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070025541(
Jeff Johnson295189b2012-06-20 16:38:30 -070025542 WDI_ControlBlockType* pWDICtx,
25543 WDI_EventInfoType* pEventData
25544)
25545{
25546 WDI_Status wdiStatus;
25547 eHalStatus halStatus;
25548 WDI_PNOScanCb wdiPNOScanCb = NULL;
25549 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25550
25551 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025552 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070025553 -------------------------------------------------------------------------*/
25554 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
25555 ( NULL == pEventData->pEventData ))
25556 {
25557 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025558 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025559 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070025560 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025561 }
25562
25563
Jeff Johnsone7245742012-09-05 17:12:55 -070025564 wdiPNOScanCb = (WDI_PNOScanCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070025565
25566 /*-------------------------------------------------------------------------
25567 Extract response and send it to UMAC
25568 -------------------------------------------------------------------------*/
25569 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070025570 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070025571
25572 /*Notify UMAC*/
25573 wdiPNOScanCb(wdiStatus, pWDICtx->pRspCBUserData);
25574
Jeff Johnsone7245742012-09-05 17:12:55 -070025575 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070025576}/*WDI_ProcessSetPreferredNetworkRsp*/
25577
25578/**
25579 @brief Process RSSI Filter Rsp function (called when a
25580 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070025581
25582 @param pWDICtx: pointer to the WLAN DAL context
25583 pEventData: pointer to the event information structure
25584
Jeff Johnson295189b2012-06-20 16:38:30 -070025585 @see
25586 @return Result of the function call
25587*/
25588WDI_Status
25589WDI_ProcessSetRssiFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070025590(
Jeff Johnson295189b2012-06-20 16:38:30 -070025591 WDI_ControlBlockType* pWDICtx,
25592 WDI_EventInfoType* pEventData
25593)
25594{
25595 WDI_Status wdiStatus;
25596 eHalStatus halStatus;
25597 WDI_RssiFilterCb wdiRssiFilterCb;
25598 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25599
25600 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025601 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070025602 -------------------------------------------------------------------------*/
25603 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
25604 ( NULL == pEventData->pEventData ))
25605 {
25606 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025607 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025608 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070025609 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025610 }
25611
Jeff Johnsone7245742012-09-05 17:12:55 -070025612 wdiRssiFilterCb = (WDI_RssiFilterCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070025613
25614 /*-------------------------------------------------------------------------
25615 Extract response and send it to UMAC
25616 -------------------------------------------------------------------------*/
25617 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070025618 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070025619
25620 /*Notify UMAC*/
25621 wdiRssiFilterCb(wdiStatus, pWDICtx->pRspCBUserData);
25622
Jeff Johnsone7245742012-09-05 17:12:55 -070025623 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070025624}/*WDI_ProcessSetRssiFilterRsp*/
25625
25626/**
25627 @brief Process Update Scan Params Rsp function (called when a
25628 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070025629
25630 @param pWDICtx: pointer to the WLAN DAL context
25631 pEventData: pointer to the event information structure
25632
Jeff Johnson295189b2012-06-20 16:38:30 -070025633 @see
25634 @return Result of the function call
25635*/
25636WDI_Status
25637WDI_ProcessUpdateScanParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070025638(
Jeff Johnson295189b2012-06-20 16:38:30 -070025639 WDI_ControlBlockType* pWDICtx,
25640 WDI_EventInfoType* pEventData
25641)
25642{
25643 WDI_Status wdiStatus;
Jeff Johnsone7245742012-09-05 17:12:55 -070025644 tUpdateScanParamsResp halUpdScanParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070025645 WDI_UpdateScanParamsCb wdiUpdateScanParamsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070025646 wpt_uint32 uStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070025647 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25648
25649 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025650 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070025651 -------------------------------------------------------------------------*/
25652 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
25653 ( NULL == pEventData->pEventData ))
25654 {
25655 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025656 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025657 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070025658 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025659 }
25660
25661 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080025662 "%s: Process UPD scan params ptr : %p",
25663 __func__, pEventData->pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070025664
Jeff Johnsone7245742012-09-05 17:12:55 -070025665 wdiUpdateScanParamsCb = (WDI_UpdateScanParamsCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070025666
25667 /*-------------------------------------------------------------------------
25668 Extract response and send it to UMAC
25669 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025670 wpalMemoryCopy( (void *)&halUpdScanParams.status,
25671 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070025672 sizeof(halUpdScanParams.status));
25673
25674 uStatus = halUpdScanParams.status;
25675
25676 /*Extract PNO version - 1st bit of the status */
Jeff Johnsone7245742012-09-05 17:12:55 -070025677 pWDICtx->wdiPNOVersion = (uStatus & WDI_PNO_VERSION_MASK)? 1:0;
Jeff Johnson295189b2012-06-20 16:38:30 -070025678
25679 /*Remove version bit*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025680 uStatus = uStatus & ( ~(WDI_PNO_VERSION_MASK));
Jeff Johnson295189b2012-06-20 16:38:30 -070025681
Jeff Johnsone7245742012-09-05 17:12:55 -070025682 wdiStatus = WDI_HAL_2_WDI_STATUS(uStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070025683
25684 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070025685 "UPD Scan Parameters rsp with status: %d",
Jeff Johnson295189b2012-06-20 16:38:30 -070025686 halUpdScanParams.status);
25687
25688 /*Notify UMAC*/
25689 wdiUpdateScanParamsCb(wdiStatus, pWDICtx->pRspCBUserData);
25690
Jeff Johnsone7245742012-09-05 17:12:55 -070025691 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070025692}
25693#endif // FEATURE_WLAN_SCAN_PNO
25694
25695#ifdef WLAN_FEATURE_PACKET_FILTERING
Jeff Johnsone7245742012-09-05 17:12:55 -070025696WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070025697WDI_8023MulticastListReq
25698(
25699 WDI_RcvFltPktSetMcListReqParamsType* pwdiRcvFltPktSetMcListReqInfo,
25700 WDI_8023MulticastListCb wdi8023MulticastListCallback,
25701 void* pUserData
25702)
25703{
25704 WDI_EventInfoType wdiEventData;
25705 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25706
25707 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025708 "%s", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025709
25710 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025711 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070025712 ------------------------------------------------------------------------*/
25713 if ( eWLAN_PAL_FALSE == gWDIInitialized )
25714 {
25715 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25716 "WDI API call before module is initialized - Fail request");
25717
Jeff Johnsone7245742012-09-05 17:12:55 -070025718 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070025719 }
25720
25721 /*------------------------------------------------------------------------
25722 Fill in Event data and post to the Main FSM
25723 ------------------------------------------------------------------------*/
25724 wdiEventData.wdiRequest = WDI_8023_MULTICAST_LIST_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070025725 wdiEventData.pEventData = pwdiRcvFltPktSetMcListReqInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070025726 wdiEventData.uEventDataSize = sizeof(*pwdiRcvFltPktSetMcListReqInfo);
Jeff Johnsone7245742012-09-05 17:12:55 -070025727 wdiEventData.pCBfnc = wdi8023MulticastListCallback;
Jeff Johnson295189b2012-06-20 16:38:30 -070025728 wdiEventData.pUserData = pUserData;
25729
25730 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
25731}
25732
Jeff Johnsone7245742012-09-05 17:12:55 -070025733WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070025734WDI_ReceiveFilterSetFilterReq
25735(
25736 WDI_SetRcvPktFilterReqParamsType* pwdiSetRcvPktFilterReqInfo,
25737 WDI_ReceiveFilterSetFilterCb wdiReceiveFilterSetFilterCallback,
25738 void* pUserData
25739)
25740{
25741 WDI_EventInfoType wdiEventData;
25742 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25743
25744 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025745 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025746
25747 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025748 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070025749 ------------------------------------------------------------------------*/
25750 if ( eWLAN_PAL_FALSE == gWDIInitialized )
25751 {
25752 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25753 "WDI API call before module is initialized - Fail request");
25754
Jeff Johnsone7245742012-09-05 17:12:55 -070025755 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070025756 }
25757
25758 /*------------------------------------------------------------------------
25759 Fill in Event data and post to the Main FSM
25760 ------------------------------------------------------------------------*/
25761 wdiEventData.wdiRequest = WDI_RECEIVE_FILTER_SET_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070025762 wdiEventData.pEventData = pwdiSetRcvPktFilterReqInfo;
25763 wdiEventData.uEventDataSize = sizeof(*pwdiSetRcvPktFilterReqInfo) +
Yue Ma13cf95c2013-03-18 18:05:27 -070025764 (pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams - 1)
25765 * sizeof(WDI_RcvPktFilterFieldParams);
Jeff Johnsone7245742012-09-05 17:12:55 -070025766 wdiEventData.pCBfnc = wdiReceiveFilterSetFilterCallback;
Jeff Johnson295189b2012-06-20 16:38:30 -070025767 wdiEventData.pUserData = pUserData;
25768
25769
25770 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
25771}
25772
Jeff Johnsone7245742012-09-05 17:12:55 -070025773WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070025774WDI_FilterMatchCountReq
25775(
25776 WDI_RcvFltPktMatchCntReqParamsType* pwdiRcvFltPktMatchCntReqInfo,
25777 WDI_FilterMatchCountCb wdiFilterMatchCountCallback,
25778 void* pUserData
25779)
25780{
25781 WDI_EventInfoType wdiEventData;
25782 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25783
25784 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025785 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025786
25787 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025788 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070025789 ------------------------------------------------------------------------*/
25790 if ( eWLAN_PAL_FALSE == gWDIInitialized )
25791 {
25792 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25793 "WDI API call before module is initialized - Fail request");
25794
Jeff Johnsone7245742012-09-05 17:12:55 -070025795 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070025796 }
25797
25798 /*------------------------------------------------------------------------
25799 Fill in Event data and post to the Main FSM
25800 ------------------------------------------------------------------------*/
25801 wdiEventData.wdiRequest = WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070025802 wdiEventData.pEventData = pwdiRcvFltPktMatchCntReqInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070025803 wdiEventData.uEventDataSize = sizeof(*pwdiRcvFltPktMatchCntReqInfo);
Jeff Johnsone7245742012-09-05 17:12:55 -070025804 wdiEventData.pCBfnc = wdiFilterMatchCountCallback;
Jeff Johnson295189b2012-06-20 16:38:30 -070025805 wdiEventData.pUserData = pUserData;
25806
25807
25808 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
25809}
25810
Jeff Johnsone7245742012-09-05 17:12:55 -070025811WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070025812WDI_ReceiveFilterClearFilterReq
25813(
25814 WDI_RcvFltPktClearReqParamsType* pwdiRcvFltPktClearReqInfo,
25815 WDI_ReceiveFilterClearFilterCb wdiReceiveFilterClearFilterCallback,
25816 void* pUserData
25817)
25818{
25819 WDI_EventInfoType wdiEventData;
25820 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25821
25822 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025823 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025824
25825 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025826 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070025827 ------------------------------------------------------------------------*/
25828 if ( eWLAN_PAL_FALSE == gWDIInitialized )
25829 {
25830 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25831 "WDI API call before module is initialized - Fail request");
25832
Jeff Johnsone7245742012-09-05 17:12:55 -070025833 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070025834 }
25835
25836 /*------------------------------------------------------------------------
25837 Fill in Event data and post to the Main FSM
25838 ------------------------------------------------------------------------*/
25839 wdiEventData.wdiRequest = WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070025840 wdiEventData.pEventData = pwdiRcvFltPktClearReqInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070025841 wdiEventData.uEventDataSize = sizeof(*pwdiRcvFltPktClearReqInfo);
Jeff Johnsone7245742012-09-05 17:12:55 -070025842 wdiEventData.pCBfnc = wdiReceiveFilterClearFilterCallback;
Jeff Johnson295189b2012-06-20 16:38:30 -070025843 wdiEventData.pUserData = pUserData;
25844
25845
25846 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
25847}
25848
25849/**
25850 @brief Process 8023 Multicast List Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070025851
25852 @param pWDICtx: pointer to the WLAN DAL context
25853 pEventData: pointer to the event information structure
25854
Jeff Johnson295189b2012-06-20 16:38:30 -070025855 @see
25856 @return Result of the function call
25857*/
25858WDI_Status
25859WDI_Process8023MulticastListReq
Jeff Johnsone7245742012-09-05 17:12:55 -070025860(
Jeff Johnson295189b2012-06-20 16:38:30 -070025861 WDI_ControlBlockType* pWDICtx,
25862 WDI_EventInfoType* pEventData
25863)
25864{
25865 WDI_RcvFltPktSetMcListReqParamsType* pwdiFltPktSetMcListReqParamsType = NULL;
25866 WDI_8023MulticastListCb wdi8023MulticastListCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070025867 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070025868 wpt_uint16 usDataOffset = 0;
25869 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025870 tpHalRcvFltMcAddrListType pRcvFltMcAddrListType;
Jeff Johnson295189b2012-06-20 16:38:30 -070025871 wpt_uint8 i;
Jeff Johnsone7245742012-09-05 17:12:55 -070025872 wpt_uint8 ucCurrentBSSSesIdx = 0;
25873 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070025874
25875 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025876 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025877
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025878 pRcvFltMcAddrListType = wpalMemoryAllocate(sizeof(tHalRcvFltMcAddrListType)) ;
25879 if( NULL == pRcvFltMcAddrListType )
25880 {
25881 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
25882 "Failed to alloc in WDI_Process8023MulticastListReq");
25883 return WDI_STATUS_E_FAILURE;
25884 }
25885
Jeff Johnson295189b2012-06-20 16:38:30 -070025886 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025887 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070025888 -------------------------------------------------------------------------*/
25889 if (( NULL == pEventData ) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070025890 ( NULL == (pwdiFltPktSetMcListReqParamsType =
Jeff Johnson295189b2012-06-20 16:38:30 -070025891 (WDI_RcvFltPktSetMcListReqParamsType*)pEventData->pEventData)) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070025892 ( NULL == (wdi8023MulticastListCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070025893 (WDI_8023MulticastListCb)pEventData->pCBfnc)))
25894 {
25895 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025896 "%s: Invalid parameters", __func__);
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025897 wpalMemoryFree(pRcvFltMcAddrListType);
Jeff Johnson295189b2012-06-20 16:38:30 -070025898 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070025899 return WDI_STATUS_E_FAILURE;
25900 }
25901
25902 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
25903 pwdiFltPktSetMcListReqParamsType->mcAddrList.bssId,
25904 &pBSSSes);
25905 if ( NULL == pBSSSes )
25906 {
25907 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025908 " %s : Association for this BSSID does not exist",__func__);
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025909 wpalMemoryFree(pRcvFltMcAddrListType);
Jeff Johnsone7245742012-09-05 17:12:55 -070025910 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025911 }
25912
25913 /*-----------------------------------------------------------------------
25914 Get message buffer
25915 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025916 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
25917 WDI_8023_MULTICAST_LIST_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070025918 sizeof(tHalRcvFltMcAddrListType),
25919 &pSendBuffer, &usDataOffset, &usSendSize))||
25920 ( usSendSize < (usDataOffset + sizeof(tHalRcvFltMcAddrListType))))
25921 {
25922 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
25923 "Unable to get send buffer in "
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080025924 "WDI_Process8023MulticastListReq() %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070025925 pEventData, pwdiFltPktSetMcListReqParamsType,
25926 wdi8023MulticastListCb);
Yue Mad8cac142013-03-28 11:33:46 -070025927 wpalMemoryFree(pRcvFltMcAddrListType);
Jeff Johnson295189b2012-06-20 16:38:30 -070025928 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070025929 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025930 }
25931
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025932 pRcvFltMcAddrListType->cMulticastAddr =
Jeff Johnsone7245742012-09-05 17:12:55 -070025933 pwdiFltPktSetMcListReqParamsType->mcAddrList.ulMulticastAddrCnt;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025934 for( i = 0; i < pRcvFltMcAddrListType->cMulticastAddr; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070025935 {
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025936 wpalMemoryCopy(pRcvFltMcAddrListType->multicastAddr[i],
Jeff Johnson295189b2012-06-20 16:38:30 -070025937 pwdiFltPktSetMcListReqParamsType->mcAddrList.multicastAddr[i],
25938 sizeof(tSirMacAddr));
25939 }
25940
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025941 pRcvFltMcAddrListType->bssIdx = pBSSSes->ucBSSIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070025942 wpalMemoryCopy( pSendBuffer+usDataOffset,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025943 pRcvFltMcAddrListType,
25944 sizeof(tHalRcvFltMcAddrListType));
Jeff Johnson295189b2012-06-20 16:38:30 -070025945
25946 pWDICtx->wdiReqStatusCB = pwdiFltPktSetMcListReqParamsType->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070025947 pWDICtx->pReqStatusUserData = pwdiFltPktSetMcListReqParamsType->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070025948
25949
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025950 wpalMemoryFree(pRcvFltMcAddrListType);
Jeff Johnson295189b2012-06-20 16:38:30 -070025951 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025952 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070025953 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025954 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070025955 wdi8023MulticastListCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -070025956 WDI_8023_MULTICAST_LIST_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070025957}
25958
25959/**
25960 @brief Process Receive Filter Set Filter Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070025961
25962 @param pWDICtx: pointer to the WLAN DAL context
25963 pEventData: pointer to the event information structure
25964
Jeff Johnson295189b2012-06-20 16:38:30 -070025965 @see
25966 @return Result of the function call
25967*/
25968WDI_Status
25969WDI_ProcessReceiveFilterSetFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070025970(
Jeff Johnson295189b2012-06-20 16:38:30 -070025971 WDI_ControlBlockType* pWDICtx,
25972 WDI_EventInfoType* pEventData
25973)
25974{
25975 WDI_SetRcvPktFilterReqParamsType* pwdiSetRcvPktFilterReqInfo = NULL;
25976 WDI_ReceiveFilterSetFilterCb wdiReceiveFilterSetFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070025977 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070025978 wpt_uint16 usDataOffset = 0;
25979 wpt_uint16 usSendSize = 0;
25980 wpt_uint32 usRcvPktFilterCfgSize;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025981 tHalRcvPktFilterCfgType *pRcvPktFilterCfg = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070025982 wpt_uint8 i;
Jeff Johnsone7245742012-09-05 17:12:55 -070025983 wpt_uint8 ucCurrentBSSSesIdx = 0;
25984 WDI_BSSSessionType* pBSSSes = NULL;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025985 tHalSessionizedRcvPktFilterCfgType *pSessRcvPktFilterCfg = NULL;
25986 wpt_uint32 usSessRcvPktFilterCfgSize;
Jeff Johnson295189b2012-06-20 16:38:30 -070025987
25988 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025989 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025990
25991 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025992 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070025993 -------------------------------------------------------------------------*/
25994 if (( NULL == pEventData ) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070025995 ( NULL == (pwdiSetRcvPktFilterReqInfo =
Jeff Johnson295189b2012-06-20 16:38:30 -070025996 (WDI_SetRcvPktFilterReqParamsType*)pEventData->pEventData)) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070025997 ( NULL == (wdiReceiveFilterSetFilterCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070025998 (WDI_ReceiveFilterSetFilterCb)pEventData->pCBfnc)))
25999 {
26000 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026001 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026002 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026003 return WDI_STATUS_E_FAILURE;
26004 }
26005
26006 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
26007 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.bssId,
26008 &pBSSSes);
26009 if ( NULL == pBSSSes )
26010 {
26011 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026012 " %s : Association for this BSSID does not exist",__func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070026013 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026014 }
26015
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026016 if( WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION) )
26017 {
Jeff Johnson295189b2012-06-20 16:38:30 -070026018
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026019 usSessRcvPktFilterCfgSize = sizeof(tHalSessionizedRcvPktFilterCfgType) +
26020 ((pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams - 1)
26021 * sizeof(tHalSessionizedRcvPktFilterCfgType));
26022
26023 pSessRcvPktFilterCfg = (tHalSessionizedRcvPktFilterCfgType *)wpalMemoryAllocate(
26024 usSessRcvPktFilterCfgSize);
26025
26026 if(NULL == pSessRcvPktFilterCfg)
26027 {
26028 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
26029 "%s: Failed to allocate memory for "
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080026030 "tHalRcvPktFilterCfgType: %p %p %p ",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026031 __func__, pWDICtx, pEventData, pEventData->pEventData);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026032 WDI_ASSERT(0);
26033 return WDI_STATUS_E_FAILURE;
26034 }
26035
26036 wpalMemoryZero(pSessRcvPktFilterCfg, usSessRcvPktFilterCfgSize);
26037
26038 /*-----------------------------------------------------------------------
26039 Get message buffer
26040 -----------------------------------------------------------------------*/
26041
26042 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_RECEIVE_FILTER_SET_FILTER_REQ,
26043 usSessRcvPktFilterCfgSize,
26044 &pSendBuffer, &usDataOffset, &usSendSize))||
26045 ( usSendSize < (usDataOffset + usSessRcvPktFilterCfgSize)))
26046 {
26047 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
26048 "Unable to get send buffer in "
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080026049 "WDI_ProcessReceiveFilterSetFilterReq() %p %p %p",
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026050 pEventData, pwdiSetRcvPktFilterReqInfo,
26051 wdiReceiveFilterSetFilterCb);
26052 WDI_ASSERT(0);
26053 wpalMemoryFree(pSessRcvPktFilterCfg);
26054 return WDI_STATUS_E_FAILURE;
26055 }
26056
26057 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080026058 "UsData Off %d UsSend %d cfg %p",usDataOffset,
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026059 usSendSize,pSessRcvPktFilterCfg);
26060
26061 pSessRcvPktFilterCfg->filterId = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.filterId;
26062 pSessRcvPktFilterCfg->filterType = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.filterType;
26063 pSessRcvPktFilterCfg->numParams = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams;
26064 pSessRcvPktFilterCfg->coleasceTime = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.coalesceTime;
26065
26066 pSessRcvPktFilterCfg->bssIdx = pBSSSes->ucBSSIdx;
26067
26068 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
26069 "Out: FID %d FT %d",pSessRcvPktFilterCfg->filterId,
26070 pSessRcvPktFilterCfg->filterType);
26071 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
26072 "NParams %d CT %d",pSessRcvPktFilterCfg->numParams,
26073 pSessRcvPktFilterCfg->coleasceTime);
26074
26075 for ( i = 0; i < pSessRcvPktFilterCfg->numParams; i++ )
26076 {
26077 pSessRcvPktFilterCfg->paramsData[i].protocolLayer =
26078 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].protocolLayer;
26079 pSessRcvPktFilterCfg->paramsData[i].cmpFlag =
26080 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].cmpFlag;
26081 pSessRcvPktFilterCfg->paramsData[i].dataOffset =
26082 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataOffset;
26083 pSessRcvPktFilterCfg->paramsData[i].dataLength =
26084 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataLength;
26085
26086 wpalMemoryCopy(&pSessRcvPktFilterCfg->paramsData[i].compareData,
26087 &pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].compareData,
26088 8);
26089 wpalMemoryCopy(&pSessRcvPktFilterCfg->paramsData[i].dataMask,
26090 &pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataMask,
26091 8);
26092
26093 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Arif Hussain9a5d5382013-11-17 22:05:35 -080026094 "Out:Proto %d Comp Flag %d",
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026095 pSessRcvPktFilterCfg->paramsData[i].protocolLayer,
26096 pSessRcvPktFilterCfg->paramsData[i].cmpFlag);
26097
26098 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Arif Hussain9a5d5382013-11-17 22:05:35 -080026099 "Data Offset %d Data Len %d",
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026100 pSessRcvPktFilterCfg->paramsData[i].dataOffset,
26101 pSessRcvPktFilterCfg->paramsData[i].dataLength);
26102
26103 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Arif Hussain9a5d5382013-11-17 22:05:35 -080026104 "CData: %d:%d:%d:%d:%d:%d",
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026105 pSessRcvPktFilterCfg->paramsData[i].compareData[0],
26106 pSessRcvPktFilterCfg->paramsData[i].compareData[1],
26107 pSessRcvPktFilterCfg->paramsData[i].compareData[2],
26108 pSessRcvPktFilterCfg->paramsData[i].compareData[3],
26109 pSessRcvPktFilterCfg->paramsData[i].compareData[4],
26110 pSessRcvPktFilterCfg->paramsData[i].compareData[5]);
26111
26112 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Arif Hussain9a5d5382013-11-17 22:05:35 -080026113 "MData: %d:%d:%d:%d:%d:%d",
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026114 pSessRcvPktFilterCfg->paramsData[i].dataMask[0],
26115 pSessRcvPktFilterCfg->paramsData[i].dataMask[1],
26116 pSessRcvPktFilterCfg->paramsData[i].dataMask[2],
26117 pSessRcvPktFilterCfg->paramsData[i].dataMask[3],
26118 pSessRcvPktFilterCfg->paramsData[i].dataMask[4],
26119 pSessRcvPktFilterCfg->paramsData[i].dataMask[5]);
26120 }
26121
26122 wpalMemoryCopy( pSendBuffer+usDataOffset,
26123 pSessRcvPktFilterCfg,
26124 usSessRcvPktFilterCfgSize);
26125
26126
26127 pWDICtx->wdiReqStatusCB = pwdiSetRcvPktFilterReqInfo->wdiReqStatusCB;
26128 pWDICtx->pReqStatusUserData = pwdiSetRcvPktFilterReqInfo->pUserData;
26129
26130 wpalMemoryFree(pSessRcvPktFilterCfg);
26131
26132 }
26133 /*If SLM_SESSIONIZATION is not supported then do this */
26134 else
26135 {
26136 usRcvPktFilterCfgSize = sizeof(tHalRcvPktFilterCfgType) +
26137 ((pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams - 1)
26138 * sizeof(tHalRcvPktFilterParams));
26139
26140 pRcvPktFilterCfg = (tHalRcvPktFilterCfgType *)wpalMemoryAllocate(
Jeff Johnson295189b2012-06-20 16:38:30 -070026141 usRcvPktFilterCfgSize);
26142
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026143 if(NULL == pRcvPktFilterCfg)
26144 {
26145 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
26146 "%s: Failed to allocate memory for "
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080026147 "tHalRcvPktFilterCfgType: %p %p %p ",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026148 __func__, pWDICtx, pEventData, pEventData->pEventData);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026149 WDI_ASSERT(0);
26150 return WDI_STATUS_E_FAILURE;
26151 }
Jeff Johnson295189b2012-06-20 16:38:30 -070026152
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026153 wpalMemoryZero(pRcvPktFilterCfg, usRcvPktFilterCfgSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070026154
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026155 /*-----------------------------------------------------------------------
26156 Get message buffer
26157 -----------------------------------------------------------------------*/
26158 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_RECEIVE_FILTER_SET_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070026159 usRcvPktFilterCfgSize,
26160 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026161 ( usSendSize < (usDataOffset + usRcvPktFilterCfgSize)))
26162 {
26163 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson295189b2012-06-20 16:38:30 -070026164 "Unable to get send buffer in "
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080026165 "WDI_ProcessReceiveFilterSetFilterReq() %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070026166 pEventData, pwdiSetRcvPktFilterReqInfo,
26167 wdiReceiveFilterSetFilterCb);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026168 WDI_ASSERT(0);
26169 wpalMemoryFree(pRcvPktFilterCfg);
26170 return WDI_STATUS_E_FAILURE;
26171 }
Jeff Johnson295189b2012-06-20 16:38:30 -070026172
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026173 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070026174 "UsData Off %d UsSend %d cfg %d",usDataOffset,
Jeff Johnson295189b2012-06-20 16:38:30 -070026175 usSendSize,usRcvPktFilterCfgSize);
26176
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026177 pRcvPktFilterCfg->filterId = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.filterId;
26178 pRcvPktFilterCfg->filterType = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.filterType;
26179 pRcvPktFilterCfg->numParams = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams;
26180 pRcvPktFilterCfg->coalesceTime = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.coalesceTime;
Jeff Johnson295189b2012-06-20 16:38:30 -070026181
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026182 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070026183 "Out: FID %d FT %d",pRcvPktFilterCfg->filterId,
Jeff Johnson295189b2012-06-20 16:38:30 -070026184 pRcvPktFilterCfg->filterType);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026185 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnson295189b2012-06-20 16:38:30 -070026186 "NParams %d CT %d",pRcvPktFilterCfg->numParams,
Jeff Johnsone7245742012-09-05 17:12:55 -070026187 pRcvPktFilterCfg->coalesceTime);
Jeff Johnson295189b2012-06-20 16:38:30 -070026188
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026189 for ( i = 0; i < pRcvPktFilterCfg->numParams; i++ )
26190 {
26191 pRcvPktFilterCfg->paramsData[i].protocolLayer =
26192 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].protocolLayer;
26193 pRcvPktFilterCfg->paramsData[i].cmpFlag =
26194 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].cmpFlag;
26195 pRcvPktFilterCfg->paramsData[i].dataOffset =
26196 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataOffset;
26197 pRcvPktFilterCfg->paramsData[i].dataLength =
26198 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataLength;
Jeff Johnson295189b2012-06-20 16:38:30 -070026199
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026200 wpalMemoryCopy(&pRcvPktFilterCfg->paramsData[i].compareData,
Jeff Johnson295189b2012-06-20 16:38:30 -070026201 &pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].compareData,
26202 8);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026203 wpalMemoryCopy(&pRcvPktFilterCfg->paramsData[i].dataMask,
Jeff Johnson295189b2012-06-20 16:38:30 -070026204 &pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataMask,
26205 8);
26206
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026207 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Arif Hussain9a5d5382013-11-17 22:05:35 -080026208 "Out:Proto %d Comp Flag %d",
Jeff Johnsone7245742012-09-05 17:12:55 -070026209 pRcvPktFilterCfg->paramsData[i].protocolLayer,
Jeff Johnson295189b2012-06-20 16:38:30 -070026210 pRcvPktFilterCfg->paramsData[i].cmpFlag);
26211
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026212 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Arif Hussain9a5d5382013-11-17 22:05:35 -080026213 "Data Offset %d Data Len %d",
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026214 pRcvPktFilterCfg->paramsData[i].dataOffset,
26215 pRcvPktFilterCfg->paramsData[i].dataLength);
Jeff Johnson295189b2012-06-20 16:38:30 -070026216
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026217 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Arif Hussain9a5d5382013-11-17 22:05:35 -080026218 "CData: %d:%d:%d:%d:%d:%d",
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026219 pRcvPktFilterCfg->paramsData[i].compareData[0],
26220 pRcvPktFilterCfg->paramsData[i].compareData[1],
26221 pRcvPktFilterCfg->paramsData[i].compareData[2],
26222 pRcvPktFilterCfg->paramsData[i].compareData[3],
26223 pRcvPktFilterCfg->paramsData[i].compareData[4],
26224 pRcvPktFilterCfg->paramsData[i].compareData[5]);
Jeff Johnson295189b2012-06-20 16:38:30 -070026225
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026226 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Arif Hussain9a5d5382013-11-17 22:05:35 -080026227 "MData: %d:%d:%d:%d:%d:%d",
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026228 pRcvPktFilterCfg->paramsData[i].dataMask[0],
26229 pRcvPktFilterCfg->paramsData[i].dataMask[1],
26230 pRcvPktFilterCfg->paramsData[i].dataMask[2],
26231 pRcvPktFilterCfg->paramsData[i].dataMask[3],
26232 pRcvPktFilterCfg->paramsData[i].dataMask[4],
26233 pRcvPktFilterCfg->paramsData[i].dataMask[5]);
26234 }
Jeff Johnson295189b2012-06-20 16:38:30 -070026235
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026236 wpalMemoryCopy( pSendBuffer+usDataOffset,
Jeff Johnsone7245742012-09-05 17:12:55 -070026237 pRcvPktFilterCfg,
26238 usRcvPktFilterCfgSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070026239
26240
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026241 pWDICtx->wdiReqStatusCB = pwdiSetRcvPktFilterReqInfo->wdiReqStatusCB;
26242 pWDICtx->pReqStatusUserData = pwdiSetRcvPktFilterReqInfo->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070026243
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026244 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026245 "%s",__func__);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026246 wpalMemoryFree(pRcvPktFilterCfg);
26247 }
Jeff Johnson295189b2012-06-20 16:38:30 -070026248 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026249 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070026250 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070026251 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070026252 wdiReceiveFilterSetFilterCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -070026253 WDI_RECEIVE_FILTER_SET_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070026254}
26255
26256/**
26257 @brief Process Packet Filter Match Count Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070026258
26259 @param pWDICtx: pointer to the WLAN DAL context
26260 pEventData: pointer to the event information structure
26261
Jeff Johnson295189b2012-06-20 16:38:30 -070026262 @see
26263 @return Result of the function call
26264*/
26265WDI_Status
26266WDI_ProcessFilterMatchCountReq
Jeff Johnsone7245742012-09-05 17:12:55 -070026267(
Jeff Johnson295189b2012-06-20 16:38:30 -070026268 WDI_ControlBlockType* pWDICtx,
26269 WDI_EventInfoType* pEventData
26270)
26271{
26272 WDI_RcvFltPktMatchCntReqParamsType* pwdiRcvFltPktMatchCntReqParamsType =
26273 NULL;
26274 WDI_FilterMatchCountCb wdiFilterMatchCountCb =
26275 NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070026276 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070026277 wpt_uint16 usDataOffset = 0;
26278 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026279 tHalRcvFltPktMatchCntReqParams rcvFltPktMatchCntReqParam = {0};
26280 wpt_uint8 ucCurrentBSSSesIdx = 0;
26281 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070026282
26283 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026284 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026285
26286 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026287 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070026288 -------------------------------------------------------------------------*/
26289 if (( NULL == pEventData ) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070026290 ( NULL == (pwdiRcvFltPktMatchCntReqParamsType =
Jeff Johnson295189b2012-06-20 16:38:30 -070026291 (WDI_RcvFltPktMatchCntReqParamsType*)pEventData->pEventData)) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070026292 ( NULL == (wdiFilterMatchCountCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070026293 (WDI_FilterMatchCountCb)pEventData->pCBfnc)))
26294 {
26295 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026296 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026297 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026298 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026299 }
26300
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026301 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
26302 pwdiRcvFltPktMatchCntReqParamsType->bssId,
26303 &pBSSSes);
26304 if ( NULL == pBSSSes )
26305 {
26306 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026307 " %s : Association for this BSSID does not exist",__func__);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026308 return WDI_STATUS_E_FAILURE;
26309 }
26310
Jeff Johnson295189b2012-06-20 16:38:30 -070026311 /*-----------------------------------------------------------------------
26312 Get message buffer
26313 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070026314 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
26315 WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ,
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026316 sizeof(tHalRcvFltPktMatchCntReqParams),
Jeff Johnson295189b2012-06-20 16:38:30 -070026317 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026318 ( usSendSize < (usDataOffset + sizeof(tHalRcvFltPktMatchCntReqParams))))
Jeff Johnson295189b2012-06-20 16:38:30 -070026319 {
26320 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
26321 "Unable to get send buffer in "
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080026322 "WDI_ProcessFilterMatchCountReq() %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070026323 pEventData, pwdiRcvFltPktMatchCntReqParamsType,
26324 wdiFilterMatchCountCb);
26325 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026326 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026327 }
26328
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026329 rcvFltPktMatchCntReqParam.bssIdx = pBSSSes->ucBSSIdx;
26330 wpalMemoryCopy( pSendBuffer+usDataOffset,
26331 &rcvFltPktMatchCntReqParam,
26332 sizeof(rcvFltPktMatchCntReqParam));
26333
Jeff Johnson295189b2012-06-20 16:38:30 -070026334 //
26335 // Don't need to fill send buffer other than header
26336 //
26337 pWDICtx->wdiReqStatusCB = pwdiRcvFltPktMatchCntReqParamsType->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070026338 pWDICtx->pReqStatusUserData = pwdiRcvFltPktMatchCntReqParamsType->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070026339
26340
26341 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026342 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070026343 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070026344 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
26345 wdiFilterMatchCountCb,
26346 pEventData->pUserData,
26347 WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070026348}
26349
26350/**
26351 @brief Process Receive Filter Clear Filter Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070026352
26353 @param pWDICtx: pointer to the WLAN DAL context
26354 pEventData: pointer to the event information structure
26355
Jeff Johnson295189b2012-06-20 16:38:30 -070026356 @see
26357 @return Result of the function call
26358*/
26359WDI_Status
26360WDI_ProcessReceiveFilterClearFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070026361(
Jeff Johnson295189b2012-06-20 16:38:30 -070026362 WDI_ControlBlockType* pWDICtx,
26363 WDI_EventInfoType* pEventData
26364)
Jeff Johnsone7245742012-09-05 17:12:55 -070026365{
Jeff Johnson295189b2012-06-20 16:38:30 -070026366 WDI_RcvFltPktClearReqParamsType* pwdiRcvFltPktClearReqParamsType = NULL;
26367 WDI_ReceiveFilterClearFilterCb wdiRcvFltPktClearFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070026368 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070026369 wpt_uint16 usDataOffset = 0;
26370 wpt_uint16 usSendSize = 0;
26371 tHalRcvFltPktClearParam rcvFltPktClearParam;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026372 wpt_uint8 ucCurrentSessionId = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070026373 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070026374
26375 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026376 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026377
26378 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026379 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070026380 -------------------------------------------------------------------------*/
26381 if (( NULL == pEventData ) ||
26382 ( NULL == (pwdiRcvFltPktClearReqParamsType =
26383 (WDI_RcvFltPktClearReqParamsType*)pEventData->pEventData)) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070026384 ( NULL == (wdiRcvFltPktClearFilterCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070026385 (WDI_ReceiveFilterClearFilterCb)pEventData->pCBfnc)))
26386 {
26387 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026388 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026389 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026390 return WDI_STATUS_E_FAILURE;
26391 }
26392
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026393 ucCurrentSessionId = WDI_FindAssocSession( pWDICtx,
Jeff Johnsone7245742012-09-05 17:12:55 -070026394 pwdiRcvFltPktClearReqParamsType->filterClearParam.bssId,
26395 &pBSSSes);
26396 if ( NULL == pBSSSes )
26397 {
26398 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026399 " %s : Association for this BSSID does not exist",__func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070026400 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026401 }
26402
26403 /*-----------------------------------------------------------------------
26404 Get message buffer
26405 -----------------------------------------------------------------------*/
26406 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
Jeff Johnsone7245742012-09-05 17:12:55 -070026407 WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070026408 sizeof(tHalRcvFltPktClearParam),
26409 &pSendBuffer, &usDataOffset, &usSendSize))||
26410 ( usSendSize < (usDataOffset + sizeof(tHalRcvFltPktClearParam))))
26411 {
26412 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
26413 "Unable to get send buffer in "
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080026414 "WDI_ProcessReceiveFilterClearFilterReq() %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070026415 pEventData, pwdiRcvFltPktClearReqParamsType,
26416 wdiRcvFltPktClearFilterCb);
26417 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026418 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026419 }
26420
26421
26422 rcvFltPktClearParam.status = pwdiRcvFltPktClearReqParamsType->
Jeff Johnsone7245742012-09-05 17:12:55 -070026423 filterClearParam.status;
Jeff Johnson295189b2012-06-20 16:38:30 -070026424 rcvFltPktClearParam.filterId = pwdiRcvFltPktClearReqParamsType->
Jeff Johnsone7245742012-09-05 17:12:55 -070026425 filterClearParam.filterId;
Jeff Johnson295189b2012-06-20 16:38:30 -070026426
Jeff Johnsone7245742012-09-05 17:12:55 -070026427 rcvFltPktClearParam.bssIdx = pBSSSes->ucBSSIdx;
26428 wpalMemoryCopy( pSendBuffer+usDataOffset,
26429 &rcvFltPktClearParam,
26430 sizeof(rcvFltPktClearParam));
Jeff Johnson295189b2012-06-20 16:38:30 -070026431
26432 pWDICtx->wdiReqStatusCB = pwdiRcvFltPktClearReqParamsType->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070026433 pWDICtx->pReqStatusUserData = pwdiRcvFltPktClearReqParamsType->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070026434
26435
26436 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026437 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070026438 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070026439 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070026440 wdiRcvFltPktClearFilterCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -070026441 WDI_RECEIVE_FILTER_CLEAR_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070026442}
26443
26444/**
26445 @brief Process 8023 Multicast List Response function
Jeff Johnsone7245742012-09-05 17:12:55 -070026446
26447 @param pWDICtx: pointer to the WLAN DAL context
26448 pEventData: pointer to the event information structure
26449
Jeff Johnson295189b2012-06-20 16:38:30 -070026450 @see
26451 @return Result of the function call
26452*/
26453WDI_Status
26454WDI_Process8023MulticastListRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070026455(
Jeff Johnson295189b2012-06-20 16:38:30 -070026456 WDI_ControlBlockType* pWDICtx,
26457 WDI_EventInfoType* pEventData
26458)
26459{
Jeff Johnson295189b2012-06-20 16:38:30 -070026460 eHalStatus halStatus;
26461 WDI_8023MulticastListCb wdi8023MulticastListCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026462 tHalRcvFltPktSetMcListRspType halRcvFltPktSetMcListRsp;
26463 WDI_RcvFltPktSetMcListRspParamsType wdiRcvFltPktSetMcListRspInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070026464 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26465
26466 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026467 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026468
26469 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026470 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070026471 -------------------------------------------------------------------------*/
26472 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
26473 ( NULL == pEventData->pEventData ))
26474 {
26475 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026476 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026477 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026478 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026479 }
26480
Jeff Johnsone7245742012-09-05 17:12:55 -070026481 wdi8023MulticastListCb = (WDI_8023MulticastListCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070026482
26483 /*-------------------------------------------------------------------------
26484 Extract response and send it to UMAC
26485 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026486 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
26487 {
26488 wpalMemoryCopy( &halRcvFltPktSetMcListRsp,
26489 pEventData->pEventData,
26490 sizeof(halRcvFltPktSetMcListRsp));
26491
26492 wdiRcvFltPktSetMcListRspInfo.wdiStatus =
26493 WDI_HAL_2_WDI_STATUS(halRcvFltPktSetMcListRsp.status);
26494 wdiRcvFltPktSetMcListRspInfo.bssIdx =
26495 halRcvFltPktSetMcListRsp.bssIdx;
26496 }
26497 else
26498 {
26499 halStatus = *((eHalStatus*)pEventData->pEventData);
26500 wdiRcvFltPktSetMcListRspInfo.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
26501 }
Jeff Johnson295189b2012-06-20 16:38:30 -070026502
26503 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026504 wdi8023MulticastListCb(&wdiRcvFltPktSetMcListRspInfo, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070026505
Jeff Johnsone7245742012-09-05 17:12:55 -070026506 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070026507}
26508
26509/**
26510 @brief Process Set Rsp function (called when a
26511 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070026512
26513 @param pWDICtx: pointer to the WLAN DAL context
26514 pEventData: pointer to the event information structure
26515
Jeff Johnson295189b2012-06-20 16:38:30 -070026516 @see
26517 @return Result of the function call
26518*/
26519WDI_Status
26520WDI_ProcessReceiveFilterSetFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070026521(
Jeff Johnson295189b2012-06-20 16:38:30 -070026522 WDI_ControlBlockType* pWDICtx,
26523 WDI_EventInfoType* pEventData
26524)
26525{
Jeff Johnson295189b2012-06-20 16:38:30 -070026526 eHalStatus halStatus;
26527 WDI_ReceiveFilterSetFilterCb wdiReceiveFilterSetFilterCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026528 tHalSetPktFilterRspParams halSetPktFilterRspParams;
26529 WDI_SetRcvPktFilterRspParamsType wdiSetRcvPktFilterRspInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070026530 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26531
26532 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026533 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026534
26535 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026536 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070026537 -------------------------------------------------------------------------*/
26538 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
26539 ( NULL == pEventData->pEventData ))
26540 {
26541 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026542 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026543 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026544 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026545 }
26546
26547 wdiReceiveFilterSetFilterCb = (WDI_ReceiveFilterSetFilterCb)pWDICtx->
Jeff Johnsone7245742012-09-05 17:12:55 -070026548 pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070026549
26550 /*-------------------------------------------------------------------------
26551 Extract response and send it to UMAC
26552 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026553 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
26554 {
26555 wpalMemoryCopy( &halSetPktFilterRspParams,
26556 pEventData->pEventData,
26557 sizeof(halSetPktFilterRspParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070026558
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026559 wdiSetRcvPktFilterRspInfo.bssIdx = halSetPktFilterRspParams.bssIdx;
26560 wdiSetRcvPktFilterRspInfo.wdiStatus = WDI_HAL_2_WDI_STATUS(halSetPktFilterRspParams.status);
26561 }
26562 else
26563 {
26564 halStatus = *((eHalStatus*)pEventData->pEventData);
26565 wdiSetRcvPktFilterRspInfo.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
26566 }
Jeff Johnson295189b2012-06-20 16:38:30 -070026567 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026568 wdiReceiveFilterSetFilterCb(&wdiSetRcvPktFilterRspInfo, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070026569
Jeff Johnsone7245742012-09-05 17:12:55 -070026570 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070026571}
26572
26573/**
26574 @brief Process Packet Filter Match Count Response function
Jeff Johnsone7245742012-09-05 17:12:55 -070026575
26576 @param pWDICtx: pointer to the WLAN DAL context
26577 pEventData: pointer to the event information structure
26578
Jeff Johnson295189b2012-06-20 16:38:30 -070026579 @see
26580 @return Result of the function call
26581*/
26582WDI_Status
26583WDI_ProcessFilterMatchCountRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070026584(
Jeff Johnson295189b2012-06-20 16:38:30 -070026585 WDI_ControlBlockType* pWDICtx,
26586 WDI_EventInfoType* pEventData
26587)
26588{
Jeff Johnson295189b2012-06-20 16:38:30 -070026589 eHalStatus halStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070026590 WDI_FilterMatchCountCb wdiFilterMatchCountCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026591 tHalRcvFltPktMatchRspParams halRcvFltrPktMatachRsp;
26592 WDI_RcvFltPktMatchCntRspParamsType wdiRcvFltPktMatchRspParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070026593
26594 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26595
26596 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026597 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026598
26599 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026600 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070026601 -------------------------------------------------------------------------*/
26602 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
26603 ( NULL == pEventData->pEventData ))
26604 {
26605 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026606 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026607 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026608 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026609 }
26610
Jeff Johnsone7245742012-09-05 17:12:55 -070026611 wdiFilterMatchCountCb = (WDI_FilterMatchCountCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070026612
26613 /*-------------------------------------------------------------------------
26614 Extract response and send it to UMAC
26615 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026616 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
26617 {
26618 wpalMemoryCopy( &halRcvFltrPktMatachRsp,
26619 pEventData->pEventData,
26620 sizeof(halRcvFltrPktMatachRsp));
26621
26622 wdiRcvFltPktMatchRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halRcvFltrPktMatachRsp.status);
26623 wdiRcvFltPktMatchRspParams.bssIdx = halRcvFltrPktMatachRsp.bssIdx;
26624 }
26625 else
26626 {
26627 halStatus = *((eHalStatus*)pEventData->pEventData);
26628 wdiRcvFltPktMatchRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
26629 }
Jeff Johnson295189b2012-06-20 16:38:30 -070026630
26631 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026632 wdiFilterMatchCountCb(&wdiRcvFltPktMatchRspParams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070026633
Jeff Johnsone7245742012-09-05 17:12:55 -070026634 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070026635}
26636
26637/**
26638 @brief Process Receive Filter Clear Filter Response function
Jeff Johnsone7245742012-09-05 17:12:55 -070026639
26640 @param pWDICtx: pointer to the WLAN DAL context
26641 pEventData: pointer to the event information structure
26642
Jeff Johnson295189b2012-06-20 16:38:30 -070026643 @see
26644 @return Result of the function call
26645*/
26646WDI_Status
26647WDI_ProcessReceiveFilterClearFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070026648(
Jeff Johnson295189b2012-06-20 16:38:30 -070026649 WDI_ControlBlockType* pWDICtx,
26650 WDI_EventInfoType* pEventData
26651)
26652{
Jeff Johnson295189b2012-06-20 16:38:30 -070026653 eHalStatus halStatus;
26654 WDI_ReceiveFilterClearFilterCb wdiReceiveFilterClearFilterCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026655 tHalRcvFltPktClearParam halRcvFltPktClearRspMsg;
26656 WDI_RcvFltPktClearRspParamsType wdiRcvFltPktClearRspParamsType;
Jeff Johnson295189b2012-06-20 16:38:30 -070026657 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26658
26659 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026660 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026661
26662 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026663 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070026664 -------------------------------------------------------------------------*/
26665 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
26666 ( NULL == pEventData->pEventData ))
26667 {
26668 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026669 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026670 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026671 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026672 }
26673
26674 wdiReceiveFilterClearFilterCb = (WDI_ReceiveFilterClearFilterCb)pWDICtx->
Jeff Johnsone7245742012-09-05 17:12:55 -070026675 pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070026676
26677 /*-------------------------------------------------------------------------
26678 Extract response and send it to UMAC
26679 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026680 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
26681 {
26682 wpalMemoryCopy( &halRcvFltPktClearRspMsg,
26683 pEventData->pEventData,
26684 sizeof(halRcvFltPktClearRspMsg));
26685
26686 wdiRcvFltPktClearRspParamsType.wdiStatus =
26687 WDI_HAL_2_WDI_STATUS(halRcvFltPktClearRspMsg.status);
26688 wdiRcvFltPktClearRspParamsType.bssIdx =
26689 halRcvFltPktClearRspMsg.bssIdx;
26690 }
26691 else
26692 {
26693 halStatus = *((eHalStatus*)pEventData->pEventData);
26694 wdiRcvFltPktClearRspParamsType.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
26695 }
Jeff Johnson295189b2012-06-20 16:38:30 -070026696
26697 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026698 wdiReceiveFilterClearFilterCb(&wdiRcvFltPktClearRspParamsType, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070026699
Jeff Johnsone7245742012-09-05 17:12:55 -070026700 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070026701}
26702#endif // WLAN_FEATURE_PACKET_FILTERING
26703
26704/**
26705 @brief Process Shutdown Rsp function
26706 There is no shutdown response comming from HAL
26707 - function just kept for simmetry
Jeff Johnsone7245742012-09-05 17:12:55 -070026708
Jeff Johnson295189b2012-06-20 16:38:30 -070026709 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnsone7245742012-09-05 17:12:55 -070026710 pEventData: pointer to the event information structure
Jeff Johnson295189b2012-06-20 16:38:30 -070026711
26712 @see
26713 @return Result of the function call
26714*/
26715WDI_Status
26716WDI_ProcessShutdownRsp
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 /*There is no shutdown response comming from HAL - function just kept for
26723 simmetry */
26724 WDI_ASSERT(0);
26725 return WDI_STATUS_SUCCESS;
26726}/*WDI_ProcessShutdownRsp*/
26727
26728/**
26729 @brief WDI_SetPowerParamsReq
26730
Jeff Johnsone7245742012-09-05 17:12:55 -070026731 @param pwdiPowerParamsReqParams: the Set Power Params as
Jeff Johnson295189b2012-06-20 16:38:30 -070026732 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -070026733
Jeff Johnson295189b2012-06-20 16:38:30 -070026734 wdiPowerParamsCb: callback for passing back the response
26735 of the Set Power Params operation received from the
26736 device
Jeff Johnsone7245742012-09-05 17:12:55 -070026737
Jeff Johnson295189b2012-06-20 16:38:30 -070026738 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -070026739 callback
26740
Jeff Johnson295189b2012-06-20 16:38:30 -070026741 @return Result of the function call
26742*/
Jeff Johnsone7245742012-09-05 17:12:55 -070026743WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070026744WDI_SetPowerParamsReq
26745(
26746 WDI_SetPowerParamsReqParamsType* pwdiPowerParamsReqParams,
26747 WDI_SetPowerParamsCb wdiPowerParamsCb,
26748 void* pUserData
26749)
26750{
26751 WDI_EventInfoType wdiEventData;
26752 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26753
26754 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026755 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070026756 ------------------------------------------------------------------------*/
26757 if ( eWLAN_PAL_FALSE == gWDIInitialized )
26758 {
26759 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
26760 "WDI API call before module is initialized - Fail request");
26761
Jeff Johnsone7245742012-09-05 17:12:55 -070026762 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070026763 }
26764
26765 /*------------------------------------------------------------------------
26766 Fill in Event data and post to the Main FSM
26767 ------------------------------------------------------------------------*/
26768 wdiEventData.wdiRequest = WDI_SET_POWER_PARAMS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070026769 wdiEventData.pEventData = pwdiPowerParamsReqParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070026770 wdiEventData.uEventDataSize = sizeof(*pwdiPowerParamsReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -070026771 wdiEventData.pCBfnc = wdiPowerParamsCb;
Jeff Johnson295189b2012-06-20 16:38:30 -070026772 wdiEventData.pUserData = pUserData;
26773
26774 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
26775}/*WDI_SetPowerParamsReq*/
26776
26777/**
26778 @brief Process Set Power Params Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070026779
26780 @param pWDICtx: pointer to the WLAN DAL context
26781 pEventData: pointer to the event information structure
26782
Jeff Johnson295189b2012-06-20 16:38:30 -070026783 @see
26784 @return Result of the function call
26785*/
26786WDI_Status
26787WDI_ProcessSetPowerParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070026788(
Jeff Johnson295189b2012-06-20 16:38:30 -070026789 WDI_ControlBlockType* pWDICtx,
26790 WDI_EventInfoType* pEventData
26791)
26792{
26793 WDI_SetPowerParamsReqParamsType* pwdiPowerParamsReqParams = NULL;
26794 WDI_SetPowerParamsCb wdiPowerParamsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070026795 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070026796 wpt_uint16 usDataOffset = 0;
26797 wpt_uint16 usSendSize = 0;
26798 tSetPowerParamsType powerParams;
26799
26800 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026801 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070026802 -------------------------------------------------------------------------*/
26803 if (( NULL == pEventData ) ||
26804 ( NULL == (pwdiPowerParamsReqParams = (WDI_SetPowerParamsReqParamsType*)pEventData->pEventData)) ||
26805 ( NULL == (wdiPowerParamsCb = (WDI_SetPowerParamsCb)pEventData->pCBfnc)))
26806 {
26807 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026808 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026809 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026810 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026811 }
26812
26813 /*-----------------------------------------------------------------------
26814 Get message buffer
26815 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070026816 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_POWER_PARAMS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070026817 sizeof(powerParams),
26818 &pSendBuffer, &usDataOffset, &usSendSize))||
26819 ( usSendSize < (usDataOffset + sizeof(powerParams) )))
26820 {
26821 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080026822 "Unable to get send buffer in Set PNO req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070026823 pEventData, pwdiPowerParamsReqParams, wdiPowerParamsCb);
26824 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026825 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026826 }
26827
26828 /* Ignore DTIM */
Jeff Johnsone7245742012-09-05 17:12:55 -070026829 powerParams.uIgnoreDTIM =
Jeff Johnson295189b2012-06-20 16:38:30 -070026830 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uIgnoreDTIM;
26831
26832 /*DTIM Period*/
Jeff Johnsone7245742012-09-05 17:12:55 -070026833 powerParams.uDTIMPeriod =
Jeff Johnson295189b2012-06-20 16:38:30 -070026834 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uDTIMPeriod;
26835
26836 /* Listen Interval */
Jeff Johnsone7245742012-09-05 17:12:55 -070026837 powerParams.uListenInterval=
Jeff Johnson295189b2012-06-20 16:38:30 -070026838 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uListenInterval;
26839
26840 /* Broadcast Multicas Filter */
Jeff Johnsone7245742012-09-05 17:12:55 -070026841 powerParams.uBcastMcastFilter =
Jeff Johnson295189b2012-06-20 16:38:30 -070026842 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uBcastMcastFilter;
26843
26844 /* Beacon Early Termination */
Jeff Johnsone7245742012-09-05 17:12:55 -070026845 powerParams.uEnableBET =
Jeff Johnson295189b2012-06-20 16:38:30 -070026846 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uEnableBET;
26847
26848 /* Beacon Early Termination Interval */
Jeff Johnsone7245742012-09-05 17:12:55 -070026849 powerParams.uBETInterval =
26850 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uBETInterval;
Jeff Johnson295189b2012-06-20 16:38:30 -070026851
Yue Mac24062f2013-05-13 17:01:29 -070026852 /* MAX LI for modulated DTIM */
26853 powerParams.uMaxLIModulatedDTIM =
26854 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uMaxLIModulatedDTIM;
Jeff Johnsone7245742012-09-05 17:12:55 -070026855
26856 wpalMemoryCopy( pSendBuffer+usDataOffset,
26857 &powerParams,
26858 sizeof(powerParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070026859
26860 pWDICtx->wdiReqStatusCB = pwdiPowerParamsReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070026861 pWDICtx->pReqStatusUserData = pwdiPowerParamsReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070026862
26863 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026864 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070026865 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070026866 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
26867 wdiPowerParamsCb, pEventData->pUserData, WDI_SET_POWER_PARAMS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070026868}
26869
26870/**
26871 @brief Process Power Params Rsp function (called when a
26872 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070026873
26874 @param pWDICtx: pointer to the WLAN DAL context
26875 pEventData: pointer to the event information structure
26876
Jeff Johnson295189b2012-06-20 16:38:30 -070026877 @see
26878 @return Result of the function call
26879*/
26880WDI_Status
26881WDI_ProcessSetPowerParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070026882(
Jeff Johnson295189b2012-06-20 16:38:30 -070026883 WDI_ControlBlockType* pWDICtx,
26884 WDI_EventInfoType* pEventData
26885)
26886{
26887 WDI_Status wdiStatus;
26888 eHalStatus halStatus;
26889 WDI_SetPowerParamsCb wdiPowerParamsCb;
26890 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26891
26892 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026893 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070026894 -------------------------------------------------------------------------*/
26895 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
26896 ( NULL == pEventData->pEventData ))
26897 {
26898 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026899 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026900 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026901 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026902 }
26903
Jeff Johnsone7245742012-09-05 17:12:55 -070026904 wdiPowerParamsCb = (WDI_SetPowerParamsCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070026905
26906 /*-------------------------------------------------------------------------
26907 Extract response and send it to UMAC
26908 -------------------------------------------------------------------------*/
26909 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070026910 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070026911
26912 /*Notify UMAC*/
26913 wdiPowerParamsCb(wdiStatus, pWDICtx->pRspCBUserData);
26914
Jeff Johnsone7245742012-09-05 17:12:55 -070026915 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070026916}/*WDI_ProcessSetPowerParamsRsp*/
26917
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +053026918/**
26919 @brief WDI_dhcpStartInd
26920 Host will send an event to the FW when DHCP is initiated
26921
26922 @param
26923 WDI_DHCPInd: DHCP Indication
26924 @see
26925 @return Result of the function call
26926*/
26927WDI_Status
26928WDI_dhcpStartInd
26929(
26930 WDI_DHCPInd *wdiDHCPInd
26931)
26932{
26933 WDI_EventInfoType wdiEventData;
26934
26935 /*------------------------------------------------------------------------
26936 Sanity Check
26937 ------------------------------------------------------------------------*/
26938 if ( eWLAN_PAL_FALSE == gWDIInitialized )
26939 {
26940 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
26941 "WDI API call before module is initialized - Fail request");
26942
26943 return WDI_STATUS_E_NOT_ALLOWED;
26944 }
26945
26946 wdiEventData.wdiRequest = WDI_DHCP_START_IND;
26947 wdiEventData.pEventData = wdiDHCPInd;
26948 wdiEventData.uEventDataSize = sizeof(wdiDHCPInd);
26949 wdiEventData.pCBfnc = NULL;
26950 wdiEventData.pUserData = NULL;
26951
26952 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
26953}
26954
26955
26956/**
26957 @brief WDI_dhcpStopInd
26958 Host will send an event to the FW when DHCP is completed
26959
26960 @param
26961 WDI_DHCPInd: DHCP Indication
26962 @see
26963 @return Result of the function call
26964*/
26965WDI_Status
26966WDI_dhcpStopInd
26967(
26968 WDI_DHCPInd *wdiDHCPInd
26969)
26970{
26971 WDI_EventInfoType wdiEventData;
26972
26973 /*------------------------------------------------------------------------
26974 Sanity Check
26975 ------------------------------------------------------------------------*/
26976 if ( eWLAN_PAL_FALSE == gWDIInitialized )
26977 {
26978 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
26979 "WDI API call before module is initialized - Fail request");
26980
26981 return WDI_STATUS_E_NOT_ALLOWED;
26982 }
26983
26984 wdiEventData.wdiRequest = WDI_DHCP_STOP_IND;
26985 wdiEventData.pEventData = wdiDHCPInd;
26986 wdiEventData.uEventDataSize = sizeof(wdiDHCPInd);
26987 wdiEventData.pCBfnc = NULL;
26988 wdiEventData.pUserData = NULL;
26989
26990 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
26991}
26992
26993
26994/**
26995 @brief Process DHCP Start Indication message and post it to HAL
26996
26997 @param pWDICtx: pointer to the WLAN DAL context
26998 pEventData: pointer to the event information structure
26999
27000 @see
27001 @return Result of the function call
27002*/
27003WDI_Status
27004WDI_ProcessDHCPStartInd
27005(
27006 WDI_ControlBlockType* pWDICtx,
27007 WDI_EventInfoType* pEventData
27008)
27009{
27010 wpt_uint8* pSendBuffer = NULL;
27011 wpt_uint16 usDataOffset = 0;
27012 wpt_uint16 usSendSize = 0;
27013 wpt_uint16 usLen = 0;
27014 WDI_DHCPInd* pwdiDHCPInd = NULL;
27015 tDHCPInfo* pDHCPInfo;
27016
27017 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27018
27019 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
27020 "%s", __func__);
27021
27022 /*-------------------------------------------------------------------------
27023 Sanity check
27024 -------------------------------------------------------------------------*/
27025 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
27026 {
27027 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
27028 "%s: Invalid parameters", __func__);
27029 WDI_ASSERT(0);
27030 return WDI_STATUS_E_FAILURE;
27031 }
27032 pwdiDHCPInd = (WDI_DHCPInd*)pEventData->pEventData;
27033 /*-----------------------------------------------------------------------
27034 Get message buffer
27035 -----------------------------------------------------------------------*/
27036
27037 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
27038 WDI_DHCP_START_IND,
27039 sizeof(tDHCPInfo),
27040 &pSendBuffer, &usDataOffset, &usSendSize))||
27041 ( usSendSize < (usDataOffset + usLen )))
27042 {
27043 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
27044 "Unable to get send buffer in DHCP Start req %p ",
27045 pEventData);
27046 WDI_ASSERT(0);
27047 return WDI_STATUS_E_FAILURE;
27048 }
27049
27050 pDHCPInfo = (tDHCPInfo*)pSendBuffer+usDataOffset;
27051 pDHCPInfo->device_mode = pwdiDHCPInd->device_mode;
27052 wpalMemoryCopy(pDHCPInfo->macAddr, pwdiDHCPInd->macAddr,
27053 WDI_MAC_ADDR_LEN);
27054
27055 pWDICtx->pReqStatusUserData = NULL;
27056 pWDICtx->pfncRspCB = NULL;
27057
27058 /*-------------------------------------------------------------------------
27059 Send DHCP Start Indication to HAL
27060 -------------------------------------------------------------------------*/
27061 return WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
27062
27063}/*WDI_ProcessDHCPStartInd*/
27064
27065/**
27066 @brief Process DHCP Stop indication message and post it to HAL
27067
27068 @param pWDICtx: pointer to the WLAN DAL context
27069 pEventData: pointer to the event information structure
27070
27071 @see
27072 @return Result of the function call
27073*/
27074WDI_Status
27075WDI_ProcessDHCPStopInd
27076(
27077 WDI_ControlBlockType* pWDICtx,
27078 WDI_EventInfoType* pEventData
27079)
27080{
27081 wpt_uint8* pSendBuffer = NULL;
27082 wpt_uint16 usDataOffset = 0;
27083 wpt_uint16 usSendSize = 0;
27084 wpt_uint16 usLen = 0;
27085 WDI_DHCPInd* pwdiDHCPInd = NULL;
27086 tDHCPInfo* pDHCPInfo;
27087
27088 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27089
27090 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
27091 "%s", __func__);
27092
27093 /*-------------------------------------------------------------------------
27094 Sanity check
27095 -------------------------------------------------------------------------*/
27096
27097 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
27098 {
27099 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
27100 "%s: Invalid parameters", __func__);
27101 WDI_ASSERT(0);
27102 return WDI_STATUS_E_FAILURE;
27103 }
27104 pwdiDHCPInd = (WDI_DHCPInd*)pEventData->pEventData;
27105 /*-----------------------------------------------------------------------
27106 Get message buffer
27107 -----------------------------------------------------------------------*/
27108
27109 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
27110 WDI_DHCP_STOP_IND,
27111 sizeof(tDHCPInfo),
27112 &pSendBuffer, &usDataOffset, &usSendSize))||
27113 ( usSendSize < (usDataOffset + usLen )))
27114 {
27115 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
27116 "Unable to get send buffer in DHCP Start req %p ",
27117 pEventData);
27118 WDI_ASSERT(0);
27119 return WDI_STATUS_E_FAILURE;
27120 }
27121
27122 pDHCPInfo = (tDHCPInfo*)pSendBuffer+usDataOffset;
27123 pDHCPInfo->device_mode = pwdiDHCPInd->device_mode;
27124 wpalMemoryCopy(pDHCPInfo->macAddr, pwdiDHCPInd->macAddr,
27125 WDI_MAC_ADDR_LEN);
27126
27127 pWDICtx->pReqStatusUserData = NULL;
27128 pWDICtx->pfncRspCB = NULL;
27129 /*-------------------------------------------------------------------------
27130 Send DHCP Stop indication to HAL
27131 -------------------------------------------------------------------------*/
27132 return WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
27133
27134}/*WDI_ProcessDHCPStopInd*/
27135
27136
Jeff Johnson295189b2012-06-20 16:38:30 -070027137#ifdef WLAN_FEATURE_GTK_OFFLOAD
27138/**
27139 @brief WDI_GTKOffloadReq will be called when the upper MAC
27140 wants to set GTK Rekey Counter while in power save. Upon
27141 the call of this API the WLAN DAL will pack and send a
27142 HAL GTK offload request message to the lower RIVA
27143 sub-system if DAL is in state STARTED.
27144
27145 In state BUSY this request will be queued. Request won't
27146 be allowed in any other state.
27147
27148 WDI_PostAssocReq must have been called.
27149
27150 @param pwdiGtkOffloadParams: the GTK offload as specified
27151 by the Device Interface
27152
27153 wdiGtkOffloadCb: callback for passing back the response
27154 of the GTK offload operation received from the device
27155
27156 pUserData: user data will be passed back with the
27157 callback
27158
27159 @see WDI_PostAssocReq
27160 @return Result of the function call
27161*/
27162WDI_Status
27163WDI_GTKOffloadReq
27164(
27165 WDI_GtkOffloadReqMsg* pwdiGtkOffloadReqMsg,
27166 WDI_GtkOffloadCb wdiGtkOffloadCb,
27167 void* pUserData
27168)
27169{
Gopichand Nakkala870cbae2013-03-15 21:16:09 +053027170 WDI_EventInfoType wdiEventData;
Jeff Johnson295189b2012-06-20 16:38:30 -070027171 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27172
27173 /*------------------------------------------------------------------------
27174 Sanity Check
27175 ------------------------------------------------------------------------*/
27176 if ( eWLAN_PAL_FALSE == gWDIInitialized )
27177 {
27178 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
27179 "WDI API call before module is initialized - Fail request");
27180
27181 return WDI_STATUS_E_NOT_ALLOWED;
27182 }
27183
27184 /*------------------------------------------------------------------------
27185 Fill in Event data and post to the Main FSM
27186 ------------------------------------------------------------------------*/
27187 wdiEventData.wdiRequest = WDI_GTK_OFFLOAD_REQ;
27188 wdiEventData.pEventData = pwdiGtkOffloadReqMsg;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -070027189 wdiEventData.uEventDataSize = sizeof(*pwdiGtkOffloadReqMsg);
Jeff Johnson295189b2012-06-20 16:38:30 -070027190 wdiEventData.pCBfnc = wdiGtkOffloadCb;
27191 wdiEventData.pUserData = pUserData;
27192
27193 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
27194}
27195
27196
27197/**
27198 @brief WDI_GTKOffloadGetInfoReq will be called when the upper
27199 MAC wants to get GTK Rekey Counter while in power save.
27200 Upon the call of this API the WLAN DAL will pack and
27201 send a HAL GTK offload request message to the lower RIVA
27202 sub-system if DAL is in state STARTED.
27203
27204 In state BUSY this request will be queued. Request won't
27205 be allowed in any other state.
27206
27207 WDI_PostAssocReq must have been called.
27208
27209 @param pwdiGtkOffloadGetInfoReqMsg: the GTK Offload
27210 Information Message as specified by the
27211 Device Interface
27212
27213 wdiGtkOffloadGetInfoCb: callback for passing back the
27214 response of the GTK offload operation received from the
27215 device
27216
27217 pUserData: user data will be passed back with the
27218 callback
27219
27220 @see WDI_PostAssocReq
27221 @return Result of the function call
27222*/
27223WDI_Status
27224WDI_GTKOffloadGetInfoReq
27225(
27226 WDI_GtkOffloadGetInfoReqMsg* pwdiGtkOffloadGetInfoReqMsg,
27227 WDI_GtkOffloadGetInfoCb wdiGtkOffloadGetInfoCb,
27228 void* pUserData
27229)
27230{
Gopichand Nakkala870cbae2013-03-15 21:16:09 +053027231 WDI_EventInfoType wdiEventData;
Jeff Johnson295189b2012-06-20 16:38:30 -070027232 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27233
27234 /*------------------------------------------------------------------------
27235 Sanity Check
27236 ------------------------------------------------------------------------*/
27237 if ( eWLAN_PAL_FALSE == gWDIInitialized )
27238 {
27239 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
27240 "WDI API call before module is initialized - Fail request");
27241
27242 return WDI_STATUS_E_NOT_ALLOWED;
27243 }
27244
27245 /*------------------------------------------------------------------------
27246 Fill in Event data and post to the Main FSM
27247 ------------------------------------------------------------------------*/
27248 wdiEventData.wdiRequest = WDI_GTK_OFFLOAD_GETINFO_REQ;
27249 wdiEventData.pEventData = pwdiGtkOffloadGetInfoReqMsg;
27250 wdiEventData.uEventDataSize = sizeof(*pwdiGtkOffloadGetInfoReqMsg);
27251 wdiEventData.pCBfnc = wdiGtkOffloadGetInfoCb;
27252 wdiEventData.pUserData = pUserData;
27253
27254 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
27255}
27256
27257
27258/**
27259 @brief Process set GTK Offload Request function
27260
27261 @param pWDICtx: pointer to the WLAN DAL context
27262 pEventData: pointer to the event information structure
27263
27264 @see
27265 @return Result of the function call
27266*/
27267WDI_Status
27268WDI_ProcessGTKOffloadReq
27269(
27270 WDI_ControlBlockType* pWDICtx,
27271 WDI_EventInfoType* pEventData
27272)
27273{
27274 WDI_GtkOffloadReqMsg* pwdiGtkOffloadReqMsg = NULL;
27275 WDI_GtkOffloadCb wdiGtkOffloadCb = NULL;
27276 wpt_uint8* pSendBuffer = NULL;
27277 wpt_uint16 usDataOffset = 0;
27278 wpt_uint16 usSendSize = 0;
27279 tHalGtkOffloadReqParams gtkOffloadReqParams = {0};
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027280 wpt_uint8 ucCurrentSessionId = 0;
27281 WDI_BSSSessionType* pBSSSes = NULL;
27282
Jeff Johnson295189b2012-06-20 16:38:30 -070027283 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27284
27285 /*-------------------------------------------------------------------------
27286 Sanity check
27287 -------------------------------------------------------------------------*/
27288 if (( NULL == pEventData ) ||
27289 ( NULL == (pwdiGtkOffloadReqMsg = (WDI_GtkOffloadReqMsg*)pEventData->pEventData)) ||
27290 ( NULL == (wdiGtkOffloadCb = (WDI_GtkOffloadCb)pEventData->pCBfnc)))
27291 {
27292 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027293 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027294 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080027295 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070027296 }
27297
27298 /*-----------------------------------------------------------------------
27299 Get message buffer
27300 -----------------------------------------------------------------------*/
27301 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_GTK_OFFLOAD_REQ,
27302 sizeof(gtkOffloadReqParams),
27303 &pSendBuffer, &usDataOffset, &usSendSize))||
27304 ( usSendSize < (usDataOffset + sizeof(gtkOffloadReqParams) )))
27305 {
27306 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080027307 "Unable to get send buffer in GTK offload req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070027308 pEventData, pwdiGtkOffloadReqMsg, wdiGtkOffloadCb);
27309 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080027310 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070027311 }
27312
27313 //
27314 // Fill gtkOffloadReqParams from pwdiGtkOffloadReqMsg->gtkOffloadReqParams
27315 //
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027316 ucCurrentSessionId = WDI_FindAssocSession( pWDICtx,
27317 pwdiGtkOffloadReqMsg->gtkOffloadReqParams.bssId,
27318 &pBSSSes);
27319 if ( NULL == pBSSSes )
27320 {
27321 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027322 " %s : Association for this BSSID does not exist", __func__);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080027323 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027324 }
27325
27326 gtkOffloadReqParams.bssIdx = pBSSSes->ucBSSIdx;
27327
Jeff Johnson295189b2012-06-20 16:38:30 -070027328 gtkOffloadReqParams.ulFlags = pwdiGtkOffloadReqMsg->gtkOffloadReqParams.ulFlags;
27329 // Copy KCK
27330 wpalMemoryCopy(&(gtkOffloadReqParams.aKCK[0]), &(pwdiGtkOffloadReqMsg->gtkOffloadReqParams.aKCK[0]), 16);
27331 // Copy KEK
27332 wpalMemoryCopy(&(gtkOffloadReqParams.aKEK[0]), &(pwdiGtkOffloadReqMsg->gtkOffloadReqParams.aKEK[0]), 16);
27333 // Copy KeyReplayCounter
27334 wpalMemoryCopy(&(gtkOffloadReqParams.ullKeyReplayCounter), &(pwdiGtkOffloadReqMsg->gtkOffloadReqParams.ullKeyReplayCounter), sizeof(v_U64_t));
27335
27336 wpalMemoryCopy( pSendBuffer+usDataOffset,
27337 &gtkOffloadReqParams,
27338 sizeof(gtkOffloadReqParams));
27339
27340 pWDICtx->wdiReqStatusCB = pwdiGtkOffloadReqMsg->wdiReqStatusCB;
27341 pWDICtx->pReqStatusUserData = pwdiGtkOffloadReqMsg->pUserData;
27342
27343 /*-------------------------------------------------------------------------
27344 Send Get STA Request to HAL
27345 -------------------------------------------------------------------------*/
27346 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
27347 wdiGtkOffloadCb, pEventData->pUserData, WDI_GTK_OFFLOAD_RESP);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080027348
27349fail:
27350 // Release the message buffer so we don't leak
27351 wpalMemoryFree(pSendBuffer);
27352
27353failRequest:
27354 //WDA should have failure check to avoid the memory leak
27355 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070027356}
27357
27358
27359/**
27360 @brief Process GTK Offload Get Information Request function
27361
27362 @param pWDICtx: pointer to the WLAN DAL context
27363 pEventData: pointer to the event information structure
27364
27365 @see
27366 @return Result of the function call
27367*/
27368WDI_Status
27369WDI_ProcessGTKOffloadGetInfoReq
27370(
27371 WDI_ControlBlockType* pWDICtx,
27372 WDI_EventInfoType* pEventData
27373)
27374{
27375 WDI_GtkOffloadGetInfoReqMsg* pwdiGtkOffloadGetInfoReqMsg = NULL;
27376 WDI_GtkOffloadGetInfoCb wdiGtkOffloadGetInfoCb = NULL;
27377 wpt_uint8* pSendBuffer = NULL;
27378 wpt_uint16 usDataOffset = 0;
27379 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027380 tHalGtkOffloadGetInfoReqParams halGtkOffloadGetInfoReqParams;
27381 wpt_uint8 ucCurrentSessionId = 0;
27382 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070027383
27384 /*-------------------------------------------------------------------------
27385 Sanity check
27386 -------------------------------------------------------------------------*/
27387 if (( NULL == pEventData ) ||
27388 ( NULL == (pwdiGtkOffloadGetInfoReqMsg = (WDI_GtkOffloadGetInfoReqMsg*)pEventData->pEventData)) ||
27389 ( NULL == (wdiGtkOffloadGetInfoCb = (WDI_GtkOffloadGetInfoCb)pEventData->pCBfnc)))
27390 {
27391 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027392 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027393 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080027394 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070027395 }
27396
27397 /*-----------------------------------------------------------------------
27398 Get message buffer
27399 -----------------------------------------------------------------------*/
27400 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_GTK_OFFLOAD_GETINFO_REQ,
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027401 sizeof(halGtkOffloadGetInfoReqParams),
Jeff Johnson295189b2012-06-20 16:38:30 -070027402 &pSendBuffer, &usDataOffset, &usSendSize))||
Gopichand Nakkala870cbae2013-03-15 21:16:09 +053027403 ( usSendSize < ( usDataOffset + sizeof(halGtkOffloadGetInfoReqParams))))
Jeff Johnson295189b2012-06-20 16:38:30 -070027404 {
27405 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080027406 "Unable to get send buffer in WDI_ProcessGTKOffloadGetInfoReq() %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070027407 pEventData, pwdiGtkOffloadGetInfoReqMsg, wdiGtkOffloadGetInfoCb);
27408 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080027409 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070027410 }
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027411 ucCurrentSessionId = WDI_FindAssocSession( pWDICtx,
27412 pwdiGtkOffloadGetInfoReqMsg->WDI_GtkOffloadGetInfoReqParams.bssId,
27413 &pBSSSes);
27414 if ( NULL == pBSSSes )
27415 {
27416 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027417 " %s : Association for this BSSID does not exist",__func__);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080027418 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027419 }
27420 halGtkOffloadGetInfoReqParams.bssIdx = pBSSSes->ucBSSIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070027421
27422 //
27423 // Don't need to fill send buffer other than header
27424 //
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027425 wpalMemoryCopy( pSendBuffer+usDataOffset,
27426 &halGtkOffloadGetInfoReqParams,
27427 sizeof(halGtkOffloadGetInfoReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070027428
27429 pWDICtx->wdiReqStatusCB = pwdiGtkOffloadGetInfoReqMsg->wdiReqStatusCB;
27430 pWDICtx->pReqStatusUserData = pwdiGtkOffloadGetInfoReqMsg->pUserData;
27431
27432 /*-------------------------------------------------------------------------
27433 Send Get STA Request to HAL
27434 -------------------------------------------------------------------------*/
27435 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
27436 wdiGtkOffloadGetInfoCb, pEventData->pUserData, WDI_GTK_OFFLOAD_GETINFO_RESP);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080027437fail:
27438 // Release the message buffer so we don't leak
27439 wpalMemoryFree(pSendBuffer);
27440
27441failRequest:
27442 //WDA should have failure check to avoid the memory leak
27443 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070027444}
27445
27446/**
27447 @brief Process host offload Rsp function (called when a
27448 response is being received over the bus from HAL)
27449
27450 @param pWDICtx: pointer to the WLAN DAL context
27451 pEventData: pointer to the event information structure
27452
27453 @see
27454 @return Result of the function call
27455*/
27456WDI_Status
27457WDI_ProcessGtkOffloadRsp
27458(
27459 WDI_ControlBlockType* pWDICtx,
27460 WDI_EventInfoType* pEventData
27461)
27462{
Jeff Johnson295189b2012-06-20 16:38:30 -070027463 eHalStatus halStatus;
27464 WDI_GtkOffloadCb wdiGtkOffloadCb = NULL;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027465 tHalGtkOffloadRspParams halGtkOffloadRspParams;
27466 WDI_GtkOffloadRspParams wdiGtkOffloadRsparams;
Jeff Johnson295189b2012-06-20 16:38:30 -070027467
27468 /*-------------------------------------------------------------------------
27469 Sanity check
27470 -------------------------------------------------------------------------*/
27471 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
27472 ( NULL == pEventData->pEventData))
27473 {
27474 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027475 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027476 WDI_ASSERT(0);
27477 return WDI_STATUS_E_FAILURE;
27478 }
27479
Wilson Yang00256342013-10-10 23:13:38 -070027480 wdiGtkOffloadCb = (WDI_GtkOffloadCb)pWDICtx->pfncRspCB;
27481
Jeff Johnson295189b2012-06-20 16:38:30 -070027482 /*-------------------------------------------------------------------------
27483 Extract response and send it to UMAC
27484 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027485 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
27486 {
27487 wpalMemoryCopy( &halGtkOffloadRspParams,
27488 pEventData->pEventData,
27489 sizeof(halGtkOffloadRspParams));
27490
27491 wdiGtkOffloadRsparams.ulStatus =
Gopichand Nakkala870cbae2013-03-15 21:16:09 +053027492 WDI_HAL_2_WDI_STATUS(halGtkOffloadRspParams.ulStatus);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027493 wdiGtkOffloadRsparams.bssIdx =
27494 halGtkOffloadRspParams.bssIdx;
27495 }
27496 else
27497 {
27498 halStatus = *((eHalStatus*)pEventData->pEventData);
27499 wdiGtkOffloadRsparams.ulStatus = WDI_HAL_2_WDI_STATUS(halStatus);
27500 }
Jeff Johnson295189b2012-06-20 16:38:30 -070027501
27502 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027503 wdiGtkOffloadCb( &wdiGtkOffloadRsparams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070027504
27505 return WDI_STATUS_SUCCESS;
27506}
27507
27508/**
27509 @brief Process GTK Offload Get Information Response function
27510
27511 @param pWDICtx: pointer to the WLAN DAL context
27512 pEventData: pointer to the event information structure
27513
27514 @see
27515 @return Result of the function call
27516*/
27517WDI_Status
27518WDI_ProcessGTKOffloadGetInfoRsp
27519(
27520 WDI_ControlBlockType* pWDICtx,
27521 WDI_EventInfoType* pEventData
27522)
27523{
Jeff Johnson295189b2012-06-20 16:38:30 -070027524 eHalStatus halStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070027525 WDI_GtkOffloadGetInfoCb wdiGtkOffloadGetInfoCb = NULL;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027526 tHalGtkOffloadGetInfoRspParams halGtkOffloadGetInfoRspParams;
27527 WDI_GtkOffloadGetInfoRspParams wdiGtkOffloadGetInfoRsparams;
Gopichand Nakkala870cbae2013-03-15 21:16:09 +053027528 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070027529
Jeff Johnson295189b2012-06-20 16:38:30 -070027530
27531 /*-------------------------------------------------------------------------
27532 Sanity check
27533 -------------------------------------------------------------------------*/
27534 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
27535 ( NULL == pEventData->pEventData ))
27536 {
27537 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027538 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027539 WDI_ASSERT(0);
27540 return WDI_STATUS_E_FAILURE;
27541 }
27542
Wilson Yang00256342013-10-10 23:13:38 -070027543 wdiGtkOffloadGetInfoCb = (WDI_GtkOffloadGetInfoCb)pWDICtx->pfncRspCB;
27544
27545 /*-------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -070027546 Extract response and send it to UMAC
27547 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027548 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
27549 {
27550 wpalMemoryCopy( &halGtkOffloadGetInfoRspParams,
27551 pEventData->pEventData,
27552 sizeof(halGtkOffloadGetInfoRspParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070027553
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027554 wdiGtkOffloadGetInfoRsparams.ulStatus =
Gopichand Nakkala870cbae2013-03-15 21:16:09 +053027555 WDI_HAL_2_WDI_STATUS(halGtkOffloadGetInfoRspParams.ulStatus);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027556 wdiGtkOffloadGetInfoRsparams.ullKeyReplayCounter =
27557 halGtkOffloadGetInfoRspParams.ullKeyReplayCounter;
27558 wdiGtkOffloadGetInfoRsparams.ulTotalRekeyCount =
27559 halGtkOffloadGetInfoRspParams.ulTotalRekeyCount;
27560 wdiGtkOffloadGetInfoRsparams.ulGTKRekeyCount =
27561 halGtkOffloadGetInfoRspParams.ulGTKRekeyCount;
27562 wdiGtkOffloadGetInfoRsparams.ulIGTKRekeyCount =
27563 halGtkOffloadGetInfoRspParams.ulIGTKRekeyCount;
Gopichand Nakkala870cbae2013-03-15 21:16:09 +053027564
27565 wpalMutexAcquire(&pWDICtx->wptMutex);
27566 WDI_FindAssocSessionByBSSIdx(pWDICtx, halGtkOffloadGetInfoRspParams.bssIdx,
27567 &pBSSSes);
27568
27569 if ( NULL == pBSSSes )
27570 {
27571 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
27572 "Association sequence for this BSS does not exist or "
27573 "association no longer in progress - mysterious HAL response");
27574 wpalMutexRelease(&pWDICtx->wptMutex);
27575 return WDI_STATUS_E_NOT_ALLOWED;
27576 }
27577
27578 wpalMemoryCopy(wdiGtkOffloadGetInfoRsparams.bssId, pBSSSes->macBSSID,
27579 sizeof (wpt_macAddr));
27580 wpalMutexRelease(&pWDICtx->wptMutex);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027581 }
27582 else
27583 {
27584 halStatus = *((eHalStatus*)pEventData->pEventData);
27585 wdiGtkOffloadGetInfoRsparams.ulStatus = WDI_HAL_2_WDI_STATUS(halStatus);
27586 }
Jeff Johnson295189b2012-06-20 16:38:30 -070027587 /*Notify UMAC*/
27588 //wdiUpdateScanParamsCb(wdiStatus, pWDICtx->pRspCBUserData);
27589 //wdiReceiveFilterClearFilterCb(wdiStatus, pWDICtx->pRspCBUserData);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027590 wdiGtkOffloadGetInfoCb(&wdiGtkOffloadGetInfoRsparams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070027591
27592 return WDI_STATUS_SUCCESS;
27593}
27594#endif // WLAN_FEATURE_GTK_OFFLOAD
27595
27596#ifdef WLAN_WAKEUP_EVENTS
27597WDI_Status
27598WDI_ProcessWakeReasonInd
27599(
27600 WDI_ControlBlockType* pWDICtx,
27601 WDI_EventInfoType* pEventData
27602)
27603{
27604 WDI_LowLevelIndType *pWdiInd;
27605 tpWakeReasonParams pWakeReasonParams;
27606 wpt_uint32 allocSize = 0;
27607
27608 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027609 "+%s", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027610
27611 /*-------------------------------------------------------------------------
27612 Sanity check
27613 -------------------------------------------------------------------------*/
27614 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
27615 ( NULL == pEventData->pEventData ))
27616 {
27617 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027618 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027619 WDI_ASSERT( 0 );
27620 return WDI_STATUS_E_FAILURE;
27621 }
27622
27623 /*-------------------------------------------------------------------------
27624 Extract indication and send it to UMAC
27625 -------------------------------------------------------------------------*/
27626 pWakeReasonParams = (tpWakeReasonParams)(pEventData->pEventData);
27627
27628 allocSize = sizeof(WDI_LowLevelIndType) + (pWakeReasonParams->ulStoredDataLen - 1);
27629
27630 //Allocate memory for WDI_WakeReasonIndType structure
27631 pWdiInd = wpalMemoryAllocate(allocSize) ;
27632
27633 if(NULL == pWdiInd)
27634 {
27635 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080027636 "%s: Failed to allocate memory for WDI_WakeReasonIndType: %p %p %p ",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027637 __func__, pWDICtx, pEventData, pEventData->pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070027638 WDI_ASSERT(0);
27639 return WDI_STATUS_E_FAILURE;
27640 }
27641
27642 wpalMemoryZero(pWdiInd, allocSize);
27643
27644 /* Fill in the indication parameters*/
27645 // Fill wdiInd.wdiIndicationData.wakeReasonInd structure from wakeReasonInd.wakeReasonParams
27646 pWdiInd->wdiIndicationType = WDI_WAKE_REASON_IND;
27647 pWdiInd->wdiIndicationData.wdiWakeReasonInd.ulReason = pWakeReasonParams->ulReason;
27648 pWdiInd->wdiIndicationData.wdiWakeReasonInd.ulReasonArg = pWakeReasonParams->ulReasonArg;
27649 pWdiInd->wdiIndicationData.wdiWakeReasonInd.ulStoredDataLen = pWakeReasonParams->ulStoredDataLen;
27650 pWdiInd->wdiIndicationData.wdiWakeReasonInd.ulActualDataLen = pWakeReasonParams->ulActualDataLen;
27651 wpalMemoryCopy( (void *)&(pWdiInd->wdiIndicationData.wdiWakeReasonInd.aDataStart[0]),
27652 &(pWakeReasonParams->aDataStart[0]),
27653 pWakeReasonParams->ulStoredDataLen);
27654
ltimariub77f24b2013-01-24 18:54:33 -080027655
27656 if ( pWDICtx->wdiLowLevelIndCB )
27657 {
27658 /*Notify UMAC*/
27659 pWDICtx->wdiLowLevelIndCB( pWdiInd, pWDICtx->pIndUserData );
27660 }
Jeff Johnson295189b2012-06-20 16:38:30 -070027661
27662 //Free memory allocated for WDI_WakeReasonIndType structure
27663 wpalMemoryFree(pWdiInd);
27664
27665 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027666 "-%s", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027667
27668 return WDI_STATUS_SUCCESS;
27669}
27670#endif // WLAN_WAKEUP_EVENTS
27671
27672void WDI_GetWcnssCompiledApiVersion
27673(
27674 WDI_WlanVersionType *pWcnssApiVersion
27675)
27676{
27677 pWcnssApiVersion->major = WLAN_HAL_VER_MAJOR;
27678 pWcnssApiVersion->minor = WLAN_HAL_VER_MINOR;
27679 pWcnssApiVersion->version = WLAN_HAL_VER_VERSION;
27680 pWcnssApiVersion->revision = WLAN_HAL_VER_REVISION;
27681}
27682
27683/**
27684 @brief Process Set TM Level Rsp function (called when a
27685 response is being received over the bus from HAL)
27686
27687 @param pWDICtx: pointer to the WLAN DAL context
27688 pEventData: pointer to the event information structure
27689
27690 @see
27691 @return Result of the function call
27692*/
27693WDI_Status
27694WDI_ProcessSetTmLevelRsp
27695(
27696 WDI_ControlBlockType* pWDICtx,
27697 WDI_EventInfoType* pEventData
27698)
27699{
27700 WDI_Status wdiStatus;
27701 eHalStatus halStatus;
27702 WDI_SetTmLevelCb wdiSetTmLevelCb;
27703 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27704
27705 /*-------------------------------------------------------------------------
27706 Sanity check
27707 -------------------------------------------------------------------------*/
27708 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
27709 ( NULL == pEventData->pEventData ))
27710 {
27711 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027712 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027713 WDI_ASSERT(0);
27714 return WDI_STATUS_E_FAILURE;
27715 }
27716
27717 wdiSetTmLevelCb = (WDI_SetPowerParamsCb)pWDICtx->pfncRspCB;
27718
27719 /*-------------------------------------------------------------------------
27720 Extract response and send it to UMAC
27721 -------------------------------------------------------------------------*/
27722 halStatus = *((eHalStatus*)pEventData->pEventData);
27723 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
27724
27725 /*Notify UMAC*/
27726 wdiSetTmLevelCb(wdiStatus, pWDICtx->pRspCBUserData);
27727
27728 return WDI_STATUS_SUCCESS;
27729}/*WDI_ProcessSetTmLevelRsp*/
27730
27731/**
27732 @brief Process Set Thermal Mitigation level Changed request
27733
27734 @param pWDICtx: pointer to the WLAN DAL context
27735 pEventData: pointer to the event information structure
27736
27737 @see
27738 @return Result of the function call
27739*/
27740WDI_Status
27741WDI_ProcessSetTmLevelReq
27742(
27743 WDI_ControlBlockType* pWDICtx,
27744 WDI_EventInfoType* pEventData
27745)
27746{
27747 WDI_SetTmLevelReqType *pwdiSetTmLevelReq = NULL;
27748 WDI_SetTmLevelCb wdiSetTmLevelCb = NULL;
27749 wpt_uint8* pSendBuffer = NULL;
27750 wpt_uint16 usDataOffset = 0;
27751 wpt_uint16 usSendSize = 0;
27752 tSetThermalMitgationType halTmMsg;
27753
27754 /*-------------------------------------------------------------------------
27755 Sanity check
27756 -------------------------------------------------------------------------*/
27757 if (( NULL == pEventData ) ||
27758 ( NULL == (pwdiSetTmLevelReq = (WDI_SetTmLevelReqType*)pEventData->pEventData)) ||
27759 ( NULL == (wdiSetTmLevelCb = (WDI_SetTmLevelCb)pEventData->pCBfnc)))
27760 {
27761 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027762 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027763 WDI_ASSERT(0);
27764 return WDI_STATUS_E_FAILURE;
27765 }
27766
27767 /*-----------------------------------------------------------------------
27768 Get message buffer
27769 -----------------------------------------------------------------------*/
27770 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_TM_LEVEL_REQ,
27771 sizeof(halTmMsg),
27772 &pSendBuffer, &usDataOffset, &usSendSize))||
27773 ( usSendSize < (usDataOffset + sizeof(halTmMsg) )))
27774 {
27775 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080027776 "Unable to get send buffer in Set PNO req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070027777 pEventData, pwdiSetTmLevelReq, wdiSetTmLevelCb);
27778 WDI_ASSERT(0);
27779 return WDI_STATUS_E_FAILURE;
27780 }
27781
27782 halTmMsg.thermalMitMode = pwdiSetTmLevelReq->tmMode;
27783 halTmMsg.thermalMitLevel = pwdiSetTmLevelReq->tmLevel;
27784
27785 wpalMemoryCopy( pSendBuffer+usDataOffset,
27786 &halTmMsg,
27787 sizeof(halTmMsg));
27788
27789 pWDICtx->pReqStatusUserData = pwdiSetTmLevelReq->pUserData;
27790 pWDICtx->pfncRspCB = NULL;
27791 /*-------------------------------------------------------------------------
27792 Send Get STA Request to HAL
27793 -------------------------------------------------------------------------*/
27794 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
27795 wdiSetTmLevelCb, pEventData->pUserData, WDI_SET_TM_LEVEL_RESP);
27796}
27797
27798/* Fill the value from the global features enabled array to the global capabilities
27799 * bitmap struct
27800 */
27801static void
27802FillAllFeatureCaps(tWlanFeatCaps *fCaps, placeHolderInCapBitmap *enabledFeat, wpt_int8 len)
27803{
27804 wpt_int8 i;
27805 for (i=0; i<len; i++)
27806 {
27807 setFeatCaps(fCaps, enabledFeat[i]);
27808 }
27809}
27810
27811/**
27812 @brief WDI_featureCapsExchangeReq
27813 Post feature capability bitmap exchange event.
27814 Host will send its own capability to FW in this req and
27815 expect FW to send its capability back as a bitmap in Response
27816
27817 @param
27818
27819 wdiFeatureCapsExchangeCb: callback called on getting the response.
27820 It is kept to mantain similarity between WDI reqs and if needed, can
27821 be used in future. Currently, It is set to NULL
27822
27823 pUserData: user data will be passed back with the
27824 callback
27825
27826 @see
27827 @return Result of the function call
27828*/
27829WDI_Status
27830WDI_featureCapsExchangeReq
27831(
27832 WDI_featureCapsExchangeCb wdiFeatureCapsExchangeCb,
27833 void* pUserData
27834)
27835{
27836 WDI_EventInfoType wdiEventData;
27837 wpt_int32 fCapsStructSize;
27838
27839 /*------------------------------------------------------------------------
27840 Sanity Check
27841 ------------------------------------------------------------------------*/
27842 if ( eWLAN_PAL_FALSE == gWDIInitialized )
27843 {
27844 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
27845 "WDI API call before module is initialized - Fail request");
27846
27847 return WDI_STATUS_E_NOT_ALLOWED;
27848 }
27849
27850 /* Allocate memory separately for global variable carrying FW caps */
27851 fCapsStructSize = sizeof(tWlanFeatCaps);
27852 gpHostWlanFeatCaps = wpalMemoryAllocate(fCapsStructSize);
27853 if ( NULL == gpHostWlanFeatCaps )
27854 {
27855 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Arif Hussain9a5d5382013-11-17 22:05:35 -080027856 "Cannot allocate memory for host capability info");
Jeff Johnson295189b2012-06-20 16:38:30 -070027857 WDI_ASSERT(0);
27858 return WDI_STATUS_MEM_FAILURE;
27859 }
27860
27861 wpalMemoryZero(gpHostWlanFeatCaps, fCapsStructSize);
27862
27863 /*------------------------------------------------------------------------
27864 Fill in Event data and post to the Main FSM
27865 ------------------------------------------------------------------------*/
27866 FillAllFeatureCaps(gpHostWlanFeatCaps, supportEnabledFeatures,
27867 (sizeof(supportEnabledFeatures)/sizeof(supportEnabledFeatures[0])));
Madan Mohan Koyyalamudif8d3b3f2013-07-30 19:10:54 +053027868 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Arif Hussain9a5d5382013-11-17 22:05:35 -080027869 "Host caps %x %x %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -070027870 gpHostWlanFeatCaps->featCaps[0],
27871 gpHostWlanFeatCaps->featCaps[1],
27872 gpHostWlanFeatCaps->featCaps[2],
27873 gpHostWlanFeatCaps->featCaps[3]
27874 );
Madan Mohan Koyyalamudif8d3b3f2013-07-30 19:10:54 +053027875 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR, "Host Capability");
27876 WDI_TraceHostFWCapabilities(gpHostWlanFeatCaps->featCaps);
Jeff Johnson295189b2012-06-20 16:38:30 -070027877 wdiEventData.wdiRequest = WDI_FEATURE_CAPS_EXCHANGE_REQ;
27878 wdiEventData.pEventData = gpHostWlanFeatCaps;
27879 wdiEventData.uEventDataSize = fCapsStructSize;
27880 wdiEventData.pCBfnc = wdiFeatureCapsExchangeCb;
27881 wdiEventData.pUserData = pUserData;
27882
27883 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
27884}
27885
27886/**
Yathish9f22e662012-12-10 14:21:35 -080027887 @brief Disable Active mode offload in Host
27888
27889 @param void
27890 @see
27891 @return void
27892*/
27893void
27894WDI_disableCapablityFeature(wpt_uint8 feature_index)
27895{
27896 supportEnabledFeatures[feature_index] = 0;
27897 return;
27898}
27899
27900/**
Jeff Johnson295189b2012-06-20 16:38:30 -070027901 @brief Process Host-FW Capability Exchange Request function
27902
27903 @param pWDICtx: pointer to the WLAN DAL context
27904 pEventData: pointer to the event information structure
27905
27906 @see
27907 @return Result of the function call
27908*/
27909WDI_Status
27910WDI_ProcessFeatureCapsExchangeReq
27911(
27912 WDI_ControlBlockType* pWDICtx,
27913 WDI_EventInfoType* pEventData
27914)
27915{
27916 wpt_uint8* pSendBuffer = NULL;
27917 wpt_uint16 usDataOffset = 0;
27918 wpt_uint16 usSendSize = 0;
27919 wpt_uint16 usLen = 0;
27920
27921 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27922
27923 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027924 "%s", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027925
27926 /*-------------------------------------------------------------------------
27927 Sanity check
27928 -------------------------------------------------------------------------*/
27929 /* Call back function is NULL since not required for cap exchange req */
27930 if (( NULL == pEventData ) ||
27931 ( NULL == (tWlanFeatCaps *)pEventData->pEventData))
27932 {
27933 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027934 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027935 WDI_ASSERT(0);
27936 return WDI_STATUS_E_FAILURE;
27937 }
27938
27939 /*-----------------------------------------------------------------------
27940 Get message buffer
27941 -----------------------------------------------------------------------*/
27942 usLen = sizeof(tWlanFeatCaps);
27943
27944 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
27945 WDI_FEATURE_CAPS_EXCHANGE_REQ,
27946 usLen,
27947 &pSendBuffer, &usDataOffset, &usSendSize))||
27948 ( usSendSize < (usDataOffset + usLen )))
27949 {
27950 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080027951 "Unable to get send buffer in feat caps exchange req %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070027952 pEventData, (tWlanFeatCaps *)pEventData->pEventData);
27953 WDI_ASSERT(0);
27954 return WDI_STATUS_E_FAILURE;
27955 }
27956
27957 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Arif Hussain9a5d5382013-11-17 22:05:35 -080027958 "Host Caps - %x %x %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -070027959 ((tWlanFeatCaps *)pEventData->pEventData)->featCaps[0],
27960 ((tWlanFeatCaps *)pEventData->pEventData)->featCaps[1],
27961 ((tWlanFeatCaps *)pEventData->pEventData)->featCaps[2],
27962 ((tWlanFeatCaps *)pEventData->pEventData)->featCaps[3]
27963 );
27964
27965 /* Copy host caps after the offset in the send buffer */
27966 wpalMemoryCopy( pSendBuffer+usDataOffset,
27967 (tWlanFeatCaps *)pEventData->pEventData,
27968 usLen);
27969
27970 /*-------------------------------------------------------------------------
27971 Send Start Request to HAL
27972 -------------------------------------------------------------------------*/
27973 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
27974 (WDI_StartRspCb)pEventData->pCBfnc,
27975 pEventData->pUserData, WDI_FEATURE_CAPS_EXCHANGE_RESP);
27976
27977}/*WDI_ProcessFeatureCapsExchangeReq*/
27978
27979/**
27980 @brief Process Host-FW Capability Exchange Response function
27981
27982 @param pWDICtx: pointer to the WLAN DAL context
27983 pEventData: pointer to the event information structure
27984
27985 @see
27986 @return Result of the function call
27987*/
27988WDI_Status
27989WDI_ProcessFeatureCapsExchangeRsp
27990(
27991 WDI_ControlBlockType* pWDICtx,
27992 WDI_EventInfoType* pEventData
27993)
27994{
27995 WDI_featureCapsExchangeCb wdiFeatureCapsExchangeCb;
27996 wpt_int32 fCapsStructSize;
27997 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27998
27999 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028000 "%s", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028001
28002 /*-------------------------------------------------------------------------
28003 Sanity check
28004 -------------------------------------------------------------------------*/
28005 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
28006 ( NULL == pEventData->pEventData ))
28007 {
28008 /* It will go here when riva is old (doesn't understand this msg) and host is new */
28009 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028010 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028011 WDI_ASSERT(0);
28012 return WDI_STATUS_E_FAILURE;
28013 }
28014
28015 /* Allocate memory separately for global variable carrying FW caps */
28016 fCapsStructSize = sizeof(tWlanFeatCaps);
28017 gpFwWlanFeatCaps = wpalMemoryAllocate(fCapsStructSize);
28018 if ( NULL == gpFwWlanFeatCaps )
28019 {
28020 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Arif Hussain9a5d5382013-11-17 22:05:35 -080028021 "Cannot allocate memory for host capability info");
Jeff Johnson295189b2012-06-20 16:38:30 -070028022 WDI_ASSERT(0);
28023 return WDI_STATUS_MEM_FAILURE;
28024 }
28025
28026 /*-------------------------------------------------------------------------
28027 Unpack HAL Response Message - the header was already extracted by the
28028 main Response Handling procedure
28029 -------------------------------------------------------------------------*/
28030 /*-------------------------------------------------------------------------
28031 Extract response and send it to UMAC
28032 -------------------------------------------------------------------------*/
28033
28034 wpalMemoryCopy(gpFwWlanFeatCaps,(tWlanFeatCaps *) pEventData -> pEventData,
28035 fCapsStructSize);
Madan Mohan Koyyalamudif8d3b3f2013-07-30 19:10:54 +053028036 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Arif Hussain9a5d5382013-11-17 22:05:35 -080028037 "FW caps %x %x %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -070028038 gpFwWlanFeatCaps->featCaps[0],
28039 gpFwWlanFeatCaps->featCaps[1],
28040 gpFwWlanFeatCaps->featCaps[2],
28041 gpFwWlanFeatCaps->featCaps[3]
Madan Mohan Koyyalamudif8d3b3f2013-07-30 19:10:54 +053028042 );
28043 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR, "Firmware Capability");
28044 WDI_TraceHostFWCapabilities(gpFwWlanFeatCaps->featCaps);
Jeff Johnson295189b2012-06-20 16:38:30 -070028045 wdiFeatureCapsExchangeCb = (WDI_featureCapsExchangeCb) pWDICtx -> pfncRspCB;
28046
28047 /*Notify UMAC - there is no callback right now but can be used in future if reqd */
28048 if (wdiFeatureCapsExchangeCb != NULL)
28049 wdiFeatureCapsExchangeCb(NULL, NULL);
28050
28051 return WDI_STATUS_SUCCESS;
28052}
28053
Mohit Khanna4a70d262012-09-11 16:30:12 -070028054#ifdef WLAN_FEATURE_11AC
28055WDI_Status
28056WDI_ProcessUpdateVHTOpModeRsp
28057(
28058 WDI_ControlBlockType* pWDICtx,
28059 WDI_EventInfoType* pEventData
28060)
28061{
28062 WDI_UpdateVHTOpModeCb wdiVHTOpModeCb = NULL;
28063 WDI_Status wdiStatus;
28064 eHalStatus halStatus;
28065
28066 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28067
28068 /*-------------------------------------------------------------------------
28069 Sanity check
28070 -------------------------------------------------------------------------*/
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__);
Mohit Khanna4a70d262012-09-11 16:30:12 -070028076 WDI_ASSERT(0);
28077 return WDI_STATUS_E_FAILURE;
28078 }
28079 wdiVHTOpModeCb = (WDI_UpdateVHTOpModeCb)pEventData->pCBfnc;
28080
28081 /*-------------------------------------------------------------------------
28082 Extract response and send it to UMAC
28083 -------------------------------------------------------------------------*/
28084 halStatus = *((eHalStatus*)pEventData->pEventData);
28085 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
28086
28087 /*Notify UMAC*/
28088 wdiVHTOpModeCb( wdiStatus, pEventData->pUserData);
28089
28090 return WDI_STATUS_SUCCESS;
28091}
28092#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070028093/**
28094 @brief WDI_getHostWlanFeatCaps
28095 WDI API that returns whether the feature passed to it as enum value in
28096 "placeHolderInCapBitmap" is supported by Host or not. It uses WDI global
28097 variable storing host capability bitmap to find this. This can be used by
28098 other moduels to decide certain things like call different APIs based on
28099 whether a particular feature is supported.
28100
28101 @param
28102
28103 feat_enum_value: enum value for the feature as in placeHolderInCapBitmap in wlan_hal_msg.h.
28104
28105 @see
28106 @return
28107 0 - if the feature is NOT supported in host
28108 any non-zero value - if the feature is SUPPORTED in host.
28109*/
28110wpt_uint8 WDI_getHostWlanFeatCaps(wpt_uint8 feat_enum_value)
28111{
28112 wpt_uint8 featSupported = 0;
28113 if (gpHostWlanFeatCaps != NULL)
28114 {
28115 getFeatCaps(gpHostWlanFeatCaps, feat_enum_value, featSupported);
28116 }
28117 else
28118 {
Madan Mohan Koyyalamudi8b7f1e62012-10-05 14:56:51 -070028119 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi8bdd3112012-09-24 13:55:14 -070028120 "Caps exchange feature NOT supported. Return NOT SUPPORTED for %u feature", feat_enum_value);
Jeff Johnson295189b2012-06-20 16:38:30 -070028121 }
28122 return featSupported;
28123}
28124
28125/**
28126 @brief WDI_getFwWlanFeatCaps
28127 WDI API that returns whether the feature passed to it as enum value in
28128 "placeHolderInCapBitmap" is supported by FW or not. It uses WDI global
28129 variable storing host capability bitmap to find this. This can be used by
28130 other moduels to decide certain things like call different APIs based on
28131 whether a particular feature is supported.
28132
28133 @param
28134
28135 feat_enum_value: enum value for the feature as in placeHolderInCapBitmap
28136 in wlan_hal_msg.h.
28137
28138 @see
28139 @return
28140 0 - if the feature is NOT supported in FW
28141 any non-zero value - if the feature is SUPPORTED in FW.
28142*/
28143wpt_uint8 WDI_getFwWlanFeatCaps(wpt_uint8 feat_enum_value)
28144{
28145 wpt_uint8 featSupported = 0;
28146 if (gpFwWlanFeatCaps != NULL)
28147 {
28148 getFeatCaps(gpFwWlanFeatCaps, feat_enum_value, featSupported);
28149 }
28150 else
28151 {
Madan Mohan Koyyalamudi8b7f1e62012-10-05 14:56:51 -070028152 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi8bdd3112012-09-24 13:55:14 -070028153 "Caps exchange feature NOT supported. Return NOT SUPPORTED for %u feature", feat_enum_value);
Jeff Johnson295189b2012-06-20 16:38:30 -070028154 }
28155 return featSupported;
28156}
Mohit Khanna4a70d262012-09-11 16:30:12 -070028157
28158#ifdef WLAN_FEATURE_11AC
28159WDI_Status
28160WDI_ProcessUpdateVHTOpModeReq
28161(
28162 WDI_ControlBlockType* pWDICtx,
28163 WDI_EventInfoType* pEventData
28164)
28165{
28166 WDI_UpdateVHTOpMode* pwdiVHTOpModeParams = NULL;
28167 WDI_UpdateVHTOpModeCb wdiVHTOpModeCb = NULL;
28168 wpt_uint8* pSendBuffer = NULL;
28169 wpt_uint16 usDataOffset = 0;
28170 wpt_uint16 usSendSize = 0;
28171
28172 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28173
28174 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028175 "%s", __func__);
Mohit Khanna4a70d262012-09-11 16:30:12 -070028176
28177 /*-------------------------------------------------------------------------
28178 Sanity check
28179 -------------------------------------------------------------------------*/
28180 if (( NULL == pEventData ) ||
28181 ( NULL == (pwdiVHTOpModeParams = (WDI_UpdateVHTOpMode*)pEventData->pEventData)) ||
28182 ( NULL == (wdiVHTOpModeCb = (WDI_UpdateVHTOpModeCb)pEventData->pCBfnc)))
28183 {
28184 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028185 "%s: Invalid parameters", __func__);
Mohit Khanna4a70d262012-09-11 16:30:12 -070028186 WDI_ASSERT(0);
28187 return WDI_STATUS_E_FAILURE;
28188 }
28189
28190 /*-----------------------------------------------------------------------
28191 Get message buffer
28192 -----------------------------------------------------------------------*/
28193 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_VHT_OP_MODE_REQ,
28194 sizeof(WDI_UpdateVHTOpMode),
28195 &pSendBuffer, &usDataOffset, &usSendSize))||
28196 ( usSendSize < (usDataOffset + sizeof(WDI_UpdateVHTOpMode) )))
28197 {
28198 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
28199 "Unable to get send buffer in update vht opMode req");
28200 WDI_ASSERT(0);
28201 return WDI_STATUS_E_FAILURE;
28202 }
28203
28204 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Arif Hussain9a5d5382013-11-17 22:05:35 -080028205 "pwdiVHTOpModeParams->opMode=%d, pwdiVHTOpModeParams->staId=%d", pwdiVHTOpModeParams->opMode, pwdiVHTOpModeParams->staId);
Mohit Khanna4a70d262012-09-11 16:30:12 -070028206
28207 wpalMemoryCopy( pSendBuffer+usDataOffset, pwdiVHTOpModeParams,
28208 sizeof(WDI_UpdateVHTOpMode));
28209
28210 /*-------------------------------------------------------------------------
28211 Send Start Request to HAL
28212 -------------------------------------------------------------------------*/
28213 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
28214 wdiVHTOpModeCb,
28215 pEventData->pUserData, WDI_UPDATE_VHT_OP_MODE_RESP);
28216
28217}
28218
28219WDI_Status
28220WDI_UpdateVHTOpModeReq
28221(
28222 WDI_UpdateVHTOpMode *pData,
28223 WDI_UpdateVHTOpModeCb wdiUpdateVHTOpModeCb,
28224 void* pUserData
28225)
28226{
28227 WDI_EventInfoType wdiEventData;
28228
28229 /*------------------------------------------------------------------------
28230 Sanity Check
28231 ------------------------------------------------------------------------*/
28232 if ( eWLAN_PAL_FALSE == gWDIInitialized )
28233 {
28234 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
28235 "WDI API call before module is initialized - Fail request");
28236
28237 return WDI_STATUS_E_NOT_ALLOWED;
28238 }
28239
28240 /*------------------------------------------------------------------------
28241 Fill in Event data and post to the Main FSM
28242 ------------------------------------------------------------------------*/
28243 wdiEventData.wdiRequest = WDI_UPDATE_VHT_OP_MODE_REQ;
28244 wdiEventData.pEventData = pData;
28245 wdiEventData.uEventDataSize = sizeof(WDI_UpdateVHTOpMode);
28246 wdiEventData.pCBfnc = wdiUpdateVHTOpModeCb;
28247 wdiEventData.pUserData = pUserData;
28248
28249 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Arif Hussain9a5d5382013-11-17 22:05:35 -080028250 "pData->opMode=%d, pData->staId=%d", pData->opMode, pData->staId);
Mohit Khanna4a70d262012-09-11 16:30:12 -070028251
28252 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
28253
28254}
28255#endif
Madan Mohan Koyyalamudi8cb53982012-09-28 14:34:47 -070028256
28257/**
28258 @brief WDI_TransportChannelDebug -
28259 Display DXE Channel debugging information
28260 User may request to display DXE channel snapshot
28261 Or if host driver detects any abnormal stcuk may display
Madan Mohan Koyyalamudi8b7f1e62012-10-05 14:56:51 -070028262
Jeff Johnsonb88db982012-12-10 13:34:59 -080028263 @param displaySnapshot : Display DXE snapshot option
Madan Mohan Koyyalamudi8cb53982012-09-28 14:34:47 -070028264 @param enableStallDetect : Enable stall detect feature
28265 This feature will take effect to data performance
28266 Not integrate till fully verification
28267 @see
28268 @return none
28269*/
28270void WDI_TransportChannelDebug
28271(
28272 wpt_boolean displaySnapshot,
Madan Mohan Koyyalamudi24a00f92012-10-22 15:21:02 -070028273 wpt_boolean toggleStallDetect
Madan Mohan Koyyalamudi8cb53982012-09-28 14:34:47 -070028274)
28275{
Madan Mohan Koyyalamudi24a00f92012-10-22 15:21:02 -070028276 WDTS_ChannelDebug(displaySnapshot, toggleStallDetect);
Madan Mohan Koyyalamudi8cb53982012-09-28 14:34:47 -070028277 return;
Madan Mohan Koyyalamudi3352adb2012-09-28 14:57:24 -070028278}
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -070028279/**
28280 @brief WDI_SsrTimerCB
28281 Callback function for SSR timer, if this is called then the graceful
28282 shutdown for Riva did not happen.
28283
28284 @param pUserData : user data to timer
28285
28286 @see
28287 @return none
28288*/
28289void
28290WDI_SsrTimerCB
28291(
28292 void *pUserData
28293)
28294{
28295 WDI_ControlBlockType* pWDICtx = (WDI_ControlBlockType*)pUserData;
28296 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28297
28298 if (NULL == pWDICtx )
28299 {
28300 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028301 "%s: Invalid parameters", __func__);
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -070028302 WDI_ASSERT(0);
28303 return;
28304 }
28305 wpalRivaSubystemRestart();
28306
28307 return;
28308
28309}/*WDI_SsrTimerCB*/
Gopichand Nakkalae620d5a2013-04-26 05:45:57 -070028310
28311/**
28312 @brief WDI_SetEnableSSR -
28313 This API is called to enable/disable SSR on WDI timeout.
28314
28315 @param enableSSR : enable/disable SSR
28316
28317 @see
28318 @return none
28319*/
28320void WDI_SetEnableSSR(wpt_boolean enableSSR)
28321{
28322 gWDICb.bEnableSSR = enableSSR;
28323}
Leo Chang9056f462013-08-01 19:21:11 -070028324
28325
28326#ifdef FEATURE_WLAN_LPHB
28327/**
Leo Changd9df8aa2013-09-26 13:32:26 -070028328 @brief WDI_ProcessLphbInd -
Leo Chang9056f462013-08-01 19:21:11 -070028329 This function will be invoked when FW detects low power
28330 heart beat failure
28331
28332 @param pWDICtx : wdi context
28333 pEventData : indication data
Leo Chang9056f462013-08-01 19:21:11 -070028334 @see
28335 @return Result of the function call
28336*/
28337WDI_Status
Leo Changd9df8aa2013-09-26 13:32:26 -070028338WDI_ProcessLphbInd
Leo Chang9056f462013-08-01 19:21:11 -070028339(
28340 WDI_ControlBlockType* pWDICtx,
28341 WDI_EventInfoType* pEventData
28342)
28343{
28344 WDI_LowLevelIndType wdiInd;
Leo Changd9df8aa2013-09-26 13:32:26 -070028345 tHalLowPowerHeartBeatIndParam lphbIndicationParam;
Leo Chang9056f462013-08-01 19:21:11 -070028346 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28347
28348 /*-------------------------------------------------------------------------
28349 Sanity check
28350 -------------------------------------------------------------------------*/
28351 if ((NULL == pWDICtx) || (NULL == pEventData) ||
28352 (NULL == pEventData->pEventData))
28353 {
28354 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
28355 "%s: Invalid parameters", __func__);
28356 WDI_ASSERT(0);
28357 return WDI_STATUS_E_FAILURE;
28358 }
28359
28360 /*-------------------------------------------------------------------------
28361 Extract indication and send it to UMAC
28362 -------------------------------------------------------------------------*/
Leo Changd9df8aa2013-09-26 13:32:26 -070028363 wpalMemoryCopy(&lphbIndicationParam,
28364 pEventData->pEventData,
28365 sizeof(tHalLowPowerHeartBeatIndParam));
Leo Chang9056f462013-08-01 19:21:11 -070028366
Leo Changd9df8aa2013-09-26 13:32:26 -070028367 wdiInd.wdiIndicationType = WDI_LPHB_IND;
Leo Chang9056f462013-08-01 19:21:11 -070028368 wdiInd.wdiIndicationData.wdiLPHBTimeoutInd.bssIdx =
Leo Changd9df8aa2013-09-26 13:32:26 -070028369 lphbIndicationParam.bssIdx;
Leo Chang9056f462013-08-01 19:21:11 -070028370 wdiInd.wdiIndicationData.wdiLPHBTimeoutInd.sessionIdx =
Leo Changd9df8aa2013-09-26 13:32:26 -070028371 lphbIndicationParam.sessionIdx;
Leo Chang9056f462013-08-01 19:21:11 -070028372 wdiInd.wdiIndicationData.wdiLPHBTimeoutInd.protocolType =
Leo Changd9df8aa2013-09-26 13:32:26 -070028373 lphbIndicationParam.protocolType;
Leo Chang9056f462013-08-01 19:21:11 -070028374 wdiInd.wdiIndicationData.wdiLPHBTimeoutInd.eventReason =
Leo Changd9df8aa2013-09-26 13:32:26 -070028375 lphbIndicationParam.eventReason;
Leo Chang9056f462013-08-01 19:21:11 -070028376 /*Notify UMAC*/
28377 if (pWDICtx->wdiLowLevelIndCB)
28378 {
28379 pWDICtx->wdiLowLevelIndCB(&wdiInd, pWDICtx->pIndUserData);
28380 }
28381
28382 return WDI_STATUS_SUCCESS;
28383}
28384
28385/**
28386 @brief WDI_ProcessLphbCfgRsp -
28387 LPHB configuration response from FW
28388
28389 @param pWDICtx : wdi context
28390 pEventData : indication data
28391
28392 @see
28393 @return Result of the function call
28394*/
28395WDI_Status WDI_ProcessLphbCfgRsp
28396(
28397 WDI_ControlBlockType* pWDICtx,
28398 WDI_EventInfoType* pEventData
28399)
28400{
28401 WDI_Status wdiStatus;
28402 eHalStatus halStatus;
28403 WDI_LphbCfgCb wdiLphbCfgCb;
28404 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28405
28406 /*-------------------------------------------------------------------------
28407 Sanity check
28408 -------------------------------------------------------------------------*/
28409 if ((NULL == pWDICtx) || (NULL == pEventData) ||
28410 (NULL == pEventData->pEventData))
28411 {
28412 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
28413 "%s: Invalid parameters", __func__);
28414 WDI_ASSERT(0);
28415 return WDI_STATUS_E_FAILURE;
28416 }
28417
28418 wdiLphbCfgCb = (WDI_LphbCfgCb)pWDICtx->pfncRspCB;
28419
28420 /*-------------------------------------------------------------------------
28421 Extract response and send it to UMAC
28422 -------------------------------------------------------------------------*/
28423 halStatus = *((eHalStatus*)pEventData->pEventData);
28424 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
28425
28426 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
28427 "LPHB Cfg Rsp Return status %d", wdiStatus);
28428 /*Notify UMAC*/
28429 if (NULL != wdiLphbCfgCb)
28430 {
28431 wdiLphbCfgCb(wdiStatus, pWDICtx->pRspCBUserData);
28432 }
28433
28434 return WDI_STATUS_SUCCESS;
28435}
28436
28437/**
28438 @brief WDI_ProcessLPHBConfReq -
28439 LPHB configuration request to FW
28440
28441 @param pWDICtx : wdi context
28442 pEventData : indication data
28443
28444 @see
28445 @return none
28446*/
28447WDI_Status WDI_ProcessLPHBConfReq
28448(
28449 WDI_ControlBlockType* pWDICtx,
28450 WDI_EventInfoType* pEventData
28451)
28452{
28453 WDI_LPHBReq *pLphbReqParams;
28454 WDI_Status wdiStatus;
28455 wpt_uint8* pSendBuffer = NULL;
28456 wpt_uint16 usDataOffset = 0;
28457 wpt_uint16 usSendSize = 0;
28458 tHalLowPowerHeartBeatReq *halLphbReqRarams;
28459 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28460
28461 /*-------------------------------------------------------------------------
28462 Sanity check
28463 -------------------------------------------------------------------------*/
28464 if ((NULL == pEventData) || (NULL == pEventData->pEventData))
28465 {
28466 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
28467 "%s: Invalid parameters in Suspend ind",__func__);
28468 WDI_ASSERT(0);
28469 return WDI_STATUS_E_FAILURE;
28470 }
28471
28472 pLphbReqParams = (WDI_LPHBReq *)pEventData->pEventData;
28473
28474 /*-----------------------------------------------------------------------
28475 Get message buffer
28476 -----------------------------------------------------------------------*/
28477 if ((WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(pWDICtx,
28478 WDI_LPHB_CFG_REQ,
28479 sizeof(tHalLowPowerHeartBeatReqMsg),
28480 &pSendBuffer, &usDataOffset, &usSendSize))||
28481 (usSendSize < (usDataOffset + sizeof(tHalLowPowerHeartBeatReqMsg))))
28482 {
28483 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
28484 "Unable to get send buffer in LPHB Ind ");
28485 WDI_ASSERT(0);
28486 return WDI_STATUS_E_FAILURE;
28487 }
28488
28489 halLphbReqRarams = (tHalLowPowerHeartBeatReq *)(pSendBuffer + usDataOffset);
28490 wpalMemoryZero(halLphbReqRarams, sizeof(tHalLowPowerHeartBeatReq));
28491
28492 halLphbReqRarams->lowPowerHeartBeatCmdType =
28493 (tANI_U16)(++pLphbReqParams->cmd);
28494 switch ((tANI_U16)pLphbReqParams->cmd)
28495 {
28496 case WDI_LPHB_SET_EN_PARAMS_INDID:
28497 halLphbReqRarams->sessionIdx =
28498 pLphbReqParams->params.lphbEnableReq.session;
28499 halLphbReqRarams->options.control.heartBeatEnable =
28500 pLphbReqParams->params.lphbEnableReq.enable;
28501 halLphbReqRarams->options.control.heartBeatType =
28502 pLphbReqParams->params.lphbEnableReq.item;
28503 break;
28504
28505 case WDI_LPHB_SET_TCP_PARAMS_INDID:
28506 halLphbReqRarams->sessionIdx =
28507 pLphbReqParams->params.lphbTcpParamReq.session;
28508 halLphbReqRarams->options.tcpParams.timeOutSec =
28509 pLphbReqParams->params.lphbTcpParamReq.timeout;
28510 wpalMemoryCopy(&halLphbReqRarams->options.tcpParams.hostIpv4Addr,
28511 &pLphbReqParams->params.lphbTcpParamReq.dev_ip,
28512 sizeof(v_U32_t));
28513 wpalMemoryCopy(&halLphbReqRarams->options.tcpParams.destIpv4Addr,
28514 &pLphbReqParams->params.lphbTcpParamReq.srv_ip,
28515 sizeof(v_U32_t));
28516
28517 wpalMemoryCopy(halLphbReqRarams->options.tcpParams.gatewayMacAddr,
28518 pLphbReqParams->params.lphbTcpParamReq.gateway_mac,
28519 WDI_MAC_ADDR_LEN);
28520
28521 halLphbReqRarams->options.tcpParams.hostPort =
28522 pLphbReqParams->params.lphbTcpParamReq.src_port;
28523 halLphbReqRarams->options.tcpParams.destPort =
28524 pLphbReqParams->params.lphbTcpParamReq.dst_port;
Leo Changd9df8aa2013-09-26 13:32:26 -070028525 halLphbReqRarams->options.tcpParams.timePeriodSec =
28526 pLphbReqParams->params.lphbTcpParamReq.timePeriodSec;
28527 halLphbReqRarams->options.tcpParams.tcpSn =
28528 pLphbReqParams->params.lphbTcpParamReq.tcpSn;
Leo Chang9056f462013-08-01 19:21:11 -070028529 break;
28530
28531 case WDI_LPHB_SET_TCP_PKT_FILTER_INDID:
28532 halLphbReqRarams->sessionIdx =
28533 pLphbReqParams->params.lphbTcpFilterReq.session;
28534 halLphbReqRarams->options.tcpUdpFilter.offset =
28535 pLphbReqParams->params.lphbTcpFilterReq.offset;
28536 halLphbReqRarams->options.tcpUdpFilter.filterLength =
28537 pLphbReqParams->params.lphbTcpFilterReq.length;
28538 wpalMemoryCopy(halLphbReqRarams->options.tcpUdpFilter.filter,
28539 pLphbReqParams->params.lphbTcpFilterReq.filter,
28540 WDI_LPHB_FILTER_LEN);
28541 break;
28542
28543 case WDI_LPHB_SET_UDP_PARAMS_INDID:
28544 halLphbReqRarams->sessionIdx =
28545 pLphbReqParams->params.lphbUdpParamReq.session;
28546 halLphbReqRarams->options.udpParams.timeOutSec =
28547 pLphbReqParams->params.lphbUdpParamReq.timeout;
28548 halLphbReqRarams->options.udpParams.timePeriodSec =
28549 pLphbReqParams->params.lphbUdpParamReq.interval;
28550 wpalMemoryCopy(&halLphbReqRarams->options.udpParams.hostIpv4Addr,
28551 &pLphbReqParams->params.lphbUdpParamReq.dev_ip,
28552 sizeof(v_U32_t));
28553 wpalMemoryCopy(&halLphbReqRarams->options.udpParams.destIpv4Addr,
28554 &pLphbReqParams->params.lphbUdpParamReq.srv_ip,
28555 sizeof(v_U32_t));
28556
28557 wpalMemoryCopy(halLphbReqRarams->options.udpParams.gatewayMacAddr,
28558 pLphbReqParams->params.lphbUdpParamReq.gateway_mac,
28559 WDI_MAC_ADDR_LEN);
28560
28561 halLphbReqRarams->options.udpParams.hostPort =
28562 pLphbReqParams->params.lphbUdpParamReq.src_port;
28563 halLphbReqRarams->options.udpParams.destPort =
28564 pLphbReqParams->params.lphbUdpParamReq.dst_port;
28565 break;
28566
28567 case WDI_LPHB_SET_UDP_PKT_FILTER_INDID:
28568 halLphbReqRarams->sessionIdx =
28569 pLphbReqParams->params.lphbUdpFilterReq.session;
28570 halLphbReqRarams->options.tcpUdpFilter.offset =
28571 pLphbReqParams->params.lphbUdpFilterReq.offset;
28572 halLphbReqRarams->options.tcpUdpFilter.filterLength =
28573 pLphbReqParams->params.lphbUdpFilterReq.length;
28574 wpalMemoryCopy(halLphbReqRarams->options.tcpUdpFilter.filter,
28575 pLphbReqParams->params.lphbUdpFilterReq.filter,
28576 WDI_LPHB_FILTER_LEN);
28577 break;
28578
28579 case WDI_LPHB_SET_NETWORK_INFO_INDID:
28580 /* NA */
28581 break;
28582
28583 default:
28584 break;
28585 }
28586
28587 /*-------------------------------------------------------------------------
28588 Send Suspend Request to HAL
28589 -------------------------------------------------------------------------*/
28590 pWDICtx->pfncRspCB = pEventData->pCBfnc;
28591 pWDICtx->pReqStatusUserData = pEventData->pUserData;
28592
28593 wdiStatus = WDI_SendMsg(pWDICtx, pSendBuffer,
28594 usSendSize, pWDICtx->pfncRspCB,
28595 pWDICtx->pReqStatusUserData,
28596 WDI_LPHB_CFG_RESP);
28597
28598 return wdiStatus;
28599}
28600
28601/**
28602 @brief WDI_LPHBConfReq -
28603 LPHB configuration request API
28604
28605 @param lphbconfParam : configuration parameter
28606 usrData : client context
28607 lphbCfgCb : callback function pointer
28608
28609 @see
28610 @return Success or fail status code
28611*/
28612WDI_Status WDI_LPHBConfReq(void *lphbconfParam,
28613 void *usrData, WDI_LphbCfgCb lphbCfgCb)
28614{
28615 WDI_EventInfoType wdiEventData;
28616
28617 /*------------------------------------------------------------------------
28618 Sanity Check
28619 ------------------------------------------------------------------------*/
28620 if (eWLAN_PAL_FALSE == gWDIInitialized)
28621 {
28622 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
28623 "WDI API call before module is initialized - Fail request");
28624
28625 return WDI_STATUS_E_NOT_ALLOWED;
28626 }
28627
28628 /*------------------------------------------------------------------------
28629 Fill in Event data and post to the Main FSM
28630 ------------------------------------------------------------------------*/
28631 wdiEventData.wdiRequest = WDI_LPHB_CFG_REQ;
28632 wdiEventData.pEventData = lphbconfParam;
28633 wdiEventData.uEventDataSize = sizeof(WDI_LPHBReq);
28634 wdiEventData.pCBfnc = lphbCfgCb;
28635 wdiEventData.pUserData = usrData;
28636
28637 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
28638}
28639#endif /* FEATURE_WLAN_LPHB */
28640
Ravi Joshid2ca7c42013-07-23 08:37:49 -070028641/**
28642 @brief WDI_ProcessIbssPeerInactivityInd
28643 Process peer inactivity indication coming from HAL
28644
28645 @param pWDICtx: pointer to the WLAN DAL context
28646 pEventData: pointer to the event information structure
28647 @see
28648 @return Result of the function call
28649*/
28650WDI_Status
28651WDI_ProcessIbssPeerInactivityInd
28652(
28653 WDI_ControlBlockType* pWDICtx,
28654 WDI_EventInfoType* pEventData
28655)
28656{
28657 WDI_LowLevelIndType wdiInd;
28658 tIbssPeerInactivityIndMsg halIbssIndMsg;
28659
28660 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28661
28662 /*-------------------------------------------------------------------------
28663 Sanity check
28664 -------------------------------------------------------------------------*/
28665 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
28666 ( NULL == pEventData->pEventData ))
28667 {
28668 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
28669 "%s: Invalid parameters", __func__);
28670 WDI_ASSERT( 0 );
28671 return WDI_STATUS_E_FAILURE;
28672 }
28673
28674 /*-------------------------------------------------------------------------
28675 Extract indication and send it to UMAC
28676 -------------------------------------------------------------------------*/
28677 wpalMemoryCopy( &halIbssIndMsg.ibssPeerInactivityIndParams,
28678 pEventData->pEventData,
28679 sizeof(halIbssIndMsg.ibssPeerInactivityIndParams) );
28680
28681 /*Fill in the indication parameters*/
28682 wdiInd.wdiIndicationType = WDI_IBSS_PEER_INACTIVITY_IND;
28683
28684 wdiInd.wdiIndicationData.wdiIbssPeerInactivityInd.bssIdx
28685 = halIbssIndMsg.ibssPeerInactivityIndParams.bssIdx;
28686
28687 wdiInd.wdiIndicationData.wdiIbssPeerInactivityInd.staIdx
28688 = halIbssIndMsg.ibssPeerInactivityIndParams.staIdx;
28689
28690 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiIbssPeerInactivityInd.staMacAddr,
28691 halIbssIndMsg.ibssPeerInactivityIndParams.staAddr,
28692 sizeof(tSirMacAddr));
28693
28694 /*Notify UMAC*/
28695 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
28696
28697 return WDI_STATUS_SUCCESS;
28698
28699} /*WDI_ProcessIbssPeerInactivityInd*/
Rajeev79dbe4c2013-10-05 11:03:42 +053028700
Chittajit Mitraf5413a42013-10-18 14:20:08 -070028701/**
28702*@brief WDI_RateUpdateInd will be called when the upper MAC
28703 requests the device to set rates.
Rajeev79dbe4c2013-10-05 11:03:42 +053028704
Chittajit Mitraf5413a42013-10-18 14:20:08 -070028705
28706 @param wdiRateUpdateIndParams:
28707
28708
28709 @see
28710 @return Result of the function call
28711*/
28712WDI_Status
28713WDI_RateUpdateInd
28714(
28715 WDI_RateUpdateIndParams *wdiRateUpdateIndParams
28716)
28717{
28718 WDI_EventInfoType wdiEventData;
28719 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28720
28721 /*------------------------------------------------------------------------
28722 Sanity Check
28723 ------------------------------------------------------------------------*/
28724 if ( eWLAN_PAL_FALSE == gWDIInitialized )
28725 {
28726 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
28727 "WDI API call before module is initialized - Fail request");
28728
28729 return WDI_STATUS_E_NOT_ALLOWED;
28730 }
28731
28732 /*------------------------------------------------------------------------
28733 Fill in Event data and post to the Main FSM
28734 ------------------------------------------------------------------------*/
28735 wdiEventData.wdiRequest = WDI_RATE_UPDATE_IND;
28736 wdiEventData.pEventData = wdiRateUpdateIndParams;
28737 wdiEventData.uEventDataSize = sizeof(WDI_RateUpdateIndParams);
28738 wdiEventData.pCBfnc = NULL;
28739 wdiEventData.pUserData = NULL;
28740
28741 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
28742
28743}/* WDI_RateUpdateInd */
28744
28745/**
28746 @brief Process Rate Update Indication and post it to HAL
28747
28748 @param pWDICtx: pointer to the WLAN DAL context
28749 pEventData: pointer to the event information structure
28750
28751 @see
28752 @return Result of the function call
28753*/
28754WDI_Status
28755WDI_ProcessRateUpdateInd
28756(
28757 WDI_ControlBlockType* pWDICtx,
28758 WDI_EventInfoType* pEventData
28759)
28760{
28761 wpt_uint8* pSendBuffer = NULL;
28762 wpt_uint16 usDataOffset = 0;
28763 wpt_uint16 usSendSize = 0;
28764 WDI_RateUpdateIndParams *pwdiRateUpdateInd = NULL;
28765 tHalRateUpdateInd *pRateUpdateInd;
28766 WDI_Status wdiStatus;
28767
28768 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28769
28770 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
28771 "%s", __func__);
28772
28773 /*-------------------------------------------------------------------------
28774 Sanity check
28775 -------------------------------------------------------------------------*/
28776 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
28777 {
28778 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
28779 "%s: Invalid parameters", __func__);
28780 WDI_ASSERT(0);
28781 return WDI_STATUS_E_FAILURE;
28782 }
28783 pwdiRateUpdateInd = (WDI_RateUpdateIndParams *)pEventData->pEventData;
28784 /*-----------------------------------------------------------------------
28785 Get message buffer
28786 -----------------------------------------------------------------------*/
28787
28788 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
28789 WDI_RATE_UPDATE_IND,
28790 sizeof(tHalRateUpdateParams),
28791 &pSendBuffer, &usDataOffset, &usSendSize))||
28792 ( usSendSize < (usDataOffset +
28793 sizeof(tHalRateUpdateParams) )))
28794 {
28795 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
28796 "Unable to get send buffer in Rate Update Indication %p ",
28797 pEventData);
28798 WDI_ASSERT(0);
28799 return WDI_STATUS_E_FAILURE;
28800 }
28801
28802 pRateUpdateInd = (tHalRateUpdateInd *)pSendBuffer;
28803
28804 /* Copy the bssid */
28805 wpalMemoryCopy(pRateUpdateInd->halRateUpdateParams.bssid,
28806 pwdiRateUpdateInd->bssid, WDI_MAC_ADDR_LEN);
28807
28808 /* Copy the tx flags */
28809 pRateUpdateInd->halRateUpdateParams.ucastDataRateTxFlag =
28810 pwdiRateUpdateInd->ucastDataRateTxFlag;
28811 pRateUpdateInd->halRateUpdateParams.reliableMcastDataRateTxFlag =
28812 pwdiRateUpdateInd->reliableMcastDataRateTxFlag;
28813 pRateUpdateInd->halRateUpdateParams.mcastDataRate24GHzTxFlag =
28814 pwdiRateUpdateInd->mcastDataRate24GHzTxFlag;
28815 pRateUpdateInd->halRateUpdateParams.mcastDataRate5GHzTxFlag =
28816 pwdiRateUpdateInd->mcastDataRate5GHzTxFlag;
28817
28818 /* Copy the tx rates */
28819 pRateUpdateInd->halRateUpdateParams.ucastDataRate =
28820 pwdiRateUpdateInd->ucastDataRate;
28821 pRateUpdateInd->halRateUpdateParams.reliableMcastDataRate =
28822 pwdiRateUpdateInd->reliableMcastDataRate;
28823 pRateUpdateInd->halRateUpdateParams.mcastDataRate24GHz =
28824 pwdiRateUpdateInd->mcastDataRate24GHz;
28825 pRateUpdateInd->halRateUpdateParams.mcastDataRate5GHz =
28826 pwdiRateUpdateInd->mcastDataRate5GHz;
28827
28828 /*-------------------------------------------------------------------------
28829 Send Rate Update Indication to HAL
28830 -------------------------------------------------------------------------*/
28831 pWDICtx->wdiReqStatusCB = pwdiRateUpdateInd->wdiReqStatusCB;
28832 pWDICtx->pReqStatusUserData = pwdiRateUpdateInd->pUserData;
28833
28834 wdiStatus = WDI_SendIndication(pWDICtx, pSendBuffer, usSendSize);
28835
28836 return (wdiStatus != WDI_STATUS_SUCCESS) ?
28837 wdiStatus : WDI_STATUS_SUCCESS_SYNC;
28838
28839} /* WDI_ProcessRateUpdateInd */
28840
28841#ifdef FEATURE_WLAN_BATCH_SCAN
Rajeev79dbe4c2013-10-05 11:03:42 +053028842/**
28843 @brief Process stop batch indication from WDA
28844
28845 @param pWDICtx: pointer to the WLAN DAL context
28846 pEventData: pointer to the event information structure
28847
28848 @see
28849 @return Result of the function call
28850*/
28851WDI_Status
28852WDI_ProcessStopBatchScanInd
28853(
28854 WDI_ControlBlockType* pWDICtx,
28855 WDI_EventInfoType* pEventData
28856)
28857{
28858 wpt_uint8* pSendBuffer = NULL;
28859 wpt_uint16 usDataOffset = 0;
28860 wpt_uint16 usSendSize = 0;
28861 WDI_Status wdiStatus;
28862 tHalBatchScanStopIndParam *pHalInd = NULL;
28863 WDI_StopBatchScanIndType *pWdiInd = NULL;
28864
28865
28866 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28867
28868 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
28869 "%s", __func__);
28870
28871 /*-------------------------------------------------------------------------
28872 Sanity check
28873 -------------------------------------------------------------------------*/
28874
28875 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
28876 {
28877 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
28878 "%s: Invalid parameters", __func__);
28879 WDI_ASSERT(0);
28880 return WDI_STATUS_E_FAILURE;
28881 }
28882 pWdiInd = (WDI_StopBatchScanIndType *)pEventData->pEventData;
28883 /*-----------------------------------------------------------------------
28884 Get message buffer
28885 -----------------------------------------------------------------------*/
28886
28887 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
28888 WDI_STOP_BATCH_SCAN_IND,
28889 sizeof(tHalBatchScanStopIndParam),
28890 &pSendBuffer, &usDataOffset, &usSendSize))||
28891 ( usSendSize < (usDataOffset + sizeof(tHalBatchScanStopIndParam))))
28892 {
28893 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
28894 "Unable to get send buffer in stop batch scan ind %p ",
28895 pEventData);
28896 WDI_ASSERT(0);
28897 return WDI_STATUS_E_FAILURE;
28898 }
28899
28900 pHalInd = (tHalBatchScanStopIndParam *)(pSendBuffer + usDataOffset);
28901 pHalInd->param = pWdiInd->param;
28902
28903 pWDICtx->pReqStatusUserData = NULL;
28904 pWDICtx->pfncRspCB = NULL;
28905 /*-------------------------------------------------------------------------
28906 Send Stop batch scan indication to HAL
28907 -------------------------------------------------------------------------*/
28908 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
28909 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus:WDI_STATUS_SUCCESS_SYNC;
28910}
28911
28912/**
28913 @brief This API is called to trigger batch scan results from FW
28914
28915 @param pWDICtx: pointer to the WLAN DAL context
28916 pEventData: pointer to the event information structure
28917
28918 @see
28919 @return Result of the function call
28920*/
28921WDI_Status
28922WDI_ProcessTriggerBatchScanResultInd
28923(
28924 WDI_ControlBlockType* pWDICtx,
28925 WDI_EventInfoType* pEventData
28926)
28927{
28928 WDI_Status wdiStatus;
28929 wpt_uint8* pSendBuffer = NULL;
28930 wpt_uint16 usDataOffset = 0;
28931 wpt_uint16 usSendSize = 0;
28932 tHalBatchScanTriggerResultParam *pHalInd = NULL;
28933 WDI_TriggerBatchScanResultIndType *pWdiInd = NULL;
28934
28935
28936 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28937
28938 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
28939 "%s", __func__);
28940
28941 /*-------------------------------------------------------------------------
28942 Sanity check
28943 -------------------------------------------------------------------------*/
28944
28945 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
28946 {
28947 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
28948 "%s: Invalid parameters", __func__);
28949 WDI_ASSERT(0);
28950 return WDI_STATUS_E_FAILURE;
28951 }
28952 pWdiInd = (WDI_TriggerBatchScanResultIndType *)pEventData->pEventData;
28953 /*-----------------------------------------------------------------------
28954 Get message buffer
28955 -----------------------------------------------------------------------*/
28956
28957 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
28958 WDI_TRIGGER_BATCH_SCAN_RESULT_IND,
28959 sizeof(tHalBatchScanTriggerResultParam),
28960 &pSendBuffer, &usDataOffset, &usSendSize))||
28961 ( usSendSize < (usDataOffset + sizeof(tHalBatchScanTriggerResultParam))))
28962 {
28963 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
28964 "Unable to get send buffer in stop batch scan ind %p ",
28965 pEventData);
28966 WDI_ASSERT(0);
28967 return WDI_STATUS_E_FAILURE;
28968 }
28969
28970 pHalInd = (tHalBatchScanTriggerResultParam *)(pSendBuffer + usDataOffset);
28971 pHalInd->param = pWdiInd->param;
28972
28973 pWDICtx->pReqStatusUserData = NULL;
28974 pWDICtx->pfncRspCB = NULL;
28975 /*-------------------------------------------------------------------------
28976 Send trigger batch scan result indication to HAL
28977 -------------------------------------------------------------------------*/
28978 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
28979 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus:WDI_STATUS_SUCCESS_SYNC;
28980}
28981
28982
28983/**
28984 @brief Process set batch scan response from FW
28985
28986 @param pWDICtx: pointer to the WLAN DAL context
28987 pEventData: pointer to the event information structure
28988
28989 @see
28990 @return Result of the function call
28991*/
28992WDI_Status
28993WDI_ProcessSetBatchScanRsp
28994(
28995 WDI_ControlBlockType* pWDICtx,
28996 WDI_EventInfoType* pEventData
28997)
28998{
28999 WDI_SetBatchScanCb wdiSetBatchScanCb;
29000 WDI_SetBatchScanRspType *pSetBatchScanRsp;
29001
29002 tHalBatchScanSetRspParam *pHalSetBatchScanRsp;
29003 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
29004
29005 /*sanity check*/
29006 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
29007 ( NULL == pEventData->pEventData))
29008 {
29009 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
29010 "%s: Invalid parameters", __func__);
29011 WDI_ASSERT(0);
29012 return WDI_STATUS_E_FAILURE;
29013 }
29014
29015 wdiSetBatchScanCb = (WDI_SetBatchScanCb)pWDICtx->pfncRspCB;
29016 if ( NULL == wdiSetBatchScanCb)
29017 {
29018 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
29019 "%s: call back function is NULL", __func__);
29020 WDI_ASSERT(0);
29021 return WDI_STATUS_E_FAILURE;
29022 }
29023
29024 pSetBatchScanRsp = wpalMemoryAllocate(sizeof(WDI_SetBatchScanRspType));
29025
29026 if (NULL == pSetBatchScanRsp)
29027 {
29028 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080029029 "Failed to allocate memory in set batch scan response %p %p %p ",
Rajeev79dbe4c2013-10-05 11:03:42 +053029030 pWDICtx, pEventData, pEventData->pEventData);
29031 WDI_ASSERT(0);
29032 return WDI_STATUS_E_FAILURE;
29033 }
29034
29035 /*extract response and send it to UMAC*/
29036 pHalSetBatchScanRsp = (tHalBatchScanSetRspParam *)pEventData->pEventData;
29037
29038 pSetBatchScanRsp->nScansToBatch = pHalSetBatchScanRsp->supportedMscan;
29039
29040 /*Notify UMAC*/
29041 wdiSetBatchScanCb(pSetBatchScanRsp, pWDICtx->pRspCBUserData);
29042
29043 wpalMemoryFree(pSetBatchScanRsp);
29044
29045 return WDI_STATUS_SUCCESS;
29046}/*WDI_ProcessSetBatchScanRsp*/
29047
29048/**
29049 @brief Process batch scan result indication from FW
29050
29051 @param pWDICtx: pointer to the WLAN DAL context
29052 pEventData: pointer to the event information structure
29053
29054 @see
29055 @return Result of the function call
29056*/
29057WDI_Status
29058WDI_ProcessBatchScanResultInd
29059(
29060 WDI_ControlBlockType* pWDICtx,
29061 WDI_EventInfoType* pEventData
29062)
29063{
29064 void *pBatchScanResultInd;
29065 WDI_LowLevelIndType wdiInd;
29066 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
29067
29068 /*sanity check*/
29069 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
29070 ( NULL == pEventData->pEventData))
29071 {
29072 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
29073 "%s: Invalid parameters", __func__);
29074 WDI_ASSERT(0);
29075 return WDI_STATUS_E_FAILURE;
29076 }
29077
29078 /*extract response and send it to UMAC*/
29079 pBatchScanResultInd = (void *)pEventData->pEventData;
29080
29081 /*Fill in the indication parameters*/
29082 wdiInd.wdiIndicationType = WDI_BATCH_SCAN_RESULT_IND;
29083
29084 wdiInd.wdiIndicationData.pBatchScanResult = pBatchScanResultInd;
29085
29086 /*Notify UMAC*/
29087 if (pWDICtx->wdiLowLevelIndCB)
29088 {
29089 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
29090 }
29091 else
29092 {
29093 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
29094 "%s: WDILowLevelIndCb is null", __func__);
29095 WDI_ASSERT(0);
29096 return WDI_STATUS_E_FAILURE;
29097 }
29098
29099 return WDI_STATUS_SUCCESS;
29100} /*End of WDI_ProcessBatchScanResultInd*/
29101
29102/**
29103 @brief WDI_ProcessSetBatchScanReq -
29104 Set batch scan request to FW
29105
29106 @param pWDICtx : wdi context
29107 pEventData : indication data
29108
29109 @see
29110 @return none
29111*/
29112WDI_Status WDI_ProcessSetBatchScanReq
29113(
29114 WDI_ControlBlockType* pWDICtx,
29115 WDI_EventInfoType* pEventData
29116)
29117{
29118 WDI_SetBatchScanReqType *pWdiReq;
29119 WDI_Status wdiStatus;
29120 wpt_uint8* pSendBuffer = NULL;
29121 wpt_uint16 usDataOffset = 0;
29122 wpt_uint16 usSendSize = 0;
29123 tHalBatchScanSetParams *pHalReq;
29124 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
29125
29126 /*sanity check*/
29127 if ((NULL == pEventData) || (NULL == pEventData->pEventData))
29128 {
29129 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
29130 "%s: Invalid parameters in set batch scan request", __func__);
29131 WDI_ASSERT(0);
29132 return WDI_STATUS_E_FAILURE;
29133 }
29134
29135
29136 pWdiReq = (WDI_SetBatchScanReqType *)pEventData->pEventData;
29137
29138
29139 /*get message buffer*/
29140 if ((WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(pWDICtx,
29141 WDI_SET_BATCH_SCAN_REQ,
29142 sizeof(tHalBatchScanSetParams),
29143 &pSendBuffer, &usDataOffset, &usSendSize))||
29144 (usSendSize < (usDataOffset + sizeof(tHalBatchScanSetParams))))
29145 {
29146 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
29147 "Unable to get send buffer for SET_BATCH_SCAN_REQ ");
29148 WDI_ASSERT(0);
29149 return WDI_STATUS_E_FAILURE;
29150 }
29151
29152 pHalReq = (tHalBatchScanSetParams *)(pSendBuffer + usDataOffset);
29153
29154 pHalReq->rtt = pWdiReq->rtt;
29155 pHalReq->rfBand = pWdiReq->rfBand;
29156 pHalReq->bestNetworks = pWdiReq->bestNetwork;
29157 pHalReq->scanInterval = pWdiReq->scanFrequency;
29158 pHalReq->numScan2Batch = pWdiReq->numberOfScansToBatch;
29159
29160 /*send set batch scan request to fw*/
29161 pWDICtx->pfncRspCB = pEventData->pCBfnc;
29162 pWDICtx->pReqStatusUserData = pEventData->pUserData;
29163
29164 wdiStatus = WDI_SendMsg(pWDICtx, pSendBuffer,
29165 usSendSize, pWDICtx->pfncRspCB,
29166 pWDICtx->pReqStatusUserData,
29167 WDI_SET_BATCH_SCAN_RESP);
29168
29169 return wdiStatus;
29170}
29171
29172/**
29173 @brief WDI_SetBatchScanReq
29174 This API is called to set batch scan request in FW
29175
29176 @param pBatchScanReqParam : pointer to set batch scan re param
29177 usrData : Client context
29178 setBatchScanRspCb : set batch scan resp callback
29179 @see
29180 @return SUCCESS or FAIL
29181*/
29182WDI_Status WDI_SetBatchScanReq
29183(
29184 void *pBatchScanReqParam,
29185 void *usrData,
29186 WDI_SetBatchScanCb setBatchScanRspCb
29187)
29188{
29189 WDI_EventInfoType wdiEventData;
29190
29191 /*sanity check*/
29192 if (eWLAN_PAL_FALSE == gWDIInitialized)
29193 {
29194 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
29195 "WDI API call before module is initialized - Fail request");
29196
29197 return WDI_STATUS_E_NOT_ALLOWED;
29198 }
29199
29200 /* fill in event data and post to the main FSM */
29201 wdiEventData.wdiRequest = WDI_SET_BATCH_SCAN_REQ;
29202 wdiEventData.pEventData = pBatchScanReqParam;
29203 wdiEventData.uEventDataSize = sizeof(WDI_SetBatchScanReqType);
29204 wdiEventData.pCBfnc = setBatchScanRspCb;
29205 wdiEventData.pUserData = usrData;
29206
29207 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
29208}
29209
29210/**
29211 @brief WDI_StopbatchScanInd: Send stop batch scan indication to FW
29212
29213 @param None
29214
29215 @see
29216
29217 @return Status of the request
29218*/
29219WDI_Status
29220WDI_StopBatchScanInd(WDI_StopBatchScanIndType *pWdiReq)
29221{
29222 WDI_EventInfoType wdiEventData;
29223
29224 /*-------------------------------------------------------------------------
29225 Sanity Check
29226 ------------------------------------------------------------------------*/
29227 if (eWLAN_PAL_FALSE == gWDIInitialized)
29228 {
29229 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
29230 "WDI API call before module is initialized - Fail request!");
29231
29232 return WDI_STATUS_E_NOT_ALLOWED;
29233 }
29234
29235 /*-------------------------------------------------------------------------
29236 Fill in Event data and post to the Main FSM
29237 ------------------------------------------------------------------------*/
29238 wdiEventData.wdiRequest = WDI_STOP_BATCH_SCAN_IND;
29239 wdiEventData.pEventData = pWdiReq;
29240 wdiEventData.uEventDataSize = sizeof(WDI_StopBatchScanIndType);
29241 wdiEventData.pCBfnc = NULL;
29242 wdiEventData.pUserData = NULL;
29243
29244 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
29245}
29246
29247/**
29248 @brief WDI_TriggerBatchScanResultInd
29249 This API is called to pull batch scan result from FW
29250
29251 @param pWdiReq : pointer to get batch scan ind param
29252 @see
29253 @return SUCCESS or FAIL
29254*/
29255WDI_Status WDI_TriggerBatchScanResultInd
29256(
29257 WDI_TriggerBatchScanResultIndType *pWdiReq
29258)
29259{
29260 WDI_EventInfoType wdiEventData;
29261 /*-------------------------------------------------------------------------
29262 Sanity Check
29263 ------------------------------------------------------------------------*/
29264 if (eWLAN_PAL_FALSE == gWDIInitialized)
29265 {
29266 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
29267 "WDI API call before module is initialized - Fail request!");
29268
29269 return WDI_STATUS_E_NOT_ALLOWED;
29270 }
29271
29272 /*-------------------------------------------------------------------------
29273 Fill in Event data and post to the Main FSM
29274 ------------------------------------------------------------------------*/
29275 wdiEventData.wdiRequest = WDI_TRIGGER_BATCH_SCAN_RESULT_IND;
29276 wdiEventData.pEventData = pWdiReq;
29277 wdiEventData.uEventDataSize = sizeof(WDI_TriggerBatchScanResultIndType);
29278 wdiEventData.pCBfnc = NULL;
29279 wdiEventData.pUserData = NULL;
29280
29281 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
29282}
Rajeev79dbe4c2013-10-05 11:03:42 +053029283#endif /*FEATURE_WLAN_BATCH_SCAN*/
Leo Chang0b0e45a2013-12-15 15:18:55 -080029284
29285#ifdef FEATURE_WLAN_CH_AVOID
29286/**
29287 @brief v -WDI_ProcessChAvoidInd
29288
29289
29290 @param pWDICtx : wdi context
29291 pEventData : indication data
29292 @see
29293 @return Result of the function call
29294*/
29295WDI_Status
29296WDI_ProcessChAvoidInd
29297(
29298 WDI_ControlBlockType* pWDICtx,
29299 WDI_EventInfoType* pEventData
29300)
29301{
29302 WDI_LowLevelIndType wdiInd;
29303 tHalAvoidFreqRangeIndParams chAvoidIndicationParam;
29304 wpt_uint16 rangeLoop;
29305 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
29306
29307 /*-------------------------------------------------------------------------
29308 Sanity check
29309 -------------------------------------------------------------------------*/
29310 if ((NULL == pWDICtx) || (NULL == pEventData) ||
29311 (NULL == pEventData->pEventData))
29312 {
29313 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
29314 "%s: Invalid parameters", __func__);
29315 WDI_ASSERT(0);
29316 return WDI_STATUS_E_FAILURE;
29317 }
29318
29319 /*-------------------------------------------------------------------------
29320 Extract indication and send it to UMAC
29321 -------------------------------------------------------------------------*/
29322 wpalMemoryCopy(&chAvoidIndicationParam,
29323 pEventData->pEventData,
29324 sizeof(tHalAvoidFreqRangeIndParams));
29325
29326 wdiInd.wdiIndicationType = WDI_CH_AVOID_IND;
29327 wdiInd.wdiIndicationData.wdiChAvoidInd.avoidRangeCount =
29328 chAvoidIndicationParam.avoidCnt;
29329 wpalMemoryCopy((void *)wdiInd.wdiIndicationData.wdiChAvoidInd.avoidFreqRange,
29330 (void *)chAvoidIndicationParam.avoidRange,
29331 wdiInd.wdiIndicationData.wdiChAvoidInd.avoidRangeCount *
29332 sizeof(WDI_ChAvoidFreqType));
29333 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
29334 "%s: band count %d", __func__,
29335 wdiInd.wdiIndicationData.wdiChAvoidInd.avoidRangeCount);
29336 for (rangeLoop = 0; rangeLoop < chAvoidIndicationParam.avoidCnt; rangeLoop++)
29337 {
29338 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
29339 "%s: srart freq %d, end freq %d", __func__,
29340 wdiInd.wdiIndicationData.wdiChAvoidInd.avoidFreqRange[rangeLoop].startFreq,
29341 wdiInd.wdiIndicationData.wdiChAvoidInd.avoidFreqRange[rangeLoop].endFreq);
29342 }
29343
29344 /*Notify UMAC*/
29345 if (pWDICtx->wdiLowLevelIndCB)
29346 {
29347 pWDICtx->wdiLowLevelIndCB(&wdiInd, pWDICtx->pIndUserData);
29348 }
29349
29350 return WDI_STATUS_SUCCESS;
29351}
29352#endif /* FEATURE_WLAN_CH_AVOID */
29353
Sandeep Puligilla8b8b74b2014-02-10 16:39:05 +053029354/**
29355 @brief Process OBSS Start scan result indication
29356
29357 @param pWDICtx: pointer to the WLAN DAL context
29358 pEventData: pointer to the event information structure
29359
29360 @see
29361 @return Result of the function call
29362*/
29363WDI_Status
29364WDI_ProcessHT40OBSSScanInd
29365(
29366 WDI_ControlBlockType* pWDICtx,
29367 WDI_EventInfoType* pEventData
29368)
29369{
29370 wpt_uint8* pSendBuffer = NULL;
29371 wpt_uint16 usDataOffset = 0;
29372 wpt_uint16 usSendSize = 0;
29373 wpt_uint16 usLen = 0;
29374 WDI_HT40ObssScanIndType *pwdiHT40OBSSScanInd = NULL;
29375 WDI_HT40ObssScanParamsType *pwdiHT40OBSSScanParams = NULL;
29376 tHT40ObssScanIndType* pHT40ObssScanInd = NULL;
29377 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
29378
29379 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
29380
29381 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
29382 "%s", __func__);
29383
29384 /*-------------------------------------------------------------------------
29385 Sanity check
29386 -------------------------------------------------------------------------*/
29387 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
29388 {
29389 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
29390 "%s: Invalid parameters", __func__);
29391 WDI_ASSERT(0);
29392 return WDI_STATUS_E_FAILURE;
29393 }
29394 pwdiHT40OBSSScanParams = (WDI_HT40ObssScanParamsType*)pEventData->pEventData;
29395
29396 pwdiHT40OBSSScanInd = &pwdiHT40OBSSScanParams->wdiHT40ObssScanParam;
29397 /*-----------------------------------------------------------------------
29398 Get message buffer
29399 -----------------------------------------------------------------------*/
29400
29401 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
29402 WDI_START_HT40_OBSS_SCAN_IND,
29403 sizeof(tHT40ObssScanIndType),
29404 &pSendBuffer, &usDataOffset, &usSendSize))||
29405 ( usSendSize < (usDataOffset + usLen )))
29406 {
29407 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
29408 "Unable to get send buffer in HT40 OBSS Start req %p ",
29409 pEventData);
29410 WDI_ASSERT(0);
29411 return WDI_STATUS_E_FAILURE;
29412 }
29413 pHT40ObssScanInd = (tHT40ObssScanIndType*)(pSendBuffer+usDataOffset);
29414 pHT40ObssScanInd->cmdType = pwdiHT40OBSSScanInd->cmdType;
29415 pHT40ObssScanInd->scanType = pwdiHT40OBSSScanInd->scanType;
29416 pHT40ObssScanInd->OBSSScanPassiveDwellTime =
29417 pwdiHT40OBSSScanInd->OBSSScanPassiveDwellTime;
29418 pHT40ObssScanInd->OBSSScanActiveDwellTime =
29419 pwdiHT40OBSSScanInd->OBSSScanActiveDwellTime;
29420 pHT40ObssScanInd->BSSChannelWidthTriggerScanInterval =
29421 pwdiHT40OBSSScanInd->BSSChannelWidthTriggerScanInterval;
29422 pHT40ObssScanInd->OBSSScanPassiveTotalPerChannel =
29423 pwdiHT40OBSSScanInd->OBSSScanPassiveTotalPerChannel;
29424 pHT40ObssScanInd->OBSSScanActiveTotalPerChannel =
29425 pwdiHT40OBSSScanInd->OBSSScanActiveTotalPerChannel;
29426 pHT40ObssScanInd->BSSWidthChannelTransitionDelayFactor =
29427 pwdiHT40OBSSScanInd->BSSWidthChannelTransitionDelayFactor;
29428 pHT40ObssScanInd->OBSSScanActivityThreshold =
29429 pwdiHT40OBSSScanInd->OBSSScanActivityThreshold;
29430 pHT40ObssScanInd->selfStaIdx =
29431 pwdiHT40OBSSScanInd->selfStaIdx;
29432 pHT40ObssScanInd->bssIdx =
29433 pwdiHT40OBSSScanInd->bssIdx;
29434 pHT40ObssScanInd->fortyMHZIntolerent =
29435 pwdiHT40OBSSScanInd->fortyMHZIntolerent;
29436 pHT40ObssScanInd->channelCount =
29437 pwdiHT40OBSSScanInd->channelCount;
29438
29439 wpalMemoryCopy(pHT40ObssScanInd->channels, pwdiHT40OBSSScanInd->channels,
29440 WDI_ROAM_SCAN_MAX_CHANNELS);
29441 pHT40ObssScanInd->ieFieldLen =
29442 pwdiHT40OBSSScanInd->ieFieldLen;
29443
29444 wpalMemoryCopy(pHT40ObssScanInd->ieField, pwdiHT40OBSSScanInd->ieField,
29445 WDI_ROAM_SCAN_MAX_PROBE_SIZE);
29446 pWDICtx->pReqStatusUserData = NULL;
29447 pWDICtx->pfncRspCB = NULL;
29448
29449 pWDICtx->wdiReqStatusCB = pwdiHT40OBSSScanParams->wdiReqStatusCB;
29450 pWDICtx->pReqStatusUserData = pwdiHT40OBSSScanParams->pUserData;
29451
29452 /*-------------------------------------------------------------------------
29453 Send OBSS Start Indication to HAL
29454 -------------------------------------------------------------------------*/
29455 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
29456 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus:WDI_STATUS_SUCCESS_SYNC;
29457
29458} /*End of WDI_ProcessHT40OBSSStartScanInd*/
29459
29460
29461/**
29462 @brief wdi_HT40OBSSScanInd
29463 This API is called to start OBSS scan
29464
29465 @param pWdiReq : pointer to get ind param
29466 @see
29467 @return SUCCESS or FAIL
29468*/
29469WDI_Status WDI_HT40OBSSScanInd
29470(
29471 WDI_HT40ObssScanParamsType *pWdiReq
29472)
29473{
29474 WDI_EventInfoType wdiEventData;
29475
29476 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
29477 "%s", __func__);
29478 /*-------------------------------------------------------------------------
29479 Sanity Check
29480 ------------------------------------------------------------------------*/
29481 if (eWLAN_PAL_FALSE == gWDIInitialized)
29482 {
29483 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
29484 "WDI API call before module is initialized - Fail request!");
29485
29486 return WDI_STATUS_E_NOT_ALLOWED;
29487 }
29488
29489 /*-------------------------------------------------------------------------
29490 Fill in Event data and post to the Main FSM
29491 ------------------------------------------------------------------------*/
29492 wdiEventData.wdiRequest = WDI_START_HT40_OBSS_SCAN_IND;
29493 wdiEventData.pEventData = pWdiReq;
29494 wdiEventData.uEventDataSize = sizeof(WDI_HT40ObssScanParamsType);
29495 wdiEventData.pCBfnc = NULL;
29496 wdiEventData.pUserData = NULL;
29497
29498
29499 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
29500}
29501
29502/**
29503 @brief Process OBSS Stop scan result
29504
29505 @param pWDICtx: pointer to the WLAN DAL context
29506 pEventData: pointer to the event information structure
29507
29508 @see
29509 @return Result of the function call
29510*/
29511WDI_Status
29512WDI_ProcessHT40OBSSStopScanInd
29513(
29514 WDI_ControlBlockType* pWDICtx,
29515 WDI_EventInfoType* pEventData
29516)
29517{
29518 wpt_uint8* pSendBuffer = NULL;
29519 wpt_uint16 usDataOffset = 0;
29520 wpt_uint16 usSendSize = 0;
29521 wpt_uint16 usLen = 0;
29522 wpt_uint8 *wdiBssIdx = 0;
29523 tANI_U8 *bssIdx = 0;
29524 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
29525
29526 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
29527
29528 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
29529 "%s", __func__);
29530
29531 /*-------------------------------------------------------------------------
29532 Sanity check
29533 -------------------------------------------------------------------------*/
29534 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
29535 {
29536 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
29537 "%s: Invalid parameters", __func__);
29538 WDI_ASSERT(0);
29539 return WDI_STATUS_E_FAILURE;
29540 }
29541 bssIdx = (wpt_uint8*)pEventData->pEventData;
29542 /*-----------------------------------------------------------------------
29543 Get message buffer
29544 -----------------------------------------------------------------------*/
29545
29546 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
29547 WDI_STOP_HT40_OBSS_SCAN_IND,
29548 sizeof(tANI_U8),
29549 &pSendBuffer, &usDataOffset, &usSendSize))||
29550 ( usSendSize < (usDataOffset + usLen )))
29551 {
29552 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
29553 "Unable to get send buffer in HT40 OBSS Start req %p ",
29554 pEventData);
29555 WDI_ASSERT(0);
29556 return WDI_STATUS_E_FAILURE;
29557 }
29558
29559 bssIdx = (tANI_U8*)pSendBuffer+usDataOffset;
29560 bssIdx = wdiBssIdx;
29561
29562 pWDICtx->pReqStatusUserData = NULL;
29563 pWDICtx->pfncRspCB = NULL;
29564
29565 /*-------------------------------------------------------------------------
29566 Send DHCP Start Indication to HAL
29567 -------------------------------------------------------------------------*/
29568 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
29569 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus:WDI_STATUS_SUCCESS_SYNC;
29570} /*End of WDI_ProcessHT40OBSSStopScanInd*/
29571
29572/**
29573 @brief WDI_HT40OBSSStopScanInd
29574 This API is called to start OBSS scan
29575 @param pWdiReq : pointer to get ind param
29576 @see
29577 @return SUCCESS or FAIL
29578*/
29579WDI_Status WDI_HT40OBSSStopScanInd
29580(
29581 wpt_uint8 bssIdx
29582)
29583{
29584 WDI_EventInfoType wdiEventData;
29585
29586 /*-------------------------------------------------------------------------
29587 Sanity Check
29588 ------------------------------------------------------------------------*/
29589 if (eWLAN_PAL_FALSE == gWDIInitialized)
29590 {
29591 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
29592 "WDI API call before module is initialized - Fail request!");
29593
29594 return WDI_STATUS_E_NOT_ALLOWED;
29595 }
29596
29597 /*-------------------------------------------------------------------------
29598 Fill in Event data and post to the Main FSM
29599 ------------------------------------------------------------------------*/
29600 wdiEventData.wdiRequest = WDI_STOP_HT40_OBSS_SCAN_IND;
29601 wdiEventData.pEventData = &bssIdx;
29602 wdiEventData.uEventDataSize = sizeof(wpt_uint8);
29603 wdiEventData.pCBfnc = NULL;
29604 wdiEventData.pUserData = NULL;
29605
29606 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
29607}
29608