blob: efc56f906526dc32e0d1764d71d08459c09e147e [file] [log] [blame]
Jeff Johnson295189b2012-06-20 16:38:30 -07001/*
Kiet Lam1ed83fc2014-02-19 01:15:45 -08002 * Copyright (c) 2012-2014 The Linux Foundation. All rights reserved.
3 *
4 * Previously licensed under the ISC license by Qualcomm Atheros, Inc.
5 *
6 *
7 * Permission to use, copy, modify, and/or distribute this software for
8 * any purpose with or without fee is hereby granted, provided that the
9 * above copyright notice and this permission notice appear in all
10 * copies.
11 *
12 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL
13 * WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED
14 * WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE
15 * AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL
16 * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
17 * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
18 * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
19 * PERFORMANCE OF THIS SOFTWARE.
20 */
21
22/*
23 * Copyright (c) 2012-2014 Qualcomm Atheros, Inc.
24 * All Rights Reserved.
25 * Qualcomm Atheros Confidential and Proprietary.
26 *
27 */
28
Jeff Johnson295189b2012-06-20 16:38:30 -070029
30/*===========================================================================
31
32 W L A N _ Q C T _ W D I. C
33
34 OVERVIEW:
35
Jeff Johnsone7245742012-09-05 17:12:55 -070036 This software unit holds the implementation of the WLAN Device Abstraction
Jeff Johnson295189b2012-06-20 16:38:30 -070037 Layer Interface.
38
Jeff Johnsone7245742012-09-05 17:12:55 -070039 The functions externalized by this module are to be called by any upper
Jeff Johnson295189b2012-06-20 16:38:30 -070040 MAC implementation that wishes to use the WLAN Device.
41
42 DEPENDENCIES:
43
44 Are listed for each API below.
45
46
Kiet Lamaa8e15a2014-02-11 23:30:06 -080047 Copyright (c) 2008 QUALCOMM Incorporated.
48 All Rights Reserved.
49 Qualcomm Confidential and Proprietary
Jeff Johnson295189b2012-06-20 16:38:30 -070050===========================================================================*/
51
52/*===========================================================================
53
54 EDIT HISTORY FOR FILE
55
56
57 This section contains comments describing changes made to the module.
58 Notice that changes are listed in reverse chronological order.
59
60
61 $Header$$DateTime$$Author$
62
63
64 when who what, where, why
65---------- --- --------------------------------------------------------
6610/05/11 hap Adding support for Keep Alive
672010-08-09 lti Created module
68
69===========================================================================*/
70
71/*----------------------------------------------------------------------------
72 * Include Files
73 * -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070074#include "wlan_qct_wdi.h"
75#include "wlan_qct_wdi_i.h"
76#include "wlan_qct_wdi_sta.h"
77#include "wlan_qct_wdi_dp.h"
Jeff Johnson295189b2012-06-20 16:38:30 -070078
Jeff Johnsone7245742012-09-05 17:12:55 -070079#include "wlan_qct_wdi_cts.h"
Jeff Johnson295189b2012-06-20 16:38:30 -070080
81#include "wlan_qct_pal_api.h"
82#include "wlan_qct_pal_type.h"
83#include "wlan_qct_pal_status.h"
84#include "wlan_qct_pal_sync.h"
85#include "wlan_qct_pal_msg.h"
86#include "wlan_qct_pal_trace.h"
87#include "wlan_qct_pal_packet.h"
88
Jeff Johnsone7245742012-09-05 17:12:55 -070089#include "wlan_qct_wdi_dts.h"
Jeff Johnson295189b2012-06-20 16:38:30 -070090
91#include "wlan_hal_msg.h"
92
Jeff Johnson295189b2012-06-20 16:38:30 -070093#include "pttMsgApi.h"
Srikant Kuppa64eae792013-08-29 15:27:56 -070094#include "vos_trace.h"
Jeff Johnson295189b2012-06-20 16:38:30 -070095
96/*===========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070097 WLAN DAL Control Path Internal Data Definitions and Declarations
Jeff Johnson295189b2012-06-20 16:38:30 -070098 ===========================================================================*/
99#define WDI_WCTS_ACTION_TIMEOUT 2000 /* in msec a very high upper limit */
100
Jeff Johnsone7245742012-09-05 17:12:55 -0700101#define MAC_ADDR_ARRAY(a) (a)[0], (a)[1], (a)[2], (a)[3], (a)[4], (a)[5]
102#define MAC_ADDRESS_STR "%02x:%02x:%02x:%02x:%02x:%02x"
103
Yue Mad8cac142013-03-28 11:33:46 -0700104#define FEATURE_NOT_SUPPORTED 127
Jeff Johnson295189b2012-06-20 16:38:30 -0700105
106#ifdef FEATURE_WLAN_SCAN_PNO
107#define WDI_PNO_VERSION_MASK 0x8000
108#endif
109
110/* host capability bitmap global */
Madan Mohan Koyyalamudidfd6aa82012-10-18 20:18:43 -0700111static tWlanFeatCaps *gpHostWlanFeatCaps;
Jeff Johnson295189b2012-06-20 16:38:30 -0700112/* FW capability bitmap global */
Madan Mohan Koyyalamudidfd6aa82012-10-18 20:18:43 -0700113static tWlanFeatCaps *gpFwWlanFeatCaps;
Jeff Johnson295189b2012-06-20 16:38:30 -0700114/* array of features supported. Need to add a new feature
115 * and other two places - wlan_hal_msg.h and halMsg.c (FW file)
116 */
117static placeHolderInCapBitmap supportEnabledFeatures[] =
Mohit Khanna698ba2a2012-12-04 15:08:18 -0800118 {MCC, P2P, DOT11AC, SLM_SESSIONIZATION, DOT11AC_OPMODE
Yathish9f22e662012-12-10 14:21:35 -0800119#ifdef WLAN_SOFTAP_VSTA_FEATURE
Ravi Joshid2ca7c42013-07-23 08:37:49 -0700120 ,SAP32STA //5
Yathish9f22e662012-12-10 14:21:35 -0800121#else
122 ,FEATURE_NOT_SUPPORTED
123#endif
Mohit Khanna698ba2a2012-12-04 15:08:18 -0800124#ifdef FEATURE_WLAN_TDLS
Ravi Joshid2ca7c42013-07-23 08:37:49 -0700125 ,TDLS //6
Yathish9f22e662012-12-10 14:21:35 -0800126#else
127 ,FEATURE_NOT_SUPPORTED
Mohit Khanna698ba2a2012-12-04 15:08:18 -0800128#endif
Ravi Joshid2ca7c42013-07-23 08:37:49 -0700129 ,P2P_GO_NOA_DECOUPLE_INIT_SCAN //7
Yathish9f22e662012-12-10 14:21:35 -0800130#ifdef WLAN_ACTIVEMODE_OFFLOAD_FEATURE
Ravi Joshid2ca7c42013-07-23 08:37:49 -0700131 ,WLANACTIVE_OFFLOAD //8
Yathish9f22e662012-12-10 14:21:35 -0800132#else
133 ,FEATURE_NOT_SUPPORTED
134#endif
Ravi Joshid2ca7c42013-07-23 08:37:49 -0700135 ,FEATURE_NOT_SUPPORTED //9
136 ,FEATURE_NOT_SUPPORTED //10
137 ,FEATURE_NOT_SUPPORTED //11
138 ,FEATURE_NOT_SUPPORTED //12
139 ,FEATURE_NOT_SUPPORTED //13
140 ,FEATURE_NOT_SUPPORTED //14
141 ,FEATURE_NOT_SUPPORTED //15
142 ,FEATURE_NOT_SUPPORTED //16
143 ,FEATURE_NOT_SUPPORTED //17
144 ,FEATURE_NOT_SUPPORTED //18
145 ,FEATURE_NOT_SUPPORTED //19
146 ,FEATURE_NOT_SUPPORTED //20
147 ,FEATURE_NOT_SUPPORTED //21
Yue Ma55855df2013-08-26 10:59:03 -0700148 ,WOW //22
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -0700149#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
Yue Ma55855df2013-08-26 10:59:03 -0700150 ,WLAN_ROAM_SCAN_OFFLOAD //23
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -0700151#else
152 ,FEATURE_NOT_SUPPORTED
153#endif
Ravi Joshid2ca7c42013-07-23 08:37:49 -0700154 ,FEATURE_NOT_SUPPORTED //24
155 ,FEATURE_NOT_SUPPORTED //25
156 ,IBSS_HEARTBEAT_OFFLOAD //26
Yue Ma55855df2013-08-26 10:59:03 -0700157 ,FEATURE_NOT_SUPPORTED //27
158 ,WLAN_PERIODIC_TX_PTRN //28
Madan Mohan Koyyalamudice419872013-09-13 19:36:52 +0530159#ifdef FEATURE_WLAN_TDLS
160 ,ADVANCE_TDLS //29
161#else
162 ,FEATURE_NOT_SUPPORTED //29
163#endif
Kanchanapally, Vidyullathaf9426e52013-12-24 17:28:54 +0530164 ,FEATURE_NOT_SUPPORTED //30
165 ,FW_IN_TX_PATH //31
Sandeep Puligilla60342762014-01-30 21:05:37 +0530166 ,EXTENDED_NSOFFLOAD_SLOT //32
167 ,CH_SWITCH_V1 //33
168 ,HT40_OBSS_SCAN //34
169 ,UPDATE_CHANNEL_LIST //35
Pradeep Reddy POTTETIedaeb5f2014-05-22 23:34:41 +0530170 ,FEATURE_NOT_SUPPORTED //36
171 ,FEATURE_NOT_SUPPORTED //37
172 ,FEATURE_NOT_SUPPORTED //38
173#ifdef FEATURE_WLAN_TDLS
174 ,TDLS_SCAN_COEXISTENCE //39
175#else
176 ,FEATURE_NOT_SUPPORTED //39
177#endif
Kalikinkar dhara1e83b772014-02-06 12:59:22 -0800178
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*/
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -0800358#ifdef FEATURE_WLAN_ESE
Jeff Johnson295189b2012-06-20 16:38:30 -0700359 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
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -0800379#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_ESE || defined(FEATURE_WLAN_LFR)
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -0800380 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*/
Manjunathappa Prakash86f78ca2014-02-10 18:09:15 -0800408
409 WDI_ProcessUpdateChannelParamsReq, /* WDI_UPDATE_CHAN_REQ */
c_hpothu92367912014-05-01 15:18:17 +0530410
411 WDI_ProcessGetBcnMissRateReq, /* WDI_GET_BCN_MISS_RATE_REQ */
Sunil Duttbd736ed2014-05-26 21:19:41 +0530412
413#ifdef WLAN_FEATURE_LINK_LAYER_STATS
414 WDI_ProcessLLStatsSetReq, /* WDI_LL_STATS_SET_REQ */
415 WDI_ProcessLLStatsGetReq, /* WDI_LL_STATS_GET_REQ */
416 WDI_ProcessLLStatsClearReq, /* WDI_LL_STATS_CLEAR_REQ */
417#else
418 NULL,
419 NULL,
420 NULL,
421#endif
schang86c22c42013-03-13 18:41:24 -0700422 /*-------------------------------------------------------------------------
423 Indications
424 -------------------------------------------------------------------------*/
Jeff Johnson295189b2012-06-20 16:38:30 -0700425 WDI_ProcessHostSuspendInd, /* WDI_HOST_SUSPEND_IND*/
Madan Mohan Koyyalamudi01cba042013-01-10 21:56:05 -0800426 WDI_ProcessTrafficStatsInd, /* WDI_TRAFFIC_STATS_IND*/
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +0530427 WDI_ProcessDHCPStartInd, /* WDI_DHCP_START_IND*/
428 WDI_ProcessDHCPStopInd, /* WDI_DHCP_STOP_IND*/
Chet Lanctot186b5732013-03-18 10:26:30 -0700429#ifdef WLAN_FEATURE_11W
430 WDI_ProcessExcludeUnencryptInd, /* WDI_EXCLUDE_UNENCRYPTED_IND */
431#else
432 NULL,
433#endif
Yue Mab9c86f42013-08-14 15:59:08 -0700434 WDI_ProcessAddPeriodicTxPtrnInd, /* WDI_ADD_PERIODIC_TX_PATTERN_IND */
435 WDI_ProcessDelPeriodicTxPtrnInd, /* WDI_DEL_PERIODIC_TX_PATTERN_IND */
Rajeev79dbe4c2013-10-05 11:03:42 +0530436#ifdef FEATURE_WLAN_BATCH_SCAN
437 WDI_ProcessStopBatchScanInd, /* WDI_STOP_BATCH_SCAN_IND */
438 WDI_ProcessTriggerBatchScanResultInd, /* WDI_TRIGGER_BATCH_SCAN_RESULT_IND */
439#else
440 NULL,
441 NULL,
442#endif /* FEATURE_WLAN_BATCH_SCAN */
Chittajit Mitraf5413a42013-10-18 14:20:08 -0700443 WDI_ProcessRateUpdateInd, /* WDI_RATE_UPDATE_IND */
Kalikinkar dhara1e83b772014-02-06 12:59:22 -0800444
Sandeep Puligilla8b8b74b2014-02-10 16:39:05 +0530445 WDI_ProcessHT40OBSSScanInd, /*WDI_START_HT40_OBSS_SCAN_IND */
Kalikinkar dhara1e83b772014-02-06 12:59:22 -0800446 WDI_ProcessHT40OBSSStopScanInd, /*WDI_STOP_HT40_OBSS_SCAN_IND */
447
448 WDI_ProcessChannelSwitchReq_V1, /* WDI_CH_SWITCH_REQ_V1*/
Sandeep Puligilla8b8b74b2014-02-10 16:39:05 +0530449
Jeff Johnson295189b2012-06-20 16:38:30 -0700450};
451
452
Jeff Johnsone7245742012-09-05 17:12:55 -0700453/*---------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -0700454 DAL Request Processing Array - the functions in this table will only be
455 called when the processing of the specific request is allowed by the
Jeff Johnsone7245742012-09-05 17:12:55 -0700456 Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -0700457 ---------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700458WDI_RspProcFuncType pfnRspProcTbl[WDI_MAX_RESP] =
Jeff Johnson295189b2012-06-20 16:38:30 -0700459{
460 /*INIT*/
461 WDI_ProcessStartRsp, /* WDI_START_RESP */
462 WDI_ProcessStopRsp, /* WDI_STOP_RESP */
463 WDI_ProcessCloseRsp, /* WDI_CLOSE_RESP */
464
465 /*SCAN*/
466 WDI_ProcessInitScanRsp, /* WDI_INIT_SCAN_RESP */
467 WDI_ProcessStartScanRsp, /* WDI_START_SCAN_RESP */
468 WDI_ProcessEndScanRsp, /* WDI_END_SCAN_RESP */
469 WDI_ProcessFinishScanRsp, /* WDI_FINISH_SCAN_RESP */
470
471 /* ASSOCIATION*/
472 WDI_ProcessJoinRsp, /* WDI_JOIN_RESP */
473 WDI_ProcessConfigBSSRsp, /* WDI_CONFIG_BSS_RESP */
474 WDI_ProcessDelBSSRsp, /* WDI_DEL_BSS_RESP */
475 WDI_ProcessPostAssocRsp, /* WDI_POST_ASSOC_RESP */
476 WDI_ProcessDelSTARsp, /* WDI_DEL_STA_RESP */
477
478 /* Security */
479 WDI_ProcessSetBssKeyRsp, /* WDI_SET_BSS_KEY_RESP */
480 WDI_ProcessRemoveBssKeyRsp, /* WDI_RMV_BSS_KEY_RESP */
481 WDI_ProcessSetStaKeyRsp, /* WDI_SET_STA_KEY_RESP */
482 WDI_ProcessRemoveStaKeyRsp, /* WDI_RMV_BSS_KEY_RESP */
483
484 /* QoS and BA APIs */
485 WDI_ProcessAddTSpecRsp, /* WDI_ADD_TS_RESP */
486 WDI_ProcessDelTSpecRsp, /* WDI_DEL_TS_RESP */
487 WDI_ProcessUpdateEDCAParamsRsp, /* WDI_UPD_EDCA_PRMS_RESP */
488 WDI_ProcessAddBASessionRsp, /* WDI_ADD_BA_SESSION_RESP */
489 WDI_ProcessDelBARsp, /* WDI_DEL_BA_RESP */
490
491 /* Miscellaneous Control APIs */
492 WDI_ProcessChannelSwitchRsp, /* WDI_CH_SWITCH_RESP */
493 WDI_ProcessConfigStaRsp, /* WDI_CONFIG_STA_RESP */
494 WDI_ProcessSetLinkStateRsp, /* WDI_SET_LINK_ST_RESP */
495 WDI_ProcessGetStatsRsp, /* WDI_GET_STATS_RESP */
496 WDI_ProcessUpdateCfgRsp, /* WDI_UPDATE_CFG_RESP */
497
498 /* BA APIs*/
499 WDI_ProcessAddBARsp, /* WDI_ADD_BA_RESP */
500 WDI_ProcessTriggerBARsp, /* WDI_TRIGGER_BA_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700501
Jeff Johnson295189b2012-06-20 16:38:30 -0700502 /* IBSS APIs*/
503 WDI_ProcessUpdateBeaconParamsRsp, /* WDI_UPD_BCON_PRMS_RSP */
504 WDI_ProcessSendBeaconParamsRsp, /* WDI_SND_BCON_RSP */
505
506 /*Soft AP APIs*/
507 WDI_ProcessUpdateProbeRspTemplateRsp,/*WDI_UPD_PROBE_RSP_TEMPLATE_RESP */
508 WDI_ProcessSetStaBcastKeyRsp, /*WDI_SET_STA_BCAST_KEY_RESP */
509 WDI_ProcessRemoveStaBcastKeyRsp, /*WDI_RMV_STA_BCAST_KEY_RESP */
510 WDI_ProcessSetMaxTxPowerRsp, /*WDI_SET_MAX_TX_POWER_RESP */
511
512 /* PowerSave APIs */
513 WDI_ProcessEnterImpsRsp, /* WDI_ENTER_IMPS_RESP */
514 WDI_ProcessExitImpsRsp, /* WDI_EXIT_IMPS_RESP */
515 WDI_ProcessEnterBmpsRsp, /* WDI_ENTER_BMPS_RESP */
516 WDI_ProcessExitBmpsRsp, /* WDI_EXIT_BMPS_RESP */
517 WDI_ProcessEnterUapsdRsp, /* WDI_ENTER_UAPSD_RESP */
518 WDI_ProcessExitUapsdRsp, /* WDI_EXIT_UAPSD_RESP */
519 WDI_ProcessSetUapsdAcParamsRsp, /* WDI_SET_UAPSD_PARAM_RESP */
520 WDI_ProcessUpdateUapsdParamsRsp, /* WDI_UPDATE_UAPSD_PARAM_RESP */
521 WDI_ProcessConfigureRxpFilterRsp,/* WDI_CONFIGURE_RXP_FILTER_RESP */
522 WDI_ProcessSetBeaconFilterRsp, /* WDI_SET_BEACON_FILTER_RESP */
523 WDI_ProcessRemBeaconFilterRsp, /* WDI_REM_BEACON_FILTER_RESP */
524 WDI_ProcessSetRSSIThresoldsRsp, /* WDI_SET_RSSI_THRESHOLDS_RESP */
525 WDI_ProcessHostOffloadRsp, /* WDI_HOST_OFFLOAD_RESP */
526 WDI_ProcessWowlAddBcPtrnRsp, /* WDI_WOWL_ADD_BC_PTRN_RESP */
527 WDI_ProcessWowlDelBcPtrnRsp, /* WDI_WOWL_DEL_BC_PTRN_RESP */
528 WDI_ProcessWowlEnterRsp, /* WDI_WOWL_ENTER_RESP */
529 WDI_ProcessWowlExitRsp, /* WDI_WOWL_EXIT_RESP */
530 WDI_ProcessConfigureAppsCpuWakeupStateRsp, /* WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700531
Jeff Johnson295189b2012-06-20 16:38:30 -0700532
533 WDI_ProcessNvDownloadRsp, /* WDI_NV_DOWNLOAD_RESP*/
534
535 WDI_ProcessFlushAcRsp, /* WDI_FLUSH_AC_RESP */
536 WDI_ProcessBtAmpEventRsp, /* WDI_BTAMP_EVENT_RESP */
537#ifdef WLAN_FEATURE_VOWIFI_11R
538 WDI_ProcessAggrAddTSpecRsp, /* WDI_AGGR_ADD_TS_RESP */
539#else
540 NULL,
541#endif /* WLAN_FEATURE_VOWIFI_11R */
542 WDI_ProcessAddSTASelfRsp, /* WDI_ADD_STA_SELF_RESP */
543 WDI_ProcessDelSTASelfRsp, /* WDI_DEL_STA_SELF_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700544#ifdef FEATURE_OEM_DATA_SUPPORT
545 WDI_ProcessStartOemDataRsp, /*WDI_START_OEM_DATA_RESP*/
546#else
Jeff Johnson295189b2012-06-20 16:38:30 -0700547 NULL,
Jeff Johnsone7245742012-09-05 17:12:55 -0700548#endif /*FEATURE_OEM_DATA_SUPPORT*/
Jeff Johnson295189b2012-06-20 16:38:30 -0700549 WDI_ProcessHostResumeRsp, /*WDI_HOST_RESUME_RESP*/
550
Jeff Johnson295189b2012-06-20 16:38:30 -0700551 WDI_ProcessP2PGONOARsp, /*WDI_P2P_GO_NOTICE_OF_ABSENCE_RESP */
Jeff Johnson295189b2012-06-20 16:38:30 -0700552
Jeff Johnson295189b2012-06-20 16:38:30 -0700553 WDI_ProcessFTMCommandRsp, /* WDI_FTM_CMD_RESP */
Jeff Johnson295189b2012-06-20 16:38:30 -0700554
Jeff Johnsone7245742012-09-05 17:12:55 -0700555 WDI_ProcessKeepAliveRsp, /* WDI_KEEP_ALIVE_RESP */
556
Jeff Johnson295189b2012-06-20 16:38:30 -0700557#ifdef FEATURE_WLAN_SCAN_PNO
558 WDI_ProcessSetPreferredNetworkRsp, /* WDI_SET_PREF_NETWORK_RESP */
559 WDI_ProcessSetRssiFilterRsp, /* WDI_SET_RSSI_FILTER_RESP */
560 WDI_ProcessUpdateScanParamsRsp, /* WDI_UPDATE_SCAN_PARAMS_RESP */
561#else
562 NULL,
563 NULL,
564 NULL,
565#endif // FEATURE_WLAN_SCAN_PNO
566
567 WDI_ProcessSetTxPerTrackingRsp, /* WDI_SET_TX_PER_TRACKING_RESP */
568
569 /*---------------------------------------------------------------------
570 Indications
571 ---------------------------------------------------------------------*/
572#ifdef WLAN_FEATURE_PACKET_FILTERING
573 /* WDI_8023_MULTICAST_LIST_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700574 WDI_Process8023MulticastListRsp,
Jeff Johnson295189b2012-06-20 16:38:30 -0700575 /* WDI_RECEIVE_FILTER_SET_FILTER_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700576 WDI_ProcessReceiveFilterSetFilterRsp,
Jeff Johnson295189b2012-06-20 16:38:30 -0700577 /* WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700578 WDI_ProcessFilterMatchCountRsp,
Jeff Johnson295189b2012-06-20 16:38:30 -0700579 /* WDI_RECEIVE_FILTER_CLEAR_FILTER_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700580 WDI_ProcessReceiveFilterClearFilterRsp,
Jeff Johnson295189b2012-06-20 16:38:30 -0700581#else
582 NULL,
583 NULL,
584 NULL,
585 NULL,
586#endif // WLAN_FEATURE_PACKET_FILTERING
587
588 WDI_ProcessHALDumpCmdRsp, /* WDI_HAL_DUMP_CMD_RESP */
589 WDI_ProcessShutdownRsp, /* WDI_SHUTDOWN_RESP */
590
591 WDI_ProcessSetPowerParamsRsp, /*WDI_SET_POWER_PARAMS_RESP*/
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -0800592#ifdef FEATURE_WLAN_ESE
Jeff Johnson295189b2012-06-20 16:38:30 -0700593 WDI_ProcessTsmStatsRsp, /* WDI_TSM_STATS_RESP */
594#else
595 NULL,
596#endif
597
598#ifdef WLAN_FEATURE_GTK_OFFLOAD
Jeff Johnsone7245742012-09-05 17:12:55 -0700599 WDI_ProcessGtkOffloadRsp, /* WDI_GTK_OFFLOAD_RESP */
600 WDI_ProcessGTKOffloadGetInfoRsp, /* WDI_GTK_OFFLOAD_GETINFO_RESP */
Jeff Johnson295189b2012-06-20 16:38:30 -0700601#else
602 NULL,
603 NULL,
604#endif // WLAN_FEATURE_GTK_OFFLOAD
Jeff Johnsone7245742012-09-05 17:12:55 -0700605 WDI_ProcessSetTmLevelRsp, /* WDI_SET_TM_LEVEL_RESP */
606 WDI_ProcessFeatureCapsExchangeRsp, /* WDI_FEATURE_CAPS_EXCHANGE_RESP */
Mohit Khanna4a70d262012-09-11 16:30:12 -0700607#ifdef WLAN_FEATURE_11AC
608 WDI_ProcessUpdateVHTOpModeRsp, /* WDI_UPDATE_VHT_OP_MODE_RESP */
schang86c22c42013-03-13 18:41:24 -0700609#else
610 NULL,
Mohit Khanna4a70d262012-09-11 16:30:12 -0700611#endif
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -0800612#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_ESE || defined(FEATURE_WLAN_LFR)
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -0800613 WDI_ProcessGetRoamRssiRsp, /* WDI_GET_ROAM_RSSI_RESP */
614#else
615 NULL,
616#endif
schang86c22c42013-03-13 18:41:24 -0700617 WDI_ProcessSetTxPowerRsp, /* WDI_SET_TX_POWER_RESP */
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -0700618#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
Varun Reddy Yeturu920df212013-05-22 08:07:23 -0700619 WDI_ProcessRoamScanOffloadRsp, /* WDI_ROAM_SCAN_OFFLOAD_RESP */
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -0700620#else
621 NULL,
622#endif
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +0530623#ifdef FEATURE_WLAN_TDLS
624 WDI_ProcessLinkEstablishReqRsp, /*WDI_TDLS_LINK_ESTABLISH_REQ_RESP*/
625#else
626 NULL,
627#endif
Leo Chang9056f462013-08-01 19:21:11 -0700628#ifdef FEATURE_WLAN_LPHB
629 WDI_ProcessLphbCfgRsp, /* WDI_LPHB_CFG_RESP */
630#else
631 NULL,
632#endif /* FEATURE_WLAN_LPHB */
Rajeev79dbe4c2013-10-05 11:03:42 +0530633
634#ifdef FEATURE_WLAN_BATCH_SCAN
635 WDI_ProcessSetBatchScanRsp, /* WDI_SET_BATCH_SCAN_RESP */
636#else
637 NULL,
638#endif /*FEATURE_WLAN_BATCH_SCAN*/
Arif Hussain935a8fb2014-01-31 12:12:28 -0800639 WDI_ProcessSetMaxTxPowerPerBandRsp, /* WDI_SET_MAX_TX_POWER_PER_BAND_RSP */
Rajeev79dbe4c2013-10-05 11:03:42 +0530640
c_hpothu92367912014-05-01 15:18:17 +0530641 WDI_ProcessUpdateChanRsp, /* WDI_UPDATE_CHAN_RESP */
Manjunathappa Prakash86f78ca2014-02-10 18:09:15 -0800642
c_hpothu92367912014-05-01 15:18:17 +0530643 WDI_ProcessChannelSwitchRsp_V1, /* WDI_CH_SWITCH_RESP_V1 */
644
645 WDI_ProcessGetBcnMissRateRsp, /*WDI_GET_BCN_MISS_RATE_RSP*/
Kalikinkar dhara1e83b772014-02-06 12:59:22 -0800646
Sunil Duttbd736ed2014-05-26 21:19:41 +0530647
648#ifdef WLAN_FEATURE_LINK_LAYER_STATS
649 WDI_ProcessLLStatsSetRsp, /* WDI_LL_STATS_SET_RSP */
650 WDI_ProcessLLStatsGetRsp, /* WDI_LL_STATS_GET_RSP */
651 WDI_ProcessLLStatsClearRsp, /* WDI_LL_STATS_CLEAR_RSP */
652#else
653 NULL,
654 NULL,
655 NULL,
656#endif
Jeff Johnson295189b2012-06-20 16:38:30 -0700657 /*---------------------------------------------------------------------
658 Indications
659 ---------------------------------------------------------------------*/
660 WDI_ProcessLowRSSIInd, /* Just threshold crossing not really low WDI_HAL_RSSI_NOTIFICATION_IND */
661 WDI_ProcessMissedBeaconInd, /* WDI_HAL_MISSED_BEACON_IND */
662 WDI_ProcessUnkAddrFrameInd, /* WDI_HAL_UNKNOWN_ADDR2_FRAME_RX_IND */
663 WDI_ProcessMicFailureInd, /* WDI_HAL_MIC_FAILURE_IND */
664 WDI_ProcessFatalErrorInd, /* WDI_HAL_FATAL_ERROR_IND */
665 WDI_ProcessDelSTAInd, /* WDI_HAL_DEL_STA_IND */
666
667 WDI_ProcessCoexInd, /* WDI_HAL_COEX_IND */
668
669 WDI_ProcessTxCompleteInd, /* WDI_HAL_TX_COMPLETE_IND */
670
Jeff Johnson295189b2012-06-20 16:38:30 -0700671 WDI_ProcessP2pNoaAttrInd, /*WDI_HOST_NOA_ATTR_IND*/
Jeff Johnson295189b2012-06-20 16:38:30 -0700672
673#ifdef FEATURE_WLAN_SCAN_PNO
674 WDI_ProcessPrefNetworkFoundInd, /* WDI_HAL_PREF_NETWORK_FOUND_IND */
675#else
676 NULL,
677#endif // FEATURE_WLAN_SCAN_PNO
678
679#ifdef WLAN_WAKEUP_EVENTS
680 WDI_ProcessWakeReasonInd, /* WDI_WAKE_REASON_IND */
681#else // WLAN_WAKEUP_EVENTS
682 NULL,
683#endif // WLAN_WAKEUP_EVENTS
684
685 WDI_ProcessTxPerHitInd, /* WDI_HAL_TX_PER_HIT_IND */
Viral Modid86bde22012-12-10 13:09:21 -0800686
Viral Modid86bde22012-12-10 13:09:21 -0800687 WDI_ProcessP2pNoaStartInd, /* WDI_NOA_START_IND */
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +0530688#ifdef FEATURE_WLAN_TDLS
689 WDI_ProcessTdlsInd, /* WDI_HAL_TDLS_IND */
690#else
691 NULL,
692#endif
Leo Chang9056f462013-08-01 19:21:11 -0700693
694#ifdef FEATURE_WLAN_LPHB
Leo Changd9df8aa2013-09-26 13:32:26 -0700695 WDI_ProcessLphbInd, /* WDI_HAL_LPHB_IND */
Leo Chang9056f462013-08-01 19:21:11 -0700696#else
697 NULL,
698#endif /* FEATURE_WLAN_LPHB */
Ravi Joshid2ca7c42013-07-23 08:37:49 -0700699
700 WDI_ProcessIbssPeerInactivityInd, /* WDI_HAL_IBSS_PEER_INACTIVITY_IND */
Yue Mab9c86f42013-08-14 15:59:08 -0700701
702 WDI_ProcessPeriodicTxPtrnFwInd, /* WDI_HAL_PERIODIC_TX_PTRN_FW_IND */
Rajeev79dbe4c2013-10-05 11:03:42 +0530703
704#ifdef FEATURE_WLAN_BATCH_SCAN
705 WDI_ProcessBatchScanResultInd, /* WDI_BATCHSCAN_RESULT_IND */
706#else
707 NULL,
708#endif
709
Leo Chang0b0e45a2013-12-15 15:18:55 -0800710#ifdef FEATURE_WLAN_CH_AVOID
711 WDI_ProcessChAvoidInd, /* WDI_LBP_UPDATE_IND_TO_HOST */
712#else
713 NULL,
714#endif /* FEATURE_WLAN_CH_AVOID */
715
Sunil Duttbd736ed2014-05-26 21:19:41 +0530716 WDI_printRegInfo, /* WDI_PRINT_REG_INFO_IND */
717#ifdef WLAN_FEATURE_LINK_LAYER_STATS
718 WDI_ProcessLinkLayerStatsResultsInd, /* WDI_HAL_LL_STATS_RESULTS_IND */
719#else
720 NULL,
721#endif
Jeff Johnson295189b2012-06-20 16:38:30 -0700722};
723
724
Jeff Johnsone7245742012-09-05 17:12:55 -0700725/*---------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -0700726 WLAN DAL Global Control Block
727 ---------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700728WDI_ControlBlockType gWDICb;
Jeff Johnson295189b2012-06-20 16:38:30 -0700729static wpt_uint8 gWDIInitialized = eWLAN_PAL_FALSE;
730
Jeff Johnsone7245742012-09-05 17:12:55 -0700731const wpt_uint8 szTransportChName[] = "WLAN_CTRL";
Jeff Johnson295189b2012-06-20 16:38:30 -0700732
733/*Helper routine for retrieving the PAL Context from WDI*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700734WPT_INLINE
Jeff Johnson295189b2012-06-20 16:38:30 -0700735void* WDI_GET_PAL_CTX( void )
736{
Jeff Johnsone7245742012-09-05 17:12:55 -0700737 return gWDICb.pPALContext;
Jeff Johnson295189b2012-06-20 16:38:30 -0700738}/*WDI_GET_PAL_CTX*/
739
Jeff Johnsone7245742012-09-05 17:12:55 -0700740/*============================================================================
Jeff Johnson295189b2012-06-20 16:38:30 -0700741 Helper inline converters
742 ============================================================================*/
743/*Convert WDI driver type into HAL driver type*/
744WPT_STATIC WPT_INLINE WDI_Status
745WDI_HAL_2_WDI_STATUS
746(
747 eHalStatus halStatus
748);
749
750/*Convert WDI request type into HAL request type*/
751WPT_STATIC WPT_INLINE tHalHostMsgType
752WDI_2_HAL_REQ_TYPE
753(
754 WDI_RequestEnumType wdiReqType
755);
756
757/*Convert WDI response type into HAL response type*/
758WPT_STATIC WPT_INLINE WDI_ResponseEnumType
759HAL_2_WDI_RSP_TYPE
760(
761 tHalHostMsgType halMsg
762);
763
764/*Convert WDI driver type into HAL driver type*/
765WPT_STATIC WPT_INLINE tDriverType
766WDI_2_HAL_DRV_TYPE
767(
768 WDI_DriverType wdiDriverType
769);
770
771/*Convert WDI stop reason into HAL stop reason*/
772WPT_STATIC WPT_INLINE tHalStopType
773WDI_2_HAL_STOP_REASON
774(
775 WDI_StopType wdiStopType
776);
777
778/*Convert WDI scan mode type into HAL scan mode type*/
779WPT_STATIC WPT_INLINE eHalSysMode
780WDI_2_HAL_SCAN_MODE
781(
782 WDI_ScanMode wdiScanMode
783);
784
785/*Convert WDI sec ch offset into HAL sec ch offset type*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700786WPT_STATIC WPT_INLINE ePhyChanBondState
Jeff Johnson295189b2012-06-20 16:38:30 -0700787WDI_2_HAL_SEC_CH_OFFSET
788(
789 WDI_HTSecondaryChannelOffset wdiSecChOffset
790);
791
792/*Convert WDI BSS type into HAL BSS type*/
793WPT_STATIC WPT_INLINE tSirBssType
794WDI_2_HAL_BSS_TYPE
795(
796 WDI_BssType wdiBSSType
797);
798
799/*Convert WDI NW type into HAL NW type*/
800WPT_STATIC WPT_INLINE tSirNwType
801WDI_2_HAL_NW_TYPE
802(
803 WDI_NwType wdiNWType
804);
805
806/*Convert WDI chanel bonding type into HAL cb type*/
807WPT_STATIC WPT_INLINE ePhyChanBondState
808WDI_2_HAL_CB_STATE
809(
810 WDI_PhyChanBondState wdiCbState
811);
812
813/*Convert WDI chanel bonding type into HAL cb type*/
814WPT_STATIC WPT_INLINE tSirMacHTOperatingMode
815WDI_2_HAL_HT_OPER_MODE
816(
817 WDI_HTOperatingMode wdiHTOperMode
818);
819
820/*Convert WDI mimo PS type into HAL mimo PS type*/
821WPT_STATIC WPT_INLINE tSirMacHTMIMOPowerSaveState
822WDI_2_HAL_MIMO_PS
823(
824 WDI_HTMIMOPowerSaveState wdiHTOperMode
825);
826
827/*Convert WDI ENC type into HAL ENC type*/
828WPT_STATIC WPT_INLINE tAniEdType
829WDI_2_HAL_ENC_TYPE
830(
831 WDI_EncryptType wdiEncType
832);
833
834/*Convert WDI WEP type into HAL WEP type*/
835WPT_STATIC WPT_INLINE tAniWepType
836WDI_2_HAL_WEP_TYPE
837(
838 WDI_WepType wdiWEPType
839);
840
841/*Convert WDI Link State into HAL Link State*/
842WPT_STATIC WPT_INLINE tSirLinkState
843WDI_2_HAL_LINK_STATE
844(
845 WDI_LinkStateType wdiLinkState
846);
847
Jeff Johnsone7245742012-09-05 17:12:55 -0700848/*Translate a STA Context from WDI into HAL*/
849WPT_STATIC WPT_INLINE
Jeff Johnson295189b2012-06-20 16:38:30 -0700850void
851WDI_CopyWDIStaCtxToHALStaCtx
Jeff Johnsone7245742012-09-05 17:12:55 -0700852(
Jeff Johnson295189b2012-06-20 16:38:30 -0700853 tConfigStaParams* phalConfigSta,
854 WDI_ConfigStaReqInfoType* pwdiConfigSta
855);
Jeff Johnsone7245742012-09-05 17:12:55 -0700856
857/*Translate a Rate set info from WDI into HAL*/
858WPT_STATIC WPT_INLINE void
Jeff Johnson295189b2012-06-20 16:38:30 -0700859WDI_CopyWDIRateSetToHALRateSet
Jeff Johnsone7245742012-09-05 17:12:55 -0700860(
Jeff Johnson295189b2012-06-20 16:38:30 -0700861 tSirMacRateSet* pHalRateSet,
862 WDI_RateSet* pwdiRateSet
863);
864
865/*Translate an EDCA Parameter Record from WDI into HAL*/
866WPT_STATIC WPT_INLINE void
867WDI_CopyWDIEDCAParamsToHALEDCAParams
Jeff Johnsone7245742012-09-05 17:12:55 -0700868(
Jeff Johnson295189b2012-06-20 16:38:30 -0700869 tSirMacEdcaParamRecord* phalEdcaParam,
870 WDI_EdcaParamRecord* pWDIEdcaParam
871);
872
873/*Copy a management frame header from WDI fmt into HAL fmt*/
874WPT_STATIC WPT_INLINE void
875WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr
876(
877 tSirMacMgmtHdr* pmacMgmtHdr,
878 WDI_MacMgmtHdr* pwdiMacMgmtHdr
879);
880
881/*Copy config bss parameters from WDI fmt into HAL fmt*/
882WPT_STATIC WPT_INLINE void
883WDI_CopyWDIConfigBSSToHALConfigBSS
884(
885 tConfigBssParams* phalConfigBSS,
886 WDI_ConfigBSSReqInfoType* pwdiConfigBSS
887);
888
Jeff Johnsone7245742012-09-05 17:12:55 -0700889/*Extract the request CB function and user data from a request structure
Jeff Johnson295189b2012-06-20 16:38:30 -0700890 pointed to by user data */
891WPT_STATIC WPT_INLINE void
892WDI_ExtractRequestCBFromEvent
893(
894 WDI_EventInfoType* pEvent,
Jeff Johnsone7245742012-09-05 17:12:55 -0700895 WDI_ReqStatusCb* ppfnReqCB,
Jeff Johnson295189b2012-06-20 16:38:30 -0700896 void** ppUserData
897);
898
899wpt_uint8
900WDI_FindEmptySession
Jeff Johnsone7245742012-09-05 17:12:55 -0700901(
Jeff Johnson295189b2012-06-20 16:38:30 -0700902 WDI_ControlBlockType* pWDICtx,
903 WDI_BSSSessionType** ppSession
904);
905
906void
907WDI_AddBcastSTAtoSTATable
908(
909 WDI_ControlBlockType* pWDICtx,
910 WDI_AddStaParams * staParams,
911 wpt_uint16 usBcastStaIdx
912);
913
914WDI_Status WDI_SendNvBlobReq
Jeff Johnsone7245742012-09-05 17:12:55 -0700915(
Jeff Johnson295189b2012-06-20 16:38:30 -0700916 WDI_ControlBlockType* pWDICtx,
917 WDI_EventInfoType* pEventData
918);
919
920void
921WDI_SetPowerStateCb
922(
923 wpt_status status,
924 unsigned int dxePhyAddr,
925 void *pContext
926);
927
Jeff Johnson295189b2012-06-20 16:38:30 -0700928/**
929 @brief WDI_getReqMsgString prints the WDI request message in string.
Jeff Johnsone7245742012-09-05 17:12:55 -0700930
931 @param wdiReqMsgId: WDI Message request Id
932
933 @see
Jeff Johnson295189b2012-06-20 16:38:30 -0700934 @return Result of the function call
935*/
936static char *WDI_getReqMsgString(wpt_uint16 wdiReqMsgId)
937{
938 switch (wdiReqMsgId)
939 {
940 CASE_RETURN_STRING( WDI_START_REQ );
941 CASE_RETURN_STRING( WDI_STOP_REQ );
942 CASE_RETURN_STRING( WDI_CLOSE_REQ );
943 CASE_RETURN_STRING( WDI_INIT_SCAN_REQ );
944 CASE_RETURN_STRING( WDI_START_SCAN_REQ );
945 CASE_RETURN_STRING( WDI_END_SCAN_REQ );
946 CASE_RETURN_STRING( WDI_FINISH_SCAN_REQ );
947 CASE_RETURN_STRING( WDI_JOIN_REQ );
948 CASE_RETURN_STRING( WDI_CONFIG_BSS_REQ );
949 CASE_RETURN_STRING( WDI_DEL_BSS_REQ );
950 CASE_RETURN_STRING( WDI_POST_ASSOC_REQ );
951 CASE_RETURN_STRING( WDI_DEL_STA_REQ );
952 CASE_RETURN_STRING( WDI_SET_BSS_KEY_REQ );
953 CASE_RETURN_STRING( WDI_RMV_BSS_KEY_REQ );
954 CASE_RETURN_STRING( WDI_SET_STA_KEY_REQ );
955 CASE_RETURN_STRING( WDI_RMV_STA_KEY_REQ );
956 CASE_RETURN_STRING( WDI_ADD_TS_REQ );
957 CASE_RETURN_STRING( WDI_DEL_TS_REQ );
958 CASE_RETURN_STRING( WDI_UPD_EDCA_PRMS_REQ );
959 CASE_RETURN_STRING( WDI_ADD_BA_SESSION_REQ );
960 CASE_RETURN_STRING( WDI_DEL_BA_REQ );
961 CASE_RETURN_STRING( WDI_CH_SWITCH_REQ );
Kalikinkar dhara1e83b772014-02-06 12:59:22 -0800962 CASE_RETURN_STRING( WDI_CH_SWITCH_REQ_V1);
Jeff Johnson295189b2012-06-20 16:38:30 -0700963 CASE_RETURN_STRING( WDI_CONFIG_STA_REQ );
964 CASE_RETURN_STRING( WDI_SET_LINK_ST_REQ );
965 CASE_RETURN_STRING( WDI_GET_STATS_REQ );
966 CASE_RETURN_STRING( WDI_UPDATE_CFG_REQ );
967 CASE_RETURN_STRING( WDI_ADD_BA_REQ );
968 CASE_RETURN_STRING( WDI_TRIGGER_BA_REQ );
969 CASE_RETURN_STRING( WDI_UPD_BCON_PRMS_REQ );
970 CASE_RETURN_STRING( WDI_SND_BCON_REQ );
971 CASE_RETURN_STRING( WDI_UPD_PROBE_RSP_TEMPLATE_REQ );
972 CASE_RETURN_STRING( WDI_SET_STA_BCAST_KEY_REQ );
973 CASE_RETURN_STRING( WDI_RMV_STA_BCAST_KEY_REQ );
974 CASE_RETURN_STRING( WDI_SET_MAX_TX_POWER_REQ );
Arif Hussaina5ebce02013-08-09 15:09:58 -0700975 CASE_RETURN_STRING( WDI_SET_MAX_TX_POWER_PER_BAND_REQ );
Jeff Johnson295189b2012-06-20 16:38:30 -0700976 CASE_RETURN_STRING( WDI_P2P_GO_NOTICE_OF_ABSENCE_REQ );
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +0530977#ifdef FEATURE_WLAN_TDLS
978 CASE_RETURN_STRING( WDI_TDLS_LINK_ESTABLISH_REQ );
979#endif
Jeff Johnson295189b2012-06-20 16:38:30 -0700980 CASE_RETURN_STRING( WDI_ENTER_IMPS_REQ );
981 CASE_RETURN_STRING( WDI_EXIT_IMPS_REQ );
982 CASE_RETURN_STRING( WDI_ENTER_BMPS_REQ );
983 CASE_RETURN_STRING( WDI_EXIT_BMPS_REQ );
984 CASE_RETURN_STRING( WDI_ENTER_UAPSD_REQ );
985 CASE_RETURN_STRING( WDI_EXIT_UAPSD_REQ );
986 CASE_RETURN_STRING( WDI_SET_UAPSD_PARAM_REQ );
987 CASE_RETURN_STRING( WDI_UPDATE_UAPSD_PARAM_REQ );
988 CASE_RETURN_STRING( WDI_CONFIGURE_RXP_FILTER_REQ );
989 CASE_RETURN_STRING( WDI_SET_BEACON_FILTER_REQ);
990 CASE_RETURN_STRING( WDI_REM_BEACON_FILTER_REQ );
991 CASE_RETURN_STRING( WDI_SET_RSSI_THRESHOLDS_REQ );
992 CASE_RETURN_STRING( WDI_HOST_OFFLOAD_REQ );
993 CASE_RETURN_STRING( WDI_WOWL_ADD_BC_PTRN_REQ );
994 CASE_RETURN_STRING( WDI_WOWL_DEL_BC_PTRN_REQ );
995 CASE_RETURN_STRING( WDI_WOWL_ENTER_REQ );
996 CASE_RETURN_STRING( WDI_WOWL_EXIT_REQ );
997 CASE_RETURN_STRING( WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ );
998 CASE_RETURN_STRING( WDI_NV_DOWNLOAD_REQ );
999 CASE_RETURN_STRING( WDI_FLUSH_AC_REQ );
1000 CASE_RETURN_STRING( WDI_BTAMP_EVENT_REQ );
1001 CASE_RETURN_STRING( WDI_AGGR_ADD_TS_REQ );
1002 CASE_RETURN_STRING( WDI_ADD_STA_SELF_REQ );
1003 CASE_RETURN_STRING( WDI_DEL_STA_SELF_REQ );
1004 CASE_RETURN_STRING( WDI_FTM_CMD_REQ );
Jeff Johnsone7245742012-09-05 17:12:55 -07001005 CASE_RETURN_STRING( WDI_START_OEM_DATA_REQ );
Jeff Johnson295189b2012-06-20 16:38:30 -07001006 CASE_RETURN_STRING( WDI_HOST_RESUME_REQ );
1007 CASE_RETURN_STRING( WDI_KEEP_ALIVE_REQ);
1008 #ifdef FEATURE_WLAN_SCAN_PNO
1009 CASE_RETURN_STRING( WDI_SET_PREF_NETWORK_REQ );
1010 CASE_RETURN_STRING( WDI_SET_RSSI_FILTER_REQ );
1011 CASE_RETURN_STRING( WDI_UPDATE_SCAN_PARAMS_REQ );
1012 #endif
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -07001013#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
Varun Reddy Yeturu920df212013-05-22 08:07:23 -07001014 CASE_RETURN_STRING( WDI_ROAM_SCAN_OFFLOAD_REQ );
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -07001015#endif
Jeff Johnson295189b2012-06-20 16:38:30 -07001016 CASE_RETURN_STRING( WDI_SET_TX_PER_TRACKING_REQ );
1017 CASE_RETURN_STRING( WDI_8023_MULTICAST_LIST_REQ );
1018 CASE_RETURN_STRING( WDI_RECEIVE_FILTER_SET_FILTER_REQ );
1019 CASE_RETURN_STRING( WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ );
1020 CASE_RETURN_STRING( WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ );
1021 CASE_RETURN_STRING( WDI_INIT_SCAN_CON_REQ );
1022 CASE_RETURN_STRING( WDI_HAL_DUMP_CMD_REQ );
1023 CASE_RETURN_STRING( WDI_SHUTDOWN_REQ );
1024 CASE_RETURN_STRING( WDI_SET_POWER_PARAMS_REQ );
c_hpothu92367912014-05-01 15:18:17 +05301025 CASE_RETURN_STRING( WDI_GET_BCN_MISS_RATE_REQ );
Madan Mohan Koyyalamudi01cba042013-01-10 21:56:05 -08001026 CASE_RETURN_STRING( WDI_TRAFFIC_STATS_IND );
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -08001027 CASE_RETURN_STRING( WDI_GET_ROAM_RSSI_REQ );
Chet Lanctot186b5732013-03-18 10:26:30 -07001028#ifdef WLAN_FEATURE_11W
1029 CASE_RETURN_STRING( WDI_EXCLUDE_UNENCRYPTED_IND );
1030#endif
Rajeev79dbe4c2013-10-05 11:03:42 +05301031#ifdef FEATURE_WLAN_BATCH_SCAN
1032 CASE_RETURN_STRING( WDI_SET_BATCH_SCAN_REQ);
1033 CASE_RETURN_STRING( WDI_STOP_BATCH_SCAN_IND );
1034 CASE_RETURN_STRING( WDI_TRIGGER_BATCH_SCAN_RESULT_IND);
1035#endif
Sandeep Puligilla8b8b74b2014-02-10 16:39:05 +05301036 CASE_RETURN_STRING(WDI_START_HT40_OBSS_SCAN_IND);
1037 CASE_RETURN_STRING(WDI_STOP_HT40_OBSS_SCAN_IND);
Manjunathappa Prakash86f78ca2014-02-10 18:09:15 -08001038 CASE_RETURN_STRING(WDI_UPDATE_CHAN_REQ);
Sunil Duttbd736ed2014-05-26 21:19:41 +05301039#ifdef WLAN_FEATURE_LINK_LAYER_STATS
1040 CASE_RETURN_STRING( WDI_LL_STATS_SET_REQ);
1041 CASE_RETURN_STRING( WDI_LL_STATS_GET_REQ);
1042 CASE_RETURN_STRING( WDI_LL_STATS_CLEAR_REQ);
1043#endif
Jeff Johnson295189b2012-06-20 16:38:30 -07001044 default:
1045 return "Unknown WDI MessageId";
1046 }
1047}
1048
1049
1050
1051/**
1052 @brief WDI_getRespMsgString prints the WDI resonse message in string.
Jeff Johnsone7245742012-09-05 17:12:55 -07001053
1054 @param wdiRespMsgId: WDI Message response Id
1055
1056 @see
Jeff Johnson295189b2012-06-20 16:38:30 -07001057 @return Result of the function call
1058*/
1059static char *WDI_getRespMsgString(wpt_uint16 wdiRespMsgId)
1060{
1061 switch (wdiRespMsgId)
1062 {
1063 CASE_RETURN_STRING( WDI_START_RESP );
1064 CASE_RETURN_STRING( WDI_STOP_RESP );
1065 CASE_RETURN_STRING( WDI_CLOSE_RESP );
1066 CASE_RETURN_STRING( WDI_INIT_SCAN_RESP );
1067 CASE_RETURN_STRING( WDI_START_SCAN_RESP );
1068 CASE_RETURN_STRING( WDI_END_SCAN_RESP );
1069 CASE_RETURN_STRING( WDI_FINISH_SCAN_RESP );
1070 CASE_RETURN_STRING( WDI_JOIN_RESP );
1071 CASE_RETURN_STRING( WDI_CONFIG_BSS_RESP );
1072 CASE_RETURN_STRING( WDI_DEL_BSS_RESP );
1073 CASE_RETURN_STRING( WDI_POST_ASSOC_RESP );
1074 CASE_RETURN_STRING( WDI_DEL_STA_RESP );
1075 CASE_RETURN_STRING( WDI_SET_BSS_KEY_RESP );
1076 CASE_RETURN_STRING( WDI_RMV_BSS_KEY_RESP );
1077 CASE_RETURN_STRING( WDI_SET_STA_KEY_RESP );
1078 CASE_RETURN_STRING( WDI_RMV_STA_KEY_RESP );
1079 CASE_RETURN_STRING( WDI_ADD_TS_RESP );
1080 CASE_RETURN_STRING( WDI_DEL_TS_RESP );
1081 CASE_RETURN_STRING( WDI_UPD_EDCA_PRMS_RESP );
1082 CASE_RETURN_STRING( WDI_ADD_BA_SESSION_RESP );
1083 CASE_RETURN_STRING( WDI_DEL_BA_RESP );
1084 CASE_RETURN_STRING( WDI_CH_SWITCH_RESP );
1085 CASE_RETURN_STRING( WDI_CONFIG_STA_RESP );
1086 CASE_RETURN_STRING( WDI_SET_LINK_ST_RESP );
1087 CASE_RETURN_STRING( WDI_GET_STATS_RESP );
1088 CASE_RETURN_STRING( WDI_UPDATE_CFG_RESP );
1089 CASE_RETURN_STRING( WDI_ADD_BA_RESP );
1090 CASE_RETURN_STRING( WDI_TRIGGER_BA_RESP );
1091 CASE_RETURN_STRING( WDI_UPD_BCON_PRMS_RESP );
1092 CASE_RETURN_STRING( WDI_SND_BCON_RESP );
1093 CASE_RETURN_STRING( WDI_UPD_PROBE_RSP_TEMPLATE_RESP );
1094 CASE_RETURN_STRING( WDI_SET_STA_BCAST_KEY_RESP );
1095 CASE_RETURN_STRING( WDI_RMV_STA_BCAST_KEY_RESP );
1096 CASE_RETURN_STRING( WDI_SET_MAX_TX_POWER_RESP );
1097 CASE_RETURN_STRING( WDI_P2P_GO_NOTICE_OF_ABSENCE_RESP );
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +05301098#ifdef FEATURE_WLAN_TDLS
1099 CASE_RETURN_STRING( WDI_TDLS_LINK_ESTABLISH_REQ_RESP );
1100 CASE_RETURN_STRING( WDI_HAL_TDLS_IND );
1101#endif
Jeff Johnson295189b2012-06-20 16:38:30 -07001102 CASE_RETURN_STRING( WDI_ENTER_IMPS_RESP );
1103 CASE_RETURN_STRING( WDI_EXIT_IMPS_RESP );
1104 CASE_RETURN_STRING( WDI_ENTER_BMPS_RESP );
1105 CASE_RETURN_STRING( WDI_EXIT_BMPS_RESP );
1106 CASE_RETURN_STRING( WDI_ENTER_UAPSD_RESP );
1107 CASE_RETURN_STRING( WDI_EXIT_UAPSD_RESP );
1108 CASE_RETURN_STRING( WDI_SET_UAPSD_PARAM_RESP );
1109 CASE_RETURN_STRING( WDI_UPDATE_UAPSD_PARAM_RESP );
1110 CASE_RETURN_STRING( WDI_CONFIGURE_RXP_FILTER_RESP );
1111 CASE_RETURN_STRING( WDI_SET_BEACON_FILTER_RESP);
1112 CASE_RETURN_STRING( WDI_REM_BEACON_FILTER_RESP );
1113 CASE_RETURN_STRING( WDI_SET_RSSI_THRESHOLDS_RESP );
1114 CASE_RETURN_STRING( WDI_HOST_OFFLOAD_RESP );
1115 CASE_RETURN_STRING( WDI_WOWL_ADD_BC_PTRN_RESP );
1116 CASE_RETURN_STRING( WDI_WOWL_DEL_BC_PTRN_RESP );
1117 CASE_RETURN_STRING( WDI_WOWL_ENTER_RESP );
1118 CASE_RETURN_STRING( WDI_WOWL_EXIT_RESP );
1119 CASE_RETURN_STRING( WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_RESP );
1120 CASE_RETURN_STRING( WDI_NV_DOWNLOAD_RESP );
1121 CASE_RETURN_STRING( WDI_FLUSH_AC_RESP );
1122 CASE_RETURN_STRING( WDI_BTAMP_EVENT_RESP );
1123 CASE_RETURN_STRING( WDI_AGGR_ADD_TS_RESP );
1124 CASE_RETURN_STRING( WDI_ADD_STA_SELF_RESP );
1125 CASE_RETURN_STRING( WDI_DEL_STA_SELF_RESP );
1126 CASE_RETURN_STRING( WDI_FTM_CMD_RESP );
Jeff Johnsone7245742012-09-05 17:12:55 -07001127 CASE_RETURN_STRING( WDI_START_OEM_DATA_RESP );
Jeff Johnson295189b2012-06-20 16:38:30 -07001128 CASE_RETURN_STRING( WDI_HOST_RESUME_RESP );
1129 CASE_RETURN_STRING( WDI_KEEP_ALIVE_RESP);
1130 #ifdef FEATURE_WLAN_SCAN_PNO
1131 CASE_RETURN_STRING( WDI_SET_PREF_NETWORK_RESP );
1132 CASE_RETURN_STRING( WDI_SET_RSSI_FILTER_RESP );
1133 CASE_RETURN_STRING( WDI_UPDATE_SCAN_PARAMS_RESP );
1134 #endif
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -07001135#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
Varun Reddy Yeturu920df212013-05-22 08:07:23 -07001136 CASE_RETURN_STRING( WDI_ROAM_SCAN_OFFLOAD_RESP );
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -07001137#endif
Jeff Johnson295189b2012-06-20 16:38:30 -07001138 CASE_RETURN_STRING( WDI_SET_TX_PER_TRACKING_RESP );
1139 CASE_RETURN_STRING( WDI_8023_MULTICAST_LIST_RESP );
1140 CASE_RETURN_STRING( WDI_RECEIVE_FILTER_SET_FILTER_RESP );
1141 CASE_RETURN_STRING( WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_RESP );
1142 CASE_RETURN_STRING( WDI_RECEIVE_FILTER_CLEAR_FILTER_RESP );
1143 CASE_RETURN_STRING( WDI_HAL_DUMP_CMD_RESP );
1144 CASE_RETURN_STRING( WDI_SHUTDOWN_RESP );
1145 CASE_RETURN_STRING( WDI_SET_POWER_PARAMS_RESP );
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -08001146 CASE_RETURN_STRING( WDI_GET_ROAM_RSSI_RESP );
Rajeev79dbe4c2013-10-05 11:03:42 +05301147#ifdef FEATURE_WLAN_BATCH_SCAN
1148 CASE_RETURN_STRING( WDI_SET_BATCH_SCAN_RESP);
1149#endif
Manjunathappa Prakash86f78ca2014-02-10 18:09:15 -08001150 CASE_RETURN_STRING( WDI_UPDATE_CHAN_RESP);
Abhishek Singhbe7f93d2014-06-04 10:47:11 +05301151 CASE_RETURN_STRING( WDI_CH_SWITCH_RESP_V1 );
c_hpothu92367912014-05-01 15:18:17 +05301152 CASE_RETURN_STRING( WDI_GET_BCN_MISS_RATE_RSP );
Sunil Duttbd736ed2014-05-26 21:19:41 +05301153#ifdef WLAN_FEATURE_LINK_LAYER_STATS
1154 CASE_RETURN_STRING( WDI_LL_STATS_SET_RSP);
1155 CASE_RETURN_STRING( WDI_LL_STATS_GET_RSP);
1156 CASE_RETURN_STRING( WDI_LL_STATS_CLEAR_RSP);
1157#endif
Jeff Johnson295189b2012-06-20 16:38:30 -07001158 default:
1159 return "Unknown WDI MessageId";
1160 }
1161}
1162
1163/**
Madan Mohan Koyyalamudif8d3b3f2013-07-30 19:10:54 +05301164 @brief WDI_TraceHostFWCapabilities - Parses both host and Firmware
1165 Capability bitmap array.
Abhishek Singh08b60122014-02-04 18:05:23 +05301166 @param capabilityBitmap - Base address of a 4 element Bitmap array
1167 of type tANI_U32.
Madan Mohan Koyyalamudif8d3b3f2013-07-30 19:10:54 +05301168 @see
1169 @returns None
1170 */
1171void WDI_TraceHostFWCapabilities(tANI_U32 *capabilityBitmap)
1172{
Abhishek Singh08b60122014-02-04 18:05:23 +05301173 int i,j;
Madan Mohan Koyyalamudif8d3b3f2013-07-30 19:10:54 +05301174 char capStr[512];
1175 char *pCapStr = capStr;
Abhishek Singh08b60122014-02-04 18:05:23 +05301176 for (j = 0; j < 4; j++) {
1177 for (i = 0; i < 32; i++) {
1178 if ((*(capabilityBitmap + j) & (1 << i))) {
1179 switch(i + (j * 32)) {
Madan Mohan Koyyalamudif8d3b3f2013-07-30 19:10:54 +05301180 case MCC: snprintf(pCapStr, sizeof("MCC"), "%s", "MCC");
1181 pCapStr += strlen("MCC");
1182 break;
1183 case P2P: snprintf(pCapStr, sizeof("P2P"), "%s", "P2P");
1184 pCapStr += strlen("P2P");
1185 break;
1186 case DOT11AC: snprintf(pCapStr, sizeof("DOT11AC") , "%s", "DOT11AC");
1187 pCapStr += strlen("DOT11AC");
1188 break;
1189 case SLM_SESSIONIZATION: snprintf(pCapStr, sizeof("SLM_SESSIONIZATION"), "%s", "SLM_SESSIONIZATION");
1190 pCapStr += strlen("SLM_SESSIONIZATION");
1191 break;
1192 case DOT11AC_OPMODE: snprintf(pCapStr, sizeof("DOT11AC_OPMODE"), "%s", "DOT11AC_OPMODE");
1193 pCapStr += strlen("DOT11AC_OPMODE");
1194 break;
1195 case SAP32STA: snprintf(pCapStr, sizeof("SAP32STA"), "%s", "SAP32STA");
1196 pCapStr += strlen("SAP32STA");
1197 break;
1198 case TDLS: snprintf(pCapStr, sizeof("TDLS"), "%s", "TDLS");
1199 pCapStr += strlen("TDLS");
1200 break;
1201 case P2P_GO_NOA_DECOUPLE_INIT_SCAN: snprintf(pCapStr, sizeof("P2P_GO_NOA_DECOUPLE_INIT_SCAN"), "%s", "P2P_GO_NOA_DECOUPLE_INIT_SCAN");
1202 pCapStr += strlen("P2P_GO_NOA_DECOUPLE_INIT_SCAN");
1203 break;
1204 case WLANACTIVE_OFFLOAD: snprintf(pCapStr, sizeof("WLANACTIVE_OFFLOAD"), "%s", "WLANACTIVE_OFFLOAD");
1205 pCapStr += strlen("WLANACTIVE_OFFLOAD");
1206 break;
1207 case BEACON_OFFLOAD: snprintf(pCapStr, sizeof("BEACON_OFFLOAD"), "%s","BEACON_OFFLOAD");
1208 pCapStr += strlen("BEACON_OFFLOAD");
1209 break;
1210 case SCAN_OFFLOAD: snprintf(pCapStr, sizeof("SCAN_OFFLOAD"), "%s", "SCAN_OFFLOAD");
1211 pCapStr += strlen("SCAN_OFFLOAD");
1212 break;
1213 case ROAM_OFFLOAD: snprintf(pCapStr, sizeof("ROAM_OFFLOAD"), "%s", "ROAM_OFFLOAD");
1214 pCapStr += strlen("ROAM_OFFLOAD");
1215 break;
1216 case BCN_MISS_OFFLOAD: snprintf(pCapStr, sizeof("BCN_MISS_OFFLOAD"), "%s", "BCN_MISS_OFFLOAD");
1217 pCapStr += strlen("BCN_MISS_OFFLOAD");
1218 break;
1219 case STA_POWERSAVE: snprintf(pCapStr, sizeof("STA_POWERSAVE"), "%s", "STA_POWERSAVE");
1220 pCapStr += strlen("STA_POWERSAVE");
1221 break;
1222 case AP_UAPSD: snprintf(pCapStr, sizeof("AP_UAPSD"), "%s", "AP_UAPSD");
1223 pCapStr += strlen("AP_UAPSD");
1224 break;
1225 case AP_DFS: snprintf(pCapStr, sizeof("AP_DFS"), "%s", "AP_DFS");
1226 pCapStr += strlen("AP_DFS");
1227 break;
1228 case BLOCKACK: snprintf(pCapStr, sizeof("BLOCKACK"), "%s", "BLOCKACK");
1229 pCapStr += strlen("BLOCKACK");
1230 break;
1231 case PHY_ERR: snprintf(pCapStr, sizeof("PHY_ERR"), "%s", "PHY_ERR");
1232 pCapStr += strlen("PHY_ERR");
1233 break;
1234 case BCN_FILTER: snprintf(pCapStr, sizeof("BCN_FILTER"), "%s", "BCN_FILTER");
1235 pCapStr += strlen("BCN_FILTER");
1236 break;
1237 case RTT: snprintf(pCapStr, sizeof("RTT"), "%s", "RTT");
1238 pCapStr += strlen("RTT");
1239 break;
1240 case RATECTRL: snprintf(pCapStr, sizeof("RATECTRL"), "%s", "RATECTRL");
1241 pCapStr += strlen("RATECTRL");
1242 break;
1243 case WOW: snprintf(pCapStr, sizeof("WOW"), "%s", "WOW");
1244 pCapStr += strlen("WOW");
1245 break;
1246 case WLAN_ROAM_SCAN_OFFLOAD: snprintf(pCapStr, sizeof("WLAN_ROAM_SCAN_OFFLOAD"), "%s", "WLAN_ROAM_SCAN_OFFLOAD");
1247 pCapStr += strlen("WLAN_ROAM_SCAN_OFFLOAD");
1248 break;
Kanchanapally, Vidyullathaf9426e52013-12-24 17:28:54 +05301249 case FW_IN_TX_PATH: snprintf(pCapStr, sizeof("FW_IN_TX_PATH"), "%s", "FW_IN_TX_PATH");
1250 pCapStr += strlen("FW_IN_TX_PATH");
1251 break;
Sandeep Puligilla60342762014-01-30 21:05:37 +05301252 case HT40_OBSS_SCAN:
1253 snprintf(pCapStr, sizeof("HT40_OBSS_SCAN"),
1254 "%s", "HT40_OBSS_SCAN");
1255 pCapStr += strlen("HT40_OBSS_SCAN");
1256 break;
Hardik Kantilal Patele1760e12014-01-21 15:57:21 +05301257 case EXTENDED_NSOFFLOAD_SLOT: snprintf(pCapStr,
1258 sizeof("EXTENDED_NSOFFLOAD_SLOT"),
1259 "%s", "EXTENDED_NSOFFLOAD_SLOT");
1260 pCapStr += strlen("EXTENDED_NSOFFLOAD_SLOT");
1261 break;
Pradeep Reddy POTTETIedaeb5f2014-05-22 23:34:41 +05301262 case TDLS_SCAN_COEXISTENCE: snprintf(pCapStr, sizeof("TDLS_SCAN_COEXISTENCE"), "%s", "TDLS_SCAN_COEXISTENCE");
1263 pCapStr += strlen("TDLS_SCAN_COEXISTENCE");
1264 break;
Abhishek Singhbe7f93d2014-06-04 10:47:11 +05301265 case CH_SWITCH_V1: snprintf(pCapStr, sizeof("CH_SWITCH_V1"), "%s", "CH_SWITCH_V1");
1266 pCapStr += strlen("CH_SWITCH_V1");
1267 break;
Hardik Kantilal Patele1760e12014-01-21 15:57:21 +05301268
Abhishek Singh08b60122014-02-04 18:05:23 +05301269 }
1270 *pCapStr++ = ',';
1271 *pCapStr++ = ' ';
1272 }
Madan Mohan Koyyalamudif8d3b3f2013-07-30 19:10:54 +05301273 }
1274 }
Madan Mohan Koyyalamudic2bf6172013-08-07 14:19:18 +05301275 pCapStr -= 2;
1276 *pCapStr = '\0';
Madan Mohan Koyyalamudif8d3b3f2013-07-30 19:10:54 +05301277 pCapStr = capStr;
Madan Mohan Koyyalamudic2bf6172013-08-07 14:19:18 +05301278 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR, "\t\t%s", pCapStr);
Madan Mohan Koyyalamudif8d3b3f2013-07-30 19:10:54 +05301279}
1280
1281/**
Jeff Johnson295189b2012-06-20 16:38:30 -07001282 @brief WDI_getHALStatusMsgString prints the HAL status in string.
Jeff Johnsone7245742012-09-05 17:12:55 -07001283
1284 @param halStatusId: HAL status Id
1285
1286 @see
Jeff Johnson295189b2012-06-20 16:38:30 -07001287 @return Result of the function call
1288*/
1289static char *WDI_getHALStatusMsgString(wpt_uint16 halStatusId)
1290{
1291 switch (halStatusId)
1292 {
1293 CASE_RETURN_STRING( eHAL_STATUS_SUCCESS );
1294 CASE_RETURN_STRING( PAL_STATUS_INVAL );
1295 CASE_RETURN_STRING( PAL_STATUS_ALREADY );
1296 CASE_RETURN_STRING( PAL_STATUS_EMPTY );
1297 CASE_RETURN_STRING( PAL_STATUS_FAILURE );
1298 CASE_RETURN_STRING( eHAL_STATUS_FAILURE );
1299 CASE_RETURN_STRING( eHAL_STATUS_INVALID_PARAMETER );
1300 CASE_RETURN_STRING( eHAL_STATUS_INVALID_STAIDX );
1301 CASE_RETURN_STRING( eHAL_STATUS_DPU_DESCRIPTOR_TABLE_FULL );
1302 CASE_RETURN_STRING( eHAL_STATUS_NO_INTERRUPTS );
1303 CASE_RETURN_STRING( eHAL_STATUS_INTERRUPT_PRESENT );
1304 CASE_RETURN_STRING( eHAL_STATUS_STA_TABLE_FULL );
1305 CASE_RETURN_STRING( eHAL_STATUS_DUPLICATE_STA );
1306 CASE_RETURN_STRING( eHAL_STATUS_BSSID_INVALID );
1307 CASE_RETURN_STRING( eHAL_STATUS_STA_INVALID );
1308 CASE_RETURN_STRING( eHAL_STATUS_DUPLICATE_BSSID );
1309 CASE_RETURN_STRING( eHAL_STATUS_INVALID_BSSIDX );
1310 CASE_RETURN_STRING( eHAL_STATUS_BSSID_TABLE_FULL );
1311 CASE_RETURN_STRING( eHAL_STATUS_INVALID_SIGNATURE );
1312 CASE_RETURN_STRING( eHAL_STATUS_INVALID_KEYID );
1313 CASE_RETURN_STRING( eHAL_STATUS_SET_CHAN_ALREADY_ON_REQUESTED_CHAN );
1314 CASE_RETURN_STRING( eHAL_STATUS_UMA_DESCRIPTOR_TABLE_FULL );
1315 CASE_RETURN_STRING( eHAL_STATUS_DPU_MICKEY_TABLE_FULL );
1316 CASE_RETURN_STRING( eHAL_STATUS_BA_RX_BUFFERS_FULL );
1317 CASE_RETURN_STRING( eHAL_STATUS_BA_RX_MAX_SESSIONS_REACHED );
1318 CASE_RETURN_STRING( eHAL_STATUS_BA_RX_INVALID_SESSION_ID );
1319 CASE_RETURN_STRING( eHAL_STATUS_TIMER_START_FAILED );
1320 CASE_RETURN_STRING( eHAL_STATUS_TIMER_STOP_FAILED );
1321 CASE_RETURN_STRING( eHAL_STATUS_FAILED_ALLOC );
1322 CASE_RETURN_STRING( eHAL_STATUS_NOTIFY_BSS_FAIL );
1323 CASE_RETURN_STRING( eHAL_STATUS_DEL_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO );
1324 CASE_RETURN_STRING( eHAL_STATUS_ADD_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO );
1325 CASE_RETURN_STRING( eHAL_STATUS_FW_SEND_MSG_FAILED );
1326 default:
1327 return "Unknown HAL status";
1328 }
1329}
1330
Jeff Johnsone7245742012-09-05 17:12:55 -07001331/*========================================================================
1332
Jeff Johnson295189b2012-06-20 16:38:30 -07001333 INITIALIZATION APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07001334
Jeff Johnson295189b2012-06-20 16:38:30 -07001335==========================================================================*/
1336
1337/**
1338 @brief WDI_Init is used to initialize the DAL.
Jeff Johnsone7245742012-09-05 17:12:55 -07001339
Jeff Johnson295189b2012-06-20 16:38:30 -07001340 DAL will allocate all the resources it needs. It will open PAL, it will also
1341 open both the data and the control transport which in their turn will open
Jeff Johnsone7245742012-09-05 17:12:55 -07001342 DXE/SMD or any other drivers that they need.
1343
Arun Kumar Khandavalliebb19482014-03-25 13:56:53 +05301344 @param devHandle: pointer to the OS specific device handle
Jeff Johnson295189b2012-06-20 16:38:30 -07001345 ppWDIGlobalCtx: output pointer of Global Context
1346 pWdiDevCapability: output pointer of device capability
1347
1348 @return Result of the function call
1349*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001350WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07001351WDI_Init
Jeff Johnsone7245742012-09-05 17:12:55 -07001352(
Arun Kumar Khandavalliebb19482014-03-25 13:56:53 +05301353 void* devHandle,
Jeff Johnson295189b2012-06-20 16:38:30 -07001354 void** ppWDIGlobalCtx,
1355 WDI_DeviceCapabilityType* pWdiDevCapability,
1356 unsigned int driverType
1357)
1358{
1359 wpt_uint8 i;
Jeff Johnsone7245742012-09-05 17:12:55 -07001360 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07001361 WDI_Status wdiStatus;
Jeff Johnsone7245742012-09-05 17:12:55 -07001362 WCTS_TransportCBsType wctsCBs;
Jeff Johnson295189b2012-06-20 16:38:30 -07001363 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
1364
1365 /*---------------------------------------------------------------------
1366 Sanity check
1367 ---------------------------------------------------------------------*/
1368 if (( NULL == ppWDIGlobalCtx ) || ( NULL == pWdiDevCapability ))
1369 {
1370 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1371 "Invalid input parameters in WDI_Init");
1372
Jeff Johnsone7245742012-09-05 17:12:55 -07001373 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07001374 }
1375
1376 /*---------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001377 Check to see if the module has already been initialized or not
Jeff Johnson295189b2012-06-20 16:38:30 -07001378 ---------------------------------------------------------------------*/
1379 if ( eWLAN_PAL_FALSE != gWDIInitialized )
1380 {
1381 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
1382 "WDI module already initialized - return");
1383
Jeff Johnsone7245742012-09-05 17:12:55 -07001384 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07001385 }
1386
1387 /*Module is now initialized - this flag is to ensure the fact that multiple
1388 init will not happen on WDI
1389 !! - potential race does exist because read and set are not atomic,
1390 however an atomic operation would be closely here - reanalyze if necessary*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001391 gWDIInitialized = eWLAN_PAL_TRUE;
Jeff Johnson295189b2012-06-20 16:38:30 -07001392
1393 /*Setup the control block */
1394 WDI_CleanCB(&gWDICb);
Arun Kumar Khandavalliebb19482014-03-25 13:56:53 +05301395 gWDICb.pOSContext = devHandle ;
Jeff Johnson295189b2012-06-20 16:38:30 -07001396
1397 /*Setup the STA Table*/
1398 wdiStatus = WDI_STATableInit(&gWDICb);
1399 if ( WDI_STATUS_SUCCESS != wdiStatus )
1400 {
1401 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1402 "%s: Failure while initializing STA Table, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001403 __func__, wdiStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001404 goto fail_STATableInit;
1405 }
1406
1407 /*------------------------------------------------------------------------
1408 Open the PAL
1409 ------------------------------------------------------------------------*/
Arun Kumar Khandavalliebb19482014-03-25 13:56:53 +05301410 wptStatus = wpalOpen(&gWDICb.pPALContext, devHandle);
Jeff Johnson295189b2012-06-20 16:38:30 -07001411 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1412 {
1413 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1414 "%s: Failed to open PAL, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001415 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001416 goto fail_wpalOpen;
1417 }
1418
1419 /*Initialize main synchro mutex - it will be used to ensure integrity of
1420 the main WDI Control Block*/
1421 wptStatus = wpalMutexInit(&gWDICb.wptMutex);
1422 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1423 {
1424 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1425 "%s: Failed to init mutex, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001426 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001427 goto fail_mutex;
1428 }
1429
1430 /*Initialize the response timer - it will be used to time all messages
1431 expected as response from device*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001432 wptStatus = wpalTimerInit( &gWDICb.wptResponseTimer,
1433 WDI_ResponseTimerCB,
Jeff Johnson295189b2012-06-20 16:38:30 -07001434 &gWDICb);
1435 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1436 {
1437 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1438 "%s: Failed to init response timer, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001439 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001440 goto fail_timer;
1441 }
1442
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -07001443 wptStatus = wpalTimerInit( &gWDICb.ssrTimer,
1444 WDI_SsrTimerCB,
1445 &gWDICb);
1446 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1447 {
1448 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1449 "%s: Failed to init SSR timer, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001450 __func__, wptStatus);
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -07001451 goto fail_timer2;
1452 }
Jeff Johnson295189b2012-06-20 16:38:30 -07001453 /* Initialize the WDI Pending Request Queue*/
1454 wptStatus = wpal_list_init(&(gWDICb.wptPendingQueue));
1455 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1456 {
1457 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1458 "%s: Failed to init pending request queue, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001459 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001460 goto fail_pend_queue;
1461 }
1462
1463 /*Init WDI Pending Assoc Id Queue */
1464 wptStatus = wpal_list_init(&(gWDICb.wptPendingAssocSessionIdQueue));
1465 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1466 {
1467 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1468 "%s: Failed to init assoc session queue, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001469 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001470 goto fail_assoc_queue;
1471 }
1472
1473 /*Initialize the BSS sessions pending Queue */
1474 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
1475 {
1476 wptStatus = wpal_list_init(&(gWDICb.aBSSSessions[i].wptPendingQueue));
1477 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1478 {
1479 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1480 "%s: Failed to init BSS %d pending queue, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001481 __func__, i, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001482 goto fail_bss_queue;
1483 }
1484 }
1485
1486 /*Indicate the control block is sufficiently initialized for callbacks*/
1487 gWDICb.magic = WDI_CONTROL_BLOCK_MAGIC;
1488
1489 /*------------------------------------------------------------------------
1490 Initialize the Data Path Utility Module
1491 ------------------------------------------------------------------------*/
1492 wdiStatus = WDI_DP_UtilsInit(&gWDICb);
1493 if ( WDI_STATUS_SUCCESS != wdiStatus )
1494 {
1495 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1496 "%s: Failed to initialize the DP Util Module, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001497 __func__, wdiStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001498 goto fail_dp_util_init;
1499 }
1500
1501 /* Init Set power state event */
1502 wptStatus = wpalEventInit(&gWDICb.setPowerStateEvent);
Jeff Johnsone7245742012-09-05 17:12:55 -07001503 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -07001504 {
1505 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1506 "%s: Failed to initialize power state event, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001507 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001508 goto fail_power_event;
1509 }
1510
1511 /* Init WCTS action event */
1512 wptStatus = wpalEventInit(&gWDICb.wctsActionEvent);
Jeff Johnsone7245742012-09-05 17:12:55 -07001513 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -07001514 {
1515 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1516 "%s: Failed to initialize WCTS action event, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001517 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001518 goto fail_wcts_event;
1519 }
1520
1521 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001522 Open the Transport Services for Control and Data
Jeff Johnson295189b2012-06-20 16:38:30 -07001523 ------------------------------------------------------------------------*/
1524 wctsCBs.wctsNotifyCB = WDI_NotifyMsgCTSCB;
1525 wctsCBs.wctsNotifyCBData = &gWDICb;
Jeff Johnsone7245742012-09-05 17:12:55 -07001526 wctsCBs.wctsRxMsgCB = WDI_RXMsgCTSCB;
Jeff Johnson295189b2012-06-20 16:38:30 -07001527 wctsCBs.wctsRxMsgCBData = &gWDICb;
1528
Jeff Johnsone7245742012-09-05 17:12:55 -07001529 gWDICb.bCTOpened = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -07001530 gWDICb.wctsHandle = WCTS_OpenTransport( szTransportChName ,
Jeff Johnsone7245742012-09-05 17:12:55 -07001531 WDI_CT_CHANNEL_SIZE,
1532 &wctsCBs );
Jeff Johnson295189b2012-06-20 16:38:30 -07001533
1534 if ( NULL == gWDICb.wctsHandle )
1535 {
1536 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001537 "%s: Failed to open WCTS transport", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001538 goto fail_wcts_open;
1539 }
1540
1541 gWDICb.driverMode = (tDriverType)driverType;
1542 /* FTM mode not need to open Transport Driver */
1543 if(eDRIVER_TYPE_MFG != (tDriverType)driverType)
Jeff Johnsone7245742012-09-05 17:12:55 -07001544 {
Jeff Johnson295189b2012-06-20 16:38:30 -07001545 /*------------------------------------------------------------------------
1546 Open the Data Transport
1547 ------------------------------------------------------------------------*/
1548 if(eWLAN_PAL_STATUS_SUCCESS != WDTS_openTransport(&gWDICb))
1549 {
1550 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001551 "%s: Failed to open the DT Transport", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001552 goto fail_wdts_open;
1553 }
1554 }
1555
1556 /*The WDI is initialized - set state to init */
Jeff Johnsone7245742012-09-05 17:12:55 -07001557 gWDICb.uGlobalState = WDI_INIT_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07001558
1559 /*Send the context as a ptr to the global WDI Control Block*/
1560 *ppWDIGlobalCtx = &gWDICb;
1561
1562 /*Fill in the device capabilities*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001563 pWdiDevCapability->bFrameXtlSupported = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -07001564 pWdiDevCapability->ucMaxSTASupported = gWDICb.ucMaxStations;
1565 pWdiDevCapability->ucMaxBSSSupported = gWDICb.ucMaxBssids;
1566 return WDI_STATUS_SUCCESS;
1567
1568 /* ERROR handlers
1569 Undo everything that completed successfully */
1570
1571 fail_wdts_open:
1572 {
1573 wpt_status eventStatus;
1574
1575 /* Closing WCTS in this scenario is tricky since it has to close
1576 the SMD channel and then we get notified asynchronously when
1577 the channel has been closed. So we take some of the logic from
1578 the "normal" close procedure in WDI_Close()
1579 */
1580
1581 eventStatus = wpalEventReset(&gWDICb.wctsActionEvent);
Jeff Johnsone7245742012-09-05 17:12:55 -07001582 if ( eWLAN_PAL_STATUS_SUCCESS != eventStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -07001583 {
1584 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001585 "%s: Failed to reset WCTS action event", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001586 }
1587
1588 WCTS_CloseTransport(gWDICb.wctsHandle);
1589
1590 /* Wait for WCTS to close the control transport. If we were able
1591 to reset the event flag, then we'll wait for the event,
1592 otherwise we'll wait for a maximum amount of time required for
1593 the channel to be closed */
1594 if ( eWLAN_PAL_STATUS_SUCCESS == eventStatus )
1595 {
Jeff Johnsone7245742012-09-05 17:12:55 -07001596 eventStatus = wpalEventWait(&gWDICb.wctsActionEvent,
Jeff Johnson295189b2012-06-20 16:38:30 -07001597 WDI_WCTS_ACTION_TIMEOUT);
1598 if ( eWLAN_PAL_STATUS_SUCCESS != eventStatus )
1599 {
1600 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001601 "%s: Failed to wait on WCTS action event", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001602 }
1603 }
1604 else
1605 {
1606 wpalSleep(WDI_WCTS_ACTION_TIMEOUT);
1607 }
1608 }
1609 fail_wcts_open:
1610 wpalEventDelete(&gWDICb.wctsActionEvent);
1611 fail_wcts_event:
1612 wpalEventDelete(&gWDICb.setPowerStateEvent);
1613 fail_power_event:
1614 WDI_DP_UtilsExit(&gWDICb);
1615 fail_dp_util_init:
1616 gWDICb.magic = 0;
1617 fail_bss_queue:
1618 /* entries 0 thru i-1 were successfully initialized */
1619 while (0 < i)
1620 {
1621 i--;
1622 wpal_list_destroy(&(gWDICb.aBSSSessions[i].wptPendingQueue));
1623 }
1624 wpal_list_destroy(&(gWDICb.wptPendingAssocSessionIdQueue));
1625 fail_assoc_queue:
1626 wpal_list_destroy(&(gWDICb.wptPendingQueue));
1627 fail_pend_queue:
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -07001628 wpalTimerDelete(&gWDICb.ssrTimer);
1629 fail_timer2:
Jeff Johnson295189b2012-06-20 16:38:30 -07001630 wpalTimerDelete(&gWDICb.wptResponseTimer);
1631 fail_timer:
1632 wpalMutexDelete(&gWDICb.wptMutex);
1633 fail_mutex:
1634 wpalClose(gWDICb.pPALContext);
1635 fail_wpalOpen:
1636 WDI_STATableClose(&gWDICb);
1637 fail_STATableInit:
1638 gWDIInitialized = eWLAN_PAL_FALSE;
1639
1640 return WDI_STATUS_E_FAILURE;
1641
1642}/*WDI_Init*/;
1643
1644/**
1645 @brief WDI_Start will be called when the upper MAC is ready to
1646 commence operation with the WLAN Device. Upon the call
1647 of this API the WLAN DAL will pack and send a HAL Start
1648 message to the lower RIVA sub-system if the SMD channel
1649 has been fully opened and the RIVA subsystem is up.
1650
1651 If the RIVA sub-system is not yet up and running DAL
1652 will queue the request for Open and will wait for the
1653 SMD notification before attempting to send down the
Jeff Johnsone7245742012-09-05 17:12:55 -07001654 message to HAL.
Jeff Johnson295189b2012-06-20 16:38:30 -07001655
1656 WDI_Init must have been called.
1657
Jeff Johnsone7245742012-09-05 17:12:55 -07001658 @param wdiStartParams: the start parameters as specified by
Jeff Johnson295189b2012-06-20 16:38:30 -07001659 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07001660
Jeff Johnson295189b2012-06-20 16:38:30 -07001661 wdiStartRspCb: callback for passing back the response of
1662 the start operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07001663
Jeff Johnson295189b2012-06-20 16:38:30 -07001664 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07001665 callback
1666
Jeff Johnson295189b2012-06-20 16:38:30 -07001667 @see WDI_Start
1668 @return Result of the function call
1669*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001670WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07001671WDI_Start
1672(
1673 WDI_StartReqParamsType* pwdiStartParams,
1674 WDI_StartRspCb wdiStartRspCb,
1675 void* pUserData
1676)
1677{
1678 WDI_EventInfoType wdiEventData;
1679 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
1680
1681 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001682 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07001683 ------------------------------------------------------------------------*/
1684 if ( eWLAN_PAL_FALSE == gWDIInitialized )
1685 {
1686 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1687 "WDI API call before module is initialized - Fail request");
1688
Jeff Johnsone7245742012-09-05 17:12:55 -07001689 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07001690 }
1691
1692 /*------------------------------------------------------------------------
1693 Fill in Event data and post to the Main FSM
1694 ------------------------------------------------------------------------*/
1695 wdiEventData.wdiRequest = WDI_START_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07001696 wdiEventData.pEventData = pwdiStartParams;
1697 wdiEventData.uEventDataSize = sizeof(*pwdiStartParams);
1698 wdiEventData.pCBfnc = wdiStartRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07001699 wdiEventData.pUserData = pUserData;
1700
1701 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
1702
1703}/*WDI_Start*/
1704
1705/**
1706 @brief WDI_Stop will be called when the upper MAC is ready to
1707 stop any operation with the WLAN Device. Upon the call
1708 of this API the WLAN DAL will pack and send a HAL Stop
1709 message to the lower RIVA sub-system if the DAL Core is
1710 in started state.
1711
1712 In state BUSY this request will be queued.
Jeff Johnsone7245742012-09-05 17:12:55 -07001713
1714 Request will not be accepted in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07001715
1716 WDI_Start must have been called.
1717
Jeff Johnsone7245742012-09-05 17:12:55 -07001718 @param wdiStopParams: the stop parameters as specified by
Jeff Johnson295189b2012-06-20 16:38:30 -07001719 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07001720
Jeff Johnson295189b2012-06-20 16:38:30 -07001721 wdiStopRspCb: callback for passing back the response of
1722 the stop operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07001723
Jeff Johnson295189b2012-06-20 16:38:30 -07001724 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07001725 callback
1726
Jeff Johnson295189b2012-06-20 16:38:30 -07001727 @see WDI_Start
1728 @return Result of the function call
1729*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001730WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07001731WDI_Stop
1732(
1733 WDI_StopReqParamsType* pwdiStopParams,
1734 WDI_StopRspCb wdiStopRspCb,
1735 void* pUserData
1736)
1737{
1738 WDI_EventInfoType wdiEventData;
Jeff Johnson43971f52012-07-17 12:26:56 -07001739 WDI_ControlBlockType* pWDICtx = &gWDICb;
Jeff Johnson295189b2012-06-20 16:38:30 -07001740 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
1741
1742 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001743 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07001744 ------------------------------------------------------------------------*/
1745 if ( eWLAN_PAL_FALSE == gWDIInitialized )
1746 {
1747 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1748 "WDI API call before module is initialized - Fail request");
1749
Jeff Johnsone7245742012-09-05 17:12:55 -07001750 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07001751 }
1752
Jeff Johnson43971f52012-07-17 12:26:56 -07001753 /*Access to the global state must be locked before cleaning */
1754 wpalMutexAcquire(&pWDICtx->wptMutex);
1755
1756 /*Clear all pending request*/
1757 WDI_ClearPendingRequests(pWDICtx);
1758
1759 /*We have completed cleaning unlock now*/
1760 wpalMutexRelease(&pWDICtx->wptMutex);
1761
Jeff Johnson295189b2012-06-20 16:38:30 -07001762 /* Free the global variables */
1763 wpalMemoryFree(gpHostWlanFeatCaps);
1764 wpalMemoryFree(gpFwWlanFeatCaps);
Madan Mohan Koyyalamudi3352adb2012-09-28 14:57:24 -07001765 gpHostWlanFeatCaps = NULL;
1766 gpFwWlanFeatCaps = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07001767
1768 /*------------------------------------------------------------------------
1769 Fill in Event data and post to the Main FSM
1770 ------------------------------------------------------------------------*/
1771 wdiEventData.wdiRequest = WDI_STOP_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07001772 wdiEventData.pEventData = pwdiStopParams;
1773 wdiEventData.uEventDataSize = sizeof(*pwdiStopParams);
1774 wdiEventData.pCBfnc = wdiStopRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07001775 wdiEventData.pUserData = pUserData;
1776
1777 return WDI_PostMainEvent(&gWDICb, WDI_STOP_EVENT, &wdiEventData);
1778
1779}/*WDI_Stop*/
1780
1781
1782
1783/**
Jeff Johnsone7245742012-09-05 17:12:55 -07001784 @brief WDI_Close will be called when the upper MAC no longer
Jeff Johnson295189b2012-06-20 16:38:30 -07001785 needs to interact with DAL. DAL will free its control
1786 block.
Jeff Johnsone7245742012-09-05 17:12:55 -07001787
1788 It is only accepted in state STOPPED.
Jeff Johnson295189b2012-06-20 16:38:30 -07001789
1790 WDI_Stop must have been called.
1791
1792 @param none
Jeff Johnsone7245742012-09-05 17:12:55 -07001793
Jeff Johnson295189b2012-06-20 16:38:30 -07001794 @see WDI_Stop
1795 @return Result of the function call
1796*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001797WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07001798WDI_Close
1799(
1800 void
1801)
1802{
1803 wpt_uint8 i;
1804 WDI_EventInfoType wdiEventData;
1805 wpt_status wptStatus;
1806 wpt_status eventStatus;
1807 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
1808
1809 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001810 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07001811 ------------------------------------------------------------------------*/
1812 if ( eWLAN_PAL_FALSE == gWDIInitialized )
1813 {
1814 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1815 "WDI API call before module is initialized - Fail request");
1816
Jeff Johnsone7245742012-09-05 17:12:55 -07001817 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07001818 }
1819
1820 /*Reset WCTS action event prior to posting the WDI_CLOSE_REQ
1821 (the control transport will be closed by the FSM and we'll want
1822 to wait until that completes)*/
1823 eventStatus = wpalEventReset(&gWDICb.wctsActionEvent);
Jeff Johnsone7245742012-09-05 17:12:55 -07001824 if ( eWLAN_PAL_STATUS_SUCCESS != eventStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -07001825 {
1826 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001827 "%s: Failed to reset WCTS action event", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001828 /* fall through and try to finish closing via the FSM */
1829 }
1830
1831 /*------------------------------------------------------------------------
1832 Fill in Event data and post to the Main FSM
1833 ------------------------------------------------------------------------*/
1834 wdiEventData.wdiRequest = WDI_CLOSE_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07001835 wdiEventData.pEventData = NULL;
1836 wdiEventData.uEventDataSize = 0;
1837 wdiEventData.pCBfnc = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07001838 wdiEventData.pUserData = NULL;
1839
1840 gWDIInitialized = eWLAN_PAL_FALSE;
1841
1842 wptStatus = WDI_PostMainEvent(&gWDICb, WDI_CLOSE_EVENT, &wdiEventData);
1843
1844 /*Wait for WCTS to close the control transport
1845 (but only if we were able to reset the event flag*/
1846 if ( eWLAN_PAL_STATUS_SUCCESS == eventStatus )
1847 {
Jeff Johnsone7245742012-09-05 17:12:55 -07001848 eventStatus = wpalEventWait(&gWDICb.wctsActionEvent,
Jeff Johnson295189b2012-06-20 16:38:30 -07001849 WDI_WCTS_ACTION_TIMEOUT);
1850 if ( eWLAN_PAL_STATUS_SUCCESS != eventStatus )
1851 {
1852 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001853 "%s: Failed to wait on WCTS action event", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001854 }
1855 }
1856
1857 /* Destroy the WCTS action event */
1858 wptStatus = wpalEventDelete(&gWDICb.wctsActionEvent);
1859 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1860 {
1861 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
1862 "WDI Close failed to destroy an event");
Jeff Johnsone7245742012-09-05 17:12:55 -07001863 WDI_ASSERT(0);
Jeff Johnson295189b2012-06-20 16:38:30 -07001864 }
1865
1866 /* Destroy the Set Power State event */
1867 wptStatus = wpalEventDelete(&gWDICb.setPowerStateEvent);
1868 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1869 {
1870 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
1871 "WDI Close failed to destroy an event");
1872
Jeff Johnsone7245742012-09-05 17:12:55 -07001873 WDI_ASSERT(0);
Jeff Johnson295189b2012-06-20 16:38:30 -07001874 }
1875
1876 /*------------------------------------------------------------------------
1877 Closes the Data Path Utility Module
1878 ------------------------------------------------------------------------*/
1879 if ( WDI_STATUS_SUCCESS != WDI_DP_UtilsExit(&gWDICb))
1880 {
1881 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
1882 "WDI Init failed to close the DP Util Module");
1883
Jeff Johnsone7245742012-09-05 17:12:55 -07001884 WDI_ASSERT(0);
Jeff Johnson295189b2012-06-20 16:38:30 -07001885 }
1886
1887 /*destroy the BSS sessions pending Queue */
1888 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
1889 {
1890 wpal_list_destroy(&(gWDICb.aBSSSessions[i].wptPendingQueue));
1891 }
1892
1893 /* destroy the WDI Pending Assoc Id Request Queue*/
1894 wpal_list_destroy(&(gWDICb.wptPendingAssocSessionIdQueue));
1895
1896 /* destroy the WDI Pending Request Queue*/
1897 wpal_list_destroy(&(gWDICb.wptPendingQueue));
Jeff Johnsone7245742012-09-05 17:12:55 -07001898
Jeff Johnson295189b2012-06-20 16:38:30 -07001899 /*destroy the response timer */
1900 wptStatus = wpalTimerDelete( &gWDICb.wptResponseTimer);
1901
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -07001902 /*destroy the SSR timer */
1903 wptStatus = wpalTimerDelete( &gWDICb.ssrTimer);
1904
Jeff Johnson295189b2012-06-20 16:38:30 -07001905 /*invalidate the main synchro mutex */
1906 wptStatus = wpalMutexDelete(&gWDICb.wptMutex);
1907 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1908 {
1909 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1910 "Failed to delete mutex %d", wptStatus);
1911 WDI_ASSERT(0);
1912 }
1913
1914 /*Clear control block. note that this will clear the "magic"
1915 which will inhibit all asynchronous callbacks*/
1916 WDI_CleanCB(&gWDICb);
1917
1918 return wptStatus;
1919
1920}/*WDI_Close*/
1921
1922/**
1923 @brief WDI_Shutdown will be called during 'SSR shutdown' operation.
1924 This will do most of the WDI stop & close
1925 operations without doing any handshake with Riva
1926
1927 This will also make sure that the control transport
1928 will NOT be closed.
1929
1930 This request will not be queued.
1931
1932
1933 WDI_Start must have been called.
1934
1935 @param closeTransport: Close control channel if this is set
1936
1937 @return Result of the function call
1938*/
1939WDI_Status
1940WDI_Shutdown
1941(
1942 wpt_boolean closeTransport
1943)
1944{
1945 WDI_EventInfoType wdiEventData;
1946 wpt_status wptStatus;
1947 int i = 0;
1948 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
1949
1950 /*------------------------------------------------------------------------
1951 Sanity Check
1952 ------------------------------------------------------------------------*/
1953 if ( eWLAN_PAL_FALSE == gWDIInitialized )
1954 {
1955 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1956 "WDI API call before module is initialized - Fail request");
1957
1958 return WDI_STATUS_E_NOT_ALLOWED;
1959 }
1960
1961 /*------------------------------------------------------------------------
1962 Fill in Event data and post to the Main FSM
1963 ------------------------------------------------------------------------*/
1964 wdiEventData.wdiRequest = WDI_SHUTDOWN_REQ;
1965 wdiEventData.pEventData = NULL;
1966 wdiEventData.uEventDataSize = 0;
1967
1968 /* Shutdown will not be queued, if the state is busy timer will be
1969 * stopped & this message will be processed.*/
1970 wptStatus = WDI_PostMainEvent(&gWDICb, WDI_SHUTDOWN_EVENT, &wdiEventData);
1971 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1972 {
1973 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001974 "%s: Failed to process shutdown event", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001975 }
1976 /* Destroy the Set Power State event */
1977 wptStatus = wpalEventDelete(&gWDICb.setPowerStateEvent);
1978 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1979 {
1980 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
1981 "WDI Close failed to destroy an event");
1982
1983 WDI_ASSERT(0);
1984 }
1985 /*------------------------------------------------------------------------
1986 Closes the Data Path Utility Module
1987 ------------------------------------------------------------------------*/
1988 if ( WDI_STATUS_SUCCESS != WDI_DP_UtilsExit(&gWDICb))
1989 {
1990 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
1991 "WDI Init failed to close the DP Util Module");
1992
1993 WDI_ASSERT(0);
1994 }
1995 if ( closeTransport )
1996 {
1997 /* Close control transport, called from module unload */
1998 WCTS_CloseTransport(gWDICb.wctsHandle);
1999 }
Madan Mohan Koyyalamudifab2a7e2012-09-28 15:20:00 -07002000 else
2001 {
Madan Mohan Koyyalamudi8b7f1e62012-10-05 14:56:51 -07002002 /* Riva is crashed then SMD is already closed so cleaning all
Madan Mohan Koyyalamudifab2a7e2012-09-28 15:20:00 -07002003 the pending messages in the transport queue */
2004 WCTS_ClearPendingQueue(gWDICb.wctsHandle);
2005 }
Jeff Johnson295189b2012-06-20 16:38:30 -07002006 /*destroy the BSS sessions pending Queue */
2007 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
2008 {
2009 wpal_list_destroy(&(gWDICb.aBSSSessions[i].wptPendingQueue));
2010 }
2011
2012 /* destroy the WDI Pending Assoc Id Request Queue*/
2013 wpal_list_destroy(&(gWDICb.wptPendingAssocSessionIdQueue));
2014 /* destroy the WDI Pending Request Queue*/
2015 wpal_list_destroy(&(gWDICb.wptPendingQueue));
2016 /*destroy the response timer */
2017 wptStatus = wpalTimerDelete( &gWDICb.wptResponseTimer);
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -07002018 /*destroy the SSR timer */
2019 wptStatus = wpalTimerDelete( &gWDICb.ssrTimer);
Jeff Johnson295189b2012-06-20 16:38:30 -07002020
2021 /*invalidate the main synchro mutex */
2022 wptStatus = wpalMutexDelete(&gWDICb.wptMutex);
2023 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
2024 {
2025 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07002026 "%s: Failed to delete mutex %d", __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07002027 WDI_ASSERT(0);
2028 }
Madan Mohan Koyyalamudi3513bf52012-09-18 17:35:53 -07002029 /* Free the global variables */
2030 wpalMemoryFree(gpHostWlanFeatCaps);
2031 wpalMemoryFree(gpFwWlanFeatCaps);
Madan Mohan Koyyalamudi3352adb2012-09-28 14:57:24 -07002032 gpHostWlanFeatCaps = NULL;
2033 gpFwWlanFeatCaps = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07002034 /*Clear control block. note that this will clear the "magic"
2035 which will inhibit all asynchronous callbacks*/
2036 WDI_CleanCB(&gWDICb);
2037 return wptStatus;
2038
2039}/*WDI_Shutdown*/
2040
2041
Jeff Johnsone7245742012-09-05 17:12:55 -07002042/*========================================================================
2043
Jeff Johnson295189b2012-06-20 16:38:30 -07002044 SCAN APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07002045
Jeff Johnson295189b2012-06-20 16:38:30 -07002046==========================================================================*/
2047
2048/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002049 @brief WDI_InitScanReq will be called when the upper MAC wants
Jeff Johnson295189b2012-06-20 16:38:30 -07002050 the WLAN Device to get ready for a scan procedure. Upon
2051 the call of this API the WLAN DAL will pack and send a
2052 HAL Init Scan request message to the lower RIVA
2053 sub-system if DAL is in state STARTED.
2054
2055 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002056 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002057
2058 WDI_Start must have been called.
2059
2060 @param wdiInitScanParams: the init scan parameters as specified
2061 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002062
Jeff Johnson295189b2012-06-20 16:38:30 -07002063 wdiInitScanRspCb: callback for passing back the response
2064 of the init scan operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002065
Jeff Johnson295189b2012-06-20 16:38:30 -07002066 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002067 callback
2068
Jeff Johnson295189b2012-06-20 16:38:30 -07002069 @see WDI_Start
2070 @return Result of the function call
2071*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002072WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002073WDI_InitScanReq
2074(
2075 WDI_InitScanReqParamsType* pwdiInitScanParams,
2076 WDI_InitScanRspCb wdiInitScanRspCb,
2077 void* pUserData
2078)
2079{
2080 WDI_EventInfoType wdiEventData;
2081 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2082
2083 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002084 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002085 ------------------------------------------------------------------------*/
2086 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2087 {
2088 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2089 "WDI API call before module is initialized - Fail request");
2090
Jeff Johnsone7245742012-09-05 17:12:55 -07002091 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002092 }
2093
2094 /*------------------------------------------------------------------------
2095 Fill in Event data and post to the Main FSM
2096 ------------------------------------------------------------------------*/
2097 wdiEventData.wdiRequest = WDI_INIT_SCAN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002098 wdiEventData.pEventData = pwdiInitScanParams;
2099 wdiEventData.uEventDataSize = sizeof(*pwdiInitScanParams);
2100 wdiEventData.pCBfnc = wdiInitScanRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002101 wdiEventData.pUserData = pUserData;
2102
2103 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2104
2105}/*WDI_InitScanReq*/
2106
2107/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002108 @brief WDI_StartScanReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07002109 wishes to change the Scan channel on the WLAN Device.
2110 Upon the call of this API the WLAN DAL will pack and
2111 send a HAL Start Scan request message to the lower RIVA
2112 sub-system if DAL is in state STARTED.
2113
2114 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002115 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002116
2117 WDI_InitScanReq must have been called.
2118
Jeff Johnsone7245742012-09-05 17:12:55 -07002119 @param wdiStartScanParams: the start scan parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002120 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002121
Jeff Johnson295189b2012-06-20 16:38:30 -07002122 wdiStartScanRspCb: callback for passing back the
2123 response of the start scan operation received from the
2124 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002125
Jeff Johnson295189b2012-06-20 16:38:30 -07002126 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002127 callback
2128
Jeff Johnson295189b2012-06-20 16:38:30 -07002129 @see WDI_InitScanReq
2130 @return Result of the function call
2131*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002132WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002133WDI_StartScanReq
2134(
2135 WDI_StartScanReqParamsType* pwdiStartScanParams,
2136 WDI_StartScanRspCb wdiStartScanRspCb,
2137 void* pUserData
2138)
2139{
2140 WDI_EventInfoType wdiEventData;
2141 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2142
2143 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002144 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002145 ------------------------------------------------------------------------*/
2146 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2147 {
2148 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2149 "WDI API call before module is initialized - Fail request");
2150
Jeff Johnsone7245742012-09-05 17:12:55 -07002151 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002152 }
2153
2154 /*------------------------------------------------------------------------
2155 Fill in Event data and post to the Main FSM
2156 ------------------------------------------------------------------------*/
2157 wdiEventData.wdiRequest = WDI_START_SCAN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002158 wdiEventData.pEventData = pwdiStartScanParams;
2159 wdiEventData.uEventDataSize = sizeof(*pwdiStartScanParams);
2160 wdiEventData.pCBfnc = wdiStartScanRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002161 wdiEventData.pUserData = pUserData;
2162
2163 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2164
2165}/*WDI_StartScanReq*/
2166
2167
2168/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002169 @brief WDI_EndScanReq will be called when the upper MAC is
Jeff Johnson295189b2012-06-20 16:38:30 -07002170 wants to end scanning for a particular channel that it
2171 had set before by calling Scan Start on the WLAN Device.
2172 Upon the call of this API the WLAN DAL will pack and
2173 send a HAL End Scan request message to the lower RIVA
2174 sub-system if DAL is in state STARTED.
2175
2176 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002177 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002178
2179 WDI_StartScanReq must have been called.
2180
Jeff Johnsone7245742012-09-05 17:12:55 -07002181 @param wdiEndScanParams: the end scan parameters as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07002182 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002183
Jeff Johnson295189b2012-06-20 16:38:30 -07002184 wdiEndScanRspCb: callback for passing back the response
2185 of the end scan operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002186
Jeff Johnson295189b2012-06-20 16:38:30 -07002187 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002188 callback
2189
Jeff Johnson295189b2012-06-20 16:38:30 -07002190 @see WDI_StartScanReq
2191 @return Result of the function call
2192*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002193WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002194WDI_EndScanReq
2195(
2196 WDI_EndScanReqParamsType* pwdiEndScanParams,
2197 WDI_EndScanRspCb wdiEndScanRspCb,
2198 void* pUserData
2199)
2200{
2201 WDI_EventInfoType wdiEventData;
2202 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2203
2204 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002205 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002206 ------------------------------------------------------------------------*/
2207 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2208 {
2209 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2210 "WDI API call before module is initialized - Fail request");
2211
Jeff Johnsone7245742012-09-05 17:12:55 -07002212 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002213 }
2214
2215 /*------------------------------------------------------------------------
2216 Fill in Event data and post to the Main FSM
2217 ------------------------------------------------------------------------*/
2218 wdiEventData.wdiRequest = WDI_END_SCAN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002219 wdiEventData.pEventData = pwdiEndScanParams;
2220 wdiEventData.uEventDataSize = sizeof(*pwdiEndScanParams);
2221 wdiEventData.pCBfnc = wdiEndScanRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002222 wdiEventData.pUserData = pUserData;
2223
2224 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2225
2226}/*WDI_EndScanReq*/
2227
2228
2229/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002230 @brief WDI_FinishScanReq will be called when the upper MAC has
Jeff Johnson295189b2012-06-20 16:38:30 -07002231 completed the scan process on the WLAN Device. Upon the
2232 call of this API the WLAN DAL will pack and send a HAL
2233 Finish Scan Request request message to the lower RIVA
2234 sub-system if DAL is in state STARTED.
2235
2236 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002237 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002238
2239 WDI_InitScanReq must have been called.
2240
Jeff Johnsone7245742012-09-05 17:12:55 -07002241 @param wdiFinishScanParams: the finish scan parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002242 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002243
Jeff Johnson295189b2012-06-20 16:38:30 -07002244 wdiFinishScanRspCb: callback for passing back the
2245 response of the finish scan operation received from the
2246 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002247
Jeff Johnson295189b2012-06-20 16:38:30 -07002248 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002249 callback
2250
Jeff Johnson295189b2012-06-20 16:38:30 -07002251 @see WDI_InitScanReq
2252 @return Result of the function call
2253*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002254WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002255WDI_FinishScanReq
2256(
2257 WDI_FinishScanReqParamsType* pwdiFinishScanParams,
2258 WDI_FinishScanRspCb wdiFinishScanRspCb,
2259 void* pUserData
2260)
2261{
2262 WDI_EventInfoType wdiEventData;
2263 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2264
2265 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002266 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002267 ------------------------------------------------------------------------*/
2268 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2269 {
2270 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2271 "WDI API call before module is initialized - Fail request");
2272
Jeff Johnsone7245742012-09-05 17:12:55 -07002273 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002274 }
2275
2276 /*------------------------------------------------------------------------
2277 Fill in Event data and post to the Main FSM
2278 ------------------------------------------------------------------------*/
2279 wdiEventData.wdiRequest = WDI_FINISH_SCAN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002280 wdiEventData.pEventData = pwdiFinishScanParams;
2281 wdiEventData.uEventDataSize = sizeof(*pwdiFinishScanParams);
2282 wdiEventData.pCBfnc = wdiFinishScanRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002283 wdiEventData.pUserData = pUserData;
2284
2285 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2286
2287}/*WDI_FinishScanReq*/
2288
Jeff Johnsone7245742012-09-05 17:12:55 -07002289/*========================================================================
2290
Jeff Johnson295189b2012-06-20 16:38:30 -07002291 ASSOCIATION APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07002292
Jeff Johnson295189b2012-06-20 16:38:30 -07002293==========================================================================*/
2294
2295/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002296 @brief WDI_JoinReq will be called when the upper MAC is ready
Jeff Johnson295189b2012-06-20 16:38:30 -07002297 to start an association procedure to a BSS. Upon the
2298 call of this API the WLAN DAL will pack and send a HAL
2299 Join request message to the lower RIVA sub-system if
2300 DAL is in state STARTED.
2301
2302 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002303 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002304
2305 WDI_Start must have been called.
2306
Jeff Johnsone7245742012-09-05 17:12:55 -07002307 @param wdiJoinParams: the join parameters as specified by
Jeff Johnson295189b2012-06-20 16:38:30 -07002308 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002309
Jeff Johnson295189b2012-06-20 16:38:30 -07002310 wdiJoinRspCb: callback for passing back the response of
2311 the join operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002312
Jeff Johnson295189b2012-06-20 16:38:30 -07002313 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002314 callback
2315
Jeff Johnson295189b2012-06-20 16:38:30 -07002316 @see WDI_Start
2317 @return Result of the function call
2318*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002319WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002320WDI_JoinReq
2321(
2322 WDI_JoinReqParamsType* pwdiJoinParams,
2323 WDI_JoinRspCb wdiJoinRspCb,
2324 void* pUserData
2325)
2326{
2327 WDI_EventInfoType wdiEventData;
2328 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2329
2330 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002331 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002332 ------------------------------------------------------------------------*/
2333 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2334 {
2335 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2336 "WDI API call before module is initialized - Fail request");
2337
Jeff Johnsone7245742012-09-05 17:12:55 -07002338 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002339 }
2340
2341 /*------------------------------------------------------------------------
2342 Fill in Event data and post to the Main FSM
2343 ------------------------------------------------------------------------*/
2344 wdiEventData.wdiRequest = WDI_JOIN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002345 wdiEventData.pEventData = pwdiJoinParams;
2346 wdiEventData.uEventDataSize = sizeof(*pwdiJoinParams);
2347 wdiEventData.pCBfnc = wdiJoinRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002348 wdiEventData.pUserData = pUserData;
2349
2350 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2351
2352}/*WDI_JoinReq*/
2353
2354/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002355 @brief WDI_ConfigBSSReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07002356 wishes to configure the newly acquired or in process of
2357 being acquired BSS to the HW . Upon the call of this API
2358 the WLAN DAL will pack and send a HAL Config BSS request
2359 message to the lower RIVA sub-system if DAL is in state
2360 STARTED.
2361
2362 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002363 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002364
2365 WDI_JoinReq must have been called.
2366
Jeff Johnsone7245742012-09-05 17:12:55 -07002367 @param wdiConfigBSSParams: the config BSS parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002368 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002369
Jeff Johnson295189b2012-06-20 16:38:30 -07002370 wdiConfigBSSRspCb: callback for passing back the
2371 response of the config BSS operation received from the
2372 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002373
Jeff Johnson295189b2012-06-20 16:38:30 -07002374 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002375 callback
2376
Jeff Johnson295189b2012-06-20 16:38:30 -07002377 @see WDI_JoinReq
2378 @return Result of the function call
2379*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002380WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002381WDI_ConfigBSSReq
2382(
2383 WDI_ConfigBSSReqParamsType* pwdiConfigBSSParams,
2384 WDI_ConfigBSSRspCb wdiConfigBSSRspCb,
2385 void* pUserData
2386)
2387{
2388 WDI_EventInfoType wdiEventData;
2389 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2390
2391 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002392 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002393 ------------------------------------------------------------------------*/
2394 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2395 {
2396 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2397 "WDI API call before module is initialized - Fail request");
2398
Jeff Johnsone7245742012-09-05 17:12:55 -07002399 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002400 }
2401
2402 /*------------------------------------------------------------------------
2403 Fill in Event data and post to the Main FSM
2404 ------------------------------------------------------------------------*/
2405 wdiEventData.wdiRequest = WDI_CONFIG_BSS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002406 wdiEventData.pEventData = pwdiConfigBSSParams;
2407 wdiEventData.uEventDataSize = sizeof(*pwdiConfigBSSParams);
2408 wdiEventData.pCBfnc = wdiConfigBSSRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002409 wdiEventData.pUserData = pUserData;
2410
2411 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2412
2413}/*WDI_ConfigBSSReq*/
2414
2415/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002416 @brief WDI_DelBSSReq will be called when the upper MAC is
Jeff Johnson295189b2012-06-20 16:38:30 -07002417 disassociating from the BSS and wishes to notify HW.
2418 Upon the call of this API the WLAN DAL will pack and
2419 send a HAL Del BSS request message to the lower RIVA
2420 sub-system if DAL is in state STARTED.
2421
2422 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002423 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002424
2425 WDI_ConfigBSSReq or WDI_PostAssocReq must have been called.
2426
Jeff Johnsone7245742012-09-05 17:12:55 -07002427 @param wdiDelBSSParams: the del BSS parameters as specified by
Jeff Johnson295189b2012-06-20 16:38:30 -07002428 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002429
Jeff Johnson295189b2012-06-20 16:38:30 -07002430 wdiDelBSSRspCb: callback for passing back the response
2431 of the del bss operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002432
Jeff Johnson295189b2012-06-20 16:38:30 -07002433 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002434 callback
2435
2436 @see WDI_ConfigBSSReq, WDI_PostAssocReq
Jeff Johnson295189b2012-06-20 16:38:30 -07002437 @return Result of the function call
2438*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002439WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002440WDI_DelBSSReq
2441(
2442 WDI_DelBSSReqParamsType* pwdiDelBSSParams,
2443 WDI_DelBSSRspCb wdiDelBSSRspCb,
2444 void* pUserData
2445)
2446{
2447 WDI_EventInfoType wdiEventData;
2448 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2449
2450 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002451 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002452 ------------------------------------------------------------------------*/
2453 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2454 {
2455 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2456 "WDI API call before module is initialized - Fail request");
2457
Jeff Johnsone7245742012-09-05 17:12:55 -07002458 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002459 }
2460
2461 /*------------------------------------------------------------------------
2462 Fill in Event data and post to the Main FSM
2463 ------------------------------------------------------------------------*/
2464 wdiEventData.wdiRequest = WDI_DEL_BSS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002465 wdiEventData.pEventData = pwdiDelBSSParams;
2466 wdiEventData.uEventDataSize = sizeof(*pwdiDelBSSParams);
2467 wdiEventData.pCBfnc = wdiDelBSSRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002468 wdiEventData.pUserData = pUserData;
2469
2470 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2471
2472}/*WDI_DelBSSReq*/
2473
2474/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002475 @brief WDI_PostAssocReq will be called when the upper MAC has
Jeff Johnson295189b2012-06-20 16:38:30 -07002476 associated to a BSS and wishes to configure HW for
2477 associated state. Upon the call of this API the WLAN DAL
2478 will pack and send a HAL Post Assoc request message to
2479 the lower RIVA sub-system if DAL is in state STARTED.
2480
2481 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002482 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002483
2484 WDI_JoinReq must have been called.
2485
2486 @param wdiPostAssocReqParams: the assoc parameters as specified
2487 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002488
Jeff Johnson295189b2012-06-20 16:38:30 -07002489 wdiPostAssocRspCb: callback for passing back the
2490 response of the post assoc operation received from the
2491 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002492
Jeff Johnson295189b2012-06-20 16:38:30 -07002493 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002494 callback
2495
Jeff Johnson295189b2012-06-20 16:38:30 -07002496 @see WDI_JoinReq
2497 @return Result of the function call
2498*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002499WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002500WDI_PostAssocReq
2501(
2502 WDI_PostAssocReqParamsType* pwdiPostAssocReqParams,
2503 WDI_PostAssocRspCb wdiPostAssocRspCb,
2504 void* pUserData
2505)
2506{
2507 WDI_EventInfoType wdiEventData;
2508 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2509
2510 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002511 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002512 ------------------------------------------------------------------------*/
2513 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2514 {
2515 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2516 "WDI API call before module is initialized - Fail request");
2517
Jeff Johnsone7245742012-09-05 17:12:55 -07002518 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002519 }
2520
2521 /*------------------------------------------------------------------------
2522 Fill in Event data and post to the Main FSM
2523 ------------------------------------------------------------------------*/
2524 wdiEventData.wdiRequest = WDI_POST_ASSOC_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002525 wdiEventData.pEventData = pwdiPostAssocReqParams;
2526 wdiEventData.uEventDataSize = sizeof(*pwdiPostAssocReqParams);
2527 wdiEventData.pCBfnc = wdiPostAssocRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002528 wdiEventData.pUserData = pUserData;
2529
2530 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2531
2532}/*WDI_PostAssocReq*/
2533
2534/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002535 @brief WDI_DelSTAReq will be called when the upper MAC when an
Jeff Johnson295189b2012-06-20 16:38:30 -07002536 association with another STA has ended and the station
2537 must be deleted from HW. Upon the call of this API the
2538 WLAN DAL will pack and send a HAL Del STA request
2539 message to the lower RIVA sub-system if DAL is in state
2540 STARTED.
2541
2542 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002543 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002544
2545 WDI_PostAssocReq must have been called.
2546
Jeff Johnsone7245742012-09-05 17:12:55 -07002547 @param wdiDelSTAParams: the Del STA parameters as specified by
Jeff Johnson295189b2012-06-20 16:38:30 -07002548 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002549
Jeff Johnson295189b2012-06-20 16:38:30 -07002550 wdiDelSTARspCb: callback for passing back the response
2551 of the del STA operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002552
Jeff Johnson295189b2012-06-20 16:38:30 -07002553 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002554 callback
2555
Jeff Johnson295189b2012-06-20 16:38:30 -07002556 @see WDI_PostAssocReq
2557 @return Result of the function call
2558*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002559WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002560WDI_DelSTAReq
2561(
2562 WDI_DelSTAReqParamsType* pwdiDelSTAParams,
2563 WDI_DelSTARspCb wdiDelSTARspCb,
2564 void* pUserData
2565)
2566{
2567 WDI_EventInfoType wdiEventData;
2568 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2569
2570 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002571 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002572 ------------------------------------------------------------------------*/
2573 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2574 {
2575 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2576 "WDI API call before module is initialized - Fail request");
2577
Jeff Johnsone7245742012-09-05 17:12:55 -07002578 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002579 }
2580
2581 /*------------------------------------------------------------------------
2582 Fill in Event data and post to the Main FSM
2583 ------------------------------------------------------------------------*/
2584 wdiEventData.wdiRequest = WDI_DEL_STA_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002585 wdiEventData.pEventData = pwdiDelSTAParams;
2586 wdiEventData.uEventDataSize = sizeof(*pwdiDelSTAParams);
2587 wdiEventData.pCBfnc = wdiDelSTARspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002588 wdiEventData.pUserData = pUserData;
2589
2590 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2591
2592}/*WDI_DelSTAReq*/
2593
Jeff Johnsone7245742012-09-05 17:12:55 -07002594/*========================================================================
2595
Jeff Johnson295189b2012-06-20 16:38:30 -07002596 SECURITY APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07002597
Jeff Johnson295189b2012-06-20 16:38:30 -07002598==========================================================================*/
2599
2600/**
2601 @brief WDI_SetBSSKeyReq will be called when the upper MAC wants to
2602 install a BSS encryption key on the HW. Upon the call of this
2603 API the WLAN DAL will pack and send a Set BSS Key request
2604 message to the lower RIVA sub-system if DAL is in state
2605 STARTED.
2606
2607 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002608 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002609
2610 WDI_PostAssocReq must have been called.
2611
Jeff Johnsone7245742012-09-05 17:12:55 -07002612 @param wdiSetBSSKeyParams: the BSS Key set parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002613 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002614
Jeff Johnson295189b2012-06-20 16:38:30 -07002615 wdiSetBSSKeyRspCb: callback for passing back the
2616 response of the set BSS Key operation received from the
2617 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002618
Jeff Johnson295189b2012-06-20 16:38:30 -07002619 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002620 callback
2621
Jeff Johnson295189b2012-06-20 16:38:30 -07002622 @see WDI_PostAssocReq
2623 @return Result of the function call
2624*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002625WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002626WDI_SetBSSKeyReq
2627(
2628 WDI_SetBSSKeyReqParamsType* pwdiSetBSSKeyParams,
2629 WDI_SetBSSKeyRspCb wdiSetBSSKeyRspCb,
2630 void* pUserData
2631)
2632{
2633 WDI_EventInfoType wdiEventData;
2634 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2635
2636 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002637 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002638 ------------------------------------------------------------------------*/
2639 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2640 {
2641 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2642 "WDI API call before module is initialized - Fail request");
2643
Jeff Johnsone7245742012-09-05 17:12:55 -07002644 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002645 }
2646
2647 /*------------------------------------------------------------------------
2648 Fill in Event data and post to the Main FSM
2649 ------------------------------------------------------------------------*/
2650 wdiEventData.wdiRequest = WDI_SET_BSS_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002651 wdiEventData.pEventData = pwdiSetBSSKeyParams;
2652 wdiEventData.uEventDataSize = sizeof(*pwdiSetBSSKeyParams);
2653 wdiEventData.pCBfnc = wdiSetBSSKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002654 wdiEventData.pUserData = pUserData;
2655
2656 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2657
2658}/*WDI_SetBSSKeyReq*/
2659
2660/**
2661 @brief WDI_RemoveBSSKeyReq will be called when the upper MAC wants to
2662 uninstall a BSS key from HW. Upon the call of this API the
2663 WLAN DAL will pack and send a HAL Remove BSS Key request
2664 message to the lower RIVA sub-system if DAL is in state
2665 STARTED.
2666
2667 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002668 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002669
2670 WDI_SetBSSKeyReq must have been called.
2671
Jeff Johnsone7245742012-09-05 17:12:55 -07002672 @param wdiRemoveBSSKeyParams: the remove BSS key parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002673 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002674
Jeff Johnson295189b2012-06-20 16:38:30 -07002675 wdiRemoveBSSKeyRspCb: callback for passing back the
2676 response of the remove BSS key operation received from
2677 the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002678
Jeff Johnson295189b2012-06-20 16:38:30 -07002679 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002680 callback
2681
Jeff Johnson295189b2012-06-20 16:38:30 -07002682 @see WDI_SetBSSKeyReq
2683 @return Result of the function call
2684*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002685WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002686WDI_RemoveBSSKeyReq
2687(
2688 WDI_RemoveBSSKeyReqParamsType* pwdiRemoveBSSKeyParams,
2689 WDI_RemoveBSSKeyRspCb wdiRemoveBSSKeyRspCb,
2690 void* pUserData
2691)
2692{
2693 WDI_EventInfoType wdiEventData;
2694 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2695
2696 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002697 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002698 ------------------------------------------------------------------------*/
2699 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2700 {
2701 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2702 "WDI API call before module is initialized - Fail request");
2703
Jeff Johnsone7245742012-09-05 17:12:55 -07002704 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002705 }
2706
2707 /*------------------------------------------------------------------------
2708 Fill in Event data and post to the Main FSM
2709 ------------------------------------------------------------------------*/
2710 wdiEventData.wdiRequest = WDI_RMV_BSS_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002711 wdiEventData.pEventData = pwdiRemoveBSSKeyParams;
2712 wdiEventData.uEventDataSize = sizeof(*pwdiRemoveBSSKeyParams);
2713 wdiEventData.pCBfnc = wdiRemoveBSSKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002714 wdiEventData.pUserData = pUserData;
2715
2716 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2717
2718}/*WDI_RemoveBSSKeyReq*/
2719
2720
2721/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002722 @brief WDI_SetSTAKeyReq will be called when the upper MAC is
Jeff Johnson295189b2012-06-20 16:38:30 -07002723 ready to install a STA(ast) encryption key in HW. Upon
2724 the call of this API the WLAN DAL will pack and send a
2725 HAL Set STA Key request message to the lower RIVA
2726 sub-system if DAL is in state STARTED.
2727
2728 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002729 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002730
2731 WDI_PostAssocReq must have been called.
2732
Jeff Johnsone7245742012-09-05 17:12:55 -07002733 @param wdiSetSTAKeyParams: the set STA key parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002734 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002735
Jeff Johnson295189b2012-06-20 16:38:30 -07002736 wdiSetSTAKeyRspCb: callback for passing back the
2737 response of the set STA key operation received from the
2738 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002739
Jeff Johnson295189b2012-06-20 16:38:30 -07002740 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002741 callback
2742
Jeff Johnson295189b2012-06-20 16:38:30 -07002743 @see WDI_PostAssocReq
2744 @return Result of the function call
2745*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002746WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002747WDI_SetSTAKeyReq
2748(
2749 WDI_SetSTAKeyReqParamsType* pwdiSetSTAKeyParams,
2750 WDI_SetSTAKeyRspCb wdiSetSTAKeyRspCb,
2751 void* pUserData
2752)
2753{
2754 WDI_EventInfoType wdiEventData;
2755 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2756
2757 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002758 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002759 ------------------------------------------------------------------------*/
2760 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2761 {
2762 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2763 "WDI API call before module is initialized - Fail request");
2764
Jeff Johnsone7245742012-09-05 17:12:55 -07002765 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002766 }
2767
2768 /*------------------------------------------------------------------------
2769 Fill in Event data and post to the Main FSM
2770 ------------------------------------------------------------------------*/
2771 wdiEventData.wdiRequest = WDI_SET_STA_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002772 wdiEventData.pEventData = pwdiSetSTAKeyParams;
2773 wdiEventData.uEventDataSize = sizeof(*pwdiSetSTAKeyParams);
2774 wdiEventData.pCBfnc = wdiSetSTAKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002775 wdiEventData.pUserData = pUserData;
2776
2777 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2778
2779}/*WDI_SetSTAKeyReq*/
2780
2781
2782/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002783 @brief WDI_RemoveSTAKeyReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07002784 wants to uninstall a previously set STA key in HW. Upon
2785 the call of this API the WLAN DAL will pack and send a
2786 HAL Remove STA Key request message to the lower RIVA
2787 sub-system if DAL is in state STARTED.
2788
2789 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002790 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002791
2792 WDI_SetSTAKeyReq must have been called.
2793
Jeff Johnsone7245742012-09-05 17:12:55 -07002794 @param wdiRemoveSTAKeyParams: the remove STA key parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002795 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002796
Jeff Johnson295189b2012-06-20 16:38:30 -07002797 wdiRemoveSTAKeyRspCb: callback for passing back the
2798 response of the remove STA key operation received from
2799 the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002800
Jeff Johnson295189b2012-06-20 16:38:30 -07002801 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002802 callback
2803
Jeff Johnson295189b2012-06-20 16:38:30 -07002804 @see WDI_SetSTAKeyReq
2805 @return Result of the function call
2806*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002807WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002808WDI_RemoveSTAKeyReq
2809(
2810 WDI_RemoveSTAKeyReqParamsType* pwdiRemoveSTAKeyParams,
2811 WDI_RemoveSTAKeyRspCb wdiRemoveSTAKeyRspCb,
2812 void* pUserData
2813)
2814{
2815 WDI_EventInfoType wdiEventData;
2816 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2817
2818 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002819 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002820 ------------------------------------------------------------------------*/
2821 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2822 {
2823 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2824 "WDI API call before module is initialized - Fail request");
2825
Jeff Johnsone7245742012-09-05 17:12:55 -07002826 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002827 }
2828
2829 /*------------------------------------------------------------------------
2830 Fill in Event data and post to the Main FSM
2831 ------------------------------------------------------------------------*/
2832 wdiEventData.wdiRequest = WDI_RMV_STA_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002833 wdiEventData.pEventData = pwdiRemoveSTAKeyParams;
2834 wdiEventData.uEventDataSize = sizeof(*pwdiRemoveSTAKeyParams);
2835 wdiEventData.pCBfnc = wdiRemoveSTAKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002836 wdiEventData.pUserData = pUserData;
2837
2838 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2839
2840}/*WDI_RemoveSTAKeyReq*/
2841
2842
2843/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002844 @brief WDI_SetSTABcastKeyReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07002845 wants to install a STA Bcast encryption key on the HW.
2846 Upon the call of this API the WLAN DAL will pack and
2847 send a HAL Start request message to the lower RIVA
2848 sub-system if DAL is in state STARTED.
2849
2850 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002851 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002852
2853 WDI_PostAssocReq must have been called.
2854
Jeff Johnsone7245742012-09-05 17:12:55 -07002855 @param pwdiSetSTABcastKeyParams: the BSS Key set parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002856 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002857
Jeff Johnson295189b2012-06-20 16:38:30 -07002858 wdiSetSTABcastKeyRspCb: callback for passing back the
2859 response of the set BSS Key operation received from the
2860 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002861
Jeff Johnson295189b2012-06-20 16:38:30 -07002862 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002863 callback
2864
Jeff Johnson295189b2012-06-20 16:38:30 -07002865 @see WDI_PostAssocReq
2866 @return Result of the function call
2867*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002868WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002869WDI_SetSTABcastKeyReq
2870(
2871 WDI_SetSTAKeyReqParamsType* pwdiSetSTABcastKeyParams,
2872 WDI_SetSTAKeyRspCb wdiSetSTABcastKeyRspCb,
2873 void* pUserData
2874)
2875
2876{
2877 WDI_EventInfoType wdiEventData;
2878 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2879
2880 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002881 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002882 ------------------------------------------------------------------------*/
2883 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2884 {
2885 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2886 "WDI API call before module is initialized - Fail request");
2887
Jeff Johnsone7245742012-09-05 17:12:55 -07002888 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002889 }
2890
2891 /*------------------------------------------------------------------------
2892 Fill in Event data and post to the Main FSM
2893 ------------------------------------------------------------------------*/
2894 wdiEventData.wdiRequest = WDI_SET_STA_BCAST_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002895 wdiEventData.pEventData = pwdiSetSTABcastKeyParams;
2896 wdiEventData.uEventDataSize = sizeof(*pwdiSetSTABcastKeyParams);
2897 wdiEventData.pCBfnc = wdiSetSTABcastKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002898 wdiEventData.pUserData = pUserData;
2899
2900 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2901
2902}/*WDI_SetSTABcastKeyReq*/
2903
2904/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002905 @brief WDI_RemoveSTABcastKeyReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07002906 MAC wants to uninstall a STA Bcast key from HW. Upon the
2907 call of this API the WLAN DAL will pack and send a HAL
2908 Remove STA Bcast Key request message to the lower RIVA
2909 sub-system if DAL is in state STARTED.
2910
2911 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002912 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002913
2914 WDI_SetSTABcastKeyReq must have been called.
2915
Jeff Johnsone7245742012-09-05 17:12:55 -07002916 @param pwdiRemoveSTABcastKeyParams: the remove BSS key
Jeff Johnson295189b2012-06-20 16:38:30 -07002917 parameters as specified by the Device
2918 Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002919
Jeff Johnson295189b2012-06-20 16:38:30 -07002920 wdiRemoveSTABcastKeyRspCb: callback for passing back the
2921 response of the remove STA Bcast key operation received
2922 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002923
Jeff Johnson295189b2012-06-20 16:38:30 -07002924 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002925 callback
2926
Jeff Johnson295189b2012-06-20 16:38:30 -07002927 @see WDI_SetSTABcastKeyReq
2928 @return Result of the function call
2929*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002930WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002931WDI_RemoveSTABcastKeyReq
2932(
2933 WDI_RemoveSTAKeyReqParamsType* pwdiRemoveSTABcastKeyParams,
2934 WDI_RemoveSTAKeyRspCb wdiRemoveSTABcastKeyRspCb,
2935 void* pUserData
2936)
2937{
2938 WDI_EventInfoType wdiEventData;
2939 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2940
2941 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002942 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002943 ------------------------------------------------------------------------*/
2944 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2945 {
2946 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2947 "WDI API call before module is initialized - Fail request");
2948
Jeff Johnsone7245742012-09-05 17:12:55 -07002949 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002950 }
2951
2952 /*------------------------------------------------------------------------
2953 Fill in Event data and post to the Main FSM
2954 ------------------------------------------------------------------------*/
2955 wdiEventData.wdiRequest = WDI_RMV_STA_BCAST_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002956 wdiEventData.pEventData = pwdiRemoveSTABcastKeyParams;
2957 wdiEventData.uEventDataSize = sizeof(*pwdiRemoveSTABcastKeyParams);
2958 wdiEventData.pCBfnc = wdiRemoveSTABcastKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002959 wdiEventData.pUserData = pUserData;
2960
2961 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2962
2963}/*WDI_RemoveSTABcastKeyReq*/
2964
2965/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002966 @brief WDI_SetMaxTxPowerReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07002967 MAC wants to set Max Tx Power to HW. Upon the
2968 call of this API the WLAN DAL will pack and send a HAL
2969 Remove STA Bcast Key request message to the lower RIVA
2970 sub-system if DAL is in state STARTED.
2971
2972 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002973 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002974
2975 WDI_SetSTABcastKeyReq must have been called.
2976
Jeff Johnsone7245742012-09-05 17:12:55 -07002977 @param pwdiRemoveSTABcastKeyParams: the remove BSS key
Jeff Johnson295189b2012-06-20 16:38:30 -07002978 parameters as specified by the Device
2979 Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002980
Jeff Johnson295189b2012-06-20 16:38:30 -07002981 wdiRemoveSTABcastKeyRspCb: callback for passing back the
2982 response of the remove STA Bcast key operation received
2983 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002984
Jeff Johnson295189b2012-06-20 16:38:30 -07002985 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002986 callback
2987
Jeff Johnson295189b2012-06-20 16:38:30 -07002988 @see WDI_SetMaxTxPowerReq
2989 @return Result of the function call
2990*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002991WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002992WDI_SetMaxTxPowerReq
2993(
2994 WDI_SetMaxTxPowerParamsType* pwdiSetMaxTxPowerParams,
2995 WDA_SetMaxTxPowerRspCb wdiReqStatusCb,
2996 void* pUserData
2997)
2998{
2999 WDI_EventInfoType wdiEventData;
3000 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3001
3002 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003003 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003004 ------------------------------------------------------------------------*/
3005 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3006 {
3007 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3008 "WDI API call before module is initialized - Fail request");
3009
Jeff Johnsone7245742012-09-05 17:12:55 -07003010 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003011 }
3012
3013 /*------------------------------------------------------------------------
3014 Fill in Event data and post to the Main FSM
3015 ------------------------------------------------------------------------*/
3016 wdiEventData.wdiRequest = WDI_SET_MAX_TX_POWER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003017 wdiEventData.pEventData = pwdiSetMaxTxPowerParams;
3018 wdiEventData.uEventDataSize = sizeof(*pwdiSetMaxTxPowerParams);
3019 wdiEventData.pCBfnc = wdiReqStatusCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003020 wdiEventData.pUserData = pUserData;
3021
3022 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3023}
3024
schang86c22c42013-03-13 18:41:24 -07003025/**
Arif Hussaina5ebce02013-08-09 15:09:58 -07003026 @brief WDI_SetMaxTxPowerPerBandReq will be called when the upper
3027 MAC wants to set Max Tx Power to HW for specific band.
3028
3029 @param pwdiSetMaxTxPowerPerBandParams: Tx Power Information
3030
3031 wdiReqStatusCb: callback for passing back the
3032 response msg from the device
3033
3034 pUserData: user data will be passed back with the
3035 callback
3036
3037 @see WDI_SetMaxTxPowerPerBandReq
3038 @return Result of the function call
3039*/
3040WDI_Status
3041WDI_SetMaxTxPowerPerBandReq
3042(
3043 WDI_SetMaxTxPowerPerBandParamsType* pwdiSetMaxTxPowerPerBandParams,
3044 WDA_SetMaxTxPowerPerBandRspCb wdiReqStatusCb,
3045 void* pUserData
3046)
3047{
3048 WDI_EventInfoType wdiEventData;
3049 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3050
3051 /*------------------------------------------------------------------------
3052 Sanity Check
3053 ------------------------------------------------------------------------*/
3054 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3055 {
3056 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3057 "WDI API call before module is initialized - Fail request");
3058
3059 return WDI_STATUS_E_NOT_ALLOWED;
3060 }
3061
3062 /*------------------------------------------------------------------------
3063 Fill in Event data and post to the Main FSM
3064 ------------------------------------------------------------------------*/
3065 wdiEventData.wdiRequest = WDI_SET_MAX_TX_POWER_PER_BAND_REQ;
3066 wdiEventData.pEventData = pwdiSetMaxTxPowerPerBandParams;
3067 wdiEventData.uEventDataSize = sizeof(*pwdiSetMaxTxPowerPerBandParams);
3068 wdiEventData.pCBfnc = wdiReqStatusCb;
3069 wdiEventData.pUserData = pUserData;
3070
3071 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3072}
3073
3074/**
schang86c22c42013-03-13 18:41:24 -07003075 @brief WDI_SetTxPowerReq will be called when the upper
3076 MAC wants to set Tx Power to HW.
3077 In state BUSY this request will be queued. Request won't
3078 be allowed in any other state.
3079
3080
3081 @param pwdiSetTxPowerParams: set TS Power parameters
3082 BSSID and target TX Power with dbm included
3083
3084 wdiReqStatusCb: callback for passing back the response
3085
3086 pUserData: user data will be passed back with the
3087 callback
3088
3089 @return Result of the function call
3090*/
3091WDI_Status
3092WDI_SetTxPowerReq
3093(
3094 WDI_SetTxPowerParamsType* pwdiSetTxPowerParams,
3095 WDA_SetTxPowerRspCb wdiReqStatusCb,
3096 void* pUserData
3097)
3098{
3099 WDI_EventInfoType wdiEventData;
3100 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3101
3102 /*------------------------------------------------------------------------
3103 Sanity Check
3104 ------------------------------------------------------------------------*/
3105 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3106 {
3107 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3108 "WDI API call before module is initialized - Fail request");
3109
3110 return WDI_STATUS_E_NOT_ALLOWED;
3111 }
3112
3113 /*------------------------------------------------------------------------
3114 Fill in Event data and post to the Main FSM
3115 ------------------------------------------------------------------------*/
3116 wdiEventData.wdiRequest = WDI_SET_TX_POWER_REQ;
3117 wdiEventData.pEventData = pwdiSetTxPowerParams;
3118 wdiEventData.uEventDataSize = sizeof(*pwdiSetTxPowerParams);
3119 wdiEventData.pCBfnc = wdiReqStatusCb;
3120 wdiEventData.pUserData = pUserData;
3121
3122 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3123}
3124
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -08003125#ifdef FEATURE_WLAN_ESE
Jeff Johnson295189b2012-06-20 16:38:30 -07003126WDI_Status
3127WDI_TSMStatsReq
3128(
3129 WDI_TSMStatsReqParamsType* pwdiTsmReqParams,
3130 WDI_TsmRspCb wdiReqStatusCb,
3131 void* pUserData
3132)
3133{
3134 WDI_EventInfoType wdiEventData;
3135 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Jeff Johnson295189b2012-06-20 16:38:30 -07003136 /*------------------------------------------------------------------------
3137 Sanity Check
3138 ------------------------------------------------------------------------*/
3139 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3140 {
3141 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3142 "WDI API call before module is initialized - Fail request");
3143
3144 return WDI_STATUS_E_NOT_ALLOWED;
3145 }
3146
3147 /*------------------------------------------------------------------------
3148 Fill in Event data and post to the Main FSM
3149 ------------------------------------------------------------------------*/
3150 wdiEventData.wdiRequest = WDI_TSM_STATS_REQ;
3151 wdiEventData.pEventData = pwdiTsmReqParams;
3152 wdiEventData.uEventDataSize = sizeof(*pwdiTsmReqParams);
3153 wdiEventData.pCBfnc = wdiReqStatusCb;
3154 wdiEventData.pUserData = pUserData;
3155
3156 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3157
3158}
3159#endif
3160
3161/*========================================================================
3162
3163 QoS and BA APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07003164
Jeff Johnson295189b2012-06-20 16:38:30 -07003165==========================================================================*/
3166
3167/**
3168 @brief WDI_AddTSReq will be called when the upper MAC to inform
3169 the device of a successful add TSpec negotiation. HW
3170 needs to receive the TSpec Info from the UMAC in order
3171 to configure properly the QoS data traffic. Upon the
3172 call of this API the WLAN DAL will pack and send a HAL
3173 Add TS request message to the lower RIVA sub-system if
3174 DAL is in state STARTED.
3175
3176 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003177 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003178
3179 WDI_PostAssocReq must have been called.
3180
3181 @param wdiAddTsReqParams: the add TS parameters as specified by
3182 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003183
Jeff Johnson295189b2012-06-20 16:38:30 -07003184 wdiAddTsRspCb: callback for passing back the response of
3185 the add TS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003186
Jeff Johnson295189b2012-06-20 16:38:30 -07003187 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003188 callback
3189
Jeff Johnson295189b2012-06-20 16:38:30 -07003190 @see WDI_PostAssocReq
3191 @return Result of the function call
3192*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003193WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003194WDI_AddTSReq
3195(
3196 WDI_AddTSReqParamsType* pwdiAddTsReqParams,
3197 WDI_AddTsRspCb wdiAddTsRspCb,
3198 void* pUserData
3199)
3200{
3201 WDI_EventInfoType wdiEventData;
3202 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3203
3204 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003205 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003206 ------------------------------------------------------------------------*/
3207 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3208 {
3209 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3210 "WDI API call before module is initialized - Fail request");
3211
Jeff Johnsone7245742012-09-05 17:12:55 -07003212 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003213 }
3214
3215 /*------------------------------------------------------------------------
3216 Fill in Event data and post to the Main FSM
3217 ------------------------------------------------------------------------*/
3218 wdiEventData.wdiRequest = WDI_ADD_TS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003219 wdiEventData.pEventData = pwdiAddTsReqParams;
3220 wdiEventData.uEventDataSize = sizeof(*pwdiAddTsReqParams);
3221 wdiEventData.pCBfnc = wdiAddTsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003222 wdiEventData.pUserData = pUserData;
3223
3224 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3225
3226}/*WDI_AddTSReq*/
3227
3228
3229
3230/**
3231 @brief WDI_DelTSReq will be called when the upper MAC has ended
3232 admission on a specific AC. This is to inform HW that
3233 QoS traffic parameters must be rest. Upon the call of
3234 this API the WLAN DAL will pack and send a HAL Del TS
3235 request message to the lower RIVA sub-system if DAL is
3236 in state STARTED.
3237
3238 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003239 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003240
3241 WDI_AddTSReq must have been called.
3242
3243 @param wdiDelTsReqParams: the del TS parameters as specified by
3244 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003245
Jeff Johnson295189b2012-06-20 16:38:30 -07003246 wdiDelTsRspCb: callback for passing back the response of
3247 the del TS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003248
Jeff Johnson295189b2012-06-20 16:38:30 -07003249 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003250 callback
3251
Jeff Johnson295189b2012-06-20 16:38:30 -07003252 @see WDI_AddTSReq
3253 @return Result of the function call
3254*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003255WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003256WDI_DelTSReq
3257(
3258 WDI_DelTSReqParamsType* pwdiDelTsReqParams,
3259 WDI_DelTsRspCb wdiDelTsRspCb,
3260 void* pUserData
3261)
3262{
3263 WDI_EventInfoType wdiEventData;
3264 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3265
3266 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003267 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003268 ------------------------------------------------------------------------*/
3269 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3270 {
3271 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3272 "WDI API call before module is initialized - Fail request");
3273
Jeff Johnsone7245742012-09-05 17:12:55 -07003274 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003275 }
3276
3277 /*------------------------------------------------------------------------
3278 Fill in Event data and post to the Main FSM
3279 ------------------------------------------------------------------------*/
3280 wdiEventData.wdiRequest = WDI_DEL_TS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003281 wdiEventData.pEventData = pwdiDelTsReqParams;
3282 wdiEventData.uEventDataSize = sizeof(*pwdiDelTsReqParams);
3283 wdiEventData.pCBfnc = wdiDelTsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003284 wdiEventData.pUserData = pUserData;
3285
3286 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3287
3288}/*WDI_DelTSReq*/
3289
3290
3291
3292/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003293 @brief WDI_UpdateEDCAParams will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07003294 wishes to update the EDCA parameters used by HW for QoS
3295 data traffic. Upon the call of this API the WLAN DAL
3296 will pack and send a HAL Update EDCA Params request
3297 message to the lower RIVA sub-system if DAL is in state
3298 STARTED.
3299
3300 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003301 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003302
3303 WDI_PostAssocReq must have been called.
3304
Jeff Johnsone7245742012-09-05 17:12:55 -07003305 @param wdiUpdateEDCAParams: the start parameters as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07003306 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003307
Jeff Johnson295189b2012-06-20 16:38:30 -07003308 wdiUpdateEDCAParamsRspCb: callback for passing back the
3309 response of the start operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003310
Jeff Johnson295189b2012-06-20 16:38:30 -07003311 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003312 callback
3313
Jeff Johnson295189b2012-06-20 16:38:30 -07003314 @see WDI_PostAssocReq
3315 @return Result of the function call
3316*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003317WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003318WDI_UpdateEDCAParams
3319(
3320 WDI_UpdateEDCAParamsType* pwdiUpdateEDCAParams,
3321 WDI_UpdateEDCAParamsRspCb wdiUpdateEDCAParamsRspCb,
3322 void* pUserData
3323)
3324{
3325 WDI_EventInfoType wdiEventData;
3326 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3327
3328 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003329 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003330 ------------------------------------------------------------------------*/
3331 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3332 {
3333 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3334 "WDI API call before module is initialized - Fail request");
3335
Jeff Johnsone7245742012-09-05 17:12:55 -07003336 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003337 }
3338
3339 /*------------------------------------------------------------------------
3340 Fill in Event data and post to the Main FSM
3341 ------------------------------------------------------------------------*/
3342 wdiEventData.wdiRequest = WDI_UPD_EDCA_PRMS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003343 wdiEventData.pEventData = pwdiUpdateEDCAParams;
3344 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateEDCAParams);
3345 wdiEventData.pCBfnc = wdiUpdateEDCAParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003346 wdiEventData.pUserData = pUserData;
3347
3348 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3349
3350}/*WDI_UpdateEDCAParams*/
3351
3352
3353/**
3354 @brief WDI_AddBASessionReq will be called when the upper MAC has setup
3355 successfully a BA session and needs to notify the HW for
3356 the appropriate settings to take place. Upon the call of
3357 this API the WLAN DAL will pack and send a HAL Add BA
3358 request message to the lower RIVA sub-system if DAL is
3359 in state STARTED.
3360
3361 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003362 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003363
3364 WDI_PostAssocReq must have been called.
3365
3366 @param wdiAddBAReqParams: the add BA parameters as specified by
3367 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003368
Jeff Johnson295189b2012-06-20 16:38:30 -07003369 wdiAddBARspCb: callback for passing back the response of
3370 the add BA operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003371
Jeff Johnson295189b2012-06-20 16:38:30 -07003372 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003373 callback
3374
Jeff Johnson295189b2012-06-20 16:38:30 -07003375 @see WDI_PostAssocReq
3376 @return Result of the function call
3377*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003378WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003379WDI_AddBASessionReq
3380(
3381 WDI_AddBASessionReqParamsType* pwdiAddBASessionReqParams,
3382 WDI_AddBASessionRspCb wdiAddBASessionRspCb,
3383 void* pUserData
3384)
3385{
3386 WDI_EventInfoType wdiEventData;
3387 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3388
3389 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003390 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003391 ------------------------------------------------------------------------*/
3392 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3393 {
3394 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3395 "WDI API call before module is initialized - Fail request");
3396
Jeff Johnsone7245742012-09-05 17:12:55 -07003397 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003398 }
3399
3400 /*------------------------------------------------------------------------
3401 Fill in Event data and post to the Main FSM
3402 ------------------------------------------------------------------------*/
3403 wdiEventData.wdiRequest = WDI_ADD_BA_SESSION_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003404 wdiEventData.pEventData = pwdiAddBASessionReqParams;
3405 wdiEventData.uEventDataSize = sizeof(*pwdiAddBASessionReqParams);
3406 wdiEventData.pCBfnc = wdiAddBASessionRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003407 wdiEventData.pUserData = pUserData;
3408
3409 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3410
3411}/*WDI_AddBASessionReq*/
3412
3413/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003414 @brief WDI_DelBAReq will be called when the upper MAC wants to
Jeff Johnson295189b2012-06-20 16:38:30 -07003415 inform HW that it has deleted a previously created BA
3416 session. Upon the call of this API the WLAN DAL will
3417 pack and send a HAL Del BA request message to the lower
3418 RIVA sub-system if DAL is in state STARTED.
3419
3420 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003421 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003422
3423 WDI_AddBAReq must have been called.
3424
3425 @param wdiDelBAReqParams: the del BA parameters as specified by
3426 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003427
Jeff Johnson295189b2012-06-20 16:38:30 -07003428 wdiDelBARspCb: callback for passing back the response of
3429 the del BA operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003430
Jeff Johnson295189b2012-06-20 16:38:30 -07003431 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003432 callback
3433
Jeff Johnson295189b2012-06-20 16:38:30 -07003434 @see WDI_AddBAReq
3435 @return Result of the function call
3436*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003437WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003438WDI_DelBAReq
3439(
3440 WDI_DelBAReqParamsType* pwdiDelBAReqParams,
3441 WDI_DelBARspCb wdiDelBARspCb,
3442 void* pUserData
3443)
3444{
3445 WDI_EventInfoType wdiEventData;
3446 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3447
3448 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003449 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003450 ------------------------------------------------------------------------*/
3451 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3452 {
3453 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3454 "WDI API call before module is initialized - Fail request");
3455
Jeff Johnsone7245742012-09-05 17:12:55 -07003456 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003457 }
3458
3459 /*------------------------------------------------------------------------
3460 Fill in Event data and post to the Main FSM
3461 ------------------------------------------------------------------------*/
3462 wdiEventData.wdiRequest = WDI_DEL_BA_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003463 wdiEventData.pEventData = pwdiDelBAReqParams;
3464 wdiEventData.uEventDataSize = sizeof(*pwdiDelBAReqParams);
3465 wdiEventData.pCBfnc = wdiDelBARspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003466 wdiEventData.pUserData = pUserData;
3467
3468 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3469
3470}/*WDI_DelBAReq*/
3471
Jeff Johnsone7245742012-09-05 17:12:55 -07003472/*========================================================================
3473
Jeff Johnson295189b2012-06-20 16:38:30 -07003474 Power Save APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07003475
Jeff Johnson295189b2012-06-20 16:38:30 -07003476==========================================================================*/
3477
3478/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003479 @brief WDI_SetPwrSaveCfgReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07003480 wants to set the power save related configurations of
3481 the WLAN Device. Upon the call of this API the WLAN DAL
3482 will pack and send a HAL Update CFG request message to
3483 the lower RIVA sub-system if DAL is in state STARTED.
3484
3485 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003486 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003487
3488 WDI_Start must have been called.
3489
Jeff Johnsone7245742012-09-05 17:12:55 -07003490 @param pwdiPowerSaveCfg: the power save cfg parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07003491 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003492
Jeff Johnson295189b2012-06-20 16:38:30 -07003493 wdiSetPwrSaveCfgCb: callback for passing back the
3494 response of the set power save cfg operation received
3495 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003496
Jeff Johnson295189b2012-06-20 16:38:30 -07003497 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003498 callback
3499
Jeff Johnson295189b2012-06-20 16:38:30 -07003500 @see WDI_Start
Jeff Johnsone7245742012-09-05 17:12:55 -07003501 @return Result of the function call
3502*/
3503WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003504WDI_SetPwrSaveCfgReq
3505(
3506 WDI_UpdateCfgReqParamsType* pwdiPowerSaveCfg,
3507 WDI_SetPwrSaveCfgCb wdiSetPwrSaveCfgCb,
3508 void* pUserData
3509)
3510{
3511 WDI_EventInfoType wdiEventData;
3512 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3513
3514 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003515 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003516 ------------------------------------------------------------------------*/
3517 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3518 {
3519 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3520 "WDI API call before module is initialized - Fail request");
3521
Jeff Johnsone7245742012-09-05 17:12:55 -07003522 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003523 }
3524
3525 /*------------------------------------------------------------------------
3526 Fill in Event data and post to the Main FSM
3527 ------------------------------------------------------------------------*/
3528 wdiEventData.wdiRequest = WDI_UPDATE_CFG_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003529 wdiEventData.pEventData = pwdiPowerSaveCfg;
3530 wdiEventData.uEventDataSize = sizeof(*pwdiPowerSaveCfg);
3531 wdiEventData.pCBfnc = wdiSetPwrSaveCfgCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003532 wdiEventData.pUserData = pUserData;
3533
3534 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3535
3536}/*WDI_SetPwrSaveCfgReq*/
3537
3538/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003539 @brief WDI_EnterImpsReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07003540 request the device to get into IMPS power state. Upon
3541 the call of this API the WLAN DAL will send a HAL Enter
3542 IMPS request message to the lower RIVA sub-system if DAL
3543 is in state STARTED.
3544
3545 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003546 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003547
Jeff Johnsone7245742012-09-05 17:12:55 -07003548
3549 @param wdiEnterImpsRspCb: callback for passing back the
Jeff Johnson295189b2012-06-20 16:38:30 -07003550 response of the Enter IMPS operation received from the
3551 device
Jeff Johnsone7245742012-09-05 17:12:55 -07003552
Jeff Johnson295189b2012-06-20 16:38:30 -07003553 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003554 callback
3555
Jeff Johnson295189b2012-06-20 16:38:30 -07003556 @see WDI_Start
3557 @return Result of the function call
3558*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003559WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003560WDI_EnterImpsReq
3561(
Mihir Shetea4306052014-03-25 00:02:54 +05303562 WDI_EnterImpsReqParamsType *pwdiEnterImpsReqParams,
Jeff Johnson295189b2012-06-20 16:38:30 -07003563 WDI_EnterImpsRspCb wdiEnterImpsRspCb,
3564 void* pUserData
3565)
3566{
3567 WDI_EventInfoType wdiEventData;
3568 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3569
3570 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003571 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003572 ------------------------------------------------------------------------*/
3573 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3574 {
3575 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3576 "WDI API call before module is initialized - Fail request");
3577
Jeff Johnsone7245742012-09-05 17:12:55 -07003578 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003579 }
3580
3581 /*------------------------------------------------------------------------
3582 Fill in Event data and post to the Main FSM
3583 ------------------------------------------------------------------------*/
3584 wdiEventData.wdiRequest = WDI_ENTER_IMPS_REQ;
Mihir Shetea4306052014-03-25 00:02:54 +05303585 wdiEventData.pEventData = pwdiEnterImpsReqParams;
3586 wdiEventData.uEventDataSize = sizeof(*pwdiEnterImpsReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07003587 wdiEventData.pCBfnc = wdiEnterImpsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003588 wdiEventData.pUserData = pUserData;
3589
3590 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3591
3592}/*WDI_EnterImpsReq*/
3593
3594/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003595 @brief WDI_ExitImpsReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07003596 request the device to get out of IMPS power state. Upon
3597 the call of this API the WLAN DAL will send a HAL Exit
3598 IMPS request message to the lower RIVA sub-system if DAL
3599 is in state STARTED.
3600
3601 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003602 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003603
Jeff Johnson295189b2012-06-20 16:38:30 -07003604
Jeff Johnsone7245742012-09-05 17:12:55 -07003605
3606 @param wdiExitImpsRspCb: callback for passing back the response
Jeff Johnson295189b2012-06-20 16:38:30 -07003607 of the Exit IMPS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003608
Jeff Johnson295189b2012-06-20 16:38:30 -07003609 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003610 callback
3611
Jeff Johnson295189b2012-06-20 16:38:30 -07003612 @see WDI_Start
3613 @return Result of the function call
3614*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003615WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003616WDI_ExitImpsReq
3617(
3618 WDI_ExitImpsRspCb wdiExitImpsRspCb,
3619 void* pUserData
3620)
3621{
3622 WDI_EventInfoType wdiEventData;
3623 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3624
3625 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003626 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003627 ------------------------------------------------------------------------*/
3628 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3629 {
3630 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3631 "WDI API call before module is initialized - Fail request");
3632
Jeff Johnsone7245742012-09-05 17:12:55 -07003633 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003634 }
3635
3636 /*------------------------------------------------------------------------
3637 Fill in Event data and post to the Main FSM
3638 ------------------------------------------------------------------------*/
3639 wdiEventData.wdiRequest = WDI_EXIT_IMPS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003640 wdiEventData.pEventData = NULL;
3641 wdiEventData.uEventDataSize = 0;
3642 wdiEventData.pCBfnc = wdiExitImpsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003643 wdiEventData.pUserData = pUserData;
3644
3645 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3646
3647}/*WDI_ExitImpsReq*/
3648
3649/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003650 @brief WDI_EnterBmpsReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07003651 request the device to get into BMPS power state. Upon
3652 the call of this API the WLAN DAL will pack and send a
3653 HAL Enter BMPS request message to the lower RIVA
3654 sub-system if DAL is in state STARTED.
3655
3656 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003657 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003658
3659 WDI_PostAssocReq must have been called.
3660
Jeff Johnsone7245742012-09-05 17:12:55 -07003661 @param pwdiEnterBmpsReqParams: the Enter BMPS parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07003662 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003663
Jeff Johnson295189b2012-06-20 16:38:30 -07003664 wdiEnterBmpsRspCb: callback for passing back the
3665 response of the Enter BMPS operation received from the
3666 device
Jeff Johnsone7245742012-09-05 17:12:55 -07003667
Jeff Johnson295189b2012-06-20 16:38:30 -07003668 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003669 callback
3670
Jeff Johnson295189b2012-06-20 16:38:30 -07003671 @see WDI_PostAssocReq
3672 @return Result of the function call
3673*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003674WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003675WDI_EnterBmpsReq
3676(
3677 WDI_EnterBmpsReqParamsType *pwdiEnterBmpsReqParams,
3678 WDI_EnterBmpsRspCb wdiEnterBmpsRspCb,
3679 void* pUserData
3680)
3681{
3682 WDI_EventInfoType wdiEventData;
3683 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3684
3685 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003686 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003687 ------------------------------------------------------------------------*/
3688 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3689 {
3690 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3691 "WDI API call before module is initialized - Fail request");
3692
Jeff Johnsone7245742012-09-05 17:12:55 -07003693 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003694 }
3695
3696 /*------------------------------------------------------------------------
3697 Fill in Event data and post to the Main FSM
3698 ------------------------------------------------------------------------*/
3699 wdiEventData.wdiRequest = WDI_ENTER_BMPS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003700 wdiEventData.pEventData = pwdiEnterBmpsReqParams;
3701 wdiEventData.uEventDataSize = sizeof(*pwdiEnterBmpsReqParams);
3702 wdiEventData.pCBfnc = wdiEnterBmpsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003703 wdiEventData.pUserData = pUserData;
3704
3705 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3706
3707}/*WDI_EnterBmpsReq*/
3708
3709/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003710 @brief WDI_ExitBmpsReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07003711 request the device to get out of BMPS power state. Upon
3712 the call of this API the WLAN DAL will pack and send a
3713 HAL Exit BMPS request message to the lower RIVA
3714 sub-system if DAL is in state STARTED.
3715
3716 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003717 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003718
3719 WDI_PostAssocReq must have been called.
3720
Jeff Johnsone7245742012-09-05 17:12:55 -07003721 @param pwdiExitBmpsReqParams: the Exit BMPS parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07003722 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003723
Jeff Johnson295189b2012-06-20 16:38:30 -07003724 wdiExitBmpsRspCb: callback for passing back the response
3725 of the Exit BMPS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003726
Jeff Johnson295189b2012-06-20 16:38:30 -07003727 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003728 callback
3729
Jeff Johnson295189b2012-06-20 16:38:30 -07003730 @see WDI_PostAssocReq
3731 @return Result of the function call
3732*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003733WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003734WDI_ExitBmpsReq
3735(
3736 WDI_ExitBmpsReqParamsType *pwdiExitBmpsReqParams,
3737 WDI_ExitBmpsRspCb wdiExitBmpsRspCb,
3738 void* pUserData
3739)
3740{
3741 WDI_EventInfoType wdiEventData;
3742 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3743
3744 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003745 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003746 ------------------------------------------------------------------------*/
3747 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3748 {
3749 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3750 "WDI API call before module is initialized - Fail request");
3751
Jeff Johnsone7245742012-09-05 17:12:55 -07003752 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003753 }
3754
3755 /*------------------------------------------------------------------------
3756 Fill in Event data and post to the Main FSM
3757 ------------------------------------------------------------------------*/
3758 wdiEventData.wdiRequest = WDI_EXIT_BMPS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003759 wdiEventData.pEventData = pwdiExitBmpsReqParams;
3760 wdiEventData.uEventDataSize = sizeof(*pwdiExitBmpsReqParams);
3761 wdiEventData.pCBfnc = wdiExitBmpsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003762 wdiEventData.pUserData = pUserData;
3763
3764 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3765
3766}/*WDI_ExitBmpsReq*/
3767
3768/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003769 @brief WDI_EnterUapsdReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07003770 request the device to get into UAPSD power state. Upon
3771 the call of this API the WLAN DAL will pack and send a
3772 HAL Enter UAPSD request message to the lower RIVA
3773 sub-system if DAL is in state STARTED.
3774
3775 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003776 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003777
3778 WDI_PostAssocReq must have been called.
3779 WDI_SetUapsdAcParamsReq must have been called.
Jeff Johnsone7245742012-09-05 17:12:55 -07003780
3781 @param pwdiEnterUapsdReqParams: the Enter UAPSD parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07003782 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003783
Jeff Johnson295189b2012-06-20 16:38:30 -07003784 wdiEnterUapsdRspCb: callback for passing back the
3785 response of the Enter UAPSD operation received from the
3786 device
Jeff Johnsone7245742012-09-05 17:12:55 -07003787
Jeff Johnson295189b2012-06-20 16:38:30 -07003788 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003789 callback
3790
Jeff Johnson295189b2012-06-20 16:38:30 -07003791 @see WDI_PostAssocReq, WDI_SetUapsdAcParamsReq
3792 @return Result of the function call
3793*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003794WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003795WDI_EnterUapsdReq
3796(
3797 WDI_EnterUapsdReqParamsType *pwdiEnterUapsdReqParams,
3798 WDI_EnterUapsdRspCb wdiEnterUapsdRspCb,
3799 void* pUserData
3800)
3801{
3802 WDI_EventInfoType wdiEventData;
3803 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3804
3805 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003806 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003807 ------------------------------------------------------------------------*/
3808 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3809 {
3810 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3811 "WDI API call before module is initialized - Fail request");
3812
Jeff Johnsone7245742012-09-05 17:12:55 -07003813 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003814 }
3815
3816 /*------------------------------------------------------------------------
3817 Fill in Event data and post to the Main FSM
3818 ------------------------------------------------------------------------*/
3819 wdiEventData.wdiRequest = WDI_ENTER_UAPSD_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003820 wdiEventData.pEventData = pwdiEnterUapsdReqParams;
3821 wdiEventData.uEventDataSize = sizeof(*pwdiEnterUapsdReqParams);
3822 wdiEventData.pCBfnc = wdiEnterUapsdRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003823 wdiEventData.pUserData = pUserData;
3824
3825 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3826
3827}/*WDI_EnterUapsdReq*/
3828
3829/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003830 @brief WDI_ExitUapsdReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07003831 request the device to get out of UAPSD power state. Upon
3832 the call of this API the WLAN DAL will send a HAL Exit
3833 UAPSD request message to the lower RIVA sub-system if
3834 DAL is in state STARTED.
3835
3836 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003837 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003838
3839 WDI_PostAssocReq must have been called.
3840
Jeff Johnsone7245742012-09-05 17:12:55 -07003841 @param wdiExitUapsdRspCb: callback for passing back the
Jeff Johnson295189b2012-06-20 16:38:30 -07003842 response of the Exit UAPSD operation received from the
3843 device
Jeff Johnsone7245742012-09-05 17:12:55 -07003844
Jeff Johnson295189b2012-06-20 16:38:30 -07003845 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003846 callback
3847
Jeff Johnson295189b2012-06-20 16:38:30 -07003848 @see WDI_PostAssocReq
3849 @return Result of the function call
3850*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003851WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003852WDI_ExitUapsdReq
3853(
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -07003854 WDI_ExitUapsdReqParamsType *pwdiExitUapsdReqParams,
Jeff Johnson295189b2012-06-20 16:38:30 -07003855 WDI_ExitUapsdRspCb wdiExitUapsdRspCb,
3856 void* pUserData
3857)
3858{
3859 WDI_EventInfoType wdiEventData;
3860 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3861
3862 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003863 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003864 ------------------------------------------------------------------------*/
3865 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3866 {
3867 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3868 "WDI API call before module is initialized - Fail request");
3869
Jeff Johnsone7245742012-09-05 17:12:55 -07003870 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003871 }
3872
3873 /*------------------------------------------------------------------------
3874 Fill in Event data and post to the Main FSM
3875 ------------------------------------------------------------------------*/
3876 wdiEventData.wdiRequest = WDI_EXIT_UAPSD_REQ;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -07003877 wdiEventData.pEventData = pwdiExitUapsdReqParams;
3878 wdiEventData.uEventDataSize = sizeof(*pwdiExitUapsdReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07003879 wdiEventData.pCBfnc = wdiExitUapsdRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003880 wdiEventData.pUserData = pUserData;
3881
3882 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3883
3884}/*WDI_ExitUapsdReq*/
3885
3886/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003887 @brief WDI_UpdateUapsdParamsReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07003888 MAC wants to set the UAPSD related configurations
3889 of an associated STA (while acting as an AP) to the WLAN
3890 Device. Upon the call of this API the WLAN DAL will pack
3891 and send a HAL Update UAPSD params request message to
3892 the lower RIVA sub-system if DAL is in state STARTED.
3893
3894 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003895 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003896
3897 WDI_ConfigBSSReq must have been called.
3898
Jeff Johnsone7245742012-09-05 17:12:55 -07003899 @param pwdiUpdateUapsdReqParams: the UAPSD parameters
Jeff Johnson295189b2012-06-20 16:38:30 -07003900 as specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003901
Jeff Johnson295189b2012-06-20 16:38:30 -07003902 wdiUpdateUapsdParamsCb: callback for passing back the
3903 response of the update UAPSD params operation received
3904 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003905
Jeff Johnson295189b2012-06-20 16:38:30 -07003906 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003907 callback
3908
Jeff Johnson295189b2012-06-20 16:38:30 -07003909 @see WDI_ConfigBSSReq
3910 @return Result of the function call
3911*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003912WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003913WDI_UpdateUapsdParamsReq
3914(
3915 WDI_UpdateUapsdReqParamsType *pwdiUpdateUapsdReqParams,
3916 WDI_UpdateUapsdParamsCb wdiUpdateUapsdParamsCb,
3917 void* pUserData
3918)
3919{
3920 WDI_EventInfoType wdiEventData;
3921 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3922
3923 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003924 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003925 ------------------------------------------------------------------------*/
3926 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3927 {
3928 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3929 "WDI API call before module is initialized - Fail request");
3930
Jeff Johnsone7245742012-09-05 17:12:55 -07003931 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003932 }
3933
3934 /*------------------------------------------------------------------------
3935 Fill in Event data and post to the Main FSM
3936 ------------------------------------------------------------------------*/
3937 wdiEventData.wdiRequest = WDI_UPDATE_UAPSD_PARAM_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003938 wdiEventData.pEventData = pwdiUpdateUapsdReqParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07003939 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateUapsdReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07003940 wdiEventData.pCBfnc = wdiUpdateUapsdParamsCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003941 wdiEventData.pUserData = pUserData;
3942
3943 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3944
3945}/*WDI_UpdateUapsdParamsReq*/
3946
3947/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003948 @brief WDI_SetUapsdAcParamsReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07003949 MAC wants to set the UAPSD related configurations before
3950 requesting for enter UAPSD power state to the WLAN
3951 Device. Upon the call of this API the WLAN DAL will pack
3952 and send a HAL Set UAPSD params request message to
3953 the lower RIVA sub-system if DAL is in state STARTED.
3954
3955 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003956 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003957
3958 WDI_PostAssocReq must have been called.
3959
3960 @param pwdiUapsdInfo: the UAPSD parameters as specified by
3961 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003962
Jeff Johnson295189b2012-06-20 16:38:30 -07003963 wdiSetUapsdAcParamsCb: callback for passing back the
3964 response of the set UAPSD params operation received from
3965 the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003966
Jeff Johnson295189b2012-06-20 16:38:30 -07003967 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003968 callback
3969
Jeff Johnson295189b2012-06-20 16:38:30 -07003970 @see WDI_PostAssocReq
3971 @return Result of the function call
3972*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003973WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003974WDI_SetUapsdAcParamsReq
3975(
3976 WDI_SetUapsdAcParamsReqParamsType* pwdiUapsdInfo,
3977 WDI_SetUapsdAcParamsCb wdiSetUapsdAcParamsCb,
3978 void* pUserData
3979)
3980{
3981 WDI_EventInfoType wdiEventData;
3982 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3983
3984 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003985 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003986 ------------------------------------------------------------------------*/
3987 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3988 {
3989 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3990 "WDI API call before module is initialized - Fail request");
3991
Jeff Johnsone7245742012-09-05 17:12:55 -07003992 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003993 }
3994
3995 /*------------------------------------------------------------------------
3996 Fill in Event data and post to the Main FSM
3997 ------------------------------------------------------------------------*/
3998 wdiEventData.wdiRequest = WDI_SET_UAPSD_PARAM_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003999 wdiEventData.pEventData = pwdiUapsdInfo;
4000 wdiEventData.uEventDataSize = sizeof(*pwdiUapsdInfo);
4001 wdiEventData.pCBfnc = wdiSetUapsdAcParamsCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004002 wdiEventData.pUserData = pUserData;
4003
4004 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4005
4006}/*WDI_SetUapsdAcParamsReq*/
4007
4008/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004009 @brief WDI_ConfigureRxpFilterReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07004010 MAC wants to set/reset the RXP filters for received pkts
4011 (MC, BC etc.). Upon the call of this API the WLAN DAL will pack
4012 and send a HAL configure RXP filter request message to
4013 the lower RIVA sub-system.
4014
4015 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004016 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004017
Jeff Johnsone7245742012-09-05 17:12:55 -07004018
4019 @param pwdiConfigureRxpFilterReqParams: the RXP
Jeff Johnson295189b2012-06-20 16:38:30 -07004020 filter as specified by the Device
4021 Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004022
Jeff Johnson295189b2012-06-20 16:38:30 -07004023 wdiConfigureRxpFilterCb: callback for passing back the
4024 response of the configure RXP filter operation received
4025 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004026
Jeff Johnson295189b2012-06-20 16:38:30 -07004027 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004028 callback
4029
Jeff Johnson295189b2012-06-20 16:38:30 -07004030 @return Result of the function call
4031*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004032WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004033WDI_ConfigureRxpFilterReq
4034(
4035 WDI_ConfigureRxpFilterReqParamsType *pwdiConfigureRxpFilterReqParams,
4036 WDI_ConfigureRxpFilterCb wdiConfigureRxpFilterCb,
4037 void* pUserData
4038)
4039{
4040 WDI_EventInfoType wdiEventData;
4041 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4042
4043 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004044 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004045 ------------------------------------------------------------------------*/
4046 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4047 {
4048 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4049 "WDI API call before module is initialized - Fail request");
4050
Jeff Johnsone7245742012-09-05 17:12:55 -07004051 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004052 }
4053
4054 /*------------------------------------------------------------------------
4055 Fill in Event data and post to the Main FSM
4056 ------------------------------------------------------------------------*/
4057 wdiEventData.wdiRequest = WDI_CONFIGURE_RXP_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004058 wdiEventData.pEventData = pwdiConfigureRxpFilterReqParams;
4059 wdiEventData.uEventDataSize = sizeof(*pwdiConfigureRxpFilterReqParams);
4060 wdiEventData.pCBfnc = wdiConfigureRxpFilterCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004061 wdiEventData.pUserData = pUserData;
4062
4063 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4064}/*WDI_ConfigureRxpFilterReq*/
4065
4066/**
4067 @brief WDI_SetBeaconFilterReq will be called when the upper MAC
4068 wants to set the beacon filters while in power save.
4069 Upon the call of this API the WLAN DAL will pack and
4070 send a Beacon filter request message to the
4071 lower RIVA sub-system.
4072
4073 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004074 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004075
Jeff Johnsone7245742012-09-05 17:12:55 -07004076
4077 @param pwdiBeaconFilterReqParams: the beacon
Jeff Johnson295189b2012-06-20 16:38:30 -07004078 filter as specified by the Device
4079 Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004080
Jeff Johnson295189b2012-06-20 16:38:30 -07004081 wdiBeaconFilterCb: callback for passing back the
4082 response of the set beacon filter operation received
4083 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004084
Jeff Johnson295189b2012-06-20 16:38:30 -07004085 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004086 callback
4087
Jeff Johnson295189b2012-06-20 16:38:30 -07004088 @return Result of the function call
4089*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004090WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004091WDI_SetBeaconFilterReq
4092(
4093 WDI_BeaconFilterReqParamsType *pwdiBeaconFilterReqParams,
4094 WDI_SetBeaconFilterCb wdiBeaconFilterCb,
4095 void* pUserData
4096)
4097{
4098 WDI_EventInfoType wdiEventData;
4099 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4100
4101 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004102 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004103 ------------------------------------------------------------------------*/
4104 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4105 {
4106 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4107 "WDI API call before module is initialized - Fail request");
4108
Jeff Johnsone7245742012-09-05 17:12:55 -07004109 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004110 }
4111
4112 /*------------------------------------------------------------------------
4113 Fill in Event data and post to the Main FSM
4114 ------------------------------------------------------------------------*/
4115 wdiEventData.wdiRequest = WDI_SET_BEACON_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004116 wdiEventData.pEventData = pwdiBeaconFilterReqParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07004117 wdiEventData.uEventDataSize = sizeof(*pwdiBeaconFilterReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004118 wdiEventData.pCBfnc = wdiBeaconFilterCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004119 wdiEventData.pUserData = pUserData;
4120
4121 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4122}/*WDI_SetBeaconFilterReq*/
4123
4124/**
4125 @brief WDI_RemBeaconFilterReq will be called when the upper MAC
4126 wants to remove the beacon filter for particular IE
4127 while in power save. Upon the call of this API the WLAN
4128 DAL will pack and send a remove Beacon filter request
4129 message to the lower RIVA sub-system.
4130
4131 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004132 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004133
Jeff Johnsone7245742012-09-05 17:12:55 -07004134
4135 @param pwdiBeaconFilterReqParams: the beacon
Jeff Johnson295189b2012-06-20 16:38:30 -07004136 filter as specified by the Device
4137 Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004138
Jeff Johnson295189b2012-06-20 16:38:30 -07004139 wdiBeaconFilterCb: callback for passing back the
4140 response of the remove beacon filter operation received
4141 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004142
Jeff Johnson295189b2012-06-20 16:38:30 -07004143 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004144 callback
4145
Jeff Johnson295189b2012-06-20 16:38:30 -07004146 @return Result of the function call
4147*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004148WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004149WDI_RemBeaconFilterReq
4150(
4151 WDI_RemBeaconFilterReqParamsType *pwdiBeaconFilterReqParams,
4152 WDI_RemBeaconFilterCb wdiBeaconFilterCb,
4153 void* pUserData
4154)
4155{
4156 WDI_EventInfoType wdiEventData;
4157 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4158
4159 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004160 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004161 ------------------------------------------------------------------------*/
4162 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4163 {
4164 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4165 "WDI API call before module is initialized - Fail request");
4166
Jeff Johnsone7245742012-09-05 17:12:55 -07004167 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004168 }
4169
4170 /*------------------------------------------------------------------------
4171 Fill in Event data and post to the Main FSM
4172 ------------------------------------------------------------------------*/
4173 wdiEventData.wdiRequest = WDI_REM_BEACON_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004174 wdiEventData.pEventData = pwdiBeaconFilterReqParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07004175 wdiEventData.uEventDataSize = sizeof(*pwdiBeaconFilterReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004176 wdiEventData.pCBfnc = wdiBeaconFilterCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004177 wdiEventData.pUserData = pUserData;
4178
4179 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4180}/*WDI_RemBeaconFilterReq*/
4181
4182/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004183 @brief WDI_SetRSSIThresholdsReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07004184 MAC wants to set the RSSI thresholds related
4185 configurations while in power save. Upon the call of
4186 this API the WLAN DAL will pack and send a HAL Set RSSI
4187 thresholds request message to the lower RIVA
4188 sub-system if DAL is in state STARTED.
4189
4190 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004191 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004192
4193 WDI_PostAssocReq must have been called.
4194
4195 @param pwdiUapsdInfo: the UAPSD parameters as specified by
4196 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004197
Jeff Johnson295189b2012-06-20 16:38:30 -07004198 wdiSetUapsdAcParamsCb: callback for passing back the
4199 response of the set UAPSD params operation received from
4200 the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004201
Jeff Johnson295189b2012-06-20 16:38:30 -07004202 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004203 callback
4204
Jeff Johnson295189b2012-06-20 16:38:30 -07004205 @see WDI_PostAssocReq
4206 @return Result of the function call
4207*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004208WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004209WDI_SetRSSIThresholdsReq
4210(
4211 WDI_SetRSSIThresholdsReqParamsType* pwdiRSSIThresholdsParams,
4212 WDI_SetRSSIThresholdsCb wdiSetRSSIThresholdsCb,
4213 void* pUserData
4214)
4215{
4216 WDI_EventInfoType wdiEventData;
4217 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4218
4219 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004220 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004221 ------------------------------------------------------------------------*/
4222 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4223 {
4224 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4225 "WDI API call before module is initialized - Fail request");
4226
Jeff Johnsone7245742012-09-05 17:12:55 -07004227 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004228 }
4229
4230 /*------------------------------------------------------------------------
4231 Fill in Event data and post to the Main FSM
4232 ------------------------------------------------------------------------*/
4233 wdiEventData.wdiRequest = WDI_SET_RSSI_THRESHOLDS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004234 wdiEventData.pEventData = pwdiRSSIThresholdsParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07004235 wdiEventData.uEventDataSize = sizeof(*pwdiRSSIThresholdsParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004236 wdiEventData.pCBfnc = wdiSetRSSIThresholdsCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004237 wdiEventData.pUserData = pUserData;
4238
4239 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4240}/* WDI_SetRSSIThresholdsReq*/
4241
4242/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004243 @brief WDI_HostOffloadReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004244 wants to set the filter to minimize unnecessary host
4245 wakeup due to broadcast traffic while in power save.
4246 Upon the call of this API the WLAN DAL will pack and
4247 send a HAL host offload request message to the
4248 lower RIVA sub-system if DAL is in state STARTED.
4249
4250 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004251 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004252
4253 WDI_PostAssocReq must have been called.
4254
Jeff Johnsone7245742012-09-05 17:12:55 -07004255 @param pwdiHostOffloadParams: the host offload as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07004256 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004257
Jeff Johnson295189b2012-06-20 16:38:30 -07004258 wdiHostOffloadCb: callback for passing back the response
4259 of the host offload operation received from the
4260 device
Jeff Johnsone7245742012-09-05 17:12:55 -07004261
Jeff Johnson295189b2012-06-20 16:38:30 -07004262 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004263 callback
4264
Jeff Johnson295189b2012-06-20 16:38:30 -07004265 @see WDI_PostAssocReq
4266 @return Result of the function call
4267*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004268WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004269WDI_HostOffloadReq
4270(
4271 WDI_HostOffloadReqParamsType* pwdiHostOffloadParams,
4272 WDI_HostOffloadCb wdiHostOffloadCb,
4273 void* pUserData
4274)
4275{
4276 WDI_EventInfoType wdiEventData;
4277 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4278
4279 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004280 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004281 ------------------------------------------------------------------------*/
4282 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4283 {
4284 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4285 "WDI API call before module is initialized - Fail request");
4286
Jeff Johnsone7245742012-09-05 17:12:55 -07004287 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004288 }
4289
4290 /*------------------------------------------------------------------------
4291 Fill in Event data and post to the Main FSM
4292 ------------------------------------------------------------------------*/
4293 wdiEventData.wdiRequest = WDI_HOST_OFFLOAD_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004294 wdiEventData.pEventData = pwdiHostOffloadParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07004295 wdiEventData.uEventDataSize = sizeof(*pwdiHostOffloadParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004296 wdiEventData.pCBfnc = wdiHostOffloadCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004297 wdiEventData.pUserData = pUserData;
4298
4299 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4300}/*WDI_HostOffloadReq*/
4301
4302/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004303 @brief WDI_KeepAliveReq will be called when the upper MAC
4304 wants to set the filter to send NULL or unsolicited ARP responses
Jeff Johnson295189b2012-06-20 16:38:30 -07004305 and minimize unnecessary host wakeups due to while in power save.
4306 Upon the call of this API the WLAN DAL will pack and
4307 send a HAL Keep Alive request message to the
4308 lower RIVA sub-system if DAL is in state STARTED.
4309
4310 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004311 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004312
4313 WDI_PostAssocReq must have been called.
4314
Jeff Johnsone7245742012-09-05 17:12:55 -07004315 @param pwdiKeepAliveParams: the Keep Alive as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07004316 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004317
Jeff Johnson295189b2012-06-20 16:38:30 -07004318 wdiKeepAliveCb: callback for passing back the response
4319 of the Keep Alive operation received from the
4320 device
Jeff Johnsone7245742012-09-05 17:12:55 -07004321
Jeff Johnson295189b2012-06-20 16:38:30 -07004322 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004323 callback
4324
Jeff Johnson295189b2012-06-20 16:38:30 -07004325 @see WDI_PostAssocReq
4326 @return Result of the function call
4327*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004328WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004329WDI_KeepAliveReq
4330(
4331 WDI_KeepAliveReqParamsType* pwdiKeepAliveParams,
4332 WDI_KeepAliveCb wdiKeepAliveCb,
4333 void* pUserData
4334)
4335{
4336 WDI_EventInfoType wdiEventData;
4337 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4338
4339 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004340 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004341 ------------------------------------------------------------------------*/
4342 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4343 {
4344 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4345 "WDI_KeepAliveReq: WDI API call before module "
4346 "is initialized - Fail request");
4347
Jeff Johnsone7245742012-09-05 17:12:55 -07004348 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004349 }
4350
4351 /*------------------------------------------------------------------------
4352 Fill in Event data and post to the Main FSM
4353 ------------------------------------------------------------------------*/
4354 wdiEventData.wdiRequest = WDI_KEEP_ALIVE_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004355 wdiEventData.pEventData = pwdiKeepAliveParams;
4356 wdiEventData.uEventDataSize = sizeof(*pwdiKeepAliveParams);
4357 wdiEventData.pCBfnc = wdiKeepAliveCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004358 wdiEventData.pUserData = pUserData;
4359
4360 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4361}/*WDI_KeepAliveReq*/
4362
4363/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004364 @brief WDI_WowlAddBcPtrnReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004365 wants to set the Wowl Bcast ptrn to minimize unnecessary
4366 host wakeup due to broadcast traffic while in power
4367 save. Upon the call of this API the WLAN DAL will pack
4368 and send a HAL Wowl Bcast ptrn request message to the
4369 lower RIVA sub-system if DAL is in state STARTED.
4370
4371 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004372 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004373
4374 WDI_PostAssocReq must have been called.
4375
Jeff Johnsone7245742012-09-05 17:12:55 -07004376 @param pwdiWowlAddBcPtrnParams: the Wowl bcast ptrn as
Jeff Johnson295189b2012-06-20 16:38:30 -07004377 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004378
Jeff Johnson295189b2012-06-20 16:38:30 -07004379 wdiWowlAddBcPtrnCb: callback for passing back the
4380 response of the add Wowl bcast ptrn operation received
4381 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004382
Jeff Johnson295189b2012-06-20 16:38:30 -07004383 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004384 callback
4385
Jeff Johnson295189b2012-06-20 16:38:30 -07004386 @see WDI_PostAssocReq
4387 @return Result of the function call
4388*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004389WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004390WDI_WowlAddBcPtrnReq
4391(
4392 WDI_WowlAddBcPtrnReqParamsType* pwdiWowlAddBcPtrnParams,
4393 WDI_WowlAddBcPtrnCb wdiWowlAddBcPtrnCb,
4394 void* pUserData
4395)
4396{
4397 WDI_EventInfoType wdiEventData;
4398 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4399
4400 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004401 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004402 ------------------------------------------------------------------------*/
4403 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4404 {
4405 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4406 "WDI API call before module is initialized - Fail request");
4407
Jeff Johnsone7245742012-09-05 17:12:55 -07004408 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004409 }
4410
4411 /*------------------------------------------------------------------------
4412 Fill in Event data and post to the Main FSM
4413 ------------------------------------------------------------------------*/
4414 wdiEventData.wdiRequest = WDI_WOWL_ADD_BC_PTRN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004415 wdiEventData.pEventData = pwdiWowlAddBcPtrnParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07004416 wdiEventData.uEventDataSize = sizeof(*pwdiWowlAddBcPtrnParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004417 wdiEventData.pCBfnc = wdiWowlAddBcPtrnCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004418 wdiEventData.pUserData = pUserData;
4419
4420 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4421}/*WDI_WowlAddBcPtrnReq*/
4422
4423/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004424 @brief WDI_WowlDelBcPtrnReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004425 wants to clear the Wowl Bcast ptrn. Upon the call of
4426 this API the WLAN DAL will pack and send a HAL delete
4427 Wowl Bcast ptrn request message to the lower RIVA
4428 sub-system if DAL is in state STARTED.
4429
4430 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004431 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004432
4433 WDI_WowlAddBcPtrnReq must have been called.
4434
Jeff Johnsone7245742012-09-05 17:12:55 -07004435 @param pwdiWowlDelBcPtrnParams: the Wowl bcast ptrn as
Jeff Johnson295189b2012-06-20 16:38:30 -07004436 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004437
Jeff Johnson295189b2012-06-20 16:38:30 -07004438 wdiWowlDelBcPtrnCb: callback for passing back the
4439 response of the del Wowl bcast ptrn operation received
4440 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004441
Jeff Johnson295189b2012-06-20 16:38:30 -07004442 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004443 callback
4444
Jeff Johnson295189b2012-06-20 16:38:30 -07004445 @see WDI_WowlAddBcPtrnReq
4446 @return Result of the function call
4447*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004448WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004449WDI_WowlDelBcPtrnReq
4450(
4451 WDI_WowlDelBcPtrnReqParamsType* pwdiWowlDelBcPtrnParams,
4452 WDI_WowlDelBcPtrnCb wdiWowlDelBcPtrnCb,
4453 void* pUserData
4454)
4455{
4456 WDI_EventInfoType wdiEventData;
4457 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4458
4459 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004460 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004461 ------------------------------------------------------------------------*/
4462 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4463 {
4464 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4465 "WDI API call before module is initialized - Fail request");
4466
Jeff Johnsone7245742012-09-05 17:12:55 -07004467 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004468 }
4469
4470 /*------------------------------------------------------------------------
4471 Fill in Event data and post to the Main FSM
4472 ------------------------------------------------------------------------*/
4473 wdiEventData.wdiRequest = WDI_WOWL_DEL_BC_PTRN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004474 wdiEventData.pEventData = pwdiWowlDelBcPtrnParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07004475 wdiEventData.uEventDataSize = sizeof(*pwdiWowlDelBcPtrnParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004476 wdiEventData.pCBfnc = wdiWowlDelBcPtrnCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004477 wdiEventData.pUserData = pUserData;
4478
4479 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4480}/*WDI_WowlDelBcPtrnReq*/
4481
4482/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004483 @brief WDI_WowlEnterReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004484 wants to enter the Wowl state to minimize unnecessary
4485 host wakeup while in power save. Upon the call of this
4486 API the WLAN DAL will pack and send a HAL Wowl enter
4487 request message to the lower RIVA sub-system if DAL is
4488 in state STARTED.
4489
4490 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004491 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004492
4493 WDI_PostAssocReq must have been called.
4494
Jeff Johnsone7245742012-09-05 17:12:55 -07004495 @param pwdiWowlEnterReqParams: the Wowl enter info as
Jeff Johnson295189b2012-06-20 16:38:30 -07004496 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004497
Jeff Johnson295189b2012-06-20 16:38:30 -07004498 wdiWowlEnterReqCb: callback for passing back the
4499 response of the enter Wowl operation received from the
4500 device
Jeff Johnsone7245742012-09-05 17:12:55 -07004501
Jeff Johnson295189b2012-06-20 16:38:30 -07004502 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004503 callback
4504
Jeff Johnson295189b2012-06-20 16:38:30 -07004505 @see WDI_PostAssocReq
4506 @return Result of the function call
4507*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004508WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004509WDI_WowlEnterReq
4510(
4511 WDI_WowlEnterReqParamsType* pwdiWowlEnterParams,
4512 WDI_WowlEnterReqCb wdiWowlEnterCb,
4513 void* pUserData
4514)
4515{
4516 WDI_EventInfoType wdiEventData;
4517 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4518
4519 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004520 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004521 ------------------------------------------------------------------------*/
4522 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4523 {
4524 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4525 "WDI API call before module is initialized - Fail request");
4526
Jeff Johnsone7245742012-09-05 17:12:55 -07004527 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004528 }
4529
4530 /*------------------------------------------------------------------------
4531 Fill in Event data and post to the Main FSM
4532 ------------------------------------------------------------------------*/
4533 wdiEventData.wdiRequest = WDI_WOWL_ENTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004534 wdiEventData.pEventData = pwdiWowlEnterParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07004535 wdiEventData.uEventDataSize = sizeof(*pwdiWowlEnterParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004536 wdiEventData.pCBfnc = wdiWowlEnterCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004537 wdiEventData.pUserData = pUserData;
4538
4539 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4540}/*WDI_WowlEnterReq*/
4541
4542/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004543 @brief WDI_WowlExitReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004544 wants to exit the Wowl state. Upon the call of this API
4545 the WLAN DAL will pack and send a HAL Wowl exit request
4546 message to the lower RIVA sub-system if DAL is in state
4547 STARTED.
4548
4549 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004550 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004551
4552 WDI_WowlEnterReq must have been called.
4553
Jeff Johnsone7245742012-09-05 17:12:55 -07004554 @param pwdiWowlExitReqParams: the Wowl exit info as
Jeff Johnson295189b2012-06-20 16:38:30 -07004555 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004556
Jeff Johnson295189b2012-06-20 16:38:30 -07004557 wdiWowlExitReqCb: callback for passing back the response
4558 of the exit Wowl operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004559
Jeff Johnson295189b2012-06-20 16:38:30 -07004560 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004561 callback
4562
Jeff Johnson295189b2012-06-20 16:38:30 -07004563 @see WDI_WowlEnterReq
4564 @return Result of the function call
4565*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004566WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004567WDI_WowlExitReq
4568(
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -07004569 WDI_WowlExitReqParamsType* pwdiWowlExitParams,
Jeff Johnson295189b2012-06-20 16:38:30 -07004570 WDI_WowlExitReqCb wdiWowlExitCb,
4571 void* pUserData
4572)
4573{
4574 WDI_EventInfoType wdiEventData;
4575 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4576
4577 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004578 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004579 ------------------------------------------------------------------------*/
4580 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4581 {
4582 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4583 "WDI API call before module is initialized - Fail request");
4584
Jeff Johnsone7245742012-09-05 17:12:55 -07004585 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004586 }
4587
4588 /*------------------------------------------------------------------------
4589 Fill in Event data and post to the Main FSM
4590 ------------------------------------------------------------------------*/
4591 wdiEventData.wdiRequest = WDI_WOWL_EXIT_REQ;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -07004592 wdiEventData.pEventData = pwdiWowlExitParams;
4593 wdiEventData.uEventDataSize = sizeof(*pwdiWowlExitParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004594 wdiEventData.pCBfnc = wdiWowlExitCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004595 wdiEventData.pUserData = pUserData;
4596
4597 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4598}/*WDI_WowlExitReq*/
4599
4600/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004601 @brief WDI_ConfigureAppsCpuWakeupStateReq will be called when
Jeff Johnson295189b2012-06-20 16:38:30 -07004602 the upper MAC wants to dynamically adjusts the listen
4603 interval based on the WLAN/MSM activity. Upon the call
4604 of this API the WLAN DAL will pack and send a HAL
4605 configure Apps Cpu Wakeup State request message to the
4606 lower RIVA sub-system.
4607
4608 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004609 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004610
Jeff Johnsone7245742012-09-05 17:12:55 -07004611
4612 @param pwdiConfigureAppsCpuWakeupStateReqParams: the
Jeff Johnson295189b2012-06-20 16:38:30 -07004613 Apps Cpu Wakeup State as specified by the
4614 Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004615
Jeff Johnson295189b2012-06-20 16:38:30 -07004616 wdiConfigureAppsCpuWakeupStateCb: callback for passing
4617 back the response of the configure Apps Cpu Wakeup State
4618 operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004619
Jeff Johnson295189b2012-06-20 16:38:30 -07004620 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004621 callback
4622
Jeff Johnson295189b2012-06-20 16:38:30 -07004623 @return Result of the function call
4624*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004625WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004626WDI_ConfigureAppsCpuWakeupStateReq
4627(
4628 WDI_ConfigureAppsCpuWakeupStateReqParamsType *pwdiConfigureAppsCpuWakeupStateReqParams,
4629 WDI_ConfigureAppsCpuWakeupStateCb wdiConfigureAppsCpuWakeupStateCb,
4630 void* pUserData
4631)
4632{
4633 WDI_EventInfoType wdiEventData;
4634 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4635
4636 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004637 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004638 ------------------------------------------------------------------------*/
4639 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4640 {
4641 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4642 "WDI API call before module is initialized - Fail request");
4643
Jeff Johnsone7245742012-09-05 17:12:55 -07004644 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004645 }
4646
4647 /*------------------------------------------------------------------------
4648 Fill in Event data and post to the Main FSM
4649 ------------------------------------------------------------------------*/
4650 wdiEventData.wdiRequest = WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004651 wdiEventData.pEventData = pwdiConfigureAppsCpuWakeupStateReqParams;
4652 wdiEventData.uEventDataSize = sizeof(*pwdiConfigureAppsCpuWakeupStateReqParams);
4653 wdiEventData.pCBfnc = wdiConfigureAppsCpuWakeupStateCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004654 wdiEventData.pUserData = pUserData;
4655
4656 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4657}/*WDI_ConfigureAppsCpuWakeupStateReq*/
4658/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004659 @brief WDI_FlushAcReq will be called when the upper MAC wants
Jeff Johnson295189b2012-06-20 16:38:30 -07004660 to to perform a flush operation on a given AC. Upon the
4661 call of this API the WLAN DAL will pack and send a HAL
4662 Flush AC request message to the lower RIVA sub-system if
4663 DAL is in state STARTED.
4664
4665 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004666 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004667
4668 WDI_AddBAReq must have been called.
4669
Jeff Johnsone7245742012-09-05 17:12:55 -07004670 @param pwdiFlushAcReqParams: the Flush AC parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07004671 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004672
Jeff Johnson295189b2012-06-20 16:38:30 -07004673 wdiFlushAcRspCb: callback for passing back the response
4674 of the Flush AC operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004675
Jeff Johnson295189b2012-06-20 16:38:30 -07004676 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004677 callback
4678
Jeff Johnson295189b2012-06-20 16:38:30 -07004679 @see WDI_AddBAReq
4680 @return Result of the function call
4681*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004682WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004683WDI_FlushAcReq
4684(
4685 WDI_FlushAcReqParamsType* pwdiFlushAcReqParams,
4686 WDI_FlushAcRspCb wdiFlushAcRspCb,
4687 void* pUserData
4688)
4689{
4690 WDI_EventInfoType wdiEventData;
4691 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4692
4693 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004694 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004695 ------------------------------------------------------------------------*/
4696 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4697 {
4698 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4699 "WDI API call before module is initialized - Fail request");
4700
Jeff Johnsone7245742012-09-05 17:12:55 -07004701 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004702 }
4703
4704 /*------------------------------------------------------------------------
4705 Fill in Event data and post to the Main FSM
4706 ------------------------------------------------------------------------*/
4707 wdiEventData.wdiRequest = WDI_FLUSH_AC_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004708 wdiEventData.pEventData = pwdiFlushAcReqParams;
4709 wdiEventData.uEventDataSize = sizeof(*pwdiFlushAcReqParams);
4710 wdiEventData.pCBfnc = wdiFlushAcRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004711 wdiEventData.pUserData = pUserData;
4712
4713 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4714
4715}/*WDI_FlushAcReq*/
4716
4717/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004718 @brief WDI_BtAmpEventReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004719 wants to notify the lower mac on a BT AMP event. This is
4720 to inform BTC-SLM that some BT AMP event occurred. Upon
4721 the call of this API the WLAN DAL will pack and send a
4722 HAL BT AMP event request message to the lower RIVA
4723 sub-system if DAL is in state STARTED.
4724
4725 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004726 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004727
Jeff Johnsone7245742012-09-05 17:12:55 -07004728
4729 @param wdiBtAmpEventReqParams: the BT AMP event parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07004730 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004731
Jeff Johnson295189b2012-06-20 16:38:30 -07004732 wdiBtAmpEventRspCb: callback for passing back the
4733 response of the BT AMP event operation received from the
4734 device
Jeff Johnsone7245742012-09-05 17:12:55 -07004735
Jeff Johnson295189b2012-06-20 16:38:30 -07004736 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004737 callback
4738
Jeff Johnson295189b2012-06-20 16:38:30 -07004739 @return Result of the function call
4740*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004741WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004742WDI_BtAmpEventReq
4743(
4744 WDI_BtAmpEventParamsType* pwdiBtAmpEventReqParams,
4745 WDI_BtAmpEventRspCb wdiBtAmpEventRspCb,
4746 void* pUserData
4747)
4748{
4749 WDI_EventInfoType wdiEventData;
4750 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4751
4752 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004753 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004754 ------------------------------------------------------------------------*/
4755 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4756 {
4757 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4758 "WDI API call before module is initialized - Fail request");
4759
Jeff Johnsone7245742012-09-05 17:12:55 -07004760 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004761 }
4762
4763 /*------------------------------------------------------------------------
4764 Fill in Event data and post to the Main FSM
4765 ------------------------------------------------------------------------*/
4766 wdiEventData.wdiRequest = WDI_BTAMP_EVENT_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004767 wdiEventData.pEventData = pwdiBtAmpEventReqParams;
4768 wdiEventData.uEventDataSize = sizeof(*pwdiBtAmpEventReqParams);
4769 wdiEventData.pCBfnc = wdiBtAmpEventRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004770 wdiEventData.pUserData = pUserData;
4771
4772 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4773
4774}/*WDI_BtAmpEventReq*/
4775
Jeff Johnsone7245742012-09-05 17:12:55 -07004776#ifdef FEATURE_OEM_DATA_SUPPORT
4777/**
4778 @brief WDI_Start Oem Data Req will be called when the upper MAC
4779 wants to notify the lower mac on a oem data Req event.Upon
4780 the call of this API the WLAN DAL will pack and send a
4781 HAL OEM Data Req event request message to the lower RIVA
4782 sub-system if DAL is in state STARTED.
4783
4784 In state BUSY this request will be queued. Request won't
4785 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004786
4787
Jeff Johnsone7245742012-09-05 17:12:55 -07004788
4789 @param pwdiOemDataReqParams: the Oem Data Req as
4790 specified by the Device Interface
4791
4792 wdiStartOemDataRspCb: callback for passing back the
4793 response of the Oem Data Req received from the
4794 device
4795
4796 pUserData: user data will be passed back with the
4797 callback
4798
4799 @return Result of the function call
4800*/
4801WDI_Status
4802WDI_StartOemDataReq
4803(
4804 WDI_oemDataReqParamsType* pwdiOemDataReqParams,
4805 WDI_oemDataRspCb wdiOemDataRspCb,
4806 void* pUserData
4807)
4808{
4809 WDI_EventInfoType wdiEventData;
4810 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4811
4812 /*------------------------------------------------------------------------
4813 Sanity Check
4814 ------------------------------------------------------------------------*/
4815 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4816 {
4817 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4818 "WDI API call before module is initialized - Fail request");
4819
4820 return WDI_STATUS_E_NOT_ALLOWED;
4821 }
4822
4823 /*------------------------------------------------------------------------
4824 Fill in Event data and post to the Main FSM
4825 ------------------------------------------------------------------------*/
4826 wdiEventData.wdiRequest = WDI_START_OEM_DATA_REQ;
4827 wdiEventData.pEventData = pwdiOemDataReqParams;
4828 wdiEventData.uEventDataSize = sizeof(*pwdiOemDataReqParams);
4829 wdiEventData.pCBfnc = wdiOemDataRspCb;
4830 wdiEventData.pUserData = pUserData;
4831
4832 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4833
4834
4835}
4836
4837#endif
4838
4839
4840/*========================================================================
4841
Jeff Johnson295189b2012-06-20 16:38:30 -07004842 CONTROL APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07004843
Jeff Johnson295189b2012-06-20 16:38:30 -07004844==========================================================================*/
4845/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004846 @brief WDI_SwitchChReq will be called when the upper MAC wants
Jeff Johnson295189b2012-06-20 16:38:30 -07004847 the WLAN HW to change the current channel of operation.
4848 Upon the call of this API the WLAN DAL will pack and
4849 send a HAL Start request message to the lower RIVA
4850 sub-system if DAL is in state STARTED.
4851
4852 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004853 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004854
4855 WDI_Start must have been called.
4856
Jeff Johnsone7245742012-09-05 17:12:55 -07004857 @param wdiSwitchChReqParams: the switch ch parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07004858 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004859
Jeff Johnson295189b2012-06-20 16:38:30 -07004860 wdiSwitchChRspCb: callback for passing back the response
4861 of the switch ch operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004862
Jeff Johnson295189b2012-06-20 16:38:30 -07004863 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004864 callback
4865
Jeff Johnson295189b2012-06-20 16:38:30 -07004866 @see WDI_Start
4867 @return Result of the function call
4868*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004869WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004870WDI_SwitchChReq
4871(
4872 WDI_SwitchChReqParamsType* pwdiSwitchChReqParams,
4873 WDI_SwitchChRspCb wdiSwitchChRspCb,
4874 void* pUserData
4875)
4876{
4877 WDI_EventInfoType wdiEventData;
4878 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4879
4880 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004881 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004882 ------------------------------------------------------------------------*/
4883 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4884 {
4885 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4886 "WDI API call before module is initialized - Fail request");
4887
Jeff Johnsone7245742012-09-05 17:12:55 -07004888 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004889 }
4890
4891 /*------------------------------------------------------------------------
4892 Fill in Event data and post to the Main FSM
4893 ------------------------------------------------------------------------*/
4894 wdiEventData.wdiRequest = WDI_CH_SWITCH_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004895 wdiEventData.pEventData = pwdiSwitchChReqParams;
4896 wdiEventData.uEventDataSize = sizeof(*pwdiSwitchChReqParams);
4897 wdiEventData.pCBfnc = wdiSwitchChRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004898 wdiEventData.pUserData = pUserData;
4899
4900 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4901
4902}/*WDI_SwitchChReq*/
4903
Kalikinkar dhara1e83b772014-02-06 12:59:22 -08004904/**
4905 @brief WDI_SwitchChReq_V1 will be called when the upper MAC wants
4906 the WLAN HW to change the current channel of operation.
4907 Upon the call of this API the WLAN DAL will pack and
4908 send a HAL Start request message to the lower RIVA
4909 sub-system if DAL is in state STARTED.
4910 This request message also includes source of channel switch,
4911 like CSA,
4912
4913 In state BUSY this request will be queued. Request won't
4914 be allowed in any other state.
4915
4916 WDI_Start must have been called.
4917
4918 @param wdiSwitchChReqParams: the switch ch parameters as
4919 specified by the Device Interface
4920
4921 wdiSwitchChRspCb: callback for passing back the response
4922 of the switch ch operation received from the device
4923
4924 pUserData: user data will be passed back with the
4925 callback
4926
4927 @see WDI_Start
4928 @return Result of the function call
4929*/
4930WDI_Status
4931WDI_SwitchChReq_V1
4932(
4933 WDI_SwitchChReqParamsType_V1* pwdiSwitchChReqParams,
4934 WDI_SwitchChRspCb_V1 wdiSwitchChRspCb,
4935 void* pUserData
4936)
4937{
4938 WDI_EventInfoType wdiEventData;
4939 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4940 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
4941 "WDI API call WDI_SwitchChReq_V1");
4942 /*------------------------------------------------------------------------
4943 Sanity Check
4944 ------------------------------------------------------------------------*/
4945 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4946 {
4947 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4948 "WDI API call before module is initialized - Fail request");
4949
4950 return WDI_STATUS_E_NOT_ALLOWED;
4951 }
4952
4953 /*------------------------------------------------------------------------
4954 Fill in Event data and post to the Main FSM
4955 ------------------------------------------------------------------------*/
4956 wdiEventData.wdiRequest = WDI_CH_SWITCH_REQ_V1;
4957 wdiEventData.pEventData = pwdiSwitchChReqParams;
4958 wdiEventData.uEventDataSize = sizeof(*pwdiSwitchChReqParams);
4959 wdiEventData.pCBfnc = wdiSwitchChRspCb;
4960 wdiEventData.pUserData = pUserData;
4961
4962 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4963
4964}/*WDI_SwitchChReq_V1*/
4965
Jeff Johnson295189b2012-06-20 16:38:30 -07004966
4967/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004968 @brief WDI_ConfigSTAReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004969 wishes to add or update a STA in HW. Upon the call of
4970 this API the WLAN DAL will pack and send a HAL Start
4971 message request message to the lower RIVA sub-system if
4972 DAL is in state STARTED.
4973
4974 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004975 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004976
4977 WDI_Start must have been called.
4978
Jeff Johnsone7245742012-09-05 17:12:55 -07004979 @param wdiConfigSTAReqParams: the config STA parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07004980 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004981
Jeff Johnson295189b2012-06-20 16:38:30 -07004982 wdiConfigSTARspCb: callback for passing back the
4983 response of the config STA operation received from the
4984 device
Jeff Johnsone7245742012-09-05 17:12:55 -07004985
Jeff Johnson295189b2012-06-20 16:38:30 -07004986 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004987 callback
4988
Jeff Johnson295189b2012-06-20 16:38:30 -07004989 @see WDI_Start
4990 @return Result of the function call
4991*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004992WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004993WDI_ConfigSTAReq
4994(
4995 WDI_ConfigSTAReqParamsType* pwdiConfigSTAReqParams,
4996 WDI_ConfigSTARspCb wdiConfigSTARspCb,
4997 void* pUserData
4998)
4999{
5000 WDI_EventInfoType wdiEventData;
5001 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5002
5003 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005004 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005005 ------------------------------------------------------------------------*/
5006 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5007 {
5008 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5009 "WDI API call before module is initialized - Fail request");
5010
Jeff Johnsone7245742012-09-05 17:12:55 -07005011 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005012 }
5013
5014 /*------------------------------------------------------------------------
5015 Fill in Event data and post to the Main FSM
5016 ------------------------------------------------------------------------*/
5017 wdiEventData.wdiRequest = WDI_CONFIG_STA_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005018 wdiEventData.pEventData = pwdiConfigSTAReqParams;
5019 wdiEventData.uEventDataSize = sizeof(*pwdiConfigSTAReqParams);
5020 wdiEventData.pCBfnc = wdiConfigSTARspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005021 wdiEventData.pUserData = pUserData;
5022
5023 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5024
5025}/*WDI_ConfigSTAReq*/
5026
Manjunathappa Prakash86f78ca2014-02-10 18:09:15 -08005027 /**
5028 @brief WDI_UpdateChannelReq will be called when the upper MAC
5029 wants to update the channel list on change in country code.
5030
5031 In state BUSY this request will be queued. Request won't
5032 be allowed in any other state.
5033
5034 WDI_UpdateChannelReq must have been called.
5035
5036 @param wdiUpdateChannelReqParams: the updated channel parameters
5037 as specified by the Device Interface
5038
5039 wdiUpdateChannelRspCb: callback for passing back the
5040 response of the update channel operation received from
5041 the device
5042
5043 pUserData: user data will be passed back with the
5044 callback
5045
5046 @return Result of the function call
5047*/
5048WDI_Status
5049WDI_UpdateChannelReq
5050(
5051 WDI_UpdateChReqParamsType *pwdiUpdateChannelReqParams,
5052 WDI_UpdateChannelRspCb wdiUpdateChannelRspCb,
5053 void* pUserData
5054)
5055{
5056 WDI_EventInfoType wdiEventData = {{0}};
5057 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5058
5059 /*------------------------------------------------------------------------
5060 Sanity Check
5061 ------------------------------------------------------------------------*/
5062 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5063 {
5064 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5065 "WDI API call before module is initialized - Fail request");
5066
5067 return WDI_STATUS_E_NOT_ALLOWED;
5068 }
5069
5070 /*------------------------------------------------------------------------
5071 Fill in Event data and post to the Main FSM
5072 ------------------------------------------------------------------------*/
5073 wdiEventData.wdiRequest = WDI_UPDATE_CHAN_REQ;
5074 wdiEventData.pEventData = pwdiUpdateChannelReqParams;
5075 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateChannelReqParams);
5076 wdiEventData.pCBfnc = wdiUpdateChannelRspCb;
5077 wdiEventData.pUserData = pUserData;
5078
5079 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5080
5081}/*WDI_UpdateChannelReq*/
5082
Jeff Johnson295189b2012-06-20 16:38:30 -07005083/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005084 @brief WDI_SetLinkStateReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07005085 wants to change the state of an ongoing link. Upon the
5086 call of this API the WLAN DAL will pack and send a HAL
5087 Start message request message to the lower RIVA
5088 sub-system if DAL is in state STARTED.
5089
5090 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005091 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005092
5093 WDI_JoinStartReq must have been called.
5094
Jeff Johnsone7245742012-09-05 17:12:55 -07005095 @param wdiSetLinkStateReqParams: the set link state parameters
Jeff Johnson295189b2012-06-20 16:38:30 -07005096 as specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005097
Jeff Johnson295189b2012-06-20 16:38:30 -07005098 wdiSetLinkStateRspCb: callback for passing back the
5099 response of the set link state operation received from
5100 the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005101
Jeff Johnson295189b2012-06-20 16:38:30 -07005102 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005103 callback
5104
Jeff Johnson295189b2012-06-20 16:38:30 -07005105 @see WDI_JoinStartReq
5106 @return Result of the function call
5107*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005108WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005109WDI_SetLinkStateReq
5110(
5111 WDI_SetLinkReqParamsType* pwdiSetLinkStateReqParams,
5112 WDI_SetLinkStateRspCb wdiSetLinkStateRspCb,
5113 void* pUserData
5114)
5115{
5116 WDI_EventInfoType wdiEventData;
5117 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5118
5119 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005120 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005121 ------------------------------------------------------------------------*/
5122 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5123 {
5124 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5125 "WDI API call before module is initialized - Fail request");
5126
Jeff Johnsone7245742012-09-05 17:12:55 -07005127 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005128 }
5129
5130 /*------------------------------------------------------------------------
5131 Fill in Event data and post to the Main FSM
5132 ------------------------------------------------------------------------*/
5133 wdiEventData.wdiRequest = WDI_SET_LINK_ST_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005134 wdiEventData.pEventData = pwdiSetLinkStateReqParams;
5135 wdiEventData.uEventDataSize = sizeof(*pwdiSetLinkStateReqParams);
5136 wdiEventData.pCBfnc = wdiSetLinkStateRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005137 wdiEventData.pUserData = pUserData;
5138
5139 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5140
5141}/*WDI_SetLinkStateReq*/
5142
5143
5144/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005145 @brief WDI_GetStatsReq will be called when the upper MAC wants
Jeff Johnson295189b2012-06-20 16:38:30 -07005146 to get statistics (MIB counters) from the device. Upon
5147 the call of this API the WLAN DAL will pack and send a
5148 HAL Start request message to the lower RIVA sub-system
5149 if DAL is in state STARTED.
5150
5151 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005152 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005153
5154 WDI_Start must have been called.
5155
Jeff Johnsone7245742012-09-05 17:12:55 -07005156 @param wdiGetStatsReqParams: the stats parameters to get as
Jeff Johnson295189b2012-06-20 16:38:30 -07005157 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005158
Jeff Johnson295189b2012-06-20 16:38:30 -07005159 wdiGetStatsRspCb: callback for passing back the response
5160 of the get stats operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005161
Jeff Johnson295189b2012-06-20 16:38:30 -07005162 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005163 callback
5164
Jeff Johnson295189b2012-06-20 16:38:30 -07005165 @see WDI_Start
5166 @return Result of the function call
5167*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005168WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005169WDI_GetStatsReq
5170(
5171 WDI_GetStatsReqParamsType* pwdiGetStatsReqParams,
5172 WDI_GetStatsRspCb wdiGetStatsRspCb,
5173 void* pUserData
5174)
5175{
5176 WDI_EventInfoType wdiEventData;
5177 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5178
5179 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005180 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005181 ------------------------------------------------------------------------*/
5182 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5183 {
5184 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5185 "WDI API call before module is initialized - Fail request");
5186
Jeff Johnsone7245742012-09-05 17:12:55 -07005187 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005188 }
5189
5190 /*------------------------------------------------------------------------
5191 Fill in Event data and post to the Main FSM
5192 ------------------------------------------------------------------------*/
5193 wdiEventData.wdiRequest = WDI_GET_STATS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005194 wdiEventData.pEventData = pwdiGetStatsReqParams;
5195 wdiEventData.uEventDataSize = sizeof(*pwdiGetStatsReqParams);
5196 wdiEventData.pCBfnc = wdiGetStatsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005197 wdiEventData.pUserData = pUserData;
5198
5199 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5200
5201}/*WDI_GetStatsReq*/
5202
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -08005203#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_ESE || defined(FEATURE_WLAN_LFR)
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -08005204/**
5205 @brief WDI_GetRoamRssiReq will be called when the upper MAC wants
5206 to get roam rssi from the device. Upon
5207 the call of this API the WLAN DAL will pack and send a
5208 HAL Start request message to the lower RIVA sub-system
5209 if DAL is in state STARTED.
5210
5211 In state BUSY this request will be queued. Request won't
5212 be allowed in any other state.
5213
5214 WDI_Start must have been called.
5215
5216 @param wdiGetRoamRssiReqParams: the stats parameters to get as
5217 specified by the Device Interface
5218
5219 wdiGetRoamRssiRspCb: callback for passing back the response
5220 of the get stats operation received from the device
5221
5222 pUserData: user data will be passed back with the
5223 callback
5224
5225 @see WDI_Start
5226 @return Result of the function call
5227*/
5228WDI_Status
5229WDI_GetRoamRssiReq
5230(
5231 WDI_GetRoamRssiReqParamsType* pwdiGetRoamRssiReqParams,
5232 WDI_GetRoamRssiRspCb wdiGetRoamRssiRspCb,
5233 void* pUserData
5234)
5235{
5236 WDI_EventInfoType wdiEventData;
5237 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5238
5239 /*------------------------------------------------------------------------
5240 Sanity Check
5241 ------------------------------------------------------------------------*/
5242 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5243 {
5244 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5245 "WDI API call before module is initialized - Fail request");
5246
5247 return WDI_STATUS_E_NOT_ALLOWED;
5248 }
5249 /*------------------------------------------------------------------------
5250 Fill in Event data and post to the Main FSM
5251 ------------------------------------------------------------------------*/
5252 wdiEventData.wdiRequest = WDI_GET_ROAM_RSSI_REQ;
5253 wdiEventData.pEventData = pwdiGetRoamRssiReqParams;
5254 wdiEventData.uEventDataSize = sizeof(*pwdiGetRoamRssiReqParams);
5255 wdiEventData.pCBfnc = wdiGetRoamRssiRspCb;
5256 wdiEventData.pUserData = pUserData;
5257
5258 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5259
5260}/*WDI_GetRoamRssiReq*/
5261#endif
5262
Jeff Johnson295189b2012-06-20 16:38:30 -07005263
5264/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005265 @brief WDI_UpdateCfgReq will be called when the upper MAC when
Jeff Johnson295189b2012-06-20 16:38:30 -07005266 it wishes to change the configuration of the WLAN
5267 Device. Upon the call of this API the WLAN DAL will pack
5268 and send a HAL Update CFG request message to the lower
5269 RIVA sub-system if DAL is in state STARTED.
5270
5271 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005272 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005273
5274 WDI_Start must have been called.
5275
Jeff Johnsone7245742012-09-05 17:12:55 -07005276 @param wdiUpdateCfgReqParams: the update cfg parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07005277 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005278
Jeff Johnson295189b2012-06-20 16:38:30 -07005279 wdiUpdateCfgsRspCb: callback for passing back the
5280 response of the update cfg operation received from the
5281 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_Start
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_UpdateCfgReq
5291(
5292 WDI_UpdateCfgReqParamsType* pwdiUpdateCfgReqParams,
5293 WDI_UpdateCfgRspCb wdiUpdateCfgsRspCb,
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_UPDATE_CFG_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005315 wdiEventData.pEventData = pwdiUpdateCfgReqParams;
5316 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateCfgReqParams);
5317 wdiEventData.pCBfnc = wdiUpdateCfgsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005318 wdiEventData.pUserData = pUserData;
5319
5320 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5321
5322}/*WDI_UpdateCfgReq*/
5323
5324
5325
5326/**
5327 @brief WDI_AddBAReq will be called when the upper MAC has setup
5328 successfully a BA session and needs to notify the HW for
5329 the appropriate settings to take place. Upon the call of
5330 this API the WLAN DAL will pack and send a HAL Add BA
5331 request message to the lower RIVA sub-system if DAL is
5332 in state STARTED.
5333
5334 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005335 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005336
5337 WDI_PostAssocReq must have been called.
5338
5339 @param wdiAddBAReqParams: the add BA parameters as specified by
5340 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005341
Jeff Johnson295189b2012-06-20 16:38:30 -07005342 wdiAddBARspCb: callback for passing back the response of
5343 the add BA operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005344
Jeff Johnson295189b2012-06-20 16:38:30 -07005345 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005346 callback
5347
Jeff Johnson295189b2012-06-20 16:38:30 -07005348 @see WDI_PostAssocReq
5349 @return Result of the function call
5350*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005351WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005352WDI_AddBAReq
5353(
5354 WDI_AddBAReqParamsType* pwdiAddBAReqParams,
5355 WDI_AddBARspCb wdiAddBARspCb,
5356 void* pUserData
5357)
5358{
5359 WDI_EventInfoType wdiEventData;
5360 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5361
5362 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005363 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005364 ------------------------------------------------------------------------*/
5365 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5366 {
5367 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5368 "WDI API call before module is initialized - Fail request");
5369
Jeff Johnsone7245742012-09-05 17:12:55 -07005370 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005371 }
5372
5373 /*------------------------------------------------------------------------
5374 Fill in Event data and post to the Main FSM
5375 ------------------------------------------------------------------------*/
5376 wdiEventData.wdiRequest = WDI_ADD_BA_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005377 wdiEventData.pEventData = pwdiAddBAReqParams;
5378 wdiEventData.uEventDataSize = sizeof(*pwdiAddBAReqParams);
5379 wdiEventData.pCBfnc = wdiAddBARspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005380 wdiEventData.pUserData = pUserData;
5381
5382 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5383
5384}/*WDI_AddBAReq*/
5385
5386
5387/**
5388 @brief WDI_TriggerBAReq will be called when the upper MAC has setup
5389 successfully a BA session and needs to notify the HW for
5390 the appropriate settings to take place. Upon the call of
5391 this API the WLAN DAL will pack and send a HAL Add BA
5392 request message to the lower RIVA sub-system if DAL is
5393 in state STARTED.
5394
5395 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005396 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005397
5398 WDI_PostAssocReq must have been called.
5399
5400 @param wdiAddBAReqParams: the add BA parameters as specified by
5401 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005402
Jeff Johnson295189b2012-06-20 16:38:30 -07005403 wdiAddBARspCb: callback for passing back the response of
5404 the add BA operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005405
Jeff Johnson295189b2012-06-20 16:38:30 -07005406 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005407 callback
5408
Jeff Johnson295189b2012-06-20 16:38:30 -07005409 @see WDI_PostAssocReq
5410 @return Result of the function call
5411*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005412WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005413WDI_TriggerBAReq
5414(
5415 WDI_TriggerBAReqParamsType* pwdiTriggerBAReqParams,
5416 WDI_TriggerBARspCb wdiTriggerBARspCb,
5417 void* pUserData
5418)
5419{
5420 WDI_EventInfoType wdiEventData;
5421 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5422
5423 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005424 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005425 ------------------------------------------------------------------------*/
5426 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5427 {
5428 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5429 "WDI API call before module is initialized - Fail request");
5430
Jeff Johnsone7245742012-09-05 17:12:55 -07005431 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005432 }
5433
5434 /*------------------------------------------------------------------------
5435 Fill in Event data and post to the Main FSM
5436 ------------------------------------------------------------------------*/
5437 wdiEventData.wdiRequest = WDI_TRIGGER_BA_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005438 wdiEventData.pEventData = pwdiTriggerBAReqParams;
5439 wdiEventData.uEventDataSize = sizeof(*pwdiTriggerBAReqParams);
5440 wdiEventData.pCBfnc = wdiTriggerBARspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005441 wdiEventData.pUserData = pUserData;
5442
5443 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5444
5445}/*WDI_AddBAReq*/
5446
5447/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005448 @brief WDI_UpdateBeaconParamsReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07005449 wishes to update any of the Beacon parameters used by HW.
5450 Upon the call of this API the WLAN DAL will pack and send a HAL Update Beacon Params request
5451 message to the lower RIVA sub-system if DAL is in state
5452 STARTED.
5453
5454 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005455 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005456
5457 WDI_PostAssocReq must have been called.
5458
Jeff Johnsone7245742012-09-05 17:12:55 -07005459 @param wdiUpdateBeaconParams: the Beacon parameters as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07005460 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005461
Jeff Johnson295189b2012-06-20 16:38:30 -07005462 wdiUpdateBeaconParamsRspCb: callback for passing back the
5463 response of the start operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005464
Jeff Johnson295189b2012-06-20 16:38:30 -07005465 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005466 callback
5467
Jeff Johnson295189b2012-06-20 16:38:30 -07005468 @see WDI_PostAssocReq
5469 @return Result of the function call
5470*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005471WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005472WDI_UpdateBeaconParamsReq
5473(
5474 WDI_UpdateBeaconParamsType* pwdiUpdateBeaconParams,
5475 WDI_UpdateBeaconParamsRspCb wdiUpdateBeaconParamsRspCb,
5476 void* pUserData
5477)
5478{
5479 WDI_EventInfoType wdiEventData;
5480 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5481
5482 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005483 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005484 ------------------------------------------------------------------------*/
5485 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5486 {
5487 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5488 "WDI API call before module is initialized - Fail request");
5489
Jeff Johnsone7245742012-09-05 17:12:55 -07005490 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005491 }
5492
5493 /*------------------------------------------------------------------------
5494 Fill in Event data and post to the Main FSM
5495 ------------------------------------------------------------------------*/
5496 wdiEventData.wdiRequest = WDI_UPD_BCON_PRMS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005497 wdiEventData.pEventData = pwdiUpdateBeaconParams;
5498 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateBeaconParams);
5499 wdiEventData.pCBfnc = wdiUpdateBeaconParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005500 wdiEventData.pUserData = pUserData;
5501
5502 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5503
5504}/*WDI_UpdateBeaconParamsReq*/
5505
5506/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005507 @brief WDI_SendBeaconParamsReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07005508 wishes to update the Beacon template used by HW.
5509 Upon the call of this API the WLAN DAL will pack and send a HAL Update Beacon template request
5510 message to the lower RIVA sub-system if DAL is in state
5511 STARTED.
5512
5513 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005514 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005515
5516 WDI_PostAssocReq must have been called.
5517
Jeff Johnsone7245742012-09-05 17:12:55 -07005518 @param wdiSendBeaconParams: the Beacon parameters as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07005519 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005520
Jeff Johnson295189b2012-06-20 16:38:30 -07005521 wdiSendBeaconParamsRspCb: callback for passing back the
5522 response of the start operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005523
Jeff Johnson295189b2012-06-20 16:38:30 -07005524 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005525 callback
5526
Jeff Johnson295189b2012-06-20 16:38:30 -07005527 @see WDI_PostAssocReq
5528 @return Result of the function call
5529*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005530WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005531WDI_SendBeaconParamsReq
5532(
5533 WDI_SendBeaconParamsType* pwdiSendBeaconParams,
5534 WDI_SendBeaconParamsRspCb wdiSendBeaconParamsRspCb,
5535 void* pUserData
5536)
5537{
5538 WDI_EventInfoType wdiEventData;
5539 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5540
5541 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005542 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005543 ------------------------------------------------------------------------*/
5544 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5545 {
5546 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5547 "WDI API call before module is initialized - Fail request");
5548
Jeff Johnsone7245742012-09-05 17:12:55 -07005549 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005550 }
5551
5552 /*------------------------------------------------------------------------
5553 Fill in Event data and post to the Main FSM
5554 ------------------------------------------------------------------------*/
5555 wdiEventData.wdiRequest = WDI_SND_BCON_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005556 wdiEventData.pEventData = pwdiSendBeaconParams;
5557 wdiEventData.uEventDataSize = sizeof(*pwdiSendBeaconParams);
5558 wdiEventData.pCBfnc = wdiSendBeaconParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005559 wdiEventData.pUserData = pUserData;
5560
5561 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5562
5563}/*WDI_SendBeaconParamsReq*/
5564
5565/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005566 @brief WDI_UpdateProbeRspTemplateReq will be called when the
Jeff Johnson295189b2012-06-20 16:38:30 -07005567 upper MAC wants to update the probe response template to
5568 be transmitted as Soft AP
5569 Upon the call of this API the WLAN DAL will
5570 pack and send the probe rsp template message to the
5571 lower RIVA sub-system if DAL is in state STARTED.
5572
5573 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005574 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005575
5576
Jeff Johnsone7245742012-09-05 17:12:55 -07005577 @param pwdiUpdateProbeRspParams: the Update Beacon parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07005578 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005579
Jeff Johnson295189b2012-06-20 16:38:30 -07005580 wdiSendBeaconParamsRspCb: callback for passing back the
5581 response of the Send Beacon Params operation received
5582 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005583
Jeff Johnson295189b2012-06-20 16:38:30 -07005584 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005585 callback
5586
Jeff Johnson295189b2012-06-20 16:38:30 -07005587 @see WDI_AddBAReq
5588 @return Result of the function call
5589*/
5590
Jeff Johnsone7245742012-09-05 17:12:55 -07005591WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005592WDI_UpdateProbeRspTemplateReq
5593(
5594 WDI_UpdateProbeRspTemplateParamsType* pwdiUpdateProbeRspParams,
5595 WDI_UpdateProbeRspTemplateRspCb wdiUpdateProbeRspParamsRspCb,
5596 void* pUserData
5597)
5598{
5599 WDI_EventInfoType wdiEventData;
5600 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5601
5602 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005603 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005604 ------------------------------------------------------------------------*/
5605 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5606 {
5607 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5608 "WDI API call before module is initialized - Fail request");
5609
Jeff Johnsone7245742012-09-05 17:12:55 -07005610 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005611 }
5612
5613 /*------------------------------------------------------------------------
5614 Fill in Event data and post to the Main FSM
5615 ------------------------------------------------------------------------*/
5616 wdiEventData.wdiRequest = WDI_UPD_PROBE_RSP_TEMPLATE_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005617 wdiEventData.pEventData = pwdiUpdateProbeRspParams;
5618 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateProbeRspParams);
5619 wdiEventData.pCBfnc = wdiUpdateProbeRspParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005620 wdiEventData.pUserData = pUserData;
5621
5622 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5623
5624}/*WDI_UpdateProbeRspTemplateReq*/
5625
5626/**
5627 @brief WDI_NvDownloadReq will be called by the UMAC to download the NV blob
5628 to the NV memory.
5629
5630
5631 @param wdiNvDownloadReqParams: the NV Download parameters as specified by
5632 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005633
Jeff Johnson295189b2012-06-20 16:38:30 -07005634 wdiNvDownloadRspCb: callback for passing back the response of
5635 the NV Download operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005636
Jeff Johnson295189b2012-06-20 16:38:30 -07005637 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005638 callback
5639
Jeff Johnson295189b2012-06-20 16:38:30 -07005640 @see WDI_PostAssocReq
5641 @return Result of the function call
5642*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005643WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005644WDI_NvDownloadReq
5645(
5646 WDI_NvDownloadReqParamsType* pwdiNvDownloadReqParams,
5647 WDI_NvDownloadRspCb wdiNvDownloadRspCb,
5648 void* pUserData
5649)
5650{
5651 WDI_EventInfoType wdiEventData;
5652
5653 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005654 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005655 ------------------------------------------------------------------------*/
5656 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5657 {
5658 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5659 "WDI API call before module is initialized - Fail request");
5660
Jeff Johnsone7245742012-09-05 17:12:55 -07005661 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005662 }
5663
5664 /*------------------------------------------------------------------------
5665 Fill in Event data and post to the Main FSM
5666 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005667 wdiEventData.wdiRequest = WDI_NV_DOWNLOAD_REQ;
5668 wdiEventData.pEventData = (void *)pwdiNvDownloadReqParams;
5669 wdiEventData.uEventDataSize = sizeof(*pwdiNvDownloadReqParams);
5670 wdiEventData.pCBfnc = wdiNvDownloadRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005671 wdiEventData.pUserData = pUserData;
5672
5673 return WDI_PostMainEvent(&gWDICb, WDI_START_EVENT, &wdiEventData);
5674
5675}/*WDI_NVDownloadReq*/
5676
Jeff Johnson295189b2012-06-20 16:38:30 -07005677/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005678 @brief WDI_SetP2PGONOAReq will be called when the
Jeff Johnson295189b2012-06-20 16:38:30 -07005679 upper MAC wants to send Notice of Absence
5680 Upon the call of this API the WLAN DAL will
5681 pack and send the probe rsp template message to the
5682 lower RIVA sub-system if DAL is in state STARTED.
5683
5684 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005685 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005686
5687
Jeff Johnsone7245742012-09-05 17:12:55 -07005688 @param pwdiUpdateProbeRspParams: the Update Beacon parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07005689 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005690
Jeff Johnson295189b2012-06-20 16:38:30 -07005691 wdiSendBeaconParamsRspCb: callback for passing back the
5692 response of the Send Beacon Params operation received
5693 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005694
Jeff Johnson295189b2012-06-20 16:38:30 -07005695 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005696 callback
5697
Jeff Johnson295189b2012-06-20 16:38:30 -07005698 @see WDI_AddBAReq
5699 @return Result of the function call
5700*/
5701WDI_Status
5702WDI_SetP2PGONOAReq
5703(
5704 WDI_SetP2PGONOAReqParamsType* pwdiP2PGONOAReqParams,
5705 WDI_SetP2PGONOAReqParamsRspCb wdiP2PGONOAReqParamsRspCb,
5706 void* pUserData
5707)
5708{
5709 WDI_EventInfoType wdiEventData;
5710 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5711
5712 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005713 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005714 ------------------------------------------------------------------------*/
5715 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5716 {
5717 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5718 "WDI API call before module is initialized - Fail request");
5719
Jeff Johnsone7245742012-09-05 17:12:55 -07005720 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005721 }
5722
5723 /*------------------------------------------------------------------------
5724 Fill in Event data and post to the Main FSM
5725 ------------------------------------------------------------------------*/
5726 wdiEventData.wdiRequest = WDI_P2P_GO_NOTICE_OF_ABSENCE_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005727 wdiEventData.pEventData = pwdiP2PGONOAReqParams;
5728 wdiEventData.uEventDataSize = sizeof(*pwdiP2PGONOAReqParams);
5729 wdiEventData.pCBfnc = wdiP2PGONOAReqParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005730 wdiEventData.pUserData = pUserData;
5731
5732 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5733
5734}/*WDI_SetP2PGONOAReq*/
Jeff Johnson295189b2012-06-20 16:38:30 -07005735
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +05305736#ifdef FEATURE_WLAN_TDLS
5737/**
5738 @brief WDI_SetTDLSLinkEstablishReq will be called when the
5739 upper MAC wants to send TDLS Link Establish Request Parameters
5740 Upon the call of this API the WLAN DAL will
5741 pack and send the TDLS Link Establish Request message to the
5742 lower RIVA sub-system if DAL is in state STARTED.
5743
5744 In state BUSY this request will be queued. Request won't
5745 be allowed in any other state.
5746
5747
5748 @param pwdiTDLSLinkEstablishReqParams: TDLS Peer Parameters
5749 for Link Establishment (Used for PUAPSD , TDLS Off Channel ...)
5750
5751 wdiTDLSLinkEstablishReqRspCb: callback for passing back the
5752 response of the TDLS Link Establish request received
5753 from the device
5754
5755 pUserData: user data will be passed back with the
5756 callback
5757
5758 @see
5759 @return Result of the function call
5760*/
5761WDI_Status
5762WDI_SetTDLSLinkEstablishReq
5763(
5764 WDI_SetTDLSLinkEstablishReqParamsType* pwdiTDLSLinkEstablishReqParams,
5765 WDI_SetTDLSLinkEstablishReqParamsRspCb wdiTDLSLinkEstablishReqRspCb,
5766 void* pUserData
5767)
5768{
5769 WDI_EventInfoType wdiEventData;
5770 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5771
5772 /*------------------------------------------------------------------------
5773 Sanity Check
5774 ------------------------------------------------------------------------*/
5775 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5776 {
5777 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5778 "WDI API call before module is initialized - Fail request");
5779
5780 return WDI_STATUS_E_NOT_ALLOWED;
5781 }
5782
5783 /*------------------------------------------------------------------------
5784 Fill in Event data and post to the Main FSM
5785 ------------------------------------------------------------------------*/
5786 wdiEventData.wdiRequest = WDI_TDLS_LINK_ESTABLISH_REQ;
5787 wdiEventData.pEventData = pwdiTDLSLinkEstablishReqParams;
5788 wdiEventData.uEventDataSize = sizeof(*pwdiTDLSLinkEstablishReqParams);
5789 wdiEventData.pCBfnc = wdiTDLSLinkEstablishReqRspCb;
5790 wdiEventData.pUserData = pUserData;
5791
5792 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5793
5794}/*WDI_SetTDLSLinkEstablishReq*/
5795#endif
5796
Jeff Johnson295189b2012-06-20 16:38:30 -07005797/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005798 @brief WDI_AddSTASelfReq will be called when the
Jeff Johnson295189b2012-06-20 16:38:30 -07005799 UMAC wanted to add STA self while opening any new session
5800 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005801 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005802
5803
Jeff Johnsone7245742012-09-05 17:12:55 -07005804 @param pwdiAddSTASelfParams: the add sta self parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07005805 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005806
Jeff Johnson295189b2012-06-20 16:38:30 -07005807 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005808 callback
5809
5810 @see
Jeff Johnson295189b2012-06-20 16:38:30 -07005811 @return Result of the function call
5812*/
5813WDI_Status
5814WDI_AddSTASelfReq
5815(
5816 WDI_AddSTASelfReqParamsType* pwdiAddSTASelfReqParams,
5817 WDI_AddSTASelfParamsRspCb wdiAddSTASelfReqParamsRspCb,
5818 void* pUserData
5819)
5820{
5821 WDI_EventInfoType wdiEventData;
5822 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5823
5824 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005825 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005826 ------------------------------------------------------------------------*/
5827 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5828 {
5829 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5830 "WDI API call before module is initialized - Fail request");
5831
Jeff Johnsone7245742012-09-05 17:12:55 -07005832 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005833 }
5834
5835 /*------------------------------------------------------------------------
5836 Fill in Event data and post to the Main FSM
5837 ------------------------------------------------------------------------*/
5838 wdiEventData.wdiRequest = WDI_ADD_STA_SELF_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005839 wdiEventData.pEventData = pwdiAddSTASelfReqParams;
5840 wdiEventData.uEventDataSize = sizeof(*pwdiAddSTASelfReqParams);
5841 wdiEventData.pCBfnc = wdiAddSTASelfReqParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005842 wdiEventData.pUserData = pUserData;
5843
5844 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5845
5846}/*WDI_AddSTASelfReq*/
5847
5848
Jeff Johnsone7245742012-09-05 17:12:55 -07005849#ifdef WLAN_FEATURE_VOWIFI_11R
Jeff Johnson295189b2012-06-20 16:38:30 -07005850/**
5851 @brief WDI_AggrAddTSReq will be called when the upper MAC to inform
5852 the device of a successful add TSpec negotiation. HW
5853 needs to receive the TSpec Info from the UMAC in order
5854 to configure properly the QoS data traffic. Upon the
5855 call of this API the WLAN DAL will pack and send a HAL
5856 Add TS request message to the lower RIVA sub-system if
5857 DAL is in state STARTED.
5858
5859 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005860 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005861
5862 WDI_PostAssocReq must have been called.
5863
5864 @param wdiAddTsReqParams: the add TS parameters as specified by
5865 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005866
Jeff Johnson295189b2012-06-20 16:38:30 -07005867 wdiAddTsRspCb: callback for passing back the response of
5868 the add TS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005869
Jeff Johnson295189b2012-06-20 16:38:30 -07005870 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005871 callback
5872
Jeff Johnson295189b2012-06-20 16:38:30 -07005873 @see WDI_PostAssocReq
5874 @return Result of the function call
5875*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005876WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005877WDI_AggrAddTSReq
5878(
5879 WDI_AggrAddTSReqParamsType* pwdiAggrAddTsReqParams,
5880 WDI_AggrAddTsRspCb wdiAggrAddTsRspCb,
5881 void* pUserData
5882)
5883{
5884 WDI_EventInfoType wdiEventData;
5885 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5886
5887 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005888 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005889 ------------------------------------------------------------------------*/
5890 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5891 {
5892 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5893 "WDI API call before module is initialized - Fail request");
5894
Jeff Johnsone7245742012-09-05 17:12:55 -07005895 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005896 }
5897
5898 /*------------------------------------------------------------------------
5899 Fill in Event data and post to the Main FSM
5900 ------------------------------------------------------------------------*/
5901 wdiEventData.wdiRequest = WDI_AGGR_ADD_TS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005902 wdiEventData.pEventData = pwdiAggrAddTsReqParams;
5903 wdiEventData.uEventDataSize = sizeof(*pwdiAggrAddTsReqParams);
5904 wdiEventData.pCBfnc = wdiAggrAddTsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005905 wdiEventData.pUserData = pUserData;
5906
5907 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5908
5909}/*WDI_AggrAddTSReq*/
5910
5911#endif /* WLAN_FEATURE_VOWIFI_11R */
5912
Jeff Johnson295189b2012-06-20 16:38:30 -07005913/**
5914 @brief WDI_FTMCommandReq
5915 Post FTM Command Event
Jeff Johnsone7245742012-09-05 17:12:55 -07005916
5917 @param ftmCommandReq: FTM Command Body
5918 @param ftmCommandRspCb: FTM Response from HAL CB
Jeff Johnson295189b2012-06-20 16:38:30 -07005919 @param pUserData: Client Data
Jeff Johnsone7245742012-09-05 17:12:55 -07005920
Jeff Johnson295189b2012-06-20 16:38:30 -07005921 @see
5922 @return Result of the function call
5923*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005924WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005925WDI_FTMCommandReq
5926(
5927 WDI_FTMCommandReqType *ftmCommandReq,
5928 WDI_FTMCommandRspCb ftmCommandRspCb,
5929 void *pUserData
5930)
5931{
5932 WDI_EventInfoType wdiEventData;
5933 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5934
5935 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005936 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005937 ------------------------------------------------------------------------*/
5938 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5939 {
5940 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5941 "WDI API call before module is initialized - Fail request");
5942
Jeff Johnsone7245742012-09-05 17:12:55 -07005943 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005944 }
5945
5946 /*------------------------------------------------------------------------
5947 Fill in Event data and post to the Main FSM
5948 ------------------------------------------------------------------------*/
5949 wdiEventData.wdiRequest = WDI_FTM_CMD_REQ;
5950 wdiEventData.pEventData = (void *)ftmCommandReq;
5951 wdiEventData.uEventDataSize = ftmCommandReq->bodyLength + sizeof(wpt_uint32);
5952 wdiEventData.pCBfnc = ftmCommandRspCb;
5953 wdiEventData.pUserData = pUserData;
5954
5955 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5956}
Jeff Johnson295189b2012-06-20 16:38:30 -07005957/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005958 @brief WDI_HostResumeReq will be called
Jeff Johnson295189b2012-06-20 16:38:30 -07005959
5960 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005961 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005962
5963
5964 @param pwdiResumeReqParams: as specified by
5965 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005966
Jeff Johnson295189b2012-06-20 16:38:30 -07005967 wdiResumeReqRspCb: callback for passing back the response of
5968 the Resume Req received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005969
Jeff Johnson295189b2012-06-20 16:38:30 -07005970 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005971 callback
5972
5973 @see
Jeff Johnson295189b2012-06-20 16:38:30 -07005974 @return Result of the function call
5975*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005976WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005977WDI_HostResumeReq
5978(
5979 WDI_ResumeParamsType* pwdiResumeReqParams,
5980 WDI_HostResumeEventRspCb wdiResumeReqRspCb,
5981 void* pUserData
5982)
5983{
5984 WDI_EventInfoType wdiEventData;
5985 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5986
5987 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005988 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005989 ------------------------------------------------------------------------*/
5990 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5991 {
5992 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5993 "WDI API call before module is initialized - Fail request");
5994
Jeff Johnsone7245742012-09-05 17:12:55 -07005995 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005996 }
5997
5998 /*------------------------------------------------------------------------
5999 Fill in Event data and post to the Main FSM
6000 ------------------------------------------------------------------------*/
6001 wdiEventData.wdiRequest = WDI_HOST_RESUME_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07006002 wdiEventData.pEventData = pwdiResumeReqParams;
6003 wdiEventData.uEventDataSize = sizeof(*pwdiResumeReqParams);
6004 wdiEventData.pCBfnc = wdiResumeReqRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07006005 wdiEventData.pUserData = pUserData;
6006
6007 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6008
6009}/*WDI_HostResumeReq*/
6010
6011/**
Jeff Johnsone7245742012-09-05 17:12:55 -07006012 @brief WDI_DelSTASelfReq will be called
Jeff Johnson295189b2012-06-20 16:38:30 -07006013
6014 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07006015 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07006016
6017
6018 @param pwdiDelStaSelfReqParams: as specified by
6019 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07006020
Jeff Johnson295189b2012-06-20 16:38:30 -07006021 wdiDelStaSelfRspCb: callback for passing back the response of
6022 the add TS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07006023
Jeff Johnson295189b2012-06-20 16:38:30 -07006024 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07006025 callback
6026
Jeff Johnson295189b2012-06-20 16:38:30 -07006027 @see WDI_PostAssocReq
6028 @return Result of the function call
6029*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006030WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07006031WDI_DelSTASelfReq
6032(
6033 WDI_DelSTASelfReqParamsType* pwdiDelStaSelfReqParams,
6034 WDI_DelSTASelfRspCb wdiDelStaSelfRspCb,
6035 void* pUserData
6036)
6037{
6038 WDI_EventInfoType wdiEventData;
6039 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6040
6041 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006042 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006043 ------------------------------------------------------------------------*/
6044 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6045 {
6046 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6047 "WDI API call before module is initialized - Fail request");
6048
Jeff Johnsone7245742012-09-05 17:12:55 -07006049 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006050 }
6051
6052 /*------------------------------------------------------------------------
6053 Fill in Event data and post to the Main FSM
6054 ------------------------------------------------------------------------*/
6055 wdiEventData.wdiRequest = WDI_DEL_STA_SELF_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07006056 wdiEventData.pEventData = pwdiDelStaSelfReqParams;
6057 wdiEventData.uEventDataSize = sizeof(*pwdiDelStaSelfReqParams);
6058 wdiEventData.pCBfnc = wdiDelStaSelfRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07006059 wdiEventData.pUserData = pUserData;
6060
6061 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6062
6063}/*WDI_AggrAddTSReq*/
6064
6065/**
Jeff Johnsone7245742012-09-05 17:12:55 -07006066 @brief WDI_SetTxPerTrackingReq will be called when the upper MAC
6067 wants to set the Tx Per Tracking configurations.
Jeff Johnson295189b2012-06-20 16:38:30 -07006068 Upon the call of this API the WLAN DAL will pack
6069 and send a HAL Set Tx Per Tracking request message to the
6070 lower RIVA sub-system if DAL is in state STARTED.
6071
6072 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07006073 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07006074
Jeff Johnsone7245742012-09-05 17:12:55 -07006075 @param pwdiSetTxPerTrackingReqParams: the Set Tx PER Tracking configurations as
Jeff Johnson295189b2012-06-20 16:38:30 -07006076 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07006077
Jeff Johnson295189b2012-06-20 16:38:30 -07006078 pwdiSetTxPerTrackingRspCb: callback for passing back the
6079 response of the set Tx PER Tracking configurations operation received
6080 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07006081
Jeff Johnson295189b2012-06-20 16:38:30 -07006082 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07006083 callback
6084
Jeff Johnson295189b2012-06-20 16:38:30 -07006085 @return Result of the function call
6086*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006087WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07006088WDI_SetTxPerTrackingReq
6089(
6090 WDI_SetTxPerTrackingReqParamsType* pwdiSetTxPerTrackingReqParams,
6091 WDI_SetTxPerTrackingRspCb pwdiSetTxPerTrackingRspCb,
6092 void* pUserData
6093)
6094{
6095 WDI_EventInfoType wdiEventData;
6096 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6097
6098 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006099 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006100 ------------------------------------------------------------------------*/
6101 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6102 {
6103 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6104 "WDI API call before module is initialized - Fail request");
6105
Jeff Johnsone7245742012-09-05 17:12:55 -07006106 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006107 }
6108
6109 /*------------------------------------------------------------------------
6110 Fill in Event data and post to the Main FSM
6111 ------------------------------------------------------------------------*/
6112 wdiEventData.wdiRequest = WDI_SET_TX_PER_TRACKING_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07006113 wdiEventData.pEventData = pwdiSetTxPerTrackingReqParams;
Jeff Johnson295189b2012-06-20 16:38:30 -07006114 wdiEventData.uEventDataSize = sizeof(*pwdiSetTxPerTrackingReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07006115 wdiEventData.pCBfnc = pwdiSetTxPerTrackingRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07006116 wdiEventData.pUserData = pUserData;
6117
6118 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6119
6120}/*WDI_SetTxPerTrackingReq*/
6121
6122/**
6123 @brief WDI_SetTmLevelReq
6124 If HW Thermal condition changed, driver should react based on new
6125 HW thermal condition.
6126
6127 @param pwdiSetTmLevelReq: New thermal condition information
6128
6129 pwdiSetTmLevelRspCb: callback
6130
6131 usrData: user data will be passed back with the
6132 callback
6133
6134 @return Result of the function call
6135*/
6136WDI_Status
6137WDI_SetTmLevelReq
6138(
6139 WDI_SetTmLevelReqType *pwdiSetTmLevelReq,
6140 WDI_SetTmLevelCb pwdiSetTmLevelRspCb,
6141 void *usrData
6142)
6143{
6144 WDI_EventInfoType wdiEventData;
6145 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6146
6147 /*------------------------------------------------------------------------
6148 Sanity Check
6149 ------------------------------------------------------------------------*/
6150 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6151 {
6152 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6153 "WDI API call before module is initialized - Fail request");
6154
6155 return WDI_STATUS_E_NOT_ALLOWED;
6156 }
6157
6158 /*------------------------------------------------------------------------
6159 Fill in Event data and post to the Main FSM
6160 ------------------------------------------------------------------------*/
6161 wdiEventData.wdiRequest = WDI_SET_TM_LEVEL_REQ;
6162 wdiEventData.pEventData = pwdiSetTmLevelReq;
6163 wdiEventData.uEventDataSize = sizeof(*pwdiSetTmLevelReq);
6164 wdiEventData.pCBfnc = pwdiSetTmLevelRspCb;
6165 wdiEventData.pUserData = usrData;
6166
6167 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6168}
6169
6170/**
6171 @brief WDI_HostSuspendInd
6172
6173 Suspend Indication from the upper layer will be sent
6174 down to HAL
Jeff Johnsone7245742012-09-05 17:12:55 -07006175
Jeff Johnson295189b2012-06-20 16:38:30 -07006176 @param WDI_SuspendResumeIndParamsType
Jeff Johnsone7245742012-09-05 17:12:55 -07006177
6178 @see
6179
Jeff Johnson295189b2012-06-20 16:38:30 -07006180 @return Status of the request
6181*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006182WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07006183WDI_HostSuspendInd
6184(
6185 WDI_SuspendParamsType* pwdiSuspendIndParams
6186)
6187{
6188
6189 WDI_EventInfoType wdiEventData;
6190 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6191
6192 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006193 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006194 ------------------------------------------------------------------------*/
6195 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6196 {
6197 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6198 "WDI API call before module is initialized - Fail request");
6199
Jeff Johnsone7245742012-09-05 17:12:55 -07006200 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006201 }
6202
6203 /*------------------------------------------------------------------------
6204 Fill in Event data and post to the Main FSM
6205 ------------------------------------------------------------------------*/
6206 wdiEventData.wdiRequest = WDI_HOST_SUSPEND_IND;
Jeff Johnsone7245742012-09-05 17:12:55 -07006207 wdiEventData.pEventData = pwdiSuspendIndParams;
6208 wdiEventData.uEventDataSize = sizeof(*pwdiSuspendIndParams);
6209 wdiEventData.pCBfnc = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07006210 wdiEventData.pUserData = NULL;
6211
6212 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6213
6214}/*WDI_HostSuspendInd*/
6215
6216/**
Madan Mohan Koyyalamudi01cba042013-01-10 21:56:05 -08006217 @brief WDI_TrafficStatsInd
6218 Traffic Stats from the upper layer will be sent
6219 down to HAL
6220
6221 @param WDI_TrafficStatsIndType
6222
6223 @see
6224
6225 @return Status of the request
6226*/
6227WDI_Status
6228WDI_TrafficStatsInd
6229(
6230 WDI_TrafficStatsIndType *pWdiTrafficStatsIndParams
6231)
6232{
6233
6234 WDI_EventInfoType wdiEventData;
6235 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6236
6237 /*------------------------------------------------------------------------
6238 Sanity Check
6239 ------------------------------------------------------------------------*/
6240 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6241 {
6242 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6243 "WDI API call before module is initialized - Fail request");
6244
6245 return WDI_STATUS_E_NOT_ALLOWED;
6246 }
6247
6248 /*------------------------------------------------------------------------
6249 Fill in Event data and post to the Main FSM
6250 ------------------------------------------------------------------------*/
6251 wdiEventData.wdiRequest = WDI_TRAFFIC_STATS_IND;
6252 wdiEventData.pEventData = pWdiTrafficStatsIndParams;
6253 wdiEventData.uEventDataSize = sizeof(*pWdiTrafficStatsIndParams);
6254 wdiEventData.pCBfnc = NULL;
6255 wdiEventData.pUserData = NULL;
6256
6257 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6258
6259}/*WDI_TrafficStatsInd*/
6260
Chet Lanctot186b5732013-03-18 10:26:30 -07006261#ifdef WLAN_FEATURE_11W
6262/**
6263 @brief WDI_ExcludeUnencryptedInd
6264 Register with HAL to receive/drop unencrypted frames
6265
6266 @param WDI_ExcludeUnencryptIndType
6267
6268 @see
6269
6270 @return Status of the request
6271*/
6272WDI_Status
6273WDI_ExcludeUnencryptedInd
6274(
6275 WDI_ExcludeUnencryptIndType *pWdiExcUnencParams
6276)
6277{
6278
6279 WDI_EventInfoType wdiEventData;
6280 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6281
6282 /*------------------------------------------------------------------------
6283 Sanity Check
6284 ------------------------------------------------------------------------*/
6285 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6286 {
6287 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6288 "WDI API call before module is initialized - Fail request");
6289
6290 return WDI_STATUS_E_NOT_ALLOWED;
6291 }
6292
6293 /*------------------------------------------------------------------------
6294 Fill in Event data and post to the Main FSM
6295 ------------------------------------------------------------------------*/
6296 wdiEventData.wdiRequest = WDI_EXCLUDE_UNENCRYPTED_IND;
6297 wdiEventData.pEventData = pWdiExcUnencParams;
6298 wdiEventData.uEventDataSize = sizeof(*pWdiExcUnencParams);
6299 wdiEventData.pCBfnc = NULL;
6300 wdiEventData.pUserData = NULL;
6301
6302 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6303
6304}/*WDI_TrafficStatsInd*/
6305#endif
6306
Madan Mohan Koyyalamudi01cba042013-01-10 21:56:05 -08006307/**
Yue Mab9c86f42013-08-14 15:59:08 -07006308 @brief WDI_AddPeriodicTxPtrnInd: Add Periodic TX Pattern Indication to FW
6309
6310 @param addPeriodicTxPtrnParams: Add Pattern parameters
6311
6312 @see
6313
6314 @return Status of the request
6315*/
6316WDI_Status
6317WDI_AddPeriodicTxPtrnInd
6318(
6319 WDI_AddPeriodicTxPtrnParamsType* addPeriodicTxPtrnParams
6320)
6321{
6322 WDI_EventInfoType wdiEventData;
6323
6324 /*-------------------------------------------------------------------------
6325 Sanity Check
6326 ------------------------------------------------------------------------*/
6327 if (eWLAN_PAL_FALSE == gWDIInitialized)
6328 {
6329 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6330 "WDI API call before module is initialized - Fail request!");
6331
6332 return WDI_STATUS_E_NOT_ALLOWED;
6333 }
6334
6335 /*-------------------------------------------------------------------------
6336 Fill in Event data and post to the Main FSM
6337 ------------------------------------------------------------------------*/
6338 wdiEventData.wdiRequest = WDI_ADD_PERIODIC_TX_PATTERN_IND;
6339 wdiEventData.pEventData = addPeriodicTxPtrnParams;
6340 wdiEventData.uEventDataSize = sizeof(WDI_AddPeriodicTxPtrnParamsType);
6341 wdiEventData.pCBfnc = NULL;
6342 wdiEventData.pUserData = NULL;
6343
6344 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6345}
6346
6347/**
6348 @brief WDI_DelPeriodicTxPtrnInd: Delete Periodic TX Pattern Indication to FW
6349
6350 @param delPeriodicTxPtrnParams: Delete Pattern parameters
6351
6352 @see
6353
6354 @return Status of the request
6355*/
6356WDI_Status
6357WDI_DelPeriodicTxPtrnInd
6358(
6359 WDI_DelPeriodicTxPtrnParamsType* delPeriodicTxPtrnParams
6360)
6361{
6362 WDI_EventInfoType wdiEventData;
6363
6364 /*-------------------------------------------------------------------------
6365 Sanity Check
6366 ------------------------------------------------------------------------*/
6367 if (eWLAN_PAL_FALSE == gWDIInitialized)
6368 {
6369 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6370 "WDI API call before module is initialized - Fail request!");
6371
6372 return WDI_STATUS_E_NOT_ALLOWED;
6373 }
6374
6375 /*-------------------------------------------------------------------------
6376 Fill in Event data and post to the Main FSM
6377 ------------------------------------------------------------------------*/
6378 wdiEventData.wdiRequest = WDI_DEL_PERIODIC_TX_PATTERN_IND;
6379 wdiEventData.pEventData = delPeriodicTxPtrnParams;
6380 wdiEventData.uEventDataSize = sizeof(WDI_DelPeriodicTxPtrnParamsType);
6381 wdiEventData.pCBfnc = NULL;
6382 wdiEventData.pUserData = NULL;
6383
6384 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6385}
6386
6387/**
Jeff Johnson295189b2012-06-20 16:38:30 -07006388 @brief WDI_HALDumpCmdReq
6389 Post HAL DUMP Command Event
Jeff Johnsone7245742012-09-05 17:12:55 -07006390
6391 @param halDumpCmdReqParams: Hal Dump Command Body
6392 @param halDumpCmdRspCb: HAL DUMP Response from HAL CB
Jeff Johnson295189b2012-06-20 16:38:30 -07006393 @param pUserData: Client Data
Jeff Johnsone7245742012-09-05 17:12:55 -07006394
Jeff Johnson295189b2012-06-20 16:38:30 -07006395 @see
6396 @return Result of the function call
6397*/
6398WDI_Status WDI_HALDumpCmdReq
6399(
6400 WDI_HALDumpCmdReqParamsType *halDumpCmdReqParams,
6401 WDI_HALDumpCmdRspCb halDumpCmdRspCb,
6402 void *pUserData
6403)
6404{
6405 WDI_EventInfoType wdiEventData;
6406 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6407
6408 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006409 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006410 ------------------------------------------------------------------------*/
6411 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6412 {
6413 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6414 "WDI API call before module is initialized - Fail request");
6415
Jeff Johnsone7245742012-09-05 17:12:55 -07006416 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006417 }
6418
6419 /*------------------------------------------------------------------------
6420 Fill in Event data and post to the Main FSM
6421 ------------------------------------------------------------------------*/
6422 wdiEventData.wdiRequest = WDI_HAL_DUMP_CMD_REQ;
6423 wdiEventData.pEventData = (void *)halDumpCmdReqParams;
6424 wdiEventData.uEventDataSize = sizeof(WDI_HALDumpCmdReqParamsType);
6425 wdiEventData.pCBfnc = halDumpCmdRspCb;
6426 wdiEventData.pUserData = pUserData;
6427
6428 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6429}
6430
Jeff Johnsone7245742012-09-05 17:12:55 -07006431/*============================================================================
6432
Jeff Johnson295189b2012-06-20 16:38:30 -07006433 DAL Control Path Main FSM Function Implementation
Jeff Johnsone7245742012-09-05 17:12:55 -07006434
Jeff Johnson295189b2012-06-20 16:38:30 -07006435 ============================================================================*/
6436
6437/**
6438 @brief Main FSM Start function for all states except BUSY
6439
Jeff Johnsone7245742012-09-05 17:12:55 -07006440
6441 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -07006442 wdiEV: event posted to the main DAL FSM
6443 pEventData: pointer to the event information
Jeff Johnsone7245742012-09-05 17:12:55 -07006444 structure
6445
Jeff Johnson295189b2012-06-20 16:38:30 -07006446 @see
6447 @return Result of the function call
6448*/
6449WDI_Status
6450WDI_PostMainEvent
6451(
Jeff Johnsone7245742012-09-05 17:12:55 -07006452 WDI_ControlBlockType* pWDICtx,
6453 WDI_MainEventType wdiEV,
Jeff Johnson295189b2012-06-20 16:38:30 -07006454 WDI_EventInfoType* pEventData
Jeff Johnson295189b2012-06-20 16:38:30 -07006455)
6456{
Jeff Johnsone7245742012-09-05 17:12:55 -07006457 WDI_Status wdiStatus;
6458 WDI_MainFuncType pfnWDIMainEvHdlr;
6459 WDI_MainStateType wdiOldState;
Jeff Johnson295189b2012-06-20 16:38:30 -07006460 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6461
6462 /*-------------------------------------------------------------------------
6463 Sanity check
6464 -------------------------------------------------------------------------*/
6465 if (( pWDICtx->uGlobalState >= WDI_MAX_ST ) ||
6466 ( wdiEV >= WDI_MAX_EVENT ))
6467 {
6468 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6469 "Invalid state or event in Post Main Ev function ST: %d EV: %d",
6470 pWDICtx->uGlobalState, wdiEV);
Jeff Johnsone7245742012-09-05 17:12:55 -07006471 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006472 }
6473
6474 /*Access to the global state must be locked */
6475 wpalMutexAcquire(&pWDICtx->wptMutex);
6476
6477 /*Fetch event handler for state*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006478 pfnWDIMainEvHdlr = wdiMainFSM[pWDICtx->uGlobalState].pfnMainTbl[wdiEV];
Jeff Johnson295189b2012-06-20 16:38:30 -07006479
6480 wdiOldState = pWDICtx->uGlobalState;
6481
6482 /*
Jeff Johnsone7245742012-09-05 17:12:55 -07006483 --Incase of WDI event is WDI_RESPONSE_EVENT and this is called when a
6484 response comes from CCPU for the request sent by host:
6485 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 -07006486 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 -07006487 --Incase of WDI event is WDI_RESPONSE_EVENT and it is an indication from the
Jeff Johnson295189b2012-06-20 16:38:30 -07006488 CCPU:
6489 don't change the state */
6490 if ( WDI_RESPONSE_EVENT != wdiEV)
6491 {
6492 /*Transition to BUSY State - the request is now being processed by the FSM,
6493 if the request fails we shall transition back to the old state, if not
6494 the request will manage its own state transition*/
6495 WDI_STATE_TRANSITION( pWDICtx, WDI_BUSY_ST);
6496 }
6497 /* If the state function associated with the EV is NULL it means that this
6498 event is not allowed in this state*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006499 if ( NULL != pfnWDIMainEvHdlr )
Jeff Johnson295189b2012-06-20 16:38:30 -07006500 {
6501 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -07006502 "Posting event %d in state: %d to the Main FSM",
Jeff Johnson295189b2012-06-20 16:38:30 -07006503 wdiEV, wdiOldState);
Jeff Johnsone7245742012-09-05 17:12:55 -07006504 wdiStatus = pfnWDIMainEvHdlr( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07006505 }
6506 else
6507 {
6508 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07006509 "Unexpected event %d in state: %d",
Jeff Johnson295189b2012-06-20 16:38:30 -07006510 wdiEV, wdiOldState);
Jeff Johnsone7245742012-09-05 17:12:55 -07006511 wdiStatus = WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006512 }
6513
6514 /* If a request handles itself well it will end up in a success or in a
6515 pending
6516 Success - means that the request was processed and the proper state
6517 transition already occurred or will occur when the resp is received
6518 - NO other state transition or dequeueing is required
Jeff Johnsone7245742012-09-05 17:12:55 -07006519
Jeff Johnson295189b2012-06-20 16:38:30 -07006520 Pending - means the request could not be processed at this moment in time
6521 because the FSM was already busy so no state transition or dequeueing
6522 is necessary anymore
Jeff Johnsone7245742012-09-05 17:12:55 -07006523
Jeff Johnson295189b2012-06-20 16:38:30 -07006524 Success for synchronous case means that the transition may occur and
6525 processing of pending requests may continue - so it should go through
6526 and restores the state and continue processing queued requests*/
6527 if (( WDI_STATUS_SUCCESS != wdiStatus )&&
6528 ( WDI_STATUS_PENDING != wdiStatus ))
6529 {
6530 if ( WDI_RESPONSE_EVENT != wdiEV)
6531 {
6532 /*The request has failed or could not be processed - transition back to
6533 the old state - check to see if anything was queued and try to execute
6534 The dequeue logic should post a message to a thread and return - no
6535 actual processing can occur */
6536 WDI_STATE_TRANSITION( pWDICtx, wdiOldState);
6537 }
6538 WDI_DequeuePendingReq(pWDICtx);
Jeff Johnsone7245742012-09-05 17:12:55 -07006539
Jeff Johnson295189b2012-06-20 16:38:30 -07006540 }
6541
6542 /* we have completed processing the event */
6543 wpalMutexRelease(&pWDICtx->wptMutex);
6544
Jeff Johnsone7245742012-09-05 17:12:55 -07006545 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07006546
6547}/*WDI_PostMainEvent*/
6548
6549
6550/*--------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006551 INIT State Functions
Jeff Johnson295189b2012-06-20 16:38:30 -07006552--------------------------------------------------------------------------*/
6553/**
6554 @brief Main FSM Start function for all states except BUSY
6555
Jeff Johnsone7245742012-09-05 17:12:55 -07006556
6557 @param pWDICtx: pointer to the WLAN DAL context
6558 pEventData: pointer to the event information structure
6559
Jeff Johnson295189b2012-06-20 16:38:30 -07006560 @see
6561 @return Result of the function call
6562*/
6563WDI_Status
6564WDI_MainStart
Jeff Johnsone7245742012-09-05 17:12:55 -07006565(
Jeff Johnson295189b2012-06-20 16:38:30 -07006566 WDI_ControlBlockType* pWDICtx,
6567 WDI_EventInfoType* pEventData
6568)
6569{
6570
6571 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006572 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006573 ----------------------------------------------------------------------*/
6574 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6575 {
6576 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08006577 "Invalid parameters on Main Start Started %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07006578 pWDICtx, pEventData);
6579 return WDI_STATUS_E_FAILURE;
6580 }
6581
6582 wpalMutexAcquire(&pWDICtx->wptMutex);
6583
6584 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006585 Check if the Control Transport has been opened
Jeff Johnson295189b2012-06-20 16:38:30 -07006586 ----------------------------------------------------------------------*/
6587 if ( eWLAN_PAL_FALSE == pWDICtx->bCTOpened )
6588 {
6589 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
6590 "Control Transport not yet Open - queueing the request");
6591
6592 WDI_STATE_TRANSITION( pWDICtx, WDI_INIT_ST);
Jeff Johnsone7245742012-09-05 17:12:55 -07006593 WDI_QueuePendingReq( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07006594
6595 wpalMutexRelease(&pWDICtx->wptMutex);
6596 return WDI_STATUS_PENDING;
6597 }
Jeff Johnsone7245742012-09-05 17:12:55 -07006598
Jeff Johnson295189b2012-06-20 16:38:30 -07006599 wpalMutexRelease(&pWDICtx->wptMutex);
6600
6601 /*Return Success*/
6602 return WDI_ProcessRequest( pWDICtx, pEventData );
6603
6604}/*WDI_MainStart*/
6605
6606/**
6607 @brief Main FSM Response function for state INIT
6608
Jeff Johnsone7245742012-09-05 17:12:55 -07006609
6610 @param pWDICtx: pointer to the WLAN DAL context
6611 pEventData: pointer to the event information structure
6612
Jeff Johnson295189b2012-06-20 16:38:30 -07006613 @see
6614 @return Result of the function call
6615*/
6616WDI_Status
6617WDI_MainRspInit
Jeff Johnsone7245742012-09-05 17:12:55 -07006618(
Jeff Johnson295189b2012-06-20 16:38:30 -07006619 WDI_ControlBlockType* pWDICtx,
6620 WDI_EventInfoType* pEventData
6621)
6622{
6623 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006624 Not expecting a response from the device before it is started
Jeff Johnson295189b2012-06-20 16:38:30 -07006625 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006626 WDI_ASSERT(0);
Jeff Johnson295189b2012-06-20 16:38:30 -07006627
6628 /*Return Success*/
6629 return WDI_STATUS_E_NOT_ALLOWED;
6630}/* WDI_MainRspInit */
6631
6632/**
6633 @brief Main FSM Close function for all states except BUSY
6634
Jeff Johnsone7245742012-09-05 17:12:55 -07006635
6636 @param pWDICtx: pointer to the WLAN DAL context
6637 pEventData: pointer to the event information structure
6638
Jeff Johnson295189b2012-06-20 16:38:30 -07006639 @see
6640 @return Result of the function call
6641*/
6642WDI_Status
6643WDI_MainClose
Jeff Johnsone7245742012-09-05 17:12:55 -07006644(
Jeff Johnson295189b2012-06-20 16:38:30 -07006645 WDI_ControlBlockType* pWDICtx,
6646 WDI_EventInfoType* pEventData
6647)
6648{
6649
6650 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006651 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006652 ----------------------------------------------------------------------*/
6653 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6654 {
6655 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08006656 "Invalid parameters on Main Close %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07006657 pWDICtx, pEventData);
6658 return WDI_STATUS_E_FAILURE;
6659 }
6660
6661 /*Return Success*/
6662 return WDI_ProcessRequest( pWDICtx, pEventData );
6663
6664}/*WDI_MainClose*/
6665/*--------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006666 STARTED State Functions
Jeff Johnson295189b2012-06-20 16:38:30 -07006667--------------------------------------------------------------------------*/
6668/**
6669 @brief Main FSM Start function for state STARTED
6670
Jeff Johnsone7245742012-09-05 17:12:55 -07006671
6672 @param pWDICtx: pointer to the WLAN DAL context
6673 pEventData: pointer to the event information structure
6674
Jeff Johnson295189b2012-06-20 16:38:30 -07006675 @see
6676 @return Result of the function call
6677*/
6678WDI_Status
6679WDI_MainStartStarted
Jeff Johnsone7245742012-09-05 17:12:55 -07006680(
Jeff Johnson295189b2012-06-20 16:38:30 -07006681 WDI_ControlBlockType* pWDICtx,
6682 WDI_EventInfoType* pEventData
6683)
6684{
6685 WDI_StartRspCb wdiStartRspCb = NULL;
6686 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6687
6688 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006689 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006690 ----------------------------------------------------------------------*/
6691 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6692 {
6693 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08006694 "Invalid parameters on Main Start %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07006695 pWDICtx, pEventData);
6696 return WDI_STATUS_E_FAILURE;
6697 }
6698
6699 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006700 Nothing to do transport was already started
Jeff Johnson295189b2012-06-20 16:38:30 -07006701 ----------------------------------------------------------------------*/
6702 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -07006703 "Received start while transport was already started - nothing to do");
Jeff Johnson295189b2012-06-20 16:38:30 -07006704
6705 wpalMutexAcquire(&pWDICtx->wptMutex);
6706
6707 /*Transition back to started because the post function transitioned us to
6708 busy*/
6709 WDI_STATE_TRANSITION( pWDICtx, WDI_STARTED_ST);
6710
6711 /*Check to see if any request is pending*/
6712 WDI_DequeuePendingReq(pWDICtx);
Jeff Johnsone7245742012-09-05 17:12:55 -07006713
Jeff Johnson295189b2012-06-20 16:38:30 -07006714 wpalMutexRelease(&pWDICtx->wptMutex);
6715
6716 /*Tell UMAC Success*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006717 wdiStartRspCb = (WDI_StartRspCb)pEventData->pCBfnc;
6718
Jeff Johnson295189b2012-06-20 16:38:30 -07006719 /*Notify UMAC*/
6720 wdiStartRspCb( &pWDICtx->wdiCachedStartRspParams, pWDICtx->pRspCBUserData);
6721
6722 /*Return Success*/
6723 return WDI_STATUS_SUCCESS;
6724
6725}/*WDI_MainStartStarted*/
6726
6727/**
6728 @brief Main FSM Stop function for state STARTED
6729
Jeff Johnsone7245742012-09-05 17:12:55 -07006730
6731 @param pWDICtx: pointer to the WLAN DAL context
6732 pEventData: pointer to the event information structure
6733
Jeff Johnson295189b2012-06-20 16:38:30 -07006734 @see
6735 @return Result of the function call
6736*/
6737WDI_Status
6738WDI_MainStopStarted
Jeff Johnsone7245742012-09-05 17:12:55 -07006739(
Jeff Johnson295189b2012-06-20 16:38:30 -07006740 WDI_ControlBlockType* pWDICtx,
6741 WDI_EventInfoType* pEventData
6742)
6743{
6744 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006745 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006746 ----------------------------------------------------------------------*/
6747 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6748 {
6749 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08006750 "Invalid parameters on Main Stop Started %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07006751 pWDICtx, pEventData);
6752 return WDI_STATUS_E_FAILURE;
6753 }
6754
6755 /*State at this point is BUSY - because we enter this state before posting
6756 an event to the FSM in order to prevent potential race conditions*/
6757
6758 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
6759 "Processing stop request in FSM");
6760
6761 /*Return Success*/
6762 return WDI_ProcessRequest( pWDICtx, pEventData );
6763
6764}/*WDI_MainStopStarted*/
6765/**
6766 @brief Main FSM Request function for state started
6767
Jeff Johnsone7245742012-09-05 17:12:55 -07006768
6769 @param pWDICtx: pointer to the WLAN DAL context
6770 pEventData: pointer to the event information structure
6771
Jeff Johnson295189b2012-06-20 16:38:30 -07006772 @see
6773 @return Result of the function call
6774*/
6775WDI_Status
6776WDI_MainReqStarted
Jeff Johnsone7245742012-09-05 17:12:55 -07006777(
Jeff Johnson295189b2012-06-20 16:38:30 -07006778 WDI_ControlBlockType* pWDICtx,
6779 WDI_EventInfoType* pEventData
6780)
6781{
6782
6783 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006784 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006785 ----------------------------------------------------------------------*/
6786 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6787 {
6788 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08006789 "Invalid parameters on Main Req Started %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07006790 pWDICtx, pEventData);
6791 return WDI_STATUS_E_FAILURE;
6792 }
6793
6794 /*State at this point is BUSY - because we enter this state before posting
6795 an event to the FSM in order to prevent potential race conditions*/
6796
6797 /*Return Success*/
6798 return WDI_ProcessRequest( pWDICtx, pEventData );
6799
6800}/*WDI_MainReqStarted*/
6801
6802/**
6803 @brief Main FSM Response function for all states except INIT
6804
Jeff Johnsone7245742012-09-05 17:12:55 -07006805
6806 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -07006807 pEventData: pointer to the event information structure
Jeff Johnsone7245742012-09-05 17:12:55 -07006808
Jeff Johnson295189b2012-06-20 16:38:30 -07006809 @see
6810 @return Result of the function call
6811*/
6812WDI_Status
6813WDI_MainRsp
Jeff Johnsone7245742012-09-05 17:12:55 -07006814(
Jeff Johnson295189b2012-06-20 16:38:30 -07006815 WDI_ControlBlockType* pWDICtx,
6816 WDI_EventInfoType* pEventData
6817)
6818{
Jeff Johnsone7245742012-09-05 17:12:55 -07006819 WDI_Status wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07006820 wpt_boolean expectedResponse;
6821
6822 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006823 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006824 ----------------------------------------------------------------------*/
6825 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6826 {
6827 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08006828 "Invalid parameters on Main Response %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07006829 pWDICtx, pEventData);
6830 return WDI_STATUS_E_FAILURE;
6831 }
6832
6833 if ( pEventData->wdiResponse == pWDICtx->wdiExpectedResponse )
6834 {
6835 /* we received an expected response */
6836 expectedResponse = eWLAN_PAL_TRUE;
6837
6838 /*We expect that we will transition to started after this processing*/
6839 pWDICtx->ucExpectedStateTransition = WDI_STARTED_ST;
6840
6841 /* we are no longer expecting a response */
6842 pWDICtx->wdiExpectedResponse = WDI_MAX_RESP;
6843 }
6844 else
6845 {
6846 /* we received an indication or unexpected response */
6847 expectedResponse = eWLAN_PAL_FALSE;
6848 /* for indications no need to update state from what it is right
6849 now, unless it explicitly does it in the indication handler (say
6850 for device failure ind) */
6851 pWDICtx->ucExpectedStateTransition = pWDICtx->uGlobalState;
6852 }
6853
6854 /*Process the response and indication */
6855 wdiStatus = WDI_ProcessResponse( pWDICtx, pEventData );
6856
6857 /*Lock the CB as we are about to do a state transition*/
6858 wpalMutexAcquire(&pWDICtx->wptMutex);
6859
6860 /*Transition to the expected state after the response processing
6861 - this should always be started state with the following exceptions:
6862 1. processing of a failed start response
6863 2. device failure detected while processing response
6864 3. stop response received*/
6865 WDI_STATE_TRANSITION( pWDICtx, pWDICtx->ucExpectedStateTransition);
Jeff Johnsone7245742012-09-05 17:12:55 -07006866
Jeff Johnson295189b2012-06-20 16:38:30 -07006867 /*Dequeue request that may have been queued while we were waiting for the
6868 response */
6869 if ( expectedResponse )
6870 {
Jeff Johnsone7245742012-09-05 17:12:55 -07006871 WDI_DequeuePendingReq(pWDICtx);
Jeff Johnson295189b2012-06-20 16:38:30 -07006872 }
6873
6874 wpalMutexRelease(&pWDICtx->wptMutex);
6875
6876 /*Return Success - always */
Jeff Johnsone7245742012-09-05 17:12:55 -07006877 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07006878
6879}/*WDI_MainRsp*/
6880
6881/*--------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006882 STOPPED State Functions
Jeff Johnson295189b2012-06-20 16:38:30 -07006883--------------------------------------------------------------------------*/
6884/**
6885 @brief Main FSM Stop function for state STOPPED
6886
Jeff Johnsone7245742012-09-05 17:12:55 -07006887
6888 @param pWDICtx: pointer to the WLAN DAL context
6889 pEventData: pointer to the event information structure
6890
Jeff Johnson295189b2012-06-20 16:38:30 -07006891 @see
6892 @return Result of the function call
6893*/
6894WDI_Status
6895WDI_MainStopStopped
Jeff Johnsone7245742012-09-05 17:12:55 -07006896(
Jeff Johnson295189b2012-06-20 16:38:30 -07006897 WDI_ControlBlockType* pWDICtx,
6898 WDI_EventInfoType* pEventData
6899)
6900{
6901 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006902 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006903 ----------------------------------------------------------------------*/
6904 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6905 {
6906 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08006907 "Invalid parameters on Main Stop Stopped %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07006908 pWDICtx, pEventData);
6909 return WDI_STATUS_E_FAILURE;
6910 }
6911
6912 /*We should normally not get a STOP request if we are already stopped
6913 since we should normally be stopped by the UMAC. However in some
6914 error situations we put ourselves in the stopped state without the
6915 UMAC knowing, so when we get a STOP request in this state we still
6916 process it since we need to clean up the underlying state */
6917 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6918 "Processing stop request while stopped in FSM");
6919
6920 /*Return Success*/
6921 return WDI_ProcessRequest( pWDICtx, pEventData );
6922
6923}/*WDI_MainStopStopped*/
6924
6925/*--------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006926 BUSY State Functions
Jeff Johnson295189b2012-06-20 16:38:30 -07006927--------------------------------------------------------------------------*/
6928/**
6929 @brief Main FSM Start function for state BUSY
6930
Jeff Johnsone7245742012-09-05 17:12:55 -07006931
6932 @param pWDICtx: pointer to the WLAN DAL context
6933 pEventData: pointer to the event information structure
6934
Jeff Johnson295189b2012-06-20 16:38:30 -07006935 @see
6936 @return Result of the function call
6937*/
6938WDI_Status
6939WDI_MainStartBusy
Jeff Johnsone7245742012-09-05 17:12:55 -07006940(
Jeff Johnson295189b2012-06-20 16:38:30 -07006941 WDI_ControlBlockType* pWDICtx,
6942 WDI_EventInfoType* pEventData
6943)
6944{
6945 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006946 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006947 ----------------------------------------------------------------------*/
6948 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6949 {
6950 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08006951 "Invalid parameters on Main Start in BUSY %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07006952 pWDICtx, pEventData);
6953 return WDI_STATUS_E_FAILURE;
6954 }
6955
6956 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006957 Check if the Control Transport has been opened
Jeff Johnson295189b2012-06-20 16:38:30 -07006958 ----------------------------------------------------------------------*/
6959 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
6960 "WDI Busy state - queue start request");
6961
6962 /*Queue the start request*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006963 WDI_QueuePendingReq( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07006964
6965 /*Return Success*/
6966 return WDI_STATUS_PENDING;
6967}/*WDI_MainStartBusy*/
6968
6969/**
6970 @brief Main FSM Stop function for state BUSY
6971
Jeff Johnsone7245742012-09-05 17:12:55 -07006972
6973 @param pWDICtx: pointer to the WLAN DAL context
6974 pEventData: pointer to the event information structure
6975
Jeff Johnson295189b2012-06-20 16:38:30 -07006976 @see
6977 @return Result of the function call
6978*/
6979WDI_Status
6980WDI_MainStopBusy
Jeff Johnsone7245742012-09-05 17:12:55 -07006981(
Jeff Johnson295189b2012-06-20 16:38:30 -07006982 WDI_ControlBlockType* pWDICtx,
6983 WDI_EventInfoType* pEventData
6984)
6985{
6986 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006987 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006988 ----------------------------------------------------------------------*/
6989 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6990 {
6991 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08006992 "Invalid parameters on Main Stop in BUSY %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07006993 pWDICtx, pEventData);
6994 return WDI_STATUS_E_FAILURE;
6995 }
6996
6997 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006998 Check if the Control Transport has been opened
Jeff Johnson295189b2012-06-20 16:38:30 -07006999 ----------------------------------------------------------------------*/
7000 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7001 "WDI Busy state - queue stop request");
7002
Jeff Johnsone7245742012-09-05 17:12:55 -07007003 WDI_QueuePendingReq( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07007004 return WDI_STATUS_PENDING;
Jeff Johnsone7245742012-09-05 17:12:55 -07007005
Jeff Johnson295189b2012-06-20 16:38:30 -07007006}/*WDI_MainStopBusy*/
7007
7008/**
7009 @brief Main FSM Request function for state BUSY
7010
Jeff Johnsone7245742012-09-05 17:12:55 -07007011
7012 @param pWDICtx: pointer to the WLAN DAL context
7013 pEventData: pointer to the event information structure
7014
Jeff Johnson295189b2012-06-20 16:38:30 -07007015 @see
7016 @return Result of the function call
7017*/
7018WDI_Status
7019WDI_MainReqBusy
Jeff Johnsone7245742012-09-05 17:12:55 -07007020(
Jeff Johnson295189b2012-06-20 16:38:30 -07007021 WDI_ControlBlockType* pWDICtx,
7022 WDI_EventInfoType* pEventData
7023)
7024{
7025 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007026 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07007027 ----------------------------------------------------------------------*/
7028 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
7029 {
7030 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007031 "Invalid parameters on Main Request in BUSY %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007032 pWDICtx, pEventData);
7033 return WDI_STATUS_E_FAILURE;
7034 }
7035
7036 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007037 Check if the Control Transport has been opened
Jeff Johnson295189b2012-06-20 16:38:30 -07007038 ----------------------------------------------------------------------*/
7039 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7040 "WDI Busy state - queue request %d because waiting for response %d",
7041 pEventData->wdiRequest, pWDICtx->wdiExpectedResponse);
7042
Jeff Johnsone7245742012-09-05 17:12:55 -07007043 WDI_QueuePendingReq( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07007044 return WDI_STATUS_PENDING;
Jeff Johnsone7245742012-09-05 17:12:55 -07007045
Jeff Johnson295189b2012-06-20 16:38:30 -07007046}/*WDI_MainReqBusy*/
7047/**
7048 @brief Main FSM Close function for state BUSY
7049
Jeff Johnsone7245742012-09-05 17:12:55 -07007050
7051 @param pWDICtx: pointer to the WLAN DAL context
7052 pEventData: pointer to the event information structure
7053
Jeff Johnson295189b2012-06-20 16:38:30 -07007054 @see
7055 @return Result of the function call
7056*/
7057WDI_Status
7058WDI_MainCloseBusy
Jeff Johnsone7245742012-09-05 17:12:55 -07007059(
Jeff Johnson295189b2012-06-20 16:38:30 -07007060 WDI_ControlBlockType* pWDICtx,
7061 WDI_EventInfoType* pEventData
7062)
7063{
7064 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007065 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07007066 ----------------------------------------------------------------------*/
7067 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
7068 {
7069 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007070 "Invalid parameters on Main Close in BUSY %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007071 pWDICtx, pEventData);
7072 return WDI_STATUS_E_FAILURE;
7073 }
7074
7075 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007076 Check if the Control Transport has been opened
Jeff Johnson295189b2012-06-20 16:38:30 -07007077 ----------------------------------------------------------------------*/
7078 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7079 "WDI Busy state - queue close request");
7080
Jeff Johnsone7245742012-09-05 17:12:55 -07007081 WDI_QueuePendingReq( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07007082 return WDI_STATUS_PENDING;
Jeff Johnsone7245742012-09-05 17:12:55 -07007083
Jeff Johnson295189b2012-06-20 16:38:30 -07007084}/*WDI_MainCloseBusy*/
7085
7086/**
7087 @brief Main FSM Shutdown function for INIT & STARTED states
7088
7089
7090 @param pWDICtx: pointer to the WLAN DAL context
7091 pEventData: pointer to the event information structure
7092
7093 @see
7094 @return Result of the function call
7095*/
7096WDI_Status
7097WDI_MainShutdown
7098(
7099 WDI_ControlBlockType* pWDICtx,
7100 WDI_EventInfoType* pEventData
7101)
7102{
7103 /*--------------------------------------------------------------------
7104 Sanity Check
7105 ----------------------------------------------------------------------*/
7106 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
7107 {
7108 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007109 "Invalid parameters on Main Start %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007110 pWDICtx, pEventData);
7111 return WDI_STATUS_E_FAILURE;
7112 }
7113
7114 /*State at this point is BUSY - because we enter this state before posting
7115 an event to the FSM in order to prevent potential race conditions*/
7116
7117 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
7118 "Processing shutdown request in FSM");
7119
7120 /*Return Success*/
7121 return WDI_ProcessRequest( pWDICtx, pEventData );
7122
7123}/*WDI_MainShutdown*/
7124
7125/**
7126 @brief Main FSM Shutdown function for BUSY state
7127
7128
7129 @param pWDICtx: pointer to the WLAN DAL context
7130 pEventData: pointer to the event information structure
7131
7132 @see
7133 @return Result of the function call
7134*/
7135WDI_Status
7136WDI_MainShutdownBusy
7137(
7138 WDI_ControlBlockType* pWDICtx,
7139 WDI_EventInfoType* pEventData
7140)
7141{
7142 /*--------------------------------------------------------------------
7143 Sanity Check
7144 ----------------------------------------------------------------------*/
7145 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
7146 {
7147 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007148 "Invalid parameters on Main Start %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007149 pWDICtx, pEventData);
7150 return WDI_STATUS_E_FAILURE;
7151 }
7152
7153 /* If you are waiting for a HAL response at this stage, you are not
7154 * going to get it. Riva is already shutdown/crashed.
7155 */
7156 wpalTimerStop(&gWDICb.wptResponseTimer);
7157
7158 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
7159 "Processing shutdown request in FSM: Busy state ");
7160
7161 return WDI_ProcessRequest( pWDICtx, pEventData );
7162
7163}/*WDI_MainShutdownBusy*/
7164
7165
Jeff Johnsone7245742012-09-05 17:12:55 -07007166/*=======================================================================
7167
Jeff Johnson295189b2012-06-20 16:38:30 -07007168 WLAN DAL Control Path Main Processing Functions
Jeff Johnsone7245742012-09-05 17:12:55 -07007169
Jeff Johnson295189b2012-06-20 16:38:30 -07007170*=======================================================================*/
7171
7172/*========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -07007173 Main DAL Control Path Request Processing API
Jeff Johnson295189b2012-06-20 16:38:30 -07007174========================================================================*/
7175/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007176 @brief Process Start Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07007177 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007178
7179 @param pWDICtx: pointer to the WLAN DAL context
7180 pEventData: pointer to the event information structure
7181
Jeff Johnson295189b2012-06-20 16:38:30 -07007182 @see
7183 @return Result of the function call
7184*/
7185WDI_Status
7186WDI_ProcessStartReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007187(
Jeff Johnson295189b2012-06-20 16:38:30 -07007188 WDI_ControlBlockType* pWDICtx,
7189 WDI_EventInfoType* pEventData
7190)
7191{
7192 WDI_StartReqParamsType* pwdiStartParams = NULL;
7193 WDI_StartRspCb wdiStartRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07007194 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07007195 wpt_uint16 usDataOffset = 0;
7196 wpt_uint16 usSendSize = 0;
7197
Jeff Johnsone7245742012-09-05 17:12:55 -07007198 tHalMacStartReqMsg halStartReq;
7199 wpt_uint16 usLen = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07007200 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7201
7202 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007203 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07007204 -------------------------------------------------------------------------*/
7205 if (( NULL == pEventData ) ||
7206 ( NULL == (pwdiStartParams = (WDI_StartReqParamsType*)pEventData->pEventData)) ||
7207 ( NULL == (wdiStartRspCb = (WDI_StartRspCb)pEventData->pCBfnc)))
7208 {
7209 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07007210 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07007211 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007212 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007213 }
7214
7215 /*-----------------------------------------------------------------------
7216 Get message buffer
7217 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007218 usLen = sizeof(halStartReq.startReqParams) +
Jeff Johnson295189b2012-06-20 16:38:30 -07007219 pwdiStartParams->usConfigBufferLen;
7220
Jeff Johnsone7245742012-09-05 17:12:55 -07007221 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_START_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07007222 usLen,
7223 &pSendBuffer, &usDataOffset, &usSendSize))||
7224 ( usSendSize < (usDataOffset + usLen )))
7225 {
7226 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007227 "Unable to get send buffer in start req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007228 pEventData, pwdiStartParams, wdiStartRspCb);
7229 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007230 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007231 }
7232
7233 /*-----------------------------------------------------------------------
7234 Fill in the message
7235 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007236 halStartReq.startReqParams.driverType =
7237 WDI_2_HAL_DRV_TYPE(pwdiStartParams->wdiDriverType);
Jeff Johnson295189b2012-06-20 16:38:30 -07007238
Jeff Johnsone7245742012-09-05 17:12:55 -07007239 halStartReq.startReqParams.uConfigBufferLen =
7240 pwdiStartParams->usConfigBufferLen;
7241 wpalMemoryCopy( pSendBuffer+usDataOffset,
7242 &halStartReq.startReqParams,
7243 sizeof(halStartReq.startReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07007244
Jeff Johnsone7245742012-09-05 17:12:55 -07007245 usDataOffset += sizeof(halStartReq.startReqParams);
7246 wpalMemoryCopy( pSendBuffer+usDataOffset,
7247 pwdiStartParams->pConfigBuffer,
7248 pwdiStartParams->usConfigBufferLen);
Jeff Johnson295189b2012-06-20 16:38:30 -07007249
7250 pWDICtx->wdiReqStatusCB = pwdiStartParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07007251 pWDICtx->pReqStatusUserData = pwdiStartParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07007252
7253 /*Save Low Level Ind CB and associated user data - it will be used further
7254 on when an indication is coming from the lower MAC*/
7255 pWDICtx->wdiLowLevelIndCB = pwdiStartParams->wdiLowLevelIndCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07007256 pWDICtx->pIndUserData = pwdiStartParams->pIndUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07007257
Jeff Johnsone7245742012-09-05 17:12:55 -07007258 pWDICtx->bFrameTransEnabled = pwdiStartParams->bFrameTransEnabled;
Jeff Johnson295189b2012-06-20 16:38:30 -07007259 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007260 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07007261 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007262 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07007263 wdiStartRspCb, pEventData->pUserData, WDI_START_RESP);
7264
Jeff Johnsone7245742012-09-05 17:12:55 -07007265
Jeff Johnson295189b2012-06-20 16:38:30 -07007266}/*WDI_ProcessStartReq*/
7267
7268/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007269 @brief Process Stop Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07007270 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007271
7272 @param pWDICtx: pointer to the WLAN DAL context
7273 pEventData: pointer to the event information structure
7274
Jeff Johnson295189b2012-06-20 16:38:30 -07007275 @see
7276 @return Result of the function call
7277*/
7278WDI_Status
7279WDI_ProcessStopReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007280(
Jeff Johnson295189b2012-06-20 16:38:30 -07007281 WDI_ControlBlockType* pWDICtx,
7282 WDI_EventInfoType* pEventData
7283)
7284{
7285 WDI_StopReqParamsType* pwdiStopParams = NULL;
7286 WDI_StopRspCb wdiStopRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07007287 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07007288 wpt_uint16 usDataOffset = 0;
7289 wpt_uint16 usSendSize = 0;
Jeff Johnson43971f52012-07-17 12:26:56 -07007290 wpt_status status;
Jeff Johnsone7245742012-09-05 17:12:55 -07007291 tHalMacStopReqMsg halStopReq;
Jeff Johnson295189b2012-06-20 16:38:30 -07007292 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7293
7294 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007295 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07007296 -------------------------------------------------------------------------*/
7297 if (( NULL == pEventData ) ||
7298 ( NULL == (pwdiStopParams = (WDI_StopReqParamsType*)pEventData->pEventData)) ||
7299 ( NULL == (wdiStopRspCb = (WDI_StopRspCb)pEventData->pCBfnc)))
7300 {
7301 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07007302 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07007303 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -08007304 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -07007305 }
7306
7307 /*-----------------------------------------------------------------------
7308 Get message buffer
7309 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007310 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_STOP_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07007311 sizeof(halStopReq.stopReqParams),
7312 &pSendBuffer, &usDataOffset, &usSendSize))||
7313 ( usSendSize < (usDataOffset + sizeof(halStopReq.stopReqParams) )))
7314 {
7315 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007316 "Unable to get send buffer in stop req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007317 pEventData, pwdiStopParams, wdiStopRspCb);
7318 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -08007319 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -07007320 }
7321
7322 /*-----------------------------------------------------------------------
7323 Fill in the message
7324 -----------------------------------------------------------------------*/
7325 halStopReq.stopReqParams.reason = WDI_2_HAL_STOP_REASON(
7326 pwdiStopParams->wdiStopReason);
7327
Jeff Johnsone7245742012-09-05 17:12:55 -07007328 wpalMemoryCopy( pSendBuffer+usDataOffset,
7329 &halStopReq.stopReqParams,
7330 sizeof(halStopReq.stopReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07007331
7332 pWDICtx->wdiReqStatusCB = pwdiStopParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07007333 pWDICtx->pReqStatusUserData = pwdiStopParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07007334
7335 /*! TO DO: stop the data services */
7336 if ( eDRIVER_TYPE_MFG != pWDICtx->driverMode )
7337 {
7338 /*Stop the STA Table !UT- check this logic again
7339 It is safer to do it here than on the response - because a stop is imminent*/
7340 WDI_STATableStop(pWDICtx);
7341
7342 /* Reset the event to be not signalled */
Jeff Johnson43971f52012-07-17 12:26:56 -07007343 status = wpalEventReset(&pWDICtx->setPowerStateEvent);
7344 if (eWLAN_PAL_STATUS_SUCCESS != status)
Jeff Johnson295189b2012-06-20 16:38:30 -07007345 {
7346 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7347 "WDI Init failed to reset power state event");
7348
Jeff Johnsone7245742012-09-05 17:12:55 -07007349 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -08007350 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -07007351 }
7352 /* Stop Transport Driver, DXE */
Ravali85acf6b2012-12-12 14:01:38 -08007353 status = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_DOWN, WDI_SetPowerStateCb);
7354 if( eWLAN_PAL_STATUS_SUCCESS != status )
7355 {
7356 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain9a5d5382013-11-17 22:05:35 -08007357 "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 -08007358 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -08007359 goto fail;
Ravali85acf6b2012-12-12 14:01:38 -08007360 }
Jeff Johnson295189b2012-06-20 16:38:30 -07007361 /*
Jeff Johnsone7245742012-09-05 17:12:55 -07007362 * Wait for the event to be set once the ACK comes back from DXE
Jeff Johnson295189b2012-06-20 16:38:30 -07007363 */
Jeff Johnson43971f52012-07-17 12:26:56 -07007364 status = wpalEventWait(&pWDICtx->setPowerStateEvent,
7365 WDI_SET_POWER_STATE_TIMEOUT);
7366 if (eWLAN_PAL_STATUS_SUCCESS != status)
Jeff Johnson295189b2012-06-20 16:38:30 -07007367 {
7368 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7369 "WDI Init failed to wait on an event");
7370
Jeff Johnsone7245742012-09-05 17:12:55 -07007371 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -08007372 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -07007373 }
7374 }
7375
7376 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007377 Send Stop Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07007378 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007379 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07007380 wdiStopRspCb, pEventData->pUserData, WDI_STOP_RESP);
7381
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -08007382fail:
7383 // Release the message buffer so we don't leak
7384 wpalMemoryFree(pSendBuffer);
7385
7386failRequest:
7387 //WDA should have failure check to avoid the memory leak
7388 return WDI_STATUS_E_FAILURE;
7389
Jeff Johnson295189b2012-06-20 16:38:30 -07007390}/*WDI_ProcessStopReq*/
7391
7392/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007393 @brief Process Close Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07007394 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007395
7396 @param pWDICtx: pointer to the WLAN DAL context
7397 pEventData: pointer to the event information structure
7398
Jeff Johnson295189b2012-06-20 16:38:30 -07007399 @see
7400 @return Result of the function call
7401*/
7402WDI_Status
7403WDI_ProcessCloseReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007404(
Jeff Johnson295189b2012-06-20 16:38:30 -07007405 WDI_ControlBlockType* pWDICtx,
7406 WDI_EventInfoType* pEventData
7407)
7408{
Jeff Johnsone7245742012-09-05 17:12:55 -07007409 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07007410 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7411
7412 /*Lock control block for cleanup*/
7413 wpalMutexAcquire(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07007414
Jeff Johnson295189b2012-06-20 16:38:30 -07007415 /*Clear all pending request*/
7416 WDI_ClearPendingRequests(pWDICtx);
7417
7418 /* Close Control transport*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007419 WCTS_CloseTransport(pWDICtx->wctsHandle);
Jeff Johnson295189b2012-06-20 16:38:30 -07007420
7421 /* Close Data transport*/
7422 /* FTM mode does not open Data Path */
7423 if ( eDRIVER_TYPE_MFG != pWDICtx->driverMode )
7424 {
7425 WDTS_Close(pWDICtx);
7426 }
7427
7428 /*Close the STA Table !UT- check this logic again*/
7429 WDI_STATableClose(pWDICtx);
7430
7431 /*close the PAL */
7432 wptStatus = wpalClose(pWDICtx->pPALContext);
7433 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
7434 {
7435 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
7436 "Failed to wpal Close %d", wptStatus);
7437 WDI_ASSERT(0);
7438 }
7439
7440 /*Transition back to init state*/
7441 WDI_STATE_TRANSITION( pWDICtx, WDI_INIT_ST);
7442
7443 wpalMutexRelease(&pWDICtx->wptMutex);
7444
7445 /*Make sure the expected state is properly defaulted to Init*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007446 pWDICtx->ucExpectedStateTransition = WDI_INIT_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07007447
Jeff Johnsone7245742012-09-05 17:12:55 -07007448 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07007449}/*WDI_ProcessCloseReq*/
7450
7451
7452/*===========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -07007453 SCANING REQUEST PROCESSING API
Jeff Johnson295189b2012-06-20 16:38:30 -07007454===========================================================================*/
7455
7456/**
7457 @brief Process Init Scan Request function (called when Main FSM
7458 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007459
7460 @param pWDICtx: pointer to the WLAN DAL context
7461 pEventData: pointer to the event information structure
7462
Jeff Johnson295189b2012-06-20 16:38:30 -07007463 @see
7464 @return Result of the function call
7465*/
7466WDI_Status
7467WDI_ProcessInitScanReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007468(
Jeff Johnson295189b2012-06-20 16:38:30 -07007469 WDI_ControlBlockType* pWDICtx,
7470 WDI_EventInfoType* pEventData
7471)
7472{
7473 WDI_InitScanReqParamsType* pwdiInitScanParams = NULL;
7474 WDI_InitScanRspCb wdiInitScanRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07007475 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07007476 wpt_uint16 usDataOffset = 0;
7477 wpt_uint16 usSendSize = 0;
7478 wpt_uint8 i = 0;
7479
7480 tHalInitScanReqMsg halInitScanReqMsg;
7481
Jeff Johnsone7245742012-09-05 17:12:55 -07007482 /*This is temporary fix.
Jeff Johnson295189b2012-06-20 16:38:30 -07007483 * It shold be removed once host and riva changes are in sync*/
7484 tHalInitScanConReqMsg halInitScanConReqMsg;
7485
7486 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7487
7488 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007489 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07007490 -------------------------------------------------------------------------*/
7491 if (( NULL == pEventData ) ||
7492 ( NULL == (pwdiInitScanParams = (WDI_InitScanReqParamsType*)pEventData->pEventData)) ||
7493 ( NULL == (wdiInitScanRspCb = (WDI_InitScanRspCb)pEventData->pCBfnc)))
7494 {
7495 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07007496 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07007497 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007498 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007499 }
7500
7501#if 0
7502 wpalMutexAcquire(&pWDICtx->wptMutex);
7503 /*-----------------------------------------------------------------------
7504 Check to see if SCAN is already in progress - if so reject the req
7505 We only allow one scan at a time
Jeff Johnsone7245742012-09-05 17:12:55 -07007506 ! TO DO: - revisit this constraint
Jeff Johnson295189b2012-06-20 16:38:30 -07007507 -----------------------------------------------------------------------*/
7508 if ( pWDICtx->bScanInProgress )
7509 {
7510 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
7511 "Scan is already in progress - subsequent scan is not allowed"
7512 " until the first scan completes");
7513
7514 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07007515 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07007516 }
7517
Jeff Johnsone7245742012-09-05 17:12:55 -07007518 pWDICtx->bScanInProgress = eWLAN_PAL_TRUE;
7519 pWDICtx->uScanState = WDI_SCAN_INITIALIZED_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07007520
7521 wpalMutexRelease(&pWDICtx->wptMutex);
7522#endif
Viral Modid86bde22012-12-10 13:09:21 -08007523 if ((pwdiInitScanParams->wdiReqInfo.bUseNOA) && (!WDI_getFwWlanFeatCaps(P2P_GO_NOA_DECOUPLE_INIT_SCAN)))
Jeff Johnson295189b2012-06-20 16:38:30 -07007524 {
Jeff Johnsone7245742012-09-05 17:12:55 -07007525 /*This is temporary fix.
Jeff Johnson295189b2012-06-20 16:38:30 -07007526 * It shold be removed once host and riva changes are in sync*/
7527 /*-----------------------------------------------------------------------
7528 Get message buffer
7529 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007530 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_INIT_SCAN_CON_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07007531 sizeof(halInitScanConReqMsg.initScanParams),
7532 &pSendBuffer, &usDataOffset, &usSendSize))||
7533 ( usSendSize < (usDataOffset + sizeof(halInitScanConReqMsg.initScanParams) )))
7534 {
7535 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007536 "Unable to get send buffer in init scan req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007537 pEventData, pwdiInitScanParams, wdiInitScanRspCb);
7538 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007539 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007540 }
7541
7542
7543 /*-----------------------------------------------------------------------
7544 Fill in the message
7545 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007546 halInitScanConReqMsg.initScanParams.scanMode =
Jeff Johnson295189b2012-06-20 16:38:30 -07007547 WDI_2_HAL_SCAN_MODE(pwdiInitScanParams->wdiReqInfo.wdiScanMode);
7548
7549 wpalMemoryCopy(halInitScanConReqMsg.initScanParams.bssid,
7550 pwdiInitScanParams->wdiReqInfo.macBSSID, WDI_MAC_ADDR_LEN);
7551
Jeff Johnsone7245742012-09-05 17:12:55 -07007552 halInitScanConReqMsg.initScanParams.notifyBss =
Jeff Johnson295189b2012-06-20 16:38:30 -07007553 pwdiInitScanParams->wdiReqInfo.bNotifyBSS;
Jeff Johnsone7245742012-09-05 17:12:55 -07007554 halInitScanConReqMsg.initScanParams.frameType =
Jeff Johnson295189b2012-06-20 16:38:30 -07007555 pwdiInitScanParams->wdiReqInfo.ucFrameType;
Jeff Johnsone7245742012-09-05 17:12:55 -07007556 halInitScanConReqMsg.initScanParams.frameLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07007557 pwdiInitScanParams->wdiReqInfo.ucFrameLength;
7558
7559 WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr( &halInitScanConReqMsg.initScanParams.macMgmtHdr,
7560 &pwdiInitScanParams->wdiReqInfo.wdiMACMgmtHdr);
7561
Jeff Johnson295189b2012-06-20 16:38:30 -07007562 halInitScanConReqMsg.initScanParams.useNoA = pwdiInitScanParams->wdiReqInfo.bUseNOA;
7563 halInitScanConReqMsg.initScanParams.scanDuration = pwdiInitScanParams->wdiReqInfo.scanDuration;
Jeff Johnson295189b2012-06-20 16:38:30 -07007564
Jeff Johnsone7245742012-09-05 17:12:55 -07007565 halInitScanConReqMsg.initScanParams.scanEntry.activeBSScnt =
Jeff Johnson295189b2012-06-20 16:38:30 -07007566 pwdiInitScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt;
7567
7568 for (i=0; i < pwdiInitScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt; i++)
7569 {
Jeff Johnsone7245742012-09-05 17:12:55 -07007570 halInitScanConReqMsg.initScanParams.scanEntry.bssIdx[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -07007571 pwdiInitScanParams->wdiReqInfo.wdiScanEntry.bssIdx[i];
7572 }
7573
Jeff Johnsone7245742012-09-05 17:12:55 -07007574 wpalMemoryCopy( pSendBuffer+usDataOffset,
7575 &halInitScanConReqMsg.initScanParams,
7576 sizeof(halInitScanConReqMsg.initScanParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07007577 }
7578 else
7579 {
7580 /*-----------------------------------------------------------------------
7581 Get message buffer
7582 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007583 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_INIT_SCAN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07007584 sizeof(halInitScanReqMsg.initScanParams),
7585 &pSendBuffer, &usDataOffset, &usSendSize))||
7586 ( usSendSize < (usDataOffset + sizeof(halInitScanReqMsg.initScanParams) )))
7587 {
7588 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007589 "Unable to get send buffer in init scan req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007590 pEventData, pwdiInitScanParams, wdiInitScanRspCb);
7591 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007592 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007593 }
7594
7595
7596 /*-----------------------------------------------------------------------
7597 Fill in the message
7598 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007599 halInitScanReqMsg.initScanParams.scanMode =
Jeff Johnson295189b2012-06-20 16:38:30 -07007600 WDI_2_HAL_SCAN_MODE(pwdiInitScanParams->wdiReqInfo.wdiScanMode);
7601
7602 wpalMemoryCopy(halInitScanReqMsg.initScanParams.bssid,
7603 pwdiInitScanParams->wdiReqInfo.macBSSID, WDI_MAC_ADDR_LEN);
7604
Jeff Johnsone7245742012-09-05 17:12:55 -07007605 halInitScanReqMsg.initScanParams.notifyBss =
Jeff Johnson295189b2012-06-20 16:38:30 -07007606 pwdiInitScanParams->wdiReqInfo.bNotifyBSS;
Jeff Johnsone7245742012-09-05 17:12:55 -07007607 halInitScanReqMsg.initScanParams.frameType =
Jeff Johnson295189b2012-06-20 16:38:30 -07007608 pwdiInitScanParams->wdiReqInfo.ucFrameType;
Jeff Johnsone7245742012-09-05 17:12:55 -07007609 halInitScanReqMsg.initScanParams.frameLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07007610 pwdiInitScanParams->wdiReqInfo.ucFrameLength;
7611
7612 WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr( &halInitScanReqMsg.initScanParams.macMgmtHdr,
7613 &pwdiInitScanParams->wdiReqInfo.wdiMACMgmtHdr);
7614
Jeff Johnsone7245742012-09-05 17:12:55 -07007615 halInitScanReqMsg.initScanParams.scanEntry.activeBSScnt =
Jeff Johnson295189b2012-06-20 16:38:30 -07007616 pwdiInitScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt;
7617
7618 for (i=0; i < pwdiInitScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt; i++)
7619 {
Jeff Johnsone7245742012-09-05 17:12:55 -07007620 halInitScanReqMsg.initScanParams.scanEntry.bssIdx[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -07007621 pwdiInitScanParams->wdiReqInfo.wdiScanEntry.bssIdx[i];
7622 }
7623
Jeff Johnsone7245742012-09-05 17:12:55 -07007624 wpalMemoryCopy( pSendBuffer+usDataOffset,
7625 &halInitScanReqMsg.initScanParams,
7626 sizeof(halInitScanReqMsg.initScanParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07007627 }
7628
7629 pWDICtx->wdiReqStatusCB = pwdiInitScanParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07007630 pWDICtx->pReqStatusUserData = pwdiInitScanParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07007631
7632 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007633 Send Init Scan Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07007634 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007635 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07007636 wdiInitScanRspCb, pEventData->pUserData, WDI_INIT_SCAN_RESP);
7637
7638}/*WDI_ProcessInitScanReq*/
7639
7640/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007641 @brief Process Start Scan Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -07007642 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007643
7644 @param pWDICtx: pointer to the WLAN DAL context
7645 pEventData: pointer to the event information structure
7646
Jeff Johnson295189b2012-06-20 16:38:30 -07007647 @see
7648 @return Result of the function call
7649*/
7650WDI_Status
7651WDI_ProcessStartScanReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007652(
Jeff Johnson295189b2012-06-20 16:38:30 -07007653 WDI_ControlBlockType* pWDICtx,
7654 WDI_EventInfoType* pEventData
7655)
7656{
7657 WDI_StartScanReqParamsType* pwdiStartScanParams = NULL;
7658 WDI_StartScanRspCb wdiStartScanRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07007659 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07007660 wpt_uint16 usDataOffset = 0;
7661 wpt_uint16 usSendSize = 0;
7662
Jeff Johnsone7245742012-09-05 17:12:55 -07007663 tHalStartScanReqMsg halStartScanReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07007664 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7665
7666 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007667 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07007668 -------------------------------------------------------------------------*/
7669 if (( NULL == pEventData ) ||
7670 ( NULL == (pwdiStartScanParams = (WDI_StartScanReqParamsType*)pEventData->pEventData)) ||
7671 ( NULL == (wdiStartScanRspCb = (WDI_StartScanRspCb)pEventData->pCBfnc)))
7672 {
7673 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07007674 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07007675 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007676 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007677 }
7678
7679#if 0
7680 wpalMutexAcquire(&pWDICtx->wptMutex);
7681 /*-----------------------------------------------------------------------
7682 Check to see if SCAN is already in progress - start scan is only
7683 allowed when a scan is ongoing and the state of the scan procedure
Jeff Johnsone7245742012-09-05 17:12:55 -07007684 is either init or end
Jeff Johnson295189b2012-06-20 16:38:30 -07007685 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007686 if (( !pWDICtx->bScanInProgress ) ||
Jeff Johnson295189b2012-06-20 16:38:30 -07007687 (( WDI_SCAN_INITIALIZED_ST != pWDICtx->uScanState ) &&
7688 ( WDI_SCAN_ENDED_ST != pWDICtx->uScanState )))
7689 {
7690 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
7691 "Scan start not allowed in this state %d %d",
7692 pWDICtx->bScanInProgress, pWDICtx->uScanState);
Jeff Johnsone7245742012-09-05 17:12:55 -07007693
Jeff Johnson295189b2012-06-20 16:38:30 -07007694 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07007695 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07007696 }
7697
Jeff Johnsone7245742012-09-05 17:12:55 -07007698 pWDICtx->uScanState = WDI_SCAN_STARTED_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07007699
7700 wpalMutexRelease(&pWDICtx->wptMutex);
7701#endif
7702
7703 /*-----------------------------------------------------------------------
7704 Get message buffer
7705 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007706 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_START_SCAN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07007707 sizeof(halStartScanReqMsg.startScanParams),
7708 &pSendBuffer, &usDataOffset, &usSendSize))||
7709 ( usSendSize < (usDataOffset + sizeof(halStartScanReqMsg.startScanParams) )))
7710 {
7711 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007712 "Unable to get send buffer in start scan req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007713 pEventData, pwdiStartScanParams, wdiStartScanRspCb);
7714 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007715 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007716 }
7717
Jeff Johnsone7245742012-09-05 17:12:55 -07007718 halStartScanReqMsg.startScanParams.scanChannel =
Jeff Johnson295189b2012-06-20 16:38:30 -07007719 pwdiStartScanParams->ucChannel;
Jeff Johnsone7245742012-09-05 17:12:55 -07007720 wpalMemoryCopy( pSendBuffer+usDataOffset,
7721 &halStartScanReqMsg.startScanParams,
7722 sizeof(halStartScanReqMsg.startScanParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07007723
7724 pWDICtx->wdiReqStatusCB = pwdiStartScanParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07007725 pWDICtx->pReqStatusUserData = pwdiStartScanParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07007726
7727 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007728 Send Start Scan Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07007729 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007730 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07007731 wdiStartScanRspCb, pEventData->pUserData, WDI_START_SCAN_RESP);
7732}/*WDI_ProcessStartScanReq*/
7733
7734
7735/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007736 @brief Process End Scan Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07007737 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007738
7739 @param pWDICtx: pointer to the WLAN DAL context
7740 pEventData: pointer to the event information structure
7741
Jeff Johnson295189b2012-06-20 16:38:30 -07007742 @see
7743 @return Result of the function call
7744*/
7745WDI_Status
7746WDI_ProcessEndScanReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007747(
Jeff Johnson295189b2012-06-20 16:38:30 -07007748 WDI_ControlBlockType* pWDICtx,
7749 WDI_EventInfoType* pEventData
7750)
7751{
7752 WDI_EndScanReqParamsType* pwdiEndScanParams = NULL;
7753 WDI_EndScanRspCb wdiEndScanRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07007754 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07007755 wpt_uint16 usDataOffset = 0;
7756 wpt_uint16 usSendSize = 0;
7757
Jeff Johnsone7245742012-09-05 17:12:55 -07007758 tHalEndScanReqMsg halEndScanReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07007759 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7760
7761 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007762 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07007763 -------------------------------------------------------------------------*/
7764 if (( NULL == pEventData ) ||
7765 ( NULL == (pwdiEndScanParams = (WDI_EndScanReqParamsType*)pEventData->pEventData)) ||
7766 ( NULL == (wdiEndScanRspCb = (WDI_EndScanRspCb)pEventData->pCBfnc)))
7767 {
7768 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07007769 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07007770 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007771 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007772 }
7773
Jeff Johnsone7245742012-09-05 17:12:55 -07007774 /* commenting this check as UMAC is sending END_SCAN_REQ after FINISH_SCAN
7775 * sometimes because of this check the scan request is not being
Jeff Johnson295189b2012-06-20 16:38:30 -07007776 * forwarded to HAL and result in hang*/
7777#if 0
7778 wpalMutexAcquire(&pWDICtx->wptMutex);
7779 /*-----------------------------------------------------------------------
7780 Check to see if SCAN is already in progress - end scan is only
7781 allowed when a scan is ongoing and the state of the scan procedure
7782 is started
7783 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007784 if (( !pWDICtx->bScanInProgress ) ||
Jeff Johnson295189b2012-06-20 16:38:30 -07007785 ( WDI_SCAN_STARTED_ST != pWDICtx->uScanState ))
7786 {
7787 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7788 "End start not allowed in this state %d %d",
7789 pWDICtx->bScanInProgress, pWDICtx->uScanState);
Jeff Johnsone7245742012-09-05 17:12:55 -07007790
Jeff Johnson295189b2012-06-20 16:38:30 -07007791 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07007792 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07007793 }
7794
Jeff Johnsone7245742012-09-05 17:12:55 -07007795 pWDICtx->uScanState = WDI_SCAN_ENDED_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07007796
7797 wpalMutexRelease(&pWDICtx->wptMutex);
7798#endif
7799
7800 /*-----------------------------------------------------------------------
7801 Get message buffer
7802 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007803 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_END_SCAN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07007804 sizeof(halEndScanReqMsg.endScanParams),
7805 &pSendBuffer, &usDataOffset, &usSendSize))||
7806 ( usSendSize < (usDataOffset + sizeof(halEndScanReqMsg.endScanParams) )))
7807 {
7808 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007809 "Unable to get send buffer in start scan req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007810 pEventData, pwdiEndScanParams, wdiEndScanRspCb);
7811 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007812 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007813 }
7814
7815 halEndScanReqMsg.endScanParams.scanChannel = pwdiEndScanParams->ucChannel;
7816
Jeff Johnsone7245742012-09-05 17:12:55 -07007817 wpalMemoryCopy( pSendBuffer+usDataOffset,
7818 &halEndScanReqMsg.endScanParams,
7819 sizeof(halEndScanReqMsg.endScanParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07007820
7821 pWDICtx->wdiReqStatusCB = pwdiEndScanParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07007822 pWDICtx->pReqStatusUserData = pwdiEndScanParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07007823
7824 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007825 Send End Scan Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07007826 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007827 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07007828 wdiEndScanRspCb, pEventData->pUserData, WDI_END_SCAN_RESP);
7829}/*WDI_ProcessEndScanReq*/
7830
7831
7832/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007833 @brief Process Finish Scan Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -07007834 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007835
7836 @param pWDICtx: pointer to the WLAN DAL context
7837 pEventData: pointer to the event information structure
7838
Jeff Johnson295189b2012-06-20 16:38:30 -07007839 @see
7840 @return Result of the function call
7841*/
7842WDI_Status
7843WDI_ProcessFinishScanReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007844(
Jeff Johnson295189b2012-06-20 16:38:30 -07007845 WDI_ControlBlockType* pWDICtx,
7846 WDI_EventInfoType* pEventData
7847)
7848{
7849 WDI_FinishScanReqParamsType* pwdiFinishScanParams;
7850 WDI_FinishScanRspCb wdiFinishScanRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07007851 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07007852 wpt_uint16 usDataOffset = 0;
7853 wpt_uint16 usSendSize = 0;
7854 wpt_uint8 i = 0;
Ravali85acf6b2012-12-12 14:01:38 -08007855 wpt_status wptStatus;
Jeff Johnsone7245742012-09-05 17:12:55 -07007856 tHalFinishScanReqMsg halFinishScanReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07007857 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7858
7859 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007860 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07007861 -------------------------------------------------------------------------*/
7862 if (( NULL == pEventData ) ||
7863 ( NULL == pEventData->pEventData) ||
7864 ( NULL == pEventData->pCBfnc))
7865 {
7866 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07007867 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07007868 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007869 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007870 }
7871
7872 pwdiFinishScanParams = (WDI_FinishScanReqParamsType*)pEventData->pEventData;
7873 wdiFinishScanRspCb = (WDI_FinishScanRspCb)pEventData->pCBfnc;
Jeff Johnsone7245742012-09-05 17:12:55 -07007874 /* commenting this check as UMAC is sending END_SCAN_REQ after FINISH_SCAN
7875 * sometimes because of this check the scan request is not being
Jeff Johnson295189b2012-06-20 16:38:30 -07007876 * forwarded to HAL and result in hang*/
7877#if 0
7878 wpalMutexAcquire(&pWDICtx->wptMutex);
7879 /*-----------------------------------------------------------------------
7880 Check to see if SCAN is already in progress
7881 Finish scan gets invoked any scan states. ie. abort scan
7882 It should be allowed in any states.
7883 -----------------------------------------------------------------------*/
7884 if ( !pWDICtx->bScanInProgress )
7885 {
7886 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7887 "Finish start not allowed in this state %d",
7888 pWDICtx->bScanInProgress );
7889
7890 wpalMutexRelease(&pWDICtx->wptMutex);
Ravali85acf6b2012-12-12 14:01:38 -08007891 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07007892 }
7893
7894 /*-----------------------------------------------------------------------
7895 It is safe to reset the scan flags here because until the response comes
Jeff Johnsone7245742012-09-05 17:12:55 -07007896 back all subsequent requests will be blocked at BUSY state
Jeff Johnson295189b2012-06-20 16:38:30 -07007897 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007898 pWDICtx->uScanState = WDI_SCAN_FINISHED_ST;
7899 pWDICtx->bScanInProgress = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007900 wpalMutexRelease(&pWDICtx->wptMutex);
7901#endif
7902
7903 if ( pWDICtx->bInBmps )
7904 {
7905 // notify DTS that we are entering BMPS
Ravali85acf6b2012-12-12 14:01:38 -08007906 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_BMPS, NULL);
7907 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
7908 {
7909 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain9a5d5382013-11-17 22:05:35 -08007910 "WDTS_SetPowerState returned with status %d when trying to notify DTS that host is entering BMPS", wptStatus);
Ravali85acf6b2012-12-12 14:01:38 -08007911 WDI_ASSERT(0);
7912 }
Jeff Johnson295189b2012-06-20 16:38:30 -07007913 }
7914
7915 /*-----------------------------------------------------------------------
7916 Get message buffer
7917 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007918 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_FINISH_SCAN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07007919 sizeof(halFinishScanReqMsg.finishScanParams),
7920 &pSendBuffer, &usDataOffset, &usSendSize))||
7921 ( usSendSize < (usDataOffset + sizeof(halFinishScanReqMsg.finishScanParams) )))
7922 {
7923 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007924 "Unable to get send buffer in start scan req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007925 pEventData, pwdiFinishScanParams, wdiFinishScanRspCb);
7926 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007927 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007928 }
7929
Jeff Johnsone7245742012-09-05 17:12:55 -07007930 halFinishScanReqMsg.finishScanParams.scanMode =
Jeff Johnson295189b2012-06-20 16:38:30 -07007931 WDI_2_HAL_SCAN_MODE(pwdiFinishScanParams->wdiReqInfo.wdiScanMode);
7932
Jeff Johnsone7245742012-09-05 17:12:55 -07007933 halFinishScanReqMsg.finishScanParams.currentOperChannel =
Jeff Johnson295189b2012-06-20 16:38:30 -07007934 pwdiFinishScanParams->wdiReqInfo.ucCurrentOperatingChannel;
7935
Jeff Johnsone7245742012-09-05 17:12:55 -07007936 halFinishScanReqMsg.finishScanParams.cbState =
Jeff Johnson295189b2012-06-20 16:38:30 -07007937 WDI_2_HAL_CB_STATE(pwdiFinishScanParams->wdiReqInfo.wdiCBState);
7938
7939 wpalMemoryCopy(halFinishScanReqMsg.finishScanParams.bssid,
7940 pwdiFinishScanParams->wdiReqInfo.macBSSID, WDI_MAC_ADDR_LEN);
7941
Jeff Johnsone7245742012-09-05 17:12:55 -07007942 halFinishScanReqMsg.finishScanParams.notifyBss =
Jeff Johnson295189b2012-06-20 16:38:30 -07007943 pwdiFinishScanParams->wdiReqInfo.bNotifyBSS ;
Jeff Johnsone7245742012-09-05 17:12:55 -07007944 halFinishScanReqMsg.finishScanParams.frameType =
Jeff Johnson295189b2012-06-20 16:38:30 -07007945 pwdiFinishScanParams->wdiReqInfo.ucFrameType ;
Jeff Johnsone7245742012-09-05 17:12:55 -07007946 halFinishScanReqMsg.finishScanParams.frameLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07007947 pwdiFinishScanParams->wdiReqInfo.ucFrameLength ;
7948
Jeff Johnsone7245742012-09-05 17:12:55 -07007949 halFinishScanReqMsg.finishScanParams.scanEntry.activeBSScnt =
Jeff Johnson295189b2012-06-20 16:38:30 -07007950 pwdiFinishScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt ;
7951
7952 for (i = 0; i < pwdiFinishScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt; i++)
7953 {
Jeff Johnsone7245742012-09-05 17:12:55 -07007954 halFinishScanReqMsg.finishScanParams.scanEntry.bssIdx[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -07007955 pwdiFinishScanParams->wdiReqInfo.wdiScanEntry.bssIdx[i] ;
7956 }
7957
7958 WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr( &halFinishScanReqMsg.finishScanParams.macMgmtHdr,
7959 &pwdiFinishScanParams->wdiReqInfo.wdiMACMgmtHdr);
7960
Jeff Johnsone7245742012-09-05 17:12:55 -07007961 wpalMemoryCopy( pSendBuffer+usDataOffset,
7962 &halFinishScanReqMsg.finishScanParams,
7963 sizeof(halFinishScanReqMsg.finishScanParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07007964
7965 pWDICtx->wdiReqStatusCB = pwdiFinishScanParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07007966 pWDICtx->pReqStatusUserData = pwdiFinishScanParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07007967
7968 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007969 Send Finish Scan Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07007970 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007971 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07007972 wdiFinishScanRspCb, pEventData->pUserData, WDI_FINISH_SCAN_RESP);
7973}/*WDI_ProcessFinishScanReq*/
7974
7975
7976/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -07007977 ASSOCIATION REQUEST API
Jeff Johnson295189b2012-06-20 16:38:30 -07007978==========================================================================*/
7979/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007980 @brief Process BSS Join for a given Session
7981
7982 @param pWDICtx: pointer to the WLAN DAL context
7983 pEventData: pointer to the event information structure
7984
Jeff Johnson295189b2012-06-20 16:38:30 -07007985 @see
7986 @return Result of the function call
7987*/
7988WDI_Status
7989WDI_ProcessBSSSessionJoinReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007990(
Jeff Johnson295189b2012-06-20 16:38:30 -07007991 WDI_ControlBlockType* pWDICtx,
7992 WDI_JoinReqParamsType* pwdiJoinParams,
7993 WDI_JoinRspCb wdiJoinRspCb,
7994 void* pUserData
7995)
7996{
7997 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07007998 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07007999 wpt_uint16 usDataOffset = 0;
8000 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07008001 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07008002
Jeff Johnsone7245742012-09-05 17:12:55 -07008003 tHalJoinReqMsg halJoinReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07008004 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8005
Madan Mohan Koyyalamudi35287862012-10-22 14:52:46 -07008006 wpalMutexAcquire(&pWDICtx->wptMutex);
8007
Jeff Johnson295189b2012-06-20 16:38:30 -07008008 /*------------------------------------------------------------------------
8009 Check to see if we have any session with this BSSID already stored, we
8010 should not
8011 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008012 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
8013 pwdiJoinParams->wdiReqInfo.macBSSID,
8014 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07008015
8016 if ( NULL != pBSSSes )
8017 {
8018 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi35287862012-10-22 14:52:46 -07008019 "Association for this BSSID: " MAC_ADDRESS_STR " is already in place",
8020 MAC_ADDR_ARRAY(pwdiJoinParams->wdiReqInfo.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07008021
Madan Mohan Koyyalamudi35287862012-10-22 14:52:46 -07008022 /*reset the bAssociationInProgress otherwise the next
8023 *join request will be queued*/
8024 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
8025 wpalMutexRelease(&pWDICtx->wptMutex);
8026 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008027 }
8028
Jeff Johnson295189b2012-06-20 16:38:30 -07008029 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008030 Fetch an empty session block
Jeff Johnson295189b2012-06-20 16:38:30 -07008031 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008032 ucCurrentBSSSesIdx = WDI_FindEmptySession( pWDICtx, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07008033 if ( NULL == pBSSSes )
8034 {
8035
8036 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
8037 "DAL has no free sessions - cannot run another join");
8038
Madan Mohan Koyyalamudi35287862012-10-22 14:52:46 -07008039 /*reset the bAssociationInProgress otherwise the next
8040 *join request will be queued*/
8041 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008042 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008043 return WDI_STATUS_RES_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008044 }
8045
8046 /*Save BSS Session Info*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008047 pBSSSes->bInUse = eWLAN_PAL_TRUE;
8048 wpalMemoryCopy( pBSSSes->macBSSID, pwdiJoinParams->wdiReqInfo.macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -07008049 WDI_MAC_ADDR_LEN);
8050
8051 /*Transition to state Joining*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008052 pBSSSes->wdiAssocState = WDI_ASSOC_JOINING_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07008053 pWDICtx->ucCurrentBSSSesIdx = ucCurrentBSSSesIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -07008054
Jeff Johnson295189b2012-06-20 16:38:30 -07008055 wpalMutexRelease(&pWDICtx->wptMutex);
8056
8057 /*-----------------------------------------------------------------------
8058 Get message buffer
8059 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008060 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_JOIN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008061 sizeof(halJoinReqMsg.joinReqParams),
8062 &pSendBuffer, &usDataOffset, &usSendSize))||
8063 ( usSendSize < (usDataOffset + sizeof(halJoinReqMsg.joinReqParams) )))
8064 {
8065 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08008066 "Unable to get send buffer in join req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07008067 pUserData, pwdiJoinParams, wdiJoinRspCb);
8068 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008069 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008070 }
8071
8072 wpalMemoryCopy(halJoinReqMsg.joinReqParams.bssId,
Jeff Johnsone7245742012-09-05 17:12:55 -07008073 pwdiJoinParams->wdiReqInfo.macBSSID, WDI_MAC_ADDR_LEN);
Jeff Johnson295189b2012-06-20 16:38:30 -07008074
8075 wpalMemoryCopy(halJoinReqMsg.joinReqParams.selfStaMacAddr,
Jeff Johnsone7245742012-09-05 17:12:55 -07008076 pwdiJoinParams->wdiReqInfo.macSTASelf,
8077 WDI_MAC_ADDR_LEN);
Jeff Johnson295189b2012-06-20 16:38:30 -07008078
Jeff Johnsone7245742012-09-05 17:12:55 -07008079 halJoinReqMsg.joinReqParams.ucChannel =
Jeff Johnson295189b2012-06-20 16:38:30 -07008080 pwdiJoinParams->wdiReqInfo.wdiChannelInfo.ucChannel;
8081
8082 halJoinReqMsg.joinReqParams.linkState = pwdiJoinParams->wdiReqInfo.linkState;
8083
Madan Mohan Koyyalamudi83b12822012-11-02 12:43:10 -07008084#ifdef WLAN_FEATURE_VOWIFI
8085 halJoinReqMsg.joinReqParams.maxTxPower =
8086 pwdiJoinParams->wdiReqInfo.wdiChannelInfo.cMaxTxPower;
8087#else
Jeff Johnsone7245742012-09-05 17:12:55 -07008088 halJoinReqMsg.joinReqParams.ucLocalPowerConstraint =
Jeff Johnson295189b2012-06-20 16:38:30 -07008089 pwdiJoinParams->wdiReqInfo.wdiChannelInfo.ucLocalPowerConstraint;
8090#endif
8091
Jeff Johnsone7245742012-09-05 17:12:55 -07008092 halJoinReqMsg.joinReqParams.secondaryChannelOffset =
Jeff Johnson295189b2012-06-20 16:38:30 -07008093 WDI_2_HAL_SEC_CH_OFFSET(pwdiJoinParams->wdiReqInfo.wdiChannelInfo.
8094 wdiSecondaryChannelOffset);
8095
Jeff Johnsone7245742012-09-05 17:12:55 -07008096 wpalMemoryCopy( pSendBuffer+usDataOffset,
8097 &halJoinReqMsg.joinReqParams,
8098 sizeof(halJoinReqMsg.joinReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008099
8100 pWDICtx->wdiReqStatusCB = pwdiJoinParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008101 pWDICtx->pReqStatusUserData = pwdiJoinParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008102
8103 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008104 Send Join Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008105 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008106 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
8107 wdiJoinRspCb, pUserData, WDI_JOIN_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07008108
8109}/*WDI_ProcessBSSSessionJoinReq*/
8110
8111/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008112 @brief Process Join Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07008113 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008114
8115 @param pWDICtx: pointer to the WLAN DAL context
8116 pEventData: pointer to the event information structure
8117
Jeff Johnson295189b2012-06-20 16:38:30 -07008118 @see
8119 @return Result of the function call
8120*/
8121WDI_Status
8122WDI_ProcessJoinReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008123(
Jeff Johnson295189b2012-06-20 16:38:30 -07008124 WDI_ControlBlockType* pWDICtx,
8125 WDI_EventInfoType* pEventData
8126)
8127{
8128 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
8129 WDI_JoinReqParamsType* pwdiJoinParams = NULL;
8130 WDI_JoinRspCb wdiJoinRspCb = NULL;
8131 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8132
8133 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008134 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008135 -------------------------------------------------------------------------*/
8136 if (( NULL == pEventData ) ||
8137 ( NULL == (pwdiJoinParams = (WDI_JoinReqParamsType*)pEventData->pEventData)) ||
8138 ( NULL == (wdiJoinRspCb = (WDI_JoinRspCb)pEventData->pCBfnc)))
8139 {
8140 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008141 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008142 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008143 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008144 }
Jeff Johnsone7245742012-09-05 17:12:55 -07008145
Jeff Johnson295189b2012-06-20 16:38:30 -07008146 /*-------------------------------------------------------------------------
8147 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07008148 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07008149 -------------------------------------------------------------------------*/
8150 wpalMutexAcquire(&pWDICtx->wptMutex);
8151
8152 if ( eWLAN_PAL_FALSE != pWDICtx->bAssociationInProgress )
8153 {
8154 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8155 "Association is currently in progress, queueing new join req");
8156
8157 /*Association is in progress - queue current one*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008158 wdiStatus = WDI_QueueNewAssocRequest(pWDICtx, pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -07008159 pwdiJoinParams->wdiReqInfo.macBSSID);
8160
8161 wpalMutexRelease(&pWDICtx->wptMutex);
8162
Jeff Johnsone7245742012-09-05 17:12:55 -07008163 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07008164 }
8165
8166 /*Starting a new association */
8167 pWDICtx->bAssociationInProgress = eWLAN_PAL_TRUE;
8168 wpalMutexRelease(&pWDICtx->wptMutex);
8169
8170 /*Process the Join Request*/
8171 return WDI_ProcessBSSSessionJoinReq( pWDICtx, pwdiJoinParams,
8172 wdiJoinRspCb,pEventData->pUserData);
8173
8174}/*WDI_ProcessJoinReq*/
8175
8176
8177/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008178 @brief Process Config BSS Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -07008179 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008180
8181 @param pWDICtx: pointer to the WLAN DAL context
8182 pEventData: pointer to the event information structure
8183
Jeff Johnson295189b2012-06-20 16:38:30 -07008184 @see
8185 @return Result of the function call
8186*/
8187WDI_Status
8188WDI_ProcessConfigBSSReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008189(
Jeff Johnson295189b2012-06-20 16:38:30 -07008190 WDI_ControlBlockType* pWDICtx,
8191 WDI_EventInfoType* pEventData
8192)
8193{
8194 WDI_ConfigBSSReqParamsType* pwdiConfigBSSParams;
8195 WDI_ConfigBSSRspCb wdiConfigBSSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07008196 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07008197 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008198 wpt_uint16 uMsgSize = 0;
8199 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008200 wpt_uint16 usDataOffset = 0;
8201 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07008202 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07008203
Jeff Johnsone7245742012-09-05 17:12:55 -07008204 tConfigBssReqMsg halConfigBssReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07008205 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8206
8207 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008208 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008209 -------------------------------------------------------------------------*/
8210 if (( NULL == pEventData ) ||
8211 ( NULL == pEventData->pEventData ) ||
8212 ( NULL == pEventData->pCBfnc ))
8213 {
8214 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008215 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008216 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008217 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008218 }
8219
8220 pwdiConfigBSSParams = (WDI_ConfigBSSReqParamsType*)pEventData->pEventData;
8221 wdiConfigBSSRspCb = (WDI_ConfigBSSRspCb)pEventData->pCBfnc;
8222 /*-------------------------------------------------------------------------
8223 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07008224 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07008225 -------------------------------------------------------------------------*/
8226 wpalMutexAcquire(&pWDICtx->wptMutex);
8227
8228 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008229 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07008230 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008231 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
8232 pwdiConfigBSSParams->wdiReqInfo.macBSSID,
8233 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07008234
Jeff Johnsone7245742012-09-05 17:12:55 -07008235 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07008236 {
8237#ifdef WLAN_FEATURE_VOWIFI_11R
8238 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008239 Fetch an empty session block
Jeff Johnson295189b2012-06-20 16:38:30 -07008240 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008241 ucCurrentBSSSesIdx = WDI_FindEmptySession( pWDICtx, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07008242 if ( NULL == pBSSSes )
8243 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008244
Jeff Johnson295189b2012-06-20 16:38:30 -07008245 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
8246 "DAL has no free sessions - cannot run another join");
Jeff Johnsone7245742012-09-05 17:12:55 -07008247
Jeff Johnson295189b2012-06-20 16:38:30 -07008248 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008249 return WDI_STATUS_RES_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008250 }
Jeff Johnsone7245742012-09-05 17:12:55 -07008251
Jeff Johnson295189b2012-06-20 16:38:30 -07008252 /*Save BSS Session Info*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008253 pBSSSes->bInUse = eWLAN_PAL_TRUE;
8254 wpalMemoryCopy( pBSSSes->macBSSID, pwdiConfigBSSParams->wdiReqInfo.macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -07008255 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -07008256
Jeff Johnson295189b2012-06-20 16:38:30 -07008257 /*Transition to state Joining*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008258 pBSSSes->wdiAssocState = WDI_ASSOC_JOINING_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07008259 pWDICtx->ucCurrentBSSSesIdx = ucCurrentBSSSesIdx;
8260#else
Jeff Johnsone7245742012-09-05 17:12:55 -07008261 /* If the BSS type is IBSS create the session here as there is no Join
Jeff Johnson295189b2012-06-20 16:38:30 -07008262 * Request in case of IBSS*/
8263 if((pwdiConfigBSSParams->wdiReqInfo.wdiBSSType == WDI_IBSS_MODE) ||
8264 (pwdiConfigBSSParams->wdiReqInfo.wdiBSSType == WDI_INFRA_AP_MODE) ||
8265 (pwdiConfigBSSParams->wdiReqInfo.wdiBSSType == WDI_BTAMP_AP_MODE) ||
8266 (pwdiConfigBSSParams->wdiReqInfo.wdiBSSType == WDI_BTAMP_STA_MODE))
8267 {
8268 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008269 Fetch an empty session block
Jeff Johnson295189b2012-06-20 16:38:30 -07008270 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008271 ucCurrentBSSSesIdx = WDI_FindEmptySession( pWDICtx, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07008272 if ( NULL == pBSSSes )
8273 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008274
Jeff Johnson295189b2012-06-20 16:38:30 -07008275 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
8276 "DAL has no free sessions - cannot run another join");
Jeff Johnsone7245742012-09-05 17:12:55 -07008277
Jeff Johnson295189b2012-06-20 16:38:30 -07008278 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008279 return WDI_STATUS_RES_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008280 }
Jeff Johnsone7245742012-09-05 17:12:55 -07008281
Jeff Johnson295189b2012-06-20 16:38:30 -07008282 /*Save BSS Session Info*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008283 pBSSSes->bInUse = eWLAN_PAL_TRUE;
8284 wpalMemoryCopy( pBSSSes->macBSSID, pwdiConfigBSSParams->wdiReqInfo.macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -07008285 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -07008286
Jeff Johnson295189b2012-06-20 16:38:30 -07008287 /*Transition to state Joining*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008288 pBSSSes->wdiAssocState = WDI_ASSOC_JOINING_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07008289 pWDICtx->ucCurrentBSSSesIdx = ucCurrentBSSSesIdx;
8290 }
8291 else
8292 {
8293 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07008294 "%s: Association sequence for this BSS does not yet exist." MAC_ADDRESS_STR "wdiBssType %d",
8295 __func__, MAC_ADDR_ARRAY(pwdiConfigBSSParams->wdiReqInfo.macBSSID),
8296 pwdiConfigBSSParams->wdiReqInfo.wdiBSSType);
8297
Jeff Johnson295189b2012-06-20 16:38:30 -07008298 /* for IBSS testing */
8299 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008300 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008301 }
8302#endif
8303 }
8304
8305 /*------------------------------------------------------------------------
8306 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07008307 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07008308 ------------------------------------------------------------------------*/
8309 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
8310 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008311 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8312 "%s: Association sequence for this BSS exists but currently queued. " MAC_ADDRESS_STR " bssIdx %d",
8313 __func__, MAC_ADDR_ARRAY(pwdiConfigBSSParams->wdiReqInfo.macBSSID),
8314 ucCurrentBSSSesIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07008315
Jeff Johnsone7245742012-09-05 17:12:55 -07008316 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07008317
8318 wpalMutexRelease(&pWDICtx->wptMutex);
8319
Jeff Johnsone7245742012-09-05 17:12:55 -07008320 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07008321 }
8322
8323 /* Cache the request for response processing */
Jeff Johnsone7245742012-09-05 17:12:55 -07008324 wpalMemoryCopy(&pWDICtx->wdiCachedConfigBssReq,
8325 pwdiConfigBSSParams,
Jeff Johnson295189b2012-06-20 16:38:30 -07008326 sizeof(pWDICtx->wdiCachedConfigBssReq));
8327
8328 wpalMutexRelease(&pWDICtx->wptMutex);
8329
Jeff Johnsone7245742012-09-05 17:12:55 -07008330 /* Allocation of BssReqMsg Memory Based on Firmware Capabilities */
8331#ifdef WLAN_FEATURE_11AC
8332 if (WDI_getFwWlanFeatCaps(DOT11AC))
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -07008333 uMsgSize = sizeof(halConfigBssReqMsg.uBssParams.configBssParams_V1); // Version - 1 For 11AC
Jeff Johnsone7245742012-09-05 17:12:55 -07008334 else
8335#endif
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -07008336 uMsgSize = sizeof(halConfigBssReqMsg.uBssParams.configBssParams); // default Version - 0 Structure
Jeff Johnson295189b2012-06-20 16:38:30 -07008337
8338 /*-----------------------------------------------------------------------
8339 Get message buffer
8340 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008341 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_CONFIG_BSS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008342 uMsgSize, &pSendBuffer, &usDataOffset, &usSendSize))||
8343 ( usSendSize < (usDataOffset + uMsgSize )))
8344 {
8345 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08008346 "Unable to get send buffer in config bss req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07008347 pEventData, pwdiConfigBSSParams, wdiConfigBSSRspCb);
8348 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008349 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008350 }
8351
8352 /*Copy the BSS request */
Madan Mohan Koyyalamudia208d102012-10-15 15:18:18 -07008353#ifdef WLAN_FEATURE_11AC
8354 if (WDI_getFwWlanFeatCaps(DOT11AC))
8355 WDI_CopyWDIConfigBSSToHALConfigBSS( (tConfigBssParams*)&halConfigBssReqMsg.uBssParams.configBssParams_V1,
8356 &pwdiConfigBSSParams->wdiReqInfo);
8357 else
8358#endif
Jeff Johnsone7245742012-09-05 17:12:55 -07008359 WDI_CopyWDIConfigBSSToHALConfigBSS( &halConfigBssReqMsg.uBssParams.configBssParams,
Jeff Johnson295189b2012-06-20 16:38:30 -07008360 &pwdiConfigBSSParams->wdiReqInfo);
8361
8362 /* Need to fill in the STA Index to invalid, since at this point we have not
8363 yet received it from HAL */
Jeff Johnsone7245742012-09-05 17:12:55 -07008364 halConfigBssReqMsg.uBssParams.configBssParams.staContext.staIdx = WDI_STA_INVALID_IDX;
Jeff Johnson295189b2012-06-20 16:38:30 -07008365
8366 /* Need to fill in the BSS index */
Jeff Johnsone7245742012-09-05 17:12:55 -07008367 halConfigBssReqMsg.uBssParams.configBssParams.staContext.bssIdx = pBSSSes->ucBSSIdx;
8368
Madan Mohan Koyyalamudif244d8f2012-11-29 11:21:05 -08008369#ifdef WLAN_FEATURE_11AC
8370 if (WDI_getFwWlanFeatCaps(DOT11AC)){
8371 wpalMemoryCopy( pSendBuffer+usDataOffset,
8372 &halConfigBssReqMsg.uBssParams.configBssParams_V1,
8373 uMsgSize);
8374 }else
8375#endif
Tushnim Bhattacharyya5dd94562013-03-20 20:15:03 -07008376 {
8377 if ( uMsgSize <= sizeof(tConfigBssParams) )
8378 {
Tushnim Bhattacharyyaf64c5dc2013-03-21 15:11:31 -07008379 wpalMemoryCopy( pSendBuffer+usDataOffset,
Tushnim Bhattacharyya5dd94562013-03-20 20:15:03 -07008380 &halConfigBssReqMsg.uBssParams.configBssParams,
8381 uMsgSize);
8382 }
8383 else
8384 {
8385 return WDI_STATUS_E_FAILURE;
8386 }
8387 }
Jeff Johnson295189b2012-06-20 16:38:30 -07008388
8389 pWDICtx->wdiReqStatusCB = pwdiConfigBSSParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008390 pWDICtx->pReqStatusUserData = pwdiConfigBSSParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008391
8392 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008393 Send Config BSS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008394 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008395 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
8396 wdiConfigBSSRspCb, pEventData->pUserData,
Jeff Johnson295189b2012-06-20 16:38:30 -07008397 WDI_CONFIG_BSS_RESP);
8398
8399}/*WDI_ProcessConfigBSSReq*/
8400
8401
8402/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008403 @brief Process Del BSS Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07008404 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008405
8406 @param pWDICtx: pointer to the WLAN DAL context
8407 pEventData: pointer to the event information structure
8408
Jeff Johnson295189b2012-06-20 16:38:30 -07008409 @see
8410 @return Result of the function call
8411*/
8412WDI_Status
8413WDI_ProcessDelBSSReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008414(
Jeff Johnson295189b2012-06-20 16:38:30 -07008415 WDI_ControlBlockType* pWDICtx,
8416 WDI_EventInfoType* pEventData
8417)
8418{
8419 WDI_DelBSSReqParamsType* pwdiDelBSSParams = NULL;
8420 WDI_DelBSSRspCb wdiDelBSSRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008421 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07008422 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008423 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008424 wpt_uint16 usDataOffset = 0;
8425 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07008426 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07008427
Jeff Johnsone7245742012-09-05 17:12:55 -07008428 tDeleteBssReqMsg halBssReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07008429 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8430
8431 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008432 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008433 -------------------------------------------------------------------------*/
8434 if (( NULL == pEventData ) ||
8435 ( NULL == (pwdiDelBSSParams = (WDI_DelBSSReqParamsType*)pEventData->pEventData)) ||
8436 ( NULL == (wdiDelBSSRspCb = (WDI_DelBSSRspCb)pEventData->pCBfnc)))
8437 {
8438 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008439 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008440 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008441 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008442 }
8443
8444 /*-------------------------------------------------------------------------
8445 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07008446 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07008447 -------------------------------------------------------------------------*/
8448 wpalMutexAcquire(&pWDICtx->wptMutex);
8449
8450 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008451 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07008452 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008453 ucCurrentBSSSesIdx = WDI_FindAssocSessionByBSSIdx( pWDICtx,
8454 pwdiDelBSSParams->ucBssIdx,
8455 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07008456
Jeff Johnsone7245742012-09-05 17:12:55 -07008457 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07008458 {
8459 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07008460 "%s: BSS does not yet exist. ucBssIdx %d",
8461 __func__, pwdiDelBSSParams->ucBssIdx);
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -08008462
8463 wpalMutexRelease(&pWDICtx->wptMutex);
8464
8465 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008466 }
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -08008467
8468 /*------------------------------------------------------------------------
8469 Check if this BSS is being currently processed or queued,
8470 if queued - queue the new request as well
8471 ------------------------------------------------------------------------*/
8472 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
Jeff Johnson295189b2012-06-20 16:38:30 -07008473 {
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -08008474 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8475 "%s: Association sequence for this BSS exists but currently queued. ucBssIdx %d",
8476 __func__, pwdiDelBSSParams->ucBssIdx);
8477
8478 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
8479
8480 wpalMutexRelease(&pWDICtx->wptMutex);
8481
8482 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07008483 }
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -08008484
Jeff Johnson295189b2012-06-20 16:38:30 -07008485 /*-----------------------------------------------------------------------
8486 If we receive a Del BSS request for an association that is already in
8487 progress, it indicates that the assoc has failed => we no longer have
8488 an association in progress => we must check for pending associations
Jeff Johnsone7245742012-09-05 17:12:55 -07008489 that were queued and start as soon as the Del BSS response is received
Jeff Johnson295189b2012-06-20 16:38:30 -07008490 -----------------------------------------------------------------------*/
8491 if ( ucCurrentBSSSesIdx == pWDICtx->ucCurrentBSSSesIdx )
8492 {
8493 /*We can switch to false here because even if a subsequent Join comes in
8494 it will only be processed when DAL transitions out of BUSY state which
8495 happens when the Del BSS request comes */
8496 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
8497
8498 /*Former association is complete - prepare next pending assoc for
8499 processing */
8500 WDI_DequeueAssocRequest(pWDICtx);
8501 }
8502
8503 wpalMutexRelease(&pWDICtx->wptMutex);
8504 /*-----------------------------------------------------------------------
8505 Get message buffer
8506 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008507 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_DEL_BSS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008508 sizeof(halBssReqMsg.deleteBssParams),
8509 &pSendBuffer, &usDataOffset, &usSendSize))||
8510 ( usSendSize < (usDataOffset + sizeof(halBssReqMsg.deleteBssParams) )))
8511 {
8512 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08008513 "Unable to get send buffer in start req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07008514 pEventData, pwdiDelBSSParams, wdiDelBSSRspCb);
8515 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008516 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008517 }
8518
8519 /*Fill in the message request structure*/
8520
8521 /*BSS Index is saved on config BSS response and Post Assoc Response */
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -08008522 halBssReqMsg.deleteBssParams.bssIdx = pBSSSes->ucBSSIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -07008523
Jeff Johnsone7245742012-09-05 17:12:55 -07008524 wpalMemoryCopy( pSendBuffer+usDataOffset,
8525 &halBssReqMsg.deleteBssParams,
8526 sizeof(halBssReqMsg.deleteBssParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008527
8528 pWDICtx->wdiReqStatusCB = pwdiDelBSSParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008529 pWDICtx->pReqStatusUserData = pwdiDelBSSParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008530
Jeff Johnsone7245742012-09-05 17:12:55 -07008531
Jeff Johnson295189b2012-06-20 16:38:30 -07008532 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008533 Send Del BSS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008534 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008535 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07008536 wdiDelBSSRspCb, pEventData->pUserData, WDI_DEL_BSS_RESP);
8537
Jeff Johnsone7245742012-09-05 17:12:55 -07008538
Jeff Johnson295189b2012-06-20 16:38:30 -07008539}/*WDI_ProcessDelBSSReq*/
8540
8541/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008542 @brief Process Post Assoc Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -07008543 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008544
8545 @param pWDICtx: pointer to the WLAN DAL context
8546 pEventData: pointer to the event information structure
8547
Jeff Johnson295189b2012-06-20 16:38:30 -07008548 @see
8549 @return Result of the function call
8550*/
8551WDI_Status
8552WDI_ProcessPostAssocReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008553(
Jeff Johnson295189b2012-06-20 16:38:30 -07008554 WDI_ControlBlockType* pWDICtx,
8555 WDI_EventInfoType* pEventData
8556)
8557{
8558 WDI_PostAssocReqParamsType* pwdiPostAssocParams = NULL;
8559 WDI_PostAssocRspCb wdiPostAssocRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008560 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07008561 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008562 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008563 wpt_uint16 usDataOffset = 0;
8564 wpt_uint16 usSendSize = 0;
8565 wpt_uint16 uMsgSize = 0;
8566 wpt_uint16 uOffset = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07008567 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07008568
Jeff Johnsone7245742012-09-05 17:12:55 -07008569 tPostAssocReqMsg halPostAssocReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07008570 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8571
8572 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008573 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008574 -------------------------------------------------------------------------*/
8575 if (( NULL == pEventData ) ||
8576 ( NULL == (pwdiPostAssocParams = (WDI_PostAssocReqParamsType*)pEventData->pEventData)) ||
8577 ( NULL == (wdiPostAssocRspCb = (WDI_PostAssocRspCb)pEventData->pCBfnc)))
8578 {
8579 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008580 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008581 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008582 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008583 }
8584
8585 /*-------------------------------------------------------------------------
8586 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07008587 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07008588 -------------------------------------------------------------------------*/
8589 wpalMutexAcquire(&pWDICtx->wptMutex);
8590
8591 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008592 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07008593 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008594 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
8595 pwdiPostAssocParams->wdiBSSParams.macBSSID,
8596 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07008597
8598 if ( NULL == pBSSSes )
8599 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008600 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
8601 "%s: Association sequence for this BSS does not yet exist - "
8602 "operation not allowed. macBSSID " MAC_ADDRESS_STR,
8603 __func__, MAC_ADDR_ARRAY(pwdiPostAssocParams->wdiBSSParams.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07008604
8605 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008606 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008607 }
8608
8609 /*------------------------------------------------------------------------
8610 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07008611 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07008612 ------------------------------------------------------------------------*/
8613 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
8614 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008615 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8616 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
8617 __func__, MAC_ADDR_ARRAY(pwdiPostAssocParams->wdiBSSParams.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07008618
Jeff Johnsone7245742012-09-05 17:12:55 -07008619 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07008620
8621 wpalMutexRelease(&pWDICtx->wptMutex);
8622
Jeff Johnsone7245742012-09-05 17:12:55 -07008623 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07008624 }
8625
8626 /*-----------------------------------------------------------------------
8627 If Post Assoc was not yet received - the current association must
8628 be in progress
8629 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008630 if (( ucCurrentBSSSesIdx != pWDICtx->ucCurrentBSSSesIdx ) ||
Jeff Johnson295189b2012-06-20 16:38:30 -07008631 ( eWLAN_PAL_FALSE == pWDICtx->bAssociationInProgress ))
8632 {
8633 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
8634 "Association sequence for this BSS association no longer in "
8635 "progress - not allowed");
8636
8637 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008638 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008639 }
8640
8641 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008642 Post Assoc Request is only allowed in Joining state
Jeff Johnson295189b2012-06-20 16:38:30 -07008643 -----------------------------------------------------------------------*/
8644 if ( WDI_ASSOC_JOINING_ST != pBSSSes->wdiAssocState)
8645 {
8646 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
8647 "Post Assoc not allowed before JOIN - failing request");
8648
8649 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008650 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008651 }
8652
8653 wpalMutexRelease(&pWDICtx->wptMutex);
8654
8655 uMsgSize = sizeof(halPostAssocReqMsg.postAssocReqParams.configStaParams) +
8656 sizeof(halPostAssocReqMsg.postAssocReqParams.configBssParams) ;
8657 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008658 Fill message for tx over the bus
Jeff Johnson295189b2012-06-20 16:38:30 -07008659 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008660 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_POST_ASSOC_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008661 uMsgSize,&pSendBuffer, &usDataOffset, &usSendSize))||
8662 ( usSendSize < (usDataOffset + uMsgSize )))
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, pwdiPostAssocParams, wdiPostAssocRspCb);
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
8671 /*Copy the STA parameters */
8672 WDI_CopyWDIStaCtxToHALStaCtx(&halPostAssocReqMsg.postAssocReqParams.configStaParams,
8673 &pwdiPostAssocParams->wdiSTAParams );
8674
8675 /* Need to fill in the self STA Index */
Jeff Johnsone7245742012-09-05 17:12:55 -07008676 if ( WDI_STATUS_SUCCESS !=
Jeff Johnson295189b2012-06-20 16:38:30 -07008677 WDI_STATableFindStaidByAddr(pWDICtx,
8678 pwdiPostAssocParams->wdiSTAParams.macSTA,
8679 (wpt_uint8*)&halPostAssocReqMsg.postAssocReqParams.configStaParams.staIdx ))
8680 {
8681 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08008682 MAC_ADDRESS_STR
8683 ": This station does not exist in the WDI Station Table",
8684 MAC_ADDR_ARRAY(pwdiPostAssocParams->wdiSTAParams.macSTA));
Jeff Johnson295189b2012-06-20 16:38:30 -07008685 wpalMutexRelease(&pWDICtx->wptMutex);
Madan Mohan Koyyalamudif244d8f2012-11-29 11:21:05 -08008686 wpalMemoryFree(pSendBuffer);
Jeff Johnsone7245742012-09-05 17:12:55 -07008687 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008688 }
8689
8690 /* Need to fill in the BSS index */
Jeff Johnsone7245742012-09-05 17:12:55 -07008691 halPostAssocReqMsg.postAssocReqParams.configStaParams.bssIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -07008692 pBSSSes->ucBSSIdx;
8693
8694 /*Copy the BSS parameters */
8695 WDI_CopyWDIConfigBSSToHALConfigBSS( &halPostAssocReqMsg.postAssocReqParams.configBssParams,
8696 &pwdiPostAssocParams->wdiBSSParams);
8697
8698 /* Need to fill in the STA index of the peer */
Jeff Johnsone7245742012-09-05 17:12:55 -07008699 if ( WDI_STATUS_SUCCESS !=
Jeff Johnson295189b2012-06-20 16:38:30 -07008700 WDI_STATableFindStaidByAddr(pWDICtx,
8701 pwdiPostAssocParams->wdiBSSParams.wdiSTAContext.macSTA,
Jeff Johnsone7245742012-09-05 17:12:55 -07008702 (wpt_uint8*)&halPostAssocReqMsg.postAssocReqParams.configBssParams.staContext.staIdx))
Jeff Johnson295189b2012-06-20 16:38:30 -07008703 {
8704 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08008705 MAC_ADDRESS_STR
8706 ": This station does not exist in the WDI Station Table",
8707 MAC_ADDR_ARRAY(pwdiPostAssocParams->wdiBSSParams.wdiSTAContext.macSTA));
Jeff Johnson295189b2012-06-20 16:38:30 -07008708 wpalMutexRelease(&pWDICtx->wptMutex);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -08008709 wpalMemoryFree(pSendBuffer);
Jeff Johnsone7245742012-09-05 17:12:55 -07008710 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008711 }
8712
8713 /* Need to fill in the BSS index */
Jeff Johnsone7245742012-09-05 17:12:55 -07008714 halPostAssocReqMsg.postAssocReqParams.configStaParams.bssIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -07008715 pBSSSes->ucBSSIdx;
8716
Jeff Johnsone7245742012-09-05 17:12:55 -07008717
8718 wpalMemoryCopy( pSendBuffer+usDataOffset,
8719 &halPostAssocReqMsg.postAssocReqParams.configStaParams,
8720 sizeof(halPostAssocReqMsg.postAssocReqParams.configStaParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008721
8722 uOffset = sizeof(halPostAssocReqMsg.postAssocReqParams.configStaParams);
8723
Jeff Johnsone7245742012-09-05 17:12:55 -07008724 wpalMemoryCopy( pSendBuffer+usDataOffset + uOffset,
8725 &halPostAssocReqMsg.postAssocReqParams.configBssParams,
8726 sizeof(halPostAssocReqMsg.postAssocReqParams.configBssParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008727
Jeff Johnsone7245742012-09-05 17:12:55 -07008728
Jeff Johnson295189b2012-06-20 16:38:30 -07008729 pWDICtx->wdiReqStatusCB = pwdiPostAssocParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008730 pWDICtx->pReqStatusUserData = pwdiPostAssocParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008731
Jeff Johnsone7245742012-09-05 17:12:55 -07008732
8733 wpalMemoryCopy( &pWDICtx->wdiCachedPostAssocReq,
Jeff Johnson295189b2012-06-20 16:38:30 -07008734 pwdiPostAssocParams,
Jeff Johnsone7245742012-09-05 17:12:55 -07008735 sizeof(pWDICtx->wdiCachedPostAssocReq));
Jeff Johnson295189b2012-06-20 16:38:30 -07008736
8737 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008738 Send Post Assoc Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008739 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008740 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07008741 wdiPostAssocRspCb, pEventData->pUserData, WDI_POST_ASSOC_RESP);
8742
Jeff Johnsone7245742012-09-05 17:12:55 -07008743
Jeff Johnson295189b2012-06-20 16:38:30 -07008744}/*WDI_ProcessPostAssocReq*/
8745
8746/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008747 @brief Process Del STA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07008748 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008749
8750 @param pWDICtx: pointer to the WLAN DAL context
8751 pEventData: pointer to the event information structure
8752
Jeff Johnson295189b2012-06-20 16:38:30 -07008753 @see
8754 @return Result of the function call
8755*/
8756WDI_Status
8757WDI_ProcessDelSTAReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008758(
Jeff Johnson295189b2012-06-20 16:38:30 -07008759 WDI_ControlBlockType* pWDICtx,
8760 WDI_EventInfoType* pEventData
8761)
8762{
8763 WDI_DelSTAReqParamsType* pwdiDelSTAParams;
8764 WDI_DelSTARspCb wdiDelSTARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07008765 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07008766 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008767 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008768 wpt_uint16 usDataOffset = 0;
8769 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07008770 wpt_macAddr macBSSID;
Jeff Johnson295189b2012-06-20 16:38:30 -07008771 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
8772
Jeff Johnsone7245742012-09-05 17:12:55 -07008773 tDeleteStaReqMsg halDelStaReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07008774 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8775
8776 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008777 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008778 -------------------------------------------------------------------------*/
8779 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
8780 ( NULL == pEventData->pCBfnc ))
8781 {
8782 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008783 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008784 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008785 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008786 }
8787
8788 pwdiDelSTAParams = (WDI_DelSTAReqParamsType*)pEventData->pEventData;
8789 wdiDelSTARspCb = (WDI_DelSTARspCb)pEventData->pCBfnc;
8790 /*-------------------------------------------------------------------------
8791 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07008792 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07008793 -------------------------------------------------------------------------*/
8794 wpalMutexAcquire(&pWDICtx->wptMutex);
8795
8796 /*------------------------------------------------------------------------
8797 Find the BSS for which the request is made and identify WDI session
8798 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008799 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
8800 pwdiDelSTAParams->ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07008801 &macBSSID))
8802 {
8803 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08008804 "This station does not exist in the WDI Station Table %d",
8805 pwdiDelSTAParams->ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07008806 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008807 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008808 }
8809
Jeff Johnsone7245742012-09-05 17:12:55 -07008810 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
8811 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07008812 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008813 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
8814 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
8815 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07008816
8817 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008818 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008819 }
8820
8821 /*------------------------------------------------------------------------
8822 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07008823 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07008824 ------------------------------------------------------------------------*/
8825 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
8826 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008827 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8828 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
8829 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07008830
Jeff Johnsone7245742012-09-05 17:12:55 -07008831 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07008832 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008833 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07008834 }
8835
8836 wpalMutexRelease(&pWDICtx->wptMutex);
8837 /*-----------------------------------------------------------------------
8838 Get message buffer
8839 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008840 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_DEL_STA_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008841 sizeof(halDelStaReqMsg.delStaParams),
8842 &pSendBuffer, &usDataOffset, &usSendSize))||
8843 ( usSendSize < (usDataOffset + sizeof(halDelStaReqMsg.delStaParams) )))
8844 {
8845 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08008846 "Unable to get send buffer in start req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07008847 pEventData, pwdiDelSTAParams, wdiDelSTARspCb);
8848 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008849 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008850 }
8851
Jeff Johnsone7245742012-09-05 17:12:55 -07008852 halDelStaReqMsg.delStaParams.staIdx = pwdiDelSTAParams->ucSTAIdx;
8853 wpalMemoryCopy( pSendBuffer+usDataOffset,
8854 &halDelStaReqMsg.delStaParams,
8855 sizeof(halDelStaReqMsg.delStaParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008856
8857 pWDICtx->wdiReqStatusCB = pwdiDelSTAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008858 pWDICtx->pReqStatusUserData = pwdiDelSTAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008859
8860 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008861 Send Del STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008862 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008863 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07008864 wdiDelSTARspCb, pEventData->pUserData, WDI_DEL_STA_RESP);
8865
8866}/*WDI_ProcessDelSTAReq*/
8867
8868
8869/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -07008870 SECURITY REQUEST PROCESSING API
Jeff Johnson295189b2012-06-20 16:38:30 -07008871==========================================================================*/
8872/**
8873 @brief Process Set BSS Key Request function (called when Main FSM
8874 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008875
8876 @param pWDICtx: pointer to the WLAN DAL context
8877 pEventData: pointer to the event information structure
8878
Jeff Johnson295189b2012-06-20 16:38:30 -07008879 @see
8880 @return Result of the function call
8881*/
8882WDI_Status
8883WDI_ProcessSetBssKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008884(
Jeff Johnson295189b2012-06-20 16:38:30 -07008885 WDI_ControlBlockType* pWDICtx,
8886 WDI_EventInfoType* pEventData
8887)
8888{
8889 WDI_SetBSSKeyReqParamsType* pwdiSetBSSKeyParams;
8890 WDI_SetBSSKeyRspCb wdiSetBSSKeyRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07008891 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07008892 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008893 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008894 wpt_uint16 usDataOffset = 0;
8895 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07008896 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07008897 tSetBssKeyReqMsg halSetBssKeyReqMsg = {{0}};
8898 wpt_uint8 keyIndex = 0;
8899
8900 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8901
8902 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008903 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008904 -------------------------------------------------------------------------*/
8905 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
8906 ( NULL == pEventData->pCBfnc ))
8907 {
8908 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008909 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008910 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008911 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008912 }
8913
8914 pwdiSetBSSKeyParams = (WDI_SetBSSKeyReqParamsType*)pEventData->pEventData;
8915 wdiSetBSSKeyRspCb = (WDI_SetBSSKeyRspCb)pEventData->pCBfnc;
8916 /*-------------------------------------------------------------------------
8917 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07008918 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07008919 -------------------------------------------------------------------------*/
8920 wpalMutexAcquire(&pWDICtx->wptMutex);
8921
8922 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008923 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07008924 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008925 ucCurrentBSSSesIdx = WDI_FindAssocSessionByBSSIdx( pWDICtx,
8926 pwdiSetBSSKeyParams->wdiBSSKeyInfo.ucBssIdx,
8927 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07008928
Jeff Johnsone7245742012-09-05 17:12:55 -07008929 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07008930 {
8931 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07008932 "%s: Association sequence for this BSS does not yet exist. ucBssIdx %d",
8933 __func__, pwdiSetBSSKeyParams->wdiBSSKeyInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07008934
8935 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008936 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008937 }
8938
8939 /*------------------------------------------------------------------------
8940 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07008941 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07008942 ------------------------------------------------------------------------*/
8943 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
8944 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008945 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8946 "%s: Association sequence for this BSS exists but currently queued. ucBssIdx %d",
8947 __func__, pwdiSetBSSKeyParams->wdiBSSKeyInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07008948
Jeff Johnsone7245742012-09-05 17:12:55 -07008949 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07008950 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008951 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07008952 }
8953
8954
8955 wpalMutexRelease(&pWDICtx->wptMutex);
8956 /*-----------------------------------------------------------------------
8957 Get message buffer
8958 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008959 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_BSS_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008960 sizeof(halSetBssKeyReqMsg.setBssKeyParams),
8961 &pSendBuffer, &usDataOffset, &usSendSize))||
8962 ( usSendSize < (usDataOffset + sizeof(halSetBssKeyReqMsg.setBssKeyParams) )))
8963 {
8964 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08008965 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07008966 pEventData, pwdiSetBSSKeyParams, wdiSetBSSKeyRspCb);
8967 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008968 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008969 }
8970
8971 /*-----------------------------------------------------------------------
8972 Copy the Key parameters into the HAL message
8973 -----------------------------------------------------------------------*/
8974
Jeff Johnsone7245742012-09-05 17:12:55 -07008975 halSetBssKeyReqMsg.setBssKeyParams.bssIdx = ucCurrentBSSSesIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -07008976
Jeff Johnsone7245742012-09-05 17:12:55 -07008977 halSetBssKeyReqMsg.setBssKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -07008978 WDI_2_HAL_ENC_TYPE (pwdiSetBSSKeyParams->wdiBSSKeyInfo.wdiEncType);
8979
Jeff Johnsone7245742012-09-05 17:12:55 -07008980 halSetBssKeyReqMsg.setBssKeyParams.numKeys =
Jeff Johnson295189b2012-06-20 16:38:30 -07008981 pwdiSetBSSKeyParams->wdiBSSKeyInfo.ucNumKeys;
8982
8983 for(keyIndex = 0; keyIndex < pwdiSetBSSKeyParams->wdiBSSKeyInfo.ucNumKeys ;
8984 keyIndex++)
8985 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008986 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -07008987 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].keyId;
8988 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].unicast =
8989 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].unicast;
8990 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].keyDirection =
8991 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].keyDirection;
8992 wpalMemoryCopy(halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].keyRsc,
Jeff Johnsone7245742012-09-05 17:12:55 -07008993 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].keyRsc,
Jeff Johnson295189b2012-06-20 16:38:30 -07008994 WDI_MAX_KEY_RSC_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -07008995 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].paeRole =
Jeff Johnson295189b2012-06-20 16:38:30 -07008996 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].paeRole;
Jeff Johnsone7245742012-09-05 17:12:55 -07008997 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].keyLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07008998 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].keyLength;
8999 wpalMemoryCopy(halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].key,
Jeff Johnsone7245742012-09-05 17:12:55 -07009000 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].key,
Jeff Johnson295189b2012-06-20 16:38:30 -07009001 WDI_MAX_KEY_LENGTH);
9002 }
Jeff Johnsone7245742012-09-05 17:12:55 -07009003
9004 wpalMemoryCopy( pSendBuffer+usDataOffset,
9005 &halSetBssKeyReqMsg.setBssKeyParams,
9006 sizeof(halSetBssKeyReqMsg.setBssKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07009007
9008 pWDICtx->wdiReqStatusCB = pwdiSetBSSKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009009 pWDICtx->pReqStatusUserData = pwdiSetBSSKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009010
9011 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009012 Send Set BSS Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009013 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009014 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
9015 wdiSetBSSKeyRspCb, pEventData->pUserData,
9016 WDI_SET_BSS_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009017
9018}/*WDI_ProcessSetBssKeyReq*/
9019
9020/**
Jeff Johnsone7245742012-09-05 17:12:55 -07009021 @brief Process Remove BSS Key Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -07009022 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009023
9024 @param pWDICtx: pointer to the WLAN DAL context
9025 pEventData: pointer to the event information structure
9026
Jeff Johnson295189b2012-06-20 16:38:30 -07009027 @see
9028 @return Result of the function call
9029*/
9030WDI_Status
9031WDI_ProcessRemoveBssKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009032(
Jeff Johnson295189b2012-06-20 16:38:30 -07009033 WDI_ControlBlockType* pWDICtx,
9034 WDI_EventInfoType* pEventData
9035)
9036{
9037 WDI_RemoveBSSKeyReqParamsType* pwdiRemoveBSSKeyParams;
9038 WDI_RemoveBSSKeyRspCb wdiRemoveBSSKeyRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07009039 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07009040 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009041 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009042 wpt_uint16 usDataOffset = 0;
9043 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009044 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07009045 tRemoveBssKeyReqMsg halRemoveBssKeyReqMsg = {{0}};
9046 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9047
9048 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009049 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009050 -------------------------------------------------------------------------*/
9051 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9052 ( NULL == pEventData->pCBfnc ))
9053 {
9054 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009055 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009056 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009057 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009058 }
9059
9060 pwdiRemoveBSSKeyParams = (WDI_RemoveBSSKeyReqParamsType*)pEventData->pEventData;
9061 wdiRemoveBSSKeyRspCb = (WDI_RemoveBSSKeyRspCb)pEventData->pCBfnc;
9062 /*-------------------------------------------------------------------------
9063 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009064 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009065 -------------------------------------------------------------------------*/
9066 wpalMutexAcquire(&pWDICtx->wptMutex);
9067
9068 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009069 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07009070 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009071 ucCurrentBSSSesIdx = WDI_FindAssocSessionByBSSIdx( pWDICtx,
9072 pwdiRemoveBSSKeyParams->wdiKeyInfo.ucBssIdx,
9073 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07009074
Jeff Johnsone7245742012-09-05 17:12:55 -07009075 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009076 {
9077 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07009078 "%s: Association sequence for this BSS does not yet exist. ucBssIdx %d",
9079 __func__, pwdiRemoveBSSKeyParams->wdiKeyInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07009080
9081 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009082 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009083 }
9084
9085 /*------------------------------------------------------------------------
9086 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009087 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009088 ------------------------------------------------------------------------*/
9089 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9090 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009091 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9092 "%s: Association sequence for this BSS exists but currently queued. ucBssIdx %d",
9093 __func__, pwdiRemoveBSSKeyParams->wdiKeyInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07009094
Jeff Johnsone7245742012-09-05 17:12:55 -07009095 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009096 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009097 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009098 }
9099
9100
9101 wpalMutexRelease(&pWDICtx->wptMutex);
9102
9103 /*-----------------------------------------------------------------------
9104 Get message buffer
9105 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009106 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_RMV_BSS_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009107 sizeof(halRemoveBssKeyReqMsg.removeBssKeyParams),
9108 &pSendBuffer, &usDataOffset, &usSendSize))||
9109 ( usSendSize < (usDataOffset + sizeof(halRemoveBssKeyReqMsg.removeBssKeyParams) )))
9110 {
9111 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009112 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07009113 pEventData, pwdiRemoveBSSKeyParams, wdiRemoveBSSKeyRspCb);
9114 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009115 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009116 }
9117 /*-----------------------------------------------------------------------
9118 Copy the Key parameters into the HAL message
9119 -----------------------------------------------------------------------*/
9120 halRemoveBssKeyReqMsg.removeBssKeyParams.bssIdx = ucCurrentBSSSesIdx;
9121
Jeff Johnsone7245742012-09-05 17:12:55 -07009122 halRemoveBssKeyReqMsg.removeBssKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -07009123 WDI_2_HAL_ENC_TYPE (pwdiRemoveBSSKeyParams->wdiKeyInfo.wdiEncType);
9124
9125 halRemoveBssKeyReqMsg.removeBssKeyParams.keyId = pwdiRemoveBSSKeyParams->wdiKeyInfo.ucKeyId;
9126
Jeff Johnsone7245742012-09-05 17:12:55 -07009127 halRemoveBssKeyReqMsg.removeBssKeyParams.wepType =
Jeff Johnson295189b2012-06-20 16:38:30 -07009128 WDI_2_HAL_WEP_TYPE(pwdiRemoveBSSKeyParams->wdiKeyInfo.wdiWEPType);
9129
Jeff Johnsone7245742012-09-05 17:12:55 -07009130 wpalMemoryCopy( pSendBuffer+usDataOffset,
9131 &halRemoveBssKeyReqMsg.removeBssKeyParams,
9132 sizeof(halRemoveBssKeyReqMsg.removeBssKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07009133
9134 pWDICtx->wdiReqStatusCB = pwdiRemoveBSSKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009135 pWDICtx->pReqStatusUserData = pwdiRemoveBSSKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009136
9137 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009138 Send Remove BSS Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009139 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009140 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07009141 wdiRemoveBSSKeyRspCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -07009142 WDI_RMV_BSS_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009143}/*WDI_ProcessRemoveBssKeyReq*/
9144
9145/**
Jeff Johnsone7245742012-09-05 17:12:55 -07009146 @brief Process Set STA KeyRequest function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07009147 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009148
9149 @param pWDICtx: pointer to the WLAN DAL context
9150 pEventData: pointer to the event information structure
9151
Jeff Johnson295189b2012-06-20 16:38:30 -07009152 @see
9153 @return Result of the function call
9154*/
9155WDI_Status
9156WDI_ProcessSetStaKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009157(
Jeff Johnson295189b2012-06-20 16:38:30 -07009158 WDI_ControlBlockType* pWDICtx,
9159 WDI_EventInfoType* pEventData
9160)
9161{
9162 WDI_SetSTAKeyReqParamsType* pwdiSetSTAKeyParams;
9163 WDI_SetSTAKeyRspCb wdiSetSTAKeyRspCb;
9164 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009165 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009166 wpt_uint16 usDataOffset = 0;
9167 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009168 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07009169 wpt_macAddr macBSSID;
Jeff Johnsone7245742012-09-05 17:12:55 -07009170 wpt_uint8 ucCurrentBSSSesIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -07009171 tSetStaKeyReqMsg halSetStaKeyReqMsg = {{0}};
9172 wpt_uint8 keyIndex = 0;
9173
9174 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9175
9176 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009177 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009178 -------------------------------------------------------------------------*/
9179 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9180 ( NULL == pEventData->pCBfnc ))
9181 {
9182 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009183 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009184 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009185 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009186 }
9187
9188 pwdiSetSTAKeyParams = (WDI_SetSTAKeyReqParamsType*)pEventData->pEventData;
9189 wdiSetSTAKeyRspCb = (WDI_SetSTAKeyRspCb)pEventData->pCBfnc;
9190 /*-------------------------------------------------------------------------
9191 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009192 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009193 -------------------------------------------------------------------------*/
9194 wpalMutexAcquire(&pWDICtx->wptMutex);
9195
9196 /*------------------------------------------------------------------------
9197 Find the BSS for which the request is made and identify WDI session
9198 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009199 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
9200 pwdiSetSTAKeyParams->wdiKeyInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07009201 &macBSSID))
9202 {
9203 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009204 "This station does not exist in the WDI Station Table %d",
9205 pwdiSetSTAKeyParams->wdiKeyInfo.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07009206 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009207 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009208 }
9209
Jeff Johnsone7245742012-09-05 17:12:55 -07009210 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
9211 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009212 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009213 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
9214 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
9215 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009216
9217 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009218 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009219 }
Jeff Johnsone7245742012-09-05 17:12:55 -07009220
Jeff Johnson295189b2012-06-20 16:38:30 -07009221 /*------------------------------------------------------------------------
9222 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009223 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009224 ------------------------------------------------------------------------*/
9225 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9226 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009227 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9228 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
9229 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009230
Jeff Johnsone7245742012-09-05 17:12:55 -07009231 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009232 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009233 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009234 }
9235
9236
9237 wpalMutexRelease(&pWDICtx->wptMutex);
9238 /*-----------------------------------------------------------------------
9239 Get message buffer
9240 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009241 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_STA_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009242 sizeof(halSetStaKeyReqMsg.setStaKeyParams),
9243 &pSendBuffer, &usDataOffset, &usSendSize))||
9244 ( usSendSize < (usDataOffset + sizeof(halSetStaKeyReqMsg.setStaKeyParams) )))
9245 {
9246 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009247 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07009248 pEventData, pwdiSetSTAKeyParams, wdiSetSTAKeyRspCb);
9249 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009250 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009251 }
9252 /*-----------------------------------------------------------------------
9253 Copy the STA Key parameters into the HAL message
9254 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009255 halSetStaKeyReqMsg.setStaKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -07009256 WDI_2_HAL_ENC_TYPE (pwdiSetSTAKeyParams->wdiKeyInfo.wdiEncType);
9257
Jeff Johnsone7245742012-09-05 17:12:55 -07009258 halSetStaKeyReqMsg.setStaKeyParams.wepType =
Jeff Johnson295189b2012-06-20 16:38:30 -07009259 WDI_2_HAL_WEP_TYPE (pwdiSetSTAKeyParams->wdiKeyInfo.wdiWEPType );
9260
9261 halSetStaKeyReqMsg.setStaKeyParams.staIdx = pwdiSetSTAKeyParams->wdiKeyInfo.ucSTAIdx;
9262
9263 halSetStaKeyReqMsg.setStaKeyParams.defWEPIdx = pwdiSetSTAKeyParams->wdiKeyInfo.ucDefWEPIdx;
9264
9265 halSetStaKeyReqMsg.setStaKeyParams.singleTidRc = pwdiSetSTAKeyParams->wdiKeyInfo.ucSingleTidRc;
9266
Jeff Johnson295189b2012-06-20 16:38:30 -07009267 for(keyIndex = 0; keyIndex < pwdiSetSTAKeyParams->wdiKeyInfo.ucNumKeys ;
9268 keyIndex++)
9269 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009270 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -07009271 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyId;
9272 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].unicast =
9273 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].unicast;
9274 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyDirection =
9275 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyDirection;
9276 wpalMemoryCopy(halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyRsc,
Jeff Johnsone7245742012-09-05 17:12:55 -07009277 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyRsc,
Jeff Johnson295189b2012-06-20 16:38:30 -07009278 WDI_MAX_KEY_RSC_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -07009279 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].paeRole =
Jeff Johnson295189b2012-06-20 16:38:30 -07009280 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].paeRole;
Jeff Johnsone7245742012-09-05 17:12:55 -07009281 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07009282 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyLength;
9283 wpalMemoryCopy(halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].key,
Jeff Johnsone7245742012-09-05 17:12:55 -07009284 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].key,
Jeff Johnson295189b2012-06-20 16:38:30 -07009285 WDI_MAX_KEY_LENGTH);
9286 }
Jeff Johnson295189b2012-06-20 16:38:30 -07009287
Jeff Johnsone7245742012-09-05 17:12:55 -07009288 wpalMemoryCopy( pSendBuffer+usDataOffset,
9289 &halSetStaKeyReqMsg.setStaKeyParams,
9290 sizeof(halSetStaKeyReqMsg.setStaKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07009291
9292 pWDICtx->wdiReqStatusCB = pwdiSetSTAKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009293 pWDICtx->pReqStatusUserData = pwdiSetSTAKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009294
9295 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009296 Send Set STA Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009297 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009298 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
9299 wdiSetSTAKeyRspCb, pEventData->pUserData,
9300 WDI_SET_STA_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009301
9302}/*WDI_ProcessSetSTAKeyReq*/
9303
9304/**
Jeff Johnsone7245742012-09-05 17:12:55 -07009305 @brief Process Remove STA Key Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -07009306 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009307
9308 @param pWDICtx: pointer to the WLAN DAL context
9309 pEventData: pointer to the event information structure
9310
Jeff Johnson295189b2012-06-20 16:38:30 -07009311 @see
9312 @return Result of the function call
9313*/
9314WDI_Status
9315WDI_ProcessRemoveStaKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009316(
Jeff Johnson295189b2012-06-20 16:38:30 -07009317 WDI_ControlBlockType* pWDICtx,
9318 WDI_EventInfoType* pEventData
9319)
9320{
9321 WDI_RemoveSTAKeyReqParamsType* pwdiRemoveSTAKeyParams;
9322 WDI_RemoveSTAKeyRspCb wdiRemoveSTAKeyRspCb;
9323 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009324 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009325 wpt_uint16 usDataOffset = 0;
9326 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009327 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07009328 wpt_macAddr macBSSID;
9329 wpt_uint8 ucCurrentBSSSesIdx;
9330 tRemoveStaKeyReqMsg halRemoveStaKeyReqMsg = {{0}};
9331 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9332
9333 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009334 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009335 -------------------------------------------------------------------------*/
9336 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9337 ( NULL == pEventData->pCBfnc ))
9338 {
9339 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009340 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009341 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009342 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009343 }
9344
9345 pwdiRemoveSTAKeyParams = (WDI_RemoveSTAKeyReqParamsType*)pEventData->pEventData;
9346 wdiRemoveSTAKeyRspCb = (WDI_RemoveSTAKeyRspCb)pEventData->pCBfnc;
9347 /*-------------------------------------------------------------------------
9348 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009349 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009350 -------------------------------------------------------------------------*/
9351 wpalMutexAcquire(&pWDICtx->wptMutex);
9352
9353 /*------------------------------------------------------------------------
9354 Find the BSS for which the request is made and identify WDI session
9355 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009356 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
9357 pwdiRemoveSTAKeyParams->wdiKeyInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07009358 &macBSSID))
9359 {
9360 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009361 "This station does not exist in the WDI Station Table %d",
9362 pwdiRemoveSTAKeyParams->wdiKeyInfo.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07009363 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009364 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009365 }
9366
Jeff Johnsone7245742012-09-05 17:12:55 -07009367 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
9368 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009369 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009370 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
9371 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
9372 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009373
9374 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009375 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009376 }
Jeff Johnsone7245742012-09-05 17:12:55 -07009377
Jeff Johnson295189b2012-06-20 16:38:30 -07009378 /*------------------------------------------------------------------------
9379 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009380 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009381 ------------------------------------------------------------------------*/
9382 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9383 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009384 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9385 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
9386 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009387
Jeff Johnsone7245742012-09-05 17:12:55 -07009388 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009389 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009390 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009391 }
9392
9393
9394
9395 wpalMutexRelease(&pWDICtx->wptMutex);
9396 /*-----------------------------------------------------------------------
9397 Get message buffer
9398 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009399 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_RMV_STA_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009400 sizeof(halRemoveStaKeyReqMsg.removeStaKeyParams),
9401 &pSendBuffer, &usDataOffset, &usSendSize))||
9402 ( usSendSize < (usDataOffset + sizeof(halRemoveStaKeyReqMsg.removeStaKeyParams) )))
9403 {
9404 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009405 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07009406 pEventData, pwdiRemoveSTAKeyParams, wdiRemoveSTAKeyRspCb);
9407 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009408 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009409 }
9410
9411 /*-----------------------------------------------------------------------
9412 Copy the Key parameters into the HAL message
9413 -----------------------------------------------------------------------*/
9414
Jeff Johnsone7245742012-09-05 17:12:55 -07009415 halRemoveStaKeyReqMsg.removeStaKeyParams.staIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -07009416 pwdiRemoveSTAKeyParams->wdiKeyInfo.ucSTAIdx;
9417
Jeff Johnsone7245742012-09-05 17:12:55 -07009418 halRemoveStaKeyReqMsg.removeStaKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -07009419 WDI_2_HAL_ENC_TYPE (pwdiRemoveSTAKeyParams->wdiKeyInfo.wdiEncType);
9420
Jeff Johnsone7245742012-09-05 17:12:55 -07009421 halRemoveStaKeyReqMsg.removeStaKeyParams.keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -07009422 pwdiRemoveSTAKeyParams->wdiKeyInfo.ucKeyId;
9423
Jeff Johnsone7245742012-09-05 17:12:55 -07009424 halRemoveStaKeyReqMsg.removeStaKeyParams.unicast =
Jeff Johnson295189b2012-06-20 16:38:30 -07009425 pwdiRemoveSTAKeyParams->wdiKeyInfo.ucUnicast;
9426
Jeff Johnsone7245742012-09-05 17:12:55 -07009427 wpalMemoryCopy( pSendBuffer+usDataOffset,
9428 &halRemoveStaKeyReqMsg.removeStaKeyParams,
9429 sizeof(halRemoveStaKeyReqMsg.removeStaKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07009430
9431 pWDICtx->wdiReqStatusCB = pwdiRemoveSTAKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009432 pWDICtx->pReqStatusUserData = pwdiRemoveSTAKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009433
9434 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009435 Send Remove STA Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009436 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009437 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07009438 wdiRemoveSTAKeyRspCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -07009439 WDI_RMV_STA_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009440
9441}/*WDI_ProcessRemoveSTAKeyReq*/
9442
9443/**
Jeff Johnsone7245742012-09-05 17:12:55 -07009444 @brief Process Set STA KeyRequest function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07009445 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009446
9447 @param pWDICtx: pointer to the WLAN DAL context
9448 pEventData: pointer to the event information structure
9449
Jeff Johnson295189b2012-06-20 16:38:30 -07009450 @see
9451 @return Result of the function call
9452*/
9453WDI_Status
9454WDI_ProcessSetStaBcastKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009455(
Jeff Johnson295189b2012-06-20 16:38:30 -07009456 WDI_ControlBlockType* pWDICtx,
9457 WDI_EventInfoType* pEventData
9458)
9459{
9460 WDI_SetSTAKeyReqParamsType* pwdiSetSTAKeyParams;
9461 WDI_SetSTAKeyRspCb wdiSetSTAKeyRspCb;
9462 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009463 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009464 wpt_uint16 usDataOffset = 0;
9465 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009466 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07009467 wpt_macAddr macBSSID;
Jeff Johnsone7245742012-09-05 17:12:55 -07009468 wpt_uint8 ucCurrentBSSSesIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -07009469 tSetStaKeyReqMsg halSetStaKeyReqMsg = {{0}};
9470 wpt_uint8 keyIndex = 0;
9471
9472 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9473
9474 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009475 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009476 -------------------------------------------------------------------------*/
9477 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9478 ( NULL == pEventData->pCBfnc ))
9479 {
9480 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009481 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009482 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009483 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009484 }
9485
9486 pwdiSetSTAKeyParams = (WDI_SetSTAKeyReqParamsType*)pEventData->pEventData;
9487 wdiSetSTAKeyRspCb = (WDI_SetSTAKeyRspCb)pEventData->pCBfnc;
9488 /*-------------------------------------------------------------------------
9489 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009490 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009491 -------------------------------------------------------------------------*/
9492 wpalMutexAcquire(&pWDICtx->wptMutex);
9493
9494 /*------------------------------------------------------------------------
9495 Find the BSS for which the request is made and identify WDI session
9496 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009497 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
9498 pwdiSetSTAKeyParams->wdiKeyInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07009499 &macBSSID))
9500 {
9501 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009502 "This station does not exist in the WDI Station Table %d",
9503 pwdiSetSTAKeyParams->wdiKeyInfo.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07009504 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009505 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009506 }
9507
Jeff Johnsone7245742012-09-05 17:12:55 -07009508 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
9509 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009510 {
9511 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009512 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
Jeff Johnsone7245742012-09-05 17:12:55 -07009513 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009514
9515 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009516 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009517 }
Jeff Johnsone7245742012-09-05 17:12:55 -07009518
Jeff Johnson295189b2012-06-20 16:38:30 -07009519 /*------------------------------------------------------------------------
9520 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009521 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009522 ------------------------------------------------------------------------*/
9523 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9524 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009525 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9526 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
9527 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009528
Jeff Johnsone7245742012-09-05 17:12:55 -07009529 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009530 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009531 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009532 }
9533
9534
9535 wpalMutexRelease(&pWDICtx->wptMutex);
9536 /*-----------------------------------------------------------------------
9537 Get message buffer
9538 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009539 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_STA_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009540 sizeof(halSetStaKeyReqMsg.setStaKeyParams),
9541 &pSendBuffer, &usDataOffset, &usSendSize))||
9542 ( usSendSize < (usDataOffset + sizeof(halSetStaKeyReqMsg.setStaKeyParams) )))
9543 {
9544 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009545 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07009546 pEventData, pwdiSetSTAKeyParams, wdiSetSTAKeyRspCb);
9547 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009548 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009549 }
9550 /*-----------------------------------------------------------------------
9551 Copy the STA Key parameters into the HAL message
9552 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009553 halSetStaKeyReqMsg.setStaKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -07009554 WDI_2_HAL_ENC_TYPE (pwdiSetSTAKeyParams->wdiKeyInfo.wdiEncType);
9555
Jeff Johnsone7245742012-09-05 17:12:55 -07009556 halSetStaKeyReqMsg.setStaKeyParams.wepType =
Jeff Johnson295189b2012-06-20 16:38:30 -07009557 WDI_2_HAL_WEP_TYPE (pwdiSetSTAKeyParams->wdiKeyInfo.wdiWEPType );
9558
9559 halSetStaKeyReqMsg.setStaKeyParams.staIdx = pwdiSetSTAKeyParams->wdiKeyInfo.ucSTAIdx;
9560
9561 halSetStaKeyReqMsg.setStaKeyParams.defWEPIdx = pwdiSetSTAKeyParams->wdiKeyInfo.ucDefWEPIdx;
9562
9563 halSetStaKeyReqMsg.setStaKeyParams.singleTidRc = pwdiSetSTAKeyParams->wdiKeyInfo.ucSingleTidRc;
9564
Jeff Johnson295189b2012-06-20 16:38:30 -07009565 for(keyIndex = 0; keyIndex < pwdiSetSTAKeyParams->wdiKeyInfo.ucNumKeys ;
9566 keyIndex++)
9567 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009568 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -07009569 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyId;
9570 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].unicast =
9571 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].unicast;
9572 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyDirection =
9573 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyDirection;
9574 wpalMemoryCopy(halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyRsc,
Jeff Johnsone7245742012-09-05 17:12:55 -07009575 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyRsc,
Jeff Johnson295189b2012-06-20 16:38:30 -07009576 WDI_MAX_KEY_RSC_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -07009577 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].paeRole =
Jeff Johnson295189b2012-06-20 16:38:30 -07009578 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].paeRole;
Jeff Johnsone7245742012-09-05 17:12:55 -07009579 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07009580 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyLength;
9581 wpalMemoryCopy(halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].key,
Jeff Johnsone7245742012-09-05 17:12:55 -07009582 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].key,
Jeff Johnson295189b2012-06-20 16:38:30 -07009583 WDI_MAX_KEY_LENGTH);
9584 }
Jeff Johnson295189b2012-06-20 16:38:30 -07009585
Jeff Johnsone7245742012-09-05 17:12:55 -07009586 wpalMemoryCopy( pSendBuffer+usDataOffset,
9587 &halSetStaKeyReqMsg.setStaKeyParams,
9588 sizeof(halSetStaKeyReqMsg.setStaKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07009589
9590 pWDICtx->wdiReqStatusCB = pwdiSetSTAKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009591 pWDICtx->pReqStatusUserData = pwdiSetSTAKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009592
9593 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009594 Send Set STA Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009595 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009596 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
9597 wdiSetSTAKeyRspCb, pEventData->pUserData,
9598 WDI_SET_STA_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009599
9600}/*WDI_ProcessSetSTABcastKeyReq*/
9601
9602/**
Jeff Johnsone7245742012-09-05 17:12:55 -07009603 @brief Process Remove STA Key Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -07009604 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009605
9606 @param pWDICtx: pointer to the WLAN DAL context
9607 pEventData: pointer to the event information structure
9608
Jeff Johnson295189b2012-06-20 16:38:30 -07009609 @see
9610 @return Result of the function call
9611*/
9612WDI_Status
9613WDI_ProcessRemoveStaBcastKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009614(
Jeff Johnson295189b2012-06-20 16:38:30 -07009615 WDI_ControlBlockType* pWDICtx,
9616 WDI_EventInfoType* pEventData
9617)
9618{
9619 WDI_RemoveSTAKeyReqParamsType* pwdiRemoveSTABcastKeyParams;
9620 WDI_RemoveSTAKeyRspCb wdiRemoveSTAKeyRspCb;
9621 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009622 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009623 wpt_uint16 usDataOffset = 0;
9624 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009625 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07009626 wpt_macAddr macBSSID;
9627 wpt_uint8 ucCurrentBSSSesIdx;
9628 tRemoveStaKeyReqMsg halRemoveStaBcastKeyReqMsg = {{0}};
9629 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9630
9631 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009632 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009633 -------------------------------------------------------------------------*/
9634 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9635 ( NULL == pEventData->pCBfnc ))
9636 {
9637 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009638 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009639 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009640 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009641 }
9642
9643 pwdiRemoveSTABcastKeyParams = (WDI_RemoveSTAKeyReqParamsType*)pEventData->pEventData;
9644 wdiRemoveSTAKeyRspCb = (WDI_RemoveSTAKeyRspCb)pEventData->pCBfnc;
9645 /*-------------------------------------------------------------------------
9646 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009647 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009648 -------------------------------------------------------------------------*/
9649 wpalMutexAcquire(&pWDICtx->wptMutex);
9650
9651 /*------------------------------------------------------------------------
9652 Find the BSS for which the request is made and identify WDI session
9653 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009654 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
9655 pwdiRemoveSTABcastKeyParams->wdiKeyInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07009656 &macBSSID))
9657 {
9658 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009659 "This station does not exist in the WDI Station Table %d",
9660 pwdiRemoveSTABcastKeyParams->wdiKeyInfo.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07009661 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009662 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009663 }
9664
Jeff Johnsone7245742012-09-05 17:12:55 -07009665 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
9666 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009667 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009668 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
9669 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
9670 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009671
9672 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009673 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009674 }
Jeff Johnsone7245742012-09-05 17:12:55 -07009675
Jeff Johnson295189b2012-06-20 16:38:30 -07009676 /*------------------------------------------------------------------------
9677 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009678 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009679 ------------------------------------------------------------------------*/
9680 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9681 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009682 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9683 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
9684 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009685
Jeff Johnsone7245742012-09-05 17:12:55 -07009686 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009687 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009688 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009689 }
9690
9691
9692
9693 wpalMutexRelease(&pWDICtx->wptMutex);
9694 /*-----------------------------------------------------------------------
9695 Get message buffer
9696 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009697 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_RMV_STA_BCAST_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009698 sizeof(halRemoveStaBcastKeyReqMsg.removeStaKeyParams),
9699 &pSendBuffer, &usDataOffset, &usSendSize))||
9700 ( usSendSize < (usDataOffset + sizeof(halRemoveStaBcastKeyReqMsg.removeStaKeyParams) )))
9701 {
9702 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009703 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07009704 pEventData, pwdiRemoveSTABcastKeyParams, wdiRemoveSTAKeyRspCb);
9705 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009706 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009707 }
9708
9709 /*-----------------------------------------------------------------------
9710 Copy the Key parameters into the HAL message
9711 -----------------------------------------------------------------------*/
9712
Jeff Johnsone7245742012-09-05 17:12:55 -07009713 halRemoveStaBcastKeyReqMsg.removeStaKeyParams.staIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -07009714 pwdiRemoveSTABcastKeyParams->wdiKeyInfo.ucSTAIdx;
9715
Jeff Johnsone7245742012-09-05 17:12:55 -07009716 halRemoveStaBcastKeyReqMsg.removeStaKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -07009717 WDI_2_HAL_ENC_TYPE (pwdiRemoveSTABcastKeyParams->wdiKeyInfo.wdiEncType);
9718
Jeff Johnsone7245742012-09-05 17:12:55 -07009719 halRemoveStaBcastKeyReqMsg.removeStaKeyParams.keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -07009720 pwdiRemoveSTABcastKeyParams->wdiKeyInfo.ucKeyId;
9721
Jeff Johnsone7245742012-09-05 17:12:55 -07009722 halRemoveStaBcastKeyReqMsg.removeStaKeyParams.unicast =
Jeff Johnson295189b2012-06-20 16:38:30 -07009723 pwdiRemoveSTABcastKeyParams->wdiKeyInfo.ucUnicast;
9724
Jeff Johnsone7245742012-09-05 17:12:55 -07009725 wpalMemoryCopy( pSendBuffer+usDataOffset,
9726 &halRemoveStaBcastKeyReqMsg.removeStaKeyParams,
9727 sizeof(halRemoveStaBcastKeyReqMsg.removeStaKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07009728
9729 pWDICtx->wdiReqStatusCB = pwdiRemoveSTABcastKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009730 pWDICtx->pReqStatusUserData = pwdiRemoveSTABcastKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009731
9732 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009733 Send Remove STA Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009734 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009735 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07009736 wdiRemoveSTAKeyRspCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -07009737 WDI_RMV_STA_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009738
9739}/*WDI_ProcessRemoveSTABcastKeyReq*/
9740
9741/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -07009742 QOS and BA PROCESSING REQUEST API
Jeff Johnson295189b2012-06-20 16:38:30 -07009743==========================================================================*/
9744/**
9745 @brief Process Add TSpec Request function (called when Main FSM
9746 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009747
9748 @param pWDICtx: pointer to the WLAN DAL context
9749 pEventData: pointer to the event information structure
9750
Jeff Johnson295189b2012-06-20 16:38:30 -07009751 @see
9752 @return Result of the function call
9753*/
9754WDI_Status
9755WDI_ProcessAddTSpecReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009756(
Jeff Johnson295189b2012-06-20 16:38:30 -07009757 WDI_ControlBlockType* pWDICtx,
9758 WDI_EventInfoType* pEventData
9759)
9760{
9761 WDI_AddTSReqParamsType* pwdiAddTSParams;
9762 WDI_AddTsRspCb wdiAddTSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07009763 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07009764 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009765 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009766 wpt_uint16 usDataOffset = 0;
9767 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009768 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07009769 wpt_macAddr macBSSID;
9770 tAddTsParams halAddTsParams = {0};
Jeff Johnsone7245742012-09-05 17:12:55 -07009771
Jeff Johnson295189b2012-06-20 16:38:30 -07009772 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9773
9774 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009775 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009776 -------------------------------------------------------------------------*/
9777 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9778 ( NULL == pEventData->pCBfnc ))
9779 {
9780 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009781 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009782 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009783 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009784 }
9785
9786 pwdiAddTSParams = (WDI_AddTSReqParamsType*)pEventData->pEventData;
9787 wdiAddTSRspCb = (WDI_AddTsRspCb)pEventData->pCBfnc;
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 /*------------------------------------------------------------------------
9795 Find the BSS for which the request is made and identify WDI session
9796 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009797 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
9798 pwdiAddTSParams->wdiTsInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07009799 &macBSSID))
9800 {
9801 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009802 "This station does not exist in the WDI Station Table %d",
9803 pwdiAddTSParams->wdiTsInfo.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07009804 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009805 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009806 }
9807
Jeff Johnsone7245742012-09-05 17:12:55 -07009808 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
9809 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009810 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009811 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
9812 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
9813 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009814
9815 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009816 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009817 }
Jeff Johnsone7245742012-09-05 17:12:55 -07009818
Jeff Johnson295189b2012-06-20 16:38:30 -07009819 /*------------------------------------------------------------------------
9820 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009821 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009822 ------------------------------------------------------------------------*/
9823 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9824 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009825 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9826 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
9827 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009828
Jeff Johnsone7245742012-09-05 17:12:55 -07009829 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009830 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009831 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009832 }
9833
9834 wpalMutexRelease(&pWDICtx->wptMutex);
9835 /*-----------------------------------------------------------------------
9836 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -07009837 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -07009838 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009839 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ADD_TS_REQ,
9840 sizeof(halAddTsParams),
9841 &pSendBuffer, &usDataOffset,
Jeff Johnson295189b2012-06-20 16:38:30 -07009842 &usSendSize))||
9843 ( usSendSize < (usDataOffset + sizeof(halAddTsParams) )))
9844 {
9845 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009846 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07009847 pEventData, pwdiAddTSParams, wdiAddTSRspCb);
9848 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009849 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009850 }
9851
9852 halAddTsParams.staIdx = pwdiAddTSParams->wdiTsInfo.ucSTAIdx;
9853 halAddTsParams.tspecIdx = pwdiAddTSParams->wdiTsInfo.ucTspecIdx;
9854
9855 //TSPEC IE
9856 halAddTsParams.tspec.type = pwdiAddTSParams->wdiTsInfo.wdiTspecIE.ucType;
9857 halAddTsParams.tspec.length = pwdiAddTSParams->wdiTsInfo.wdiTspecIE.ucLength;
Jeff Johnsone7245742012-09-05 17:12:55 -07009858 halAddTsParams.tspec.nomMsduSz =
Jeff Johnson295189b2012-06-20 16:38:30 -07009859 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.usNomMsduSz;
Jeff Johnsone7245742012-09-05 17:12:55 -07009860 halAddTsParams.tspec.maxMsduSz =
Jeff Johnson295189b2012-06-20 16:38:30 -07009861 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.usMaxMsduSz;
Jeff Johnsone7245742012-09-05 17:12:55 -07009862 halAddTsParams.tspec.minSvcInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -07009863 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMinSvcInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -07009864 halAddTsParams.tspec.maxSvcInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -07009865 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMaxSvcInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -07009866 halAddTsParams.tspec.inactInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -07009867 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uInactInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -07009868 halAddTsParams.tspec.suspendInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -07009869 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uSuspendInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -07009870 halAddTsParams.tspec.svcStartTime =
Jeff Johnson295189b2012-06-20 16:38:30 -07009871 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uSvcStartTime;
Jeff Johnsone7245742012-09-05 17:12:55 -07009872 halAddTsParams.tspec.minDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -07009873 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMinDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -07009874 halAddTsParams.tspec.meanDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -07009875 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMeanDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -07009876 halAddTsParams.tspec.peakDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -07009877 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uPeakDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -07009878 halAddTsParams.tspec.maxBurstSz =
Jeff Johnson295189b2012-06-20 16:38:30 -07009879 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMaxBurstSz;
Jeff Johnsone7245742012-09-05 17:12:55 -07009880 halAddTsParams.tspec.delayBound =
Jeff Johnson295189b2012-06-20 16:38:30 -07009881 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uDelayBound;
Jeff Johnsone7245742012-09-05 17:12:55 -07009882 halAddTsParams.tspec.minPhyRate =
Jeff Johnson295189b2012-06-20 16:38:30 -07009883 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMinPhyRate;
Jeff Johnsone7245742012-09-05 17:12:55 -07009884 halAddTsParams.tspec.surplusBw =
Jeff Johnson295189b2012-06-20 16:38:30 -07009885 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.usSurplusBw;
Jeff Johnsone7245742012-09-05 17:12:55 -07009886 halAddTsParams.tspec.mediumTime =
Jeff Johnson295189b2012-06-20 16:38:30 -07009887 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.usMediumTime;
9888
9889 //TSPEC IE : TS INFO : TRAFFIC
Jeff Johnsone7245742012-09-05 17:12:55 -07009890 halAddTsParams.tspec.tsinfo.traffic.ackPolicy =
Jeff Johnson295189b2012-06-20 16:38:30 -07009891 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.accessPolicy;
Jeff Johnsone7245742012-09-05 17:12:55 -07009892 halAddTsParams.tspec.tsinfo.traffic.userPrio =
Jeff Johnson295189b2012-06-20 16:38:30 -07009893 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.userPrio;
Jeff Johnsone7245742012-09-05 17:12:55 -07009894 halAddTsParams.tspec.tsinfo.traffic.psb =
Jeff Johnson295189b2012-06-20 16:38:30 -07009895 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.psb;
Jeff Johnsone7245742012-09-05 17:12:55 -07009896 halAddTsParams.tspec.tsinfo.traffic.aggregation =
Jeff Johnson295189b2012-06-20 16:38:30 -07009897 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.aggregation;
Jeff Johnsone7245742012-09-05 17:12:55 -07009898 halAddTsParams.tspec.tsinfo.traffic.direction =
Jeff Johnson295189b2012-06-20 16:38:30 -07009899 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.direction;
Jeff Johnsone7245742012-09-05 17:12:55 -07009900 halAddTsParams.tspec.tsinfo.traffic.tsid =
Jeff Johnson295189b2012-06-20 16:38:30 -07009901 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.tsid;
Jeff Johnsone7245742012-09-05 17:12:55 -07009902 halAddTsParams.tspec.tsinfo.traffic.trafficType =
Jeff Johnson295189b2012-06-20 16:38:30 -07009903 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.trafficType;
9904
9905 //TSPEC IE : TS INFO : SCHEDULE
Jeff Johnsone7245742012-09-05 17:12:55 -07009906 halAddTsParams.tspec.tsinfo.schedule.rsvd =
Jeff Johnson295189b2012-06-20 16:38:30 -07009907 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiSchedule.rsvd;
Jeff Johnsone7245742012-09-05 17:12:55 -07009908 halAddTsParams.tspec.tsinfo.schedule.schedule =
Jeff Johnson295189b2012-06-20 16:38:30 -07009909 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiSchedule.schedule;
9910
Jeff Johnsone7245742012-09-05 17:12:55 -07009911 wpalMemoryCopy( pSendBuffer+usDataOffset,
9912 &halAddTsParams,
9913 sizeof(halAddTsParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07009914
9915 pWDICtx->wdiReqStatusCB = pwdiAddTSParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009916 pWDICtx->pReqStatusUserData = pwdiAddTSParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009917
9918 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009919 Send Add TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009920 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009921 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07009922 wdiAddTSRspCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -07009923 WDI_ADD_TS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009924}/*WDI_ProcessAddTSpecReq*/
9925
9926
9927/**
9928 @brief Process Del TSpec Request function (called when Main FSM
9929 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009930
9931 @param pWDICtx: pointer to the WLAN DAL context
9932 pEventData: pointer to the event information structure
9933
Jeff Johnson295189b2012-06-20 16:38:30 -07009934 @see
9935 @return Result of the function call
9936*/
9937WDI_Status
9938WDI_ProcessDelTSpecReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009939(
Jeff Johnson295189b2012-06-20 16:38:30 -07009940 WDI_ControlBlockType* pWDICtx,
9941 WDI_EventInfoType* pEventData
9942)
9943{
9944 WDI_DelTSReqParamsType* pwdiDelTSParams;
9945 WDI_DelTsRspCb wdiDelTSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07009946 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07009947 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009948 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009949 wpt_uint16 usDataOffset = 0;
9950 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009951 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07009952 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9953
9954 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009955 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009956 -------------------------------------------------------------------------*/
9957 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9958 ( NULL == pEventData->pCBfnc ))
9959 {
9960 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009961 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009962 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009963 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009964 }
9965
9966 pwdiDelTSParams = (WDI_DelTSReqParamsType*)pEventData->pEventData;
9967 wdiDelTSRspCb = (WDI_DelTsRspCb)pEventData->pCBfnc;
9968
9969 /*-------------------------------------------------------------------------
9970 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009971 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009972 -------------------------------------------------------------------------*/
9973 wpalMutexAcquire(&pWDICtx->wptMutex);
9974
9975 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009976 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07009977 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009978 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
9979 pwdiDelTSParams->wdiDelTSInfo.macBSSID,
9980 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07009981
Jeff Johnsone7245742012-09-05 17:12:55 -07009982 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009983 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009984 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
9985 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
9986 __func__, MAC_ADDR_ARRAY(pwdiDelTSParams->wdiDelTSInfo.macBSSID));
9987
Jeff Johnson295189b2012-06-20 16:38:30 -07009988 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009989 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009990 }
9991
9992 /*------------------------------------------------------------------------
9993 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009994 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009995 ------------------------------------------------------------------------*/
9996 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9997 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009998 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9999 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
10000 __func__, MAC_ADDR_ARRAY(pwdiDelTSParams->wdiDelTSInfo.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010001
Jeff Johnsone7245742012-09-05 17:12:55 -070010002 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070010003 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010004 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070010005 }
10006
10007
10008 wpalMutexRelease(&pWDICtx->wptMutex);
10009 /*-----------------------------------------------------------------------
10010 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070010011 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070010012 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010013 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_DEL_TS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010014 sizeof(pwdiDelTSParams->wdiDelTSInfo),
10015 &pSendBuffer, &usDataOffset, &usSendSize))||
10016 ( usSendSize < (usDataOffset + sizeof(pwdiDelTSParams->wdiDelTSInfo) )))
10017 {
10018 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010019 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070010020 pEventData, pwdiDelTSParams, wdiDelTSRspCb);
10021 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010022 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010023 }
10024
Jeff Johnsone7245742012-09-05 17:12:55 -070010025 wpalMemoryCopy( pSendBuffer+usDataOffset,
10026 &pwdiDelTSParams->wdiDelTSInfo,
10027 sizeof(pwdiDelTSParams->wdiDelTSInfo));
Jeff Johnson295189b2012-06-20 16:38:30 -070010028
10029 pWDICtx->wdiReqStatusCB = pwdiDelTSParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010030 pWDICtx->pReqStatusUserData = pwdiDelTSParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010031
10032 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010033 Send Del TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010034 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010035 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10036 wdiDelTSRspCb, pEventData->pUserData, WDI_DEL_TS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010037}/*WDI_ProcessDelTSpecReq*/
10038
10039/**
10040 @brief Process Update EDCA Params Request function (called when
10041 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010042
10043 @param pWDICtx: pointer to the WLAN DAL context
10044 pEventData: pointer to the event information structure
10045
Jeff Johnson295189b2012-06-20 16:38:30 -070010046 @see
10047 @return Result of the function call
10048*/
10049WDI_Status
10050WDI_ProcessUpdateEDCAParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010051(
Jeff Johnson295189b2012-06-20 16:38:30 -070010052 WDI_ControlBlockType* pWDICtx,
10053 WDI_EventInfoType* pEventData
10054)
10055{
10056 WDI_UpdateEDCAParamsType* pwdiUpdateEDCAParams;
10057 WDI_UpdateEDCAParamsRspCb wdiUpdateEDCARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010058 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070010059 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070010060 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010061 wpt_uint16 usDataOffset = 0;
10062 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070010063 WDI_Status wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070010064 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10065
10066 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010067 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010068 -------------------------------------------------------------------------*/
10069 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10070 ( NULL == pEventData->pCBfnc ))
10071 {
10072 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010073 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010074 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010075 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010076 }
10077
10078 pwdiUpdateEDCAParams = (WDI_UpdateEDCAParamsType*)pEventData->pEventData;
10079 wdiUpdateEDCARspCb = (WDI_UpdateEDCAParamsRspCb)pEventData->pCBfnc;
10080 /*-------------------------------------------------------------------------
10081 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070010082 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070010083 -------------------------------------------------------------------------*/
10084 wpalMutexAcquire(&pWDICtx->wptMutex);
10085
10086 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010087 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070010088 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010089 ucCurrentBSSSesIdx = WDI_FindAssocSessionByBSSIdx( pWDICtx,
10090 pwdiUpdateEDCAParams->wdiEDCAInfo.ucBssIdx,
10091 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070010092
Jeff Johnsone7245742012-09-05 17:12:55 -070010093 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070010094 {
10095 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070010096 "%s: Association sequence for this BSS does not yet exist. ucBssIdx %d",
10097 __func__, pwdiUpdateEDCAParams->wdiEDCAInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070010098
10099 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010100 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070010101 }
10102
10103 /*------------------------------------------------------------------------
10104 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070010105 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070010106 ------------------------------------------------------------------------*/
10107 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
10108 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010109 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10110 "%s: Association sequence for this BSS exists but currently queued. ucBssIdx %d",
10111 __func__, pwdiUpdateEDCAParams->wdiEDCAInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070010112
Jeff Johnsone7245742012-09-05 17:12:55 -070010113 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070010114 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010115 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070010116 }
10117
10118
10119 wpalMutexRelease(&pWDICtx->wptMutex);
10120 /*-----------------------------------------------------------------------
10121 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070010122 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070010123 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010124 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPD_EDCA_PRMS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010125 sizeof(pwdiUpdateEDCAParams->wdiEDCAInfo),
10126 &pSendBuffer, &usDataOffset, &usSendSize))||
10127 ( usSendSize < (usDataOffset + sizeof(pwdiUpdateEDCAParams->wdiEDCAInfo) )))
10128 {
10129 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010130 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070010131 pEventData, pwdiUpdateEDCAParams, wdiUpdateEDCARspCb);
10132 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010133 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010134 }
10135
Jeff Johnsone7245742012-09-05 17:12:55 -070010136 wpalMemoryCopy( pSendBuffer+usDataOffset,
10137 &pwdiUpdateEDCAParams->wdiEDCAInfo,
10138 sizeof(pwdiUpdateEDCAParams->wdiEDCAInfo));
Jeff Johnson295189b2012-06-20 16:38:30 -070010139
10140 pWDICtx->wdiReqStatusCB = pwdiUpdateEDCAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010141 pWDICtx->pReqStatusUserData = pwdiUpdateEDCAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010142
10143 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010144 Send Update EDCA Params Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010145 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010146 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10147 wdiUpdateEDCARspCb, pEventData->pUserData,
10148 WDI_UPD_EDCA_PRMS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010149}/*WDI_ProcessUpdateEDCAParamsReq*/
10150
10151/**
Jeff Johnsone7245742012-09-05 17:12:55 -070010152 @brief Process Add BA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070010153 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010154
10155 @param pWDICtx: pointer to the WLAN DAL context
10156 pEventData: pointer to the event information structure
10157
Jeff Johnson295189b2012-06-20 16:38:30 -070010158 @see
10159 @return Result of the function call
10160*/
10161WDI_Status
10162WDI_ProcessAddBASessionReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010163(
Jeff Johnson295189b2012-06-20 16:38:30 -070010164 WDI_ControlBlockType* pWDICtx,
10165 WDI_EventInfoType* pEventData
10166)
10167{
10168 WDI_AddBASessionReqParamsType* pwdiAddBASessionParams;
10169 WDI_AddBASessionRspCb wdiAddBASessionRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010170 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070010171 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070010172 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010173 wpt_uint16 usDataOffset = 0;
10174 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070010175 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070010176 wpt_macAddr macBSSID;
10177
10178 tAddBASessionReqMsg halAddBASessionReq;
10179 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10180
10181 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010182 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010183 -------------------------------------------------------------------------*/
10184 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10185 ( NULL == pEventData->pCBfnc ))
10186 {
10187 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010188 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010189 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010190 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010191 }
10192
Jeff Johnsone7245742012-09-05 17:12:55 -070010193 pwdiAddBASessionParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070010194 (WDI_AddBASessionReqParamsType*)pEventData->pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070010195 wdiAddBASessionRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070010196 (WDI_AddBASessionRspCb)pEventData->pCBfnc;
10197 /*-------------------------------------------------------------------------
10198 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070010199 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070010200 -------------------------------------------------------------------------*/
10201 wpalMutexAcquire(&pWDICtx->wptMutex);
10202
10203 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010204 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070010205 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010206 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
10207 pwdiAddBASessionParams->wdiBASessionInfoType.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070010208 &macBSSID))
10209 {
10210 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010211 "This station does not exist in the WDI Station Table %d",
10212 pwdiAddBASessionParams->wdiBASessionInfoType.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070010213 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010214 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010215 }
10216
10217
Jeff Johnsone7245742012-09-05 17:12:55 -070010218 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070010219
Jeff Johnsone7245742012-09-05 17:12:55 -070010220 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070010221 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010222 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
10223 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
10224 __func__, MAC_ADDR_ARRAY(macBSSID));
10225
Jeff Johnson295189b2012-06-20 16:38:30 -070010226 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010227 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070010228 }
10229
10230 /*------------------------------------------------------------------------
10231 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070010232 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070010233 ------------------------------------------------------------------------*/
10234 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
10235 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010236 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10237 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
10238 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010239
Jeff Johnsone7245742012-09-05 17:12:55 -070010240 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070010241 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010242 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070010243 }
10244
10245
10246 wpalMutexRelease(&pWDICtx->wptMutex);
10247 /*-----------------------------------------------------------------------
10248 Get message buffer
10249 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010250 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
10251 WDI_ADD_BA_SESSION_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010252 sizeof(halAddBASessionReq.addBASessionParams),
10253 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070010254 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070010255 (usDataOffset + sizeof(halAddBASessionReq.addBASessionParams) )))
10256 {
10257 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010258 "Unable to get send buffer in Add BA session req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070010259 pEventData, pwdiAddBASessionParams, wdiAddBASessionRspCb);
10260 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010261 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010262 }
10263
10264 halAddBASessionReq.addBASessionParams.staIdx =
10265 pwdiAddBASessionParams->wdiBASessionInfoType.ucSTAIdx;
10266 wpalMemoryCopy(halAddBASessionReq.addBASessionParams.peerMacAddr,
10267 pwdiAddBASessionParams->wdiBASessionInfoType.macPeerAddr,
10268 WDI_MAC_ADDR_LEN);
10269 halAddBASessionReq.addBASessionParams.baTID =
10270 pwdiAddBASessionParams->wdiBASessionInfoType.ucBaTID;
10271 halAddBASessionReq.addBASessionParams.baPolicy =
10272 pwdiAddBASessionParams->wdiBASessionInfoType.ucBaPolicy;
10273 halAddBASessionReq.addBASessionParams.baBufferSize =
10274 pwdiAddBASessionParams->wdiBASessionInfoType.usBaBufferSize;
10275 halAddBASessionReq.addBASessionParams.baTimeout =
10276 pwdiAddBASessionParams->wdiBASessionInfoType.usBaTimeout;
10277 halAddBASessionReq.addBASessionParams.baSSN =
10278 pwdiAddBASessionParams->wdiBASessionInfoType.usBaSSN;
10279 halAddBASessionReq.addBASessionParams.baDirection =
10280 pwdiAddBASessionParams->wdiBASessionInfoType.ucBaDirection;
10281
Jeff Johnsone7245742012-09-05 17:12:55 -070010282 wpalMemoryCopy( pSendBuffer+usDataOffset,
10283 &halAddBASessionReq.addBASessionParams,
10284 sizeof(halAddBASessionReq.addBASessionParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070010285
10286 pWDICtx->wdiReqStatusCB = pwdiAddBASessionParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010287 pWDICtx->pReqStatusUserData = pwdiAddBASessionParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010288
10289 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010290 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010291 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010292 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10293 wdiAddBASessionRspCb, pEventData->pUserData,
10294 WDI_ADD_BA_SESSION_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010295}/*WDI_ProcessAddBASessionReq*/
10296
10297/**
Jeff Johnsone7245742012-09-05 17:12:55 -070010298 @brief Process Del BA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070010299 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010300
10301 @param pWDICtx: pointer to the WLAN DAL context
10302 pEventData: pointer to the event information structure
10303
Jeff Johnson295189b2012-06-20 16:38:30 -070010304 @see
10305 @return Result of the function call
10306*/
10307WDI_Status
10308WDI_ProcessDelBAReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010309(
Jeff Johnson295189b2012-06-20 16:38:30 -070010310 WDI_ControlBlockType* pWDICtx,
10311 WDI_EventInfoType* pEventData
10312)
10313{
10314 WDI_DelBAReqParamsType* pwdiDelBAParams;
10315 WDI_DelBARspCb wdiDelBARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010316 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070010317 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070010318 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010319 wpt_uint16 usDataOffset = 0;
10320 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070010321 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070010322 wpt_macAddr macBSSID;
10323 tDelBAParams halDelBAparam;
10324 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10325
10326 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010327 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010328 -------------------------------------------------------------------------*/
10329 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10330 ( NULL == pEventData->pCBfnc ))
10331 {
10332 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010333 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010334 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010335 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010336 }
10337
10338 pwdiDelBAParams = (WDI_DelBAReqParamsType*)pEventData->pEventData;
10339 wdiDelBARspCb = (WDI_DelBARspCb)pEventData->pCBfnc;
10340 /*-------------------------------------------------------------------------
10341 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070010342 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070010343 -------------------------------------------------------------------------*/
10344 wpalMutexAcquire(&pWDICtx->wptMutex);
10345
10346 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010347 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070010348 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010349 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
10350 pwdiDelBAParams->wdiBAInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070010351 &macBSSID))
10352 {
10353 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010354 "This station does not exist in the WDI Station Table %d",
10355 pwdiDelBAParams->wdiBAInfo.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070010356 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010357 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010358 }
10359
Jeff Johnsone7245742012-09-05 17:12:55 -070010360 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070010361
Jeff Johnsone7245742012-09-05 17:12:55 -070010362 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070010363 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010364 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
10365 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
10366 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010367
10368 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010369 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070010370 }
10371
10372 /*------------------------------------------------------------------------
10373 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070010374 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070010375 ------------------------------------------------------------------------*/
10376 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
10377 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010378 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10379 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
10380 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010381
Jeff Johnsone7245742012-09-05 17:12:55 -070010382 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070010383 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010384 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070010385 }
10386
10387 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010388 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_DEL_BA_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010389 sizeof(halDelBAparam),
10390 &pSendBuffer, &usDataOffset, &usSendSize))||
10391 ( usSendSize < (usDataOffset + sizeof(halDelBAparam) )))
10392 {
10393 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010394 "Unable to get send buffer for DEL BA req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070010395 pEventData, pwdiDelBAParams, wdiDelBARspCb);
10396 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010397 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010398 }
10399
10400 halDelBAparam.staIdx = pwdiDelBAParams->wdiBAInfo.ucSTAIdx;
10401 halDelBAparam.baTID = pwdiDelBAParams->wdiBAInfo.ucBaTID;
10402 halDelBAparam.baDirection = pwdiDelBAParams->wdiBAInfo.ucBaDirection;
10403
Jeff Johnsone7245742012-09-05 17:12:55 -070010404 wpalMemoryCopy( pSendBuffer+usDataOffset,
10405 &halDelBAparam,
10406 sizeof(halDelBAparam));
Jeff Johnson295189b2012-06-20 16:38:30 -070010407
10408 pWDICtx->wdiReqStatusCB = pwdiDelBAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010409 pWDICtx->pReqStatusUserData = pwdiDelBAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010410
10411 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010412 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010413 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010414 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10415 wdiDelBARspCb, pEventData->pUserData, WDI_DEL_BA_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010416}/*WDI_ProcessDelBAReq*/
10417
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -080010418#ifdef FEATURE_WLAN_ESE
Jeff Johnson295189b2012-06-20 16:38:30 -070010419
10420WDI_Status
10421WDI_ProcessTSMStatsReq
10422(
10423 WDI_ControlBlockType* pWDICtx,
10424 WDI_EventInfoType* pEventData
10425)
10426{
10427 WDI_TSMStatsReqParamsType* pwdiTSMParams;
10428 WDI_TsmRspCb wdiTSMRspCb;
10429 wpt_uint8 ucCurrentBSSSesIdx = 0;
10430 WDI_BSSSessionType* pBSSSes = NULL;
10431 wpt_uint8* pSendBuffer = NULL;
10432 wpt_uint16 usDataOffset = 0;
10433 wpt_uint16 usSendSize = 0;
10434 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
10435 tTsmStatsParams halTsmStatsReqParams = {0};
10436
10437 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10438
10439 /*-------------------------------------------------------------------------
10440 Sanity check
10441 -------------------------------------------------------------------------*/
10442 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10443 ( NULL == pEventData->pCBfnc ))
10444 {
10445 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010446 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010447 WDI_ASSERT(0);
10448 return WDI_STATUS_E_FAILURE;
10449 }
10450
10451 pwdiTSMParams = (WDI_TSMStatsReqParamsType*)pEventData->pEventData;
10452 wdiTSMRspCb = (WDI_TsmRspCb)pEventData->pCBfnc;
10453 /*-------------------------------------------------------------------------
10454 Check to see if we are in the middle of an association, if so queue, if
10455 not it means it is free to process request
10456 -------------------------------------------------------------------------*/
10457 wpalMutexAcquire(&pWDICtx->wptMutex);
10458
10459 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, pwdiTSMParams->wdiTsmStatsParamsInfo.bssid, &pBSSSes);
10460 if ( NULL == pBSSSes )
10461 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010462 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
10463 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
10464 __func__, MAC_ADDR_ARRAY(pwdiTSMParams->wdiTsmStatsParamsInfo.bssid));
Jeff Johnson295189b2012-06-20 16:38:30 -070010465
10466 wpalMutexRelease(&pWDICtx->wptMutex);
10467 return WDI_STATUS_E_NOT_ALLOWED;
10468 }
10469
10470 /*------------------------------------------------------------------------
10471 Check if this BSS is being currently processed or queued,
10472 if queued - queue the new request as well
10473 ------------------------------------------------------------------------*/
10474 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
10475 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010476 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Srinivas Girigowda6d1f9062014-02-03 18:15:54 -080010477 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
Jeff Johnsone7245742012-09-05 17:12:55 -070010478 __func__, MAC_ADDR_ARRAY(pwdiTSMParams->wdiTsmStatsParamsInfo.bssid));
Jeff Johnson295189b2012-06-20 16:38:30 -070010479
10480 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
10481 wpalMutexRelease(&pWDICtx->wptMutex);
10482 return wdiStatus;
10483 }
10484
10485 wpalMutexRelease(&pWDICtx->wptMutex);
10486 /*-----------------------------------------------------------------------
10487 Get message buffer
10488 ! TO DO : proper conversion into the HAL Message Request Format
10489 -----------------------------------------------------------------------*/
10490 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_TSM_STATS_REQ,
10491 sizeof(halTsmStatsReqParams),
10492 &pSendBuffer, &usDataOffset, &usSendSize))||
10493 ( usSendSize < (usDataOffset + sizeof(halTsmStatsReqParams) )))
10494 {
10495 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010496 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070010497 pEventData, pwdiTSMParams, wdiTSMRspCb);
10498 WDI_ASSERT(0);
10499 return WDI_STATUS_E_FAILURE;
10500 }
10501
10502 halTsmStatsReqParams.tsmTID = pwdiTSMParams->wdiTsmStatsParamsInfo.ucTid;
10503 wpalMemoryCopy(halTsmStatsReqParams.bssId,
10504 pwdiTSMParams->wdiTsmStatsParamsInfo.bssid,
10505 WDI_MAC_ADDR_LEN);
10506 wpalMemoryCopy( pSendBuffer+usDataOffset,
10507 &halTsmStatsReqParams,
10508 sizeof(halTsmStatsReqParams));
10509
10510 pWDICtx->wdiReqStatusCB = pwdiTSMParams->wdiReqStatusCB;
10511 pWDICtx->pReqStatusUserData = pwdiTSMParams->pUserData;
10512
10513 /*-------------------------------------------------------------------------
10514 Send TSM Stats Request to HAL
10515 -------------------------------------------------------------------------*/
10516 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10517 wdiTSMRspCb, pEventData->pUserData,
10518 WDI_TSM_STATS_RESP);
10519}/*WDI_ProcessTSMStatsReq*/
10520
10521#endif
10522
10523
10524/**
Jeff Johnsone7245742012-09-05 17:12:55 -070010525 @brief Process Flush AC Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070010526 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010527
10528 @param pWDICtx: pointer to the WLAN DAL context
10529 pEventData: pointer to the event information structure
10530
Jeff Johnson295189b2012-06-20 16:38:30 -070010531 @see
10532 @return Result of the function call
10533*/
10534WDI_Status
10535WDI_ProcessFlushAcReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010536(
Jeff Johnson295189b2012-06-20 16:38:30 -070010537 WDI_ControlBlockType* pWDICtx,
10538 WDI_EventInfoType* pEventData
10539)
10540{
10541 WDI_FlushAcReqParamsType* pwdiFlushAcParams = NULL;
10542 WDI_FlushAcRspCb wdiFlushAcRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010543 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010544 wpt_uint16 usDataOffset = 0;
10545 wpt_uint16 usSendSize = 0;
10546 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10547
10548 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010549 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010550 -------------------------------------------------------------------------*/
10551 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10552 ( NULL == pEventData->pCBfnc ))
10553 {
10554 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010555 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010556 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010557 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010558 }
10559
10560 pwdiFlushAcParams = (WDI_FlushAcReqParamsType*)pEventData->pEventData;
10561 wdiFlushAcRspCb = (WDI_FlushAcRspCb)pEventData->pCBfnc;
10562 /*-----------------------------------------------------------------------
10563 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070010564 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070010565 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010566 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_FLUSH_AC_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010567 sizeof(pwdiFlushAcParams->wdiFlushAcInfo),
10568 &pSendBuffer, &usDataOffset, &usSendSize))||
10569 ( usSendSize < (usDataOffset + sizeof(pwdiFlushAcParams->wdiFlushAcInfo) )))
10570 {
10571 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010572 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070010573 pEventData, pwdiFlushAcParams, wdiFlushAcRspCb);
10574 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010575 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010576 }
10577
Jeff Johnsone7245742012-09-05 17:12:55 -070010578 wpalMemoryCopy( pSendBuffer+usDataOffset,
10579 &pwdiFlushAcParams->wdiFlushAcInfo,
10580 sizeof(pwdiFlushAcParams->wdiFlushAcInfo));
Jeff Johnson295189b2012-06-20 16:38:30 -070010581
10582 pWDICtx->wdiReqStatusCB = pwdiFlushAcParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010583 pWDICtx->pReqStatusUserData = pwdiFlushAcParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010584
10585 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010586 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010587 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010588 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10589 wdiFlushAcRspCb, pEventData->pUserData, WDI_FLUSH_AC_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010590}/*WDI_ProcessFlushAcReq*/
10591
10592/**
Jeff Johnsone7245742012-09-05 17:12:55 -070010593 @brief Process BT AMP event Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070010594 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010595
10596 @param pWDICtx: pointer to the WLAN DAL context
10597 pEventData: pointer to the event information structure
10598
Jeff Johnson295189b2012-06-20 16:38:30 -070010599 @see
10600 @return Result of the function call
10601*/
10602WDI_Status
10603WDI_ProcessBtAmpEventReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010604(
Jeff Johnson295189b2012-06-20 16:38:30 -070010605 WDI_ControlBlockType* pWDICtx,
10606 WDI_EventInfoType* pEventData
10607)
10608{
10609 WDI_BtAmpEventParamsType* pwdiBtAmpEventParams = NULL;
10610 WDI_BtAmpEventRspCb wdiBtAmpEventRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010611 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010612 wpt_uint16 usDataOffset = 0;
10613 wpt_uint16 usSendSize = 0;
10614
10615 tBtAmpEventMsg haltBtAmpEventMsg;
10616 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10617
10618 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010619 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010620 -------------------------------------------------------------------------*/
10621 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10622 ( NULL == pEventData->pCBfnc ))
10623 {
10624 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010625 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010626 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010627 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010628 }
10629
10630 pwdiBtAmpEventParams = (WDI_BtAmpEventParamsType*)pEventData->pEventData;
10631 wdiBtAmpEventRspCb = (WDI_BtAmpEventRspCb)pEventData->pCBfnc;
10632 /*-----------------------------------------------------------------------
10633 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070010634 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070010635 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010636 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_BTAMP_EVENT_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010637 sizeof(haltBtAmpEventMsg.btAmpEventParams),
10638 &pSendBuffer, &usDataOffset, &usSendSize))||
10639 ( usSendSize < (usDataOffset + sizeof(haltBtAmpEventMsg.btAmpEventParams) )))
10640 {
10641 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010642 "Unable to get send buffer in BT AMP event req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070010643 pEventData, pwdiBtAmpEventParams, wdiBtAmpEventRspCb);
10644 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010645 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010646 }
10647
Jeff Johnsone7245742012-09-05 17:12:55 -070010648 haltBtAmpEventMsg.btAmpEventParams.btAmpEventType =
Jeff Johnson295189b2012-06-20 16:38:30 -070010649 pwdiBtAmpEventParams->wdiBtAmpEventInfo.ucBtAmpEventType;
Jeff Johnsone7245742012-09-05 17:12:55 -070010650 wpalMemoryCopy( pSendBuffer+usDataOffset,
10651 &haltBtAmpEventMsg.btAmpEventParams,
10652 sizeof(haltBtAmpEventMsg.btAmpEventParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070010653
10654 pWDICtx->wdiReqStatusCB = pwdiBtAmpEventParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010655 pWDICtx->pReqStatusUserData = pwdiBtAmpEventParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010656
10657 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010658 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010659 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010660 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10661 wdiBtAmpEventRspCb, pEventData->pUserData, WDI_BTAMP_EVENT_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010662}/*WDI_ProcessBtAmpEventReq*/
10663
10664/**
10665 @brief Process Add STA self Request function (called when Main FSM
10666 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010667
10668 @param pWDICtx: pointer to the WLAN DAL context
10669 pEventData: pointer to the event information structure
10670
Jeff Johnson295189b2012-06-20 16:38:30 -070010671 @see
10672 @return Result of the function call
10673*/
10674WDI_Status
10675WDI_ProcessAddSTASelfReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010676(
Jeff Johnson295189b2012-06-20 16:38:30 -070010677 WDI_ControlBlockType* pWDICtx,
10678 WDI_EventInfoType* pEventData
10679)
10680{
10681 WDI_AddSTASelfReqParamsType* pwdiAddSTASelfReqParams;
10682 WDI_AddSTASelfParamsRspCb wdiAddSTASelfReqRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010683 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010684 wpt_uint16 usDataOffset = 0;
10685 wpt_uint16 usSendSize = 0;
Kiran Kumar Lokere0ad5cd32013-06-25 11:26:22 -070010686 tAddStaSelfParams_V1 halAddSTASelfParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070010687 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10688
10689 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010690 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010691 -------------------------------------------------------------------------*/
10692 if (( NULL == pEventData ) ||
10693 ( NULL == pEventData->pEventData) ||
10694 ( NULL == pEventData->pCBfnc))
10695 {
10696 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010697 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010698 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010699 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010700 }
10701
Jeff Johnsone7245742012-09-05 17:12:55 -070010702 pwdiAddSTASelfReqParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070010703 (WDI_AddSTASelfReqParamsType*)pEventData->pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070010704 wdiAddSTASelfReqRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070010705 (WDI_AddSTASelfParamsRspCb)pEventData->pCBfnc;
10706 /*-----------------------------------------------------------------------
10707 Get message buffer
10708 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010709 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
10710 WDI_ADD_STA_SELF_REQ,
Kiran Kumar Lokere0ad5cd32013-06-25 11:26:22 -070010711 sizeof(tAddStaSelfParams_V1),
Jeff Johnson295189b2012-06-20 16:38:30 -070010712 &pSendBuffer, &usDataOffset, &usSendSize))||
Kiran Kumar Lokere0ad5cd32013-06-25 11:26:22 -070010713 ( usSendSize < (usDataOffset + sizeof(tAddStaSelfParams_V1) )))
Jeff Johnson295189b2012-06-20 16:38:30 -070010714 {
10715 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010716 "Unable to get send buffer in ADD STA SELF REQ %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070010717 pEventData, pwdiAddSTASelfReqParams, wdiAddSTASelfReqRspCb);
10718 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010719 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010720 }
10721
10722 /* Cache the request for response processing */
Jeff Johnsone7245742012-09-05 17:12:55 -070010723 wpalMemoryCopy(&pWDICtx->wdiCacheAddSTASelfReq, pwdiAddSTASelfReqParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070010724 sizeof(pWDICtx->wdiCacheAddSTASelfReq));
10725
Jeff Johnsone7245742012-09-05 17:12:55 -070010726 wpalMemoryCopy(halAddSTASelfParams.selfMacAddr,
Kiran Kumar Lokere0ad5cd32013-06-25 11:26:22 -070010727 pwdiAddSTASelfReqParams->wdiAddSTASelfInfo.selfMacAddr, 6);
10728 halAddSTASelfParams.iface_persona = HAL_IFACE_UNKNOWN;
10729 if (pwdiAddSTASelfReqParams->wdiAddSTASelfInfo.currDeviceMode == VOS_STA_MODE)
10730 {
10731 halAddSTASelfParams.iface_persona = HAL_IFACE_STA_MODE;
10732 }
10733 else if ((pwdiAddSTASelfReqParams->wdiAddSTASelfInfo.currDeviceMode ==
10734 VOS_P2P_CLIENT_MODE) ||
10735 (pwdiAddSTASelfReqParams->wdiAddSTASelfInfo.currDeviceMode ==
10736 VOS_P2P_DEVICE))
10737 {
10738 halAddSTASelfParams.iface_persona = HAL_IFACE_P2P_MODE;
10739 }
Jeff Johnsone7245742012-09-05 17:12:55 -070010740 wpalMemoryCopy( pSendBuffer+usDataOffset, &halAddSTASelfParams,
Kiran Kumar Lokere0ad5cd32013-06-25 11:26:22 -070010741 sizeof(tAddStaSelfParams_V1));
Jeff Johnson295189b2012-06-20 16:38:30 -070010742
10743 pWDICtx->wdiReqStatusCB = pwdiAddSTASelfReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010744 pWDICtx->pReqStatusUserData = pwdiAddSTASelfReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010745
10746 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010747 Send Update Probe Resp Template Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010748 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010749 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10750 wdiAddSTASelfReqRspCb, pEventData->pUserData,
10751 WDI_ADD_STA_SELF_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010752}/*WDI_ProcessAddSTASelfReq*/
10753
10754
10755
10756/**
Jeff Johnsone7245742012-09-05 17:12:55 -070010757 @brief Process Del Sta Self Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070010758 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010759
10760 @param pWDICtx: pointer to the WLAN DAL context
10761 pEventData: pointer to the event information structure
10762
Jeff Johnson295189b2012-06-20 16:38:30 -070010763 @see
10764 @return Result of the function call
10765*/
10766WDI_Status
10767WDI_ProcessDelSTASelfReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010768(
Jeff Johnson295189b2012-06-20 16:38:30 -070010769 WDI_ControlBlockType* pWDICtx,
10770 WDI_EventInfoType* pEventData
10771)
10772{
10773 WDI_DelSTASelfReqParamsType* pwdiDelStaSelfReqParams;
10774 WDI_DelSTASelfRspCb wdiDelStaSelfRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010775 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010776 wpt_uint16 usDataOffset = 0;
10777 wpt_uint16 usSendSize = 0;
10778 tDelStaSelfParams halSetDelSelfSTAParams;
10779 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10780
10781 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010782 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010783 -------------------------------------------------------------------------*/
10784 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10785 ( NULL == pEventData->pCBfnc ))
10786 {
10787 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010788 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010789 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010790 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010791 }
10792
Jeff Johnsone7245742012-09-05 17:12:55 -070010793 pwdiDelStaSelfReqParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070010794 (WDI_DelSTASelfReqParamsType*)pEventData->pEventData;
10795 wdiDelStaSelfRspCb = (WDI_DelSTASelfRspCb)pEventData->pCBfnc;
10796
10797 /*-----------------------------------------------------------------------
10798 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070010799 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070010800 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010801 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_DEL_STA_SELF_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010802 sizeof(pwdiDelStaSelfReqParams->wdiDelStaSelfInfo),
10803 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070010804 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070010805 (usDataOffset + sizeof(pwdiDelStaSelfReqParams->wdiDelStaSelfInfo) )))
10806 {
10807 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010808 "Unable to get send buffer in Del Sta Self req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070010809 pEventData, pwdiDelStaSelfReqParams, wdiDelStaSelfRspCb);
10810 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010811 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010812 }
10813
Jeff Johnsone7245742012-09-05 17:12:55 -070010814 wpalMemoryCopy(halSetDelSelfSTAParams.selfMacAddr,
Jeff Johnson295189b2012-06-20 16:38:30 -070010815 pwdiDelStaSelfReqParams->wdiDelStaSelfInfo.selfMacAddr, 6) ;
10816
Jeff Johnsone7245742012-09-05 17:12:55 -070010817 wpalMemoryCopy( pSendBuffer+usDataOffset, &halSetDelSelfSTAParams,
10818 sizeof(tDelStaSelfParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070010819
10820 pWDICtx->wdiReqStatusCB = pwdiDelStaSelfReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010821 pWDICtx->pReqStatusUserData = pwdiDelStaSelfReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010822
10823 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010824 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010825 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010826 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10827 wdiDelStaSelfRspCb, pEventData->pUserData,
Jeff Johnson295189b2012-06-20 16:38:30 -070010828 WDI_DEL_STA_SELF_RESP);
10829
10830}
10831
Jeff Johnsone7245742012-09-05 17:12:55 -070010832#ifdef FEATURE_OEM_DATA_SUPPORT
10833/**
10834 @brief Process Start Oem Data Request function (called when Main
10835 FSM allows it)
10836
10837 @param pWDICtx: pointer to the WLAN DAL context
10838 pEventData: pointer to the event information structure
10839
10840 @see
10841 @return Result of the function call
10842*/
10843WDI_Status
10844WDI_ProcessStartOemDataReq
10845(
10846 WDI_ControlBlockType* pWDICtx,
10847 WDI_EventInfoType* pEventData
10848)
10849{
10850 WDI_oemDataReqParamsType* pwdiOemDataReqParams = NULL;
10851 WDI_oemDataRspCb wdiOemDataRspCb;
10852 wpt_uint8* pSendBuffer = NULL;
10853 wpt_uint16 usDataOffset = 0;
10854 wpt_uint16 usSendSize = 0;
10855 wpt_uint16 reqLen;
10856 tStartOemDataReqParams* halStartOemDataReqParams;
10857
10858 /*-------------------------------------------------------------------------
10859 Sanity check
10860 -------------------------------------------------------------------------*/
10861 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10862 ( NULL == pEventData->pCBfnc ))
10863 {
10864 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010865 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070010866 WDI_ASSERT(0);
10867 return WDI_STATUS_E_FAILURE;
10868 }
10869
10870 pwdiOemDataReqParams = (WDI_oemDataReqParamsType*)pEventData->pEventData;
10871 wdiOemDataRspCb = (WDI_oemDataRspCb)pEventData->pCBfnc;
10872
10873 /*-----------------------------------------------------------------------
10874 Get message buffer
10875 -----------------------------------------------------------------------*/
10876
10877 reqLen = sizeof(tStartOemDataReqParams);
10878
10879 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
10880 WDI_START_OEM_DATA_REQ, reqLen,
10881 &pSendBuffer, &usDataOffset, &usSendSize))||
10882 (usSendSize < (usDataOffset + reqLen)))
10883 {
10884 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010885 "Unable to get send buffer in Start Oem Data req %p %p %p",
Jeff Johnsone7245742012-09-05 17:12:55 -070010886 pEventData, pwdiOemDataReqParams, wdiOemDataRspCb);
10887 WDI_ASSERT(0);
10888 return WDI_STATUS_E_FAILURE;
10889 }
10890
10891 //copying WDI OEM DATA REQ PARAMS to shared memory
10892 halStartOemDataReqParams = (tStartOemDataReqParams *)(pSendBuffer + usDataOffset );
10893
10894 wpalMemoryCopy(&halStartOemDataReqParams->selfMacAddr, &pwdiOemDataReqParams->wdiOemDataReqInfo.selfMacAddr, sizeof(wpt_macAddr));
10895 wpalMemoryCopy(&halStartOemDataReqParams->oemDataReq, &pwdiOemDataReqParams->wdiOemDataReqInfo.oemDataReq, OEM_DATA_REQ_SIZE);
10896
10897 pWDICtx->wdiReqStatusCB = pwdiOemDataReqParams->wdiReqStatusCB;
10898 pWDICtx->pReqStatusUserData = pwdiOemDataReqParams->pUserData;
10899
10900 /*-------------------------------------------------------------------------
10901 Send Start Request to HAL
10902 -------------------------------------------------------------------------*/
10903 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10904 wdiOemDataRspCb, pEventData->pUserData,
10905 WDI_START_OEM_DATA_RESP);
10906}/*WDI_ProcessStartOemDataReq*/
10907#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070010908
10909/**
Jeff Johnsone7245742012-09-05 17:12:55 -070010910 @brief Process Host Resume Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070010911 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010912
10913 @param pWDICtx: pointer to the WLAN DAL context
10914 pEventData: pointer to the event information structure
10915
Jeff Johnson295189b2012-06-20 16:38:30 -070010916 @see
10917 @return Result of the function call
10918*/
10919WDI_Status
10920WDI_ProcessHostResumeReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010921(
Jeff Johnson295189b2012-06-20 16:38:30 -070010922 WDI_ControlBlockType* pWDICtx,
10923 WDI_EventInfoType* pEventData
10924)
10925{
10926 WDI_ResumeParamsType* pwdiHostResumeParams = NULL;
10927 WDI_HostResumeEventRspCb wdiHostResumeRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010928 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010929 wpt_uint16 usDataOffset = 0;
10930 wpt_uint16 usSendSize = 0;
10931 tHalWlanHostResumeReqParam halResumeReqParams;
10932
10933 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10934
10935 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010936 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010937 -------------------------------------------------------------------------*/
10938 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10939 ( NULL == pEventData->pCBfnc ))
10940 {
10941 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010942 "%s: Invalid parameters ",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010943 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010944 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010945 }
10946
10947 pwdiHostResumeParams = (WDI_ResumeParamsType*)pEventData->pEventData;
10948 wdiHostResumeRspCb = (WDI_HostResumeEventRspCb)pEventData->pCBfnc;
10949
10950 /*-----------------------------------------------------------------------
10951 Get message buffer
10952 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010953 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
Jeff Johnson295189b2012-06-20 16:38:30 -070010954 WDI_HOST_RESUME_REQ, sizeof(halResumeReqParams),
10955 &pSendBuffer, &usDataOffset, &usSendSize))||
10956 (usSendSize < (usDataOffset + sizeof(halResumeReqParams))))
10957 {
10958 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010959 "Unable to get send buffer in Start Oem Data req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070010960 pEventData, pwdiHostResumeParams, wdiHostResumeRspCb);
10961 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010962 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010963 }
10964
Jeff Johnsone7245742012-09-05 17:12:55 -070010965 halResumeReqParams.configuredMcstBcstFilterSetting =
Jeff Johnson295189b2012-06-20 16:38:30 -070010966 pwdiHostResumeParams->wdiResumeParams.ucConfiguredMcstBcstFilterSetting;
Jeff Johnsone7245742012-09-05 17:12:55 -070010967
10968 wpalMemoryCopy( pSendBuffer+usDataOffset,
10969 &halResumeReqParams,
10970 sizeof(halResumeReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070010971
10972 pWDICtx->wdiReqStatusCB = pwdiHostResumeParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010973 pWDICtx->pReqStatusUserData = pwdiHostResumeParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010974
10975 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010976 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010977 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010978 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10979 wdiHostResumeRspCb, pEventData->pUserData,
10980 WDI_HOST_RESUME_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010981}/*WDI_ProcessHostResumeReq*/
10982
10983/**
Jeff Johnsone7245742012-09-05 17:12:55 -070010984 @brief Process set Tx Per Tracking Parameters Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070010985 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010986
10987 @param pWDICtx: pointer to the WLAN DAL context
10988 pEventData: pointer to the event information structure
10989
Jeff Johnson295189b2012-06-20 16:38:30 -070010990 @see
10991 @return Result of the function call
10992*/
10993WDI_Status
10994WDI_ProcessSetTxPerTrackingReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010995(
Jeff Johnson295189b2012-06-20 16:38:30 -070010996 WDI_ControlBlockType* pWDICtx,
10997 WDI_EventInfoType* pEventData
10998)
10999{
11000 WDI_SetTxPerTrackingReqParamsType* pwdiSetTxPerTrackingReqParams = NULL;
11001 WDI_SetTxPerTrackingRspCb pwdiSetTxPerTrackingRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070011002 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011003 wpt_uint16 usDataOffset = 0;
11004 wpt_uint16 usSendSize = 0;
11005 tHalTxPerTrackingReqParam halTxPerTrackingReqParam;
11006 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11007
11008 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011009 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011010 -------------------------------------------------------------------------*/
11011 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
11012 ( NULL == pEventData->pCBfnc ))
11013 {
11014 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011015 "%s: Invalid parameters ",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011016 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011017 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011018 }
11019
11020 pwdiSetTxPerTrackingReqParams = (WDI_SetTxPerTrackingReqParamsType*)pEventData->pEventData;
11021 pwdiSetTxPerTrackingRspCb = (WDI_SetTxPerTrackingRspCb)pEventData->pCBfnc;
Jeff Johnsone7245742012-09-05 17:12:55 -070011022
Jeff Johnson295189b2012-06-20 16:38:30 -070011023 /*-----------------------------------------------------------------------
11024 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070011025 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070011026 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011027 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_TX_PER_TRACKING_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011028 sizeof(halTxPerTrackingReqParam),
11029 &pSendBuffer, &usDataOffset, &usSendSize))||
11030 ( usSendSize < (usDataOffset + sizeof(halTxPerTrackingReqParam) )))
11031 {
11032 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080011033 "Unable to get send buffer in set tx per tracking req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070011034 pEventData, pwdiSetTxPerTrackingReqParams, pwdiSetTxPerTrackingRspCb);
11035 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011036 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011037 }
Jeff Johnsone7245742012-09-05 17:12:55 -070011038
Jeff Johnson295189b2012-06-20 16:38:30 -070011039 halTxPerTrackingReqParam.ucTxPerTrackingEnable = pwdiSetTxPerTrackingReqParams->wdiTxPerTrackingParam.ucTxPerTrackingEnable;
11040 halTxPerTrackingReqParam.ucTxPerTrackingPeriod = pwdiSetTxPerTrackingReqParams->wdiTxPerTrackingParam.ucTxPerTrackingPeriod;
11041 halTxPerTrackingReqParam.ucTxPerTrackingRatio = pwdiSetTxPerTrackingReqParams->wdiTxPerTrackingParam.ucTxPerTrackingRatio;
11042 halTxPerTrackingReqParam.uTxPerTrackingWatermark = pwdiSetTxPerTrackingReqParams->wdiTxPerTrackingParam.uTxPerTrackingWatermark;
Jeff Johnsone7245742012-09-05 17:12:55 -070011043
11044 wpalMemoryCopy( pSendBuffer+usDataOffset,
11045 &halTxPerTrackingReqParam,
11046 sizeof(halTxPerTrackingReqParam));
Jeff Johnson295189b2012-06-20 16:38:30 -070011047
11048 pWDICtx->wdiReqStatusCB = pwdiSetTxPerTrackingReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011049 pWDICtx->pReqStatusUserData = pwdiSetTxPerTrackingReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011050
11051 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011052 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011053 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011054 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11055 pwdiSetTxPerTrackingRspCb, pEventData->pUserData, WDI_SET_TX_PER_TRACKING_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011056}/*WDI_ProcessSetTxPerTrackingReq*/
11057
11058/*=========================================================================
11059 Indications
11060=========================================================================*/
11061
11062/**
11063 @brief Process Suspend Indications function (called when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011064
11065 @param pWDICtx: pointer to the WLAN DAL context
11066 pEventData: pointer to the event information structure
11067
Jeff Johnson295189b2012-06-20 16:38:30 -070011068 @see
11069 @return Result of the function call
11070*/
11071WDI_Status
11072WDI_ProcessHostSuspendInd
Jeff Johnsone7245742012-09-05 17:12:55 -070011073(
Jeff Johnson295189b2012-06-20 16:38:30 -070011074 WDI_ControlBlockType* pWDICtx,
11075 WDI_EventInfoType* pEventData
11076)
11077{
11078 WDI_SuspendParamsType *pSuspendIndParams;
Jeff Johnsone7245742012-09-05 17:12:55 -070011079 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011080 wpt_uint16 usDataOffset = 0;
11081 wpt_uint16 usSendSize = 0;
11082 WDI_Status wdiStatus;
11083 tHalWlanHostSuspendIndParam halWlanSuspendIndparams;
11084 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11085
11086 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011087 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011088 -------------------------------------------------------------------------*/
11089 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
11090 {
11091 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011092 "%s: Invalid parameters in Suspend ind",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011093 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011094 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011095 }
11096
11097 pSuspendIndParams = (WDI_SuspendParamsType *)pEventData->pEventData;
11098
11099 /*-----------------------------------------------------------------------
11100 Get message buffer
11101 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011102 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
11103 WDI_HOST_SUSPEND_IND,
Jeff Johnson295189b2012-06-20 16:38:30 -070011104 sizeof(halWlanSuspendIndparams),
11105 &pSendBuffer, &usDataOffset, &usSendSize))||
11106 (usSendSize < (usDataOffset + sizeof(halWlanSuspendIndparams))))
11107 {
11108 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11109 "Unable to get send buffer in Suspend Ind ");
11110 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011111 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011112 }
11113
11114 halWlanSuspendIndparams.configuredMcstBcstFilterSetting =
11115 pSuspendIndParams->wdiSuspendParams.ucConfiguredMcstBcstFilterSetting;
11116
Jeff Johnsone7245742012-09-05 17:12:55 -070011117 halWlanSuspendIndparams.activeSessionCount =
Hoonki Lee9af07cf2013-04-24 01:21:58 -070011118 WDI_GetActiveSessionsCount(pWDICtx, NULL, eWLAN_PAL_TRUE);
Jeff Johnson295189b2012-06-20 16:38:30 -070011119
Jeff Johnsone7245742012-09-05 17:12:55 -070011120 wpalMemoryCopy( pSendBuffer+usDataOffset, &halWlanSuspendIndparams,
11121 sizeof(tHalWlanHostSuspendIndParam));
Jeff Johnson295189b2012-06-20 16:38:30 -070011122
11123 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011124 Send Suspend Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011125 -------------------------------------------------------------------------*/
11126 pWDICtx->wdiReqStatusCB = pSuspendIndParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011127 pWDICtx->pReqStatusUserData = pSuspendIndParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011128
Jeff Johnsone7245742012-09-05 17:12:55 -070011129 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070011130 return ( wdiStatus != WDI_STATUS_SUCCESS )?wdiStatus:WDI_STATUS_SUCCESS_SYNC;
11131}/*WDI_ProcessHostSuspendInd*/
11132
Madan Mohan Koyyalamudi01cba042013-01-10 21:56:05 -080011133
11134
11135/**
11136 @brief Process Traffic Stats Indications function (called when Main FSM allows it)
11137
11138 @param pWDICtx: pointer to the WLAN DAL context
11139 pEventData: pointer to the event information structure
11140
11141 @see
11142 @return Result of the function call
11143*/
11144WDI_Status
11145WDI_ProcessTrafficStatsInd
11146(
11147 WDI_ControlBlockType* pWDICtx,
11148 WDI_EventInfoType* pEventData
11149)
11150{
11151 WDI_TrafficStatsIndType* pTrafficStatsIndParams;
11152 wpt_uint8* pSendBuffer = NULL;
11153 wpt_uint16 usDataOffset = 0;
11154 wpt_uint16 usSendSize = 0;
11155 WDI_Status wdiStatus;
11156 tStatsClassBIndParams* pStatsClassBIndParams;
11157 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11158
11159 /*-------------------------------------------------------------------------
11160 Sanity check
11161 -------------------------------------------------------------------------*/
11162 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
11163 {
11164 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11165 "%s: Invalid parameters in Traffic Stats ind",__func__);
11166 WDI_ASSERT(0);
11167 return WDI_STATUS_E_FAILURE;
11168 }
11169
11170 pTrafficStatsIndParams = (WDI_TrafficStatsIndType *)pEventData->pEventData;
11171
11172 if(pTrafficStatsIndParams->length != sizeof(tStaStatsClassB)*(HAL_NUM_STA))
11173 {
11174 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11175 "%s: Invalid parameters in Traffic Stats ind",__func__);
11176 WDI_ASSERT(0);
11177 return WDI_STATUS_E_FAILURE;
11178 }
11179
11180 /*-----------------------------------------------------------------------
11181 Get message buffer
11182 -----------------------------------------------------------------------*/
11183 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
11184 WDI_TRAFFIC_STATS_IND,
11185 sizeof(tStatsClassBIndParams),
11186 &pSendBuffer, &usDataOffset, &usSendSize))||
11187 (usSendSize < (usDataOffset + sizeof(tStatsClassBIndParams))))
11188 {
11189 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
11190 "Unable to get send buffer in Traffic Stats Ind ");
11191 WDI_ASSERT(0);
11192 return WDI_STATUS_E_FAILURE;
11193 }
11194
11195 pStatsClassBIndParams = (tStatsClassBIndParams*)(pSendBuffer+usDataOffset);
11196
11197 pStatsClassBIndParams->duration = pTrafficStatsIndParams->duration;
11198
11199 wpalMemoryCopy(pStatsClassBIndParams->staStatsClassB,
11200 pTrafficStatsIndParams->pTrafficStats,
11201 pTrafficStatsIndParams->length);
11202
11203 /*-------------------------------------------------------------------------
11204 Send Suspend Request to HAL
11205 -------------------------------------------------------------------------*/
11206 pWDICtx->wdiReqStatusCB = pTrafficStatsIndParams->wdiReqStatusCB;
11207 pWDICtx->pReqStatusUserData = pTrafficStatsIndParams->pUserData;
11208
11209 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
11210 return ( wdiStatus != WDI_STATUS_SUCCESS )?wdiStatus:WDI_STATUS_SUCCESS_SYNC;
11211}/*WDI_ProcessTrafficStatsInd*/
11212
Chet Lanctot186b5732013-03-18 10:26:30 -070011213#ifdef WLAN_FEATURE_11W
11214/**
11215 @brief Process Exclude Unencrypted Indications function (called
11216 when Main FSM allows it)
11217
11218 @param pWDICtx: pointer to the WLAN DAL context
11219 pEventData: pointer to the event information structure
11220
11221 @see
11222 @return Result of the function call
11223*/
11224WDI_Status
11225WDI_ProcessExcludeUnencryptInd
11226(
11227 WDI_ControlBlockType* pWDICtx,
11228 WDI_EventInfoType* pEventData
11229)
11230{
11231 WDI_ExcludeUnencryptIndType* pWDIExcUnencIndParams;
11232 wpt_uint8* pSendBuffer = NULL;
11233 wpt_uint16 usDataOffset = 0;
11234 wpt_uint16 usSendSize = 0;
11235 WDI_Status wdiStatus;
11236 tHalWlanExcludeUnEncryptedIndParam* pHalExcUnencIndParams;
11237 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11238
11239 /*-------------------------------------------------------------------------
11240 Sanity check
11241 -------------------------------------------------------------------------*/
11242 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
11243 {
11244 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11245 "%s: Invalid parameters in Exclude Unencrypted ind",__func__);
11246 WDI_ASSERT(0);
11247 return WDI_STATUS_E_FAILURE;
11248 }
11249
11250 pWDIExcUnencIndParams = (WDI_ExcludeUnencryptIndType *)pEventData->pEventData;
11251
11252 /*-----------------------------------------------------------------------
11253 Get message buffer
11254 -----------------------------------------------------------------------*/
11255 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
11256 WDI_EXCLUDE_UNENCRYPTED_IND,
11257 sizeof(tHalWlanExcludeUnEncryptedIndParam),
11258 &pSendBuffer, &usDataOffset, &usSendSize))||
11259 (usSendSize < (usDataOffset + sizeof(tHalWlanExcludeUnEncryptedIndParam))))
11260 {
11261 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
11262 "Unable to get send buffer in Exclude Unencrypted Ind ");
11263 WDI_ASSERT(0);
11264 return WDI_STATUS_E_FAILURE;
11265 }
11266
11267 pHalExcUnencIndParams = (tHalWlanExcludeUnEncryptedIndParam*)(pSendBuffer+usDataOffset);
11268
11269 pHalExcUnencIndParams->bDot11ExcludeUnencrypted = pWDIExcUnencIndParams->bExcludeUnencrypt;
11270
11271 wpalMemoryCopy(pHalExcUnencIndParams->bssId,
11272 pWDIExcUnencIndParams->bssid, WDI_MAC_ADDR_LEN);
11273
11274 /*-------------------------------------------------------------------------
11275 Send Suspend Request to HAL
11276 -------------------------------------------------------------------------*/
11277 pWDICtx->wdiReqStatusCB = pWDIExcUnencIndParams->wdiReqStatusCB;
11278 pWDICtx->pReqStatusUserData = pWDIExcUnencIndParams->pUserData;
11279
11280 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
11281 return ( wdiStatus != WDI_STATUS_SUCCESS )?wdiStatus:WDI_STATUS_SUCCESS_SYNC;
11282}/*WDI_ProcessExcludeUnencryptInd*/
11283#endif
11284
Yue Mab9c86f42013-08-14 15:59:08 -070011285/**
11286 @brief Process Add Periodic Tx Pattern Indication function (called when
11287 Main FSM allows it)
11288
11289 @param pWDICtx: pointer to the WLAN DAL context
11290 pEventData: pointer to the event information structure
11291
11292 @see
11293 @return Result of the function call
11294*/
11295WDI_Status
11296WDI_ProcessAddPeriodicTxPtrnInd
11297(
11298 WDI_ControlBlockType* pWDICtx,
11299 WDI_EventInfoType* pEventData
11300)
11301{
11302 WDI_AddPeriodicTxPtrnParamsType *pAddPeriodicTxPtrnParams;
11303 wpt_uint8* pSendBuffer = NULL;
11304 wpt_uint16 usDataOffset = 0;
11305 wpt_uint16 usSendSize = 0;
11306 WDI_Status wdiStatus;
11307 tHalAddPeriodicTxPtrn *halAddPeriodicTxPtrn;
11308 wpt_uint8 selfStaIdx = 0;
11309
11310 /*-------------------------------------------------------------------------
11311 Sanity check
11312 -------------------------------------------------------------------------*/
11313 if ((NULL == pEventData) || (NULL == pEventData->pEventData))
11314 {
11315 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11316 "%s: Invalid parameters in AddPeriodicTxPtrnInd!", __func__);
11317 WDI_ASSERT(0);
11318 return WDI_STATUS_E_FAILURE;
11319 }
11320
11321 pAddPeriodicTxPtrnParams =
11322 (WDI_AddPeriodicTxPtrnParamsType *)pEventData->pEventData;
11323
11324 /*------------------------------------------------------------------------
11325 Get message buffer
11326 ------------------------------------------------------------------------*/
11327 if ((WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(pWDICtx,
11328 WDI_ADD_PERIODIC_TX_PATTERN_IND, sizeof(tHalAddPeriodicTxPtrn),
11329 &pSendBuffer, &usDataOffset, &usSendSize))||
11330 (usSendSize < (usDataOffset + sizeof(tHalAddPeriodicTxPtrn))))
11331 {
11332 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11333 "%s: Unable to get send buffer in AddPeriodicTxPtrnInd!",
11334 __func__);
11335 WDI_ASSERT(0);
11336 return WDI_STATUS_E_FAILURE;
11337 }
11338
11339 halAddPeriodicTxPtrn = (tHalAddPeriodicTxPtrn *)(pSendBuffer + usDataOffset);
11340
11341 if (WDI_STATUS_SUCCESS != WDI_STATableFindStaidByAddr(pWDICtx,
11342 pAddPeriodicTxPtrnParams->wdiAddPeriodicTxPtrnParams.macAddr,
11343 &selfStaIdx))
11344 {
11345 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
11346 "%s: Failed to get selfStaIdx!", __func__);
Wilson Yang00256342013-10-10 23:13:38 -070011347 wpalMemoryFree(pSendBuffer);
Yue Mab9c86f42013-08-14 15:59:08 -070011348
11349 return WDI_STATUS_E_FAILURE;
11350 }
11351
11352 halAddPeriodicTxPtrn->selfStaIdx = selfStaIdx;
11353 halAddPeriodicTxPtrn->ucPtrnId =
11354 pAddPeriodicTxPtrnParams->wdiAddPeriodicTxPtrnParams.ucPtrnId;
11355 halAddPeriodicTxPtrn->usPtrnSize =
11356 pAddPeriodicTxPtrnParams->wdiAddPeriodicTxPtrnParams.ucPtrnSize;
11357 halAddPeriodicTxPtrn->uPtrnIntervalMs =
11358 pAddPeriodicTxPtrnParams->wdiAddPeriodicTxPtrnParams.usPtrnIntervalMs;
11359
11360 wpalMemoryCopy(halAddPeriodicTxPtrn->ucPattern,
11361 pAddPeriodicTxPtrnParams->wdiAddPeriodicTxPtrnParams.ucPattern,
11362 pAddPeriodicTxPtrnParams->wdiAddPeriodicTxPtrnParams.ucPtrnSize);
11363
11364 /*-------------------------------------------------------------------------
11365 Send Indication to HAL
11366 -------------------------------------------------------------------------*/
11367 pWDICtx->wdiReqStatusCB = pAddPeriodicTxPtrnParams->wdiReqStatusCB;
11368 pWDICtx->pReqStatusUserData = pAddPeriodicTxPtrnParams->pUserData;
11369
11370 wdiStatus = WDI_SendIndication(pWDICtx, pSendBuffer, usSendSize);
11371
11372 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
11373 "%s: Sent WLAN_HAL_ADD_PERIODIC_TX_PTRN_IND to HAL.", __func__);
11374
11375 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus : WDI_STATUS_SUCCESS_SYNC;
11376} /* WDI_ProcessAddPeriodicTxPtrnInd */
11377
11378/**
11379 @brief Process Delete Periodic Tx Pattern Indication function (called when
11380 Main FSM allows it)
11381
11382 @param pWDICtx: pointer to the WLAN DAL context
11383 pEventData: pointer to the event information structure
11384
11385 @see
11386 @return Result of the function call
11387*/
11388WDI_Status
11389WDI_ProcessDelPeriodicTxPtrnInd
11390(
11391 WDI_ControlBlockType* pWDICtx,
11392 WDI_EventInfoType* pEventData
11393)
11394{
11395 WDI_DelPeriodicTxPtrnParamsType *pDelPeriodicTxPtrnParams;
11396 wpt_uint8* pSendBuffer = NULL;
11397 wpt_uint16 usDataOffset = 0;
11398 wpt_uint16 usSendSize = 0;
11399 WDI_Status wdiStatus;
11400 tHalDelPeriodicTxPtrn *halDelPeriodicTxPtrn;
11401 wpt_uint8 selfStaIdx = 0;
11402
11403 /*-------------------------------------------------------------------------
11404 Sanity check
11405 -------------------------------------------------------------------------*/
11406 if ((NULL == pEventData) || (NULL == pEventData->pEventData))
11407 {
11408 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11409 "%s: Invalid parameters in DelPeriodicTxPtrnInd!", __func__);
11410 WDI_ASSERT(0);
11411 return WDI_STATUS_E_FAILURE;
11412 }
11413
11414 pDelPeriodicTxPtrnParams =
11415 (WDI_DelPeriodicTxPtrnParamsType *)pEventData->pEventData;
11416
11417 /*------------------------------------------------------------------------
11418 Get message buffer
11419 ------------------------------------------------------------------------*/
11420 if ((WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(pWDICtx,
11421 WDI_DEL_PERIODIC_TX_PATTERN_IND, sizeof(tHalDelPeriodicTxPtrn),
11422 &pSendBuffer, &usDataOffset, &usSendSize))||
11423 (usSendSize < (usDataOffset + sizeof(tHalDelPeriodicTxPtrn))))
11424 {
11425 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11426 "%s: Unable to get send buffer in DelPeriodicTxPtrnInd!",
11427 __func__);
11428 WDI_ASSERT(0);
11429 return WDI_STATUS_E_FAILURE;
11430 }
11431
11432 halDelPeriodicTxPtrn = (tHalDelPeriodicTxPtrn *)(pSendBuffer + usDataOffset);
11433
11434 if (WDI_STATUS_SUCCESS != WDI_STATableFindStaidByAddr(pWDICtx,
11435 pDelPeriodicTxPtrnParams->wdiDelPeriodicTxPtrnParams.macAddr,
11436 &selfStaIdx))
11437 {
11438 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
11439 "%s: Failed to get selfStaIdx!", __func__);
Wilson Yang00256342013-10-10 23:13:38 -070011440 wpalMemoryFree(pSendBuffer);
Yue Mab9c86f42013-08-14 15:59:08 -070011441
11442 return WDI_STATUS_E_FAILURE;
11443 }
11444
11445 halDelPeriodicTxPtrn->selfStaIdx = selfStaIdx;
11446 halDelPeriodicTxPtrn->uPatternIdBitmap =
11447 pDelPeriodicTxPtrnParams->wdiDelPeriodicTxPtrnParams.ucPatternIdBitmap;
11448
11449 /*-------------------------------------------------------------------------
11450 Send Indication to HAL
11451 -------------------------------------------------------------------------*/
11452 pWDICtx->wdiReqStatusCB = pDelPeriodicTxPtrnParams->wdiReqStatusCB;
11453 pWDICtx->pReqStatusUserData = pDelPeriodicTxPtrnParams->pUserData;
11454
11455 wdiStatus = WDI_SendIndication(pWDICtx, pSendBuffer, usSendSize);
11456
11457 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
11458 "%s: Sent WLAN_HAL_DEL_PERIODIC_TX_PTRN_IND to HAL.", __func__);
11459
11460 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus : WDI_STATUS_SUCCESS_SYNC;
11461} /* WDI_ProcessDelPeriodicTxPtrnInd */
11462
Jeff Johnson295189b2012-06-20 16:38:30 -070011463/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070011464 MISC CONTROL PROCESSING REQUEST API
Jeff Johnson295189b2012-06-20 16:38:30 -070011465==========================================================================*/
11466/**
Jeff Johnsone7245742012-09-05 17:12:55 -070011467 @brief Process Channel Switch Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070011468 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011469
11470 @param pWDICtx: pointer to the WLAN DAL context
11471 pEventData: pointer to the event information structure
11472
Jeff Johnson295189b2012-06-20 16:38:30 -070011473 @see
11474 @return Result of the function call
11475*/
11476WDI_Status
11477WDI_ProcessChannelSwitchReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011478(
Jeff Johnson295189b2012-06-20 16:38:30 -070011479 WDI_ControlBlockType* pWDICtx,
11480 WDI_EventInfoType* pEventData
11481)
11482{
11483 WDI_SwitchChReqParamsType* pwdiSwitchChParams;
11484 WDI_SwitchChRspCb wdiSwitchChRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011485 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011486 wpt_uint16 usDataOffset = 0;
11487 wpt_uint16 usSendSize = 0;
11488 tSwitchChannelReqMsg halSwitchChannelReq = {{0}};
11489 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11490
11491 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011492 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011493 -------------------------------------------------------------------------*/
11494 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
11495 ( NULL == pEventData->pCBfnc ))
11496 {
11497 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011498 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011499 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011500 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011501 }
11502
11503 pwdiSwitchChParams = (WDI_SwitchChReqParamsType*)pEventData->pEventData;
11504 wdiSwitchChRspCb = (WDI_SwitchChRspCb)pEventData->pCBfnc;
11505 /*-----------------------------------------------------------------------
11506 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070011507 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070011508 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011509 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_CH_SWITCH_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011510 sizeof(halSwitchChannelReq.switchChannelParams),
11511 &pSendBuffer, &usDataOffset, &usSendSize))||
11512 ( usSendSize < (usDataOffset + sizeof(halSwitchChannelReq.switchChannelParams) )))
11513 {
11514 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080011515 "Unable to get send buffer in channel switch req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070011516 pEventData, pwdiSwitchChParams, wdiSwitchChRspCb);
11517 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011518 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011519 }
11520
Jeff Johnsone7245742012-09-05 17:12:55 -070011521 halSwitchChannelReq.switchChannelParams.channelNumber =
Jeff Johnson295189b2012-06-20 16:38:30 -070011522 pwdiSwitchChParams->wdiChInfo.ucChannel;
Jeff Johnsone7245742012-09-05 17:12:55 -070011523#ifndef WLAN_FEATURE_VOWIFI
11524 halSwitchChannelReq.switchChannelParams.localPowerConstraint =
Jeff Johnson295189b2012-06-20 16:38:30 -070011525 pwdiSwitchChParams->wdiChInfo.ucLocalPowerConstraint;
11526#endif
Jeff Johnsone7245742012-09-05 17:12:55 -070011527 halSwitchChannelReq.switchChannelParams.secondaryChannelOffset =
Jeff Johnson295189b2012-06-20 16:38:30 -070011528 pwdiSwitchChParams->wdiChInfo.wdiSecondaryChannelOffset;
11529
11530#ifdef WLAN_FEATURE_VOWIFI
11531 halSwitchChannelReq.switchChannelParams.maxTxPower
Jeff Johnsone7245742012-09-05 17:12:55 -070011532 = pwdiSwitchChParams->wdiChInfo.cMaxTxPower;
Jeff Johnson295189b2012-06-20 16:38:30 -070011533 wpalMemoryCopy(halSwitchChannelReq.switchChannelParams.selfStaMacAddr,
11534 pwdiSwitchChParams->wdiChInfo.macSelfStaMacAddr,
11535 WDI_MAC_ADDR_LEN);
11536 wpalMemoryCopy(halSwitchChannelReq.switchChannelParams.bssId,
11537 pwdiSwitchChParams->wdiChInfo.macBSSId,
11538 WDI_MAC_ADDR_LEN);
11539#endif
Jeff Johnsone7245742012-09-05 17:12:55 -070011540 wpalMemoryCopy( pSendBuffer+usDataOffset,
11541 &halSwitchChannelReq.switchChannelParams,
11542 sizeof(halSwitchChannelReq.switchChannelParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070011543
11544 pWDICtx->wdiReqStatusCB = pwdiSwitchChParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011545 pWDICtx->pReqStatusUserData = pwdiSwitchChParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011546
11547 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011548 Send Switch Channel Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011549 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011550 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11551 wdiSwitchChRspCb, pEventData->pUserData, WDI_CH_SWITCH_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011552}/*WDI_ProcessChannelSwitchReq*/
11553
11554/**
Kalikinkar dhara1e83b772014-02-06 12:59:22 -080011555 @brief Process Channel Switch Request function (called when
11556 Main FSM allows it)
11557
11558 @param pWDICtx: pointer to the WLAN DAL context
11559 pEventData: pointer to the event information structure
11560
11561 @see
11562 @return Result of the function call
11563*/
11564WDI_Status WDI_ProcessChannelSwitchReq_V1
11565(
11566 WDI_ControlBlockType* pWDICtx,
11567 WDI_EventInfoType* pEventData
11568)
11569{
11570 WDI_SwitchChReqParamsType_V1* pwdiSwitchChParams;
11571 WDI_SwitchChRspCb_V1 wdiSwitchChRspCb;
11572 wpt_uint8* pSendBuffer = NULL;
11573 wpt_uint16 usDataOffset = 0;
11574 wpt_uint16 usSendSize = 0;
11575 tSwitchChannelReqMsg_V1 halSwitchChannelReq = {{0}};
11576 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11577
11578 /*-------------------------------------------------------------------------
11579 Sanity check
11580 -------------------------------------------------------------------------*/
11581 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
11582 ( NULL == pEventData->pCBfnc ))
11583 {
11584 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11585 "%s: Invalid parameters", __func__);
11586 WDI_ASSERT(0);
11587 return WDI_STATUS_E_FAILURE;
11588 }
11589
11590 pwdiSwitchChParams = (WDI_SwitchChReqParamsType_V1*)pEventData->pEventData;
11591 wdiSwitchChRspCb = (WDI_SwitchChRspCb_V1)pEventData->pCBfnc;
11592 /*-----------------------------------------------------------------------
11593 Get message buffer
11594 ! TO DO : proper conversion into the HAL Message Request Format
11595 -----------------------------------------------------------------------*/
11596 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
11597 WDI_CH_SWITCH_REQ_V1,
11598 sizeof(halSwitchChannelReq.switchChannelParams_V1),
11599 &pSendBuffer, &usDataOffset, &usSendSize))||
11600 ( usSendSize < (usDataOffset +
11601 sizeof(halSwitchChannelReq.switchChannelParams_V1) )))
11602 {
11603 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11604 "Unable to get send buffer in channel switch req %p %p %p",
11605 pEventData, pwdiSwitchChParams, wdiSwitchChRspCb);
11606 WDI_ASSERT(0);
11607 return WDI_STATUS_E_FAILURE;
11608 }
11609
11610 halSwitchChannelReq.switchChannelParams_V1.channelSwitchSrc =
11611 pwdiSwitchChParams->wdiChInfo.channelSwitchSrc;
11612
11613 halSwitchChannelReq.switchChannelParams_V1.channelNumber =
11614 pwdiSwitchChParams->wdiChInfo.ucChannel;
11615#ifndef WLAN_FEATURE_VOWIFI
11616 halSwitchChannelReq.switchChannelParams_V1.localPowerConstraint =
11617 pwdiSwitchChParams->wdiChInfo.ucLocalPowerConstraint;
11618#endif
11619 halSwitchChannelReq.switchChannelParams_V1.secondaryChannelOffset =
11620 pwdiSwitchChParams->wdiChInfo.wdiSecondaryChannelOffset;
11621
11622#ifdef WLAN_FEATURE_VOWIFI
11623 halSwitchChannelReq.switchChannelParams_V1.maxTxPower
11624 = pwdiSwitchChParams->wdiChInfo.cMaxTxPower;
11625 wpalMemoryCopy(halSwitchChannelReq.switchChannelParams_V1.selfStaMacAddr,
11626 pwdiSwitchChParams->wdiChInfo.macSelfStaMacAddr,
11627 WDI_MAC_ADDR_LEN);
11628 wpalMemoryCopy(halSwitchChannelReq.switchChannelParams_V1.bssId,
11629 pwdiSwitchChParams->wdiChInfo.macBSSId,
11630 WDI_MAC_ADDR_LEN);
11631#endif
11632 wpalMemoryCopy( pSendBuffer+usDataOffset,
11633 &halSwitchChannelReq.switchChannelParams_V1,
11634 sizeof(halSwitchChannelReq.switchChannelParams_V1));
11635
11636 pWDICtx->wdiReqStatusCB = pwdiSwitchChParams->wdiReqStatusCB;
11637 pWDICtx->pReqStatusUserData = pwdiSwitchChParams->pUserData;
11638
11639 /*-------------------------------------------------------------------------
11640 Send Switch Channel Request to HAL
11641 -------------------------------------------------------------------------*/
11642 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11643 wdiSwitchChRspCb, pEventData->pUserData,
11644 WDI_CH_SWITCH_RESP_V1);
11645}/*WDI_ProcessChannelSwitchReq_V1*/
11646
11647/**
Jeff Johnsone7245742012-09-05 17:12:55 -070011648 @brief Process Config STA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070011649 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011650
11651 @param pWDICtx: pointer to the WLAN DAL context
11652 pEventData: pointer to the event information structure
11653
Jeff Johnson295189b2012-06-20 16:38:30 -070011654 @see
11655 @return Result of the function call
11656*/
11657WDI_Status
11658WDI_ProcessConfigStaReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011659(
Jeff Johnson295189b2012-06-20 16:38:30 -070011660 WDI_ControlBlockType* pWDICtx,
11661 WDI_EventInfoType* pEventData
11662)
11663{
11664 WDI_ConfigSTAReqParamsType* pwdiConfigSTAParams;
11665 WDI_ConfigSTARspCb wdiConfigSTARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011666 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070011667 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070011668 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011669 wpt_uint16 usDataOffset = 0;
11670 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070011671 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070011672
Jeff Johnsone7245742012-09-05 17:12:55 -070011673 tConfigStaReqMsg halConfigStaReqMsg;
11674 wpt_uint16 uMsgSize = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070011675 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11676
11677 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011678 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011679 -------------------------------------------------------------------------*/
11680 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
11681 ( NULL == pEventData->pCBfnc ))
11682 {
11683 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011684 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011685 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011686 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011687 }
11688
11689 pwdiConfigSTAParams = (WDI_ConfigSTAReqParamsType*)pEventData->pEventData;
11690 wdiConfigSTARspCb = (WDI_ConfigSTARspCb)pEventData->pCBfnc;
11691 /*-------------------------------------------------------------------------
11692 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070011693 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070011694 -------------------------------------------------------------------------*/
11695 wpalMutexAcquire(&pWDICtx->wptMutex);
11696
11697 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011698 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070011699 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011700 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
11701 pwdiConfigSTAParams->wdiReqInfo.macBSSID,
11702 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070011703
Jeff Johnsone7245742012-09-05 17:12:55 -070011704 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070011705 {
Jeff Johnsone7245742012-09-05 17:12:55 -070011706 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
11707 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
11708 __func__, MAC_ADDR_ARRAY(pwdiConfigSTAParams->wdiReqInfo.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070011709
11710 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011711 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070011712 }
11713
11714 /*------------------------------------------------------------------------
11715 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070011716 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070011717 ------------------------------------------------------------------------*/
11718 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
11719 {
Jeff Johnsone7245742012-09-05 17:12:55 -070011720 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11721 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
11722 __func__, MAC_ADDR_ARRAY(pwdiConfigSTAParams->wdiReqInfo.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070011723
Jeff Johnsone7245742012-09-05 17:12:55 -070011724 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070011725 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011726 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070011727 }
11728
11729 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011730
11731 /* Allocation of StaReqMsg Memory Based on Firmware Capabilities */
11732#ifdef WLAN_FEATURE_11AC
11733 if (WDI_getFwWlanFeatCaps(DOT11AC))
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070011734 uMsgSize = sizeof(halConfigStaReqMsg.uStaParams.configStaParams_V1); // Version-1 For 11AC
Jeff Johnsone7245742012-09-05 17:12:55 -070011735 else
11736#endif
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070011737 uMsgSize = sizeof(halConfigStaReqMsg.uStaParams.configStaParams); // Version-0 Default
Jeff Johnsone7245742012-09-05 17:12:55 -070011738
Jeff Johnson295189b2012-06-20 16:38:30 -070011739 /*-----------------------------------------------------------------------
11740 Get message buffer
11741 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011742 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_CONFIG_STA_REQ,
11743 uMsgSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070011744 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070011745 ( usSendSize < (usDataOffset + uMsgSize )))
Jeff Johnson295189b2012-06-20 16:38:30 -070011746 {
11747 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080011748 "Unable to get send buffer in config sta req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070011749 pEventData, pwdiConfigSTAParams, wdiConfigSTARspCb);
11750 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011751 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011752 }
11753
11754 /*Copy the station context*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011755 WDI_CopyWDIStaCtxToHALStaCtx( &halConfigStaReqMsg.uStaParams.configStaParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070011756 &pwdiConfigSTAParams->wdiReqInfo);
11757
11758 if(pwdiConfigSTAParams->wdiReqInfo.wdiSTAType == WDI_STA_ENTRY_SELF)
11759 {
11760 /* Need to fill in the self STA Index */
Jeff Johnsone7245742012-09-05 17:12:55 -070011761 if ( WDI_STATUS_SUCCESS !=
Jeff Johnson295189b2012-06-20 16:38:30 -070011762 WDI_STATableFindStaidByAddr(pWDICtx,
11763 pwdiConfigSTAParams->wdiReqInfo.macSTA,
Jeff Johnsone7245742012-09-05 17:12:55 -070011764 (wpt_uint8*)&halConfigStaReqMsg.uStaParams.configStaParams.staIdx ))
Jeff Johnson295189b2012-06-20 16:38:30 -070011765 {
11766 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080011767 MAC_ADDRESS_STR
11768 ": This station does not exist in the WDI Station Table",
11769 MAC_ADDR_ARRAY(pwdiConfigSTAParams->wdiReqInfo.macSTA));
Jeff Johnson295189b2012-06-20 16:38:30 -070011770 wpalMutexRelease(&pWDICtx->wptMutex);
Madan Mohan Koyyalamudif244d8f2012-11-29 11:21:05 -080011771 wpalMemoryFree(pSendBuffer);
Jeff Johnsone7245742012-09-05 17:12:55 -070011772 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011773 }
11774 }
11775 else
11776 {
11777 /* Need to fill in the STA Index to invalid, since at this point we have not
11778 yet received it from HAL */
Gopichand Nakkalae7cbc5d2013-03-27 21:09:23 -070011779 halConfigStaReqMsg.uStaParams.configStaParams.staIdx = pwdiConfigSTAParams->wdiReqInfo.staIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070011780 }
11781
11782 /* Need to fill in the BSS index */
Jeff Johnsone7245742012-09-05 17:12:55 -070011783 halConfigStaReqMsg.uStaParams.configStaParams.bssIdx = pBSSSes->ucBSSIdx;
Madan Mohan Koyyalamudi0e4acab2012-11-02 12:46:40 -070011784
Jeff Johnsone7245742012-09-05 17:12:55 -070011785 wpalMemoryCopy( pSendBuffer+usDataOffset,
11786 &halConfigStaReqMsg.uStaParams,
Madan Mohan Koyyalamudi0e4acab2012-11-02 12:46:40 -070011787 uMsgSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070011788
11789 pWDICtx->wdiReqStatusCB = pwdiConfigSTAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011790 pWDICtx->pReqStatusUserData = pwdiConfigSTAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011791
Jeff Johnsone7245742012-09-05 17:12:55 -070011792 wpalMemoryCopy( &pWDICtx->wdiCachedConfigStaReq,
11793 pwdiConfigSTAParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070011794 sizeof(pWDICtx->wdiCachedConfigStaReq));
11795
11796 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011797 Send Config STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011798 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011799 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11800 wdiConfigSTARspCb, pEventData->pUserData, WDI_CONFIG_STA_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011801}/*WDI_ProcessConfigStaReq*/
11802
11803
11804/**
Jeff Johnsone7245742012-09-05 17:12:55 -070011805 @brief Process Set Link State Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070011806 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011807
11808 @param pWDICtx: pointer to the WLAN DAL context
11809 pEventData: pointer to the event information structure
11810
Jeff Johnson295189b2012-06-20 16:38:30 -070011811 @see
11812 @return Result of the function call
11813*/
11814WDI_Status
11815WDI_ProcessSetLinkStateReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011816(
Jeff Johnson295189b2012-06-20 16:38:30 -070011817 WDI_ControlBlockType* pWDICtx,
11818 WDI_EventInfoType* pEventData
11819)
11820{
11821 WDI_SetLinkReqParamsType* pwdiSetLinkParams;
11822 WDI_SetLinkStateRspCb wdiSetLinkRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011823 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070011824 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070011825 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011826 wpt_uint16 usDataOffset = 0;
11827 wpt_uint16 usSendSize = 0;
11828 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnsone7245742012-09-05 17:12:55 -070011829 tLinkStateParams halLinkStateReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070011830 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11831
11832 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011833 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011834 -------------------------------------------------------------------------*/
11835 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
11836 ( NULL == pEventData->pCBfnc ))
11837 {
11838 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011839 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011840 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011841 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011842 }
11843
11844 pwdiSetLinkParams = (WDI_SetLinkReqParamsType*)pEventData->pEventData;
11845 wdiSetLinkRspCb = (WDI_SetLinkStateRspCb)pEventData->pCBfnc;
11846 /*-------------------------------------------------------------------------
11847 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070011848 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070011849 -------------------------------------------------------------------------*/
11850 wpalMutexAcquire(&pWDICtx->wptMutex);
11851
11852 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011853 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070011854 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011855 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
11856 pwdiSetLinkParams->wdiLinkInfo.macBSSID,
11857 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070011858
Jeff Johnsone7245742012-09-05 17:12:55 -070011859 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070011860 {
Madan Mohan Koyyalamudi891e9492012-10-21 12:19:31 -070011861 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070011862 "%s: Set link request received outside association session. macBSSID " MAC_ADDRESS_STR,
11863 __func__, MAC_ADDR_ARRAY(pwdiSetLinkParams->wdiLinkInfo.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070011864 }
11865 else
11866 {
11867 /*------------------------------------------------------------------------
11868 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070011869 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070011870 ------------------------------------------------------------------------*/
11871 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
11872 {
Jeff Johnsone7245742012-09-05 17:12:55 -070011873 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11874 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
11875 __func__, MAC_ADDR_ARRAY(pwdiSetLinkParams->wdiLinkInfo.macBSSID));
11876
11877 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070011878 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011879 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070011880 }
11881 }
11882 /* If the link is set to enter IDLE - the Session allocated for this BSS
11883 will be deleted on the Set Link State response coming from HAL
11884 - cache the request for response processing */
Jeff Johnsone7245742012-09-05 17:12:55 -070011885 wpalMemoryCopy(&pWDICtx->wdiCacheSetLinkStReq, pwdiSetLinkParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070011886 sizeof(pWDICtx->wdiCacheSetLinkStReq));
11887
11888 wpalMutexRelease(&pWDICtx->wptMutex);
11889 /*-----------------------------------------------------------------------
11890 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070011891 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070011892 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011893
11894 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_LINK_ST_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011895 sizeof(halLinkStateReqMsg),
11896 &pSendBuffer, &usDataOffset, &usSendSize))||
11897 ( usSendSize < (usDataOffset + sizeof(halLinkStateReqMsg) )))
11898 {
11899 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080011900 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070011901 pEventData, pwdiSetLinkParams, wdiSetLinkRspCb);
11902 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011903 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011904 }
11905
11906 wpalMemoryCopy(halLinkStateReqMsg.bssid,
11907 pwdiSetLinkParams->wdiLinkInfo.macBSSID, WDI_MAC_ADDR_LEN);
11908
11909 wpalMemoryCopy(halLinkStateReqMsg.selfMacAddr,
11910 pwdiSetLinkParams->wdiLinkInfo.macSelfStaMacAddr, WDI_MAC_ADDR_LEN);
11911
Jeff Johnsone7245742012-09-05 17:12:55 -070011912 halLinkStateReqMsg.state =
Jeff Johnson295189b2012-06-20 16:38:30 -070011913 WDI_2_HAL_LINK_STATE(pwdiSetLinkParams->wdiLinkInfo.wdiLinkState);
11914
Jeff Johnsone7245742012-09-05 17:12:55 -070011915 wpalMemoryCopy( pSendBuffer+usDataOffset,
11916 &halLinkStateReqMsg,
11917 sizeof(halLinkStateReqMsg));
Jeff Johnson295189b2012-06-20 16:38:30 -070011918
11919 pWDICtx->wdiReqStatusCB = pwdiSetLinkParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011920 pWDICtx->pReqStatusUserData = pwdiSetLinkParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011921
11922 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011923 Send Set Link State Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011924 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011925 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11926 wdiSetLinkRspCb, pEventData->pUserData, WDI_SET_LINK_ST_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011927}/*WDI_ProcessSetLinkStateReq*/
11928
11929
11930/**
11931 @brief Process Get Stats Request function (called when Main FSM
11932 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011933
11934 @param pWDICtx: pointer to the WLAN DAL context
11935 pEventData: pointer to the event information structure
11936
Jeff Johnson295189b2012-06-20 16:38:30 -070011937 @see
11938 @return Result of the function call
11939*/
11940WDI_Status
11941WDI_ProcessGetStatsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011942(
Jeff Johnson295189b2012-06-20 16:38:30 -070011943 WDI_ControlBlockType* pWDICtx,
11944 WDI_EventInfoType* pEventData
11945)
11946{
11947 WDI_GetStatsReqParamsType* pwdiGetStatsParams;
11948 WDI_GetStatsRspCb wdiGetStatsRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011949 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011950 wpt_uint16 usDataOffset = 0;
11951 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070011952 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070011953 WDI_BSSSessionType* pBSSSes = NULL;
11954 wpt_macAddr macBSSID;
Jeff Johnsone7245742012-09-05 17:12:55 -070011955 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070011956 tHalStatsReqMsg halStatsReqMsg;
11957 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11958
11959 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011960 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011961 -------------------------------------------------------------------------*/
11962 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData) ||
11963 ( NULL == pEventData->pCBfnc ) )
11964 {
11965 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011966 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011967 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011968 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011969 }
11970
11971 pwdiGetStatsParams = (WDI_GetStatsReqParamsType*)pEventData->pEventData;
11972 wdiGetStatsRspCb = (WDI_GetStatsRspCb)pEventData->pCBfnc;
11973
11974 /*-------------------------------------------------------------------------
11975 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070011976 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070011977 -------------------------------------------------------------------------*/
11978 wpalMutexAcquire(&pWDICtx->wptMutex);
11979
11980 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011981 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070011982 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011983 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
11984 pwdiGetStatsParams->wdiGetStatsParamsInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070011985 &macBSSID))
11986 {
11987 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080011988 "This station does not exist in the WDI Station Table %d",
11989 pwdiGetStatsParams->wdiGetStatsParamsInfo.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070011990 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011991 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011992 }
11993
Jeff Johnsone7245742012-09-05 17:12:55 -070011994 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
11995 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070011996 {
Jeff Johnsone7245742012-09-05 17:12:55 -070011997 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
11998 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
11999 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070012000
12001 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070012002 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070012003 }
12004
12005 /*------------------------------------------------------------------------
12006 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070012007 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070012008 ------------------------------------------------------------------------*/
12009 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
12010 {
Jeff Johnsone7245742012-09-05 17:12:55 -070012011 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12012 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
12013 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070012014
Jeff Johnsone7245742012-09-05 17:12:55 -070012015 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070012016 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070012017 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070012018 }
12019
12020
12021 wpalMutexRelease(&pWDICtx->wptMutex);
12022
12023 /*-----------------------------------------------------------------------
12024 Get message buffer
12025 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012026 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_GET_STATS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012027 sizeof(halStatsReqMsg.statsReqParams),
12028 &pSendBuffer, &usDataOffset, &usSendSize))||
12029 ( usSendSize < (usDataOffset + sizeof(halStatsReqMsg.statsReqParams) )))
12030 {
12031 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012032 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070012033 pEventData, pwdiGetStatsParams, wdiGetStatsRspCb);
12034 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012035 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012036 }
12037
Jeff Johnsone7245742012-09-05 17:12:55 -070012038 halStatsReqMsg.statsReqParams.staId =
Jeff Johnson295189b2012-06-20 16:38:30 -070012039 pwdiGetStatsParams->wdiGetStatsParamsInfo.ucSTAIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070012040 halStatsReqMsg.statsReqParams.statsMask =
Jeff Johnson295189b2012-06-20 16:38:30 -070012041 pwdiGetStatsParams->wdiGetStatsParamsInfo.uStatsMask;
Jeff Johnsone7245742012-09-05 17:12:55 -070012042 wpalMemoryCopy( pSendBuffer+usDataOffset,
12043 &halStatsReqMsg.statsReqParams,
12044 sizeof(halStatsReqMsg.statsReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070012045
12046 pWDICtx->wdiReqStatusCB = pwdiGetStatsParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012047 pWDICtx->pReqStatusUserData = pwdiGetStatsParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012048
12049 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012050 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012051 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012052 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12053 wdiGetStatsRspCb, pEventData->pUserData, WDI_GET_STATS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012054}/*WDI_ProcessGetStatsReq*/
12055
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -080012056#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_ESE || defined(FEATURE_WLAN_LFR)
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -080012057/**
12058 @brief Process Get Roam Rssi Request function (called when Main FSM
12059 allows it)
12060
12061 @param pWDICtx: pointer to the WLAN DAL context
12062 pEventData: pointer to the event information structure
12063
12064 @see
12065 @return Result of the function call
12066*/
12067WDI_Status
12068WDI_ProcessGetRoamRssiReq
12069(
12070 WDI_ControlBlockType* pWDICtx,
12071 WDI_EventInfoType* pEventData
12072)
12073{
12074 WDI_GetRoamRssiReqParamsType* pwdiGetRoamRssiParams;
12075 WDI_GetStatsRspCb wdiGetStatsRspCb;
12076 wpt_uint8* pSendBuffer = NULL;
12077 wpt_uint16 usDataOffset = 0;
12078 wpt_uint16 usSendSize = 0;
12079 wpt_uint8 ucCurrentBSSSesIdx = 0;
12080 WDI_BSSSessionType* pBSSSes = NULL;
12081 wpt_macAddr macBSSID;
12082 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
12083 tHalGetRoamRssiReqMsg halRssiRoamReqMsg;
12084 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12085 /*-------------------------------------------------------------------------
12086 Sanity check
12087 -------------------------------------------------------------------------*/
12088 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData) ||
12089 ( NULL == pEventData->pCBfnc ) )
12090 {
12091 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12092 "%s: Invalid parameters", __func__);
12093 WDI_ASSERT(0);
12094 return WDI_STATUS_E_FAILURE;
12095 }
12096
12097 pwdiGetRoamRssiParams = (WDI_GetRoamRssiReqParamsType*)pEventData->pEventData;
12098 wdiGetStatsRspCb = (WDI_GetStatsRspCb)pEventData->pCBfnc;
12099
12100 /*-------------------------------------------------------------------------
12101 Check to see if we are in the middle of an association, if so queue, if
12102 not it means it is free to process request
12103 -------------------------------------------------------------------------*/
12104 wpalMutexAcquire(&pWDICtx->wptMutex);
12105
12106 /*------------------------------------------------------------------------
12107 Find the BSS for which the request is made
12108 ------------------------------------------------------------------------*/
12109 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
12110 pwdiGetRoamRssiParams->wdiGetRoamRssiParamsInfo.ucSTAIdx,
12111 &macBSSID))
12112 {
12113 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012114 "This station does not exist in the WDI Station Table %d",
12115 pwdiGetRoamRssiParams->wdiGetRoamRssiParamsInfo.ucSTAIdx);
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -080012116 wpalMutexRelease(&pWDICtx->wptMutex);
12117 return WDI_STATUS_E_FAILURE;
12118 }
12119
12120 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
12121 if ( NULL == pBSSSes )
12122 {
12123 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
12124 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
12125 __func__, MAC_ADDR_ARRAY(macBSSID));
12126
12127 wpalMutexRelease(&pWDICtx->wptMutex);
12128 return WDI_STATUS_E_NOT_ALLOWED;
12129 }
12130
12131 /*------------------------------------------------------------------------
12132 Check if this BSS is being currently processed or queued,
12133 if queued - queue the new request as well
12134 ------------------------------------------------------------------------*/
12135 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
12136 {
12137 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12138 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
12139 __func__, MAC_ADDR_ARRAY(macBSSID));
12140
12141 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
12142 wpalMutexRelease(&pWDICtx->wptMutex);
12143 return wdiStatus;
12144 }
12145
12146 wpalMutexRelease(&pWDICtx->wptMutex);
12147
12148 /*-----------------------------------------------------------------------
12149 Get message buffer
12150 -----------------------------------------------------------------------*/
12151 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_GET_ROAM_RSSI_REQ,
12152 sizeof(halRssiRoamReqMsg.roamRssiReqParams),
12153 &pSendBuffer, &usDataOffset, &usSendSize))||
12154 ( usSendSize < (usDataOffset + sizeof(halRssiRoamReqMsg.roamRssiReqParams) )))
12155 {
12156 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012157 "Unable to get send buffer in set bss key req %p %p %p",
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -080012158 pEventData, pwdiGetRoamRssiParams, wdiGetStatsRspCb);
12159 WDI_ASSERT(0);
12160 return WDI_STATUS_E_FAILURE;
12161 }
12162
12163 halRssiRoamReqMsg.roamRssiReqParams.staId =
12164 pwdiGetRoamRssiParams->wdiGetRoamRssiParamsInfo.ucSTAIdx;
12165 wpalMemoryCopy( pSendBuffer+usDataOffset,
12166 &halRssiRoamReqMsg.roamRssiReqParams,
12167 sizeof(halRssiRoamReqMsg.roamRssiReqParams));
12168
12169 pWDICtx->wdiReqStatusCB = pwdiGetRoamRssiParams->wdiReqStatusCB;
12170 pWDICtx->pReqStatusUserData = pwdiGetRoamRssiParams->pUserData;
12171
12172 /*-------------------------------------------------------------------------
12173 Send Get STA Request to HAL
12174 -------------------------------------------------------------------------*/
12175 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12176 wdiGetStatsRspCb, pEventData->pUserData, WDI_GET_ROAM_RSSI_RESP);
12177}/*WDI_ProcessGetRoamRssiReq*/
12178#endif
12179
Jeff Johnson295189b2012-06-20 16:38:30 -070012180/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012181 @brief Process Update Cfg Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070012182 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012183
12184 @param pWDICtx: pointer to the WLAN DAL context
12185 pEventData: pointer to the event information structure
12186
Jeff Johnson295189b2012-06-20 16:38:30 -070012187 @see
12188 @return Result of the function call
12189*/
12190WDI_Status
12191WDI_ProcessUpdateCfgReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012192(
Jeff Johnson295189b2012-06-20 16:38:30 -070012193 WDI_ControlBlockType* pWDICtx,
12194 WDI_EventInfoType* pEventData
12195)
12196{
12197 WDI_UpdateCfgReqParamsType* pwdiUpdateCfgParams = NULL;
12198 WDI_UpdateCfgRspCb wdiUpdateCfgRspCb = NULL;
12199
Jeff Johnsone7245742012-09-05 17:12:55 -070012200 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012201 wpt_uint16 usDataOffset = 0;
12202 wpt_uint16 usSendSize = 0;
12203 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12204
12205 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012206 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012207 -------------------------------------------------------------------------*/
12208 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
12209 ( NULL == pEventData->pCBfnc))
12210 {
12211 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012212 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012213 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012214 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012215 }
12216
12217 pwdiUpdateCfgParams = (WDI_UpdateCfgReqParamsType*)pEventData->pEventData;
12218 wdiUpdateCfgRspCb = (WDI_UpdateCfgRspCb)pEventData->pCBfnc;
12219
12220 /*-----------------------------------------------------------------------
12221 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070012222 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070012223 -----------------------------------------------------------------------*/
12224
Jeff Johnsone7245742012-09-05 17:12:55 -070012225 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_CFG_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012226 pwdiUpdateCfgParams->uConfigBufferLen + sizeof(wpt_uint32),
12227 &pSendBuffer, &usDataOffset, &usSendSize))||
12228 ( usSendSize < (usDataOffset + pwdiUpdateCfgParams->uConfigBufferLen)))
12229 {
12230 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012231 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070012232 pEventData, pwdiUpdateCfgParams, wdiUpdateCfgRspCb);
12233 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012234 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012235 }
12236
Jeff Johnsone7245742012-09-05 17:12:55 -070012237 wpalMemoryCopy( pSendBuffer+usDataOffset,
12238 &pwdiUpdateCfgParams->uConfigBufferLen,
12239 sizeof(wpt_uint32));
12240 wpalMemoryCopy( pSendBuffer+usDataOffset+sizeof(wpt_uint32),
12241 pwdiUpdateCfgParams->pConfigBuffer,
12242 pwdiUpdateCfgParams->uConfigBufferLen);
Jeff Johnson295189b2012-06-20 16:38:30 -070012243
12244 pWDICtx->wdiReqStatusCB = pwdiUpdateCfgParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012245 pWDICtx->pReqStatusUserData = pwdiUpdateCfgParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012246
12247 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012248 Send Update Cfg Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012249 -------------------------------------------------------------------------*/
12250
Jeff Johnsone7245742012-09-05 17:12:55 -070012251 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12252 wdiUpdateCfgRspCb, pEventData->pUserData, WDI_UPDATE_CFG_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012253
12254}/*WDI_ProcessUpdateCfgReq*/
12255
12256
12257/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012258 @brief Process Add BA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070012259 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012260
12261 @param pWDICtx: pointer to the WLAN DAL context
12262 pEventData: pointer to the event information structure
12263
Jeff Johnson295189b2012-06-20 16:38:30 -070012264 @see
12265 @return Result of the function call
12266*/
12267WDI_Status
12268WDI_ProcessAddBAReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012269(
Jeff Johnson295189b2012-06-20 16:38:30 -070012270 WDI_ControlBlockType* pWDICtx,
12271 WDI_EventInfoType* pEventData
12272)
12273{
12274 WDI_AddBAReqParamsType* pwdiAddBAParams;
12275 WDI_AddBARspCb wdiAddBARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070012276 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070012277 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070012278 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012279 wpt_uint16 usDataOffset = 0;
12280 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070012281 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070012282 wpt_macAddr macBSSID;
12283
12284 tAddBAReqMsg halAddBAReq;
12285 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12286
12287 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012288 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012289 -------------------------------------------------------------------------*/
12290 if (( NULL == pEventData ) ||
12291 ( NULL == pEventData->pEventData) ||
12292 ( NULL == pEventData->pCBfnc ))
12293 {
12294 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012295 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012296 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012297 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012298 }
12299
12300 pwdiAddBAParams = (WDI_AddBAReqParamsType*)pEventData->pEventData;
12301 wdiAddBARspCb = (WDI_AddBARspCb)pEventData->pCBfnc;
12302
12303 /*-------------------------------------------------------------------------
12304 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070012305 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070012306 -------------------------------------------------------------------------*/
12307 wpalMutexAcquire(&pWDICtx->wptMutex);
12308
12309 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012310 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070012311 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012312 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
12313 pwdiAddBAParams->wdiBAInfoType.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070012314 &macBSSID))
12315 {
12316 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012317 "This station does not exist in the WDI Station Table %d",
12318 pwdiAddBAParams->wdiBAInfoType.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070012319 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070012320 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012321 }
12322
Jeff Johnsone7245742012-09-05 17:12:55 -070012323 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
12324 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070012325 {
Jeff Johnsone7245742012-09-05 17:12:55 -070012326 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
12327 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
12328 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070012329
12330 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070012331 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070012332 }
12333
12334 /*------------------------------------------------------------------------
12335 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070012336 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070012337 ------------------------------------------------------------------------*/
12338 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
12339 {
Jeff Johnsone7245742012-09-05 17:12:55 -070012340 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12341 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
12342 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070012343
Jeff Johnsone7245742012-09-05 17:12:55 -070012344 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070012345 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070012346 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070012347 }
12348
12349
12350 wpalMutexRelease(&pWDICtx->wptMutex);
12351 /*-----------------------------------------------------------------------
12352 Get message buffer
12353 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012354 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ADD_BA_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012355 sizeof(halAddBAReq.addBAParams),
12356 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070012357 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070012358 (usDataOffset + sizeof(halAddBAReq.addBAParams) )))
12359 {
12360 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012361 "Unable to get send buffer in Add BA req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070012362 pEventData, pwdiAddBAParams, wdiAddBARspCb);
12363 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012364 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012365 }
12366
Jeff Johnsone7245742012-09-05 17:12:55 -070012367 halAddBAReq.addBAParams.baSessionID =
Jeff Johnson295189b2012-06-20 16:38:30 -070012368 pwdiAddBAParams->wdiBAInfoType.ucBaSessionID;
12369 halAddBAReq.addBAParams.winSize = pwdiAddBAParams->wdiBAInfoType.ucWinSize;
12370#ifdef FEATURE_ON_CHIP_REORDERING
Jeff Johnsone7245742012-09-05 17:12:55 -070012371 halAddBAReq.addBAParams.isReorderingDoneOnChip =
Jeff Johnson295189b2012-06-20 16:38:30 -070012372 pwdiAddBAParams->wdiBAInfoType.bIsReorderingDoneOnChip;
12373#endif
12374
Jeff Johnsone7245742012-09-05 17:12:55 -070012375 wpalMemoryCopy( pSendBuffer+usDataOffset,
12376 &halAddBAReq.addBAParams,
12377 sizeof(halAddBAReq.addBAParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070012378
12379 pWDICtx->wdiReqStatusCB = pwdiAddBAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012380 pWDICtx->pReqStatusUserData = pwdiAddBAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012381
12382 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012383 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012384 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012385 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12386 wdiAddBARspCb, pEventData->pUserData,
12387 WDI_ADD_BA_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012388}/*WDI_ProcessAddBAReq*/
12389
12390
12391
12392/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012393 @brief Process Trigger BA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070012394 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012395
12396 @param pWDICtx: pointer to the WLAN DAL context
12397 pEventData: pointer to the event information structure
12398
Jeff Johnson295189b2012-06-20 16:38:30 -070012399 @see
12400 @return Result of the function call
12401*/
12402WDI_Status
12403WDI_ProcessTriggerBAReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012404(
Jeff Johnson295189b2012-06-20 16:38:30 -070012405 WDI_ControlBlockType* pWDICtx,
12406 WDI_EventInfoType* pEventData
12407)
12408{
12409 WDI_TriggerBAReqParamsType* pwdiTriggerBAParams;
12410 WDI_TriggerBARspCb wdiTriggerBARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070012411 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070012412 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070012413 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012414 wpt_uint16 usDataOffset = 0;
12415 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070012416 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070012417 wpt_uint16 index;
12418 wpt_macAddr macBSSID;
Jeff Johnsone7245742012-09-05 17:12:55 -070012419
Jeff Johnson295189b2012-06-20 16:38:30 -070012420 tTriggerBAReqMsg halTriggerBAReq;
12421 tTriggerBaReqCandidate* halTriggerBACandidate;
12422 WDI_TriggerBAReqCandidateType* wdiTriggerBACandidate;
12423 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12424
12425 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012426 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012427 -------------------------------------------------------------------------*/
12428 if (( NULL == pEventData ) ||
12429 ( NULL == pEventData->pEventData ) ||
12430 ( NULL == pEventData->pCBfnc ))
12431 {
12432 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012433 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012434 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012435 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012436 }
12437
12438 pwdiTriggerBAParams = (WDI_TriggerBAReqParamsType*)pEventData->pEventData;
12439 wdiTriggerBARspCb = (WDI_TriggerBARspCb)pEventData->pCBfnc;
12440 /*-------------------------------------------------------------------------
12441 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070012442 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070012443 -------------------------------------------------------------------------*/
12444 wpalMutexAcquire(&pWDICtx->wptMutex);
12445
12446 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012447 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070012448 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012449 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
12450 pwdiTriggerBAParams->wdiTriggerBAInfoType.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070012451 &macBSSID))
12452 {
12453 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012454 "This station does not exist in the WDI Station Table %d",
12455 pwdiTriggerBAParams->wdiTriggerBAInfoType.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070012456 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070012457 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012458 }
12459
Jeff Johnsone7245742012-09-05 17:12:55 -070012460 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
12461 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070012462 {
Jeff Johnsone7245742012-09-05 17:12:55 -070012463 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
12464 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
12465 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070012466
12467 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070012468 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070012469 }
12470
12471 /*------------------------------------------------------------------------
12472 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070012473 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070012474 ------------------------------------------------------------------------*/
12475 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
12476 {
Jeff Johnsone7245742012-09-05 17:12:55 -070012477 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12478 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
12479 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070012480
Jeff Johnsone7245742012-09-05 17:12:55 -070012481 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070012482 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070012483 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070012484 }
12485
12486
12487 wpalMutexRelease(&pWDICtx->wptMutex);
12488 /*-----------------------------------------------------------------------
12489 Get message buffer
12490 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012491 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
12492 WDI_TRIGGER_BA_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012493 sizeof(halTriggerBAReq.triggerBAParams) +
Jeff Johnsone7245742012-09-05 17:12:55 -070012494 (sizeof(tTriggerBaReqCandidate) *
Jeff Johnson295189b2012-06-20 16:38:30 -070012495 pwdiTriggerBAParams->wdiTriggerBAInfoType.usBACandidateCnt),
12496 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070012497 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070012498 (usDataOffset + sizeof(halTriggerBAReq.triggerBAParams)+
Jeff Johnsone7245742012-09-05 17:12:55 -070012499 (sizeof(tTriggerBaReqCandidate) *
Jeff Johnson295189b2012-06-20 16:38:30 -070012500 pwdiTriggerBAParams->wdiTriggerBAInfoType.usBACandidateCnt) )))
12501 {
12502 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012503 "Unable to get send buffer in Trigger BA req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070012504 pEventData, pwdiTriggerBAParams, wdiTriggerBARspCb);
12505 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012506 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012507 }
12508
Jeff Johnsone7245742012-09-05 17:12:55 -070012509 halTriggerBAReq.triggerBAParams.baSessionID =
Jeff Johnson295189b2012-06-20 16:38:30 -070012510 pwdiTriggerBAParams->wdiTriggerBAInfoType.ucBASessionID;
Jeff Johnsone7245742012-09-05 17:12:55 -070012511 halTriggerBAReq.triggerBAParams.baCandidateCnt =
Jeff Johnson295189b2012-06-20 16:38:30 -070012512 pwdiTriggerBAParams->wdiTriggerBAInfoType.usBACandidateCnt;
12513
Jeff Johnsone7245742012-09-05 17:12:55 -070012514 wpalMemoryCopy( pSendBuffer+usDataOffset,
12515 &halTriggerBAReq.triggerBAParams,
12516 sizeof(halTriggerBAReq.triggerBAParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070012517
Jeff Johnsone7245742012-09-05 17:12:55 -070012518 wdiTriggerBACandidate =
Jeff Johnson295189b2012-06-20 16:38:30 -070012519 (WDI_TriggerBAReqCandidateType*)(pwdiTriggerBAParams + 1);
12520 halTriggerBACandidate = (tTriggerBaReqCandidate*)(pSendBuffer+usDataOffset+
12521 sizeof(halTriggerBAReq.triggerBAParams));
Jeff Johnsone7245742012-09-05 17:12:55 -070012522
12523 for(index = 0 ; index < halTriggerBAReq.triggerBAParams.baCandidateCnt ;
Jeff Johnson295189b2012-06-20 16:38:30 -070012524 index++)
12525 {
12526 halTriggerBACandidate->staIdx = wdiTriggerBACandidate->ucSTAIdx;
12527 halTriggerBACandidate->tidBitmap = wdiTriggerBACandidate->ucTidBitmap;
12528 halTriggerBACandidate++;
12529 wdiTriggerBACandidate++;
12530 }
12531
12532 pWDICtx->wdiReqStatusCB = pwdiTriggerBAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012533 pWDICtx->pReqStatusUserData = pwdiTriggerBAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012534
12535 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012536 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012537 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012538 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12539 wdiTriggerBARspCb, pEventData->pUserData,
12540 WDI_TRIGGER_BA_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012541}/*WDI_ProcessTriggerBAReq*/
12542
12543
12544
12545/**
12546 @brief Process Update Beacon Params Request function (called when Main FSM
12547 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012548
12549 @param pWDICtx: pointer to the WLAN DAL context
12550 pEventData: pointer to the event information structure
12551
Jeff Johnson295189b2012-06-20 16:38:30 -070012552 @see
12553 @return Result of the function call
12554*/
12555WDI_Status
12556WDI_ProcessUpdateBeaconParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012557(
Jeff Johnson295189b2012-06-20 16:38:30 -070012558 WDI_ControlBlockType* pWDICtx,
12559 WDI_EventInfoType* pEventData
12560)
12561{
12562 WDI_UpdateBeaconParamsType* pwdiUpdateBeaconParams;
12563 WDI_UpdateBeaconParamsRspCb wdiUpdateBeaconParamsRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070012564 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012565 wpt_uint16 usDataOffset = 0;
12566 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070012567 tUpdateBeaconParams halUpdateBeaconParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070012568 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12569
12570 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012571 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012572 -------------------------------------------------------------------------*/
12573 if (( NULL == pEventData ) ||
12574 ( NULL == pEventData->pEventData) ||
12575 ( NULL == pEventData->pCBfnc))
12576 {
12577 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012578 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012579 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012580 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012581 }
12582
12583 pwdiUpdateBeaconParams = (WDI_UpdateBeaconParamsType*)pEventData->pEventData;
12584 wdiUpdateBeaconParamsRspCb = (WDI_UpdateBeaconParamsRspCb)pEventData->pCBfnc;
12585 /*-----------------------------------------------------------------------
12586 Get message buffer
12587 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012588 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPD_BCON_PRMS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012589 sizeof(halUpdateBeaconParams),
12590 &pSendBuffer, &usDataOffset, &usSendSize))||
12591 ( usSendSize < (usDataOffset + sizeof(halUpdateBeaconParams) )))
12592 {
12593 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012594 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070012595 pEventData, pwdiUpdateBeaconParams, wdiUpdateBeaconParamsRspCb);
12596 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012597 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012598 }
12599
12600 /*BSS Index of the BSS*/
12601 halUpdateBeaconParams.bssIdx =
12602 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucBssIdx;
12603 /*shortPreamble mode. HAL should update all the STA rates when it
12604 receives this message*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012605 halUpdateBeaconParams.fShortPreamble =
Jeff Johnson295189b2012-06-20 16:38:30 -070012606 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucfShortPreamble;
12607 /* short Slot time.*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012608 halUpdateBeaconParams.fShortSlotTime =
Jeff Johnson295189b2012-06-20 16:38:30 -070012609 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucfShortSlotTime;
12610 /* Beacon Interval */
Jeff Johnsone7245742012-09-05 17:12:55 -070012611 halUpdateBeaconParams.beaconInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070012612 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.usBeaconInterval;
12613
12614 /*Protection related */
Jeff Johnsone7245742012-09-05 17:12:55 -070012615 halUpdateBeaconParams.llaCoexist =
Jeff Johnson295189b2012-06-20 16:38:30 -070012616 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucllaCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070012617 halUpdateBeaconParams.llbCoexist =
Jeff Johnson295189b2012-06-20 16:38:30 -070012618 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucllbCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070012619 halUpdateBeaconParams.llgCoexist =
Jeff Johnson295189b2012-06-20 16:38:30 -070012620 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucllgCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070012621 halUpdateBeaconParams.ht20MhzCoexist =
Jeff Johnson295189b2012-06-20 16:38:30 -070012622 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucHt20MhzCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070012623 halUpdateBeaconParams.llnNonGFCoexist =
Jeff Johnson295189b2012-06-20 16:38:30 -070012624 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucllnNonGFCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070012625 halUpdateBeaconParams.fLsigTXOPProtectionFullSupport =
Jeff Johnson295189b2012-06-20 16:38:30 -070012626 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucfLsigTXOPProtectionFullSupport;
12627 halUpdateBeaconParams.fRIFSMode =
12628 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucfRIFSMode;
Jeff Johnsone7245742012-09-05 17:12:55 -070012629 halUpdateBeaconParams.paramChangeBitmap =
Jeff Johnson295189b2012-06-20 16:38:30 -070012630 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.usChangeBitmap;
12631
Jeff Johnsone7245742012-09-05 17:12:55 -070012632 wpalMemoryCopy( pSendBuffer+usDataOffset, &halUpdateBeaconParams,
12633 sizeof(halUpdateBeaconParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070012634
12635 pWDICtx->wdiReqStatusCB = pwdiUpdateBeaconParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012636 pWDICtx->pReqStatusUserData = pwdiUpdateBeaconParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012637
12638 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012639 Send Del TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012640 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012641 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12642 wdiUpdateBeaconParamsRspCb, pEventData->pUserData, WDI_UPD_BCON_PRMS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012643}/*WDI_ProcessUpdateBeaconParamsReq*/
12644
12645
12646
12647/**
12648 @brief Process Send Beacon template Request function (called when Main FSM
12649 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012650
12651 @param pWDICtx: pointer to the WLAN DAL context
12652 pEventData: pointer to the event information structure
12653
Jeff Johnson295189b2012-06-20 16:38:30 -070012654 @see
12655 @return Result of the function call
12656*/
12657WDI_Status
12658WDI_ProcessSendBeaconParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012659(
Jeff Johnson295189b2012-06-20 16:38:30 -070012660 WDI_ControlBlockType* pWDICtx,
12661 WDI_EventInfoType* pEventData
12662)
12663{
12664 WDI_SendBeaconParamsType* pwdiSendBeaconParams;
12665 WDI_SendBeaconParamsRspCb wdiSendBeaconParamsRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070012666 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012667 wpt_uint16 usDataOffset = 0;
12668 wpt_uint16 usSendSize = 0;
12669 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12670
12671 tSendBeaconReqMsg halSendBeaconReq;
12672 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012673 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012674 -------------------------------------------------------------------------*/
12675 if (( NULL == pEventData ) ||
12676 ( NULL == pEventData->pEventData ) ||
12677 ( NULL == pEventData->pCBfnc ))
12678 {
12679 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012680 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012681 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012682 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012683 }
12684
12685 pwdiSendBeaconParams = (WDI_SendBeaconParamsType*)pEventData->pEventData;
12686 wdiSendBeaconParamsRspCb = (WDI_SendBeaconParamsRspCb)pEventData->pCBfnc;
12687 /*-----------------------------------------------------------------------
12688 Get message buffer
12689 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012690 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SND_BCON_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012691 sizeof(halSendBeaconReq.sendBeaconParam),
12692 &pSendBuffer, &usDataOffset, &usSendSize))||
12693 ( usSendSize < (usDataOffset + sizeof(halSendBeaconReq.sendBeaconParam) )))
12694 {
12695 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012696 "Unable to get send buffer in send beacon req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070012697 pEventData, pwdiSendBeaconParams, wdiSendBeaconParamsRspCb);
12698 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012699 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012700 }
12701
12702 wpalMemoryCopy(halSendBeaconReq.sendBeaconParam.bssId,
12703 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.macBSSID,
12704 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070012705 halSendBeaconReq.sendBeaconParam.beaconLength =
Jeff Johnson295189b2012-06-20 16:38:30 -070012706 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.beaconLength;
12707 wpalMemoryCopy(halSendBeaconReq.sendBeaconParam.beacon,
12708 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.beacon,
12709 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.beaconLength);
Jeff Johnsone7245742012-09-05 17:12:55 -070012710 halSendBeaconReq.sendBeaconParam.timIeOffset =
Jeff Johnson295189b2012-06-20 16:38:30 -070012711 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.timIeOffset;
Gopichand Nakkala81aef732013-03-22 11:15:19 +053012712 /* usP2PIeOffset should be atleast greater than timIeOffset */
12713 if ((pwdiSendBeaconParams->wdiSendBeaconParamsInfo.usP2PIeOffset != 0 ) &&
12714 (pwdiSendBeaconParams->wdiSendBeaconParamsInfo.usP2PIeOffset <
12715 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.timIeOffset))
12716 {
12717 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12718 "Invalid usP2PIeOffset %hu",
12719 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.usP2PIeOffset);
12720 WDI_ASSERT(0);
12721 return WDI_STATUS_E_FAILURE;
12722 }
12723
Jeff Johnsone7245742012-09-05 17:12:55 -070012724 halSendBeaconReq.sendBeaconParam.p2pIeOffset =
Jeff Johnson295189b2012-06-20 16:38:30 -070012725 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.usP2PIeOffset;
Jeff Johnson295189b2012-06-20 16:38:30 -070012726
Jeff Johnsone7245742012-09-05 17:12:55 -070012727 wpalMemoryCopy( pSendBuffer+usDataOffset,
12728 &halSendBeaconReq.sendBeaconParam,
12729 sizeof(halSendBeaconReq.sendBeaconParam));
Jeff Johnson295189b2012-06-20 16:38:30 -070012730
12731 pWDICtx->wdiReqStatusCB = pwdiSendBeaconParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012732 pWDICtx->pReqStatusUserData = pwdiSendBeaconParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012733
12734 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012735 Send Del TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012736 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012737 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12738 wdiSendBeaconParamsRspCb, pEventData->pUserData, WDI_SND_BCON_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012739}/*WDI_ProcessSendBeaconParamsReq*/
12740
12741/**
12742 @brief Process Update Beacon Params Request function (called when Main FSM
12743 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012744
12745 @param pWDICtx: pointer to the WLAN DAL context
12746 pEventData: pointer to the event information structure
12747
Jeff Johnson295189b2012-06-20 16:38:30 -070012748 @see
12749 @return Result of the function call
12750*/
12751WDI_Status
12752WDI_ProcessUpdateProbeRspTemplateReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012753(
Jeff Johnson295189b2012-06-20 16:38:30 -070012754 WDI_ControlBlockType* pWDICtx,
12755 WDI_EventInfoType* pEventData
12756)
12757{
12758 WDI_UpdateProbeRspTemplateParamsType* pwdiUpdateProbeRespTmplParams;
12759 WDI_UpdateProbeRspTemplateRspCb wdiUpdateProbeRespTmplRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070012760 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012761 wpt_uint16 usDataOffset = 0;
12762 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070012763 tSendProbeRespReqParams halUpdateProbeRspTmplParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070012764 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12765
12766 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012767 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012768 -------------------------------------------------------------------------*/
12769 if (( NULL == pEventData ) ||
12770 ( NULL == pEventData->pEventData) ||
12771 ( NULL == pEventData->pCBfnc))
12772 {
12773 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012774 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012775 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012776 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012777 }
12778
Jeff Johnsone7245742012-09-05 17:12:55 -070012779 pwdiUpdateProbeRespTmplParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070012780 (WDI_UpdateProbeRspTemplateParamsType*)pEventData->pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070012781 wdiUpdateProbeRespTmplRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070012782 (WDI_UpdateProbeRspTemplateRspCb)pEventData->pCBfnc;
12783 /*-----------------------------------------------------------------------
12784 Get message buffer
12785 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012786 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPD_PROBE_RSP_TEMPLATE_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012787 sizeof(halUpdateProbeRspTmplParams),
12788 &pSendBuffer, &usDataOffset, &usSendSize))||
12789 ( usSendSize < (usDataOffset + sizeof(halUpdateProbeRspTmplParams) )))
12790 {
12791 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012792 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070012793 pEventData, pwdiUpdateProbeRespTmplParams, wdiUpdateProbeRespTmplRspCb);
12794 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012795 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012796 }
12797
12798 wpalMemoryCopy(halUpdateProbeRspTmplParams.bssId,
Jeff Johnsone7245742012-09-05 17:12:55 -070012799 pwdiUpdateProbeRespTmplParams->wdiProbeRspTemplateInfo.macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -070012800 WDI_MAC_ADDR_LEN);
12801
Jeff Johnsone7245742012-09-05 17:12:55 -070012802 halUpdateProbeRspTmplParams.probeRespTemplateLen =
Jeff Johnson295189b2012-06-20 16:38:30 -070012803 pwdiUpdateProbeRespTmplParams->wdiProbeRspTemplateInfo.uProbeRespTemplateLen;
12804
12805 wpalMemoryCopy(halUpdateProbeRspTmplParams.pProbeRespTemplate,
12806 pwdiUpdateProbeRespTmplParams->wdiProbeRspTemplateInfo.pProbeRespTemplate,
Jeff Johnsone7245742012-09-05 17:12:55 -070012807 BEACON_TEMPLATE_SIZE);
Jeff Johnson295189b2012-06-20 16:38:30 -070012808
12809
12810 wpalMemoryCopy(halUpdateProbeRspTmplParams.ucProxyProbeReqValidIEBmap,
12811 pwdiUpdateProbeRespTmplParams->wdiProbeRspTemplateInfo.uaProxyProbeReqValidIEBmap,
12812 WDI_PROBE_REQ_BITMAP_IE_LEN);
12813
Jeff Johnsone7245742012-09-05 17:12:55 -070012814 wpalMemoryCopy( pSendBuffer+usDataOffset,
12815 &halUpdateProbeRspTmplParams,
12816 sizeof(halUpdateProbeRspTmplParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070012817
12818 pWDICtx->wdiReqStatusCB = pwdiUpdateProbeRespTmplParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012819 pWDICtx->pReqStatusUserData = pwdiUpdateProbeRespTmplParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012820
12821 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012822 Send Update Probe Resp Template Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012823 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012824 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12825 wdiUpdateProbeRespTmplRspCb, pEventData->pUserData,
12826 WDI_UPD_PROBE_RSP_TEMPLATE_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012827}/*WDI_ProcessUpdateProbeRspTemplateReq*/
12828
12829/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012830 @brief Process NV blob download function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070012831 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012832
12833 @param pWDICtx: pointer to the WLAN DAL context
12834 pEventData: pointer to the event information structure
12835
Jeff Johnson295189b2012-06-20 16:38:30 -070012836 @see
12837 @return Result of the function call
12838*/
12839WDI_Status
12840WDI_ProcessNvDownloadReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012841(
Jeff Johnson295189b2012-06-20 16:38:30 -070012842 WDI_ControlBlockType* pWDICtx,
12843 WDI_EventInfoType* pEventData
12844)
12845{
12846
12847 WDI_NvDownloadReqParamsType* pwdiNvDownloadReqParams = NULL;
12848 WDI_NvDownloadRspCb wdiNvDownloadRspCb = NULL;
12849
12850 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012851 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012852 -------------------------------------------------------------------------*/
12853 if (( NULL == pEventData ) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070012854 ( NULL == (pwdiNvDownloadReqParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070012855 (WDI_NvDownloadReqParamsType*)pEventData->pEventData)) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070012856 ( NULL == (wdiNvDownloadRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070012857 (WDI_NvDownloadRspCb)pEventData->pCBfnc)))
12858 {
12859 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012860 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012861 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012862 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012863 }
12864
12865 /*Intialize the Nv Blob Info */
Jeff Johnsone7245742012-09-05 17:12:55 -070012866 pWDICtx->wdiNvBlobInfo.usTotalFragment =
Jeff Johnson295189b2012-06-20 16:38:30 -070012867 TOTALFRAGMENTS(pwdiNvDownloadReqParams->wdiBlobInfo.uBlobSize);
12868
12869 /*cache the wdi nv request message here if the the first fragment
12870 * To issue the request to HAL for the next fragment */
12871 if( 0 == pWDICtx->wdiNvBlobInfo.usCurrentFragment)
12872 {
Jeff Johnsone7245742012-09-05 17:12:55 -070012873 wpalMemoryCopy(&pWDICtx->wdiCachedNvDownloadReq,
12874 pwdiNvDownloadReqParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070012875 sizeof(pWDICtx->wdiCachedNvDownloadReq));
12876
12877 pWDICtx->pfncRspCB = pEventData->pCBfnc;
12878 pWDICtx->pRspCBUserData = pEventData->pUserData;
12879 }
12880
12881 return WDI_SendNvBlobReq(pWDICtx,pEventData);
12882}
12883
12884/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012885 @brief Process Set Max Tx Power Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070012886 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012887
12888 @param pWDICtx: pointer to the WLAN DAL context
12889 pEventData: pointer to the event information structure
12890
Jeff Johnson295189b2012-06-20 16:38:30 -070012891 @see
12892 @return Result of the function call
12893*/
12894WDI_Status WDI_ProcessSetMaxTxPowerReq
12895(
12896 WDI_ControlBlockType* pWDICtx,
12897 WDI_EventInfoType* pEventData
12898)
12899{
12900 WDI_SetMaxTxPowerParamsType* pwdiSetMaxTxPowerParams = NULL;
12901 WDA_SetMaxTxPowerRspCb wdiSetMaxTxPowerRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070012902 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012903 wpt_uint16 usDataOffset = 0;
12904 wpt_uint16 usSendSize = 0;
12905 tSetMaxTxPwrReq halSetMaxTxPower;
12906 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12907
12908 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012909 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012910 -------------------------------------------------------------------------*/
12911 if (( NULL == pEventData ) ||
12912 ( NULL == pEventData->pEventData ) ||
12913 ( NULL == pEventData->pCBfnc ))
12914 {
12915 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012916 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012917 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012918 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012919 }
Jeff Johnsone7245742012-09-05 17:12:55 -070012920 pwdiSetMaxTxPowerParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070012921 (WDI_SetMaxTxPowerParamsType*)pEventData->pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070012922 wdiSetMaxTxPowerRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070012923 (WDA_SetMaxTxPowerRspCb)pEventData->pCBfnc;
12924
12925 /*-----------------------------------------------------------------------
12926 Get message buffer
12927 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012928if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_MAX_TX_POWER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012929 sizeof(halSetMaxTxPower.setMaxTxPwrParams),
12930 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070012931 ( usSendSize < (usDataOffset + sizeof(halSetMaxTxPower.setMaxTxPwrParams)
Jeff Johnson295189b2012-06-20 16:38:30 -070012932)))
12933 {
12934 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012935 "Unable to get Set Max Tx Power req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070012936 pEventData, pwdiSetMaxTxPowerParams, wdiSetMaxTxPowerRspCb);
12937 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012938 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012939 }
12940
12941 wpalMemoryCopy(halSetMaxTxPower.setMaxTxPwrParams.bssId,
12942 pwdiSetMaxTxPowerParams->wdiMaxTxPowerInfo.macBSSId,
12943 WDI_MAC_ADDR_LEN);
12944
12945 wpalMemoryCopy(halSetMaxTxPower.setMaxTxPwrParams.selfStaMacAddr,
12946 pwdiSetMaxTxPowerParams->wdiMaxTxPowerInfo.macSelfStaMacAddr,
12947 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070012948 halSetMaxTxPower.setMaxTxPwrParams.power =
Jeff Johnson295189b2012-06-20 16:38:30 -070012949 pwdiSetMaxTxPowerParams->wdiMaxTxPowerInfo.ucPower;
Jeff Johnsone7245742012-09-05 17:12:55 -070012950
12951 wpalMemoryCopy( pSendBuffer+usDataOffset,
12952 &halSetMaxTxPower.setMaxTxPwrParams,
12953 sizeof(halSetMaxTxPower.setMaxTxPwrParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070012954
12955 pWDICtx->wdiReqStatusCB = pwdiSetMaxTxPowerParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012956 pWDICtx->pReqStatusUserData = pwdiSetMaxTxPowerParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012957
12958 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012959 Send Del TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012960 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012961 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12962 wdiSetMaxTxPowerRspCb, pEventData->pUserData,
12963 WDI_SET_MAX_TX_POWER_RESP);
12964
Jeff Johnson295189b2012-06-20 16:38:30 -070012965}
12966
Arif Hussaina5ebce02013-08-09 15:09:58 -070012967/*
12968 @brief Process Set Max Tx Power Per Band Request function (called when Main
12969 FSM allows it)
12970
12971 @param pWDICtx: pointer to the WLAN DAL context
12972 pEventData: pointer to the event information structure
12973
12974 @see
12975 @return Result of the function call
12976*/
12977WDI_Status WDI_ProcessSetMaxTxPowerPerBandReq
12978(
12979 WDI_ControlBlockType* pWDICtx,
12980 WDI_EventInfoType* pEventData
12981)
12982{
12983 WDI_SetMaxTxPowerPerBandParamsType* pwdiSetMaxTxPowerPerBandParams = NULL;
12984 WDA_SetMaxTxPowerPerBandRspCb wdiSetMaxTxPowerPerBandRspCb;
12985 wpt_uint8* pSendBuffer = NULL;
12986 wpt_uint16 usDataOffset = 0;
12987 wpt_uint16 usSendSize = 0;
Arif Hussainf8f080c2014-04-03 09:48:36 -070012988 tpSetMaxTxPwrPerBandParams phalSetMxTxPwrPerBand = NULL;
Arif Hussaina5ebce02013-08-09 15:09:58 -070012989 WDI_Status rValue = WDI_STATUS_SUCCESS;
12990 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12991
12992 /*-------------------------------------------------------------------------
12993 Sanity check
12994 -------------------------------------------------------------------------*/
12995 if (( NULL == pEventData ) ||
12996 ( NULL == pEventData->pEventData ) ||
12997 ( NULL == pEventData->pCBfnc ))
12998 {
12999 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
13000 "%s: Invalid parameters", __func__);
13001 WDI_ASSERT(0);
13002 return WDI_STATUS_E_FAILURE;
13003 }
13004 pwdiSetMaxTxPowerPerBandParams = \
13005 (WDI_SetMaxTxPowerPerBandParamsType*)pEventData->pEventData;
13006
13007 wdiSetMaxTxPowerPerBandRspCb = \
13008 (WDA_SetMaxTxPowerPerBandRspCb)pEventData->pCBfnc;
13009
13010 /*-----------------------------------------------------------------------
13011 Get message buffer
13012 -----------------------------------------------------------------------*/
13013
13014 rValue = WDI_GetMessageBuffer(pWDICtx,
13015 WDI_SET_MAX_TX_POWER_PER_BAND_REQ,
13016 sizeof(tSetMaxTxPwrPerBandParams),
13017 &pSendBuffer, &usDataOffset, &usSendSize);
13018
13019 if ((WDI_STATUS_SUCCESS != rValue)|| (usSendSize <
13020 (usDataOffset + sizeof(tSetMaxTxPwrPerBandParams))))
13021 {
13022 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
13023 "Unable to get Set Max Tx Power Per Band req %p %p %p",
13024 pEventData, pwdiSetMaxTxPowerPerBandParams,
13025 wdiSetMaxTxPowerPerBandRspCb);
13026 WDI_ASSERT(0);
13027 return WDI_STATUS_E_FAILURE;
13028 }
13029
13030
Arif Hussainf8f080c2014-04-03 09:48:36 -070013031 phalSetMxTxPwrPerBand = (tpSetMaxTxPwrPerBandParams)(pSendBuffer + usDataOffset);
13032 phalSetMxTxPwrPerBand->bandInfo = \
Arif Hussaina5ebce02013-08-09 15:09:58 -070013033 pwdiSetMaxTxPowerPerBandParams->wdiMaxTxPowerPerBandInfo.bandInfo;
13034
Arif Hussainf8f080c2014-04-03 09:48:36 -070013035 phalSetMxTxPwrPerBand->power = \
Arif Hussaina5ebce02013-08-09 15:09:58 -070013036 pwdiSetMaxTxPowerPerBandParams->wdiMaxTxPowerPerBandInfo.ucPower;
13037
13038 pWDICtx->wdiReqStatusCB = pwdiSetMaxTxPowerPerBandParams->wdiReqStatusCB;
13039 pWDICtx->pReqStatusUserData = pwdiSetMaxTxPowerPerBandParams->pUserData;
13040
13041 /*-------------------------------------------------------------------------
13042 Send Set Max Tx Power Per Band Request to HAL
13043 -------------------------------------------------------------------------*/
13044 return WDI_SendMsg(pWDICtx, pSendBuffer, usSendSize,
13045 wdiSetMaxTxPowerPerBandRspCb, pEventData->pUserData,
13046 WDI_SET_MAX_TX_POWER_PER_BAND_RSP);
13047}
13048
schang86c22c42013-03-13 18:41:24 -070013049/**
13050 @brief Process Set Tx Power Request function (called when Main
13051 FSM allows it)
13052
13053 @param pWDICtx: pointer to the WLAN DAL context
13054 pEventData: pointer to the event information structure
13055
13056 @see
13057 @return Result of the function call
13058*/
13059WDI_Status WDI_ProcessSetTxPowerReq
13060(
13061 WDI_ControlBlockType* pWDICtx,
13062 WDI_EventInfoType* pEventData
13063)
13064{
13065 WDI_SetTxPowerParamsType* pwdiSetTxPowerParams = NULL;
13066 WDA_SetTxPowerRspCb wdiSetTxPowerRspCb;
13067 wpt_uint8* pSendBuffer = NULL;
13068 wpt_uint16 usDataOffset = 0;
13069 wpt_uint16 usSendSize = 0;
Leo Chang9a43db92013-03-25 17:39:58 -070013070 tSetTxPwrReqParams *halSetTxPower = NULL;
schang86c22c42013-03-13 18:41:24 -070013071 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13072
13073 /*-------------------------------------------------------------------------
13074 Sanity check
13075 -------------------------------------------------------------------------*/
13076 if (( NULL == pEventData ) ||
13077 ( NULL == pEventData->pEventData ) ||
13078 ( NULL == pEventData->pCBfnc ))
13079 {
13080 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
13081 "%s: Invalid parameters", __func__);
13082 WDI_ASSERT(0);
13083 return WDI_STATUS_E_FAILURE;
13084 }
13085
13086 pwdiSetTxPowerParams =
13087 (WDI_SetTxPowerParamsType*)pEventData->pEventData;
13088 wdiSetTxPowerRspCb =
13089 (WDA_SetTxPowerRspCb)pEventData->pCBfnc;
13090
13091 /*-----------------------------------------------------------------------
13092 Get message buffer
13093 -----------------------------------------------------------------------*/
13094 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_TX_POWER_REQ,
13095 sizeof(tSetTxPwrReqParams),
13096 &pSendBuffer, &usDataOffset, &usSendSize))||
13097 ( usSendSize < (usDataOffset + sizeof(tSetTxPwrReqParams)
13098 )))
13099 {
13100 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080013101 "Unable to get Set Max Tx Power req %p %p %p",
schang86c22c42013-03-13 18:41:24 -070013102 pEventData, pwdiSetTxPowerParams, wdiSetTxPowerRspCb);
13103 WDI_ASSERT(0);
13104 return WDI_STATUS_E_FAILURE;
13105 }
13106
Leo Chang9a43db92013-03-25 17:39:58 -070013107 halSetTxPower = (tSetTxPwrReqParams *)(pSendBuffer + usDataOffset);
13108 halSetTxPower->txPower = pwdiSetTxPowerParams->wdiTxPowerInfo.ucPower;
13109 halSetTxPower->bssIdx = pwdiSetTxPowerParams->wdiTxPowerInfo.bssIdx;
schang86c22c42013-03-13 18:41:24 -070013110
13111 pWDICtx->wdiReqStatusCB = pwdiSetTxPowerParams->wdiReqStatusCB;
13112 pWDICtx->pReqStatusUserData = pwdiSetTxPowerParams->pUserData;
13113
13114 /*-------------------------------------------------------------------------
13115 Send Set Tx Power Request to HAL
13116 -------------------------------------------------------------------------*/
13117 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13118 wdiSetTxPowerRspCb, pEventData->pUserData,
13119 WDI_SET_TX_POWER_RESP);
13120}
Jeff Johnson295189b2012-06-20 16:38:30 -070013121
13122/**
13123 @brief Process P2P Notice Of Absence Request function (called when Main FSM
13124 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013125
13126 @param pWDICtx: pointer to the WLAN DAL context
13127 pEventData: pointer to the event information structure
13128
Jeff Johnson295189b2012-06-20 16:38:30 -070013129 @see
13130 @return Result of the function call
13131*/
13132WDI_Status
13133WDI_ProcessP2PGONOAReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013134(
Jeff Johnson295189b2012-06-20 16:38:30 -070013135 WDI_ControlBlockType* pWDICtx,
13136 WDI_EventInfoType* pEventData
13137)
13138{
13139 WDI_SetP2PGONOAReqParamsType* pwdiP2PGONOAReqParams;
13140 WDI_SetP2PGONOAReqParamsRspCb wdiP2PGONOAReqRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070013141 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013142 wpt_uint16 usDataOffset = 0;
13143 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070013144 tSetP2PGONOAParams halSetP2PGONOAParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070013145 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13146
13147 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013148 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013149 -------------------------------------------------------------------------*/
13150 if (( NULL == pEventData ) ||
13151 ( NULL == pEventData->pEventData) ||
13152 ( NULL == pEventData->pCBfnc))
13153 {
13154 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013155 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013156 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013157 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013158 }
13159
Jeff Johnsone7245742012-09-05 17:12:55 -070013160 pwdiP2PGONOAReqParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070013161 (WDI_SetP2PGONOAReqParamsType*)pEventData->pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070013162 wdiP2PGONOAReqRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070013163 (WDI_SetP2PGONOAReqParamsRspCb)pEventData->pCBfnc;
13164 /*-----------------------------------------------------------------------
13165 Get message buffer
13166 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013167 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
13168 WDI_P2P_GO_NOTICE_OF_ABSENCE_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013169 sizeof(halSetP2PGONOAParams),
13170 &pSendBuffer, &usDataOffset, &usSendSize))||
13171 ( usSendSize < (usDataOffset + sizeof(halSetP2PGONOAParams) )))
13172 {
13173 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080013174 "Unable to get send buffer in set P2P GO NOA REQ %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070013175 pEventData, pwdiP2PGONOAReqParams, wdiP2PGONOAReqRspCb);
13176 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013177 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013178 }
13179
Jeff Johnsone7245742012-09-05 17:12:55 -070013180 halSetP2PGONOAParams.opp_ps =
Jeff Johnson295189b2012-06-20 16:38:30 -070013181 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.ucOpp_ps;
Jeff Johnsone7245742012-09-05 17:12:55 -070013182 halSetP2PGONOAParams.ctWindow =
Jeff Johnson295189b2012-06-20 16:38:30 -070013183 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.uCtWindow;
13184 halSetP2PGONOAParams.count = pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.ucCount;
Jeff Johnsone7245742012-09-05 17:12:55 -070013185 halSetP2PGONOAParams.duration =
Jeff Johnson295189b2012-06-20 16:38:30 -070013186 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.uDuration;
Jeff Johnsone7245742012-09-05 17:12:55 -070013187 halSetP2PGONOAParams.interval =
Jeff Johnson295189b2012-06-20 16:38:30 -070013188 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.uInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070013189 halSetP2PGONOAParams.single_noa_duration =
Jeff Johnson295189b2012-06-20 16:38:30 -070013190 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.uSingle_noa_duration;
Jeff Johnsone7245742012-09-05 17:12:55 -070013191 halSetP2PGONOAParams.psSelection =
Jeff Johnson295189b2012-06-20 16:38:30 -070013192 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.ucPsSelection;
13193
Jeff Johnsone7245742012-09-05 17:12:55 -070013194 wpalMemoryCopy( pSendBuffer+usDataOffset,
13195 &halSetP2PGONOAParams,
13196 sizeof(halSetP2PGONOAParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070013197
13198 pWDICtx->wdiReqStatusCB = pwdiP2PGONOAReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013199 pWDICtx->pReqStatusUserData = pwdiP2PGONOAReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013200
13201 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013202 Send Update Probe Resp Template Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013203 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013204 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13205 wdiP2PGONOAReqRspCb, pEventData->pUserData,
13206 WDI_P2P_GO_NOTICE_OF_ABSENCE_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013207}/*WDI_ProcessP2PGONOAReq*/
13208
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053013209#ifdef FEATURE_WLAN_TDLS
13210
13211/**
13212 @brief Process P2P Notice Of Absence Request function (called when Main FSM
13213 allows it)
13214
13215 @param pWDICtx: pointer to the WLAN DAL context
13216 pEventData: pointer to the event information structure
13217
13218 @see
13219 @return Result of the function call
13220*/
13221WDI_Status
13222WDI_ProcessTdlsLinkEstablishReq
13223(
13224 WDI_ControlBlockType* pWDICtx,
13225 WDI_EventInfoType* pEventData
13226)
13227{
13228 WDI_SetTDLSLinkEstablishReqParamsType* pwdiTDLSLinkEstablishReqParams;
13229 WDI_SetTDLSLinkEstablishReqParamsRspCb wdiTDLSLinkEstablishReqRspCb;
13230 wpt_uint8* pSendBuffer = NULL;
13231 wpt_uint16 usDataOffset = 0;
13232 wpt_uint16 usSendSize = 0;
13233
13234 tTDLSLinkEstablishedType halSetTDLSLinkEstablishParams;
13235 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13236
13237 /*-------------------------------------------------------------------------
13238 Sanity check
13239 -------------------------------------------------------------------------*/
13240 if (( NULL == pEventData ) ||
13241 ( NULL == pEventData->pEventData) ||
13242 ( NULL == pEventData->pCBfnc))
13243 {
13244 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13245 "%s: Invalid parameters", __func__);
13246 WDI_ASSERT(0);
13247 return WDI_STATUS_E_FAILURE;
13248 }
13249 pwdiTDLSLinkEstablishReqParams =
13250 (WDI_SetTDLSLinkEstablishReqParamsType*)pEventData->pEventData;
13251 wdiTDLSLinkEstablishReqRspCb =
13252 (WDI_SetTDLSLinkEstablishReqParamsRspCb)pEventData->pCBfnc;
13253
13254
13255 /*-----------------------------------------------------------------------
13256 Get message buffer
13257 -----------------------------------------------------------------------*/
13258 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
13259 WDI_TDLS_LINK_ESTABLISH_REQ,
13260 sizeof(halSetTDLSLinkEstablishParams),
13261 &pSendBuffer, &usDataOffset, &usSendSize))||
13262 ( usSendSize < (usDataOffset + sizeof(halSetTDLSLinkEstablishParams) )))
13263 {
13264 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080013265 "Unable to get send buffer in set P2P GO NOA REQ %p %p %p",
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053013266 pEventData, pwdiTDLSLinkEstablishReqParams, wdiTDLSLinkEstablishReqRspCb);
13267 WDI_ASSERT(0);
13268 return WDI_STATUS_E_FAILURE;
13269 }
13270
13271 halSetTDLSLinkEstablishParams.staIdx =
13272 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uStaIdx;
13273 halSetTDLSLinkEstablishParams.bIsResponder =
13274 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uIsResponder;
13275 halSetTDLSLinkEstablishParams.acVOUAPSDFlag =
13276 (pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uUapsdQueues & 0x08) >> 3;
13277 halSetTDLSLinkEstablishParams.acVIUAPSDFlag =
13278 (pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uUapsdQueues & 0x04) >> 2;
13279 halSetTDLSLinkEstablishParams.acBKUAPSDFlag =
13280 (pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uUapsdQueues & 0x02) >> 1;
13281 halSetTDLSLinkEstablishParams.acBEUAPSDFlag =
13282 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uUapsdQueues & 0x01;
13283 halSetTDLSLinkEstablishParams.aAck = 0;
13284 halSetTDLSLinkEstablishParams.maxServicePeriodLength = (pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uMaxSp & 0x03);
13285 halSetTDLSLinkEstablishParams.moreDataAck = 0;
13286 halSetTDLSLinkEstablishParams.TPUBufferStaSupport = pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uIsBufSta;
Naresh Jayaramc7cbd782014-02-04 17:38:23 +053013287 halSetTDLSLinkEstablishParams.tdlsOffChannelSupport =
13288 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uIsOffChannelSupported;
13289
13290 wpalMemoryCopy( halSetTDLSLinkEstablishParams.validChannels,
13291 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.validChannels,
13292 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.validChannelsLen);
13293 halSetTDLSLinkEstablishParams.validChannelsLen =
13294 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.validChannelsLen;
13295
13296 wpalMemoryCopy( halSetTDLSLinkEstablishParams.validOperClasses,
13297 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.validOperClasses,
13298 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.validOperClassesLen);
13299 halSetTDLSLinkEstablishParams.validOperClassesLen =
13300 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.validOperClassesLen;
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053013301
13302 wpalMemoryCopy( pSendBuffer+usDataOffset,
13303 &halSetTDLSLinkEstablishParams,
13304 sizeof(halSetTDLSLinkEstablishParams));
13305
13306 pWDICtx->wdiReqStatusCB = pwdiTDLSLinkEstablishReqParams->wdiReqStatusCB;
13307 pWDICtx->pReqStatusUserData = pwdiTDLSLinkEstablishReqParams->pUserData;
13308
13309 /*-------------------------------------------------------------------------
13310 Send Update Probe Resp Template Request to HAL
13311 -------------------------------------------------------------------------*/
13312 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13313 wdiTDLSLinkEstablishReqRspCb, pEventData->pUserData,
13314 WDI_TDLS_LINK_ESTABLISH_REQ_RESP);
13315 return 0;
13316}/*WDI_ProcessTdlsLinkEstablishReq*/
13317
13318
13319#endif
13320
Jeff Johnson295189b2012-06-20 16:38:30 -070013321
13322
13323/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013324 @brief Function to handle the ack from DXE once the power
Jeff Johnson295189b2012-06-20 16:38:30 -070013325 state is set.
Jeff Johnsone7245742012-09-05 17:12:55 -070013326 @param None
13327
13328 @see
13329 @return void
Jeff Johnson295189b2012-06-20 16:38:30 -070013330*/
13331void
13332WDI_SetPowerStateCb
13333(
13334 wpt_status status,
13335 unsigned int dxePhyAddr,
13336 void *pContext
13337)
13338{
13339 wpt_status wptStatus;
13340 WDI_ControlBlockType *pCB = NULL;
13341 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013342 /*
13343 * Trigger the event to bring the Enter BMPS req function to come
13344 * out of wait
Jeff Johnson295189b2012-06-20 16:38:30 -070013345*/
13346 if( NULL != pContext )
13347 {
Jeff Johnsone7245742012-09-05 17:12:55 -070013348 pCB = (WDI_ControlBlockType *)pContext;
Jeff Johnson295189b2012-06-20 16:38:30 -070013349 }
13350 else
13351 {
Jeff Johnsone7245742012-09-05 17:12:55 -070013352 //put an error msg
Jeff Johnson295189b2012-06-20 16:38:30 -070013353 pCB = &gWDICb;
13354 }
Mihir Shetea4306052014-03-25 00:02:54 +053013355
13356 if(eWLAN_PAL_STATUS_SUCCESS == status )
13357 {
13358 pCB->dxeRingsEmpty = eWLAN_PAL_TRUE;
13359 }
13360 else
13361 {
13362 pCB->dxeRingsEmpty = eWLAN_PAL_FALSE;
13363 }
Jeff Johnson295189b2012-06-20 16:38:30 -070013364 pCB->dxePhyAddr = dxePhyAddr;
13365 wptStatus = wpalEventSet(&pCB->setPowerStateEvent);
13366 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
13367 {
13368 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13369 "Failed to set an event");
13370
Jeff Johnsone7245742012-09-05 17:12:55 -070013371 WDI_ASSERT(0);
Jeff Johnson295189b2012-06-20 16:38:30 -070013372 }
13373 return;
13374}
13375
13376
13377/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013378 @brief Process Enter IMPS Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070013379 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013380
13381 @param pWDICtx: pointer to the WLAN DAL context
13382 pEventData: pointer to the event information structure
13383
Jeff Johnson295189b2012-06-20 16:38:30 -070013384 @see
13385 @return Result of the function call
13386*/
13387WDI_Status
13388WDI_ProcessEnterImpsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013389(
Jeff Johnson295189b2012-06-20 16:38:30 -070013390 WDI_ControlBlockType* pWDICtx,
13391 WDI_EventInfoType* pEventData
13392)
13393{
Jeff Johnson43971f52012-07-17 12:26:56 -070013394 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070013395 WDI_EnterImpsRspCb wdiEnterImpsRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013396 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013397 wpt_uint16 usDataOffset = 0;
13398 wpt_uint16 usSendSize = 0;
Mihir Shetea4306052014-03-25 00:02:54 +053013399 WDI_EnterImpsReqParamsType* pwdiEnterImpsReqParams = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013400 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13401
13402 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013403 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013404 -------------------------------------------------------------------------*/
Mihir Shetea4306052014-03-25 00:02:54 +053013405 if ((NULL == pEventData ) ||
13406 (NULL == (wdiEnterImpsRspCb = (WDI_EnterImpsRspCb)pEventData->pCBfnc)) ||
13407 (NULL == (pwdiEnterImpsReqParams =
13408 (WDI_EnterImpsReqParamsType*)pEventData->pEventData)))
Jeff Johnson295189b2012-06-20 16:38:30 -070013409 {
13410 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013411 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013412 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080013413 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070013414 }
13415
13416 /*-----------------------------------------------------------------------
13417 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013418 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013419 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013420 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ENTER_IMPS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013421 0,
13422 &pSendBuffer, &usDataOffset, &usSendSize))||
13423 ( usSendSize < (usDataOffset )))
13424 {
13425 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080013426 "Unable to get send buffer in Enter IMPS req %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070013427 pEventData, wdiEnterImpsRspCb);
13428 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080013429 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070013430 }
13431
13432 /* Reset the event to be not signalled */
Jeff Johnson43971f52012-07-17 12:26:56 -070013433 wptStatus = wpalEventReset(&pWDICtx->setPowerStateEvent);
13434 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070013435 {
13436 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13437 "WDI Init failed to reset an event");
13438
Jeff Johnsone7245742012-09-05 17:12:55 -070013439 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080013440 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -070013441 }
13442
13443 // notify DTS that we are entering IMPS
Ravali85acf6b2012-12-12 14:01:38 -080013444 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_IMPS, WDI_SetPowerStateCb);
13445 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus ) {
13446 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain9a5d5382013-11-17 22:05:35 -080013447 "WDTS_SetPowerState returned with status %d when trying to notify DTS that host is entering IMPS", wptStatus);
Ravali85acf6b2012-12-12 14:01:38 -080013448 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080013449 goto fail;
Ravali85acf6b2012-12-12 14:01:38 -080013450 }
Jeff Johnson295189b2012-06-20 16:38:30 -070013451
13452 /*
Jeff Johnsone7245742012-09-05 17:12:55 -070013453 * Wait for the event to be set once the ACK comes back from DXE
Jeff Johnson295189b2012-06-20 16:38:30 -070013454 */
Jeff Johnson43971f52012-07-17 12:26:56 -070013455 wptStatus = wpalEventWait(&pWDICtx->setPowerStateEvent,
13456 WDI_SET_POWER_STATE_TIMEOUT);
13457 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070013458 {
13459 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13460 "WDI Init failed to wait on an event");
13461
Jeff Johnsone7245742012-09-05 17:12:55 -070013462 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080013463 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -070013464 }
13465
Mihir Shetea4306052014-03-25 00:02:54 +053013466 if (pWDICtx->dxeRingsEmpty == eWLAN_PAL_FALSE)
13467 {
13468 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
13469 "%s: DXE Rings not empty, cannot enter IMPS",__func__);
13470
13471 goto fail;
13472 }
13473
13474 pWDICtx->wdiReqStatusCB = pwdiEnterImpsReqParams->wdiReqStatusCB;
13475 pWDICtx->pReqStatusUserData = pwdiEnterImpsReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013476 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013477 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013478 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013479 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13480 wdiEnterImpsRspCb, pEventData->pUserData, WDI_ENTER_IMPS_RESP);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080013481
13482fail:
13483 // Release the message buffer so we don't leak
13484 wpalMemoryFree(pSendBuffer);
13485
13486failRequest:
13487 //WDA should have failure check to avoid the memory leak
13488 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013489}/*WDI_ProcessEnterImpsReq*/
13490
13491/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013492 @brief Process Exit IMPS Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070013493 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013494
13495 @param pWDICtx: pointer to the WLAN DAL context
13496 pEventData: pointer to the event information structure
13497
Jeff Johnson295189b2012-06-20 16:38:30 -070013498 @see
13499 @return Result of the function call
13500*/
13501WDI_Status
13502WDI_ProcessExitImpsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013503(
Jeff Johnson295189b2012-06-20 16:38:30 -070013504 WDI_ControlBlockType* pWDICtx,
13505 WDI_EventInfoType* pEventData
13506)
13507{
13508 WDI_ExitImpsRspCb wdiExitImpsRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013509 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013510 wpt_uint16 usDataOffset = 0;
13511 wpt_uint16 usSendSize = 0;
13512 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13513
13514 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013515 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013516 -------------------------------------------------------------------------*/
13517 if (( NULL == pEventData ) ||
13518 ( NULL == (wdiExitImpsRspCb = (WDI_ExitImpsRspCb)pEventData->pCBfnc)))
13519 {
13520 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013521 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013522 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013523 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013524 }
13525
13526 /*-----------------------------------------------------------------------
13527 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013528 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013529 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013530 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_EXIT_IMPS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013531 0,
13532 &pSendBuffer, &usDataOffset, &usSendSize))||
13533 ( usSendSize < (usDataOffset )))
13534 {
13535 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080013536 "Unable to get send buffer in Exit IMPS req %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070013537 pEventData, wdiExitImpsRspCb);
13538 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013539 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013540 }
13541
13542 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013543 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013544 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013545 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13546 wdiExitImpsRspCb, pEventData->pUserData, WDI_EXIT_IMPS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013547}/*WDI_ProcessExitImpsReq*/
13548
13549/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013550 @brief Process Enter BMPS Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070013551 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013552
13553 @param pWDICtx: pointer to the WLAN DAL context
13554 pEventData: pointer to the event information structure
13555
Jeff Johnson295189b2012-06-20 16:38:30 -070013556 @see
13557 @return Result of the function call
13558*/
13559WDI_Status
13560WDI_ProcessEnterBmpsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013561(
Jeff Johnson295189b2012-06-20 16:38:30 -070013562 WDI_ControlBlockType* pWDICtx,
13563 WDI_EventInfoType* pEventData
13564)
13565{
13566 WDI_EnterBmpsReqParamsType* pwdiEnterBmpsReqParams = NULL;
13567 WDI_EnterBmpsRspCb wdiEnterBmpsRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013568 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013569 wpt_uint16 usDataOffset = 0;
13570 wpt_uint16 usSendSize = 0;
13571 tHalEnterBmpsReqParams enterBmpsReq;
Jeff Johnson43971f52012-07-17 12:26:56 -070013572 wpt_status wptStatus;
13573
Jeff Johnson295189b2012-06-20 16:38:30 -070013574 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13575
13576 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013577 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013578 -------------------------------------------------------------------------*/
13579 if (( NULL == pEventData ) ||
13580 ( NULL == (pwdiEnterBmpsReqParams = (WDI_EnterBmpsReqParamsType*)pEventData->pEventData)) ||
13581 ( NULL == (wdiEnterBmpsRspCb = (WDI_EnterBmpsRspCb)pEventData->pCBfnc)))
13582 {
13583 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013584 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013585 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080013586 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070013587 }
13588
13589 /*-----------------------------------------------------------------------
13590 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013591 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013592 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013593 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ENTER_BMPS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013594 sizeof(enterBmpsReq),
13595 &pSendBuffer, &usDataOffset, &usSendSize))||
13596 ( usSendSize < (usDataOffset + sizeof(enterBmpsReq) )))
13597 {
13598 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080013599 "Unable to get send buffer in Enter BMPS req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070013600 pEventData, pwdiEnterBmpsReqParams, wdiEnterBmpsRspCb);
13601 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080013602 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070013603 }
13604
13605 /* Reset the event to be not signalled */
Jeff Johnson43971f52012-07-17 12:26:56 -070013606 wptStatus = wpalEventReset(&pWDICtx->setPowerStateEvent);
13607 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070013608 {
13609 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13610 "WDI Init failed to reset an event");
13611
Jeff Johnsone7245742012-09-05 17:12:55 -070013612 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080013613 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -070013614 }
13615
13616 // notify DTS that we are entering BMPS
Ravali85acf6b2012-12-12 14:01:38 -080013617 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_BMPS, WDI_SetPowerStateCb);
13618 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
13619 {
13620 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain9a5d5382013-11-17 22:05:35 -080013621 "WDTS_SetPowerState returned with status %d when trying to notify DTS that we are entering BMPS", wptStatus);
Ravali85acf6b2012-12-12 14:01:38 -080013622 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080013623 goto fail;
Ravali85acf6b2012-12-12 14:01:38 -080013624 }
Jeff Johnson295189b2012-06-20 16:38:30 -070013625
13626/*
Jeff Johnsone7245742012-09-05 17:12:55 -070013627 * Wait for the event to be set once the ACK comes back from DXE
Jeff Johnson295189b2012-06-20 16:38:30 -070013628 */
Jeff Johnson43971f52012-07-17 12:26:56 -070013629 wptStatus = wpalEventWait(&pWDICtx->setPowerStateEvent,
13630 WDI_SET_POWER_STATE_TIMEOUT);
13631 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070013632 {
13633 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13634 "WDI Init failed to wait on an event");
13635
Jeff Johnsone7245742012-09-05 17:12:55 -070013636 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080013637 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -070013638 }
13639
13640 pWDICtx->bInBmps = eWLAN_PAL_TRUE;
13641
13642 enterBmpsReq.bssIdx = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.ucBssIdx;
13643 enterBmpsReq.tbtt = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.uTbtt;
13644 enterBmpsReq.dtimCount = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.ucDtimCount;
13645 enterBmpsReq.dtimPeriod = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.ucDtimPeriod;
13646
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -080013647 // For ESE and 11R Roaming
Jeff Johnson295189b2012-06-20 16:38:30 -070013648 enterBmpsReq.rssiFilterPeriod = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.rssiFilterPeriod;
13649 enterBmpsReq.numBeaconPerRssiAverage = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.numBeaconPerRssiAverage;
13650 enterBmpsReq.bRssiFilterEnable = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.bRssiFilterEnable;
13651
13652 wpalMemoryCopy( pSendBuffer+usDataOffset,
13653 &enterBmpsReq,
13654 sizeof(enterBmpsReq));
13655
13656 pWDICtx->wdiReqStatusCB = pwdiEnterBmpsReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013657 pWDICtx->pReqStatusUserData = pwdiEnterBmpsReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013658
13659 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013660 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013661 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013662 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13663 wdiEnterBmpsRspCb, pEventData->pUserData, WDI_ENTER_BMPS_RESP);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080013664
13665fail:
13666 // Release the message buffer so we don't leak
13667 wpalMemoryFree(pSendBuffer);
13668
13669failRequest:
13670 //WDA should have failure check to avoid the memory leak
13671 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013672}/*WDI_ProcessEnterBmpsReq*/
13673
13674/**
13675 @brief Process Exit BMPS Request function (called when Main FSM
13676 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013677
13678 @param pWDICtx: pointer to the WLAN DAL context
13679 pEventData: pointer to the event information structure
13680
Jeff Johnson295189b2012-06-20 16:38:30 -070013681 @see
13682 @return Result of the function call
13683*/
13684WDI_Status
13685WDI_ProcessExitBmpsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013686(
Jeff Johnson295189b2012-06-20 16:38:30 -070013687 WDI_ControlBlockType* pWDICtx,
13688 WDI_EventInfoType* pEventData
13689)
13690{
13691 WDI_ExitBmpsReqParamsType* pwdiExitBmpsReqParams = NULL;
13692 WDI_ExitBmpsRspCb wdiExitBmpsRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013693 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013694 wpt_uint16 usDataOffset = 0;
13695 wpt_uint16 usSendSize = 0;
13696 tHalExitBmpsReqParams exitBmpsReq;
13697 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13698
13699 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013700 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013701 -------------------------------------------------------------------------*/
13702 if (( NULL == pEventData ) ||
13703 ( NULL == (pwdiExitBmpsReqParams = (WDI_ExitBmpsReqParamsType*)pEventData->pEventData)) ||
13704 ( NULL == (wdiExitBmpsRspCb = (WDI_ExitBmpsRspCb)pEventData->pCBfnc)))
13705 {
13706 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013707 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013708 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013709 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013710 }
13711
13712 /*-----------------------------------------------------------------------
13713 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013714 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013715 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013716 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_EXIT_BMPS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013717 sizeof(exitBmpsReq),
13718 &pSendBuffer, &usDataOffset, &usSendSize))||
13719 ( usSendSize < (usDataOffset + sizeof(exitBmpsReq) )))
13720 {
13721 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080013722 "Unable to get send buffer in Exit BMPS req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070013723 pEventData, pwdiExitBmpsReqParams, wdiExitBmpsRspCb);
13724 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013725 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013726 }
13727 exitBmpsReq.sendDataNull = pwdiExitBmpsReqParams->wdiExitBmpsInfo.ucSendDataNull;
13728
Jeff Johnsone7245742012-09-05 17:12:55 -070013729 exitBmpsReq.bssIdx = pwdiExitBmpsReqParams->wdiExitBmpsInfo.bssIdx;
13730
Jeff Johnson295189b2012-06-20 16:38:30 -070013731 wpalMemoryCopy( pSendBuffer+usDataOffset,
13732 &exitBmpsReq,
13733 sizeof(exitBmpsReq));
13734
13735 pWDICtx->wdiReqStatusCB = pwdiExitBmpsReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013736 pWDICtx->pReqStatusUserData = pwdiExitBmpsReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013737
13738 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013739 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013740 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013741 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13742 wdiExitBmpsRspCb, pEventData->pUserData, WDI_EXIT_BMPS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013743}/*WDI_ProcessExitBmpsReq*/
13744
13745/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013746 @brief Process Enter UAPSD Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070013747 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013748
13749 @param pWDICtx: pointer to the WLAN DAL context
13750 pEventData: pointer to the event information structure
13751
Jeff Johnson295189b2012-06-20 16:38:30 -070013752 @see
13753 @return Result of the function call
13754*/
13755WDI_Status
13756WDI_ProcessEnterUapsdReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013757(
Jeff Johnson295189b2012-06-20 16:38:30 -070013758 WDI_ControlBlockType* pWDICtx,
13759 WDI_EventInfoType* pEventData
13760)
13761{
13762 WDI_EnterUapsdReqParamsType* pwdiEnterUapsdReqParams = NULL;
13763 WDI_EnterUapsdRspCb wdiEnterUapsdRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013764 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013765 wpt_uint16 usDataOffset = 0;
13766 wpt_uint16 usSendSize = 0;
13767 tUapsdReqParams enterUapsdReq;
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 == (pwdiEnterUapsdReqParams = (WDI_EnterUapsdReqParamsType*)pEventData->pEventData)) ||
13775 ( NULL == (wdiEnterUapsdRspCb = (WDI_EnterUapsdRspCb)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
Jeff Johnsone7245742012-09-05 17:12:55 -070013785 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013786 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013787 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ENTER_UAPSD_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013788 sizeof(enterUapsdReq),
13789 &pSendBuffer, &usDataOffset, &usSendSize))||
13790 ( usSendSize < (usDataOffset + sizeof(enterUapsdReq) )))
13791 {
13792 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080013793 "Unable to get send buffer in Enter UAPSD req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070013794 pEventData, pwdiEnterUapsdReqParams, wdiEnterUapsdRspCb);
13795 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013796 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013797 }
13798
13799 enterUapsdReq.beDeliveryEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucBeDeliveryEnabled;
13800 enterUapsdReq.beTriggerEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucBeTriggerEnabled;
13801 enterUapsdReq.bkDeliveryEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucBkDeliveryEnabled;
13802 enterUapsdReq.bkTriggerEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucBkTriggerEnabled;
13803 enterUapsdReq.viDeliveryEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucViDeliveryEnabled;
13804 enterUapsdReq.viTriggerEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucViTriggerEnabled;
13805 enterUapsdReq.voDeliveryEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucVoDeliveryEnabled;
13806 enterUapsdReq.voTriggerEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucVoTriggerEnabled;
Jeff Johnsone7245742012-09-05 17:12:55 -070013807 enterUapsdReq.bssIdx = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.bssIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070013808
Jeff Johnsone7245742012-09-05 17:12:55 -070013809 wpalMemoryCopy( pSendBuffer+usDataOffset,
13810 &enterUapsdReq,
13811 sizeof(enterUapsdReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070013812
13813 pWDICtx->wdiReqStatusCB = pwdiEnterUapsdReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013814 pWDICtx->pReqStatusUserData = pwdiEnterUapsdReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013815
13816 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013817 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013818 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013819 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13820 wdiEnterUapsdRspCb, pEventData->pUserData, WDI_ENTER_UAPSD_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013821}/*WDI_ProcessEnterUapsdReq*/
13822
13823/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013824 @brief Process Exit UAPSD Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070013825 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013826
13827 @param pWDICtx: pointer to the WLAN DAL context
13828 pEventData: pointer to the event information structure
13829
Jeff Johnson295189b2012-06-20 16:38:30 -070013830 @see
13831 @return Result of the function call
13832*/
13833WDI_Status
13834WDI_ProcessExitUapsdReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013835(
Jeff Johnson295189b2012-06-20 16:38:30 -070013836 WDI_ControlBlockType* pWDICtx,
13837 WDI_EventInfoType* pEventData
13838)
13839{
13840 WDI_ExitUapsdRspCb wdiExitUapsdRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013841 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013842 wpt_uint16 usDataOffset = 0;
13843 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013844 WDI_ExitUapsdReqParamsType *pExitUapsdparams;
13845 wpt_uint8 bssIdx = 0;
13846
Jeff Johnson295189b2012-06-20 16:38:30 -070013847 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13848
13849 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013850 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013851 -------------------------------------------------------------------------*/
13852 if (( NULL == pEventData ) ||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013853 ( NULL == (pExitUapsdparams = (WDI_ExitUapsdReqParamsType *)pEventData->pEventData)) ||
Jeff Johnson295189b2012-06-20 16:38:30 -070013854 ( NULL == (wdiExitUapsdRspCb = (WDI_ExitUapsdRspCb)pEventData->pCBfnc)))
13855 {
13856 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013857 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013858 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013859 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013860 }
13861
13862 /*-----------------------------------------------------------------------
13863 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013864 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013865 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013866 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_EXIT_UAPSD_REQ,
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013867 sizeof(wpt_uint8),
Jeff Johnson295189b2012-06-20 16:38:30 -070013868 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013869 ( usSendSize < (usDataOffset + sizeof(wpt_uint8))))
Jeff Johnson295189b2012-06-20 16:38:30 -070013870 {
13871 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080013872 "Unable to get send buffer in Exit UAPSD req %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070013873 pEventData, wdiExitUapsdRspCb);
13874 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013875 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013876 }
13877
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013878 bssIdx = pExitUapsdparams->wdiExitUapsdInfo.bssIdx;
13879
13880 wpalMemoryCopy( pSendBuffer+usDataOffset,
13881 &bssIdx,
13882 sizeof(wpt_uint8));
13883
13884 pWDICtx->wdiReqStatusCB = pExitUapsdparams->wdiReqStatusCB;
13885 pWDICtx->pReqStatusUserData = pExitUapsdparams->pUserData;
13886
Jeff Johnson295189b2012-06-20 16:38:30 -070013887 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013888 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013889 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013890 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13891 wdiExitUapsdRspCb, pEventData->pUserData, WDI_EXIT_UAPSD_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013892}/*WDI_ProcessExitUapsdReq*/
13893
13894/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013895 @brief Process Set UAPSD params Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070013896 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013897
13898 @param pWDICtx: pointer to the WLAN DAL context
13899 pEventData: pointer to the event information structure
13900
Jeff Johnson295189b2012-06-20 16:38:30 -070013901 @see
13902 @return Result of the function call
13903*/
13904WDI_Status
13905WDI_ProcessSetUapsdAcParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013906(
Jeff Johnson295189b2012-06-20 16:38:30 -070013907 WDI_ControlBlockType* pWDICtx,
13908 WDI_EventInfoType* pEventData
13909)
13910{
13911 WDI_SetUapsdAcParamsReqParamsType* pwdiSetUapsdAcParams = NULL;
13912 WDI_SetUapsdAcParamsCb wdiSetUapsdAcParamsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013913 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013914 wpt_uint16 usDataOffset = 0;
13915 wpt_uint16 usSendSize = 0;
13916 tUapsdInfo uapsdAcParamsReq;
13917 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13918
13919 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013920 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013921 -------------------------------------------------------------------------*/
13922 if (( NULL == pEventData ) ||
13923 ( NULL == (pwdiSetUapsdAcParams = (WDI_SetUapsdAcParamsReqParamsType*)pEventData->pEventData)) ||
13924 ( NULL == (wdiSetUapsdAcParamsCb = (WDI_SetUapsdAcParamsCb)pEventData->pCBfnc)))
13925 {
13926 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013927 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013928 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013929 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013930 }
13931
13932 /*-----------------------------------------------------------------------
13933 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013934 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013935 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013936 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_UAPSD_PARAM_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013937 sizeof(uapsdAcParamsReq),
13938 &pSendBuffer, &usDataOffset, &usSendSize))||
13939 ( usSendSize < (usDataOffset + sizeof(uapsdAcParamsReq) )))
13940 {
13941 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080013942 "Unable to get send buffer in Set UAPSD params req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070013943 pEventData, pwdiSetUapsdAcParams, wdiSetUapsdAcParamsCb);
13944 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013945 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013946 }
13947
13948 uapsdAcParamsReq.ac = pwdiSetUapsdAcParams->wdiUapsdInfo.ucAc;
13949 uapsdAcParamsReq.staidx = pwdiSetUapsdAcParams->wdiUapsdInfo.ucSTAIdx;
13950 uapsdAcParamsReq.up = pwdiSetUapsdAcParams->wdiUapsdInfo.ucUp;
13951 uapsdAcParamsReq.delayInterval = pwdiSetUapsdAcParams->wdiUapsdInfo.uDelayInterval;
13952 uapsdAcParamsReq.srvInterval = pwdiSetUapsdAcParams->wdiUapsdInfo.uSrvInterval;
13953 uapsdAcParamsReq.susInterval = pwdiSetUapsdAcParams->wdiUapsdInfo.uSusInterval;
13954
Jeff Johnsone7245742012-09-05 17:12:55 -070013955 wpalMemoryCopy( pSendBuffer+usDataOffset,
13956 &uapsdAcParamsReq,
13957 sizeof(uapsdAcParamsReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070013958
13959 pWDICtx->wdiReqStatusCB = pwdiSetUapsdAcParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013960 pWDICtx->pReqStatusUserData = pwdiSetUapsdAcParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013961
13962 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013963 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013964 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013965 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13966 wdiSetUapsdAcParamsCb, pEventData->pUserData, WDI_SET_UAPSD_PARAM_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013967}/*WDI_ProcessSetUapsdAcParamsReq*/
13968
13969/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013970 @brief Process update UAPSD params Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070013971 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013972
13973 @param pWDICtx: pointer to the WLAN DAL context
13974 pEventData: pointer to the event information structure
13975
Jeff Johnson295189b2012-06-20 16:38:30 -070013976 @see
13977 @return Result of the function call
13978*/
13979WDI_Status
13980WDI_ProcessUpdateUapsdParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013981(
Jeff Johnson295189b2012-06-20 16:38:30 -070013982 WDI_ControlBlockType* pWDICtx,
13983 WDI_EventInfoType* pEventData
13984)
13985{
13986 WDI_UpdateUapsdReqParamsType* pwdiUpdateUapsdReqParams = NULL;
13987 WDI_UpdateUapsdParamsCb wdiUpdateUapsdParamsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013988 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013989 wpt_uint16 usDataOffset = 0;
13990 wpt_uint16 usSendSize = 0;
13991 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13992
13993 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013994 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013995 -------------------------------------------------------------------------*/
13996 if (( NULL == pEventData ) ||
13997 ( NULL == (pwdiUpdateUapsdReqParams = (WDI_UpdateUapsdReqParamsType*)pEventData->pEventData)) ||
13998 ( NULL == (wdiUpdateUapsdParamsCb = (WDI_UpdateUapsdParamsCb)pEventData->pCBfnc)))
13999 {
14000 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014001 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014002 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014003 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014004 }
14005
14006 /*-----------------------------------------------------------------------
14007 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014008 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014009 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014010 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_UAPSD_PARAM_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014011 sizeof(pwdiUpdateUapsdReqParams->wdiUpdateUapsdInfo),
14012 &pSendBuffer, &usDataOffset, &usSendSize))||
14013 ( usSendSize < (usDataOffset + sizeof(pwdiUpdateUapsdReqParams->wdiUpdateUapsdInfo) )))
14014 {
14015 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014016 "Unable to get send buffer in Update UAPSD params req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014017 pEventData, pwdiUpdateUapsdReqParams, wdiUpdateUapsdParamsCb);
14018 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014019 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014020 }
14021
Jeff Johnsone7245742012-09-05 17:12:55 -070014022 wpalMemoryCopy( pSendBuffer+usDataOffset,
14023 &pwdiUpdateUapsdReqParams->wdiUpdateUapsdInfo,
14024 sizeof(pwdiUpdateUapsdReqParams->wdiUpdateUapsdInfo));
Jeff Johnson295189b2012-06-20 16:38:30 -070014025
14026 pWDICtx->wdiReqStatusCB = pwdiUpdateUapsdReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014027 pWDICtx->pReqStatusUserData = pwdiUpdateUapsdReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014028
14029 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014030 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014031 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014032 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14033 wdiUpdateUapsdParamsCb, pEventData->pUserData, WDI_UPDATE_UAPSD_PARAM_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070014034}/*WDI_ProcessUpdateUapsdParamsReq*/
14035
14036/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014037 @brief Process Configure RXP filter Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070014038 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014039
14040 @param pWDICtx: pointer to the WLAN DAL context
14041 pEventData: pointer to the event information structure
14042
Jeff Johnson295189b2012-06-20 16:38:30 -070014043 @see
14044 @return Result of the function call
14045*/
14046WDI_Status
14047WDI_ProcessConfigureRxpFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014048(
Jeff Johnson295189b2012-06-20 16:38:30 -070014049 WDI_ControlBlockType* pWDICtx,
14050 WDI_EventInfoType* pEventData
14051)
14052{
14053 WDI_ConfigureRxpFilterReqParamsType* pwdiRxpFilterParams = NULL;
14054 WDI_ConfigureRxpFilterCb wdiConfigureRxpFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014055 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014056 wpt_uint16 usDataOffset = 0;
14057 wpt_uint16 usSendSize = 0;
14058 tHalConfigureRxpFilterReqParams halRxpFilterParams;
14059
14060 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14061
14062 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014063 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014064 -------------------------------------------------------------------------*/
14065 if (( NULL == pEventData ) ||
14066 ( NULL == (pwdiRxpFilterParams = (WDI_ConfigureRxpFilterReqParamsType*)pEventData->pEventData)) ||
14067 ( NULL == (wdiConfigureRxpFilterCb = (WDI_ConfigureRxpFilterCb)pEventData->pCBfnc)))
14068 {
14069 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014070 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014071 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014072 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014073 }
14074
14075 /*-----------------------------------------------------------------------
14076 Get message buffer
14077 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014078 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_CONFIGURE_RXP_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014079 sizeof(halRxpFilterParams),
14080 &pSendBuffer, &usDataOffset, &usSendSize))||
14081 ( usSendSize < (usDataOffset + sizeof(halRxpFilterParams) )))
14082 {
14083 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014084 "Unable to get send buffer in Set UAPSD params req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014085 pEventData, pwdiRxpFilterParams, wdiConfigureRxpFilterCb);
14086 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014087 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014088 }
14089
Jeff Johnsone7245742012-09-05 17:12:55 -070014090 halRxpFilterParams.setMcstBcstFilterSetting =
Jeff Johnson295189b2012-06-20 16:38:30 -070014091 pwdiRxpFilterParams->wdiRxpFilterParam.ucSetMcstBcstFilterSetting;
Jeff Johnsone7245742012-09-05 17:12:55 -070014092 halRxpFilterParams.setMcstBcstFilter =
Jeff Johnson295189b2012-06-20 16:38:30 -070014093 pwdiRxpFilterParams->wdiRxpFilterParam.ucSetMcstBcstFilter;
14094
Jeff Johnsone7245742012-09-05 17:12:55 -070014095 wpalMemoryCopy( pSendBuffer+usDataOffset,
14096 &halRxpFilterParams,
14097 sizeof(halRxpFilterParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070014098
14099 pWDICtx->wdiReqStatusCB = pwdiRxpFilterParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014100 pWDICtx->pReqStatusUserData = pwdiRxpFilterParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014101
14102 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014103 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014104 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014105 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14106 wdiConfigureRxpFilterCb, pEventData->pUserData, WDI_CONFIGURE_RXP_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070014107}/*WDI_ProcessConfigureRxpFilterReq*/
14108
14109/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014110 @brief Process set beacon filter Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070014111 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014112
14113 @param pWDICtx: pointer to the WLAN DAL context
14114 pEventData: pointer to the event information structure
14115
Jeff Johnson295189b2012-06-20 16:38:30 -070014116 @see
14117 @return Result of the function call
14118*/
14119WDI_Status
14120WDI_ProcessSetBeaconFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014121(
Jeff Johnson295189b2012-06-20 16:38:30 -070014122 WDI_ControlBlockType* pWDICtx,
14123 WDI_EventInfoType* pEventData
14124)
14125{
14126 WDI_BeaconFilterReqParamsType* pwdiBeaconFilterParams = NULL;
14127 WDI_SetBeaconFilterCb wdiBeaconFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014128 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014129 wpt_uint16 usDataOffset = 0;
14130 wpt_uint16 usSendSize = 0;
14131 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14132
14133 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014134 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014135 -------------------------------------------------------------------------*/
14136 if (( NULL == pEventData ) ||
14137 ( NULL == (pwdiBeaconFilterParams = (WDI_BeaconFilterReqParamsType*)pEventData->pEventData)) ||
14138 ( NULL == (wdiBeaconFilterCb = (WDI_SetBeaconFilterCb)pEventData->pCBfnc)))
14139 {
14140 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014141 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014142 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014143 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014144 }
14145
14146 /*-----------------------------------------------------------------------
14147 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014148 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014149 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014150 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_BEACON_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014151 sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo) + pwdiBeaconFilterParams->wdiBeaconFilterInfo.usIeNum * sizeof(tBeaconFilterIe),
14152 &pSendBuffer, &usDataOffset, &usSendSize))||
14153 ( usSendSize < (usDataOffset + sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo) )))
14154 {
14155 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014156 "Unable to get send buffer in Set beacon filter req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014157 pEventData, pwdiBeaconFilterParams, wdiBeaconFilterCb);
14158 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014159 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014160 }
14161
Jeff Johnsone7245742012-09-05 17:12:55 -070014162 wpalMemoryCopy( pSendBuffer+usDataOffset,
14163 &pwdiBeaconFilterParams->wdiBeaconFilterInfo,
14164 sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo));
14165 wpalMemoryCopy( pSendBuffer+usDataOffset+sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo),
14166 &pwdiBeaconFilterParams->aFilters[0],
14167 pwdiBeaconFilterParams->wdiBeaconFilterInfo.usIeNum * sizeof(tBeaconFilterIe));
Jeff Johnson295189b2012-06-20 16:38:30 -070014168
14169 pWDICtx->wdiReqStatusCB = pwdiBeaconFilterParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014170 pWDICtx->pReqStatusUserData = pwdiBeaconFilterParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014171
14172 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014173 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014174 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014175 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14176 wdiBeaconFilterCb, pEventData->pUserData, WDI_SET_BEACON_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070014177}/*WDI_ProcessSetBeaconFilterReq*/
14178
14179/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014180 @brief Process remove beacon filter Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070014181 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014182
14183 @param pWDICtx: pointer to the WLAN DAL context
14184 pEventData: pointer to the event information structure
14185
Jeff Johnson295189b2012-06-20 16:38:30 -070014186 @see
14187 @return Result of the function call
14188*/
14189WDI_Status
14190WDI_ProcessRemBeaconFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014191(
Jeff Johnson295189b2012-06-20 16:38:30 -070014192 WDI_ControlBlockType* pWDICtx,
14193 WDI_EventInfoType* pEventData
14194)
14195{
14196 WDI_RemBeaconFilterReqParamsType* pwdiBeaconFilterParams = NULL;
14197 WDI_RemBeaconFilterCb wdiBeaconFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014198 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014199 wpt_uint16 usDataOffset = 0;
14200 wpt_uint16 usSendSize = 0;
14201 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14202
14203 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014204 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014205 -------------------------------------------------------------------------*/
14206 if (( NULL == pEventData ) ||
14207 ( NULL == (pwdiBeaconFilterParams = (WDI_RemBeaconFilterReqParamsType*)pEventData->pEventData)) ||
14208 ( NULL == (wdiBeaconFilterCb = (WDI_RemBeaconFilterCb)pEventData->pCBfnc)))
14209 {
14210 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014211 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014212 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014213 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014214 }
14215
14216 /*-----------------------------------------------------------------------
14217 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014218 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014219 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014220 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_REM_BEACON_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014221 sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo),
14222 &pSendBuffer, &usDataOffset, &usSendSize))||
14223 ( usSendSize < (usDataOffset + sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo) )))
14224 {
14225 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014226 "Unable to get send buffer in remove beacon filter req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014227 pEventData, pwdiBeaconFilterParams, wdiBeaconFilterCb);
14228 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014229 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014230 }
14231
Jeff Johnsone7245742012-09-05 17:12:55 -070014232 wpalMemoryCopy( pSendBuffer+usDataOffset,
14233 &pwdiBeaconFilterParams->wdiBeaconFilterInfo,
14234 sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo));
Jeff Johnson295189b2012-06-20 16:38:30 -070014235
14236 pWDICtx->wdiReqStatusCB = pwdiBeaconFilterParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014237 pWDICtx->pReqStatusUserData = pwdiBeaconFilterParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014238
14239 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014240 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014241 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014242 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14243 wdiBeaconFilterCb, pEventData->pUserData, WDI_REM_BEACON_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070014244}
14245
14246/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014247 @brief Process set RSSI thresholds Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070014248 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014249
14250 @param pWDICtx: pointer to the WLAN DAL context
14251 pEventData: pointer to the event information structure
14252
Jeff Johnson295189b2012-06-20 16:38:30 -070014253 @see
14254 @return Result of the function call
14255*/
14256WDI_Status
14257WDI_ProcessSetRSSIThresholdsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014258(
Jeff Johnson295189b2012-06-20 16:38:30 -070014259 WDI_ControlBlockType* pWDICtx,
14260 WDI_EventInfoType* pEventData
14261)
14262{
14263 WDI_SetRSSIThresholdsReqParamsType* pwdiRSSIThresholdsParams = NULL;
14264 WDI_SetRSSIThresholdsCb wdiRSSIThresholdsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014265 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014266 wpt_uint16 usDataOffset = 0;
14267 wpt_uint16 usSendSize = 0;
14268 tHalRSSIThresholds rssiThresholdsReq;
14269 WDI_Status ret_status = 0;
14270 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14271
14272 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014273 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014274 -------------------------------------------------------------------------*/
14275 if (( NULL == pEventData ) ||
14276 ( NULL == (pwdiRSSIThresholdsParams = (WDI_SetRSSIThresholdsReqParamsType*)pEventData->pEventData)) ||
14277 ( NULL == (wdiRSSIThresholdsCb = (WDI_SetRSSIThresholdsCb)pEventData->pCBfnc)))
14278 {
14279 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014280 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014281 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014282 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014283 }
14284
14285 /*-----------------------------------------------------------------------
14286 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014287 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014288 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014289 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_RSSI_THRESHOLDS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014290 sizeof(rssiThresholdsReq),
14291 &pSendBuffer, &usDataOffset, &usSendSize))||
14292 ( usSendSize < (usDataOffset + sizeof(rssiThresholdsReq) )))
14293 {
14294 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014295 "Unable to get send buffer in remove beacon filter req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014296 pEventData, pwdiRSSIThresholdsParams, wdiRSSIThresholdsCb);
14297 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014298 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014299 }
14300
Jeff Johnsone7245742012-09-05 17:12:55 -070014301 rssiThresholdsReq.bReserved10 =
Jeff Johnson295189b2012-06-20 16:38:30 -070014302 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bReserved10;
Jeff Johnsone7245742012-09-05 17:12:55 -070014303 rssiThresholdsReq.bRssiThres1NegNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070014304 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres1NegNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070014305 rssiThresholdsReq.bRssiThres1PosNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070014306 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres1PosNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070014307 rssiThresholdsReq.bRssiThres2NegNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070014308 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres2NegNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070014309 rssiThresholdsReq.bRssiThres2PosNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070014310 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres2PosNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070014311 rssiThresholdsReq.bRssiThres3NegNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070014312 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres3NegNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070014313 rssiThresholdsReq.bRssiThres3PosNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070014314 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres3PosNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070014315 rssiThresholdsReq.ucRssiThreshold1 =
Jeff Johnson295189b2012-06-20 16:38:30 -070014316 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.ucRssiThreshold1;
Jeff Johnsone7245742012-09-05 17:12:55 -070014317 rssiThresholdsReq.ucRssiThreshold2 =
Jeff Johnson295189b2012-06-20 16:38:30 -070014318 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.ucRssiThreshold2;
Jeff Johnsone7245742012-09-05 17:12:55 -070014319 rssiThresholdsReq.ucRssiThreshold3 =
Jeff Johnson295189b2012-06-20 16:38:30 -070014320 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.ucRssiThreshold3;
14321
Jeff Johnsone7245742012-09-05 17:12:55 -070014322 wpalMemoryCopy( pSendBuffer+usDataOffset,
14323 &rssiThresholdsReq,
14324 sizeof(rssiThresholdsReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070014325
14326 pWDICtx->wdiReqStatusCB = pwdiRSSIThresholdsParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014327 pWDICtx->pReqStatusUserData = pwdiRSSIThresholdsParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014328
14329 /*-------------------------------------------------------------------------
14330 Send Set threshold req to HAL
14331 -------------------------------------------------------------------------*/
14332 if ((ret_status = WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14333 wdiRSSIThresholdsCb, pEventData->pUserData, WDI_SET_RSSI_THRESHOLDS_RESP)) == WDI_STATUS_SUCCESS)
14334 {
14335 // When we are in idle state WDI_STARTED_ST and we receive indication for threshold
14336 // req. Then as a result of processing the threshold cross ind, we trigger
14337 // a Set threshold req, then we need to indicate to WDI that it needs to
14338 // go to busy state as a result of the indication as we sent a req in the
14339 // same WDI context.
14340 // Hence expected state transition is to busy.
14341 pWDICtx->ucExpectedStateTransition = WDI_BUSY_ST;
14342 }
14343
14344 return ret_status;
14345}
14346
14347/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014348 @brief Process set RSSI thresholds Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070014349 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014350
14351 @param pWDICtx: pointer to the WLAN DAL context
14352 pEventData: pointer to the event information structure
14353
Jeff Johnson295189b2012-06-20 16:38:30 -070014354 @see
14355 @return Result of the function call
14356*/
14357WDI_Status
14358WDI_ProcessHostOffloadReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014359(
Jeff Johnson295189b2012-06-20 16:38:30 -070014360 WDI_ControlBlockType* pWDICtx,
14361 WDI_EventInfoType* pEventData
14362)
14363{
14364 WDI_HostOffloadReqParamsType* pwdiHostOffloadParams = NULL;
14365 WDI_HostOffloadCb wdiHostOffloadCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014366 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014367 wpt_uint16 usDataOffset = 0;
14368 wpt_uint16 usSendSize = 0;
14369 tHalHostOffloadReq hostOffloadParams;
14370 tHalNSOffloadParams nsOffloadParams;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014371 wpt_uint8 ucCurrentBSSSesIdx = 0;
14372 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014373
14374 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14375
14376 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014377 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014378 -------------------------------------------------------------------------*/
14379 if (( NULL == pEventData ) ||
14380 ( NULL == (pwdiHostOffloadParams = (WDI_HostOffloadReqParamsType*)pEventData->pEventData)) ||
14381 ( NULL == (wdiHostOffloadCb = (WDI_HostOffloadCb)pEventData->pCBfnc)))
14382 {
14383 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014384 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014385 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014386 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070014387 }
14388
14389 /*-----------------------------------------------------------------------
14390 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014391 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014392 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014393 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_HOST_OFFLOAD_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014394 sizeof(hostOffloadParams)+sizeof(nsOffloadParams),
14395 &pSendBuffer, &usDataOffset, &usSendSize))||
14396 ( usSendSize < (usDataOffset + sizeof(hostOffloadParams) + sizeof(nsOffloadParams) )))
14397 {
14398 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014399 "Unable to get send buffer in host offload req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014400 pEventData, pwdiHostOffloadParams, wdiHostOffloadCb);
14401 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014402 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070014403 }
14404
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014405 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
14406 pwdiHostOffloadParams->wdiHostOffloadInfo.bssId,
14407 &pBSSSes);
14408 if ( NULL == pBSSSes )
14409 {
14410 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Gopichand Nakkalac6c91902013-05-29 18:53:35 +053014411 " %s : Association for this BSSID does not exist " MAC_ADDRESS_STR,
14412 __func__, MAC_ADDR_ARRAY(pwdiHostOffloadParams->wdiHostOffloadInfo.bssId));
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014413 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014414 }
14415
Jeff Johnson295189b2012-06-20 16:38:30 -070014416 hostOffloadParams.offloadType = pwdiHostOffloadParams->wdiHostOffloadInfo.ucOffloadType;
14417 hostOffloadParams.enableOrDisable = pwdiHostOffloadParams->wdiHostOffloadInfo.ucEnableOrDisable;
Jeff Johnsone7245742012-09-05 17:12:55 -070014418
Jeff Johnson295189b2012-06-20 16:38:30 -070014419 if( HAL_IPV4_ARP_REPLY_OFFLOAD == hostOffloadParams.offloadType )
14420 {
14421 // ARP Offload
14422 wpalMemoryCopy(hostOffloadParams.params.hostIpv4Addr,
14423 pwdiHostOffloadParams->wdiHostOffloadInfo.params.aHostIpv4Addr,
14424 4);
14425 }
14426 else
14427 {
14428 // NS Offload
14429 wpalMemoryCopy(hostOffloadParams.params.hostIpv6Addr,
14430 pwdiHostOffloadParams->wdiHostOffloadInfo.params.aHostIpv6Addr,
14431 16);
14432
14433#ifdef WLAN_NS_OFFLOAD
14434 // copy pwdiHostOffloadParams->wdiNsOffloadParams into nsOffloadParams
14435 wpalMemoryCopy(nsOffloadParams.srcIPv6Addr,
14436 pwdiHostOffloadParams->wdiNsOffloadParams.srcIPv6Addr,
14437 16);
14438 wpalMemoryCopy(nsOffloadParams.selfIPv6Addr,
14439 pwdiHostOffloadParams->wdiNsOffloadParams.selfIPv6Addr,
14440 16);
14441 wpalMemoryCopy(nsOffloadParams.targetIPv6Addr1,
14442 pwdiHostOffloadParams->wdiNsOffloadParams.targetIPv6Addr1,
14443 16);
14444 wpalMemoryCopy(nsOffloadParams.targetIPv6Addr2,
14445 pwdiHostOffloadParams->wdiNsOffloadParams.targetIPv6Addr2,
14446 16);
14447 wpalMemoryCopy(nsOffloadParams.selfMacAddr,
14448 pwdiHostOffloadParams->wdiNsOffloadParams.selfMacAddr,
14449 6);
Gopichand Nakkala746a9452013-06-11 12:45:54 +053014450 nsOffloadParams.srcIPv6AddrValid =
14451 pwdiHostOffloadParams->wdiNsOffloadParams.srcIPv6AddrValid;
14452
14453 nsOffloadParams.targetIPv6Addr1Valid =
14454 pwdiHostOffloadParams->wdiNsOffloadParams.targetIPv6Addr1Valid;
14455
14456 nsOffloadParams.targetIPv6Addr2Valid =
14457 pwdiHostOffloadParams->wdiNsOffloadParams.targetIPv6Addr2Valid;
14458
14459 nsOffloadParams.slotIndex =
14460 pwdiHostOffloadParams->wdiNsOffloadParams.slotIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070014461
Jeff Johnson295189b2012-06-20 16:38:30 -070014462#endif // WLAN_NS_OFFLOAD
14463 }
14464
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014465 nsOffloadParams.bssIdx = pBSSSes->ucBSSIdx;
14466
Jeff Johnson295189b2012-06-20 16:38:30 -070014467 // copy hostOffloadParams into pSendBuffer
14468 wpalMemoryCopy( pSendBuffer+usDataOffset,
14469 &hostOffloadParams,
14470 sizeof(hostOffloadParams));
14471
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014472 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION) )
Jeff Johnson295189b2012-06-20 16:38:30 -070014473 {
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014474 // copy nsOffloadParams into pSendBuffer
14475 wpalMemoryCopy( pSendBuffer+usDataOffset+sizeof(hostOffloadParams),
Jeff Johnson295189b2012-06-20 16:38:30 -070014476 &nsOffloadParams,
14477 sizeof(nsOffloadParams));
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014478 }
14479 else
14480 {
14481#ifdef WLAN_NS_OFFLOAD
14482 if( HAL_IPV6_NS_OFFLOAD == hostOffloadParams.offloadType )
14483 {
14484 // copy nsOffloadParams into pSendBuffer
14485 wpalMemoryCopy( pSendBuffer+usDataOffset+sizeof(hostOffloadParams),
14486 &nsOffloadParams,
14487 sizeof(nsOffloadParams));
14488 }
14489#endif
14490 }
Jeff Johnson295189b2012-06-20 16:38:30 -070014491
14492 pWDICtx->wdiReqStatusCB = pwdiHostOffloadParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014493 pWDICtx->pReqStatusUserData = pwdiHostOffloadParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014494
14495 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014496 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014497 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014498 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14499 wdiHostOffloadCb, pEventData->pUserData, WDI_HOST_OFFLOAD_RESP);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014500
14501fail:
14502 // Release the message buffer so we don't leak
14503 wpalMemoryFree(pSendBuffer);
14504
14505failRequest:
14506 //WDA should have failure check to avoid the memory leak
14507 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014508}/*WDI_ProcessHostOffloadReq*/
14509
14510/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014511 @brief Process Keep Alive Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070014512 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014513
14514 @param pWDICtx: pointer to the WLAN DAL context
14515 pEventData: pointer to the event information structure
14516
Jeff Johnson295189b2012-06-20 16:38:30 -070014517 @see
14518 @return Result of the function call
14519*/
14520WDI_Status
14521WDI_ProcessKeepAliveReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014522(
Jeff Johnson295189b2012-06-20 16:38:30 -070014523 WDI_ControlBlockType* pWDICtx,
14524 WDI_EventInfoType* pEventData
14525)
14526{
14527 WDI_KeepAliveReqParamsType* pwdiKeepAliveParams = NULL;
14528 WDI_KeepAliveCb wdiKeepAliveCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014529 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014530 wpt_uint16 usDataOffset = 0;
14531 wpt_uint16 usSendSize = 0;
14532 tHalKeepAliveReq keepAliveReq;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014533 wpt_uint8 ucCurrentBSSSesIdx = 0;
14534 WDI_BSSSessionType* pBSSSes = NULL;
14535
Jeff Johnson295189b2012-06-20 16:38:30 -070014536 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14537
14538 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014539 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014540 -------------------------------------------------------------------------*/
14541 if (( NULL == pEventData ) ||
14542 ( NULL == (pwdiKeepAliveParams = (WDI_KeepAliveReqParamsType*)pEventData->pEventData)) ||
14543 ( NULL == (wdiKeepAliveCb = (WDI_KeepAliveCb)pEventData->pCBfnc)))
14544 {
14545 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
14546 "Invalid parameters in Keep Alive req");
14547 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014548 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070014549 }
14550
14551 /*-----------------------------------------------------------------------
14552 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014553 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014554 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014555 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_KEEP_ALIVE_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014556 sizeof(keepAliveReq),
14557 &pSendBuffer, &usDataOffset, &usSendSize))||
14558 ( usSendSize < (usDataOffset + sizeof(keepAliveReq) )))
14559 {
14560 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014561 "Unable to get send buffer in keep alive req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014562 pEventData, pwdiKeepAliveParams, wdiKeepAliveCb);
14563 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014564 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070014565 }
14566
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014567 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
14568 pwdiKeepAliveParams->wdiKeepAliveInfo.bssId,
14569 &pBSSSes);
14570 if ( NULL == pBSSSes )
14571 {
14572 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014573 " %s : Association for this BSSID does not exist",__func__);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014574 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014575 }
14576
Jeff Johnson295189b2012-06-20 16:38:30 -070014577 keepAliveReq.packetType = pwdiKeepAliveParams->wdiKeepAliveInfo.ucPacketType;
14578 keepAliveReq.timePeriod = pwdiKeepAliveParams->wdiKeepAliveInfo.ucTimePeriod;
14579
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014580 keepAliveReq.bssIdx = pBSSSes->ucBSSIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070014581
Jeff Johnson295189b2012-06-20 16:38:30 -070014582 if(pwdiKeepAliveParams->wdiKeepAliveInfo.ucPacketType == 2)
14583 {
14584 wpalMemoryCopy(keepAliveReq.hostIpv4Addr,
14585 pwdiKeepAliveParams->wdiKeepAliveInfo.aHostIpv4Addr,
14586 HAL_IPV4_ADDR_LEN);
14587 wpalMemoryCopy(keepAliveReq.destIpv4Addr,
14588 pwdiKeepAliveParams->wdiKeepAliveInfo.aDestIpv4Addr,
Jeff Johnsone7245742012-09-05 17:12:55 -070014589 HAL_IPV4_ADDR_LEN);
Jeff Johnson295189b2012-06-20 16:38:30 -070014590 wpalMemoryCopy(keepAliveReq.destMacAddr,
14591 pwdiKeepAliveParams->wdiKeepAliveInfo.aDestMacAddr,
14592 HAL_MAC_ADDR_LEN);
14593 }
Jeff Johnsone7245742012-09-05 17:12:55 -070014594
14595 wpalMemoryCopy( pSendBuffer+usDataOffset,
14596 &keepAliveReq,
14597 sizeof(keepAliveReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070014598
14599 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnson5b414462013-11-22 16:44:20 -080014600 "Process keep alive req %zu", sizeof(keepAliveReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070014601
14602 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnson5b414462013-11-22 16:44:20 -080014603 "Process keep alive req time period %d",
14604 keepAliveReq.timePeriod);
Jeff Johnson295189b2012-06-20 16:38:30 -070014605
14606 pWDICtx->wdiReqStatusCB = pwdiKeepAliveParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014607 pWDICtx->pReqStatusUserData = pwdiKeepAliveParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014608
14609 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
14610 "Sending keep alive req to HAL");
14611
14612 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014613 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014614 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014615 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14616 wdiKeepAliveCb, pEventData->pUserData, WDI_KEEP_ALIVE_RESP);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014617
14618fail:
14619 // Release the message buffer so we don't leak
14620 wpalMemoryFree(pSendBuffer);
14621
14622failRequest:
14623 //WDA should have failure check to avoid the memory leak
14624 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014625}/*WDI_ProcessKeepAliveReq*/
14626
14627
14628/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014629 @brief Process Wowl add bc ptrn Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070014630 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014631
14632 @param pWDICtx: pointer to the WLAN DAL context
14633 pEventData: pointer to the event information structure
14634
Jeff Johnson295189b2012-06-20 16:38:30 -070014635 @see
14636 @return Result of the function call
14637*/
14638WDI_Status
14639WDI_ProcessWowlAddBcPtrnReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014640(
Jeff Johnson295189b2012-06-20 16:38:30 -070014641 WDI_ControlBlockType* pWDICtx,
14642 WDI_EventInfoType* pEventData
14643)
14644{
14645 WDI_WowlAddBcPtrnReqParamsType* pwdiWowlAddBcPtrnParams = NULL;
14646 WDI_WowlAddBcPtrnCb wdiWowlAddBcPtrnCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014647 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014648 wpt_uint16 usDataOffset = 0;
14649 wpt_uint16 usSendSize = 0;
14650 tHalWowlAddBcastPtrn wowlAddBcPtrnReq;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014651 wpt_uint8 ucCurrentBSSSesIdx = 0;
14652 WDI_BSSSessionType* pBSSSes = NULL;
14653
Jeff Johnson295189b2012-06-20 16:38:30 -070014654 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14655
14656 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014657 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014658 -------------------------------------------------------------------------*/
14659 if (( NULL == pEventData ) ||
14660 ( NULL == (pwdiWowlAddBcPtrnParams = (WDI_WowlAddBcPtrnReqParamsType*)pEventData->pEventData)) ||
14661 ( NULL == (wdiWowlAddBcPtrnCb = (WDI_WowlAddBcPtrnCb)pEventData->pCBfnc)))
14662 {
14663 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014664 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014665 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014666 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070014667 }
14668
14669 /*-----------------------------------------------------------------------
14670 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014671 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014672 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014673 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_WOWL_ADD_BC_PTRN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014674 sizeof(wowlAddBcPtrnReq),
14675 &pSendBuffer, &usDataOffset, &usSendSize))||
14676 ( usSendSize < (usDataOffset + sizeof(wowlAddBcPtrnReq) )))
14677 {
14678 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014679 "Unable to get send buffer in Wowl add bc ptrn req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014680 pEventData, pwdiWowlAddBcPtrnParams, wdiWowlAddBcPtrnCb);
14681 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014682 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070014683 }
14684
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014685 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
14686 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.bssId,
14687 &pBSSSes);
14688 if ( NULL == pBSSSes )
14689 {
14690 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014691 " %s : Association for this BSSID does not exist",__func__);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014692 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014693 }
14694
Jeff Johnsone7245742012-09-05 17:12:55 -070014695 wowlAddBcPtrnReq.ucPatternId =
Jeff Johnson295189b2012-06-20 16:38:30 -070014696 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternId;
Jeff Johnsone7245742012-09-05 17:12:55 -070014697 wowlAddBcPtrnReq.ucPatternByteOffset =
Jeff Johnson295189b2012-06-20 16:38:30 -070014698 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternByteOffset;
Jeff Johnsone7245742012-09-05 17:12:55 -070014699 wowlAddBcPtrnReq.ucPatternMaskSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070014700 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMaskSize;
Jeff Johnsone7245742012-09-05 17:12:55 -070014701 wowlAddBcPtrnReq.ucPatternSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070014702 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternSize;
14703
14704 if (pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternSize <= HAL_WOWL_BCAST_PATTERN_MAX_SIZE)
14705 {
14706 wpalMemoryCopy(wowlAddBcPtrnReq.ucPattern,
14707 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPattern,
14708 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternSize);
14709 wpalMemoryCopy(wowlAddBcPtrnReq.ucPatternMask,
14710 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMask,
14711 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMaskSize);
14712 }
14713 else
14714 {
14715 wpalMemoryCopy(wowlAddBcPtrnReq.ucPattern,
14716 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPattern,
14717 HAL_WOWL_BCAST_PATTERN_MAX_SIZE);
14718 wpalMemoryCopy(wowlAddBcPtrnReq.ucPatternMask,
14719 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMask,
14720 HAL_WOWL_BCAST_PATTERN_MAX_SIZE);
14721
14722 wpalMemoryCopy(wowlAddBcPtrnReq.ucPattern,
14723 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPattern,
14724 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMaskSize - HAL_WOWL_BCAST_PATTERN_MAX_SIZE);
14725 wpalMemoryCopy(wowlAddBcPtrnReq.ucPatternMask,
14726 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMask,
14727 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMaskSize - HAL_WOWL_BCAST_PATTERN_MAX_SIZE);
14728 }
14729
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014730 wowlAddBcPtrnReq.bssIdx = pBSSSes->ucBSSIdx;
14731
Jeff Johnson295189b2012-06-20 16:38:30 -070014732 wpalMemoryCopy( pSendBuffer+usDataOffset,
14733 &wowlAddBcPtrnReq,
14734 sizeof(wowlAddBcPtrnReq));
14735
14736 pWDICtx->wdiReqStatusCB = pwdiWowlAddBcPtrnParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014737 pWDICtx->pReqStatusUserData = pwdiWowlAddBcPtrnParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014738
14739 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014740 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014741 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014742 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14743 wdiWowlAddBcPtrnCb, pEventData->pUserData, WDI_WOWL_ADD_BC_PTRN_RESP);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014744fail:
14745 // Release the message buffer so we don't leak
14746 wpalMemoryFree(pSendBuffer);
14747
14748failRequest:
14749 //WDA should have failure check to avoid the memory leak
14750 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014751}/*WDI_ProcessWowlAddBcPtrnReq*/
14752
14753/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014754 @brief Process Wowl delete bc ptrn Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070014755 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014756
14757 @param pWDICtx: pointer to the WLAN DAL context
14758 pEventData: pointer to the event information structure
14759
Jeff Johnson295189b2012-06-20 16:38:30 -070014760 @see
14761 @return Result of the function call
14762*/
14763WDI_Status
14764WDI_ProcessWowlDelBcPtrnReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014765(
Jeff Johnson295189b2012-06-20 16:38:30 -070014766 WDI_ControlBlockType* pWDICtx,
14767 WDI_EventInfoType* pEventData
14768)
14769{
14770 WDI_WowlDelBcPtrnReqParamsType* pwdiWowlDelBcPtrnParams = NULL;
14771 WDI_WowlDelBcPtrnCb wdiWowlDelBcPtrnCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014772 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014773 wpt_uint16 usDataOffset = 0;
14774 wpt_uint16 usSendSize = 0;
14775 tHalWowlDelBcastPtrn wowlDelBcPtrnReq;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014776 wpt_uint8 ucCurrentBSSSesIdx = 0;
14777 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014778 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14779
14780 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014781 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014782 -------------------------------------------------------------------------*/
14783 if (( NULL == pEventData ) ||
14784 ( NULL == (pwdiWowlDelBcPtrnParams = (WDI_WowlDelBcPtrnReqParamsType*)pEventData->pEventData)) ||
14785 ( NULL == (wdiWowlDelBcPtrnCb = (WDI_WowlDelBcPtrnCb)pEventData->pCBfnc)))
14786 {
14787 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014788 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014789 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014790 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070014791 }
14792
14793 /*-----------------------------------------------------------------------
14794 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014795 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014796 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014797 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_WOWL_DEL_BC_PTRN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014798 sizeof(wowlDelBcPtrnReq),
14799 &pSendBuffer, &usDataOffset, &usSendSize))||
14800 ( usSendSize < (usDataOffset + sizeof(wowlDelBcPtrnReq) )))
14801 {
14802 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014803 "Unable to get send buffer in Wowl del bc ptrn req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014804 pEventData, pwdiWowlDelBcPtrnParams, wdiWowlDelBcPtrnCb);
14805 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014806 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070014807 }
14808
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014809 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
14810 pwdiWowlDelBcPtrnParams->wdiWowlDelBcPtrnInfo.bssId,
14811 &pBSSSes);
14812 if ( NULL == pBSSSes )
14813 {
14814 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014815 " %s : Association for this BSSID does not exist",__func__);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014816 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014817 }
14818
Jeff Johnsone7245742012-09-05 17:12:55 -070014819 wowlDelBcPtrnReq.ucPatternId =
Jeff Johnson295189b2012-06-20 16:38:30 -070014820 pwdiWowlDelBcPtrnParams->wdiWowlDelBcPtrnInfo.ucPatternId;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014821
14822 wowlDelBcPtrnReq.bssIdx = pBSSSes->ucBSSIdx;
14823
Jeff Johnsone7245742012-09-05 17:12:55 -070014824 wpalMemoryCopy( pSendBuffer+usDataOffset,
14825 &wowlDelBcPtrnReq,
14826 sizeof(wowlDelBcPtrnReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070014827
14828 pWDICtx->wdiReqStatusCB = pwdiWowlDelBcPtrnParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014829 pWDICtx->pReqStatusUserData = pwdiWowlDelBcPtrnParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014830
14831 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014832 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014833 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014834 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14835 wdiWowlDelBcPtrnCb, pEventData->pUserData, WDI_WOWL_DEL_BC_PTRN_RESP);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014836
14837fail:
14838 // Release the message buffer so we don't leak
14839 wpalMemoryFree(pSendBuffer);
14840
14841failRequest:
14842 //WDA should have failure check to avoid the memory leak
14843 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014844}/*WDI_ProcessWowlDelBcPtrnReq*/
14845
14846/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014847 @brief Process Wowl enter Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070014848 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014849
14850 @param pWDICtx: pointer to the WLAN DAL context
14851 pEventData: pointer to the event information structure
14852
Jeff Johnson295189b2012-06-20 16:38:30 -070014853 @see
14854 @return Result of the function call
14855*/
14856WDI_Status
14857WDI_ProcessWowlEnterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014858(
Jeff Johnson295189b2012-06-20 16:38:30 -070014859 WDI_ControlBlockType* pWDICtx,
14860 WDI_EventInfoType* pEventData
14861)
14862{
14863 WDI_WowlEnterReqParamsType* pwdiWowlEnterParams = NULL;
14864 WDI_WowlEnterReqCb wdiWowlEnterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014865 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014866 wpt_uint16 usDataOffset = 0;
14867 wpt_uint16 usSendSize = 0;
14868 tHalWowlEnterParams wowlEnterReq;
14869 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14870
14871 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014872 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014873 -------------------------------------------------------------------------*/
14874 if (( NULL == pEventData ) ||
14875 ( NULL == (pwdiWowlEnterParams = (WDI_WowlEnterReqParamsType*)pEventData->pEventData)) ||
14876 ( NULL == (wdiWowlEnterCb = (WDI_WowlEnterReqCb)pEventData->pCBfnc)))
14877 {
14878 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014879 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014880 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014881 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014882 }
14883
14884 /*-----------------------------------------------------------------------
14885 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014886 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014887 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014888 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_WOWL_ENTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014889 sizeof(wowlEnterReq),
14890 &pSendBuffer, &usDataOffset, &usSendSize))||
14891 ( usSendSize < (usDataOffset + sizeof(wowlEnterReq) )))
14892 {
14893 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014894 "Unable to get send buffer in Wowl enter req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014895 pEventData, pwdiWowlEnterParams, wdiWowlEnterCb);
14896 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014897 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014898 }
14899
Kumar Anandaca924e2013-07-22 14:35:34 -070014900 wpalMemoryZero(&wowlEnterReq, sizeof(tHalWowlEnterParams));
14901
Jeff Johnsone7245742012-09-05 17:12:55 -070014902 wowlEnterReq.ucMagicPktEnable =
Jeff Johnson295189b2012-06-20 16:38:30 -070014903 pwdiWowlEnterParams->wdiWowlEnterInfo.ucMagicPktEnable;
Jeff Johnsone7245742012-09-05 17:12:55 -070014904 wowlEnterReq.ucPatternFilteringEnable =
Jeff Johnson295189b2012-06-20 16:38:30 -070014905 pwdiWowlEnterParams->wdiWowlEnterInfo.ucPatternFilteringEnable;
Jeff Johnsone7245742012-09-05 17:12:55 -070014906 wowlEnterReq.ucUcastPatternFilteringEnable =
Jeff Johnson295189b2012-06-20 16:38:30 -070014907 pwdiWowlEnterParams->wdiWowlEnterInfo.ucUcastPatternFilteringEnable;
Jeff Johnsone7245742012-09-05 17:12:55 -070014908 wowlEnterReq.ucWowChnlSwitchRcv =
Jeff Johnson295189b2012-06-20 16:38:30 -070014909 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowChnlSwitchRcv;
Jeff Johnsone7245742012-09-05 17:12:55 -070014910 wowlEnterReq.ucWowDeauthRcv =
Jeff Johnson295189b2012-06-20 16:38:30 -070014911 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowDeauthRcv;
Jeff Johnsone7245742012-09-05 17:12:55 -070014912 wowlEnterReq.ucWowDisassocRcv =
Jeff Johnson295189b2012-06-20 16:38:30 -070014913 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowDisassocRcv;
Jeff Johnsone7245742012-09-05 17:12:55 -070014914 wowlEnterReq.ucWowMaxMissedBeacons =
Jeff Johnson295189b2012-06-20 16:38:30 -070014915 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowMaxMissedBeacons;
Jeff Johnsone7245742012-09-05 17:12:55 -070014916 wowlEnterReq.ucWowMaxSleepUsec =
Jeff Johnson295189b2012-06-20 16:38:30 -070014917 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowMaxSleepUsec;
14918
14919#ifdef WLAN_WAKEUP_EVENTS
14920 wowlEnterReq.ucWoWEAPIDRequestEnable =
14921 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWoWEAPIDRequestEnable;
14922
14923 wowlEnterReq.ucWoWEAPOL4WayEnable =
14924 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWoWEAPOL4WayEnable;
14925
14926 wowlEnterReq.ucWowNetScanOffloadMatch =
14927 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowNetScanOffloadMatch;
14928
14929 wowlEnterReq.ucWowGTKRekeyError =
14930 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowGTKRekeyError;
14931
14932 wowlEnterReq.ucWoWBSSConnLoss =
14933 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWoWBSSConnLoss;
14934#endif // WLAN_WAKEUP_EVENTS
14935
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014936 wowlEnterReq.bssIdx = pwdiWowlEnterParams->wdiWowlEnterInfo.bssIdx;
14937
Jeff Johnson295189b2012-06-20 16:38:30 -070014938 wpalMemoryCopy(wowlEnterReq.magicPtrn,
14939 pwdiWowlEnterParams->wdiWowlEnterInfo.magicPtrn,
14940 sizeof(tSirMacAddr));
14941
Jeff Johnsone7245742012-09-05 17:12:55 -070014942 wpalMemoryCopy( pSendBuffer+usDataOffset,
14943 &wowlEnterReq,
14944 sizeof(wowlEnterReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070014945
14946 pWDICtx->wdiReqStatusCB = pwdiWowlEnterParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014947 pWDICtx->pReqStatusUserData = pwdiWowlEnterParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014948
14949 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014950 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014951 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014952 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14953 wdiWowlEnterCb, pEventData->pUserData, WDI_WOWL_ENTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070014954}/*WDI_ProcessWowlEnterReq*/
14955
14956/**
14957 @brief Process Wowl exit Request function (called when Main FSM
14958 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014959
14960 @param pWDICtx: pointer to the WLAN DAL context
14961 pEventData: pointer to the event information structure
14962
Jeff Johnson295189b2012-06-20 16:38:30 -070014963 @see
14964 @return Result of the function call
14965*/
14966WDI_Status
14967WDI_ProcessWowlExitReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014968(
Jeff Johnson295189b2012-06-20 16:38:30 -070014969 WDI_ControlBlockType* pWDICtx,
14970 WDI_EventInfoType* pEventData
14971)
14972{
14973 WDI_WowlExitReqCb wdiWowlExitCb = NULL;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014974 WDI_WowlExitReqParamsType* pwdiWowlExitParams = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014975 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014976 wpt_uint16 usDataOffset = 0;
14977 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014978 tHalWowlExitParams wowlExitparams;
Jeff Johnson295189b2012-06-20 16:38:30 -070014979 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14980
14981 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014982 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014983 -------------------------------------------------------------------------*/
14984 if (( NULL == pEventData ) ||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014985 ( NULL == (pwdiWowlExitParams = (WDI_WowlExitReqParamsType *)pEventData->pEventData)) ||
Jeff Johnson295189b2012-06-20 16:38:30 -070014986 ( NULL == (wdiWowlExitCb = (WDI_WowlExitReqCb)pEventData->pCBfnc)))
14987 {
14988 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014989 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014990 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014991 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014992 }
14993
14994 /*-----------------------------------------------------------------------
14995 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014996 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014997 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014998 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_WOWL_EXIT_REQ,
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014999 sizeof(wowlExitparams),
Jeff Johnson295189b2012-06-20 16:38:30 -070015000 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015001 ( usSendSize < (usDataOffset + sizeof(wowlExitparams))))
Jeff Johnson295189b2012-06-20 16:38:30 -070015002 {
15003 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080015004 "Unable to get send buffer in Wowl Exit req %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070015005 pEventData, wdiWowlExitCb);
15006 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015007 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015008 }
15009
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015010 wowlExitparams.bssIdx = pwdiWowlExitParams->wdiWowlExitInfo.bssIdx;
15011
15012 wpalMemoryCopy( pSendBuffer+usDataOffset,
15013 &wowlExitparams,
15014 sizeof(wowlExitparams));
Jeff Johnson295189b2012-06-20 16:38:30 -070015015 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015016 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070015017 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015018 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
15019 wdiWowlExitCb, pEventData->pUserData, WDI_WOWL_EXIT_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070015020}/*WDI_ProcessWowlExitReq*/
15021
15022/**
15023 @brief Process Configure Apps Cpu Wakeup State Request function
15024 (called when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070015025
15026 @param pWDICtx: pointer to the WLAN DAL context
15027 pEventData: pointer to the event information structure
15028
Jeff Johnson295189b2012-06-20 16:38:30 -070015029 @see
15030 @return Result of the function call
15031*/
15032WDI_Status
15033WDI_ProcessConfigureAppsCpuWakeupStateReq
Jeff Johnsone7245742012-09-05 17:12:55 -070015034(
Jeff Johnson295189b2012-06-20 16:38:30 -070015035 WDI_ControlBlockType* pWDICtx,
15036 WDI_EventInfoType* pEventData
15037)
15038{
15039 WDI_ConfigureAppsCpuWakeupStateReqParamsType* pwdiAppsCpuWakeupStateParams = NULL;
15040 WDI_ConfigureAppsCpuWakeupStateCb wdiConfigureAppsCpuWakeupStateCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070015041 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070015042 wpt_uint16 usDataOffset = 0;
15043 wpt_uint16 usSendSize = 0;
15044 tHalConfigureAppsCpuWakeupStateReqParams halCfgAppsCpuWakeupStateReqParams;
15045 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15046
15047 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015048 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015049 -------------------------------------------------------------------------*/
15050 if (( NULL == pEventData ) ||
15051 ( NULL == (pwdiAppsCpuWakeupStateParams = (WDI_ConfigureAppsCpuWakeupStateReqParamsType*)pEventData->pEventData)) ||
15052 ( NULL == (wdiConfigureAppsCpuWakeupStateCb = (WDI_ConfigureAppsCpuWakeupStateCb)pEventData->pCBfnc)))
15053 {
15054 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015055 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015056 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015057 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015058 }
15059
15060 /*-----------------------------------------------------------------------
15061 Get message buffer
15062 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015063 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070015064 sizeof(halCfgAppsCpuWakeupStateReqParams),
15065 &pSendBuffer, &usDataOffset, &usSendSize))||
15066 ( usSendSize < (usDataOffset + sizeof(pwdiAppsCpuWakeupStateParams->bIsAppsAwake) )))
15067 {
15068 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080015069 "Unable to get send buffer in Apps CPU Wakeup State req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070015070 pEventData, pwdiAppsCpuWakeupStateParams, wdiConfigureAppsCpuWakeupStateCb);
15071 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015072 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015073 }
15074
Jeff Johnsone7245742012-09-05 17:12:55 -070015075 halCfgAppsCpuWakeupStateReqParams.isAppsCpuAwake =
Jeff Johnson295189b2012-06-20 16:38:30 -070015076 pwdiAppsCpuWakeupStateParams->bIsAppsAwake;
15077
Jeff Johnsone7245742012-09-05 17:12:55 -070015078 wpalMemoryCopy( pSendBuffer+usDataOffset,
15079 &halCfgAppsCpuWakeupStateReqParams,
15080 sizeof(halCfgAppsCpuWakeupStateReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070015081
15082 pWDICtx->wdiReqStatusCB = pwdiAppsCpuWakeupStateParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070015083 pWDICtx->pReqStatusUserData = pwdiAppsCpuWakeupStateParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070015084
15085 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015086 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070015087 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015088 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
15089 wdiConfigureAppsCpuWakeupStateCb, pEventData->pUserData,
15090 WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070015091}/*WDI_ProcessConfigureAppsCpuWakeupStateReq*/
15092
15093#ifdef WLAN_FEATURE_VOWIFI_11R
15094/**
15095 @brief Process Aggregated Add TSpec Request function (called when Main FSM
15096 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070015097
15098 @param pWDICtx: pointer to the WLAN DAL context
15099 pEventData: pointer to the event information structure
15100
Jeff Johnson295189b2012-06-20 16:38:30 -070015101 @see
15102 @return Result of the function call
15103*/
15104WDI_Status
15105WDI_ProcessAggrAddTSpecReq
Jeff Johnsone7245742012-09-05 17:12:55 -070015106(
Jeff Johnson295189b2012-06-20 16:38:30 -070015107 WDI_ControlBlockType* pWDICtx,
15108 WDI_EventInfoType* pEventData
15109)
15110{
15111 WDI_AggrAddTSReqParamsType* pwdiAggrAddTSParams;
15112 WDI_AggrAddTsRspCb wdiAggrAddTSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070015113 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070015114 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070015115 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070015116 wpt_uint16 usDataOffset = 0;
15117 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070015118 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015119 wpt_macAddr macBSSID;
15120 tAggrAddTsReq halAggrAddTsReq;
15121 int i;
15122 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15123
15124 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015125 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015126 -------------------------------------------------------------------------*/
15127 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
15128 ( NULL == pEventData->pCBfnc ))
15129 {
15130 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015131 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015132 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015133 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015134 }
15135 wpalMemoryFill( &halAggrAddTsReq, sizeof(tAggrAddTsReq), 0 );
15136 pwdiAggrAddTSParams = (WDI_AggrAddTSReqParamsType*)pEventData->pEventData;
15137 wdiAggrAddTSRspCb = (WDI_AggrAddTsRspCb)pEventData->pCBfnc;
15138 /*-------------------------------------------------------------------------
15139 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070015140 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070015141 -------------------------------------------------------------------------*/
15142 wpalMutexAcquire(&pWDICtx->wptMutex);
15143
15144 /*------------------------------------------------------------------------
15145 Find the BSS for which the request is made and identify WDI session
15146 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015147 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
15148 pwdiAggrAddTSParams->wdiAggrTsInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070015149 &macBSSID))
15150 {
15151 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080015152 "This station does not exist in the WDI Station Table %d",
15153 pwdiAggrAddTSParams->wdiAggrTsInfo.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070015154 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070015155 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015156 }
15157
Jeff Johnsone7245742012-09-05 17:12:55 -070015158 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
15159 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070015160 {
Jeff Johnsone7245742012-09-05 17:12:55 -070015161 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15162 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
15163 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070015164
15165 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070015166 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070015167 }
Jeff Johnsone7245742012-09-05 17:12:55 -070015168
Jeff Johnson295189b2012-06-20 16:38:30 -070015169 /*------------------------------------------------------------------------
15170 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070015171 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070015172 ------------------------------------------------------------------------*/
15173 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
15174 {
Jeff Johnsone7245742012-09-05 17:12:55 -070015175 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
15176 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
15177 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070015178
Jeff Johnsone7245742012-09-05 17:12:55 -070015179 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070015180 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070015181 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070015182 }
15183
15184 wpalMutexRelease(&pWDICtx->wptMutex);
15185 /*-----------------------------------------------------------------------
15186 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070015187 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070015188 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015189 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_AGGR_ADD_TS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070015190 sizeof(tAggrAddTsParams),
15191 &pSendBuffer, &usDataOffset, &usSendSize))||
15192 ( usSendSize < (usDataOffset + sizeof(tAggrAddTsParams) )))
15193 {
15194 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080015195 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070015196 pEventData, pwdiAggrAddTSParams, wdiAggrAddTSRspCb);
15197 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015198 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015199 }
15200
Jeff Johnsone7245742012-09-05 17:12:55 -070015201 halAggrAddTsReq.aggrAddTsParam.staIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070015202 pwdiAggrAddTSParams->wdiAggrTsInfo.ucSTAIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015203 halAggrAddTsReq.aggrAddTsParam.tspecIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070015204 pwdiAggrAddTSParams->wdiAggrTsInfo.ucTspecIdx;
15205
15206 for( i = 0; i < WLAN_HAL_MAX_AC; i++ )
15207 {
Jeff Johnsone7245742012-09-05 17:12:55 -070015208 halAggrAddTsReq.aggrAddTsParam.tspec[i].type =
Jeff Johnson295189b2012-06-20 16:38:30 -070015209 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].ucType;
Jeff Johnsone7245742012-09-05 17:12:55 -070015210 halAggrAddTsReq.aggrAddTsParam.tspec[i].length =
Jeff Johnson295189b2012-06-20 16:38:30 -070015211 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].ucLength;
Jeff Johnsone7245742012-09-05 17:12:55 -070015212 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.ackPolicy =
Jeff Johnson295189b2012-06-20 16:38:30 -070015213 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
15214 ackPolicy;
Jeff Johnsone7245742012-09-05 17:12:55 -070015215 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.accessPolicy =
Jeff Johnson295189b2012-06-20 16:38:30 -070015216 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
15217 accessPolicy;
Jeff Johnsone7245742012-09-05 17:12:55 -070015218 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.userPrio =
Jeff Johnson295189b2012-06-20 16:38:30 -070015219 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
15220 userPrio;
Jeff Johnsone7245742012-09-05 17:12:55 -070015221 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.psb =
Jeff Johnson295189b2012-06-20 16:38:30 -070015222 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
15223 psb;
Jeff Johnsone7245742012-09-05 17:12:55 -070015224 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.aggregation =
Jeff Johnson295189b2012-06-20 16:38:30 -070015225 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
15226 aggregation;
Jeff Johnsone7245742012-09-05 17:12:55 -070015227 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.direction =
Jeff Johnson295189b2012-06-20 16:38:30 -070015228 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
15229 direction;
Jeff Johnsone7245742012-09-05 17:12:55 -070015230 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.tsid =
Jeff Johnson295189b2012-06-20 16:38:30 -070015231 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
15232 trafficType;
Jeff Johnsone7245742012-09-05 17:12:55 -070015233 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.tsid =
Jeff Johnson295189b2012-06-20 16:38:30 -070015234 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
15235 trafficType;
Jeff Johnsone7245742012-09-05 17:12:55 -070015236 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.schedule.rsvd =
Jeff Johnson295189b2012-06-20 16:38:30 -070015237 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiSchedule.rsvd;
Jeff Johnsone7245742012-09-05 17:12:55 -070015238 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.schedule.schedule =
Jeff Johnson295189b2012-06-20 16:38:30 -070015239 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiSchedule.schedule;
Jeff Johnsone7245742012-09-05 17:12:55 -070015240
15241
15242 halAggrAddTsReq.aggrAddTsParam.tspec[i].nomMsduSz =
Jeff Johnson295189b2012-06-20 16:38:30 -070015243 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].usNomMsduSz;
Jeff Johnsone7245742012-09-05 17:12:55 -070015244 halAggrAddTsReq.aggrAddTsParam.tspec[i].maxMsduSz =
Jeff Johnson295189b2012-06-20 16:38:30 -070015245 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].usMaxMsduSz;
Jeff Johnsone7245742012-09-05 17:12:55 -070015246 halAggrAddTsReq.aggrAddTsParam.tspec[i].minSvcInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070015247 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMinSvcInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070015248 halAggrAddTsReq.aggrAddTsParam.tspec[i].maxSvcInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070015249 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMaxSvcInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070015250 halAggrAddTsReq.aggrAddTsParam.tspec[i].inactInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070015251 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uInactInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070015252 halAggrAddTsReq.aggrAddTsParam.tspec[i].suspendInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070015253 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uSuspendInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070015254 halAggrAddTsReq.aggrAddTsParam.tspec[i].svcStartTime =
Jeff Johnson295189b2012-06-20 16:38:30 -070015255 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uSvcStartTime;
Jeff Johnsone7245742012-09-05 17:12:55 -070015256 halAggrAddTsReq.aggrAddTsParam.tspec[i].minDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070015257 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMinDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070015258 halAggrAddTsReq.aggrAddTsParam.tspec[i].meanDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070015259 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMeanDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070015260 halAggrAddTsReq.aggrAddTsParam.tspec[i].peakDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070015261 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uPeakDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070015262 halAggrAddTsReq.aggrAddTsParam.tspec[i].maxBurstSz =
Jeff Johnson295189b2012-06-20 16:38:30 -070015263 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMaxBurstSz;
Jeff Johnsone7245742012-09-05 17:12:55 -070015264 halAggrAddTsReq.aggrAddTsParam.tspec[i].delayBound =
Jeff Johnson295189b2012-06-20 16:38:30 -070015265 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uDelayBound;
Jeff Johnsone7245742012-09-05 17:12:55 -070015266 halAggrAddTsReq.aggrAddTsParam.tspec[i].minPhyRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070015267 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMinPhyRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070015268 halAggrAddTsReq.aggrAddTsParam.tspec[i].surplusBw =
Jeff Johnson295189b2012-06-20 16:38:30 -070015269 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].usSurplusBw;
Jeff Johnsone7245742012-09-05 17:12:55 -070015270 halAggrAddTsReq.aggrAddTsParam.tspec[i].mediumTime =
Jeff Johnson295189b2012-06-20 16:38:30 -070015271 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].usMediumTime;
15272 }
15273
Jeff Johnsone7245742012-09-05 17:12:55 -070015274 wpalMemoryCopy( pSendBuffer+usDataOffset,
15275 &halAggrAddTsReq,
15276 sizeof(halAggrAddTsReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070015277
15278 pWDICtx->wdiReqStatusCB = pwdiAggrAddTSParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070015279 pWDICtx->pReqStatusUserData = pwdiAggrAddTSParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070015280
15281 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015282 Send Add TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070015283 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015284 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070015285 wdiAggrAddTSRspCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -070015286 WDI_AGGR_ADD_TS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070015287}/*WDI_ProcessAggrAddTSpecReq*/
15288#endif /* WLAN_FEATURE_VOWIFI_11R */
15289
15290/**
15291 @brief Process Shutdown Request function (called when Main FSM
15292 allows it)
15293
15294 @param pWDICtx: pointer to the WLAN DAL context
15295 pEventData: pointer to the event information structure
15296
15297 @see
15298 @return Result of the function call
15299*/
15300WDI_Status
15301WDI_ProcessShutdownReq
15302(
15303 WDI_ControlBlockType* pWDICtx,
15304 WDI_EventInfoType* pEventData
15305 )
15306{
15307 wpt_status wptStatus;
15308
15309
15310 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15311
15312 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015313 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015314 -------------------------------------------------------------------------*/
15315 if ( NULL == pEventData )
15316 {
15317 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015318 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015319 WDI_ASSERT(0);
15320 return WDI_STATUS_E_FAILURE;
15321 }
15322
15323 wpalMutexAcquire(&pWDICtx->wptMutex);
15324
15325
15326 gWDIInitialized = eWLAN_PAL_FALSE;
15327 /*! TO DO: stop the data services */
15328 if ( eDRIVER_TYPE_MFG != pWDICtx->driverMode )
15329 {
15330 /*Stop the STA Table !UT- check this logic again
15331 It is safer to do it here than on the response - because a stop is imminent*/
15332 WDI_STATableStop(pWDICtx);
15333
15334 /* Stop Transport Driver, DXE */
15335 WDTS_Stop(pWDICtx);
15336 }
15337
15338 /*Clear all pending request*/
15339 WDI_ClearPendingRequests(pWDICtx);
15340 /* Close Data transport*/
15341 /* FTM mode does not open Data Path */
15342 if ( eDRIVER_TYPE_MFG != pWDICtx->driverMode )
15343 {
15344 WDTS_Close(pWDICtx);
15345 }
15346 /*Close the STA Table !UT- check this logic again*/
15347 WDI_STATableClose(pWDICtx);
15348 /*close the PAL */
15349 wptStatus = wpalClose(pWDICtx->pPALContext);
15350 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
15351 {
15352 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15353 "Failed to wpal Close %d", wptStatus);
15354 WDI_ASSERT(0);
15355 }
15356
15357 /*Transition back to init state*/
15358 WDI_STATE_TRANSITION( pWDICtx, WDI_INIT_ST);
15359
15360 wpalMutexRelease(&pWDICtx->wptMutex);
15361
15362 /*Make sure the expected state is properly defaulted to Init*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015363 pWDICtx->ucExpectedStateTransition = WDI_INIT_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -070015364
15365
Jeff Johnsone7245742012-09-05 17:12:55 -070015366 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015367}/*WDI_ProcessShutdownReq*/
15368
15369/*========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070015370 Main DAL Control Path Response Processing API
Jeff Johnson295189b2012-06-20 16:38:30 -070015371========================================================================*/
15372
15373/**
15374 @brief Process Start Response function (called when a response
15375 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015376
15377 @param pWDICtx: pointer to the WLAN DAL context
15378 pEventData: pointer to the event information structure
15379
Jeff Johnson295189b2012-06-20 16:38:30 -070015380 @see
15381 @return Result of the function call
15382*/
15383WDI_Status
15384WDI_ProcessStartRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015385(
Jeff Johnson295189b2012-06-20 16:38:30 -070015386 WDI_ControlBlockType* pWDICtx,
15387 WDI_EventInfoType* pEventData
15388)
15389{
15390 WDI_StartRspParamsType wdiRspParams;
15391 WDI_StartRspCb wdiStartRspCb = NULL;
15392
15393 tHalMacStartRspParams* startRspParams;
15394
15395#ifndef HAL_SELF_STA_PER_BSS
15396 WDI_AddStaParams wdiAddSTAParam = {0};
15397#endif
15398 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15399
Jeff Johnsone7245742012-09-05 17:12:55 -070015400 wdiStartRspCb = (WDI_StartRspCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070015401 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015402 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015403 -------------------------------------------------------------------------*/
15404 if (( NULL == pEventData ) ||
15405 ( NULL == pEventData->pEventData) ||
15406 ( NULL == wdiStartRspCb ))
15407 {
15408 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015409 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015410 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015411 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015412 }
15413
15414 /*-------------------------------------------------------------------------
15415 Extract response and send it to UMAC
15416 -------------------------------------------------------------------------*/
15417 if ( sizeof(tHalMacStartRspParams) > pEventData->uEventDataSize )
15418 {
15419 // not enough data was received
15420 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnson5b414462013-11-22 16:44:20 -080015421 "Invalid response length in Start Resp Expect %zx Rcvd %x",
Jeff Johnson295189b2012-06-20 16:38:30 -070015422 sizeof(tHalMacStartRspParams), pEventData->uEventDataSize);
15423 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015424 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015425 }
15426
15427 /*-------------------------------------------------------------------------
15428 Unpack HAL Response Message - the header was already extracted by the
Jeff Johnsone7245742012-09-05 17:12:55 -070015429 main Response Handling procedure
Jeff Johnson295189b2012-06-20 16:38:30 -070015430 -------------------------------------------------------------------------*/
15431 startRspParams = (tHalMacStartRspParams *) pEventData->pEventData;
15432
15433 wdiRspParams.ucMaxBssids = startRspParams->ucMaxBssids;
15434 wdiRspParams.ucMaxStations = startRspParams->ucMaxStations;
15435 wdiRspParams.wlanCompiledVersion.major = WLAN_HAL_VER_MAJOR;
15436 wdiRspParams.wlanCompiledVersion.minor = WLAN_HAL_VER_MINOR;
15437 wdiRspParams.wlanCompiledVersion.version = WLAN_HAL_VER_VERSION;
15438 wdiRspParams.wlanCompiledVersion.revision = WLAN_HAL_VER_REVISION;
15439 wdiRspParams.wlanReportedVersion.major =
15440 startRspParams->wcnssWlanVersion.major;
15441 wdiRspParams.wlanReportedVersion.minor =
15442 startRspParams->wcnssWlanVersion.minor;
15443 wdiRspParams.wlanReportedVersion.version =
15444 startRspParams->wcnssWlanVersion.version;
15445 wdiRspParams.wlanReportedVersion.revision =
15446 startRspParams->wcnssWlanVersion.revision;
15447 wpalMemoryCopy(wdiRspParams.wcnssSoftwareVersion,
15448 startRspParams->wcnssCrmVersionString,
15449 sizeof(wdiRspParams.wcnssSoftwareVersion));
15450 wpalMemoryCopy(wdiRspParams.wcnssHardwareVersion,
15451 startRspParams->wcnssWlanVersionString,
15452 sizeof(wdiRspParams.wcnssHardwareVersion));
15453 wdiRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(startRspParams->status);
15454
Pratik Bhalgatd4404592012-11-22 17:49:14 +053015455 /*Save the HAL Version*/
15456 pWDICtx->wlanVersion = wdiRspParams.wlanReportedVersion;
15457
Jeff Johnson295189b2012-06-20 16:38:30 -070015458 wpalMutexAcquire(&pWDICtx->wptMutex);
15459 if ( WDI_STATUS_SUCCESS == wdiRspParams.wdiStatus )
15460 {
15461 pWDICtx->ucExpectedStateTransition = WDI_STARTED_ST;
15462
15463 /*Cache the start response for further use*/
15464 wpalMemoryCopy( &pWDICtx->wdiCachedStartRspParams ,
Jeff Johnsone7245742012-09-05 17:12:55 -070015465 &wdiRspParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070015466 sizeof(pWDICtx->wdiCachedStartRspParams));
15467
15468 }
15469 else
15470 {
15471 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15472 "Failed to start device with status %s(%d)",
15473 WDI_getHALStatusMsgString(startRspParams->status),
15474 startRspParams->status);
15475
15476 /*Set the expected state transition to stopped - because the start has
15477 failed*/
15478 pWDICtx->ucExpectedStateTransition = WDI_STOPPED_ST;
15479
15480 wpalMutexRelease(&pWDICtx->wptMutex);
15481
15482 /*Notify UMAC*/
15483 wdiStartRspCb( &wdiRspParams, pWDICtx->pRspCBUserData);
Jeff Johnsone7245742012-09-05 17:12:55 -070015484
Jeff Johnson295189b2012-06-20 16:38:30 -070015485 WDI_DetectedDeviceError(pWDICtx, wdiRspParams.wdiStatus);
Katya Nigamf02ad012014-05-05 16:12:49 +053015486 wpalWlanReload();
Jeff Johnson295189b2012-06-20 16:38:30 -070015487
15488 /*Although the response is an error - it was processed by our function
15489 so as far as the caller is concerned this is a succesful reponse processing*/
15490 return WDI_STATUS_SUCCESS;
15491 }
Jeff Johnsone7245742012-09-05 17:12:55 -070015492
Jeff Johnson295189b2012-06-20 16:38:30 -070015493 wpalMutexRelease(&pWDICtx->wptMutex);
15494
15495 if(eDRIVER_TYPE_MFG == pWDICtx->driverMode)
15496 {
15497 /* FTM mode does not need to execute below */
15498 /* Notify UMAC */
15499 wdiStartRspCb( &wdiRspParams, pWDICtx->pRspCBUserData);
15500 return WDI_STATUS_SUCCESS;
15501 }
15502
15503 /* START the Data transport */
15504 WDTS_startTransport(pWDICtx);
15505
15506 /*Start the STA Table !- check this logic again*/
15507 WDI_STATableStart(pWDICtx);
15508
15509#ifndef HAL_SELF_STA_PER_BSS
15510 /* Store the Self STA Index */
15511 pWDICtx->ucSelfStaId = halStartRspMsg.startRspParams.selfStaIdx;
15512
15513 pWDICtx->usSelfStaDpuId = wdiRspParams.usSelfStaDpuId;
15514 wpalMemoryCopy(pWDICtx->macSelfSta, wdiRspParams.macSelfSta,
15515 WDI_MAC_ADDR_LEN);
15516
15517 /* At this point add the self-STA */
15518
15519 /*! TO DO: wdiAddSTAParam.bcastMgmtDpuSignature */
15520 /* !TO DO: wdiAddSTAParam.bcastDpuSignature */
15521 /*! TO DO: wdiAddSTAParam.dpuSig */
15522 /*! TO DO: wdiAddSTAParam.ucWmmEnabled */
15523 /*! TO DO: wdiAddSTAParam.ucHTCapable */
15524 /*! TO DO: wdiAddSTAParam.ucRmfEnabled */
15525
15526 //all DPU indices are the same for self STA
15527 wdiAddSTAParam.bcastDpuIndex = wdiRspParams.usSelfStaDpuId;
15528 wdiAddSTAParam.bcastMgmtDpuIndex = wdiRspParams.usSelfStaDpuId;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -070015529 wdiAddSTAParam.dpuIndex = wdiRspParams.usSelfStaDpuId;
Jeff Johnson295189b2012-06-20 16:38:30 -070015530 wpalMemoryCopy(wdiAddSTAParam.staMacAddr, wdiRspParams.macSelfSta,
15531 WDI_MAC_ADDR_LEN);
15532 wdiAddSTAParam.ucStaType = WDI_STA_ENTRY_SELF; /* 0 - self */
15533 wdiAddSTAParam.ucSTAIdx = halStartRspMsg.startRspParams.selfStaIdx;
15534
15535 /* Note: Since we don't get an explicit config STA request for self STA, we
15536 add the self STA upon receiving the Start response message. But the
15537 self STA entry in the table is deleted when WDI gets an explicit delete STA
15538 request */
15539 (void)WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
15540#endif
15541
15542 /*Notify UMAC*/
15543 wdiStartRspCb( &wdiRspParams, pWDICtx->pRspCBUserData);
15544
Jeff Johnsone7245742012-09-05 17:12:55 -070015545 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015546}/*WDI_ProcessStartRsp*/
15547
15548
15549/**
15550 @brief Process Stop Response function (called when a response
15551 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015552
15553 @param pWDICtx: pointer to the WLAN DAL context
15554 pEventData: pointer to the event information structure
15555
Jeff Johnson295189b2012-06-20 16:38:30 -070015556 @see
15557 @return Result of the function call
15558*/
15559WDI_Status
15560WDI_ProcessStopRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015561(
Jeff Johnson295189b2012-06-20 16:38:30 -070015562 WDI_ControlBlockType* pWDICtx,
15563 WDI_EventInfoType* pEventData
15564)
15565{
15566 WDI_Status wdiStatus;
15567 WDI_StopRspCb wdiStopRspCb = NULL;
15568
Jeff Johnsone7245742012-09-05 17:12:55 -070015569 tHalMacStopRspMsg halMacStopRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070015570 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15571
Jeff Johnsone7245742012-09-05 17:12:55 -070015572 wdiStopRspCb = (WDI_StopRspCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070015573 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015574 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015575 -------------------------------------------------------------------------*/
15576 if (( NULL == pEventData ) ||
15577 ( NULL == pEventData->pEventData) ||
15578 ( NULL == wdiStopRspCb ))
15579 {
15580 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015581 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015582 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015583 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015584 }
15585
15586 /*-------------------------------------------------------------------------
15587 Extract response and send it to UMAC
15588 -------------------------------------------------------------------------*/
15589 if ( sizeof(halMacStopRspMsg) < pEventData->uEventDataSize )
15590 {
15591 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080015592 "Invalid response length in Stop Resp %u",
Jeff Johnson295189b2012-06-20 16:38:30 -070015593 pEventData->uEventDataSize);
15594 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015595 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015596 }
15597
15598 /*-------------------------------------------------------------------------
15599 Unpack HAL Response Message - the header was already extracted by the
Jeff Johnsone7245742012-09-05 17:12:55 -070015600 main Response Handling procedure
Jeff Johnson295189b2012-06-20 16:38:30 -070015601 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015602 wpalMemoryCopy( &halMacStopRspMsg.stopRspParams,
15603 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070015604 sizeof(halMacStopRspMsg.stopRspParams));
15605
Jeff Johnsone7245742012-09-05 17:12:55 -070015606 wdiStatus = WDI_HAL_2_WDI_STATUS(halMacStopRspMsg.stopRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070015607
15608 wpalMutexAcquire(&pWDICtx->wptMutex);
15609
15610 /*--------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015611 Check to see if the stop went OK
Jeff Johnson295189b2012-06-20 16:38:30 -070015612 --------------------------------------------------------------------------*/
15613 if ( WDI_STATUS_SUCCESS != wdiStatus )
15614 {
15615 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15616 "Failed to stop the device with status %s (%d)",
15617 WDI_getHALStatusMsgString(halMacStopRspMsg.stopRspParams.status),
15618 halMacStopRspMsg.stopRspParams.status);
15619
Jeff Johnsone7245742012-09-05 17:12:55 -070015620 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
Katya Nigamf02ad012014-05-05 16:12:49 +053015621 wpalWlanReload();
Jeff Johnsone7245742012-09-05 17:12:55 -070015622
Jeff Johnson295189b2012-06-20 16:38:30 -070015623 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070015624 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015625 }
Jeff Johnsone7245742012-09-05 17:12:55 -070015626
Jeff Johnson295189b2012-06-20 16:38:30 -070015627 pWDICtx->ucExpectedStateTransition = WDI_STOPPED_ST;
15628
15629 /*Transition now as WDI may get preempted imediately after it sends
15630 up the Stop Response and it will not get to process the state transition
15631 from Main Rsp function*/
15632 WDI_STATE_TRANSITION( pWDICtx, pWDICtx->ucExpectedStateTransition);
15633 wpalMutexRelease(&pWDICtx->wptMutex);
15634
15635 /*! TO DO: - STOP the Data transport */
15636
15637 /*Notify UMAC*/
15638 wdiStopRspCb( wdiStatus, pWDICtx->pRspCBUserData);
15639
Jeff Johnsone7245742012-09-05 17:12:55 -070015640 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015641}/*WDI_ProcessStopRsp*/
15642
15643/**
15644 @brief Process Close Rsp function (called when a response
15645 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015646
15647 @param pWDICtx: pointer to the WLAN DAL context
15648 pEventData: pointer to the event information structure
15649
Jeff Johnson295189b2012-06-20 16:38:30 -070015650 @see
15651 @return Result of the function call
15652*/
15653WDI_Status
15654WDI_ProcessCloseRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015655(
Jeff Johnson295189b2012-06-20 16:38:30 -070015656 WDI_ControlBlockType* pWDICtx,
15657 WDI_EventInfoType* pEventData
15658)
15659{
15660 /*There is no close response comming from HAL - function just kept for
15661 simmetry */
15662 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015663 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015664}/*WDI_ProcessCloseRsp*/
15665
15666
15667/*============================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070015668 SCAN RESPONSE PROCESSING API
Jeff Johnson295189b2012-06-20 16:38:30 -070015669============================================================================*/
15670
15671/**
15672 @brief Process Init Scan Rsp function (called when a response
15673 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015674
15675 @param pWDICtx: pointer to the WLAN DAL context
15676 pEventData: pointer to the event information structure
15677
Jeff Johnson295189b2012-06-20 16:38:30 -070015678 @see
15679 @return Result of the function call
15680*/
15681WDI_Status
15682WDI_ProcessInitScanRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015683(
Jeff Johnson295189b2012-06-20 16:38:30 -070015684 WDI_ControlBlockType* pWDICtx,
15685 WDI_EventInfoType* pEventData
15686)
15687{
15688 WDI_Status wdiStatus;
15689 WDI_InitScanRspCb wdiInitScanRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070015690 tHalInitScanRspMsg halInitScanRspMsg;
Ravali85acf6b2012-12-12 14:01:38 -080015691 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070015692 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15693
15694 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015695 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015696 -------------------------------------------------------------------------*/
15697 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15698 ( NULL == pEventData->pEventData))
15699 {
15700 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015701 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015702 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015703 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015704 }
15705
15706 wdiInitScanRspCb = (WDI_InitScanRspCb)pWDICtx->pfncRspCB;
15707 if( NULL == wdiInitScanRspCb)
15708 {
15709 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015710 "%s: call back function is NULL", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015711 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015712 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015713 }
15714
15715 /*-------------------------------------------------------------------------
15716 Unpack HAL Response Message - the header was already extracted by the
Jeff Johnsone7245742012-09-05 17:12:55 -070015717 main Response Handling procedure
Jeff Johnson295189b2012-06-20 16:38:30 -070015718 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015719 wpalMemoryCopy( &halInitScanRspMsg.initScanRspParams,
15720 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070015721 sizeof(halInitScanRspMsg.initScanRspParams));
15722
Jeff Johnsone7245742012-09-05 17:12:55 -070015723 wdiStatus = WDI_HAL_2_WDI_STATUS(halInitScanRspMsg.initScanRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070015724
15725 if ( pWDICtx->bInBmps )
15726 {
15727 // notify DTS that we are entering Full power
Ravali85acf6b2012-12-12 14:01:38 -080015728 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
15729 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus ) {
15730 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain9a5d5382013-11-17 22:05:35 -080015731 "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 -080015732 WDI_ASSERT(0);
15733 }
Jeff Johnson295189b2012-06-20 16:38:30 -070015734 }
15735
15736 /*Notify UMAC*/
15737 wdiInitScanRspCb( wdiStatus, pWDICtx->pRspCBUserData);
15738
Jeff Johnsone7245742012-09-05 17:12:55 -070015739 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015740}/*WDI_ProcessInitScanRsp*/
15741
15742
15743/**
15744 @brief Process Start Scan Rsp function (called when a response
15745 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015746
15747 @param pWDICtx: pointer to the WLAN DAL context
15748 pEventData: pointer to the event information structure
15749
Jeff Johnson295189b2012-06-20 16:38:30 -070015750 @see
15751 @return Result of the function call
15752*/
15753WDI_Status
15754WDI_ProcessStartScanRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015755(
Jeff Johnson295189b2012-06-20 16:38:30 -070015756 WDI_ControlBlockType* pWDICtx,
15757 WDI_EventInfoType* pEventData
15758)
15759{
15760 WDI_StartScanRspParamsType wdiStartScanParams;
15761 WDI_StartScanRspCb wdiStartScanRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070015762
15763 tHalStartScanRspMsg halStartScanRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070015764 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15765
15766 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015767 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015768 -------------------------------------------------------------------------*/
15769 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15770 ( NULL == pEventData->pEventData))
15771 {
15772 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015773 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015774 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015775 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015776 }
15777
15778 wdiStartScanRspCb = (WDI_StartScanRspCb)pWDICtx->pfncRspCB;
15779 if( NULL == wdiStartScanRspCb)
15780 {
15781 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015782 "%s: call back function is NULL", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015783 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015784 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015785 }
15786
15787 /*-------------------------------------------------------------------------
15788 Extract response and send it to UMAC
15789 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015790 wpalMemoryCopy( &halStartScanRspMsg.startScanRspParams,
15791 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070015792 sizeof(halStartScanRspMsg.startScanRspParams));
15793
15794 wdiStartScanParams.wdiStatus = WDI_HAL_2_WDI_STATUS(
15795 halStartScanRspMsg.startScanRspParams.status);
15796#ifdef WLAN_FEATURE_VOWIFI
Jeff Johnsone7245742012-09-05 17:12:55 -070015797 wdiStartScanParams.ucTxMgmtPower =
Jeff Johnson295189b2012-06-20 16:38:30 -070015798 halStartScanRspMsg.startScanRspParams.txMgmtPower;
Jeff Johnsone7245742012-09-05 17:12:55 -070015799 wpalMemoryCopy( wdiStartScanParams.aStartTSF,
Jeff Johnson295189b2012-06-20 16:38:30 -070015800 halStartScanRspMsg.startScanRspParams.startTSF,
15801 2);
Jeff Johnsone7245742012-09-05 17:12:55 -070015802#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070015803
15804 if ( eHAL_STATUS_SUCCESS != halStartScanRspMsg.startScanRspParams.status )
15805 {
15806 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15807 "Start scan failed with status %s (%d)",
15808 WDI_getHALStatusMsgString(halStartScanRspMsg.startScanRspParams.status),
15809 halStartScanRspMsg.startScanRspParams.status);
15810 /* send the status to UMAC, don't return from here*/
15811 }
15812
15813 /*Notify UMAC*/
15814 wdiStartScanRspCb( &wdiStartScanParams, pWDICtx->pRspCBUserData);
15815
Jeff Johnsone7245742012-09-05 17:12:55 -070015816 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015817
15818}/*WDI_ProcessStartScanRsp*/
15819
15820
15821/**
Jeff Johnsone7245742012-09-05 17:12:55 -070015822 @brief Process End Scan Response function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070015823 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015824
15825 @param pWDICtx: pointer to the WLAN DAL context
15826 pEventData: pointer to the event information structure
15827
Jeff Johnson295189b2012-06-20 16:38:30 -070015828 @see
15829 @return Result of the function call
15830*/
15831WDI_Status
15832WDI_ProcessEndScanRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015833(
Jeff Johnson295189b2012-06-20 16:38:30 -070015834 WDI_ControlBlockType* pWDICtx,
15835 WDI_EventInfoType* pEventData
15836)
15837{
15838 WDI_Status wdiStatus;
15839 tHalEndScanRspMsg halEndScanRspMsg;
15840 WDI_EndScanRspCb wdiEndScanRspCb;
15841 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15842
15843 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015844 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015845 -------------------------------------------------------------------------*/
15846 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15847 ( NULL == pEventData->pEventData))
15848 {
15849 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015850 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015851 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015852 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015853 }
15854
15855 wdiEndScanRspCb = (WDI_EndScanRspCb)pWDICtx->pfncRspCB;
15856
15857 /*-------------------------------------------------------------------------
15858 Extract response and send it to UMAC
15859 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015860 wpalMemoryCopy( &halEndScanRspMsg.endScanRspParams,
15861 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070015862 sizeof(halEndScanRspMsg.endScanRspParams));
15863
Jeff Johnsone7245742012-09-05 17:12:55 -070015864 wdiStatus = WDI_HAL_2_WDI_STATUS(halEndScanRspMsg.endScanRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070015865
15866 if ( eHAL_STATUS_SUCCESS != halEndScanRspMsg.endScanRspParams.status )
15867 {
15868 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15869 "End Scan failed with status %s (%d )",
15870 WDI_getHALStatusMsgString(halEndScanRspMsg.endScanRspParams.status),
15871 halEndScanRspMsg.endScanRspParams.status);
15872 /* send the status to UMAC, don't return from here*/
15873 }
15874
15875 /*Notify UMAC*/
15876 wdiEndScanRspCb( wdiStatus, pWDICtx->pRspCBUserData);
15877
Jeff Johnsone7245742012-09-05 17:12:55 -070015878 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015879}/*WDI_ProcessEndScanRsp*/
15880
15881
15882/**
Jeff Johnsone7245742012-09-05 17:12:55 -070015883 @brief Process Finish Scan Response function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070015884 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015885
15886 @param pWDICtx: pointer to the WLAN DAL context
15887 pEventData: pointer to the event information structure
15888
Jeff Johnson295189b2012-06-20 16:38:30 -070015889 @see
15890 @return Result of the function call
15891*/
15892WDI_Status
15893WDI_ProcessFinishScanRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015894(
Jeff Johnson295189b2012-06-20 16:38:30 -070015895 WDI_ControlBlockType* pWDICtx,
15896 WDI_EventInfoType* pEventData
Jeff Johnsone7245742012-09-05 17:12:55 -070015897)
Jeff Johnson295189b2012-06-20 16:38:30 -070015898{
15899 WDI_Status wdiStatus;
15900 WDI_FinishScanRspCb wdiFinishScanRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070015901
15902 tHalFinishScanRspMsg halFinishScanRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070015903 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15904
15905 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015906 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015907 -------------------------------------------------------------------------*/
15908 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15909 ( NULL == pEventData->pEventData))
15910 {
15911 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015912 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015913 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015914 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015915 }
15916
15917 wdiFinishScanRspCb = (WDI_FinishScanRspCb)pWDICtx->pfncRspCB;
15918
15919 /*-------------------------------------------------------------------------
15920 Extract response and send it to UMAC
15921 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015922 wpalMemoryCopy( (void *)&halFinishScanRspMsg.finishScanRspParams.status,
15923 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070015924 sizeof(halFinishScanRspMsg.finishScanRspParams.status));
15925
Jeff Johnsone7245742012-09-05 17:12:55 -070015926 wdiStatus = WDI_HAL_2_WDI_STATUS(halFinishScanRspMsg.finishScanRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070015927
15928 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO_LOW,
Jeff Johnsone7245742012-09-05 17:12:55 -070015929 "Finish scan response reported status: %d",
Jeff Johnson295189b2012-06-20 16:38:30 -070015930 halFinishScanRspMsg.finishScanRspParams.status);
15931
15932 if (( eHAL_STATUS_SUCCESS != halFinishScanRspMsg.finishScanRspParams.status )&&
15933 ( eHAL_STATUS_NOTIFY_BSS_FAIL != halFinishScanRspMsg.finishScanRspParams.status ))
15934 {
15935 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15936 "Finish Scan failed with status %s (%d)",
15937 WDI_getHALStatusMsgString(halFinishScanRspMsg.finishScanRspParams.status),
15938 halFinishScanRspMsg.finishScanRspParams.status);
15939 /* send the status to UMAC, don't return from here*/
15940 }
15941
15942 /*Notify UMAC*/
15943 wdiFinishScanRspCb( wdiStatus, pWDICtx->pRspCBUserData);
15944
Jeff Johnsone7245742012-09-05 17:12:55 -070015945 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015946}/*WDI_ProcessFinishScanRsp*/
15947
15948/**
15949 @brief Process Join Response function (called when a response
15950 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015951
15952 @param pWDICtx: pointer to the WLAN DAL context
15953 pEventData: pointer to the event information structure
15954
Jeff Johnson295189b2012-06-20 16:38:30 -070015955 @see
15956 @return Result of the function call
15957*/
15958WDI_Status
15959WDI_ProcessJoinRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015960(
Jeff Johnson295189b2012-06-20 16:38:30 -070015961 WDI_ControlBlockType* pWDICtx,
15962 WDI_EventInfoType* pEventData
15963)
15964{
15965 WDI_Status wdiStatus;
15966 WDI_JoinRspCb wdiJoinRspCb;
15967 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070015968
15969 tHalJoinRspMsg halJoinRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070015970 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15971
15972 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015973 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015974 -------------------------------------------------------------------------*/
15975 if (( NULL == pWDICtx ) ||
15976 ( NULL == pWDICtx->pfncRspCB ) ||
15977 ( NULL == pEventData ) ||
15978 ( NULL == pEventData->pEventData))
15979 {
15980 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015981 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015982 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015983 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015984 }
15985
15986 wdiJoinRspCb = (WDI_JoinRspCb)pWDICtx->pfncRspCB;
15987
15988 /*-------------------------------------------------------------------------
15989 Extract response and send it to UMAC
15990 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015991 wpalMemoryCopy( &halJoinRspMsg.joinRspParams,
15992 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070015993 sizeof(halJoinRspMsg.joinRspParams));
15994
Jeff Johnsone7245742012-09-05 17:12:55 -070015995 wdiStatus = WDI_HAL_2_WDI_STATUS(halJoinRspMsg.joinRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070015996
15997 wpalMutexAcquire(&pWDICtx->wptMutex);
15998
15999 /*-----------------------------------------------------------------------
16000 Join response can only be received for an existing assoc that
Jeff Johnsone7245742012-09-05 17:12:55 -070016001 is current and in progress
Jeff Johnson295189b2012-06-20 16:38:30 -070016002 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016003 if (( !WDI_VALID_SESSION_IDX(pWDICtx->ucCurrentBSSSesIdx )) ||
Jeff Johnson295189b2012-06-20 16:38:30 -070016004 ( eWLAN_PAL_FALSE == pWDICtx->bAssociationInProgress ))
16005 {
16006 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070016007 "%s: Association sequence for this BSS does not yet exist (bssIdx %d) or "
16008 "association no longer in progress %d - mysterious HAL response",
16009 __func__, pWDICtx->ucCurrentBSSSesIdx, pWDICtx->bAssociationInProgress);
Jeff Johnson295189b2012-06-20 16:38:30 -070016010
Jeff Johnsone7245742012-09-05 17:12:55 -070016011 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
Jeff Johnson295189b2012-06-20 16:38:30 -070016012 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070016013 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070016014 }
16015
16016 pBSSSes = &pWDICtx->aBSSSessions[pWDICtx->ucCurrentBSSSesIdx];
16017
16018 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016019 Join Response is only allowed in init state
Jeff Johnson295189b2012-06-20 16:38:30 -070016020 -----------------------------------------------------------------------*/
16021 if ( WDI_ASSOC_JOINING_ST != pBSSSes->wdiAssocState)
16022 {
16023 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16024 "Join only allowed in Joining state - failure state is %d "
16025 "strange HAL response", pBSSSes->wdiAssocState);
16026
Jeff Johnsone7245742012-09-05 17:12:55 -070016027 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
16028
Jeff Johnson295189b2012-06-20 16:38:30 -070016029 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070016030 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070016031 }
16032
16033
16034 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016035 If assoc has failed the current session will be deleted
Jeff Johnson295189b2012-06-20 16:38:30 -070016036 -----------------------------------------------------------------------*/
16037 if ( WDI_STATUS_SUCCESS != wdiStatus )
16038 {
16039 /*Association was failed by HAL - remove session*/
16040 WDI_DeleteSession(pWDICtx, pBSSSes);
16041
16042 /*Association no longer in progress */
16043 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
16044
16045 /*Association no longer in progress - prepare pending assoc for processing*/
16046 WDI_DequeueAssocRequest(pWDICtx);
Jeff Johnsone7245742012-09-05 17:12:55 -070016047
Jeff Johnson295189b2012-06-20 16:38:30 -070016048 }
16049 else
16050 {
16051 /*Transition to state Joining - this may be redundant as we are supposed
16052 to be in this state already - but just to be safe*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016053 pBSSSes->wdiAssocState = WDI_ASSOC_JOINING_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -070016054 }
16055
16056 wpalMutexRelease(&pWDICtx->wptMutex);
16057
16058 /*Notify UMAC*/
16059 wdiJoinRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16060
Jeff Johnsone7245742012-09-05 17:12:55 -070016061 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016062}/*WDI_ProcessJoinRsp*/
16063
16064
16065/**
Jeff Johnsone7245742012-09-05 17:12:55 -070016066 @brief Process Config BSS Response function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070016067 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016068
16069 @param pWDICtx: pointer to the WLAN DAL context
16070 pEventData: pointer to the event information structure
16071
Jeff Johnson295189b2012-06-20 16:38:30 -070016072 @see
16073 @return Result of the function call
16074*/
16075WDI_Status
16076WDI_ProcessConfigBSSRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016077(
Jeff Johnson295189b2012-06-20 16:38:30 -070016078 WDI_ControlBlockType* pWDICtx,
16079 WDI_EventInfoType* pEventData
16080)
16081{
16082 WDI_ConfigBSSRspParamsType wdiConfigBSSParams;
16083 WDI_ConfigBSSRspCb wdiConfigBSSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070016084 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070016085 WDI_BSSSessionType* pBSSSes = NULL;
16086
Jeff Johnsone7245742012-09-05 17:12:55 -070016087 tConfigBssRspMsg halConfigBssRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070016088 WDI_AddStaParams wdiBcastAddSTAParam = {0};
16089 WDI_AddStaParams wdiAddSTAParam = {0};
Jeff Johnsone7245742012-09-05 17:12:55 -070016090
Jeff Johnson295189b2012-06-20 16:38:30 -070016091 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16092
16093 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016094 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016095 -------------------------------------------------------------------------*/
16096 if (( NULL == pEventData ) ||
16097 ( NULL == pEventData->pEventData))
16098 {
16099 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016100 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016101 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016102 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016103 }
16104
16105 wdiConfigBSSRspCb = (WDI_ConfigBSSRspCb)pWDICtx->pfncRspCB;
16106
16107 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016108 Extract response and send it to UMAC
Jeff Johnson295189b2012-06-20 16:38:30 -070016109 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016110 wpalMemoryCopy( &halConfigBssRspMsg.configBssRspParams,
16111 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016112 sizeof(halConfigBssRspMsg.configBssRspParams));
16113
16114 wdiConfigBSSParams.wdiStatus = WDI_HAL_2_WDI_STATUS(
16115 halConfigBssRspMsg.configBssRspParams.status);
16116 if(WDI_STATUS_SUCCESS == wdiConfigBSSParams.wdiStatus)
16117 {
Jeff Johnsone7245742012-09-05 17:12:55 -070016118 wpalMemoryCopy( wdiConfigBSSParams.macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -070016119 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.macBSSID,
16120 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070016121
Jeff Johnson295189b2012-06-20 16:38:30 -070016122 wdiConfigBSSParams.ucBSSIdx = halConfigBssRspMsg.configBssRspParams.bssIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016123
16124 wdiConfigBSSParams.ucBcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070016125 halConfigBssRspMsg.configBssRspParams.bcastDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070016126
16127 wdiConfigBSSParams.ucUcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070016128 halConfigBssRspMsg.configBssRspParams.ucastDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070016129
Jeff Johnson295189b2012-06-20 16:38:30 -070016130 wdiConfigBSSParams.ucSTAIdx = halConfigBssRspMsg.configBssRspParams.bssStaIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016131
Jeff Johnson295189b2012-06-20 16:38:30 -070016132 #ifdef WLAN_FEATURE_VOWIFI
Jeff Johnsone7245742012-09-05 17:12:55 -070016133 wdiConfigBSSParams.ucTxMgmtPower =
Jeff Johnson295189b2012-06-20 16:38:30 -070016134 halConfigBssRspMsg.configBssRspParams.txMgmtPower;
16135 #endif
16136 wpalMemoryCopy( wdiConfigBSSParams.macSTA,
16137 halConfigBssRspMsg.configBssRspParams.staMac,
16138 WDI_MAC_ADDR_LEN );
Jeff Johnsone7245742012-09-05 17:12:55 -070016139
Jeff Johnson295189b2012-06-20 16:38:30 -070016140 wpalMutexAcquire(&pWDICtx->wptMutex);
16141 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016142 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070016143 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016144 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
16145 wdiConfigBSSParams.macBSSID,
16146 &pBSSSes);
16147
Jeff Johnson295189b2012-06-20 16:38:30 -070016148 /*-----------------------------------------------------------------------
16149 Config BSS response can only be received for an existing assoc that
Jeff Johnsone7245742012-09-05 17:12:55 -070016150 is current and in progress
Jeff Johnson295189b2012-06-20 16:38:30 -070016151 -----------------------------------------------------------------------*/
16152 if ( NULL == pBSSSes )
16153 {
16154 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16155 "Association sequence for this BSS does not yet exist "
16156 "- mysterious HAL response");
Jeff Johnsone7245742012-09-05 17:12:55 -070016157
16158 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
16159
Jeff Johnson295189b2012-06-20 16:38:30 -070016160 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070016161 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070016162 }
Jeff Johnsone7245742012-09-05 17:12:55 -070016163
Jeff Johnson295189b2012-06-20 16:38:30 -070016164 /*Save data for this BSS*/
16165 pBSSSes->wdiBssType = pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiBSSType;
16166 pBSSSes->ucBSSIdx = halConfigBssRspMsg.configBssRspParams.bssIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016167 pBSSSes->bcastDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070016168 halConfigBssRspMsg.configBssRspParams.bcastDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016169 pBSSSes->bcastDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070016170 halConfigBssRspMsg.configBssRspParams.bcastDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070016171 pBSSSes->bcastMgmtDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070016172 halConfigBssRspMsg.configBssRspParams.mgmtDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016173 pBSSSes->bcastMgmtDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070016174 halConfigBssRspMsg.configBssRspParams.mgmtDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070016175 pBSSSes->ucRmfEnabled =
Jeff Johnson295189b2012-06-20 16:38:30 -070016176 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.ucRMFEnabled;
16177 pBSSSes->bcastStaIdx =
16178 halConfigBssRspMsg.configBssRspParams.bssBcastStaIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016179
Jeff Johnson295189b2012-06-20 16:38:30 -070016180 /* !TO DO: Shuould we be updating the RMF Capability of self STA here? */
Jeff Johnsone7245742012-09-05 17:12:55 -070016181
Jeff Johnson295189b2012-06-20 16:38:30 -070016182 /*-------------------------------------------------------------------------
16183 Add Peer STA
16184 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016185 wdiAddSTAParam.ucSTAIdx = halConfigBssRspMsg.configBssRspParams.bssStaIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070016186 wdiAddSTAParam.dpuIndex = halConfigBssRspMsg.configBssRspParams.dpuDescIndx;
16187 wdiAddSTAParam.dpuSig = halConfigBssRspMsg.configBssRspParams.ucastDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070016188
Jeff Johnson295189b2012-06-20 16:38:30 -070016189 /*This info can be retrieved from the cached initial request*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016190 wdiAddSTAParam.ucWmmEnabled =
Jeff Johnson295189b2012-06-20 16:38:30 -070016191 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiSTAContext.ucWMMEnabled;
Jeff Johnsone7245742012-09-05 17:12:55 -070016192 wdiAddSTAParam.ucHTCapable =
16193 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiSTAContext.ucHTCapable;
16194 wdiAddSTAParam.ucStaType =
16195 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiSTAContext.wdiSTAType;
16196
Jeff Johnson295189b2012-06-20 16:38:30 -070016197 /* MAC Address of STA */
Jeff Johnsone7245742012-09-05 17:12:55 -070016198 wpalMemoryCopy(wdiAddSTAParam.staMacAddr,
16199 halConfigBssRspMsg.configBssRspParams.staMac,
Jeff Johnson295189b2012-06-20 16:38:30 -070016200 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070016201
16202 wpalMemoryCopy(wdiAddSTAParam.macBSSID,
16203 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiSTAContext.macBSSID ,
16204 WDI_MAC_ADDR_LEN);
16205
Jeff Johnson295189b2012-06-20 16:38:30 -070016206 /*Add BSS specific parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016207 wdiAddSTAParam.bcastMgmtDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070016208 halConfigBssRspMsg.configBssRspParams.mgmtDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016209 wdiAddSTAParam.bcastMgmtDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070016210 halConfigBssRspMsg.configBssRspParams.mgmtDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070016211 wdiAddSTAParam.bcastDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070016212 halConfigBssRspMsg.configBssRspParams.bcastDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016213 wdiAddSTAParam.bcastDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070016214 halConfigBssRspMsg.configBssRspParams.bcastDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070016215 wdiAddSTAParam.ucRmfEnabled =
Jeff Johnson295189b2012-06-20 16:38:30 -070016216 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.ucRMFEnabled;
Jeff Johnsone7245742012-09-05 17:12:55 -070016217 wdiAddSTAParam.ucBSSIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070016218 halConfigBssRspMsg.configBssRspParams.bssIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016219
Jeff Johnson295189b2012-06-20 16:38:30 -070016220 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
16221 "Add STA to the table index: %d", wdiAddSTAParam.ucSTAIdx );
Jeff Johnsone7245742012-09-05 17:12:55 -070016222
Jeff Johnson295189b2012-06-20 16:38:30 -070016223 WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
16224 /*-------------------------------------------------------------------------
16225 Add Broadcast STA only in AP mode
16226 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016227 if( pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.ucOperMode ==
Ravi Joshid0699502013-07-08 15:48:47 -070016228 WDI_BSS_OPERATIONAL_MODE_AP || pBSSSes->wdiBssType == WDI_IBSS_MODE)
Jeff Johnson295189b2012-06-20 16:38:30 -070016229 {
16230 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
16231 "Add BCAST STA to table for index: %d",
16232 halConfigBssRspMsg.configBssRspParams.bssBcastStaIdx );
Jeff Johnsone7245742012-09-05 17:12:55 -070016233
16234 wpalMemoryCopy( &wdiBcastAddSTAParam, &wdiAddSTAParam,
Jeff Johnson295189b2012-06-20 16:38:30 -070016235 sizeof(WDI_AddStaParams) );
Jeff Johnsone7245742012-09-05 17:12:55 -070016236
Jeff Johnson295189b2012-06-20 16:38:30 -070016237 WDI_AddBcastSTAtoSTATable( pWDICtx, &wdiBcastAddSTAParam,
16238 halConfigBssRspMsg.configBssRspParams.bssBcastStaIdx );
16239 }
16240 wpalMutexRelease(&pWDICtx->wptMutex);
16241 }
16242 else
16243 {
16244 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16245 "Config BSS RSP failed with status : %s(%d)",
16246 WDI_getHALStatusMsgString(
Jeff Johnsone7245742012-09-05 17:12:55 -070016247 halConfigBssRspMsg.configBssRspParams.status),
Jeff Johnson295189b2012-06-20 16:38:30 -070016248 halConfigBssRspMsg.configBssRspParams.status);
16249
Jeff Johnsone7245742012-09-05 17:12:55 -070016250
Jeff Johnson295189b2012-06-20 16:38:30 -070016251 /*Association was failed by HAL - remove session*/
16252 WDI_DeleteSession(pWDICtx, pBSSSes);
16253
16254 /*Association no longer in progress */
16255 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
16256
16257 /*Association no longer in progress - prepare pending assoc for processing*/
16258 WDI_DequeueAssocRequest(pWDICtx);
16259
16260 }
16261
16262 /*Notify UMAC*/
16263 wdiConfigBSSRspCb( &wdiConfigBSSParams, pWDICtx->pRspCBUserData);
16264
Jeff Johnsone7245742012-09-05 17:12:55 -070016265 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016266}/*WDI_ProcessConfigBSSRsp*/
16267
16268
16269/**
16270 @brief Process Del BSS Response function (called when a response
16271 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016272
16273 @param pWDICtx: pointer to the WLAN DAL context
16274 pEventData: pointer to the event information structure
16275
Jeff Johnson295189b2012-06-20 16:38:30 -070016276 @see
16277 @return Result of the function call
16278*/
16279WDI_Status
16280WDI_ProcessDelBSSRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016281(
Jeff Johnson295189b2012-06-20 16:38:30 -070016282 WDI_ControlBlockType* pWDICtx,
16283 WDI_EventInfoType* pEventData
16284)
16285{
16286 WDI_DelBSSRspParamsType wdiDelBSSParams;
16287 WDI_DelBSSRspCb wdiDelBSSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070016288 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070016289 WDI_BSSSessionType* pBSSSes = NULL;
16290
Jeff Johnsone7245742012-09-05 17:12:55 -070016291 tDeleteBssRspMsg halDelBssRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070016292 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16293
16294 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016295 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016296 -------------------------------------------------------------------------*/
16297 if (( NULL == pEventData ) ||
16298 ( NULL == pEventData->pEventData))
16299 {
16300 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016301 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016302 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016303 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016304 }
16305
16306 wdiDelBSSRspCb = (WDI_DelBSSRspCb)pWDICtx->pfncRspCB;
16307
16308 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016309 Extract response and send it to UMAC
Jeff Johnson295189b2012-06-20 16:38:30 -070016310 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016311 wpalMemoryCopy( &halDelBssRspMsg.deleteBssRspParams,
16312 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016313 sizeof(halDelBssRspMsg.deleteBssRspParams));
16314
16315
16316 wdiDelBSSParams.wdiStatus = WDI_HAL_2_WDI_STATUS(
Jeff Johnsone7245742012-09-05 17:12:55 -070016317 halDelBssRspMsg.deleteBssRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070016318
16319 wpalMutexAcquire(&pWDICtx->wptMutex);
16320
16321 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016322 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070016323 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016324 ucCurrentBSSSesIdx = WDI_FindAssocSessionByBSSIdx( pWDICtx,
16325 halDelBssRspMsg.deleteBssRspParams.bssIdx,
16326 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070016327
16328 /*-----------------------------------------------------------------------
16329 Del BSS response can only be received for an existing assoc that
Jeff Johnsone7245742012-09-05 17:12:55 -070016330 is current and in progress
Jeff Johnson295189b2012-06-20 16:38:30 -070016331 -----------------------------------------------------------------------*/
16332 if ( NULL == pBSSSes )
16333 {
16334 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16335 "Association sequence for this BSS does not yet exist or "
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -080016336 "association no longer in progress - mysterious HAL response");
16337
16338 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
16339
16340 wpalMutexRelease(&pWDICtx->wptMutex);
16341 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070016342 }
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -080016343
16344 /*Extract BSSID for the response to UMAC*/
16345 wpalMemoryCopy(wdiDelBSSParams.macBSSID,
16346 pBSSSes->macBSSID, WDI_MAC_ADDR_LEN);
16347
16348 wdiDelBSSParams.ucBssIdx = halDelBssRspMsg.deleteBssRspParams.bssIdx;
16349
16350 /*-----------------------------------------------------------------------
16351 The current session will be deleted
16352 -----------------------------------------------------------------------*/
16353 WDI_DeleteSession(pWDICtx, pBSSSes);
16354
16355
16356 /* Delete the BCAST STA entry from the STA table if SAP/GO session is deleted */
krunal soni3fc26642013-10-08 22:41:42 -070016357 if(WDI_INFRA_AP_MODE == pBSSSes->wdiBssType ||
16358 pBSSSes->wdiBssType == WDI_IBSS_MODE)
Jeff Johnson295189b2012-06-20 16:38:30 -070016359 {
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -080016360 (void)WDI_STATableDelSta( pWDICtx, pBSSSes->bcastStaIdx );
Madan Mohan Koyyalamudif371f172012-10-31 16:35:43 -070016361 }
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -080016362
16363 /* Delete the STA's in this BSS */
16364 WDI_STATableBSSDelSta(pWDICtx, halDelBssRspMsg.deleteBssRspParams.bssIdx);
16365
Jeff Johnson295189b2012-06-20 16:38:30 -070016366 wpalMutexRelease(&pWDICtx->wptMutex);
16367
16368 /*Notify UMAC*/
16369 wdiDelBSSRspCb( &wdiDelBSSParams, pWDICtx->pRspCBUserData);
16370
Jeff Johnsone7245742012-09-05 17:12:55 -070016371 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016372}/*WDI_ProcessDelBSSRsp*/
16373
16374/**
16375 @brief Process Post Assoc Rsp function (called when a response
16376 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016377
16378 @param pWDICtx: pointer to the WLAN DAL context
16379 pEventData: pointer to the event information structure
16380
Jeff Johnson295189b2012-06-20 16:38:30 -070016381 @see
16382 @return Result of the function call
16383*/
16384WDI_Status
16385WDI_ProcessPostAssocRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016386(
Jeff Johnson295189b2012-06-20 16:38:30 -070016387 WDI_ControlBlockType* pWDICtx,
16388 WDI_EventInfoType* pEventData
16389)
16390{
16391 WDI_PostAssocRspParamsType wdiPostAssocParams;
16392 WDI_PostAssocRspCb wdiPostAssocRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070016393 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070016394 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070016395 tPostAssocRspMsg halPostAssocRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070016396 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16397
16398 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016399 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016400 -------------------------------------------------------------------------*/
16401 if (( NULL == pEventData ) ||
16402 ( NULL == pEventData->pEventData))
16403 {
16404 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016405 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016406 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016407 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016408 }
16409
16410 wdiPostAssocRspCb = (WDI_PostAssocRspCb)pWDICtx->pfncRspCB;
16411
16412 /*-------------------------------------------------------------------------
16413 Extract response and send it to UMAC
16414 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016415 wpalMemoryCopy( &halPostAssocRspMsg.postAssocRspParams,
16416 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016417 sizeof(halPostAssocRspMsg.postAssocRspParams));
16418
16419 /*Extract the Post Assoc STA Params */
16420
Jeff Johnsone7245742012-09-05 17:12:55 -070016421 wdiPostAssocParams.staParams.ucSTAIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070016422 halPostAssocRspMsg.postAssocRspParams.configStaRspParams.staIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016423 wdiPostAssocParams.staParams.ucUcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070016424 halPostAssocRspMsg.postAssocRspParams.configStaRspParams.ucUcastSig;
Jeff Johnsone7245742012-09-05 17:12:55 -070016425 wdiPostAssocParams.staParams.ucBcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070016426 halPostAssocRspMsg.postAssocRspParams.configStaRspParams.ucBcastSig;
16427
Jeff Johnsone7245742012-09-05 17:12:55 -070016428 wdiPostAssocParams.wdiStatus =
16429 WDI_HAL_2_WDI_STATUS(halPostAssocRspMsg.postAssocRspParams.configStaRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070016430
16431 /*Copy the MAC addresses from the cached storage in the WDI CB as they are not
16432 included in the response */
Jeff Johnsone7245742012-09-05 17:12:55 -070016433 wpalMemoryCopy( wdiPostAssocParams.staParams.macSTA,
16434 pWDICtx->wdiCachedPostAssocReq.wdiSTAParams.macSTA,
Jeff Johnson295189b2012-06-20 16:38:30 -070016435 WDI_MAC_ADDR_LEN);
16436
16437 /* Extract Post Assoc BSS Params */
16438
Jeff Johnsone7245742012-09-05 17:12:55 -070016439 wpalMemoryCopy( wdiPostAssocParams.bssParams.macBSSID,
16440 pWDICtx->wdiCachedPostAssocReq.wdiBSSParams.macBSSID,
16441 WDI_MAC_ADDR_LEN);
Jeff Johnson295189b2012-06-20 16:38:30 -070016442
16443 /*Copy the MAC addresses from the cached storage in the WDI CB as they are not
16444 included in the response */
Jeff Johnsone7245742012-09-05 17:12:55 -070016445 wpalMemoryCopy( wdiPostAssocParams.bssParams.macSTA,
Jeff Johnson295189b2012-06-20 16:38:30 -070016446 pWDICtx->wdiCachedPostAssocReq.wdiBSSParams.wdiSTAContext
16447 .macSTA, WDI_MAC_ADDR_LEN);
16448
Jeff Johnsone7245742012-09-05 17:12:55 -070016449 wdiPostAssocParams.bssParams.ucBcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070016450 halPostAssocRspMsg.postAssocRspParams.configStaRspParams.ucBcastSig;
16451
Jeff Johnsone7245742012-09-05 17:12:55 -070016452 wdiPostAssocParams.bssParams.ucUcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070016453 halPostAssocRspMsg.postAssocRspParams.configStaRspParams.ucUcastSig;
16454
16455 wdiPostAssocParams.bssParams.ucBSSIdx =
16456 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bssIdx;
16457
Jeff Johnsone7245742012-09-05 17:12:55 -070016458 wdiPostAssocParams.bssParams.ucSTAIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070016459 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bssStaIdx;
16460
16461 wpalMutexAcquire(&pWDICtx->wptMutex);
16462
16463 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016464 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070016465 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016466 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
Jeff Johnson295189b2012-06-20 16:38:30 -070016467 wdiPostAssocParams.bssParams.
Jeff Johnsone7245742012-09-05 17:12:55 -070016468 macBSSID, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070016469
16470 /*-----------------------------------------------------------------------
16471 Post assoc response can only be received for an existing assoc that
Jeff Johnsone7245742012-09-05 17:12:55 -070016472 is current and in progress
Jeff Johnson295189b2012-06-20 16:38:30 -070016473 -----------------------------------------------------------------------*/
16474 if (( NULL == pBSSSes ) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070016475 ( ucCurrentBSSSesIdx != pWDICtx->ucCurrentBSSSesIdx ) ||
Jeff Johnson295189b2012-06-20 16:38:30 -070016476 ( eWLAN_PAL_FALSE == pWDICtx->bAssociationInProgress ))
16477 {
16478 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16479 "Association sequence for this BSS does not yet exist or "
16480 "association no longer in progress - mysterious HAL response");
16481
Jeff Johnsone7245742012-09-05 17:12:55 -070016482 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
16483
Jeff Johnson295189b2012-06-20 16:38:30 -070016484 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070016485 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070016486 }
16487
16488 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016489 Post Assoc Request is only allowed in Joining state
Jeff Johnson295189b2012-06-20 16:38:30 -070016490 -----------------------------------------------------------------------*/
16491 if ( WDI_ASSOC_JOINING_ST != pBSSSes->wdiAssocState)
16492 {
16493 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16494 "Post Assoc not allowed before JOIN - failing request "
16495 "strange HAL response");
16496
Jeff Johnsone7245742012-09-05 17:12:55 -070016497 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
16498
Jeff Johnson295189b2012-06-20 16:38:30 -070016499 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070016500 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070016501 }
16502
16503 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016504 If assoc has failed the current session will be deleted
Jeff Johnson295189b2012-06-20 16:38:30 -070016505 -----------------------------------------------------------------------*/
16506 if ( WDI_STATUS_SUCCESS != wdiPostAssocParams.wdiStatus )
16507 {
16508 /*Association was failed by HAL - remove session*/
16509 WDI_DeleteSession(pWDICtx, pBSSSes);
16510 }
16511 else
16512 {
16513 /*Transition to state POST Assoc*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016514 pBSSSes->wdiAssocState = WDI_ASSOC_POST_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -070016515
16516 /*Save DPU Info*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016517 pBSSSes->bcastMgmtDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070016518 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.mgmtDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016519 pBSSSes->bcastMgmtDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070016520 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.mgmtDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070016521 pBSSSes->bcastDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070016522 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bcastDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016523 pBSSSes->bcastDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070016524 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bcastDpuSignature;
16525
Jeff Johnsone7245742012-09-05 17:12:55 -070016526 pBSSSes->ucBSSIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070016527 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bssIdx;
16528 }
16529
16530 /*Association no longer in progress */
16531 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
16532
16533 /*Association no longer in progress - prepare pending assoc for processing*/
16534 WDI_DequeueAssocRequest(pWDICtx);
16535
16536 wpalMutexRelease(&pWDICtx->wptMutex);
16537
16538 /*Notify UMAC*/
16539 wdiPostAssocRspCb( &wdiPostAssocParams, pWDICtx->pRspCBUserData);
16540
Jeff Johnsone7245742012-09-05 17:12:55 -070016541 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016542}/*WDI_ProcessPostAssocRsp*/
16543
16544/**
Jeff Johnsone7245742012-09-05 17:12:55 -070016545 @brief Process Del STA Rsp function (called when a response is
Jeff Johnson295189b2012-06-20 16:38:30 -070016546 being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016547
16548 @param pWDICtx: pointer to the WLAN DAL context
16549 pEventData: pointer to the event information structure
16550
Jeff Johnson295189b2012-06-20 16:38:30 -070016551 @see
16552 @return Result of the function call
16553*/
16554WDI_Status
16555WDI_ProcessDelSTARsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016556(
Jeff Johnson295189b2012-06-20 16:38:30 -070016557 WDI_ControlBlockType* pWDICtx,
16558 WDI_EventInfoType* pEventData
16559)
16560{
16561 WDI_DelSTARspParamsType wdiDelSTARsp;
16562 WDI_DelSTARspCb wdiDelSTARspCb;
16563 wpt_uint8 staType;
Jeff Johnsone7245742012-09-05 17:12:55 -070016564 tDeleteStaRspMsg halDelStaRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070016565 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16566
16567 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016568 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016569 -------------------------------------------------------------------------*/
16570 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16571 ( NULL == pEventData->pEventData))
16572 {
16573 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016574 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016575 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016576 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016577 }
16578
16579 wdiDelSTARspCb = (WDI_DelSTARspCb)pWDICtx->pfncRspCB;
16580
16581 /*-------------------------------------------------------------------------
16582 Extract response and send it to UMAC
16583 -------------------------------------------------------------------------*/
16584 wpalMemoryCopy( &halDelStaRspMsg.delStaRspParams,
Jeff Johnsone7245742012-09-05 17:12:55 -070016585 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016586 sizeof(halDelStaRspMsg.delStaRspParams));
16587
16588 wdiDelSTARsp.ucSTAIdx = halDelStaRspMsg.delStaRspParams.staId;
Jeff Johnsone7245742012-09-05 17:12:55 -070016589 wdiDelSTARsp.wdiStatus =
16590 WDI_HAL_2_WDI_STATUS(halDelStaRspMsg.delStaRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070016591
16592 WDI_STATableGetStaType(pWDICtx, wdiDelSTARsp.ucSTAIdx, &staType);
16593
16594 /* If the DEL STA request is for self STA do not delete it - Really weird!!What happens in concurrency */
16595 if(staType == WDI_STA_ENTRY_SELF)
16596 {
16597 WDI_StaStruct* pSTATable = (WDI_StaStruct*) pWDICtx->staTable;
16598
16599 /* At this point add the self-STA */
16600
16601 /*! TO DO: wdiAddSTAParam.ucWmmEnabled */
16602 /*! TO DO: wdiAddSTAParam.ucHTCapable */
16603 /*! TO DO: wdiAddSTAParam.ucRmfEnabled */
16604
16605#define WDI_DPU_SELF_STA_DEFAULT_IDX 0
16606#define WDI_DPU_SELF_STA_DEFAULT_SIG 0
16607
16608 //all DPU indices are the same for self STA
16609 pSTATable[wdiDelSTARsp.ucSTAIdx].dpuIndex = WDI_DPU_SELF_STA_DEFAULT_IDX;
16610 pSTATable[wdiDelSTARsp.ucSTAIdx].bcastDpuIndex = WDI_DPU_SELF_STA_DEFAULT_IDX;
16611 pSTATable[wdiDelSTARsp.ucSTAIdx].bcastMgmtDpuIndex = WDI_DPU_SELF_STA_DEFAULT_IDX;
16612 pSTATable[wdiDelSTARsp.ucSTAIdx].bcastDpuSignature = WDI_DPU_SELF_STA_DEFAULT_SIG;
16613 pSTATable[wdiDelSTARsp.ucSTAIdx].bcastMgmtDpuSignature = WDI_DPU_SELF_STA_DEFAULT_SIG;
16614 pSTATable[wdiDelSTARsp.ucSTAIdx].dpuSig = WDI_DPU_SELF_STA_DEFAULT_SIG;
Madan Mohan Koyyalamudi15a48f02012-10-05 17:13:53 -070016615
16616 pSTATable[wdiDelSTARsp.ucSTAIdx].bssIdx = WDI_BSS_INVALID_IDX;
Jeff Johnson295189b2012-06-20 16:38:30 -070016617 }
16618 else
16619 {
16620 //Delete the station in the table
16621 WDI_STATableDelSta( pWDICtx, wdiDelSTARsp.ucSTAIdx);
16622 }
16623
16624 /*Notify UMAC*/
16625 wdiDelSTARspCb( &wdiDelSTARsp, pWDICtx->pRspCBUserData);
16626
Jeff Johnsone7245742012-09-05 17:12:55 -070016627 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016628}/*WDI_ProcessDelSTARsp*/
16629
16630
16631/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070016632 Security Response Processing Functions
Jeff Johnson295189b2012-06-20 16:38:30 -070016633==========================================================================*/
16634
16635/**
16636 @brief Process Set BSS Key Rsp function (called when a response
16637 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016638
16639 @param pWDICtx: pointer to the WLAN DAL context
16640 pEventData: pointer to the event information structure
16641
Jeff Johnson295189b2012-06-20 16:38:30 -070016642 @see
16643 @return Result of the function call
16644*/
16645WDI_Status
16646WDI_ProcessSetBssKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016647(
Jeff Johnson295189b2012-06-20 16:38:30 -070016648 WDI_ControlBlockType* pWDICtx,
16649 WDI_EventInfoType* pEventData
16650)
16651{
16652 WDI_Status wdiStatus;
16653 eHalStatus halStatus;
16654 WDI_SetBSSKeyRspCb wdiSetBSSKeyRspCb;
16655 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16656
16657 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016658 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016659 -------------------------------------------------------------------------*/
16660 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16661 ( NULL == pEventData->pEventData))
16662 {
16663 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016664 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016665 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016666 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016667 }
16668
16669 wdiSetBSSKeyRspCb = (WDI_SetBSSKeyRspCb)pWDICtx->pfncRspCB;
16670
16671 /*-------------------------------------------------------------------------
16672 Extract response and send it to UMAC
16673 -------------------------------------------------------------------------*/
16674 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070016675 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016676
16677 if ( eHAL_STATUS_SUCCESS != halStatus )
16678 {
16679 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16680 "Set BSS Key failed with status %s (%d)",
16681 WDI_getHALStatusMsgString(halStatus),
16682 halStatus);
16683 /* send the status to UMAC, don't return from here*/
16684 }
16685
16686 /*Notify UMAC*/
16687 wdiSetBSSKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16688
Jeff Johnsone7245742012-09-05 17:12:55 -070016689 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016690}/*WDI_ProcessSetBssKeyRsp*/
16691
16692/**
16693 @brief Process Remove BSS Key Rsp function (called when a response
16694 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016695
16696 @param pWDICtx: pointer to the WLAN DAL context
16697 pEventData: pointer to the event information structure
16698
Jeff Johnson295189b2012-06-20 16:38:30 -070016699 @see
16700 @return Result of the function call
16701*/
16702WDI_Status
16703WDI_ProcessRemoveBssKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016704(
Jeff Johnson295189b2012-06-20 16:38:30 -070016705 WDI_ControlBlockType* pWDICtx,
16706 WDI_EventInfoType* pEventData
16707)
16708{
16709 WDI_Status wdiStatus;
16710 eHalStatus halStatus;
16711 WDI_RemoveBSSKeyRspCb wdiRemoveBSSKeyRspCb;
16712 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16713
16714 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016715 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016716 -------------------------------------------------------------------------*/
16717 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16718 ( NULL == pEventData->pEventData))
16719 {
16720 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016721 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016722 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016723 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016724 }
16725
16726 wdiRemoveBSSKeyRspCb = (WDI_RemoveBSSKeyRspCb)pWDICtx->pfncRspCB;
16727
16728 /*-------------------------------------------------------------------------
16729 Extract response and send it to UMAC
16730 -------------------------------------------------------------------------*/
16731 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070016732 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016733
16734 if ( eHAL_STATUS_SUCCESS != halStatus )
16735 {
16736 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16737 "Remove BSS Key failed with status %s (%d )",
16738 WDI_getHALStatusMsgString(halStatus),
16739 halStatus);
16740 /* send the status to UMAC, don't return from here*/
16741 }
16742
16743 /*Notify UMAC*/
16744 wdiRemoveBSSKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16745
Jeff Johnsone7245742012-09-05 17:12:55 -070016746 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016747}/*WDI_ProcessSetBssKeyRsp*/
16748
16749
16750/**
16751 @brief Process Set STA Key Rsp function (called when a response
16752 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016753
16754 @param pWDICtx: pointer to the WLAN DAL context
16755 pEventData: pointer to the event information structure
16756
Jeff Johnson295189b2012-06-20 16:38:30 -070016757 @see
16758 @return Result of the function call
16759*/
16760WDI_Status
16761WDI_ProcessSetStaKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016762(
Jeff Johnson295189b2012-06-20 16:38:30 -070016763 WDI_ControlBlockType* pWDICtx,
16764 WDI_EventInfoType* pEventData
16765)
16766{
16767 WDI_Status wdiStatus;
16768 eHalStatus halStatus;
16769 WDI_SetSTAKeyRspCb wdiSetSTAKeyRspCb;
16770 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16771
16772 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016773 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016774 -------------------------------------------------------------------------*/
16775 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16776 ( NULL == pEventData->pEventData))
16777 {
16778 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016779 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016780 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016781 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016782 }
16783
16784 wdiSetSTAKeyRspCb = (WDI_SetSTAKeyRspCb)pWDICtx->pfncRspCB;
16785
16786 /*-------------------------------------------------------------------------
16787 Extract response and send it to UMAC
16788 -------------------------------------------------------------------------*/
16789 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070016790 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016791
16792 if ( eHAL_STATUS_SUCCESS != halStatus )
16793 {
16794 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16795 "Set STA Key failed with status %s (%d)",
16796 WDI_getHALStatusMsgString(halStatus),
16797 halStatus);
16798 /* send the status to UMAC, don't return from here*/
16799 }
16800
16801 /*Notify UMAC*/
16802 wdiSetSTAKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16803
Jeff Johnsone7245742012-09-05 17:12:55 -070016804 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016805}/*WDI_ProcessSetSTAKeyRsp*/
16806
16807/**
Jeff Johnsone7245742012-09-05 17:12:55 -070016808 @brief Process Remove STA Key Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070016809 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016810
16811 @param pWDICtx: pointer to the WLAN DAL context
16812 pEventData: pointer to the event information structure
16813
Jeff Johnson295189b2012-06-20 16:38:30 -070016814 @see
16815 @return Result of the function call
16816*/
16817WDI_Status
16818WDI_ProcessRemoveStaKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016819(
Jeff Johnson295189b2012-06-20 16:38:30 -070016820 WDI_ControlBlockType* pWDICtx,
16821 WDI_EventInfoType* pEventData
16822)
16823{
16824 WDI_Status wdiStatus;
16825 eHalStatus halStatus;
16826 WDI_RemoveSTAKeyRspCb wdiRemoveSTAKeyRspCb;
16827 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16828
16829 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016830 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016831 -------------------------------------------------------------------------*/
16832 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16833 ( NULL == pEventData->pEventData))
16834 {
16835 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016836 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016837 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016838 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016839 }
16840
16841 wdiRemoveSTAKeyRspCb = (WDI_RemoveSTAKeyRspCb)pWDICtx->pfncRspCB;
16842
16843 /*-------------------------------------------------------------------------
16844 Extract response and send it to UMAC
16845 -------------------------------------------------------------------------*/
16846 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070016847 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016848
16849 if ( eHAL_STATUS_SUCCESS != halStatus )
16850 {
16851 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16852 "Remove STA Key failed with status %s (%d)",
16853 WDI_getHALStatusMsgString(halStatus),
16854 halStatus);
16855 /* send the status to UMAC, don't return from here*/
16856 }
16857
16858 /*Notify UMAC*/
16859 wdiRemoveSTAKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16860
Jeff Johnsone7245742012-09-05 17:12:55 -070016861 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016862}/*WDI_ProcessRemoveStaKeyRsp*/
16863
16864/**
Jeff Johnsone7245742012-09-05 17:12:55 -070016865 @brief Process Set STA Bcast Key Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070016866 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016867
16868 @param pWDICtx: pointer to the WLAN DAL context
16869 pEventData: pointer to the event information structure
16870
Jeff Johnson295189b2012-06-20 16:38:30 -070016871 @see
16872 @return Result of the function call
16873*/
16874WDI_Status
16875WDI_ProcessSetStaBcastKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016876(
Jeff Johnson295189b2012-06-20 16:38:30 -070016877 WDI_ControlBlockType* pWDICtx,
16878 WDI_EventInfoType* pEventData
16879)
16880{
16881 WDI_Status wdiStatus;
16882 eHalStatus halStatus;
16883 WDI_SetSTAKeyRspCb wdiSetSTABcastKeyRspCb;
16884 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16885
16886 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016887 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016888 -------------------------------------------------------------------------*/
16889 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16890 ( NULL == pEventData->pEventData))
16891 {
16892 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016893 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016894 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016895 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016896 }
16897
16898 wdiSetSTABcastKeyRspCb = (WDI_SetSTAKeyRspCb)pWDICtx->pfncRspCB;
16899
16900 /*-------------------------------------------------------------------------
16901 Extract response and send it to UMAC
16902 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016903 wpalMemoryCopy( &halStatus,
16904 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016905 sizeof(halStatus));
16906
Jeff Johnsone7245742012-09-05 17:12:55 -070016907 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016908
16909 if ( eHAL_STATUS_SUCCESS != halStatus )
16910 {
16911 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16912 "Set STA Key failed with status %s (%d)",
16913 WDI_getHALStatusMsgString(halStatus),
16914 halStatus);
16915 /* send the status to UMAC, don't return from here*/
16916 }
16917
16918 /*Notify UMAC*/
16919 wdiSetSTABcastKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16920
Jeff Johnsone7245742012-09-05 17:12:55 -070016921 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016922}/*WDI_ProcessSetSTABcastKeyRsp*/
16923
16924/**
16925 @brief Process Remove STA Bcast Key Rsp function (called when a
16926 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016927
16928 @param pWDICtx: pointer to the WLAN DAL context
16929 pEventData: pointer to the event information structure
16930
Jeff Johnson295189b2012-06-20 16:38:30 -070016931 @see
16932 @return Result of the function call
16933*/
16934WDI_Status
16935WDI_ProcessRemoveStaBcastKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016936(
Jeff Johnson295189b2012-06-20 16:38:30 -070016937 WDI_ControlBlockType* pWDICtx,
16938 WDI_EventInfoType* pEventData
16939)
16940{
16941 WDI_Status wdiStatus;
16942 eHalStatus halStatus;
16943 WDI_RemoveSTAKeyRspCb wdiRemoveSTABcastKeyRspCb;
16944 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16945
16946 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016947 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016948 -------------------------------------------------------------------------*/
16949 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16950 ( NULL == pEventData->pEventData))
16951 {
16952 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016953 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016954 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016955 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016956 }
16957
16958 wdiRemoveSTABcastKeyRspCb = (WDI_RemoveSTAKeyRspCb)pWDICtx->pfncRspCB;
16959
16960 /*-------------------------------------------------------------------------
16961 Extract response and send it to UMAC
16962 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016963 wpalMemoryCopy( &halStatus,
16964 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016965 sizeof(halStatus));
16966
Jeff Johnsone7245742012-09-05 17:12:55 -070016967 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016968
16969 if ( eHAL_STATUS_SUCCESS != halStatus )
16970 {
16971 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16972 "Remove STA Key failed with status %s (%d)",
16973 WDI_getHALStatusMsgString(halStatus),
16974 halStatus);
16975 /* send the status to UMAC, don't return from here*/
16976 }
16977
16978 /*Notify UMAC*/
16979 wdiRemoveSTABcastKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16980
Jeff Johnsone7245742012-09-05 17:12:55 -070016981 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016982}/*WDI_ProcessRemoveStaBcastKeyRsp*/
16983
16984
16985/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070016986 QoS and BA Response Processing Functions
Jeff Johnson295189b2012-06-20 16:38:30 -070016987==========================================================================*/
16988
16989/**
16990 @brief Process Add TSpec Rsp function (called when a response
16991 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016992
16993 @param pWDICtx: pointer to the WLAN DAL context
16994 pEventData: pointer to the event information structure
16995
Jeff Johnson295189b2012-06-20 16:38:30 -070016996 @see
16997 @return Result of the function call
16998*/
16999WDI_Status
17000WDI_ProcessAddTSpecRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017001(
Jeff Johnson295189b2012-06-20 16:38:30 -070017002 WDI_ControlBlockType* pWDICtx,
17003 WDI_EventInfoType* pEventData
17004)
17005{
17006 WDI_Status wdiStatus;
17007 eHalStatus halStatus;
17008 WDI_AddTsRspCb wdiAddTsRspCb;
17009 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17010
17011 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017012 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017013 -------------------------------------------------------------------------*/
17014 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17015 ( NULL == pEventData->pEventData))
17016 {
17017 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017018 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017019 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017020 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017021 }
17022
17023 wdiAddTsRspCb = (WDI_AddTsRspCb)pWDICtx->pfncRspCB;
17024
17025 /*-------------------------------------------------------------------------
17026 Extract response and send it to UMAC
17027 -------------------------------------------------------------------------*/
17028 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070017029 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017030
17031 /*Notify UMAC*/
17032 wdiAddTsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17033
Jeff Johnsone7245742012-09-05 17:12:55 -070017034 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017035}/*WDI_ProcessAddTSpecRsp*/
17036
17037
Sunil Duttbd736ed2014-05-26 21:19:41 +053017038
17039#ifdef WLAN_FEATURE_LINK_LAYER_STATS
17040
17041WDI_Status
17042WDI_ProcessLLStatsSetRsp
17043(
17044 WDI_ControlBlockType* pWDICtx,
17045 WDI_EventInfoType* pEventData
17046)
17047{
17048 WDI_LLStatsSetRspCb wdiLLStatsSetRspCb;
17049
17050 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17051 "%s: Enter ", __func__);
17052 /*-------------------------------------------------------------------------
17053 Sanity check
17054 -------------------------------------------------------------------------*/
17055 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17056 ( NULL == pEventData->pEventData))
17057 {
17058 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
17059 "%s: Invalid parameters", __func__);
17060 WDI_ASSERT(0);
17061 return WDI_STATUS_E_FAILURE;
17062 }
17063
17064 wdiLLStatsSetRspCb = (WDI_LLStatsSetRspCb)pWDICtx->pfncRspCB;
17065
17066 wdiLLStatsSetRspCb((void *) pEventData->pEventData, pWDICtx->pRspCBUserData);
17067
17068 return WDI_STATUS_SUCCESS;
17069}
17070
17071WDI_Status
17072WDI_ProcessLLStatsGetRsp
17073(
17074 WDI_ControlBlockType* pWDICtx,
17075 WDI_EventInfoType* pEventData
17076)
17077{
17078 WDI_LLStatsGetRspCb wdiLLStatsGetRspCb;
17079
17080 /*-------------------------------------------------------------------------
17081 Sanity check
17082 -------------------------------------------------------------------------*/
17083 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17084 ( NULL == pEventData->pEventData))
17085 {
17086 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
17087 "%s: Invalid parameters", __func__);
17088 WDI_ASSERT(0);
17089 return WDI_STATUS_E_FAILURE;
17090 }
17091 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17092 "%s: Enter ", __func__);
17093
17094 wdiLLStatsGetRspCb = (WDI_LLStatsGetRspCb)pWDICtx->pfncRspCB;
17095
17096 wdiLLStatsGetRspCb((void *) pEventData->pEventData, pWDICtx->pRspCBUserData);
17097
17098 return WDI_STATUS_SUCCESS;
17099}
17100
17101WDI_Status
17102WDI_ProcessLLStatsClearRsp
17103(
17104 WDI_ControlBlockType* pWDICtx,
17105 WDI_EventInfoType* pEventData
17106)
17107{
17108 WDI_LLStatsClearRspCb wdiLLStatsClearRspCb;
17109
17110 /*-------------------------------------------------------------------------
17111 Sanity check
17112 -------------------------------------------------------------------------*/
17113 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17114 ( NULL == pEventData->pEventData))
17115 {
17116 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
17117 "%s: Invalid parameters", __func__);
17118 WDI_ASSERT(0);
17119 return WDI_STATUS_E_FAILURE;
17120 }
17121
17122 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17123 "%s: CLEAR RESPONSE CALL BACK", __func__);
17124 wdiLLStatsClearRspCb = (WDI_LLStatsClearRspCb)pWDICtx->pfncRspCB;
17125
17126 wdiLLStatsClearRspCb((void *) pEventData->pEventData, pWDICtx->pRspCBUserData);
17127
17128 return WDI_STATUS_SUCCESS;
17129}
17130#endif /* WLAN_FEATURE_LINK_LAYER_STATS */
17131
Jeff Johnson295189b2012-06-20 16:38:30 -070017132/**
17133 @brief Process Del TSpec Rsp function (called when a response
17134 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017135
17136 @param pWDICtx: pointer to the WLAN DAL context
17137 pEventData: pointer to the event information structure
17138
Jeff Johnson295189b2012-06-20 16:38:30 -070017139 @see
17140 @return Result of the function call
17141*/
17142WDI_Status
17143WDI_ProcessDelTSpecRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017144(
Jeff Johnson295189b2012-06-20 16:38:30 -070017145 WDI_ControlBlockType* pWDICtx,
17146 WDI_EventInfoType* pEventData
17147)
17148{
17149 WDI_Status wdiStatus;
17150 eHalStatus halStatus;
17151 WDI_DelTsRspCb wdiDelTsRspCb;
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
17166 wdiDelTsRspCb = (WDI_DelTsRspCb)pWDICtx->pfncRspCB;
17167
17168 /*-------------------------------------------------------------------------
17169 Extract response and send it to UMAC
17170 -------------------------------------------------------------------------*/
17171 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070017172 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017173
17174 /*Notify UMAC*/
17175 wdiDelTsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17176
Jeff Johnsone7245742012-09-05 17:12:55 -070017177 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017178}/*WDI_ProcessDelTSpecRsp*/
17179
17180/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017181 @brief Process Update EDCA Parameters Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070017182 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017183
17184 @param pWDICtx: pointer to the WLAN DAL context
17185 pEventData: pointer to the event information structure
17186
Jeff Johnson295189b2012-06-20 16:38:30 -070017187 @see
17188 @return Result of the function call
17189*/
17190WDI_Status
17191WDI_ProcessUpdateEDCAParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017192(
Jeff Johnson295189b2012-06-20 16:38:30 -070017193 WDI_ControlBlockType* pWDICtx,
17194 WDI_EventInfoType* pEventData
17195)
17196{
17197 WDI_Status wdiStatus;
17198 eHalStatus halStatus;
17199 WDI_UpdateEDCAParamsRspCb wdiUpdateEDCAParamsRspCb;
17200 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17201
17202 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017203 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017204 -------------------------------------------------------------------------*/
17205 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17206 ( NULL == pEventData->pEventData))
17207 {
17208 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017209 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017210 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017211 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017212 }
17213
17214 wdiUpdateEDCAParamsRspCb = (WDI_UpdateEDCAParamsRspCb)pWDICtx->pfncRspCB;
17215
17216 /*-------------------------------------------------------------------------
17217 Extract response and send it to UMAC
17218 -------------------------------------------------------------------------*/
17219 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070017220 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017221
17222 /*Notify UMAC*/
17223 wdiUpdateEDCAParamsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17224
Jeff Johnsone7245742012-09-05 17:12:55 -070017225 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017226}/*WDI_ProcessUpdateEDCAParamsRsp*/
17227
17228
17229/**
17230 @brief Process Add BA Rsp function (called when a response
17231 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017232
17233 @param pWDICtx: pointer to the WLAN DAL context
17234 pEventData: pointer to the event information structure
17235
Jeff Johnson295189b2012-06-20 16:38:30 -070017236 @see
17237 @return Result of the function call
17238*/
17239WDI_Status
17240WDI_ProcessAddBASessionRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017241(
Jeff Johnson295189b2012-06-20 16:38:30 -070017242 WDI_ControlBlockType* pWDICtx,
17243 WDI_EventInfoType* pEventData
17244)
17245{
17246 WDI_AddBASessionRspCb wdiAddBASessionRspCb;
17247
17248 tAddBASessionRspParams halBASessionRsp;
17249 WDI_AddBASessionRspParamsType wdiBASessionRsp;
17250
Jeff Johnsone7245742012-09-05 17:12:55 -070017251
Jeff Johnson295189b2012-06-20 16:38:30 -070017252 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17253
17254 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017255 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017256 -------------------------------------------------------------------------*/
17257 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17258 ( NULL == pEventData->pEventData))
17259 {
17260 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017261 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017262 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017263 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017264 }
17265
17266 wdiAddBASessionRspCb = (WDI_AddBASessionRspCb)pWDICtx->pfncRspCB;
17267
17268 /*-------------------------------------------------------------------------
17269 Extract response and send it to UMAC
17270 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017271 wpalMemoryCopy( &halBASessionRsp,
17272 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017273 sizeof(halBASessionRsp));
17274
17275 wdiBASessionRsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halBASessionRsp.status);
17276
Jeff Johnson43971f52012-07-17 12:26:56 -070017277 if ( WDI_STATUS_SUCCESS == wdiBASessionRsp.wdiStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070017278 {
17279 wdiBASessionRsp.ucBaDialogToken = halBASessionRsp.baDialogToken;
17280 wdiBASessionRsp.ucBaTID = halBASessionRsp.baTID;
17281 wdiBASessionRsp.ucBaBufferSize = halBASessionRsp.baBufferSize;
17282 wdiBASessionRsp.usBaSessionID = halBASessionRsp.baSessionID;
17283 wdiBASessionRsp.ucWinSize = halBASessionRsp.winSize;
17284 wdiBASessionRsp.ucSTAIdx = halBASessionRsp.STAID;
17285 wdiBASessionRsp.usBaSSN = halBASessionRsp.SSN;
17286 }
17287
17288 /*Notify UMAC*/
17289 wdiAddBASessionRspCb( &wdiBASessionRsp, pWDICtx->pRspCBUserData);
17290
Jeff Johnsone7245742012-09-05 17:12:55 -070017291 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017292}/*WDI_ProcessAddSessionBARsp*/
17293
17294
17295/**
17296 @brief Process Del BA Rsp function (called when a response
17297 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017298
17299 @param pWDICtx: pointer to the WLAN DAL context
17300 pEventData: pointer to the event information structure
17301
Jeff Johnson295189b2012-06-20 16:38:30 -070017302 @see
17303 @return Result of the function call
17304*/
17305WDI_Status
17306WDI_ProcessDelBARsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017307(
Jeff Johnson295189b2012-06-20 16:38:30 -070017308 WDI_ControlBlockType* pWDICtx,
17309 WDI_EventInfoType* pEventData
17310)
17311{
17312 WDI_Status wdiStatus;
17313 eHalStatus halStatus;
17314 WDI_DelBARspCb wdiDelBARspCb;
17315 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17316
17317 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017318 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017319 -------------------------------------------------------------------------*/
17320 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17321 ( NULL == pEventData->pEventData))
17322 {
17323 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017324 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017325 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017326 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017327 }
17328
17329 wdiDelBARspCb = (WDI_DelBARspCb)pWDICtx->pfncRspCB;
17330
17331 /*-------------------------------------------------------------------------
17332 Extract response and send it to UMAC
17333 -------------------------------------------------------------------------*/
17334 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070017335 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017336
17337 if ( eHAL_STATUS_SUCCESS == halStatus )
17338 {
17339 /*! TO DO: I should notify the DAL Data Path that the BA was deleted*/
17340 }
17341
17342 /*Notify UMAC*/
17343 wdiDelBARspCb( wdiStatus, pWDICtx->pRspCBUserData);
17344
Jeff Johnsone7245742012-09-05 17:12:55 -070017345 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017346}/*WDI_ProcessDelBARsp*/
17347
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -080017348#ifdef FEATURE_WLAN_ESE
Jeff Johnson295189b2012-06-20 16:38:30 -070017349/**
17350 @brief Process TSM Stats Rsp function (called when a response
17351 is being received over the bus from HAL)
17352
17353 @param pWDICtx: pointer to the WLAN DAL context
17354 pEventData: pointer to the event information structure
17355
17356 @see
17357 @return Result of the function call
17358*/
17359WDI_Status
17360WDI_ProcessTsmStatsRsp
17361(
17362 WDI_ControlBlockType* pWDICtx,
17363 WDI_EventInfoType* pEventData
17364)
17365{
17366 WDI_TsmRspCb wdiTsmStatsRspCb;
17367 tTsmStatsRspMsg halTsmStatsRspMsg;
17368 WDI_TSMStatsRspParamsType wdiTsmStatsRspParams;
17369 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17370
17371 /*-------------------------------------------------------------------------
17372 Sanity check
17373 -------------------------------------------------------------------------*/
17374 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17375 ( NULL == pEventData->pEventData))
17376 {
17377 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017378 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017379 WDI_ASSERT(0);
17380 return WDI_STATUS_E_FAILURE;
17381 }
17382
17383 wdiTsmStatsRspCb = (WDI_TsmRspCb)pWDICtx->pfncRspCB;
17384
17385 /*-------------------------------------------------------------------------
17386 Unpack HAL Response Message - the header was already extracted by the
17387 main Response Handling procedure
17388 -------------------------------------------------------------------------*/
17389 wpalMemoryCopy( &halTsmStatsRspMsg.tsmStatsRspParams,
17390 pEventData->pEventData,
17391 sizeof(halTsmStatsRspMsg.tsmStatsRspParams));
17392
17393 wdiTsmStatsRspParams.UplinkPktQueueDly = halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktQueueDly;
17394 wpalMemoryCopy( wdiTsmStatsRspParams.UplinkPktQueueDlyHist,
17395 halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktQueueDlyHist,
17396 sizeof(halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktQueueDlyHist)/
17397 sizeof(halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktQueueDlyHist[0]));
17398 wdiTsmStatsRspParams.UplinkPktTxDly = halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktTxDly;
17399 wdiTsmStatsRspParams.UplinkPktLoss = halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktLoss;
17400 wdiTsmStatsRspParams.UplinkPktCount = halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktCount;
17401 wdiTsmStatsRspParams.RoamingCount = halTsmStatsRspMsg.tsmStatsRspParams.RoamingCount;
17402 wdiTsmStatsRspParams.RoamingDly = halTsmStatsRspMsg.tsmStatsRspParams.RoamingDly;
17403 wdiTsmStatsRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(
17404 halTsmStatsRspMsg.tsmStatsRspParams.status);
17405
17406 /*Notify UMAC*/
17407 wdiTsmStatsRspCb( &wdiTsmStatsRspParams, pWDICtx->pRspCBUserData);
17408
17409 return WDI_STATUS_SUCCESS;
17410}/*WDI_ProcessTsmStatsRsp*/
17411
17412#endif
17413
17414
17415
17416/**
17417 @brief Process Flush AC Rsp function (called when a response
17418 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017419
17420 @param pWDICtx: pointer to the WLAN DAL context
17421 pEventData: pointer to the event information structure
17422
Jeff Johnson295189b2012-06-20 16:38:30 -070017423 @see
17424 @return Result of the function call
17425*/
17426WDI_Status
17427WDI_ProcessFlushAcRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017428(
Jeff Johnson295189b2012-06-20 16:38:30 -070017429 WDI_ControlBlockType* pWDICtx,
17430 WDI_EventInfoType* pEventData
17431)
17432{
17433 WDI_Status wdiStatus;
17434 eHalStatus halStatus;
17435 WDI_FlushAcRspCb wdiFlushAcRspCb;
17436 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17437
17438 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017439 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017440 -------------------------------------------------------------------------*/
17441 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17442 ( NULL == pEventData->pEventData))
17443 {
17444 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017445 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017446 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017447 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017448 }
17449
17450 wdiFlushAcRspCb = (WDI_FlushAcRspCb)pWDICtx->pfncRspCB;
17451
17452 /*-------------------------------------------------------------------------
17453 Extract response and send it to UMAC
17454 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017455 wpalMemoryCopy( &halStatus,
17456 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017457 sizeof(halStatus));
17458
Jeff Johnsone7245742012-09-05 17:12:55 -070017459 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017460
17461 /*Notify UMAC*/
17462 wdiFlushAcRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17463
Jeff Johnsone7245742012-09-05 17:12:55 -070017464 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017465}/*WDI_ProcessFlushAcRsp*/
17466
17467/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017468 @brief Process BT AMP event Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070017469 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017470
17471 @param pWDICtx: pointer to the WLAN DAL context
17472 pEventData: pointer to the event information structure
17473
Jeff Johnson295189b2012-06-20 16:38:30 -070017474 @see
17475 @return Result of the function call
17476*/
17477WDI_Status
17478WDI_ProcessBtAmpEventRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017479(
Jeff Johnson295189b2012-06-20 16:38:30 -070017480 WDI_ControlBlockType* pWDICtx,
17481 WDI_EventInfoType* pEventData
17482)
17483{
17484 WDI_Status wdiStatus;
17485 eHalStatus halStatus;
17486 WDI_BtAmpEventRspCb wdiBtAmpEventRspCb;
17487 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17488
17489 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017490 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017491 -------------------------------------------------------------------------*/
17492 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17493 ( NULL == pEventData->pEventData))
17494 {
17495 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017496 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017497 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017498 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017499 }
17500
17501 wdiBtAmpEventRspCb = (WDI_BtAmpEventRspCb)pWDICtx->pfncRspCB;
17502
17503 /*-------------------------------------------------------------------------
17504 Extract response and send it to UMAC
17505 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017506 wpalMemoryCopy( &halStatus,
17507 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017508 sizeof(halStatus));
17509
Jeff Johnsone7245742012-09-05 17:12:55 -070017510 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017511
17512 /*Notify UMAC*/
17513 wdiBtAmpEventRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17514
Jeff Johnsone7245742012-09-05 17:12:55 -070017515 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017516}/*WDI_ProcessBtAmpEventRsp*/
17517
17518
17519/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017520 @brief Process ADD STA SELF Rsp function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070017521 when a response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017522
17523 @param pWDICtx: pointer to the WLAN DAL context
17524 pEventData: pointer to the event information structure
17525
Jeff Johnson295189b2012-06-20 16:38:30 -070017526 @see
17527 @return Result of the function call
17528*/
17529WDI_Status
17530WDI_ProcessAddSTASelfRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017531(
Jeff Johnson295189b2012-06-20 16:38:30 -070017532 WDI_ControlBlockType* pWDICtx,
17533 WDI_EventInfoType* pEventData
17534)
17535{
17536 WDI_AddSTASelfRspParamsType wdiAddSTASelfParams;
17537 WDI_AddSTASelfParamsRspCb wdiAddSTASelfReqParamsRspCb;
17538 tAddStaSelfRspMsg halAddStaSelfRsp;
17539 WDI_AddStaParams wdiAddSTAParam = {0};
17540 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17541
17542 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017543 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017544 -------------------------------------------------------------------------*/
17545 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17546 ( NULL == pEventData->pEventData))
17547 {
17548 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017549 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017550 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017551 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017552 }
17553
Jeff Johnsone7245742012-09-05 17:12:55 -070017554 wdiAddSTASelfReqParamsRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070017555 (WDI_AddSTASelfParamsRspCb)pWDICtx->pfncRspCB;
17556
17557 /*-------------------------------------------------------------------------
17558 Extract response and send it to UMAC
17559 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017560 wpalMemoryCopy( &halAddStaSelfRsp.addStaSelfRspParams,
17561 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017562 sizeof(halAddStaSelfRsp.addStaSelfRspParams));
17563
17564
Jeff Johnsone7245742012-09-05 17:12:55 -070017565 wdiAddSTASelfParams.wdiStatus =
17566 WDI_HAL_2_WDI_STATUS(halAddStaSelfRsp.addStaSelfRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070017567
Jeff Johnsone7245742012-09-05 17:12:55 -070017568 wdiAddSTASelfParams.ucSTASelfIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070017569 halAddStaSelfRsp.addStaSelfRspParams.selfStaIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070017570 wdiAddSTASelfParams.dpuIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070017571 halAddStaSelfRsp.addStaSelfRspParams.dpuIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070017572 wdiAddSTASelfParams.dpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070017573 halAddStaSelfRsp.addStaSelfRspParams.dpuSignature;
17574
17575 wpalMemoryCopy(wdiAddSTASelfParams.macSelfSta,
17576 pWDICtx->wdiCacheAddSTASelfReq.wdiAddSTASelfInfo.selfMacAddr,
17577 WDI_MAC_ADDR_LEN);
17578
17579
17580#ifdef HAL_SELF_STA_PER_BSS
17581
17582 /* At this point add the self-STA */
17583
17584 /*! TO DO: wdiAddSTAParam.ucWmmEnabled */
17585 /*! TO DO: wdiAddSTAParam.ucHTCapable */
17586 /*! TO DO: wdiAddSTAParam.ucRmfEnabled */
17587
17588 //all DPU indices are the same for self STA
17589
17590 /*DPU Information*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017591 wdiAddSTAParam.dpuIndex = wdiAddSTASelfParams.dpuIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070017592 wdiAddSTAParam.dpuSig = wdiAddSTASelfParams.dpuSignature;
17593 wdiAddSTAParam.bcastDpuSignature = wdiAddSTASelfParams.dpuSignature;
17594 wdiAddSTAParam.bcastMgmtDpuSignature = wdiAddSTASelfParams.dpuSignature;
17595 wdiAddSTAParam.bcastDpuIndex = wdiAddSTASelfParams.dpuIdx;
17596 wdiAddSTAParam.bcastMgmtDpuIndex = wdiAddSTASelfParams.dpuIdx;
17597
17598 wpalMemoryCopy(wdiAddSTAParam.staMacAddr, wdiAddSTASelfParams.macSelfSta,
17599 WDI_MAC_ADDR_LEN);
17600
17601 wdiAddSTAParam.ucStaType = WDI_STA_ENTRY_SELF; /* 0 - self */
17602 wdiAddSTAParam.ucSTAIdx = wdiAddSTASelfParams.ucSTASelfIdx;
17603
Jeff Johnsone7245742012-09-05 17:12:55 -070017604 if(halAddStaSelfRsp.addStaSelfRspParams.status
Jeff Johnson295189b2012-06-20 16:38:30 -070017605 != eHAL_STATUS_ADD_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO)
17606 {
17607 (void)WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
17608 }
17609#endif
17610
17611 /*Notify UMAC*/
17612 wdiAddSTASelfReqParamsRspCb( &wdiAddSTASelfParams, pWDICtx->pRspCBUserData);
17613
Jeff Johnsone7245742012-09-05 17:12:55 -070017614 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017615}/*WDI_ProcessAddSTASelfRsp*/
17616
17617
17618
17619/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017620 @brief WDI_ProcessDelSTASelfRsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070017621 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017622
17623 @param pWDICtx: pointer to the WLAN DAL context
17624 pEventData: pointer to the event information structure
17625
Jeff Johnson295189b2012-06-20 16:38:30 -070017626 @see
17627 @return Result of the function call
17628*/
17629WDI_Status
17630WDI_ProcessDelSTASelfRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017631(
Jeff Johnson295189b2012-06-20 16:38:30 -070017632 WDI_ControlBlockType* pWDICtx,
17633 WDI_EventInfoType* pEventData
17634)
17635{
17636 WDI_DelSTASelfRspParamsType wdiDelStaSelfRspParams;
17637 WDI_DelSTASelfRspCb wdiDelStaSelfRspCb;
17638 tDelStaSelfRspParams delStaSelfRspParams;
17639 wpt_uint8 ucStaIdx;
17640
17641 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17642
17643 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017644 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017645 -------------------------------------------------------------------------*/
17646 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17647 ( NULL == pEventData->pEventData))
17648 {
17649 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017650 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017651 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017652 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017653 }
17654
17655 wdiDelStaSelfRspCb = (WDI_DelSTASelfRspCb)pWDICtx->pfncRspCB;
17656
17657 /*-------------------------------------------------------------------------
17658 Extract response and send it to UMAC
17659 -------------------------------------------------------------------------*/
17660
Jeff Johnsone7245742012-09-05 17:12:55 -070017661 wpalMemoryCopy( &delStaSelfRspParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070017662 (wpt_uint8*)pEventData->pEventData,
17663 sizeof(tDelStaSelfRspParams));
17664
Jeff Johnsone7245742012-09-05 17:12:55 -070017665 wdiDelStaSelfRspParams.wdiStatus =
17666 WDI_HAL_2_WDI_STATUS(delStaSelfRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070017667
Jeff Johnsone7245742012-09-05 17:12:55 -070017668 /* delStaSelfRspParams.status is not
Jeff Johnson295189b2012-06-20 16:38:30 -070017669 eHAL_STATUS_DEL_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO*/
17670 if( eHAL_STATUS_SUCCESS == delStaSelfRspParams.status )
17671 {
17672 WDI_Status wdiStatus;
Jeff Johnsone7245742012-09-05 17:12:55 -070017673 wdiStatus = WDI_STATableFindStaidByAddr(pWDICtx,
Jeff Johnson295189b2012-06-20 16:38:30 -070017674 delStaSelfRspParams.selfMacAddr,
17675 &ucStaIdx);
17676 if(WDI_STATUS_E_FAILURE == wdiStatus)
17677 {
17678 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017679 "%s: Unable to extract the STA Idx ", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017680 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017681 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017682 }
17683 WDI_STATableDelSta(pWDICtx, ucStaIdx);
17684 }
17685
17686 /*Notify UMAC*/
17687 wdiDelStaSelfRspCb(&wdiDelStaSelfRspParams, (void*) pWDICtx->pRspCBUserData);
17688
17689 return WDI_STATUS_SUCCESS;
17690}
17691
Jeff Johnsone7245742012-09-05 17:12:55 -070017692#ifdef FEATURE_OEM_DATA_SUPPORT
17693/**
17694 @brief Start Oem Data Rsp function (called when a
17695 response is being received over the bus from HAL)
Jeff Johnson295189b2012-06-20 16:38:30 -070017696
Jeff Johnsone7245742012-09-05 17:12:55 -070017697 @param pWDICtx: pointer to the WLAN DAL context
17698 pEventData: pointer to the event information structure
17699
17700 @see
17701 @return Result of the function call
17702*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017703
17704WDI_Status
17705WDI_ProcessStartOemDataRsp
17706(
17707 WDI_ControlBlockType* pWDICtx,
17708 WDI_EventInfoType* pEventData
17709)
17710{
17711 WDI_oemDataRspCb wdiOemDataRspCb;
17712 WDI_oemDataRspParamsType* wdiOemDataRspParams;
17713 tStartOemDataRspParams* halStartOemDataRspParams;
17714
17715 /*-------------------------------------------------------------------------
17716 Sanity check
17717 -------------------------------------------------------------------------*/
17718 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17719 ( NULL == pEventData->pEventData))
17720 {
17721 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017722 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070017723 WDI_ASSERT(0);
17724 return WDI_STATUS_E_FAILURE;
17725 }
17726
17727 wdiOemDataRspCb = (WDI_oemDataRspCb)pWDICtx->pfncRspCB;
17728
17729 /*-------------------------------------------------------------------------
17730 Extract response and send it to UMAC
17731 -------------------------------------------------------------------------*/
17732 halStartOemDataRspParams = (tStartOemDataRspParams *)pEventData->pEventData;
17733
17734
17735 //It is the responsibility of the application code to check for failure
17736 //conditions!
17737
17738 //Allocate memory for WDI OEM DATA RSP structure
17739 wdiOemDataRspParams = wpalMemoryAllocate(sizeof(WDI_oemDataRspParamsType)) ;
17740
17741 if(NULL == wdiOemDataRspParams)
17742 {
17743 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080017744 "Failed to allocate memory in OEM DATA Response %p %p %p ",
Jeff Johnsone7245742012-09-05 17:12:55 -070017745 pWDICtx, pEventData, pEventData->pEventData);
17746 WDI_ASSERT(0);
17747 return WDI_STATUS_E_FAILURE;
17748 }
17749
17750 /* Populate WDI structure members */
17751 wpalMemoryCopy(wdiOemDataRspParams->oemDataRsp, halStartOemDataRspParams->oemDataRsp, OEM_DATA_RSP_SIZE);
17752
17753 /*Notify UMAC*/
17754 wdiOemDataRspCb(wdiOemDataRspParams, pWDICtx->pRspCBUserData);
17755
17756 //Free memory allocated for WDI OEM_DATA MEAS RSP structure
17757 wpalMemoryFree(wdiOemDataRspParams);
17758
17759 return WDI_STATUS_SUCCESS;
17760}/*WDI_PrcoessStartOemDataRsp*/
17761#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070017762
17763/*===========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070017764 Miscellaneous Control Response Processing API
Jeff Johnson295189b2012-06-20 16:38:30 -070017765===========================================================================*/
17766
17767/**
17768 @brief Process Channel Switch Rsp function (called when a response
17769 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017770
17771 @param pWDICtx: pointer to the WLAN DAL context
17772 pEventData: pointer to the event information structure
17773
Jeff Johnson295189b2012-06-20 16:38:30 -070017774 @see
17775 @return Result of the function call
17776*/
17777WDI_Status
17778WDI_ProcessChannelSwitchRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017779(
Jeff Johnson295189b2012-06-20 16:38:30 -070017780 WDI_ControlBlockType* pWDICtx,
17781 WDI_EventInfoType* pEventData
17782)
17783{
17784 WDI_SwitchCHRspParamsType wdiSwitchChRsp;
17785 WDI_SwitchChRspCb wdiChSwitchRspCb;
17786 tSwitchChannelRspParams halSwitchChannelRsp;
17787 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17788
17789 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017790 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017791 -------------------------------------------------------------------------*/
17792 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17793 ( NULL == pEventData->pEventData))
17794 {
17795 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017796 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017797 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017798 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017799 }
17800
17801 wdiChSwitchRspCb = (WDI_SwitchChRspCb)pWDICtx->pfncRspCB;
17802
17803 /*-------------------------------------------------------------------------
17804 Extract response and send it to UMAC
17805 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017806 wpalMemoryCopy( &halSwitchChannelRsp,
Jeff Johnson295189b2012-06-20 16:38:30 -070017807 (wpt_uint8*)pEventData->pEventData,
17808 sizeof(halSwitchChannelRsp));
17809
Jeff Johnsone7245742012-09-05 17:12:55 -070017810 wdiSwitchChRsp.wdiStatus =
17811 WDI_HAL_2_WDI_STATUS(halSwitchChannelRsp.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070017812 wdiSwitchChRsp.ucChannel = halSwitchChannelRsp.channelNumber;
17813
17814#ifdef WLAN_FEATURE_VOWIFI
Jeff Johnsone7245742012-09-05 17:12:55 -070017815 wdiSwitchChRsp.ucTxMgmtPower = halSwitchChannelRsp.txMgmtPower;
Jeff Johnson295189b2012-06-20 16:38:30 -070017816#endif
17817
17818 /*Notify UMAC*/
17819 wdiChSwitchRspCb( &wdiSwitchChRsp, pWDICtx->pRspCBUserData);
17820
Jeff Johnsone7245742012-09-05 17:12:55 -070017821 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017822}/*WDI_ProcessChannelSwitchRsp*/
17823
Kalikinkar dhara1e83b772014-02-06 12:59:22 -080017824/**
17825 @brief Process Channel Switch Rsp function (called when a response
17826 is being received over the bus from HAL against
17827 WDI_ProcessChannelSwitchReq_V1)
17828
17829 @param pWDICtx: pointer to the WLAN DAL context
17830 pEventData: pointer to the event information structure
17831
17832 @see
17833 @return Result of the function call
17834*/
17835
17836WDI_Status
17837WDI_ProcessChannelSwitchRsp_V1
17838(
17839 WDI_ControlBlockType* pWDICtx,
17840 WDI_EventInfoType* pEventData
17841)
17842{
17843 WDI_SwitchChRspParamsType_V1 wdiSwitchChRsp;
17844 WDI_SwitchChRspCb_V1 wdiChSwitchRspCb;
17845 tSwitchChannelRspParams_V1 halSwitchChannelRsp;
17846 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17847
17848 /*-------------------------------------------------------------------------
17849 Sanity check
17850 -------------------------------------------------------------------------*/
17851 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17852 ( NULL == pEventData->pEventData))
17853 {
17854 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17855 "%s: Invalid parameters", __func__);
17856 WDI_ASSERT(0);
17857 return WDI_STATUS_E_FAILURE;
17858 }
17859
17860 wdiChSwitchRspCb = (WDI_SwitchChRspCb_V1)pWDICtx->pfncRspCB;
17861
17862 /*-------------------------------------------------------------------------
17863 Extract response and send it to UMAC
17864 -------------------------------------------------------------------------*/
17865 wpalMemoryCopy( &halSwitchChannelRsp,
17866 (wpt_uint8*)pEventData->pEventData,
17867 sizeof(halSwitchChannelRsp));
17868
17869 wdiSwitchChRsp.wdiStatus =
17870 WDI_HAL_2_WDI_STATUS(halSwitchChannelRsp.status);
17871 wdiSwitchChRsp.ucChannel = halSwitchChannelRsp.channelNumber;
17872
17873#ifdef WLAN_FEATURE_VOWIFI
17874 wdiSwitchChRsp.ucTxMgmtPower = halSwitchChannelRsp.txMgmtPower;
17875#endif
17876
17877 wdiSwitchChRsp.channelSwitchSrc = halSwitchChannelRsp.channelSwitchSrc;
17878 if (( NULL == wdiChSwitchRspCb ) )
17879 {
17880 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17881 "%s: ### Call back function is null", __func__);
17882 WDI_ASSERT(0);
17883 return WDI_STATUS_E_FAILURE;
17884 }
17885 /*Notify UMAC*/
17886 wdiChSwitchRspCb( &wdiSwitchChRsp, pWDICtx->pRspCBUserData);
17887
17888 return WDI_STATUS_SUCCESS;
17889}/*WDI_ProcessChannelSwitchRsp_V1*/
Jeff Johnson295189b2012-06-20 16:38:30 -070017890
17891/**
17892 @brief Process Config STA Rsp function (called when a response
17893 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017894
17895 @param pWDICtx: pointer to the WLAN DAL context
17896 pEventData: pointer to the event information structure
17897
Jeff Johnson295189b2012-06-20 16:38:30 -070017898 @see
17899 @return Result of the function call
17900*/
17901WDI_Status
17902WDI_ProcessConfigStaRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017903(
Jeff Johnson295189b2012-06-20 16:38:30 -070017904 WDI_ControlBlockType* pWDICtx,
17905 WDI_EventInfoType* pEventData
17906)
17907{
17908 WDI_ConfigSTARspParamsType wdiCfgSTAParams;
17909 WDI_ConfigSTARspCb wdiConfigSTARspCb;
17910 WDI_AddStaParams wdiAddSTAParam;
17911
17912 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070017913 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070017914
Jeff Johnsone7245742012-09-05 17:12:55 -070017915 tConfigStaRspMsg halConfigStaRsp;
Jeff Johnson295189b2012-06-20 16:38:30 -070017916 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17917
17918 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017919 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017920 -------------------------------------------------------------------------*/
17921 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17922 ( NULL == pEventData->pEventData))
17923 {
17924 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017925 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017926 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017927 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017928 }
17929
17930 wdiConfigSTARspCb = (WDI_ConfigSTARspCb)pWDICtx->pfncRspCB;
17931
17932 /*-------------------------------------------------------------------------
17933 Extract response and send it to UMAC
17934 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017935 wpalMemoryCopy( &halConfigStaRsp.configStaRspParams,
17936 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017937 sizeof(halConfigStaRsp.configStaRspParams));
17938
17939
17940 wdiCfgSTAParams.ucSTAIdx = halConfigStaRsp.configStaRspParams.staIdx;
17941 wdiCfgSTAParams.ucBssIdx = halConfigStaRsp.configStaRspParams.bssIdx;
17942 wdiCfgSTAParams.ucUcastSig = halConfigStaRsp.configStaRspParams.ucUcastSig;
17943 wdiCfgSTAParams.ucBcastSig = halConfigStaRsp.configStaRspParams.ucBcastSig;
17944 wdiCfgSTAParams.ucMgmtSig = halConfigStaRsp.configStaRspParams.ucMgmtSig;
17945
17946 /* MAC Address of STA - take from cache as it does not come back in the
17947 response*/
17948 wpalMemoryCopy( wdiCfgSTAParams.macSTA,
Jeff Johnsone7245742012-09-05 17:12:55 -070017949 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.macSTA,
Jeff Johnson295189b2012-06-20 16:38:30 -070017950 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070017951
17952 wdiCfgSTAParams.wdiStatus =
17953 WDI_HAL_2_WDI_STATUS(halConfigStaRsp.configStaRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070017954
17955 wdiCfgSTAParams.ucDpuIndex = halConfigStaRsp.configStaRspParams.dpuIndex;
17956 wdiCfgSTAParams.ucBcastDpuIndex = halConfigStaRsp.configStaRspParams.bcastDpuIndex;
17957 wdiCfgSTAParams.ucBcastMgmtDpuIdx = halConfigStaRsp.configStaRspParams.bcastMgmtDpuIdx;
17958
17959 if ( WDI_STATUS_SUCCESS == wdiCfgSTAParams.wdiStatus )
17960 {
17961 if ( WDI_ADD_STA == pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.wdiAction )
17962 {
17963 /* ADD STA to table */
Jeff Johnsone7245742012-09-05 17:12:55 -070017964 wdiAddSTAParam.ucSTAIdx = halConfigStaRsp.configStaRspParams.staIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070017965 wdiAddSTAParam.dpuSig = halConfigStaRsp.configStaRspParams.ucUcastSig;
17966 wdiAddSTAParam.dpuIndex = halConfigStaRsp.configStaRspParams.dpuIndex;
Jeff Johnsone7245742012-09-05 17:12:55 -070017967
Jeff Johnson295189b2012-06-20 16:38:30 -070017968 /*This info can be retrieved from the cached initial request*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017969 wdiAddSTAParam.ucWmmEnabled =
Jeff Johnson295189b2012-06-20 16:38:30 -070017970 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.ucWMMEnabled;
Jeff Johnsone7245742012-09-05 17:12:55 -070017971 wdiAddSTAParam.ucHTCapable =
17972 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.ucHTCapable;
17973 wdiAddSTAParam.ucStaType =
17974 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.wdiSTAType;
Chet Lanctot4b9abd72013-06-27 11:14:56 -070017975 wdiAddSTAParam.ucRmfEnabled =
17976 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.ucRMFEnabled;
Jeff Johnsone7245742012-09-05 17:12:55 -070017977
Jeff Johnson295189b2012-06-20 16:38:30 -070017978 /* MAC Address of STA */
Jeff Johnsone7245742012-09-05 17:12:55 -070017979 wpalMemoryCopy(wdiAddSTAParam.staMacAddr,
17980 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.macSTA,
Jeff Johnson295189b2012-06-20 16:38:30 -070017981 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070017982
17983 wpalMemoryCopy(wdiAddSTAParam.macBSSID,
17984 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.macBSSID ,
17985 WDI_MAC_ADDR_LEN);
17986
17987 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
17988 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.macBSSID,
17989 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070017990
17991 if ( NULL == pBSSSes )
17992 {
17993 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17994 "Association for this BSSID is not in place");
Jeff Johnsone7245742012-09-05 17:12:55 -070017995
Jeff Johnson295189b2012-06-20 16:38:30 -070017996 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017997 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070017998 }
17999
18000 /*Add BSS specific parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018001 wdiAddSTAParam.bcastMgmtDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070018002 halConfigStaRsp.configStaRspParams.bcastMgmtDpuIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070018003 wdiAddSTAParam.bcastMgmtDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070018004 halConfigStaRsp.configStaRspParams.ucMgmtSig;
Jeff Johnsone7245742012-09-05 17:12:55 -070018005 wdiAddSTAParam.bcastDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070018006 halConfigStaRsp.configStaRspParams.bcastDpuIndex;
Jeff Johnsone7245742012-09-05 17:12:55 -070018007 wdiAddSTAParam.bcastDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070018008 halConfigStaRsp.configStaRspParams.ucBcastSig;
Jeff Johnson295189b2012-06-20 16:38:30 -070018009 wdiAddSTAParam.ucBSSIdx = ucCurrentBSSSesIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070018010
Jeff Johnson295189b2012-06-20 16:38:30 -070018011 WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
18012 }
18013 if( WDI_UPDATE_STA == pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.wdiAction )
18014 {
18015 WDI_StaStruct* pSTATable = (WDI_StaStruct*) pWDICtx->staTable;
18016
Jeff Johnsone7245742012-09-05 17:12:55 -070018017 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bcastDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070018018 halConfigStaRsp.configStaRspParams.bcastDpuIndex;
Jeff Johnsone7245742012-09-05 17:12:55 -070018019 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bcastDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070018020 halConfigStaRsp.configStaRspParams.ucBcastSig;
Jeff Johnsone7245742012-09-05 17:12:55 -070018021 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bcastMgmtDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070018022 halConfigStaRsp.configStaRspParams.bcastMgmtDpuIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070018023 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bcastMgmtDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070018024 halConfigStaRsp.configStaRspParams.ucMgmtSig;
Jeff Johnsone7245742012-09-05 17:12:55 -070018025 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bssIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070018026 halConfigStaRsp.configStaRspParams.bssIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070018027 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].dpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070018028 halConfigStaRsp.configStaRspParams.dpuIndex;
Jeff Johnsone7245742012-09-05 17:12:55 -070018029 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].dpuSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070018030 halConfigStaRsp.configStaRspParams.ucUcastSig;
18031 }
18032 }
18033
18034 /*Notify UMAC*/
18035 wdiConfigSTARspCb( &wdiCfgSTAParams, pWDICtx->pRspCBUserData);
18036
Jeff Johnsone7245742012-09-05 17:12:55 -070018037 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018038}/*WDI_ProcessConfigStaRsp*/
18039
18040
18041/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018042 @brief Process Set Link State Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070018043 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018044
18045 @param pWDICtx: pointer to the WLAN DAL context
18046 pEventData: pointer to the event information structure
18047
Jeff Johnson295189b2012-06-20 16:38:30 -070018048 @see
18049 @return Result of the function call
18050*/
18051WDI_Status
18052WDI_ProcessSetLinkStateRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018053(
Jeff Johnson295189b2012-06-20 16:38:30 -070018054 WDI_ControlBlockType* pWDICtx,
18055 WDI_EventInfoType* pEventData
18056)
18057{
18058 WDI_Status wdiStatus;
18059 eHalStatus halStatus;
18060 WDI_SetLinkStateRspCb wdiSetLinkStateRspCb;
18061
18062 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070018063 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070018064 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18065
18066 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018067 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018068 -------------------------------------------------------------------------*/
18069 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18070 ( NULL == pEventData->pEventData))
18071 {
18072 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018073 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018074 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018075 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018076 }
18077
18078 wdiSetLinkStateRspCb = (WDI_SetLinkStateRspCb)pWDICtx->pfncRspCB;
18079
18080 wpalMutexAcquire(&pWDICtx->wptMutex);
18081
18082 /*If the link is being transitioned to idle - the BSS is to be deleted
18083 - this type of ending a session is possible when UMAC has failed an
18084 - association session during Join*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018085 if ( WDI_LINK_IDLE_STATE ==
Jeff Johnson295189b2012-06-20 16:38:30 -070018086 pWDICtx->wdiCacheSetLinkStReq.wdiLinkInfo.wdiLinkState )
18087 {
18088 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018089 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070018090 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018091 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
18092 pWDICtx->wdiCacheSetLinkStReq.wdiLinkInfo.macBSSID,
18093 &pBSSSes);
18094
Jeff Johnson295189b2012-06-20 16:38:30 -070018095 /*-----------------------------------------------------------------------
18096 Del BSS response can only be received for an existing assoc that
Jeff Johnsone7245742012-09-05 17:12:55 -070018097 is current and in progress
Jeff Johnson295189b2012-06-20 16:38:30 -070018098 -----------------------------------------------------------------------*/
18099 if ( NULL == pBSSSes )
18100 {
18101 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
18102 "Set link response received outside association session");
18103 }
18104 else
18105 {
18106 /* For BT AMP roles no need to delete the sessions if assoc fails. There
18107 will be del BSS coming after this to stop the beaconing & cleaning up the
18108 sessions*/
18109 if(( WDI_BTAMP_STA_MODE != pBSSSes->wdiBssType )&&
18110 ( WDI_BTAMP_AP_MODE != pBSSSes->wdiBssType ))
18111 {
18112 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018113 The current session will be deleted
Jeff Johnson295189b2012-06-20 16:38:30 -070018114 -----------------------------------------------------------------------*/
18115 WDI_DeleteSession(pWDICtx, pBSSSes);
18116
18117 /*-----------------------------------------------------------------------
18118 Check to see if this association is in progress - if so disable the
18119 flag as this has ended
18120 -----------------------------------------------------------------------*/
18121 if ( ucCurrentBSSSesIdx == pWDICtx->ucCurrentBSSSesIdx )
Jeff Johnsone7245742012-09-05 17:12:55 -070018122 {
Jeff Johnson295189b2012-06-20 16:38:30 -070018123 /*Association no longer in progress */
18124 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
18125 /*Association no longer in progress - prepare pending assoc for processing*/
18126 WDI_DequeueAssocRequest(pWDICtx);
18127 }
18128 }
18129 }
18130 }
18131 /* If the link state has been set to POST ASSOC, reset the "association in
18132 progress" flag */
Jeff Johnsone7245742012-09-05 17:12:55 -070018133 if ( WDI_LINK_POSTASSOC_STATE ==
Jeff Johnson295189b2012-06-20 16:38:30 -070018134 pWDICtx->wdiCacheSetLinkStReq.wdiLinkInfo.wdiLinkState )
18135 {
18136 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
18137 WDI_DequeueAssocRequest(pWDICtx);
18138 }
18139
18140 wpalMutexRelease(&pWDICtx->wptMutex);
18141
18142 /*-------------------------------------------------------------------------
18143 Extract response and send it to UMAC
18144 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018145 wpalMemoryCopy( &halStatus,
18146 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070018147 sizeof(halStatus));
18148
Jeff Johnsone7245742012-09-05 17:12:55 -070018149 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018150
18151 /*Notify UMAC*/
18152 wdiSetLinkStateRspCb( wdiStatus, pWDICtx->pRspCBUserData);
18153
Jeff Johnsone7245742012-09-05 17:12:55 -070018154 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018155}/*WDI_ProcessSetLinkStateRsp*/
18156
18157/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018158 @brief Process Get Stats Rsp function (called when a response is
Jeff Johnson295189b2012-06-20 16:38:30 -070018159 being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018160
18161 @param pWDICtx: pointer to the WLAN DAL context
18162 pEventData: pointer to the event information structure
18163
Jeff Johnson295189b2012-06-20 16:38:30 -070018164 @see
18165 @return Result of the function call
18166*/
18167WDI_Status
18168WDI_ProcessGetStatsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018169(
Jeff Johnson295189b2012-06-20 16:38:30 -070018170 WDI_ControlBlockType* pWDICtx,
18171 WDI_EventInfoType* pEventData
18172)
18173{
18174 WDI_GetStatsRspParamsType *wdiGetStatsRsp;
18175 WDI_GetStatsRspCb wdiGetStatsRspCb;
18176 tHalStatsRspParams* pHalStatsRspParams;
Jeff Johnsone7245742012-09-05 17:12:55 -070018177
Jeff Johnson295189b2012-06-20 16:38:30 -070018178 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18179
18180 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018181 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018182 -------------------------------------------------------------------------*/
18183 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18184 ( NULL == pEventData->pEventData))
18185 {
18186 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018187 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018188 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018189 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018190 }
18191
18192 /*-------------------------------------------------------------------------
18193 Extract response and send it to UMAC
18194 -------------------------------------------------------------------------*/
18195 pHalStatsRspParams = (tHalStatsRspParams *)pEventData->pEventData;
18196
18197 /*allocate the stats response buffer */
18198 wdiGetStatsRsp = (WDI_GetStatsRspParamsType *)wpalMemoryAllocate(
18199 pHalStatsRspParams->msgLen - sizeof(tHalStatsRspParams)
18200 + sizeof(WDI_GetStatsRspParamsType));
18201
18202 if(NULL == wdiGetStatsRsp)
18203 {
18204 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080018205 "Failed to allocate memory in Get Stats Response %p %p %p ",
Jeff Johnson295189b2012-06-20 16:38:30 -070018206 pWDICtx, pEventData, pEventData->pEventData);
18207 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018208 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018209 }
18210
18211 wdiGetStatsRspCb = (WDI_GetStatsRspCb)pWDICtx->pfncRspCB;
18212
18213 wpalMemoryZero(wdiGetStatsRsp, pHalStatsRspParams->msgLen);
18214 wdiGetStatsRsp->usMsgType = pHalStatsRspParams->msgType;
18215 wdiGetStatsRsp->usMsgLen = pHalStatsRspParams->msgLen;
18216 wdiGetStatsRsp->wdiStatus = WDI_HAL_2_WDI_STATUS(pHalStatsRspParams->status);
18217 wdiGetStatsRsp->ucSTAIdx = pHalStatsRspParams->staId;
18218 wdiGetStatsRsp->uStatsMask = pHalStatsRspParams->statsMask;
18219
18220 /* copy the stats from buffer at the end of the tHalStatsRspParams message */
18221 wpalMemoryCopy(wdiGetStatsRsp + 1,
18222 (wpt_uint8*)pEventData->pEventData + sizeof(tHalStatsRspParams),
18223 pHalStatsRspParams->msgLen - sizeof(tHalStatsRspParams));
18224
18225 /*Notify UMAC*/
18226 wdiGetStatsRspCb( wdiGetStatsRsp, pWDICtx->pRspCBUserData);
18227
18228 wpalMemoryFree(wdiGetStatsRsp);
18229
Jeff Johnsone7245742012-09-05 17:12:55 -070018230 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018231}/*WDI_ProcessGetStatsRsp*/
18232
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -080018233#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_ESE || defined(FEATURE_WLAN_LFR)
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -080018234/**
18235 @brief Process Get Roam Rssi Rsp function (called when a response is
18236 being received over the bus from HAL)
18237
18238 @param pWDICtx: pointer to the WLAN DAL context
18239 pEventData: pointer to the event information structure
18240
18241 @see
18242 @return Result of the function call
18243*/
18244WDI_Status
18245WDI_ProcessGetRoamRssiRsp
18246(
18247 WDI_ControlBlockType* pWDICtx,
18248 WDI_EventInfoType* pEventData
18249)
18250{
18251 WDI_GetRoamRssiRspParamsType wdiGetRoamRssiRsp;
18252 WDI_GetRoamRssiRspCb wdiGetRoamRssiRspCb;
18253 tHalGetRoamRssiRspMsg halRoamRssiRspParams;
18254 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18255
18256 /*-------------------------------------------------------------------------
18257 Sanity check
18258 -------------------------------------------------------------------------*/
18259 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18260 ( NULL == pEventData->pEventData))
18261 {
18262 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
18263 "%s: Invalid parameters", __func__);
18264 WDI_ASSERT(0);
18265 return WDI_STATUS_E_FAILURE;
18266 }
18267
18268 wdiGetRoamRssiRspCb = (WDI_GetRoamRssiRspCb)pWDICtx->pfncRspCB;
18269 if(NULL == wdiGetRoamRssiRspCb)
18270 {
18271 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
18272 "%s: call back function is NULL", __func__);
18273 WDI_ASSERT(0);
18274 return WDI_STATUS_E_FAILURE;
18275 }
18276
18277 /*-------------------------------------------------------------------------
18278 Extract response and send it to UMAC
18279 -------------------------------------------------------------------------*/
18280 wpalMemoryCopy( &halRoamRssiRspParams.roamRssiRspParams,
18281 pEventData->pEventData,
18282 sizeof(halRoamRssiRspParams.roamRssiRspParams));
18283
18284 wdiGetRoamRssiRsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halRoamRssiRspParams.roamRssiRspParams.status);
18285 wdiGetRoamRssiRsp.ucSTAIdx = halRoamRssiRspParams.roamRssiRspParams.staId;
18286 wdiGetRoamRssiRsp.rssi = halRoamRssiRspParams.roamRssiRspParams.rssi;
18287
18288 /*Notify UMAC*/
18289 wdiGetRoamRssiRspCb( &wdiGetRoamRssiRsp, pWDICtx->pRspCBUserData);
18290
18291 return WDI_STATUS_SUCCESS;
18292}/*WDI_ProcessGetRoamRssiRsp*/
18293#endif
18294
Jeff Johnson295189b2012-06-20 16:38:30 -070018295
18296/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018297 @brief Process Update Cfg Rsp function (called when a response is
Jeff Johnson295189b2012-06-20 16:38:30 -070018298 being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018299
18300 @param pWDICtx: pointer to the WLAN DAL context
18301 pEventData: pointer to the event information structure
18302
Jeff Johnson295189b2012-06-20 16:38:30 -070018303 @see
18304 @return Result of the function call
18305*/
18306WDI_Status
18307WDI_ProcessUpdateCfgRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018308(
Jeff Johnson295189b2012-06-20 16:38:30 -070018309 WDI_ControlBlockType* pWDICtx,
18310 WDI_EventInfoType* pEventData
18311)
18312{
18313 WDI_Status wdiStatus;
18314 eHalStatus halStatus;
18315 WDI_UpdateCfgRspCb wdiUpdateCfgRspCb;
18316 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18317
18318 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018319 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018320 -------------------------------------------------------------------------*/
18321 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18322 ( NULL == pEventData->pEventData))
18323 {
18324 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018325 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018326 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018327 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018328 }
18329
18330 wdiUpdateCfgRspCb = (WDI_UpdateCfgRspCb)pWDICtx->pfncRspCB;
18331
18332 /*-------------------------------------------------------------------------
18333 Extract response and send it to UMAC
18334 -------------------------------------------------------------------------*/
18335 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070018336 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018337
18338 /*Notify UMAC*/
18339 wdiUpdateCfgRspCb( wdiStatus, pWDICtx->pRspCBUserData);
18340
Jeff Johnsone7245742012-09-05 17:12:55 -070018341 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018342}/*WDI_ProcessUpdateCfgRsp*/
18343
18344
18345
18346/**
18347 @brief Process Add BA Rsp function (called when a response
18348 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018349
18350 @param pWDICtx: pointer to the WLAN DAL context
18351 pEventData: pointer to the event information structure
18352
Jeff Johnson295189b2012-06-20 16:38:30 -070018353 @see
18354 @return Result of the function call
18355*/
18356WDI_Status
18357WDI_ProcessAddBARsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018358(
Jeff Johnson295189b2012-06-20 16:38:30 -070018359 WDI_ControlBlockType* pWDICtx,
18360 WDI_EventInfoType* pEventData
18361)
18362{
18363 WDI_AddBARspCb wdiAddBARspCb;
18364
18365 tAddBARspParams halAddBARsp;
18366 WDI_AddBARspinfoType wdiAddBARsp;
18367
18368 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18369
18370 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018371 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018372 -------------------------------------------------------------------------*/
18373 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18374 ( NULL == pEventData->pEventData))
18375 {
18376 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018377 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018378 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018379 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018380 }
18381
18382 wdiAddBARspCb = (WDI_AddBARspCb)pWDICtx->pfncRspCB;
18383
18384 /*-------------------------------------------------------------------------
18385 Extract response and send it to UMAC
18386 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018387 wpalMemoryCopy( &halAddBARsp,
18388 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070018389 sizeof(halAddBARsp));
18390
18391 wdiAddBARsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halAddBARsp.status);
18392
Jeff Johnson43971f52012-07-17 12:26:56 -070018393 if ( WDI_STATUS_SUCCESS == wdiAddBARsp.wdiStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070018394 {
18395 wdiAddBARsp.ucBaDialogToken = halAddBARsp.baDialogToken;
18396 }
18397
18398 /*Notify UMAC*/
18399 wdiAddBARspCb( &wdiAddBARsp, pWDICtx->pRspCBUserData);
18400
Jeff Johnsone7245742012-09-05 17:12:55 -070018401 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018402}/*WDI_ProcessAddSessionBARsp*/
18403
18404/**
18405 @brief Process Add BA Rsp function (called when a response
18406 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018407
18408 @param pWDICtx: pointer to the WLAN DAL context
18409 pEventData: pointer to the event information structure
18410
Jeff Johnson295189b2012-06-20 16:38:30 -070018411 @see
18412 @return Result of the function call
18413*/
18414WDI_Status
18415WDI_ProcessTriggerBARsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018416(
Jeff Johnson295189b2012-06-20 16:38:30 -070018417 WDI_ControlBlockType* pWDICtx,
18418 WDI_EventInfoType* pEventData
18419)
18420{
18421 WDI_TriggerBARspCb wdiTriggerBARspCb;
18422
18423 tTriggerBARspParams* halTriggerBARsp;
18424 tTriggerBaRspCandidate* halBaCandidate;
18425 WDI_TriggerBARspParamsType* wdiTriggerBARsp;
18426 WDI_TriggerBARspCandidateType* wdiTriggerBARspCandidate;
18427 wpt_uint16 index;
18428 wpt_uint16 TidIndex;
Tushnim Bhattacharyyaf64c5dc2013-03-21 15:11:31 -070018429 WDI_Status halTriggerBARspStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070018430 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18431
18432 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018433 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018434 -------------------------------------------------------------------------*/
18435 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18436 ( NULL == pEventData->pEventData))
18437 {
18438 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018439 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018440 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018441 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018442 }
18443
18444 wdiTriggerBARspCb = (WDI_TriggerBARspCb)pWDICtx->pfncRspCB;
18445
18446 /*-------------------------------------------------------------------------
18447 Extract response and send it to UMAC
18448 -------------------------------------------------------------------------*/
18449 halTriggerBARsp = (tTriggerBARspParams *)pEventData->pEventData;
18450
Tushnim Bhattacharyyaf64c5dc2013-03-21 15:11:31 -070018451 halTriggerBARspStatus = WDI_HAL_2_WDI_STATUS(halTriggerBARsp->status);
18452
18453 if ( WDI_STATUS_SUCCESS == halTriggerBARspStatus)
18454 {
18455 wdiTriggerBARsp = wpalMemoryAllocate(sizeof(WDI_TriggerBARspParamsType) +
Jeff Johnsone7245742012-09-05 17:12:55 -070018456 halTriggerBARsp->baCandidateCnt *
Jeff Johnson295189b2012-06-20 16:38:30 -070018457 sizeof(WDI_TriggerBARspCandidateType));
Jeff Johnson295189b2012-06-20 16:38:30 -070018458
Tushnim Bhattacharyyaf64c5dc2013-03-21 15:11:31 -070018459 if(NULL == wdiTriggerBARsp)
18460 {
18461 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080018462 "Failed to allocate memory in Trigger BA Response %p %p %p ",
Tushnim Bhattacharyyaf64c5dc2013-03-21 15:11:31 -070018463 pWDICtx, pEventData, pEventData->pEventData);
18464 WDI_ASSERT(0);
18465 return WDI_STATUS_E_FAILURE;
18466 }
Jeff Johnson295189b2012-06-20 16:38:30 -070018467
Tushnim Bhattacharyyaf64c5dc2013-03-21 15:11:31 -070018468 wdiTriggerBARsp->wdiStatus = halTriggerBARspStatus;
18469
Jeff Johnson295189b2012-06-20 16:38:30 -070018470 wdiTriggerBARsp->usBaCandidateCnt = halTriggerBARsp->baCandidateCnt;
Jeff Johnsone7245742012-09-05 17:12:55 -070018471 wpalMemoryCopy(wdiTriggerBARsp->macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -070018472 halTriggerBARsp->bssId , WDI_MAC_ADDR_LEN);
18473
18474 wdiTriggerBARspCandidate = (WDI_TriggerBARspCandidateType*)(wdiTriggerBARsp + 1);
18475 halBaCandidate = (tTriggerBaRspCandidate*)(halTriggerBARsp + 1);
18476
18477 for(index = 0; index < wdiTriggerBARsp->usBaCandidateCnt; index++)
18478 {
Jeff Johnsone7245742012-09-05 17:12:55 -070018479 wpalMemoryCopy(wdiTriggerBARspCandidate->macSTA,
Jeff Johnson295189b2012-06-20 16:38:30 -070018480 halBaCandidate->staAddr, WDI_MAC_ADDR_LEN);
18481 for(TidIndex = 0; TidIndex < STA_MAX_TC; TidIndex++)
18482 {
Jeff Johnsone7245742012-09-05 17:12:55 -070018483 wdiTriggerBARspCandidate->wdiBAInfo[TidIndex].fBaEnable =
Jeff Johnson295189b2012-06-20 16:38:30 -070018484 halBaCandidate->baInfo[TidIndex].fBaEnable;
Jeff Johnsone7245742012-09-05 17:12:55 -070018485 wdiTriggerBARspCandidate->wdiBAInfo[TidIndex].startingSeqNum =
Jeff Johnson295189b2012-06-20 16:38:30 -070018486 halBaCandidate->baInfo[TidIndex].startingSeqNum;
18487 }
18488 wdiTriggerBARspCandidate++;
18489 halBaCandidate++;
18490 }
18491 }
Tushnim Bhattacharyyaf64c5dc2013-03-21 15:11:31 -070018492 else
18493 {
18494 wdiTriggerBARsp = wpalMemoryAllocate(sizeof(WDI_TriggerBARspParamsType));
18495
18496 if(NULL == wdiTriggerBARsp)
18497 {
18498 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080018499 "Failed to allocate memory in Trigger BA Response %p %p %p ",
Tushnim Bhattacharyyaf64c5dc2013-03-21 15:11:31 -070018500 pWDICtx, pEventData, pEventData->pEventData);
18501 WDI_ASSERT(0);
18502 return WDI_STATUS_E_FAILURE;
18503 }
18504
18505 wdiTriggerBARsp->wdiStatus = halTriggerBARspStatus;
18506
18507 }
Jeff Johnson295189b2012-06-20 16:38:30 -070018508
18509 /*Notify UMAC*/
18510 wdiTriggerBARspCb( wdiTriggerBARsp, pWDICtx->pRspCBUserData);
18511
18512 wpalMemoryFree(wdiTriggerBARsp);
Jeff Johnsone7245742012-09-05 17:12:55 -070018513 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018514}/*WDI_ProcessAddSessionBARsp*/
18515
18516/**
18517 @brief Process Update Beacon Params Rsp function (called when a response
18518 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018519
18520 @param pWDICtx: pointer to the WLAN DAL context
18521 pEventData: pointer to the event information structure
18522
Jeff Johnson295189b2012-06-20 16:38:30 -070018523 @see
18524 @return Result of the function call
18525*/
18526WDI_Status
18527WDI_ProcessUpdateBeaconParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018528(
Jeff Johnson295189b2012-06-20 16:38:30 -070018529 WDI_ControlBlockType* pWDICtx,
18530 WDI_EventInfoType* pEventData
18531)
18532{
18533 WDI_Status wdiStatus;
18534 eHalStatus halStatus;
18535 WDI_UpdateBeaconParamsRspCb wdiUpdateBeaconParamsRspCb;
18536 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18537
18538 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018539 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018540 -------------------------------------------------------------------------*/
18541 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18542 ( NULL == pEventData->pEventData))
18543 {
18544 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018545 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018546 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018547 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018548 }
18549
18550 wdiUpdateBeaconParamsRspCb = (WDI_UpdateBeaconParamsRspCb)pWDICtx->pfncRspCB;
18551
18552 /*-------------------------------------------------------------------------
18553 Extract response and send it to UMAC
18554 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018555 wpalMemoryCopy( &halStatus,
18556 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070018557 sizeof(halStatus));
18558
Jeff Johnsone7245742012-09-05 17:12:55 -070018559 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018560
18561 /*Notify UMAC*/
18562 wdiUpdateBeaconParamsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
18563
Jeff Johnsone7245742012-09-05 17:12:55 -070018564 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018565}/*WDI_ProcessUpdateBeaconParamsRsp*/
18566
18567/**
18568 @brief Process Send Beacon template Rsp function (called when a response
18569 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018570
18571 @param pWDICtx: pointer to the WLAN DAL context
18572 pEventData: pointer to the event information structure
18573
Jeff Johnson295189b2012-06-20 16:38:30 -070018574 @see
18575 @return Result of the function call
18576*/
18577WDI_Status
18578WDI_ProcessSendBeaconParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018579(
Jeff Johnson295189b2012-06-20 16:38:30 -070018580 WDI_ControlBlockType* pWDICtx,
18581 WDI_EventInfoType* pEventData
18582)
18583{
18584 WDI_Status wdiStatus;
18585 eHalStatus halStatus;
18586 WDI_SendBeaconParamsRspCb wdiSendBeaconParamsRspCb;
18587 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18588
18589 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018590 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018591 -------------------------------------------------------------------------*/
18592 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18593 ( NULL == pEventData->pEventData))
18594 {
18595 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018596 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018597 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018598 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018599 }
18600
18601 wdiSendBeaconParamsRspCb = (WDI_SendBeaconParamsRspCb)pWDICtx->pfncRspCB;
18602
18603 /*-------------------------------------------------------------------------
18604 Extract response and send it to UMAC
18605 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018606 wpalMemoryCopy( &halStatus,
18607 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070018608 sizeof(halStatus));
18609
Jeff Johnsone7245742012-09-05 17:12:55 -070018610 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018611
18612 /*Notify UMAC*/
18613 wdiSendBeaconParamsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
18614
Jeff Johnsone7245742012-09-05 17:12:55 -070018615 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018616}/*WDI_ProcessSendBeaconParamsRsp*/
18617
Jeff Johnsone7245742012-09-05 17:12:55 -070018618
Jeff Johnson295189b2012-06-20 16:38:30 -070018619/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018620 @brief Process Update Probe Resp Template Rsp function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070018621 when a response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018622
18623 @param pWDICtx: pointer to the WLAN DAL context
18624 pEventData: pointer to the event information structure
18625
Jeff Johnson295189b2012-06-20 16:38:30 -070018626 @see
18627 @return Result of the function call
18628*/
18629WDI_Status
18630WDI_ProcessUpdateProbeRspTemplateRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018631(
Jeff Johnson295189b2012-06-20 16:38:30 -070018632 WDI_ControlBlockType* pWDICtx,
18633 WDI_EventInfoType* pEventData
18634)
18635{
18636 WDI_Status wdiStatus;
18637 eHalStatus halStatus;
18638 WDI_UpdateProbeRspTemplateRspCb wdiUpdProbeRspTemplRspCb;
18639 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18640
18641 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018642 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018643 -------------------------------------------------------------------------*/
18644 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18645 ( NULL == pEventData->pEventData))
18646 {
18647 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018648 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018649 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018650 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018651 }
18652
18653 wdiUpdProbeRspTemplRspCb = (WDI_UpdateProbeRspTemplateRspCb)pWDICtx->pfncRspCB;
18654
18655 /*-------------------------------------------------------------------------
18656 Extract response and send it to UMAC
18657 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018658 wpalMemoryCopy( &halStatus,
18659 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070018660 sizeof(halStatus));
18661
Jeff Johnsone7245742012-09-05 17:12:55 -070018662 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018663
18664 /*Notify UMAC*/
18665 wdiUpdProbeRspTemplRspCb( wdiStatus, pWDICtx->pRspCBUserData);
18666
Jeff Johnsone7245742012-09-05 17:12:55 -070018667 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018668}/*WDI_ProcessUpdateProbeRspTemplateRsp*/
18669
18670 /**
18671 @brief Process Set Max Tx Power Rsp function (called when a response
18672 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018673
18674 @param pWDICtx: pointer to the WLAN DAL context
18675 pEventData: pointer to the event information structure
18676
Jeff Johnson295189b2012-06-20 16:38:30 -070018677 @see
18678 @return Result of the function call
18679*/
18680WDI_Status
18681WDI_ProcessSetMaxTxPowerRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018682(
Jeff Johnson295189b2012-06-20 16:38:30 -070018683 WDI_ControlBlockType* pWDICtx,
18684 WDI_EventInfoType* pEventData
18685)
18686{
18687 tSetMaxTxPwrRspMsg halTxpowerrsp;
Jeff Johnsone7245742012-09-05 17:12:55 -070018688
Jeff Johnson295189b2012-06-20 16:38:30 -070018689 WDI_SetMaxTxPowerRspMsg wdiSetMaxTxPowerRspMsg;
Jeff Johnsone7245742012-09-05 17:12:55 -070018690
Jeff Johnson295189b2012-06-20 16:38:30 -070018691 WDA_SetMaxTxPowerRspCb wdiReqStatusCb;
18692 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18693
18694 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018695 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018696 -------------------------------------------------------------------------*/
18697 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18698 ( NULL == pEventData->pEventData))
18699 {
18700 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018701 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018702 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018703 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018704 }
18705
18706 wdiReqStatusCb = (WDA_SetMaxTxPowerRspCb)pWDICtx->pfncRspCB;
18707
18708 /*-------------------------------------------------------------------------
18709 Extract response and send it to UMAC
18710 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018711 wpalMemoryCopy( &halTxpowerrsp.setMaxTxPwrRspParams,
18712 pEventData->pEventData,
18713 sizeof(halTxpowerrsp.setMaxTxPwrRspParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070018714
18715 if ( eHAL_STATUS_SUCCESS != halTxpowerrsp.setMaxTxPwrRspParams.status )
18716 {
18717 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
18718 "Error status returned in Set Max Tx Power Response ");
Jeff Johnsone7245742012-09-05 17:12:55 -070018719 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018720 }
18721
Jeff Johnsone7245742012-09-05 17:12:55 -070018722 wdiSetMaxTxPowerRspMsg.wdiStatus =
Jeff Johnson295189b2012-06-20 16:38:30 -070018723 WDI_HAL_2_WDI_STATUS(halTxpowerrsp.setMaxTxPwrRspParams.status);
Jeff Johnsone7245742012-09-05 17:12:55 -070018724 wdiSetMaxTxPowerRspMsg.ucPower = halTxpowerrsp.setMaxTxPwrRspParams.power;
Jeff Johnson295189b2012-06-20 16:38:30 -070018725
18726 /*Notify UMAC*/
18727 wdiReqStatusCb( &wdiSetMaxTxPowerRspMsg, pWDICtx->pRspCBUserData);
18728
Jeff Johnsone7245742012-09-05 17:12:55 -070018729 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018730}
18731
schang86c22c42013-03-13 18:41:24 -070018732 /**
18733 @brief Process Set Tx Power Rsp function (called when a response
18734 is being received over the bus from HAL)
18735
18736 @param pWDICtx: pointer to the WLAN DAL context
18737 pEventData: pointer to the event information structure
18738
18739 @see
18740 @return Result of the function call
18741*/
18742WDI_Status
18743WDI_ProcessSetTxPowerRsp
18744(
18745 WDI_ControlBlockType* pWDICtx,
18746 WDI_EventInfoType* pEventData
18747)
18748{
18749 tSetTxPwrRspMsg halTxpowerrsp;
18750 WDI_SetTxPowerRspMsg wdiSetTxPowerRspMsg;
18751 WDA_SetTxPowerRspCb wdiReqStatusCb;
18752 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18753
18754 /*-------------------------------------------------------------------------
18755 Sanity check
18756 -------------------------------------------------------------------------*/
18757 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18758 ( NULL == pEventData->pEventData))
18759 {
18760 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
18761 "%s: Invalid parameters", __func__);
18762 WDI_ASSERT(0);
18763 return WDI_STATUS_E_FAILURE;
18764 }
18765
18766 wdiReqStatusCb = (WDA_SetTxPowerRspCb)pWDICtx->pfncRspCB;
18767
18768 /*-------------------------------------------------------------------------
18769 Extract response and send it to UMAC
18770 -------------------------------------------------------------------------*/
18771 wpalMemoryCopy(&halTxpowerrsp.setTxPwrRspParams,
18772 pEventData->pEventData,
18773 sizeof(halTxpowerrsp.setTxPwrRspParams));
18774
18775 if (eHAL_STATUS_SUCCESS != halTxpowerrsp.setTxPwrRspParams.status)
18776 {
18777 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
18778 "Error status returned in Set Tx Power Response ");
18779 WDI_DetectedDeviceError(pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
18780 return WDI_STATUS_E_FAILURE;
18781 }
18782
18783 wdiSetTxPowerRspMsg.wdiStatus =
18784 WDI_HAL_2_WDI_STATUS(halTxpowerrsp.setTxPwrRspParams.status);
18785
18786 /*Notify UMAC*/
18787 wdiReqStatusCb(&wdiSetTxPowerRspMsg, pWDICtx->pRspCBUserData);
18788
18789 return WDI_STATUS_SUCCESS;
18790}
Arif Hussain935a8fb2014-01-31 12:12:28 -080018791
18792/**
18793 @brief Process Set Max Tx Power Per Band Rsp function (called when a response
18794 is being received over the bus from HAL)
18795
18796 @param pWDICtx: pointer to the WLAN DAL context
18797 pEventData: pointer to the event information structure
18798
18799 @see
18800 @return Result of the function call
18801*/
18802WDI_Status
18803WDI_ProcessSetMaxTxPowerPerBandRsp
18804(
18805 WDI_ControlBlockType* pWDICtx,
18806 WDI_EventInfoType* pEventData
18807)
18808{
18809 tSetMaxTxPwrPerBandRspMsg halMaxTxPowerPerBandRsp;
18810 WDI_SetMaxTxPowerPerBandRspMsg wdiSetTxPowerPerBandRspMsg;
18811 WDA_SetMaxTxPowerPerBandRspCb wdiReqStatusCb;
18812 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18813
18814 /*-------------------------------------------------------------------------
18815 Sanity check
18816 -------------------------------------------------------------------------*/
18817 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18818 ( NULL == pEventData->pEventData))
18819 {
18820 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
18821 "%s: Invalid parameters", __func__);
18822 WDI_ASSERT(0);
18823 return WDI_STATUS_E_FAILURE;
18824 }
18825
18826 wdiReqStatusCb = (WDA_SetMaxTxPowerPerBandRspCb)pWDICtx->pfncRspCB;
18827
18828 /*-------------------------------------------------------------------------
18829 Extract response and send it to UMAC
18830 -------------------------------------------------------------------------*/
18831 wpalMemoryCopy(&halMaxTxPowerPerBandRsp.setMaxTxPwrPerBandRspParams,
18832 pEventData->pEventData,
18833 sizeof(halMaxTxPowerPerBandRsp.setMaxTxPwrPerBandRspParams));
18834
18835 if (eHAL_STATUS_SUCCESS !=
18836 halMaxTxPowerPerBandRsp.setMaxTxPwrPerBandRspParams.status)
18837 {
18838 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
18839 "Error status returned in Set Max Tx Power Per Band Response");
18840 return WDI_STATUS_E_FAILURE;
18841 }
18842
18843 wdiSetTxPowerPerBandRspMsg.wdiStatus =
18844 WDI_HAL_2_WDI_STATUS(
18845 halMaxTxPowerPerBandRsp.setMaxTxPwrPerBandRspParams.status);
18846
18847 /* Notify UMAC */
18848 wdiReqStatusCb(&wdiSetTxPowerPerBandRspMsg, pWDICtx->pRspCBUserData);
18849
18850 return WDI_STATUS_SUCCESS;
18851}
18852
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053018853#ifdef FEATURE_WLAN_TDLS
18854/**
18855 @brief Process TDLS Link Establish Rsp function (called
18856 when a response is being received over the bus from HAL)
18857
18858 @param pWDICtx: pointer to the WLAN DAL context
18859 pEventData: pointer to the event information structure
18860
18861 @see
18862 @return Result of the function call
18863*/
18864WDI_Status
18865WDI_ProcessLinkEstablishReqRsp
18866(
18867 WDI_ControlBlockType* pWDICtx,
18868 WDI_EventInfoType* pEventData
18869)
18870{
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053018871 eHalStatus halStatus;
18872 WDI_SetTDLSLinkEstablishReqParamsRspCb wdiTDLSLinkEstablishReqParamsRspCb;
Gopichand Nakkala574f6d12013-06-27 19:38:43 +053018873 tTDLSLinkEstablishedRespMsg halTdlsLinkEstablishedRespMsg;
18874 WDI_SetTdlsLinkEstablishReqResp wdiSetTdlsLinkEstablishReqResp;
18875
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053018876 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18877
18878 /*-------------------------------------------------------------------------
18879 Sanity check
18880 -------------------------------------------------------------------------*/
18881 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18882 ( NULL == pEventData->pEventData))
18883 {
18884 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
18885 "%s: Invalid parameters", __func__);
18886 WDI_ASSERT(0);
18887 return WDI_STATUS_E_FAILURE;
18888 }
18889
Gopichand Nakkala574f6d12013-06-27 19:38:43 +053018890 /*-------------------------------------------------------------------------
18891 Extract indication and send it to UMAC
18892 -------------------------------------------------------------------------*/
18893 wpalMemoryCopy( &halTdlsLinkEstablishedRespMsg.TDLSLinkEstablishedRespParams,
18894 pEventData->pEventData,
18895 sizeof(halTdlsLinkEstablishedRespMsg.TDLSLinkEstablishedRespParams) );
18896
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053018897 wdiTDLSLinkEstablishReqParamsRspCb = (WDI_SetTDLSLinkEstablishReqParamsRspCb)pWDICtx->pfncRspCB;
18898
18899 /*-------------------------------------------------------------------------
18900 Extract response and send it to UMAC
18901 -------------------------------------------------------------------------*/
18902 wpalMemoryCopy( &halStatus,
18903 pEventData->pEventData,
18904 sizeof(halStatus));
18905
Gopichand Nakkala574f6d12013-06-27 19:38:43 +053018906 wdiSetTdlsLinkEstablishReqResp.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
18907 wdiSetTdlsLinkEstablishReqResp.uStaIdx = halTdlsLinkEstablishedRespMsg.TDLSLinkEstablishedRespParams.staIdx;
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053018908
18909 /*Notify UMAC*/
Gopichand Nakkala574f6d12013-06-27 19:38:43 +053018910 wdiTDLSLinkEstablishReqParamsRspCb( &wdiSetTdlsLinkEstablishReqResp, pWDICtx->pRspCBUserData);
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053018911
18912 return WDI_STATUS_SUCCESS;
18913}/*WDI_ProcessLinkEstablishReqRsp*/
18914#endif
schang86c22c42013-03-13 18:41:24 -070018915
Jeff Johnson295189b2012-06-20 16:38:30 -070018916/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018917 @brief Process P2P Group Owner Notice Of Absense Rsp function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070018918 when a response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018919
18920 @param pWDICtx: pointer to the WLAN DAL context
18921 pEventData: pointer to the event information structure
18922
Jeff Johnson295189b2012-06-20 16:38:30 -070018923 @see
18924 @return Result of the function call
18925*/
18926WDI_Status
18927WDI_ProcessP2PGONOARsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018928(
Jeff Johnson295189b2012-06-20 16:38:30 -070018929 WDI_ControlBlockType* pWDICtx,
18930 WDI_EventInfoType* pEventData
18931)
18932{
18933 WDI_Status wdiStatus;
18934 eHalStatus halStatus;
18935 WDI_SetP2PGONOAReqParamsRspCb wdiP2PGONOAReqParamsRspCb;
18936 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18937
18938 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018939 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018940 -------------------------------------------------------------------------*/
18941 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18942 ( NULL == pEventData->pEventData))
18943 {
18944 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018945 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018946 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018947 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018948 }
18949
18950 wdiP2PGONOAReqParamsRspCb = (WDI_SetP2PGONOAReqParamsRspCb)pWDICtx->pfncRspCB;
18951
18952 /*-------------------------------------------------------------------------
18953 Extract response and send it to UMAC
18954 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018955 wpalMemoryCopy( &halStatus,
18956 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070018957 sizeof(halStatus));
18958
Jeff Johnsone7245742012-09-05 17:12:55 -070018959 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018960
18961 /*Notify UMAC*/
18962 wdiP2PGONOAReqParamsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
18963
Jeff Johnsone7245742012-09-05 17:12:55 -070018964 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018965}/*WDI_ProcessP2PGONOARsp*/
Jeff Johnson295189b2012-06-20 16:38:30 -070018966/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018967 @brief Process Enter IMPS Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070018968 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018969
18970 @param pWDICtx: pointer to the WLAN DAL context
18971 pEventData: pointer to the event information structure
18972
Jeff Johnson295189b2012-06-20 16:38:30 -070018973 @see
18974 @return Result of the function call
18975*/
18976WDI_Status
18977WDI_ProcessEnterImpsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018978(
Jeff Johnson295189b2012-06-20 16:38:30 -070018979 WDI_ControlBlockType* pWDICtx,
18980 WDI_EventInfoType* pEventData
18981)
18982{
18983 WDI_Status wdiStatus;
18984 eHalStatus halStatus;
18985 WDI_EnterImpsRspCb wdiEnterImpsRspCb;
Ravali85acf6b2012-12-12 14:01:38 -080018986 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070018987 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18988
18989 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018990 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018991 -------------------------------------------------------------------------*/
18992 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18993 ( NULL == pEventData->pEventData))
18994 {
18995 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018996 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018997 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018998 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018999 }
19000
19001 wdiEnterImpsRspCb = (WDI_EnterImpsRspCb)pWDICtx->pfncRspCB;
19002
19003 /*-------------------------------------------------------------------------
19004 Extract response and send it to UMAC
19005 -------------------------------------------------------------------------*/
19006 halStatus = *((eHalStatus*)pEventData->pEventData);
19007
Jeff Johnsone7245742012-09-05 17:12:55 -070019008 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019009
Madan Mohan Koyyalamudi48e375a2012-09-24 13:19:17 -070019010 /* If IMPS req failed, riva is not power collapsed Put the DXE in FULL state.
19011 * Other module states are taken care by PMC.
19012 * TODO: How do we take care of the case where IMPS is success, but riva power collapse fails??
19013 */
19014 if (wdiStatus != WDI_STATUS_SUCCESS) {
19015
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070019016 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
19017 "WDI Process Enter IMPS RSP failed With HAL Status Code: %d",
19018 halStatus);
19019 /* Call Back is not required as we are putting the DXE in FULL
19020 * and riva is already in full (IMPS RSP Failed)*/
Ravali85acf6b2012-12-12 14:01:38 -080019021 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
19022
19023 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus ) {
19024 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain9a5d5382013-11-17 22:05:35 -080019025 "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 -080019026 WDI_ASSERT(0);
19027 }
Madan Mohan Koyyalamudi48e375a2012-09-24 13:19:17 -070019028 }
Jeff Johnson295189b2012-06-20 16:38:30 -070019029 /*Notify UMAC*/
19030 wdiEnterImpsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
19031
Jeff Johnsone7245742012-09-05 17:12:55 -070019032 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019033}/*WDI_ProcessEnterImpsRsp*/
19034
19035/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019036 @brief Process Exit IMPS Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070019037 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019038
19039 @param pWDICtx: pointer to the WLAN DAL context
19040 pEventData: pointer to the event information structure
19041
Jeff Johnson295189b2012-06-20 16:38:30 -070019042 @see
19043 @return Result of the function call
19044*/
19045WDI_Status
19046WDI_ProcessExitImpsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019047(
Jeff Johnson295189b2012-06-20 16:38:30 -070019048 WDI_ControlBlockType* pWDICtx,
19049 WDI_EventInfoType* pEventData
19050)
19051{
19052 WDI_Status wdiStatus;
19053 eHalStatus halStatus;
19054 WDI_ExitImpsRspCb wdiExitImpsRspCb;
Ravali85acf6b2012-12-12 14:01:38 -080019055 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070019056 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19057
19058 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019059 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019060 -------------------------------------------------------------------------*/
19061 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19062 ( NULL == pEventData->pEventData))
19063 {
19064 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019065 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019066 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019067 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019068 }
19069
19070 wdiExitImpsRspCb = (WDI_ExitImpsRspCb)pWDICtx->pfncRspCB;
19071
19072 /*-------------------------------------------------------------------------
19073 Extract response and send it to UMAC
19074 -------------------------------------------------------------------------*/
19075 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070019076 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019077
Gopichand Nakkalac6c91902013-05-29 18:53:35 +053019078 if (halStatus != eHAL_STATUS_SUCCESS)
19079 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
19080 "%s: Exit IMPS response is a failure with halStatus %d", __func__, halStatus);
19081
Jeff Johnson295189b2012-06-20 16:38:30 -070019082 // notify DTS that we are entering Full power
Ravali85acf6b2012-12-12 14:01:38 -080019083 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
19084 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
19085 {
19086 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain9a5d5382013-11-17 22:05:35 -080019087 "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 -080019088 WDI_ASSERT(0);
19089 }
Jeff Johnson295189b2012-06-20 16:38:30 -070019090 /*Notify UMAC*/
19091 wdiExitImpsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
19092
Jeff Johnsone7245742012-09-05 17:12:55 -070019093 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019094}/*WDI_ProcessExitImpsRsp*/
19095
19096/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019097 @brief Process Enter BMPS Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070019098 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019099
19100 @param pWDICtx: pointer to the WLAN DAL context
19101 pEventData: pointer to the event information structure
19102
Jeff Johnson295189b2012-06-20 16:38:30 -070019103 @see
19104 @return Result of the function call
19105*/
19106WDI_Status
19107WDI_ProcessEnterBmpsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019108(
Jeff Johnson295189b2012-06-20 16:38:30 -070019109 WDI_ControlBlockType* pWDICtx,
19110 WDI_EventInfoType* pEventData
19111)
19112{
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019113 eHalStatus halStatus = eHAL_STATUS_FAILURE;
19114 tHalEnterBmpsRspParams halEnterBmpsRsp;
19115 WDI_EnterBmpsRspCb wdiEnterBmpsRspCb;
19116 WDI_EnterBmpsRspParamsType wdiEnterBmpsRspparams;
Ravali85acf6b2012-12-12 14:01:38 -080019117 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070019118 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19119
19120 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019121 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019122 -------------------------------------------------------------------------*/
19123 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19124 ( NULL == pEventData->pEventData))
19125 {
19126 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019127 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019128 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019129 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019130 }
19131
Jeff Johnson295189b2012-06-20 16:38:30 -070019132 /*-------------------------------------------------------------------------
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019133 Extract response and send it to UMAC
19134 -------------------------------------------------------------------------*/
19135 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
19136 {
19137 wpalMemoryCopy( &halEnterBmpsRsp,
19138 pEventData->pEventData,
19139 sizeof(halEnterBmpsRsp));
19140
19141 //Used to print debug message
19142 halStatus = halEnterBmpsRsp.status;
19143 wdiEnterBmpsRspparams.wdiStatus = WDI_HAL_2_WDI_STATUS(halEnterBmpsRsp.status);
19144 wdiEnterBmpsRspparams.bssIdx = halEnterBmpsRsp.bssIdx;
19145 }
19146 else
19147 {
19148 halStatus = *((eHalStatus*)pEventData->pEventData);
19149 wdiEnterBmpsRspparams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
19150 }
19151
19152 wdiEnterBmpsRspCb = (WDI_EnterBmpsRspCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070019153
Madan Mohan Koyyalamudi48e375a2012-09-24 13:19:17 -070019154 /* If BMPS req failed, riva is not power collapsed put the DXE in FULL state.
19155 * Other module states are taken care by PMC.
19156 * TODO: How do we take care of the case where BMPS is success, but riva power collapse fails??
19157 */
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019158 if (wdiEnterBmpsRspparams.wdiStatus != WDI_STATUS_SUCCESS)
19159 {
Madan Mohan Koyyalamudi48e375a2012-09-24 13:19:17 -070019160
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019161 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070019162 "WDI Process Enter BMPS RSP failed With HAL Status Code: %d",
19163 halStatus);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019164 /* Call Back is not required as we are putting the DXE in FULL
19165 * and riva is already in FULL (BMPS RSP Failed)*/
Ravali85acf6b2012-12-12 14:01:38 -080019166 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
19167 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
19168 {
19169 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain9a5d5382013-11-17 22:05:35 -080019170 "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 -080019171 WDI_ASSERT(0);
19172 }
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019173 pWDICtx->bInBmps = eWLAN_PAL_FALSE;
Madan Mohan Koyyalamudi48e375a2012-09-24 13:19:17 -070019174 }
19175
Jeff Johnson295189b2012-06-20 16:38:30 -070019176 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019177 wdiEnterBmpsRspCb( &wdiEnterBmpsRspparams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070019178
Jeff Johnsone7245742012-09-05 17:12:55 -070019179 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019180}/*WDI_ProcessEnterBmpsRsp*/
19181
19182/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019183 @brief Process Exit BMPS Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070019184 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019185
19186 @param pWDICtx: pointer to the WLAN DAL context
19187 pEventData: pointer to the event information structure
19188
Jeff Johnson295189b2012-06-20 16:38:30 -070019189 @see
19190 @return Result of the function call
19191*/
19192WDI_Status
19193WDI_ProcessExitBmpsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019194(
Jeff Johnson295189b2012-06-20 16:38:30 -070019195 WDI_ControlBlockType* pWDICtx,
19196 WDI_EventInfoType* pEventData
19197)
19198{
Jeff Johnson295189b2012-06-20 16:38:30 -070019199 eHalStatus halStatus;
19200 WDI_ExitBmpsRspCb wdiExitBmpsRspCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019201 tHalExitBmpsRspParams halExitBmpsRsp;
Ravali85acf6b2012-12-12 14:01:38 -080019202 WDI_ExitBmpsRspParamsType wdiExitBmpsRspParams;
19203 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070019204 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19205
19206 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019207 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019208 -------------------------------------------------------------------------*/
19209 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19210 ( NULL == pEventData->pEventData))
19211 {
19212 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019213 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019214 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019215 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019216 }
19217
19218 wdiExitBmpsRspCb = (WDI_ExitBmpsRspCb)pWDICtx->pfncRspCB;
19219
19220 /*-------------------------------------------------------------------------
19221 Extract response and send it to UMAC
19222 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019223
19224 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
19225 {
19226 wpalMemoryCopy( &halExitBmpsRsp,
19227 pEventData->pEventData,
19228 sizeof(halExitBmpsRsp));
19229
19230 wdiExitBmpsRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halExitBmpsRsp.status);
19231 wdiExitBmpsRspParams.bssIdx = halExitBmpsRsp.bssIdx;
19232 }
19233 else
19234 {
19235 halStatus = *((eHalStatus*)pEventData->pEventData);
19236 wdiExitBmpsRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
19237 }
Jeff Johnson295189b2012-06-20 16:38:30 -070019238
19239 // notify DTS that we are entering Full power
Ravali85acf6b2012-12-12 14:01:38 -080019240 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
19241 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
19242 {
19243 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain9a5d5382013-11-17 22:05:35 -080019244 "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 -080019245 WDI_ASSERT(0);
19246 }
Jeff Johnson295189b2012-06-20 16:38:30 -070019247 pWDICtx->bInBmps = eWLAN_PAL_FALSE;
19248
19249 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019250 wdiExitBmpsRspCb( &wdiExitBmpsRspParams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070019251
Jeff Johnsone7245742012-09-05 17:12:55 -070019252 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019253}/*WDI_ProcessExitBmpsRsp*/
19254
19255/**
19256 @brief Process Enter UAPSD Rsp function (called when a response
19257 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019258
19259 @param pWDICtx: pointer to the WLAN DAL context
19260 pEventData: pointer to the event information structure
19261
Jeff Johnson295189b2012-06-20 16:38:30 -070019262 @see
19263 @return Result of the function call
19264*/
19265WDI_Status
19266WDI_ProcessEnterUapsdRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019267(
Jeff Johnson295189b2012-06-20 16:38:30 -070019268 WDI_ControlBlockType* pWDICtx,
19269 WDI_EventInfoType* pEventData
19270)
19271{
Jeff Johnson295189b2012-06-20 16:38:30 -070019272 eHalStatus halStatus;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019273 tUapsdRspParams halEnterUapsdRsp;
Jeff Johnson295189b2012-06-20 16:38:30 -070019274 WDI_EnterUapsdRspCb wdiEnterUapsdRspCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019275 WDI_EnterUapsdRspParamsType wdiEnterUapsdRspParams;
19276
Jeff Johnson295189b2012-06-20 16:38:30 -070019277 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19278
19279 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019280 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019281 -------------------------------------------------------------------------*/
19282 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19283 ( NULL == pEventData->pEventData))
19284 {
19285 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019286 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019287 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019288 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019289 }
19290
19291 wdiEnterUapsdRspCb = (WDI_EnterUapsdRspCb)pWDICtx->pfncRspCB;
19292
19293 /*-------------------------------------------------------------------------
19294 Extract response and send it to UMAC
19295 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019296 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
19297 {
19298 wpalMemoryCopy( &halEnterUapsdRsp,
19299 pEventData->pEventData,
19300 sizeof(halEnterUapsdRsp));
Jeff Johnson295189b2012-06-20 16:38:30 -070019301
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019302 wdiEnterUapsdRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halEnterUapsdRsp.status);
19303 wdiEnterUapsdRspParams.bssIdx = halEnterUapsdRsp.bssIdx;
19304 }
19305 else
19306 {
19307 halStatus = *((eHalStatus*)pEventData->pEventData);
19308 wdiEnterUapsdRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
19309 }
19310
19311 if(WDI_STATUS_SUCCESS == wdiEnterUapsdRspParams.wdiStatus)
Jeff Johnson295189b2012-06-20 16:38:30 -070019312 {
19313 // Set the DPU routing flag to the FW WQ, all the TX frames would be now pushed
19314 // from DPU to the FW-WQ (5) in UAPSD. FW would be in data path, monitoring
19315 // the traffic to decide when to suspend the trigger frames when there is no traffic
19316 // activity on the trigger enabled ACs
19317 pWDICtx->ucDpuRF = BMUWQ_FW_DPU_TX;
19318
19319#ifdef WLAN_PERF
19320 // Increment the BD signature to refresh the fast path BD utilization
19321 pWDICtx->uBdSigSerialNum++;
19322#endif
19323 }
19324
19325 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019326 wdiEnterUapsdRspCb( &wdiEnterUapsdRspParams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070019327
Jeff Johnsone7245742012-09-05 17:12:55 -070019328 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019329}/*WDI_ProcessEnterUapsdRsp*/
19330
19331/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019332 @brief Process Exit UAPSD Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070019333 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019334
19335 @param pWDICtx: pointer to the WLAN DAL context
19336 pEventData: pointer to the event information structure
19337
Jeff Johnson295189b2012-06-20 16:38:30 -070019338 @see
19339 @return Result of the function call
19340*/
19341WDI_Status
19342WDI_ProcessExitUapsdRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019343(
Jeff Johnson295189b2012-06-20 16:38:30 -070019344 WDI_ControlBlockType* pWDICtx,
19345 WDI_EventInfoType* pEventData
19346)
19347{
Jeff Johnson295189b2012-06-20 16:38:30 -070019348 eHalStatus halStatus;
19349 WDI_ExitUapsdRspCb wdiExitUapsdRspCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019350 tHalExitUapsdRspParams halExitUapsdRsp;
19351 WDI_ExitUapsdRspParamsType wdiExitUapsdRspParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070019352 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19353
19354 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019355 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019356 -------------------------------------------------------------------------*/
19357 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19358 ( NULL == pEventData->pEventData))
19359 {
19360 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019361 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019362 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019363 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019364 }
19365
19366 wdiExitUapsdRspCb = (WDI_ExitUapsdRspCb)pWDICtx->pfncRspCB;
19367
19368 /*-------------------------------------------------------------------------
19369 Extract response and send it to UMAC
19370 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019371 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
19372 {
19373 wpalMemoryCopy( &halExitUapsdRsp,
19374 pEventData->pEventData,
19375 sizeof(halExitUapsdRsp));
19376
19377 wdiExitUapsdRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halExitUapsdRsp.status);
19378 wdiExitUapsdRspParams.bssIdx = halExitUapsdRsp.bssIdx;
19379 }
19380 else
19381 {
19382 halStatus = *((eHalStatus*)pEventData->pEventData);
19383 wdiExitUapsdRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
19384 }
Jeff Johnson295189b2012-06-20 16:38:30 -070019385 // Restore back the DPU routing flag in the TxBD, for DPU to push the TxBDs to BTQM
19386 // directly instead of the FW WQ.
19387 pWDICtx->ucDpuRF = BMUWQ_BTQM_TX_MGMT;
19388
19389#ifdef WLAN_PERF
19390 // Increment the BD signature to refresh the fast path BD utilization
19391 pWDICtx->uBdSigSerialNum++;
19392#endif
19393
19394 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019395 wdiExitUapsdRspCb( &wdiExitUapsdRspParams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070019396
Jeff Johnsone7245742012-09-05 17:12:55 -070019397 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019398}/*WDI_ProcessExitUapsdRsp*/
19399
19400/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019401 @brief Process set UAPSD params Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070019402 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019403
19404 @param pWDICtx: pointer to the WLAN DAL context
19405 pEventData: pointer to the event information structure
19406
Jeff Johnson295189b2012-06-20 16:38:30 -070019407 @see
19408 @return Result of the function call
19409*/
19410WDI_Status
19411WDI_ProcessSetUapsdAcParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019412(
Jeff Johnson295189b2012-06-20 16:38:30 -070019413 WDI_ControlBlockType* pWDICtx,
19414 WDI_EventInfoType* pEventData
19415)
19416{
19417 WDI_Status wdiStatus;
19418 eHalStatus halStatus;
19419 WDI_SetUapsdAcParamsCb wdiSetUapsdAcParamsCb;
19420 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19421
19422 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019423 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019424 -------------------------------------------------------------------------*/
19425 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19426 ( NULL == pEventData->pEventData))
19427 {
19428 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019429 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019430 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019431 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019432 }
19433
19434 wdiSetUapsdAcParamsCb = (WDI_SetUapsdAcParamsCb)pWDICtx->pfncRspCB;
19435
19436 /*-------------------------------------------------------------------------
19437 Extract response and send it to UMAC
19438 -------------------------------------------------------------------------*/
19439 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070019440 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019441
19442 /*Notify UMAC*/
19443 wdiSetUapsdAcParamsCb( wdiStatus, pWDICtx->pRspCBUserData);
19444
Jeff Johnsone7245742012-09-05 17:12:55 -070019445 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019446}/*WDI_ProcessSetUapsdAcParamsRsp*/
19447
19448/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019449 @brief Process update UAPSD params Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070019450 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019451
19452 @param pWDICtx: pointer to the WLAN DAL context
19453 pEventData: pointer to the event information structure
19454
Jeff Johnson295189b2012-06-20 16:38:30 -070019455 @see
19456 @return Result of the function call
19457*/
19458WDI_Status
19459WDI_ProcessUpdateUapsdParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019460(
Jeff Johnson295189b2012-06-20 16:38:30 -070019461 WDI_ControlBlockType* pWDICtx,
19462 WDI_EventInfoType* pEventData
19463)
19464{
19465 WDI_Status wdiStatus;
19466 eHalStatus halStatus;
19467 WDI_UpdateUapsdParamsCb wdiUpdateUapsdParamsCb;
19468 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19469
19470 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019471 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019472 -------------------------------------------------------------------------*/
19473 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19474 ( NULL == pEventData->pEventData))
19475 {
19476 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019477 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019478 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019479 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019480 }
19481
19482 wdiUpdateUapsdParamsCb = (WDI_UpdateUapsdParamsCb)pWDICtx->pfncRspCB;
19483
19484 /*-------------------------------------------------------------------------
19485 Extract response and send it to UMAC
19486 -------------------------------------------------------------------------*/
19487 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070019488 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019489
19490 /*Notify UMAC*/
19491 wdiUpdateUapsdParamsCb( wdiStatus, pWDICtx->pRspCBUserData);
19492
Jeff Johnsone7245742012-09-05 17:12:55 -070019493 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019494}/*WDI_ProcessUpdateUapsdParamsRsp*/
19495
19496/**
19497 @brief Process Configure RXP filter Rsp function (called when a
19498 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019499
19500 @param pWDICtx: pointer to the WLAN DAL context
19501 pEventData: pointer to the event information structure
19502
Jeff Johnson295189b2012-06-20 16:38:30 -070019503 @see
19504 @return Result of the function call
19505*/
19506WDI_Status
19507WDI_ProcessConfigureRxpFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019508(
Jeff Johnson295189b2012-06-20 16:38:30 -070019509 WDI_ControlBlockType* pWDICtx,
19510 WDI_EventInfoType* pEventData
19511)
19512{
19513 WDI_Status wdiStatus;
19514 eHalStatus halStatus;
19515 WDI_ConfigureRxpFilterCb wdiConfigureRxpFilterCb;
19516 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19517
19518 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019519 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019520 -------------------------------------------------------------------------*/
19521 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19522 ( NULL == pEventData->pEventData))
19523 {
19524 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019525 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019526 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019527 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019528 }
19529
19530 wdiConfigureRxpFilterCb = (WDI_ConfigureRxpFilterCb)pWDICtx->pfncRspCB;
19531
19532 /*-------------------------------------------------------------------------
19533 Extract response and send it to UMAC
19534 -------------------------------------------------------------------------*/
19535 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070019536 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019537
19538 /*Notify UMAC*/
19539 wdiConfigureRxpFilterCb( wdiStatus, pWDICtx->pRspCBUserData);
19540
Jeff Johnsone7245742012-09-05 17:12:55 -070019541 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019542}/*WDI_ProcessConfigureRxpFilterRsp*/
19543
19544/**
19545 @brief Process Set beacon filter Rsp function (called when a
19546 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019547
19548 @param pWDICtx: pointer to the WLAN DAL context
19549 pEventData: pointer to the event information structure
19550
Jeff Johnson295189b2012-06-20 16:38:30 -070019551 @see
19552 @return Result of the function call
19553*/
19554WDI_Status
19555WDI_ProcessSetBeaconFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019556(
Jeff Johnson295189b2012-06-20 16:38:30 -070019557 WDI_ControlBlockType* pWDICtx,
19558 WDI_EventInfoType* pEventData
19559)
19560{
19561 WDI_Status wdiStatus;
19562 eHalStatus halStatus;
19563 WDI_SetBeaconFilterCb wdiBeaconFilterCb;
19564 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19565
19566 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019567 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019568 -------------------------------------------------------------------------*/
19569 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19570 ( NULL == pEventData->pEventData))
19571 {
19572 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019573 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019574 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019575 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019576 }
19577
19578 wdiBeaconFilterCb = (WDI_SetBeaconFilterCb)pWDICtx->pfncRspCB;
19579
19580 /*-------------------------------------------------------------------------
19581 Extract response and send it to UMAC
19582 -------------------------------------------------------------------------*/
19583 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070019584 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019585
19586 /*Notify UMAC*/
19587 wdiBeaconFilterCb( wdiStatus, pWDICtx->pRspCBUserData);
19588
Jeff Johnsone7245742012-09-05 17:12:55 -070019589 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019590}/*WDI_ProcessSetBeaconFilterRsp*/
19591
19592/**
19593 @brief Process remove beacon filter Rsp function (called when a
19594 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019595
19596 @param pWDICtx: pointer to the WLAN DAL context
19597 pEventData: pointer to the event information structure
19598
Jeff Johnson295189b2012-06-20 16:38:30 -070019599 @see
19600 @return Result of the function call
19601*/
19602WDI_Status
19603WDI_ProcessRemBeaconFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019604(
Jeff Johnson295189b2012-06-20 16:38:30 -070019605 WDI_ControlBlockType* pWDICtx,
19606 WDI_EventInfoType* pEventData
19607)
19608{
19609 WDI_Status wdiStatus;
19610 eHalStatus halStatus;
19611 WDI_RemBeaconFilterCb wdiBeaconFilterCb;
19612 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19613
19614 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019615 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019616 -------------------------------------------------------------------------*/
19617 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19618 ( NULL == pEventData->pEventData))
19619 {
19620 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019621 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019622 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019623 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019624 }
19625
19626 wdiBeaconFilterCb = (WDI_RemBeaconFilterCb)pWDICtx->pfncRspCB;
19627
19628 /*-------------------------------------------------------------------------
19629 Extract response and send it to UMAC
19630 -------------------------------------------------------------------------*/
19631 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070019632 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019633
19634 /*Notify UMAC*/
19635 wdiBeaconFilterCb( wdiStatus, pWDICtx->pRspCBUserData);
19636
Jeff Johnsone7245742012-09-05 17:12:55 -070019637 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019638}/*WDI_ProcessRemBeaconFilterRsp*/
19639
19640/**
19641 @brief Process set RSSI thresholds Rsp function (called when a
19642 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019643
19644 @param pWDICtx: pointer to the WLAN DAL context
19645 pEventData: pointer to the event information structure
19646
Jeff Johnson295189b2012-06-20 16:38:30 -070019647 @see
19648 @return Result of the function call
19649*/
19650WDI_Status
19651WDI_ProcessSetRSSIThresoldsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019652(
Jeff Johnson295189b2012-06-20 16:38:30 -070019653 WDI_ControlBlockType* pWDICtx,
19654 WDI_EventInfoType* pEventData
19655)
19656{
19657 WDI_Status wdiStatus;
19658 eHalStatus halStatus;
19659 WDI_SetRSSIThresholdsCb wdiRSSIThresholdsCb;
19660 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19661
19662 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019663 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019664 -------------------------------------------------------------------------*/
19665 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19666 ( NULL == pEventData->pEventData))
19667 {
19668 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019669 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019670 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019671 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019672 }
19673
19674 wdiRSSIThresholdsCb = (WDI_SetRSSIThresholdsCb)pWDICtx->pfncRspCB;
19675
19676 /*-------------------------------------------------------------------------
19677 Extract response and send it to UMAC
19678 -------------------------------------------------------------------------*/
19679 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070019680 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019681
19682 /*Notify UMAC*/
19683 wdiRSSIThresholdsCb( wdiStatus, pWDICtx->pRspCBUserData);
19684
Jeff Johnsone7245742012-09-05 17:12:55 -070019685 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019686}/*WDI_ProcessSetRSSIThresoldsRsp*/
19687
19688/**
19689 @brief Process host offload Rsp function (called when a
19690 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019691
19692 @param pWDICtx: pointer to the WLAN DAL context
19693 pEventData: pointer to the event information structure
19694
Jeff Johnson295189b2012-06-20 16:38:30 -070019695 @see
19696 @return Result of the function call
19697*/
19698WDI_Status
19699WDI_ProcessHostOffloadRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019700(
Jeff Johnson295189b2012-06-20 16:38:30 -070019701 WDI_ControlBlockType* pWDICtx,
19702 WDI_EventInfoType* pEventData
19703)
19704{
19705 WDI_Status wdiStatus;
19706 eHalStatus halStatus;
19707 WDI_HostOffloadCb wdiHostOffloadCb;
19708 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19709
19710 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019711 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019712 -------------------------------------------------------------------------*/
19713 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19714 ( NULL == pEventData->pEventData))
19715 {
19716 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019717 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019718 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019719 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019720 }
19721
19722 wdiHostOffloadCb = (WDI_HostOffloadCb)pWDICtx->pfncRspCB;
19723
19724 /*-------------------------------------------------------------------------
19725 Extract response and send it to UMAC
19726 -------------------------------------------------------------------------*/
19727 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070019728 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019729
19730 /*Notify UMAC*/
19731 wdiHostOffloadCb( wdiStatus, pWDICtx->pRspCBUserData);
19732
Jeff Johnsone7245742012-09-05 17:12:55 -070019733 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019734}/*WDI_ProcessHostOffloadRsp*/
19735
19736/**
19737 @brief Process keep alive Rsp function (called when a
19738 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019739
19740 @param pWDICtx: pointer to the WLAN DAL context
19741 pEventData: pointer to the event information structure
19742
Jeff Johnson295189b2012-06-20 16:38:30 -070019743 @see
19744 @return Result of the function call
19745*/
19746WDI_Status
19747WDI_ProcessKeepAliveRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019748(
Jeff Johnson295189b2012-06-20 16:38:30 -070019749 WDI_ControlBlockType* pWDICtx,
19750 WDI_EventInfoType* pEventData
19751)
19752{
19753 WDI_Status wdiStatus;
19754 eHalStatus halStatus;
19755 WDI_KeepAliveCb wdiKeepAliveCb;
19756 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19757 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
19758 "Received WDI_ProcessKeepAliveRsp Callback from HAL");
19759
19760
19761 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019762 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019763 -------------------------------------------------------------------------*/
19764 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19765 ( NULL == pEventData->pEventData))
19766 {
19767 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019768 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019769 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019770 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019771 }
19772
Jeff Johnsone7245742012-09-05 17:12:55 -070019773 wdiKeepAliveCb = (WDI_KeepAliveCb)pWDICtx->pfncRspCB;
19774
Jeff Johnson295189b2012-06-20 16:38:30 -070019775 /*-------------------------------------------------------------------------
19776 Extract response and send it to UMAC
19777 -------------------------------------------------------------------------*/
19778 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070019779 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019780
19781 /*Notify UMAC*/
19782 wdiKeepAliveCb( wdiStatus, pWDICtx->pRspCBUserData);
19783
Jeff Johnsone7245742012-09-05 17:12:55 -070019784 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019785}/*WDI_ProcessKeepAliveRsp*/
19786
19787/**
19788 @brief Process wowl add ptrn Rsp function (called when a
19789 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019790
19791 @param pWDICtx: pointer to the WLAN DAL context
19792 pEventData: pointer to the event information structure
19793
Jeff Johnson295189b2012-06-20 16:38:30 -070019794 @see
19795 @return Result of the function call
19796*/
19797WDI_Status
19798WDI_ProcessWowlAddBcPtrnRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019799(
Jeff Johnson295189b2012-06-20 16:38:30 -070019800 WDI_ControlBlockType* pWDICtx,
19801 WDI_EventInfoType* pEventData
19802)
19803{
Jeff Johnson295189b2012-06-20 16:38:30 -070019804 eHalStatus halStatus;
19805 WDI_WowlAddBcPtrnCb wdiWowlAddBcPtrnCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019806 tHalAddWowlBcastPtrnRspParams halAddWowlBcastPtrRsp;
19807 WDI_WowlAddBcPtrnRspParamsType wdiWowlAddBcPtrRsp;
19808
Jeff Johnson295189b2012-06-20 16:38:30 -070019809 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19810
19811 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019812 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019813 -------------------------------------------------------------------------*/
19814 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19815 ( NULL == pEventData->pEventData))
19816 {
19817 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019818 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019819 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019820 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019821 }
19822
19823 wdiWowlAddBcPtrnCb = (WDI_WowlAddBcPtrnCb)pWDICtx->pfncRspCB;
19824
19825 /*-------------------------------------------------------------------------
19826 Extract response and send it to UMAC
19827 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019828 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
19829 {
19830 wpalMemoryCopy( &halAddWowlBcastPtrRsp,
19831 pEventData->pEventData,
19832 sizeof(halAddWowlBcastPtrRsp));
19833
19834 wdiWowlAddBcPtrRsp.wdiStatus =
19835 WDI_HAL_2_WDI_STATUS(halAddWowlBcastPtrRsp.status);
19836 }
19837 else
19838 {
19839 halStatus = *((eHalStatus*)pEventData->pEventData);
19840 wdiWowlAddBcPtrRsp.wdiStatus =
19841 WDI_HAL_2_WDI_STATUS(halStatus);
19842 }
Jeff Johnson295189b2012-06-20 16:38:30 -070019843
19844 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019845 wdiWowlAddBcPtrnCb( &wdiWowlAddBcPtrRsp, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070019846
Jeff Johnsone7245742012-09-05 17:12:55 -070019847 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019848}/*WDI_ProcessWowlAddBcPtrnRsp*/
19849
19850/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019851 @brief Process wowl delete ptrn Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070019852 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019853
19854 @param pWDICtx: pointer to the WLAN DAL context
19855 pEventData: pointer to the event information structure
19856
Jeff Johnson295189b2012-06-20 16:38:30 -070019857 @see
19858 @return Result of the function call
19859*/
19860WDI_Status
19861WDI_ProcessWowlDelBcPtrnRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019862(
Jeff Johnson295189b2012-06-20 16:38:30 -070019863 WDI_ControlBlockType* pWDICtx,
19864 WDI_EventInfoType* pEventData
19865)
19866{
Jeff Johnson295189b2012-06-20 16:38:30 -070019867 eHalStatus halStatus;
19868 WDI_WowlDelBcPtrnCb wdiWowlDelBcPtrnCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019869 tHalDelWowlBcastPtrnRspParams halDelWowlBcastPtrRsp;
19870 WDI_WowlDelBcPtrnRspParamsType wdiWowlDelBcstPtrRsp;
Jeff Johnson295189b2012-06-20 16:38:30 -070019871 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
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 wdiWowlDelBcPtrnCb = (WDI_WowlDelBcPtrnCb)pWDICtx->pfncRspCB;
19886
19887 /*-------------------------------------------------------------------------
19888 Extract response and send it to UMAC
19889 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019890 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
19891 {
19892 wpalMemoryCopy( &halDelWowlBcastPtrRsp,
19893 pEventData->pEventData,
19894 sizeof(halDelWowlBcastPtrRsp));
Jeff Johnson295189b2012-06-20 16:38:30 -070019895
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019896 wdiWowlDelBcstPtrRsp.wdiStatus =
19897 WDI_HAL_2_WDI_STATUS(halDelWowlBcastPtrRsp.status);
19898 }
19899 else
19900 {
19901 halStatus = *((eHalStatus*)pEventData->pEventData);
19902 wdiWowlDelBcstPtrRsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
19903 }
Jeff Johnson295189b2012-06-20 16:38:30 -070019904 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019905 wdiWowlDelBcPtrnCb( &wdiWowlDelBcstPtrRsp, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070019906
Jeff Johnsone7245742012-09-05 17:12:55 -070019907 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019908}/*WDI_ProcessWowlDelBcPtrnRsp*/
19909
19910/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019911 @brief Process wowl enter Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070019912 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019913
19914 @param pWDICtx: pointer to the WLAN DAL context
19915 pEventData: pointer to the event information structure
19916
Jeff Johnson295189b2012-06-20 16:38:30 -070019917 @see
19918 @return Result of the function call
19919*/
19920WDI_Status
19921WDI_ProcessWowlEnterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019922(
Jeff Johnson295189b2012-06-20 16:38:30 -070019923 WDI_ControlBlockType* pWDICtx,
19924 WDI_EventInfoType* pEventData
19925)
19926{
Jeff Johnson295189b2012-06-20 16:38:30 -070019927 eHalStatus halStatus;
19928 WDI_WowlEnterReqCb wdiWowlEnterCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019929 WDI_WowlEnterRspParamsType wdiwowlEnterRsp;
19930 tHalEnterWowlRspParams halEnterWowlRspParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070019931 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19932
19933 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019934 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019935 -------------------------------------------------------------------------*/
19936 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19937 ( NULL == pEventData->pEventData))
19938 {
19939 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019940 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019941 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019942 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019943 }
19944
19945 wdiWowlEnterCb = (WDI_WowlEnterReqCb)pWDICtx->pfncRspCB;
19946
19947 /*-------------------------------------------------------------------------
19948 Extract response and send it to UMAC
19949 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019950 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
19951 {
19952 wpalMemoryCopy( &halEnterWowlRspParams,
19953 (wpt_uint8*)pEventData->pEventData,
19954 sizeof(halEnterWowlRspParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070019955
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019956 wdiwowlEnterRsp.bssIdx = halEnterWowlRspParams.bssIdx;
19957 wdiwowlEnterRsp.status =
19958 WDI_HAL_2_WDI_STATUS(halEnterWowlRspParams.status);
19959 }
19960 else
19961 {
19962 halStatus = *((eHalStatus*)pEventData->pEventData);
19963 wdiwowlEnterRsp.status = WDI_HAL_2_WDI_STATUS(halStatus);
19964 }
Jeff Johnson295189b2012-06-20 16:38:30 -070019965 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019966 wdiWowlEnterCb( &wdiwowlEnterRsp, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070019967
Jeff Johnsone7245742012-09-05 17:12:55 -070019968 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019969}/*WDI_ProcessWowlEnterRsp*/
19970
19971/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019972 @brief Process wowl exit Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070019973 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019974
19975 @param pWDICtx: pointer to the WLAN DAL context
19976 pEventData: pointer to the event information structure
19977
Jeff Johnson295189b2012-06-20 16:38:30 -070019978 @see
19979 @return Result of the function call
19980*/
19981WDI_Status
19982WDI_ProcessWowlExitRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019983(
Jeff Johnson295189b2012-06-20 16:38:30 -070019984 WDI_ControlBlockType* pWDICtx,
19985 WDI_EventInfoType* pEventData
19986)
19987{
Jeff Johnson295189b2012-06-20 16:38:30 -070019988 eHalStatus halStatus;
19989 WDI_WowlExitReqCb wdiWowlExitCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019990 tHalExitWowlRspParams halExitWowlRspParams;
19991 WDI_WowlExitRspParamsType wdiWowlExitRsp;
19992
Jeff Johnson295189b2012-06-20 16:38:30 -070019993 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19994
19995 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019996 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019997 -------------------------------------------------------------------------*/
19998 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19999 ( NULL == pEventData->pEventData))
20000 {
20001 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020002 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020003 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020004 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020005 }
20006
20007 wdiWowlExitCb = (WDI_WowlExitReqCb)pWDICtx->pfncRspCB;
20008
20009 /*-------------------------------------------------------------------------
20010 Extract response and send it to UMAC
20011 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020012 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
20013 {
20014 wpalMemoryCopy( &halExitWowlRspParams,
20015 pEventData->pEventData,
20016 sizeof(halExitWowlRspParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070020017
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020018 wdiWowlExitRsp.status = WDI_HAL_2_WDI_STATUS(halExitWowlRspParams.status);
20019 wdiWowlExitRsp.bssIdx = halExitWowlRspParams.bssIdx;
20020
20021 }
20022 else
20023 {
20024 halStatus = *((eHalStatus*)pEventData->pEventData);
20025 wdiWowlExitRsp.status = WDI_HAL_2_WDI_STATUS(halStatus);
20026 }
Jeff Johnson295189b2012-06-20 16:38:30 -070020027 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020028 wdiWowlExitCb( &wdiWowlExitRsp, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070020029
Jeff Johnsone7245742012-09-05 17:12:55 -070020030 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020031}/*WDI_ProcessWowlExitRsp*/
20032
20033/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020034 @brief Process Configure Apps CPU wakeup State Rsp function
Jeff Johnson295189b2012-06-20 16:38:30 -070020035 (called when a response 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_ProcessConfigureAppsCpuWakeupStateRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020046(
Jeff Johnson295189b2012-06-20 16:38:30 -070020047 WDI_ControlBlockType* pWDICtx,
20048 WDI_EventInfoType* pEventData
20049)
20050{
20051 WDI_Status wdiStatus;
20052 eHalStatus halStatus;
20053 WDI_ConfigureAppsCpuWakeupStateCb wdiConfigureAppsCpuWakeupStateCb;
20054 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20055
20056 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020057 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020058 -------------------------------------------------------------------------*/
20059 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20060 ( NULL == pEventData->pEventData))
20061 {
20062 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020063 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020064 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020065 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020066 }
20067
20068 wdiConfigureAppsCpuWakeupStateCb = (WDI_ConfigureAppsCpuWakeupStateCb)pWDICtx->pfncRspCB;
20069
20070 /*-------------------------------------------------------------------------
20071 Extract response and send it to UMAC
20072 -------------------------------------------------------------------------*/
20073 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070020074 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070020075
20076 /*Notify UMAC*/
20077 wdiConfigureAppsCpuWakeupStateCb( wdiStatus, pWDICtx->pRspCBUserData);
20078
Jeff Johnsone7245742012-09-05 17:12:55 -070020079 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020080}/*WDI_ProcessConfigureAppsCpuWakeupStateRsp*/
20081
20082
20083/**
20084 @brief Process Nv download(called when a response
20085 is being received over the bus from HAL,will check if the responce is )
Jeff Johnsone7245742012-09-05 17:12:55 -070020086
20087 @param pWDICtx: pointer to the WLAN DAL context
20088 pEventData: pointer to the event information structure
20089
Jeff Johnson295189b2012-06-20 16:38:30 -070020090 @see
20091 @return Result of the function call
20092*/
20093WDI_Status
20094WDI_ProcessNvDownloadRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020095(
Jeff Johnson295189b2012-06-20 16:38:30 -070020096 WDI_ControlBlockType* pWDICtx,
20097 WDI_EventInfoType* pEventData
20098)
20099{
20100
20101 WDI_NvDownloadRspCb wdiNvDownloadRspCb;
20102 tHalNvImgDownloadRspParams halNvDownloadRsp;
20103 WDI_NvDownloadRspInfoType wdiNvDownloadRsp;
20104
20105 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020106 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020107 -------------------------------------------------------------------------*/
20108 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20109 ( NULL == pEventData->pEventData))
20110 {
20111 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020112 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020113 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020114 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020115 }
20116
20117 /*-------------------------------------------------------------------------
20118 Extract response and send it to UMAC
20119 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020120 wpalMemoryCopy( &halNvDownloadRsp,
20121 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070020122 sizeof(halNvDownloadRsp));
20123
20124 wdiNvDownloadRsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halNvDownloadRsp.status);
20125
20126 if((wdiNvDownloadRsp.wdiStatus == WDI_STATUS_SUCCESS) &&
Jeff Johnsone7245742012-09-05 17:12:55 -070020127 (pWDICtx->wdiNvBlobInfo.usCurrentFragment !=
20128 pWDICtx->wdiNvBlobInfo.usTotalFragment ))
Jeff Johnson295189b2012-06-20 16:38:30 -070020129 {
20130 WDI_NvDownloadReq(&pWDICtx->wdiCachedNvDownloadReq,
Jeff Johnsone7245742012-09-05 17:12:55 -070020131 (WDI_NvDownloadRspCb)pWDICtx->pfncRspCB, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070020132 }
20133 else
20134 {
20135 /*Reset the Nv related global information in WDI context information */
20136 pWDICtx->wdiNvBlobInfo.usTotalFragment = 0;
20137 pWDICtx->wdiNvBlobInfo.usFragmentSize = 0;
20138 pWDICtx->wdiNvBlobInfo.usCurrentFragment = 0;
20139 /*call WDA callback function for last fragment */
20140 wdiNvDownloadRspCb = (WDI_NvDownloadRspCb)pWDICtx->pfncRspCB;
20141 wdiNvDownloadRspCb( &wdiNvDownloadRsp, pWDICtx->pRspCBUserData);
20142 }
20143
Jeff Johnsone7245742012-09-05 17:12:55 -070020144 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020145}
20146#ifdef WLAN_FEATURE_VOWIFI_11R
20147/**
20148 @brief Process Add TSpec Rsp function (called when a response
20149 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020150
20151 @param pWDICtx: pointer to the WLAN DAL context
20152 pEventData: pointer to the event information structure
20153
Jeff Johnson295189b2012-06-20 16:38:30 -070020154 @see
20155 @return Result of the function call
20156*/
20157WDI_Status
20158WDI_ProcessAggrAddTSpecRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020159(
Jeff Johnson295189b2012-06-20 16:38:30 -070020160 WDI_ControlBlockType* pWDICtx,
20161 WDI_EventInfoType* pEventData
20162)
20163{
20164 WDI_Status wdiStatus;
20165 tAggrAddTsRspParams aggrAddTsRsp;
20166 WDI_AggrAddTsRspCb wdiAggrAddTsRspCb;
20167 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20168
20169 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020170 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020171 -------------------------------------------------------------------------*/
20172 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20173 ( NULL == pEventData->pEventData))
20174 {
20175 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020176 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020177 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020178 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020179 }
20180
20181 wdiAggrAddTsRspCb = (WDI_AddTsRspCb)pWDICtx->pfncRspCB;
20182
20183 /*-------------------------------------------------------------------------
20184 Extract response and send it to UMAC
20185 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020186 wpalMemoryCopy( &aggrAddTsRsp,
20187 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070020188 sizeof(aggrAddTsRsp));
20189
20190 /* What is the difference between status0 and status1? */
Jeff Johnsone7245742012-09-05 17:12:55 -070020191 wdiStatus = WDI_HAL_2_WDI_STATUS(aggrAddTsRsp.status0);
Jeff Johnson295189b2012-06-20 16:38:30 -070020192
20193 /*Notify UMAC*/
20194 wdiAggrAddTsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
20195
Jeff Johnsone7245742012-09-05 17:12:55 -070020196 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020197}/*WDI_ProcessAddTSpecRsp*/
20198#endif /* WLAN_FEATURE_VOWIFI_11R */
20199
20200/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020201 @brief WDI_ProcessHostResumeRsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070020202 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020203
20204 @param pWDICtx: pointer to the WLAN DAL context
20205 pEventData: pointer to the event information structure
20206
Jeff Johnson295189b2012-06-20 16:38:30 -070020207 @see
20208 @return Result of the function call
20209*/
20210WDI_Status
20211WDI_ProcessHostResumeRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020212(
Jeff Johnson295189b2012-06-20 16:38:30 -070020213 WDI_ControlBlockType* pWDICtx,
20214 WDI_EventInfoType* pEventData
20215)
20216{
20217 WDI_SuspendResumeRspParamsType wdiResumeRspParams;
20218 WDI_HostResumeEventRspCb wdiHostResumeRspCb;
20219 tHalHostResumeRspParams hostResumeRspMsg;
20220 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20221
20222 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020223 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020224 -------------------------------------------------------------------------*/
20225 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20226 ( NULL == pEventData->pEventData))
20227 {
20228 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020229 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020230 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020231 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020232 }
20233
20234 wdiHostResumeRspCb = (WDI_HostResumeEventRspCb)pWDICtx->pfncRspCB;
20235
20236 /*-------------------------------------------------------------------------
20237 Extract response and send it to UMAC
20238 -------------------------------------------------------------------------*/
20239
Jeff Johnsone7245742012-09-05 17:12:55 -070020240 wpalMemoryCopy( &hostResumeRspMsg,
Jeff Johnson295189b2012-06-20 16:38:30 -070020241 (wpt_uint8*)pEventData->pEventData,
20242 sizeof(hostResumeRspMsg));
20243
Jeff Johnsone7245742012-09-05 17:12:55 -070020244 wdiResumeRspParams.wdiStatus =
20245 WDI_HAL_2_WDI_STATUS(hostResumeRspMsg.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070020246
20247 /*Notify UMAC*/
20248 wdiHostResumeRspCb(&wdiResumeRspParams, (void*) pWDICtx->pRspCBUserData);
20249
20250 return WDI_STATUS_SUCCESS;
20251}
20252
20253/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020254 @brief Process Set Tx PER Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070020255 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020256
20257 @param pWDICtx: pointer to the WLAN DAL context
20258 pEventData: pointer to the event information structure
20259
Jeff Johnson295189b2012-06-20 16:38:30 -070020260 @see
20261 @return Result of the function call
20262*/
20263WDI_Status
20264WDI_ProcessSetTxPerTrackingRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020265(
Jeff Johnson295189b2012-06-20 16:38:30 -070020266 WDI_ControlBlockType* pWDICtx,
20267 WDI_EventInfoType* pEventData
20268)
20269{
20270 WDI_Status wdiStatus;
20271 eHalStatus halStatus;
20272 WDI_SetTxPerTrackingRspCb pwdiSetTxPerTrackingRspCb;
20273 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20274
20275 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020276 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020277 -------------------------------------------------------------------------*/
20278 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20279 ( NULL == pEventData->pEventData))
20280 {
20281 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020282 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020283 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020284 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020285 }
Jeff Johnsone7245742012-09-05 17:12:55 -070020286
20287 pwdiSetTxPerTrackingRspCb = (WDI_SetTxPerTrackingRspCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070020288
20289 /*-------------------------------------------------------------------------
20290 Extract response and send it to UMAC
20291 -------------------------------------------------------------------------*/
20292 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070020293 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070020294
20295 /*Notify UMAC*/
20296 pwdiSetTxPerTrackingRspCb( wdiStatus, pWDICtx->pRspCBUserData);
20297
Jeff Johnsone7245742012-09-05 17:12:55 -070020298 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020299}/*WDI_ProcessSetTxPerTrackingRsp*/
20300
20301/*==========================================================================
20302 Indications from HAL
20303 ==========================================================================*/
20304/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020305 @brief Process Low RSSI Indication function (called when an
Jeff Johnson295189b2012-06-20 16:38:30 -070020306 indication of this kind is being received over the bus
20307 from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020308
20309 @param pWDICtx: pointer to the WLAN DAL context
20310 pEventData: pointer to the event information structure
20311
Jeff Johnson295189b2012-06-20 16:38:30 -070020312 @see
20313 @return Result of the function call
20314*/
20315WDI_Status
20316WDI_ProcessLowRSSIInd
Jeff Johnsone7245742012-09-05 17:12:55 -070020317(
Jeff Johnson295189b2012-06-20 16:38:30 -070020318 WDI_ControlBlockType* pWDICtx,
20319 WDI_EventInfoType* pEventData
20320)
20321{
20322 WDI_LowLevelIndType wdiInd;
20323 tHalRSSINotificationIndMsg halRSSINotificationIndMsg;
20324 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20325
20326 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020327 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020328 -------------------------------------------------------------------------*/
20329 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20330 ( NULL == pEventData->pEventData))
20331 {
20332 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020333 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020334 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020335 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020336 }
20337
20338 /*-------------------------------------------------------------------------
20339 Extract indication and send it to UMAC
20340 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020341 wpalMemoryCopy( (void *)&halRSSINotificationIndMsg.rssiNotificationParams,
20342 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070020343 sizeof(tHalRSSINotification));
20344
20345 /*Fill in the indication parameters*/
20346 wdiInd.wdiIndicationType = WDI_RSSI_NOTIFICATION_IND;
20347 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres1PosCross =
20348 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres1PosCross;
20349 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres1NegCross =
20350 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres1NegCross;
20351 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres2PosCross =
20352 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres2PosCross;
20353 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres2NegCross =
20354 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres2NegCross;
20355 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres3PosCross =
20356 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres3PosCross;
20357 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres3NegCross =
20358 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres3NegCross;
Srinivasdaaec712012-12-12 15:59:44 -080020359 wdiInd.wdiIndicationData.wdiLowRSSIInfo.avgRssi =
20360 halRSSINotificationIndMsg.rssiNotificationParams.avgRssi;
Jeff Johnson295189b2012-06-20 16:38:30 -070020361
ltimariub77f24b2013-01-24 18:54:33 -080020362 if ( pWDICtx->wdiLowLevelIndCB )
20363 {
20364 /*Notify UMAC of indication*/
20365 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
20366 }
Jeff Johnsone7245742012-09-05 17:12:55 -070020367
20368 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020369}/*WDI_ProcessLowRSSIInd*/
20370
20371
20372/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020373 @brief Process Missed Beacon Indication function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070020374 an indication of this kind is being received over the
20375 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020376
20377 @param pWDICtx: pointer to the WLAN DAL context
20378 pEventData: pointer to the event information structure
20379
Jeff Johnson295189b2012-06-20 16:38:30 -070020380 @see
20381 @return Result of the function call
20382*/
20383WDI_Status
20384WDI_ProcessMissedBeaconInd
Jeff Johnsone7245742012-09-05 17:12:55 -070020385(
Jeff Johnson295189b2012-06-20 16:38:30 -070020386 WDI_ControlBlockType* pWDICtx,
20387 WDI_EventInfoType* pEventData
20388)
20389{
20390 WDI_Status wdiStatus;
20391 eHalStatus halStatus;
20392 WDI_LowLevelIndType wdiInd;
Leela Venkata Kiran Kumar Reddy Chirala3ca17902013-02-27 19:50:05 -080020393 tpHalMissedBeaconIndParams halMissedBeaconIndParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070020394 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20395
20396 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020397 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020398 -------------------------------------------------------------------------*/
20399 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20400 ( NULL == pEventData->pEventData))
20401 {
20402 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020403 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020404 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020405 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020406 }
Leela Venkata Kiran Kumar Reddy Chirala3ca17902013-02-27 19:50:05 -080020407 halMissedBeaconIndParams = (tpHalMissedBeaconIndParams)pEventData->pEventData;
Jeff Johnson295189b2012-06-20 16:38:30 -070020408 /*-------------------------------------------------------------------------
20409 Extract indication and send it to UMAC
20410 -------------------------------------------------------------------------*/
20411 /*! TO DO: Parameters need to be unpacked according to HAL struct*/
20412 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070020413 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070020414
20415 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020416 wdiInd.wdiIndicationType = WDI_MISSED_BEACON_IND;
Leela Venkata Kiran Kumar Reddy Chirala3ca17902013-02-27 19:50:05 -080020417 wdiInd.wdiIndicationData.wdiMissedBeaconInd.bssIdx =
20418 halMissedBeaconIndParams->bssIdx;
ltimariub77f24b2013-01-24 18:54:33 -080020419 if ( pWDICtx->wdiLowLevelIndCB )
20420 {
20421 /*Notify UMAC*/
20422 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
20423 }
Jeff Johnsone7245742012-09-05 17:12:55 -070020424
20425 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020426}/*WDI_ProcessMissedBeaconInd*/
20427
20428
20429/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020430 @brief Process Unk Addr Frame Indication function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070020431 an indication of this kind is being received over the
20432 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020433
20434 @param pWDICtx: pointer to the WLAN DAL context
20435 pEventData: pointer to the event information structure
20436
Jeff Johnson295189b2012-06-20 16:38:30 -070020437 @see
20438 @return Result of the function call
20439*/
20440WDI_Status
20441WDI_ProcessUnkAddrFrameInd
Jeff Johnsone7245742012-09-05 17:12:55 -070020442(
Jeff Johnson295189b2012-06-20 16:38:30 -070020443 WDI_ControlBlockType* pWDICtx,
20444 WDI_EventInfoType* pEventData
20445)
20446{
20447 WDI_Status wdiStatus;
20448 eHalStatus halStatus;
20449 WDI_LowLevelIndType wdiInd;
20450 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20451
20452 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020453 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020454 -------------------------------------------------------------------------*/
20455 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20456 ( NULL == pEventData->pEventData))
20457 {
20458 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020459 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020460 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020461 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020462 }
20463
20464 /*-------------------------------------------------------------------------
20465 Extract indication and send it to UMAC
20466 -------------------------------------------------------------------------*/
20467 /*! TO DO: Parameters need to be unpacked according to HAL struct*/
20468 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070020469 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070020470
20471 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020472 wdiInd.wdiIndicationType = WDI_UNKNOWN_ADDR2_FRAME_RX_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070020473 /* ! TO DO - fill in from HAL struct:
20474 wdiInd.wdiIndicationData.wdiUnkAddr2FrmInfo*/
20475
ltimariub77f24b2013-01-24 18:54:33 -080020476 if ( pWDICtx->wdiLowLevelIndCB )
20477 {
20478 /*Notify UMAC*/
20479 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
20480 }
Jeff Johnsone7245742012-09-05 17:12:55 -070020481
20482 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020483}/*WDI_ProcessUnkAddrFrameInd*/
20484
20485
20486/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020487 @brief Process MIC Failure Indication function (called when an
Jeff Johnson295189b2012-06-20 16:38:30 -070020488 indication of this kind is being received over the bus
20489 from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020490
20491 @param pWDICtx: pointer to the WLAN DAL context
20492 pEventData: pointer to the event information structure
20493
Jeff Johnson295189b2012-06-20 16:38:30 -070020494 @see
20495 @return Result of the function call
20496*/
20497WDI_Status
20498WDI_ProcessMicFailureInd
Jeff Johnsone7245742012-09-05 17:12:55 -070020499(
Jeff Johnson295189b2012-06-20 16:38:30 -070020500 WDI_ControlBlockType* pWDICtx,
20501 WDI_EventInfoType* pEventData
20502)
20503{
20504 WDI_LowLevelIndType wdiInd;
20505 tpSirMicFailureInd pHalMicFailureInd;
20506
20507 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20508
20509 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020510 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020511 -------------------------------------------------------------------------*/
20512 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20513 ( NULL == pEventData->pEventData))
20514 {
20515 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020516 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020517 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020518 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020519 }
Jeff Johnsone7245742012-09-05 17:12:55 -070020520
Jeff Johnson295189b2012-06-20 16:38:30 -070020521 pHalMicFailureInd = (tpSirMicFailureInd)pEventData->pEventData;
20522 /*-------------------------------------------------------------------------
20523 Extract indication and send it to UMAC
20524 -------------------------------------------------------------------------*/
20525
20526 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020527 wdiInd.wdiIndicationType = WDI_MIC_FAILURE_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070020528 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.bssId,
20529 pHalMicFailureInd->bssId, WDI_MAC_ADDR_LEN);
20530 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.macSrcAddr,
20531 pHalMicFailureInd->info.srcMacAddr, WDI_MAC_ADDR_LEN);
20532 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.macTaAddr,
20533 pHalMicFailureInd->info.taMacAddr, WDI_MAC_ADDR_LEN);
20534 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.macDstAddr,
20535 pHalMicFailureInd->info.dstMacAddr, WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070020536 wdiInd.wdiIndicationData.wdiMICFailureInfo.ucMulticast =
Jeff Johnson295189b2012-06-20 16:38:30 -070020537 pHalMicFailureInd->info.multicast;
Jeff Johnsone7245742012-09-05 17:12:55 -070020538 wdiInd.wdiIndicationData.wdiMICFailureInfo.ucIV1 =
Jeff Johnson295189b2012-06-20 16:38:30 -070020539 pHalMicFailureInd->info.IV1;
Jeff Johnsone7245742012-09-05 17:12:55 -070020540 wdiInd.wdiIndicationData.wdiMICFailureInfo.keyId=
Jeff Johnson295189b2012-06-20 16:38:30 -070020541 pHalMicFailureInd->info.keyId;
20542 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.TSC,
20543 pHalMicFailureInd->info.TSC,WDI_CIPHER_SEQ_CTR_SIZE);
20544 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.macRxAddr,
20545 pHalMicFailureInd->info.rxMacAddr, WDI_MAC_ADDR_LEN);
ltimariub77f24b2013-01-24 18:54:33 -080020546
20547 if ( pWDICtx->wdiLowLevelIndCB )
20548 {
20549 /*Notify UMAC*/
20550 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
20551 }
Jeff Johnsone7245742012-09-05 17:12:55 -070020552
20553 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020554}/*WDI_ProcessMicFailureInd*/
20555
20556
20557/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020558 @brief Process Fatal Failure Indication function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070020559 an indication of this kind is being received over the
20560 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020561
20562 @param pWDICtx: pointer to the WLAN DAL context
20563 pEventData: pointer to the event information structure
20564
Jeff Johnson295189b2012-06-20 16:38:30 -070020565 @see
20566 @return Result of the function call
20567*/
20568WDI_Status
20569WDI_ProcessFatalErrorInd
Jeff Johnsone7245742012-09-05 17:12:55 -070020570(
Jeff Johnson295189b2012-06-20 16:38:30 -070020571 WDI_ControlBlockType* pWDICtx,
20572 WDI_EventInfoType* pEventData
20573)
20574{
20575 WDI_Status wdiStatus;
20576 eHalStatus halStatus;
20577 WDI_LowLevelIndType wdiInd;
20578 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20579
20580 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020581 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020582 -------------------------------------------------------------------------*/
20583 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20584 ( NULL == pEventData->pEventData))
20585 {
20586 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020587 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020588 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020589 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020590 }
20591
20592 /*-------------------------------------------------------------------------
20593 Extract indication and send it to UMAC
20594 -------------------------------------------------------------------------*/
20595
20596 /*! TO DO: Parameters need to be unpacked according to HAL struct*/
20597 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070020598 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070020599
20600 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
20601 "Fatal failure received from device %d ", halStatus );
Jeff Johnsone7245742012-09-05 17:12:55 -070020602
Jeff Johnson295189b2012-06-20 16:38:30 -070020603 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020604 wdiInd.wdiIndicationType = WDI_FATAL_ERROR_IND;
20605 wdiInd.wdiIndicationData.usErrorCode = WDI_ERR_DEV_INTERNAL_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020606
ltimariub77f24b2013-01-24 18:54:33 -080020607 if ( pWDICtx->wdiLowLevelIndCB )
20608 {
20609 /*Notify UMAC*/
20610 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
20611 }
Jeff Johnsone7245742012-09-05 17:12:55 -070020612
20613 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020614}/*WDI_ProcessFatalErrorInd*/
20615
20616/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020617 @brief Process Delete STA Indication function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070020618 an indication of this kind is being received over the
20619 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020620
20621 @param pWDICtx: pointer to the WLAN DAL context
20622 pEventData: pointer to the event information structure
20623
Jeff Johnson295189b2012-06-20 16:38:30 -070020624 @see
20625 @return Result of the function call
20626*/
20627WDI_Status
20628WDI_ProcessDelSTAInd
Jeff Johnsone7245742012-09-05 17:12:55 -070020629(
Jeff Johnson295189b2012-06-20 16:38:30 -070020630 WDI_ControlBlockType* pWDICtx,
20631 WDI_EventInfoType* pEventData
20632)
20633{
20634 tDeleteStaContextParams halDelSTACtx;
20635 WDI_LowLevelIndType wdiInd;
20636 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20637
20638 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020639 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020640 -------------------------------------------------------------------------*/
20641 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20642 ( NULL == pEventData->pEventData))
20643 {
20644 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020645 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020646 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020647 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020648 }
20649
20650 /*-------------------------------------------------------------------------
20651 Extract indication and send it to UMAC
20652 -------------------------------------------------------------------------*/
20653
20654 /* Parameters need to be unpacked according to HAL struct*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020655 wpalMemoryCopy( &halDelSTACtx,
20656 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070020657 sizeof(halDelSTACtx));
20658
20659 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020660 wdiInd.wdiIndicationType = WDI_DEL_STA_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070020661
20662 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiDeleteSTAIndType.macADDR2,
20663 halDelSTACtx.addr2, WDI_MAC_ADDR_LEN);
20664 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiDeleteSTAIndType.macBSSID,
20665 halDelSTACtx.bssId, WDI_MAC_ADDR_LEN);
20666
Jeff Johnsone7245742012-09-05 17:12:55 -070020667 wdiInd.wdiIndicationData.wdiDeleteSTAIndType.usAssocId =
Jeff Johnson295189b2012-06-20 16:38:30 -070020668 halDelSTACtx.assocId;
Jeff Johnsone7245742012-09-05 17:12:55 -070020669 wdiInd.wdiIndicationData.wdiDeleteSTAIndType.ucSTAIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070020670 halDelSTACtx.staId;
Jeff Johnsone7245742012-09-05 17:12:55 -070020671 wdiInd.wdiIndicationData.wdiDeleteSTAIndType.wptReasonCode =
20672 halDelSTACtx.reasonCode;
Jeff Johnson295189b2012-06-20 16:38:30 -070020673
ltimariub77f24b2013-01-24 18:54:33 -080020674 if ( pWDICtx->wdiLowLevelIndCB )
20675 {
20676 /*Notify UMAC*/
20677 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
20678 }
Jeff Johnsone7245742012-09-05 17:12:55 -070020679
20680 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020681}/*WDI_ProcessDelSTAInd*/
20682
20683/**
20684*@brief Process Coex Indication function (called when
20685 an indication of this kind is being received over the
20686 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020687
20688 @param pWDICtx: pointer to the WLAN DAL context
20689 pEventData: pointer to the event information structure
20690
Jeff Johnson295189b2012-06-20 16:38:30 -070020691 @see
20692 @return Result of the function call
20693*/
20694WDI_Status
20695WDI_ProcessCoexInd
Jeff Johnsone7245742012-09-05 17:12:55 -070020696(
Jeff Johnson295189b2012-06-20 16:38:30 -070020697 WDI_ControlBlockType* pWDICtx,
20698 WDI_EventInfoType* pEventData
20699)
20700{
20701 WDI_LowLevelIndType wdiInd;
20702 tCoexIndMsg halCoexIndMsg;
20703 wpt_uint32 index;
20704 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20705
20706 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020707 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020708 -------------------------------------------------------------------------*/
20709 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20710 ( NULL == pEventData->pEventData ))
20711 {
20712 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020713 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020714 WDI_ASSERT( 0 );
Jeff Johnsone7245742012-09-05 17:12:55 -070020715 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020716 }
20717
20718 /*-------------------------------------------------------------------------
20719 Extract indication and send it to UMAC
20720 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020721 wpalMemoryCopy( &halCoexIndMsg.coexIndParams,
20722 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070020723 sizeof(halCoexIndMsg.coexIndParams) );
20724
20725 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020726 wdiInd.wdiIndicationType = WDI_COEX_IND;
20727 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndType = halCoexIndMsg.coexIndParams.coexIndType;
Jeff Johnson295189b2012-06-20 16:38:30 -070020728 for (index = 0; index < WDI_COEX_IND_DATA_SIZE; index++)
20729 {
Jeff Johnsone7245742012-09-05 17:12:55 -070020730 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[index] = halCoexIndMsg.coexIndParams.coexIndData[index];
Jeff Johnson295189b2012-06-20 16:38:30 -070020731 }
20732
20733 // DEBUG
20734 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
20735 "[COEX WDI] Coex Ind Type (%x) data (%x %x %x %x)",
Jeff Johnsone7245742012-09-05 17:12:55 -070020736 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndType,
20737 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[0],
20738 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[1],
20739 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[2],
20740 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[3] );
Jeff Johnson295189b2012-06-20 16:38:30 -070020741
ltimariub77f24b2013-01-24 18:54:33 -080020742 if ( pWDICtx->wdiLowLevelIndCB )
20743 {
20744 /*Notify UMAC*/
20745 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
20746 }
Jeff Johnsone7245742012-09-05 17:12:55 -070020747
20748 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020749}/*WDI_ProcessCoexInd*/
20750
20751/**
20752*@brief Process Tx Complete Indication function (called when
20753 an indication of this kind is being received over the
20754 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020755
20756 @param pWDICtx: pointer to the WLAN DAL context
20757 pEventData: pointer to the event information structure
20758
Jeff Johnson295189b2012-06-20 16:38:30 -070020759 @see
20760 @return Result of the function call
20761*/
20762WDI_Status
20763WDI_ProcessTxCompleteInd
Jeff Johnsone7245742012-09-05 17:12:55 -070020764(
Jeff Johnson295189b2012-06-20 16:38:30 -070020765 WDI_ControlBlockType* pWDICtx,
20766 WDI_EventInfoType* pEventData
20767)
20768{
20769 WDI_LowLevelIndType wdiInd;
20770 tTxComplIndMsg halTxComplIndMsg;
20771 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20772
20773 /*-------------------------------------------------------------------------
20774 Sanity check
20775 -------------------------------------------------------------------------*/
20776 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20777 ( NULL == pEventData->pEventData ))
20778 {
20779 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020780 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020781 WDI_ASSERT( 0 );
20782 return WDI_STATUS_E_FAILURE;
20783 }
20784
20785 /*-------------------------------------------------------------------------
20786 Extract indication and send it to UMAC
20787 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020788 wpalMemoryCopy( &halTxComplIndMsg.txComplParams,
20789 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070020790 sizeof(halTxComplIndMsg.txComplParams) );
20791
20792 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020793 wdiInd.wdiIndicationType = WDI_TX_COMPLETE_IND;
20794 wdiInd.wdiIndicationData.tx_complete_status
20795 = halTxComplIndMsg.txComplParams.status;
Jeff Johnson295189b2012-06-20 16:38:30 -070020796
ltimariub77f24b2013-01-24 18:54:33 -080020797 if ( pWDICtx->wdiLowLevelIndCB )
20798 {
20799 /*Notify UMAC*/
20800 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
20801 }
Jeff Johnsone7245742012-09-05 17:12:55 -070020802
20803 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020804}/*WDI_ProcessTxCompleteInd*/
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053020805#ifdef FEATURE_WLAN_TDLS
20806/**
20807*@brief Process TDLS Indication function (called when
20808 an indication of this kind is being received over the
20809 bus from HAL)
Jeff Johnson295189b2012-06-20 16:38:30 -070020810
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053020811 @param pWDICtx: pointer to the WLAN DAL context
20812 pEventData: pointer to the event information structure
20813
20814 @see
20815 @return Result of the function call
20816*/
20817WDI_Status
20818WDI_ProcessTdlsInd
20819(
20820 WDI_ControlBlockType* pWDICtx,
20821 WDI_EventInfoType* pEventData
20822)
20823{
20824 WDI_LowLevelIndType wdiInd;
20825 tTdlsIndMsg halTdlsIndMsg;
20826 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20827
20828 /*-------------------------------------------------------------------------
20829 Sanity check
20830 -------------------------------------------------------------------------*/
20831 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20832 ( NULL == pEventData->pEventData ))
20833 {
20834 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
20835 "%s: Invalid parameters", __func__);
20836 WDI_ASSERT( 0 );
20837 return WDI_STATUS_E_FAILURE;
20838 }
20839
20840 /*-------------------------------------------------------------------------
20841 Extract indication and send it to UMAC
20842 -------------------------------------------------------------------------*/
20843 wpalMemoryCopy( &halTdlsIndMsg.tdlsIndParams,
20844 pEventData->pEventData,
20845 sizeof(halTdlsIndMsg.tdlsIndParams) );
20846
20847 /*Fill in the indication parameters*/
20848 wdiInd.wdiIndicationType = WDI_TDLS_IND;
20849
20850 wdiInd.wdiIndicationData.wdiTdlsIndInfo.status
20851 = halTdlsIndMsg.tdlsIndParams.status;
20852
20853 wdiInd.wdiIndicationData.wdiTdlsIndInfo.staIdx
20854 = halTdlsIndMsg.tdlsIndParams.staIdx;
20855
20856 wdiInd.wdiIndicationData.wdiTdlsIndInfo.reasonCode
20857 = halTdlsIndMsg.tdlsIndParams.reasonCode;
20858
20859 /*Notify UMAC*/
20860 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
20861
20862 return WDI_STATUS_SUCCESS;
20863}/*WDI_ProcessTdlsInd*/
20864#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070020865/**
Viral Modid86bde22012-12-10 13:09:21 -080020866*@brief Process Noa Start Indication function (called when
20867 an indication of this kind is being received over the
20868 bus from HAL)
20869
20870 @param pWDICtx: pointer to the WLAN DAL context
20871 pEventData: pointer to the event information structure
20872
20873 @see
20874 @return Result of the function call
20875*/
20876WDI_Status
20877WDI_ProcessP2pNoaStartInd
20878(
20879 WDI_ControlBlockType* pWDICtx,
20880 WDI_EventInfoType* pEventData
20881)
20882{
20883 WDI_LowLevelIndType wdiInd;
20884 tNoaStartIndMsg halNoaStartIndMsg;
20885 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20886
20887 /*-------------------------------------------------------------------------
20888 Sanity check
20889 -------------------------------------------------------------------------*/
20890 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20891 ( NULL == pEventData->pEventData ))
20892 {
20893 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
20894 "%s: Invalid parameters", __func__);
20895 WDI_ASSERT( 0 );
20896 return WDI_STATUS_E_FAILURE;
20897 }
20898
20899 /*-------------------------------------------------------------------------
20900 Extract indication and send it to UMAC
20901 -------------------------------------------------------------------------*/
20902 wpalMemoryCopy( &halNoaStartIndMsg.noaStartIndParams,
20903 pEventData->pEventData,
20904 sizeof(halNoaStartIndMsg.noaStartIndParams) );
20905
20906 /*Fill in the indication parameters*/
20907 wdiInd.wdiIndicationType = WDI_P2P_NOA_START_IND;
20908
20909 wdiInd.wdiIndicationData.wdiP2pNoaStartInfo.status
20910 = halNoaStartIndMsg.noaStartIndParams.status;
20911
20912 wdiInd.wdiIndicationData.wdiP2pNoaStartInfo.bssIdx
20913 = halNoaStartIndMsg.noaStartIndParams.bssIdx;
20914
20915 /*Notify UMAC*/
20916 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
20917
20918 return WDI_STATUS_SUCCESS;
20919}/*WDI_ProcessNoaAttrInd*/
20920
20921/**
Jeff Johnson295189b2012-06-20 16:38:30 -070020922*@brief Process Noa Attr Indication function (called when
20923 an indication of this kind is being received over the
20924 bus from HAL)
20925
20926 @param pWDICtx: pointer to the WLAN DAL context
20927 pEventData: pointer to the event information structure
20928
20929 @see
20930 @return Result of the function call
20931*/
20932WDI_Status
20933WDI_ProcessP2pNoaAttrInd
20934(
20935 WDI_ControlBlockType* pWDICtx,
20936 WDI_EventInfoType* pEventData
20937)
20938{
20939 WDI_LowLevelIndType wdiInd;
20940 tNoaAttrIndMsg halNoaAttrIndMsg;
20941 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20942
20943 /*-------------------------------------------------------------------------
20944 Sanity check
20945 -------------------------------------------------------------------------*/
20946 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20947 ( NULL == pEventData->pEventData ))
20948 {
20949 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020950 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020951 WDI_ASSERT( 0 );
20952 return WDI_STATUS_E_FAILURE;
20953 }
20954
20955 /*-------------------------------------------------------------------------
20956 Extract indication and send it to UMAC
20957 -------------------------------------------------------------------------*/
20958 wpalMemoryCopy( &halNoaAttrIndMsg.noaAttrIndParams,
20959 pEventData->pEventData,
20960 sizeof(halNoaAttrIndMsg.noaAttrIndParams) );
20961
20962 /*Fill in the indication parameters*/
20963 wdiInd.wdiIndicationType = WDI_P2P_NOA_ATTR_IND;
Jeff Johnsone7245742012-09-05 17:12:55 -070020964
Jeff Johnson295189b2012-06-20 16:38:30 -070020965 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.status
20966 = halNoaAttrIndMsg.noaAttrIndParams.status;
Jeff Johnsone7245742012-09-05 17:12:55 -070020967
Jeff Johnson295189b2012-06-20 16:38:30 -070020968 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.ucIndex
20969 = halNoaAttrIndMsg.noaAttrIndParams.index;
20970 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.ucOppPsFlag
20971 = halNoaAttrIndMsg.noaAttrIndParams.oppPsFlag;
20972 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.usCtWin
20973 = halNoaAttrIndMsg.noaAttrIndParams.ctWin;
Jeff Johnsone7245742012-09-05 17:12:55 -070020974
Jeff Johnson295189b2012-06-20 16:38:30 -070020975 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.usNoa1IntervalCnt
20976 = halNoaAttrIndMsg.noaAttrIndParams.uNoa1IntervalCnt;
20977 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa1Duration
20978 = halNoaAttrIndMsg.noaAttrIndParams.uNoa1Duration;
20979 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa1Interval
20980 = halNoaAttrIndMsg.noaAttrIndParams.uNoa1Interval;
20981 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa1StartTime
20982 = halNoaAttrIndMsg.noaAttrIndParams.uNoa1StartTime;
Jeff Johnsone7245742012-09-05 17:12:55 -070020983
Jeff Johnson295189b2012-06-20 16:38:30 -070020984 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.usNoa2IntervalCnt
20985 = halNoaAttrIndMsg.noaAttrIndParams.uNoa2IntervalCnt;
20986 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa2Duration
20987 = halNoaAttrIndMsg.noaAttrIndParams.uNoa2Duration;
20988 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa2Interval
20989 = halNoaAttrIndMsg.noaAttrIndParams.uNoa2Interval;
20990 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa2StartTime
20991 = halNoaAttrIndMsg.noaAttrIndParams.uNoa2StartTime;
20992
ltimariub77f24b2013-01-24 18:54:33 -080020993 if ( pWDICtx->wdiLowLevelIndCB )
20994 {
20995 /*Notify UMAC*/
20996 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
20997 }
Jeff Johnson295189b2012-06-20 16:38:30 -070020998
20999 return WDI_STATUS_SUCCESS;
21000}/*WDI_ProcessNoaAttrInd*/
Jeff Johnson295189b2012-06-20 16:38:30 -070021001
21002/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021003 @brief Process Tx PER Hit Indication function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070021004 an indication of this kind is being received over the
21005 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070021006
21007 @param pWDICtx: pointer to the WLAN DAL context
21008 pEventData: pointer to the event information structure
21009
Jeff Johnson295189b2012-06-20 16:38:30 -070021010 @see
21011 @return Result of the function call
21012*/
21013WDI_Status
21014WDI_ProcessTxPerHitInd
Jeff Johnsone7245742012-09-05 17:12:55 -070021015(
Jeff Johnson295189b2012-06-20 16:38:30 -070021016 WDI_ControlBlockType* pWDICtx,
21017 WDI_EventInfoType* pEventData
21018)
21019{
21020 WDI_LowLevelIndType wdiInd;
21021 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Jeff Johnsone7245742012-09-05 17:12:55 -070021022
Jeff Johnson295189b2012-06-20 16:38:30 -070021023 /*-------------------------------------------------------------------------
21024 Extract indication and send it to UMAC
21025 -------------------------------------------------------------------------*/
21026 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021027 wdiInd.wdiIndicationType = WDI_TX_PER_HIT_IND;
21028
ltimariub77f24b2013-01-24 18:54:33 -080021029 if ( pWDICtx->wdiLowLevelIndCB )
21030 {
21031 /*Notify UMAC*/
21032 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
21033 }
Jeff Johnson295189b2012-06-20 16:38:30 -070021034
Jeff Johnsone7245742012-09-05 17:12:55 -070021035 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021036}/*WDI_ProcessTxPerHitInd*/
21037
Jeff Johnson295189b2012-06-20 16:38:30 -070021038/**
Yue Mab9c86f42013-08-14 15:59:08 -070021039 @brief Process Periodic Tx Pattern Fw Indication function
21040
21041 @param pWDICtx: pointer to the WLAN DAL context
21042 pEventData: pointer to the event information structure
21043
21044 @see
21045 @return Result of the function call
21046*/
21047WDI_Status
21048WDI_ProcessPeriodicTxPtrnFwInd
21049(
21050 WDI_ControlBlockType* pWDICtx,
21051 WDI_EventInfoType* pEventData
21052)
21053{
21054 WDI_LowLevelIndType wdiInd;
21055
21056 /*-------------------------------------------------------------------------
21057 Sanity check
21058 -------------------------------------------------------------------------*/
21059 if ((NULL == pWDICtx) || (NULL == pEventData) ||
21060 (NULL == pEventData->pEventData))
21061 {
21062 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
21063 "%s: Invalid parameters", __func__);
21064 WDI_ASSERT(0);
21065 return WDI_STATUS_E_FAILURE;
21066 }
21067
21068 /*-------------------------------------------------------------------------
21069 Extract indication and send it to UMAC
21070 -------------------------------------------------------------------------*/
21071 wpalMemoryCopy(&(wdiInd.wdiIndicationData.wdiPeriodicTxPtrnFwInd),
21072 (tHalPeriodicTxPtrnFwInd *)pEventData->pEventData,
21073 sizeof(tHalPeriodicTxPtrnFwInd));
21074
21075 if (pWDICtx->wdiLowLevelIndCB)
21076 {
21077 /*Notify UMAC*/
21078 pWDICtx->wdiLowLevelIndCB(&wdiInd, pWDICtx->pIndUserData);
21079 }
21080
21081 return WDI_STATUS_SUCCESS;
21082}
21083
21084/**
Jeff Johnson295189b2012-06-20 16:38:30 -070021085 @brief WDI_ProcessFTMCommandReq
21086 Process FTM Command, simply route to HAL
Jeff Johnsone7245742012-09-05 17:12:55 -070021087
21088 @param pWDICtx: pointer to the WLAN DAL context
21089 pEventData: pointer to the event information structure
21090
Jeff Johnson295189b2012-06-20 16:38:30 -070021091 @see
21092 @return Result of the function call
21093*/
21094WDI_Status
21095WDI_ProcessFTMCommandReq
Jeff Johnsone7245742012-09-05 17:12:55 -070021096(
Jeff Johnson295189b2012-06-20 16:38:30 -070021097 WDI_ControlBlockType* pWDICtx,
21098 WDI_EventInfoType* pEventData
21099)
21100{
21101 WDI_FTMCommandReqType *ftmCommandReq = NULL;
21102 wpt_uint8 *ftmCommandBuffer = NULL;
21103 wpt_uint16 dataOffset;
21104 wpt_uint16 bufferSize;
21105 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021106 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021107 -------------------------------------------------------------------------*/
21108 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21109 ( NULL == pEventData->pEventData))
21110
21111 {
21112 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021113 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021114 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021115 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021116 }
21117
21118 ftmCommandReq = (WDI_FTMCommandReqType *)pEventData->pEventData;
21119
21120 /* Get MSG Buffer */
21121 WDI_GetMessageBuffer(pWDICtx,
21122 WDI_FTM_CMD_REQ,
21123 ftmCommandReq->bodyLength,
21124 &ftmCommandBuffer,
21125 &dataOffset,
21126 &bufferSize);
21127
21128 wpalMemoryCopy(ftmCommandBuffer + dataOffset,
21129 ftmCommandReq->FTMCommandBody,
21130 ftmCommandReq->bodyLength);
21131
21132 /* Send MSG */
21133 return WDI_SendMsg(pWDICtx,
21134 ftmCommandBuffer,
21135 bufferSize,
21136 pEventData->pCBfnc,
21137 pEventData->pUserData,
21138 WDI_FTM_CMD_RESP);
21139}
21140
21141/**
21142 @brief WDI_ProcessFTMCommandRsp
21143 Process FTM Command Response from HAL, simply route to HDD FTM
Jeff Johnsone7245742012-09-05 17:12:55 -070021144
21145 @param pWDICtx: pointer to the WLAN DAL context
21146 pEventData: pointer to the event information structure
21147
Jeff Johnson295189b2012-06-20 16:38:30 -070021148 @see
21149 @return Result of the function call
21150*/
21151WDI_Status
21152WDI_ProcessFTMCommandRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070021153(
Jeff Johnson295189b2012-06-20 16:38:30 -070021154 WDI_ControlBlockType* pWDICtx,
21155 WDI_EventInfoType* pEventData
21156)
21157{
21158 WDI_FTMCommandRspCb ftmCMDRspCb;
21159 tProcessPttRspParams *ftmCMDRspData = NULL;
21160 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21161
21162 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021163 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021164 -------------------------------------------------------------------------*/
21165 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21166 ( NULL == pEventData->pEventData))
21167 {
21168 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021169 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021170 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021171 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021172 }
21173
21174 ftmCMDRspCb = (WDI_FTMCommandRspCb)pWDICtx->pfncRspCB;
21175
21176 ftmCMDRspData = (tProcessPttRspParams *)pEventData->pEventData;
21177
Jeff Johnsone7245742012-09-05 17:12:55 -070021178 wpalMemoryCopy((void *)pWDICtx->ucFTMCommandRspBuffer,
21179 (void *)&ftmCMDRspData->pttMsgBuffer,
Jeff Johnson295189b2012-06-20 16:38:30 -070021180 ftmCMDRspData->pttMsgBuffer.msgBodyLength);
21181
21182 /*Notify UMAC*/
21183 ftmCMDRspCb((void *)pWDICtx->ucFTMCommandRspBuffer, pWDICtx->pRspCBUserData);
21184
Jeff Johnsone7245742012-09-05 17:12:55 -070021185 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021186}
Jeff Johnson295189b2012-06-20 16:38:30 -070021187/**
21188 @brief WDI_ProcessHalDumpCmdReq
21189 Process hal dump Command, simply route to HAL
Jeff Johnsone7245742012-09-05 17:12:55 -070021190
21191 @param pWDICtx: pointer to the WLAN DAL context
21192 pEventData: pointer to the event information structure
21193
Jeff Johnson295189b2012-06-20 16:38:30 -070021194 @see
21195 @return Result of the function call
21196*/
21197WDI_Status
21198WDI_ProcessHALDumpCmdReq
Jeff Johnsone7245742012-09-05 17:12:55 -070021199(
Jeff Johnson295189b2012-06-20 16:38:30 -070021200 WDI_ControlBlockType* pWDICtx,
21201 WDI_EventInfoType* pEventData
21202)
21203{
21204 WDI_HALDumpCmdReqParamsType* pwdiHALDumpCmdParams = NULL;
21205 WDI_HALDumpCmdRspCb wdiHALDumpCmdRspCb = NULL;
21206 wpt_uint16 usDataOffset = 0;
21207 wpt_uint16 usSendSize = 0;
21208 tHalDumpCmdReqMsg halDumpCmdReqMsg;
Jeff Johnsone7245742012-09-05 17:12:55 -070021209 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070021210
21211 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021212 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021213 -------------------------------------------------------------------------*/
21214 if (( NULL == pEventData ) ||
21215 ( NULL == pEventData->pEventData) ||
21216 ( NULL == pEventData->pCBfnc ))
21217 {
21218 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021219 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021220 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021221 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021222 }
21223
21224 pwdiHALDumpCmdParams = (WDI_HALDumpCmdReqParamsType*)pEventData->pEventData;
21225 wdiHALDumpCmdRspCb = (WDI_HALDumpCmdRspCb)pEventData->pCBfnc;
21226
21227 /* Copying the HAL DUMP Command Information HAL Structure*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021228 halDumpCmdReqMsg.dumpCmdReqParams.argument1 =
Jeff Johnson295189b2012-06-20 16:38:30 -070021229 pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.command;
Jeff Johnsone7245742012-09-05 17:12:55 -070021230 halDumpCmdReqMsg.dumpCmdReqParams.argument2 =
Jeff Johnson295189b2012-06-20 16:38:30 -070021231 pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.argument1;
Jeff Johnsone7245742012-09-05 17:12:55 -070021232 halDumpCmdReqMsg.dumpCmdReqParams.argument3 =
Jeff Johnson295189b2012-06-20 16:38:30 -070021233 pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.argument2;
Jeff Johnsone7245742012-09-05 17:12:55 -070021234 halDumpCmdReqMsg.dumpCmdReqParams.argument4 =
Jeff Johnson295189b2012-06-20 16:38:30 -070021235 pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.argument3;
Jeff Johnsone7245742012-09-05 17:12:55 -070021236 halDumpCmdReqMsg.dumpCmdReqParams.argument5 =
Jeff Johnson295189b2012-06-20 16:38:30 -070021237 pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.argument4;
Jeff Johnsone7245742012-09-05 17:12:55 -070021238
Jeff Johnson295189b2012-06-20 16:38:30 -070021239 /*-----------------------------------------------------------------------
21240 Get message buffer
21241 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021242 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_HAL_DUMP_CMD_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070021243 sizeof(halDumpCmdReqMsg.dumpCmdReqParams),
21244 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070021245 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070021246 (usDataOffset + sizeof(halDumpCmdReqMsg.dumpCmdReqParams) )))
21247 {
21248 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080021249 "Unable to get send buffer in HAL Dump Command req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070021250 pEventData, pwdiHALDumpCmdParams, wdiHALDumpCmdRspCb);
21251 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021252 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021253 }
21254
Jeff Johnsone7245742012-09-05 17:12:55 -070021255 wpalMemoryCopy( pSendBuffer+usDataOffset,
21256 &halDumpCmdReqMsg.dumpCmdReqParams,
21257 sizeof(halDumpCmdReqMsg.dumpCmdReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070021258
21259 pWDICtx->wdiReqStatusCB = pwdiHALDumpCmdParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070021260 pWDICtx->pReqStatusUserData = pwdiHALDumpCmdParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070021261
21262 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021263 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070021264 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021265 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
21266 wdiHALDumpCmdRspCb, pEventData->pUserData,
21267 WDI_HAL_DUMP_CMD_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070021268}
21269
21270/**
21271 @brief WDI_ProcessHalDumpCmdRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070021272 Process hal Dump Command Response from HAL, simply route to HDD
21273
21274 @param pWDICtx: pointer to the WLAN DAL context
21275 pEventData: pointer to the event information structure
21276
Jeff Johnson295189b2012-06-20 16:38:30 -070021277 @see
21278 @return Result of the function call
21279*/
21280WDI_Status
21281WDI_ProcessHALDumpCmdRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070021282(
Jeff Johnson295189b2012-06-20 16:38:30 -070021283 WDI_ControlBlockType* pWDICtx,
21284 WDI_EventInfoType* pEventData
21285)
21286{
21287 WDI_HALDumpCmdRspCb wdiHALDumpCmdRspCb;
Gopichand Nakkalafab3fae2013-01-07 15:01:01 -080021288 tHalDumpCmdRspParams halDumpCmdRspParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070021289 WDI_HALDumpCmdRspParamsType wdiHALDumpCmdRsp;
21290
21291 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021292 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021293 -------------------------------------------------------------------------*/
21294 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21295 ( NULL == pEventData->pEventData))
21296 {
21297 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021298 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021299 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021300 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021301 }
21302
Jeff Johnsone7245742012-09-05 17:12:55 -070021303 wdiHALDumpCmdRspCb = (WDI_HALDumpCmdRspCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070021304
21305 /*Initialize the WDI Response structure */
21306 wdiHALDumpCmdRsp.usBufferLen = 0;
21307 wdiHALDumpCmdRsp.pBuffer = NULL;
21308
Gopichand Nakkalafab3fae2013-01-07 15:01:01 -080021309 wpalMemoryCopy( &halDumpCmdRspParams,
21310 pEventData->pEventData,
21311 sizeof(tHalDumpCmdRspParams));
Jeff Johnsone7245742012-09-05 17:12:55 -070021312
21313 wdiHALDumpCmdRsp.wdiStatus =
Gopichand Nakkalafab3fae2013-01-07 15:01:01 -080021314 WDI_HAL_2_WDI_STATUS(halDumpCmdRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070021315
21316 if (( wdiHALDumpCmdRsp.wdiStatus == WDI_STATUS_SUCCESS) &&
Gopichand Nakkalafab3fae2013-01-07 15:01:01 -080021317 (halDumpCmdRspParams.rspLength != 0))
Jeff Johnson295189b2012-06-20 16:38:30 -070021318 {
21319 /* Copy the response data */
Gopichand Nakkalafab3fae2013-01-07 15:01:01 -080021320 wdiHALDumpCmdRsp.usBufferLen = halDumpCmdRspParams.rspLength;
21321 wdiHALDumpCmdRsp.pBuffer = wpalMemoryAllocate(halDumpCmdRspParams.rspLength);
21322
21323 wpalMemoryCopy( wdiHALDumpCmdRsp.pBuffer,
21324 &halDumpCmdRspParams.rspBuffer,
Gopichand Nakkala089c2582013-04-04 15:40:10 +053021325 halDumpCmdRspParams.rspLength);
Jeff Johnson295189b2012-06-20 16:38:30 -070021326 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021327
Jeff Johnson295189b2012-06-20 16:38:30 -070021328 /*Notify UMAC*/
21329 wdiHALDumpCmdRspCb(&wdiHALDumpCmdRsp, pWDICtx->pRspCBUserData);
21330
21331 if(wdiHALDumpCmdRsp.pBuffer != NULL)
21332 {
21333 /* Free the allocated buffer */
21334 wpalMemoryFree(wdiHALDumpCmdRsp.pBuffer);
21335 }
21336 return WDI_STATUS_SUCCESS;
21337}
21338
21339/*==========================================================================
21340 CONTRL TRANSPORT INTERACTION
Jeff Johnsone7245742012-09-05 17:12:55 -070021341
Jeff Johnson295189b2012-06-20 16:38:30 -070021342 Callback function registered with the control transport - for receiving
Jeff Johnsone7245742012-09-05 17:12:55 -070021343 notifications and packets
Jeff Johnson295189b2012-06-20 16:38:30 -070021344==========================================================================*/
21345/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021346 @brief This callback is invoked by the control transport
Jeff Johnson295189b2012-06-20 16:38:30 -070021347 when it wishes to send up a notification like the ones
21348 mentioned above.
Jeff Johnsone7245742012-09-05 17:12:55 -070021349
Jeff Johnson295189b2012-06-20 16:38:30 -070021350 @param
Jeff Johnsone7245742012-09-05 17:12:55 -070021351
21352 wctsHandle: handle to the control transport service
Jeff Johnson295189b2012-06-20 16:38:30 -070021353 wctsEvent: the event being notified
Jeff Johnsone7245742012-09-05 17:12:55 -070021354 wctsNotifyCBData: the callback data of the user
21355
Jeff Johnson295189b2012-06-20 16:38:30 -070021356 @see WCTS_OpenTransport
Jeff Johnsone7245742012-09-05 17:12:55 -070021357
21358 @return None
Jeff Johnson295189b2012-06-20 16:38:30 -070021359*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021360void
Jeff Johnson295189b2012-06-20 16:38:30 -070021361WDI_NotifyMsgCTSCB
21362(
Jeff Johnsone7245742012-09-05 17:12:55 -070021363 WCTS_HandleType wctsHandle,
Jeff Johnson295189b2012-06-20 16:38:30 -070021364 WCTS_NotifyEventType wctsEvent,
21365 void* wctsNotifyCBData
21366)
21367{
Jeff Johnsone7245742012-09-05 17:12:55 -070021368 WDI_ControlBlockType* pWDICtx = (WDI_ControlBlockType*)wctsNotifyCBData;
Jeff Johnson295189b2012-06-20 16:38:30 -070021369 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21370
21371 if (NULL == pWDICtx )
21372 {
21373 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021374 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021375 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021376 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070021377 }
21378
21379 if (WDI_CONTROL_BLOCK_MAGIC != pWDICtx->magic)
21380 {
21381 /* callback presumably occurred after close */
21382 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021383 "%s: Invalid control block", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070021384 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070021385 }
21386
21387 if ( WCTS_EVENT_OPEN == wctsEvent )
21388 {
21389 /*Flag must be set atomically as it is checked from incoming request
21390 functions*/
21391 wpalMutexAcquire(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070021392 pWDICtx->bCTOpened = eWLAN_PAL_TRUE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021393
21394 /*Nothing to do - so try to dequeue any pending request that may have
21395 occurred while we were trying to establish this*/
21396 WDI_DequeuePendingReq(pWDICtx);
Jeff Johnsone7245742012-09-05 17:12:55 -070021397 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnson295189b2012-06-20 16:38:30 -070021398 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021399 else if ( WCTS_EVENT_CLOSE == wctsEvent )
Jeff Johnson295189b2012-06-20 16:38:30 -070021400 {
21401 /*Flag must be set atomically as it is checked from incoming request
21402 functions*/
21403 wpalMutexAcquire(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070021404 pWDICtx->bCTOpened = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021405
21406 /*No other request will be processed from now on - fail all*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021407 WDI_ClearPendingRequests(pWDICtx);
Jeff Johnson295189b2012-06-20 16:38:30 -070021408 wpalMutexRelease(&pWDICtx->wptMutex);
21409
21410 /*Notify that the Control Channel is closed */
21411 wpalEventSet(&pWDICtx->wctsActionEvent);
21412 }
21413
21414}/*WDI_NotifyMsgCTSCB*/
21415
21416
21417/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021418 @brief This callback is invoked by the control transport
Jeff Johnson295189b2012-06-20 16:38:30 -070021419 when it wishes to send up a packet received over the
21420 bus.
Jeff Johnsone7245742012-09-05 17:12:55 -070021421
Jeff Johnson295189b2012-06-20 16:38:30 -070021422 @param
Jeff Johnsone7245742012-09-05 17:12:55 -070021423
21424 wctsHandle: handle to the control transport service
Jeff Johnson295189b2012-06-20 16:38:30 -070021425 pMsg: the packet
21426 uLen: the packet length
Jeff Johnsone7245742012-09-05 17:12:55 -070021427 wctsRxMsgCBData: the callback data of the user
21428
Jeff Johnson295189b2012-06-20 16:38:30 -070021429 @see WCTS_OpenTransport
Jeff Johnsone7245742012-09-05 17:12:55 -070021430
21431 @return None
Jeff Johnson295189b2012-06-20 16:38:30 -070021432*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021433void
21434WDI_RXMsgCTSCB
Jeff Johnson295189b2012-06-20 16:38:30 -070021435(
Jeff Johnsone7245742012-09-05 17:12:55 -070021436 WCTS_HandleType wctsHandle,
Jeff Johnson295189b2012-06-20 16:38:30 -070021437 void* pMsg,
21438 wpt_uint32 uLen,
21439 void* wctsRxMsgCBData
21440)
21441{
Jeff Johnsone7245742012-09-05 17:12:55 -070021442 tHalMsgHeader *pHalMsgHeader;
21443 WDI_EventInfoType wdiEventData;
Jeff Johnson295189b2012-06-20 16:38:30 -070021444 WDI_ControlBlockType* pWDICtx = (WDI_ControlBlockType*)wctsRxMsgCBData;
21445 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
21446
21447 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021448 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021449 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021450 if ((NULL == pWDICtx ) || ( NULL == pMsg ) ||
Jeff Johnson295189b2012-06-20 16:38:30 -070021451 ( uLen < sizeof(tHalMsgHeader)))
21452 {
21453 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021454 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021455 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021456 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070021457 }
21458
21459 if (WDI_CONTROL_BLOCK_MAGIC != pWDICtx->magic)
21460 {
21461 /* callback presumably occurred after close */
21462 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021463 "%s: Invalid control block", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070021464 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070021465 }
21466
Jeff Johnsone7245742012-09-05 17:12:55 -070021467 /*The RX Callback is expected to be serialized in the proper control thread
Jeff Johnson295189b2012-06-20 16:38:30 -070021468 context - so no serialization is necessary here
21469 ! - revisit this assumption */
21470
21471 pHalMsgHeader = (tHalMsgHeader *)pMsg;
21472
21473 if ( uLen != pHalMsgHeader->msgLen )
21474 {
21475 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
21476 "Invalid packet received from HAL - catastrophic failure");
Jeff Johnsone7245742012-09-05 17:12:55 -070021477 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_INVALID_RSP_FMT);
Katya Nigamf02ad012014-05-05 16:12:49 +053021478 wpalWlanReload();
21479
Jeff Johnsone7245742012-09-05 17:12:55 -070021480 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070021481 }
21482
21483 wdiEventData.wdiResponse = HAL_2_WDI_RSP_TYPE( pHalMsgHeader->msgType );
21484
21485 /*The message itself starts after the header*/
21486 wdiEventData.pEventData = (wpt_uint8*)pMsg + sizeof(tHalMsgHeader);
21487 wdiEventData.uEventDataSize = pHalMsgHeader->msgLen - sizeof(tHalMsgHeader);
21488 wdiEventData.pCBfnc = gWDICb.pfncRspCB;
21489 wdiEventData.pUserData = gWDICb.pRspCBUserData;
21490
21491
21492 if ( wdiEventData.wdiResponse == pWDICtx->wdiExpectedResponse )
21493 {
21494 /*Stop the timer as the response was received */
21495 /*!UT - check for potential race conditions between stop and response */
21496 wpalTimerStop(&pWDICtx->wptResponseTimer);
21497 }
21498 /* Check if we receive a response message which is not expected */
21499 else if ( wdiEventData.wdiResponse < WDI_HAL_IND_MIN )
21500 {
21501 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
21502 "Received response %s (%d) when expecting %s (%d) - catastrophic failure",
21503 WDI_getRespMsgString(wdiEventData.wdiResponse),
Jeff Johnsone7245742012-09-05 17:12:55 -070021504 wdiEventData.wdiResponse,
Jeff Johnson295189b2012-06-20 16:38:30 -070021505 WDI_getRespMsgString(pWDICtx->wdiExpectedResponse),
21506 pWDICtx->wdiExpectedResponse);
Sameer Thalappil4bb20cb2013-11-15 14:50:51 -080021507
21508 if (gWDICb.bEnableSSR == false)
21509 {
21510 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
21511 "SSR is not enabled on WDI timeout");
21512 WDI_DetectedDeviceError(pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
21513 return;
21514 }
21515 wpalWcnssResetIntr();
21516 /* if this timer fires, it means Riva did not receive the FIQ */
21517 wpalTimerStart(&pWDICtx->ssrTimer, WDI_SSR_TIMEOUT);
21518
Jeff Johnson295189b2012-06-20 16:38:30 -070021519 return;
21520 }
21521
21522 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
21523 "Rx smth from HAL: %d", wdiEventData.wdiResponse);
21524
21525 /*Post response event to the state machine*/
21526 WDI_PostMainEvent(pWDICtx, WDI_RESPONSE_EVENT, &wdiEventData);
21527
21528}/*WDI_RXMsgCTSCB*/
21529
21530
21531/*========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070021532 Internal Helper Routines
Jeff Johnson295189b2012-06-20 16:38:30 -070021533========================================================================*/
21534
21535/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021536 @brief WDI_CleanCB - internal helper routine used to clean the
Jeff Johnson295189b2012-06-20 16:38:30 -070021537 WDI Main Control Block
Jeff Johnsone7245742012-09-05 17:12:55 -070021538
Jeff Johnson295189b2012-06-20 16:38:30 -070021539 @param pWDICtx - pointer to the control block
21540
21541 @return Result of the function call
21542*/
21543WPT_INLINE WDI_Status
21544WDI_CleanCB
21545(
21546 WDI_ControlBlockType* pWDICtx
21547)
21548{
21549 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
21550
21551 /*Clean the WDI Control Block*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021552 wpalMemoryZero( pWDICtx, sizeof(*pWDICtx));
Jeff Johnson295189b2012-06-20 16:38:30 -070021553
Jeff Johnsone7245742012-09-05 17:12:55 -070021554 pWDICtx->uGlobalState = WDI_MAX_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -070021555 pWDICtx->ucMaxBssids = WDI_MAX_SUPPORTED_BSS;
21556 pWDICtx->ucMaxStations = WDI_MAX_SUPPORTED_STAS;
21557
21558 WDI_ResetAssocSessions( pWDICtx );
21559
21560 return WDI_STATUS_SUCCESS;
21561}/*WDI_CleanCB*/
21562
21563
21564/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021565 @brief Process request helper function
Jeff Johnson295189b2012-06-20 16:38:30 -070021566
Jeff Johnsone7245742012-09-05 17:12:55 -070021567
21568 @param pWDICtx: pointer to the WLAN DAL context
21569 pEventData: pointer to the event information structure
21570
Jeff Johnson295189b2012-06-20 16:38:30 -070021571 @see
21572 @return Result of the function call
21573*/
21574WPT_INLINE WDI_Status
21575WDI_ProcessRequest
21576(
21577 WDI_ControlBlockType* pWDICtx,
21578 WDI_EventInfoType* pEventData
21579)
21580{
21581 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21582
Jeff Johnsone7245742012-09-05 17:12:55 -070021583 /*!! Skip sanity check as this is called from the FSM functionss which
Jeff Johnson295189b2012-06-20 16:38:30 -070021584 already checked these pointers*/
21585
21586 if (( pEventData->wdiRequest < WDI_MAX_UMAC_IND ) &&
21587 ( NULL != pfnReqProcTbl[pEventData->wdiRequest] ))
Jeff Johnsone7245742012-09-05 17:12:55 -070021588 {
Jeff Johnson295189b2012-06-20 16:38:30 -070021589 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080021590 "Calling request processing function for req %s (%d) %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070021591 WDI_getReqMsgString(pEventData->wdiRequest),
21592 pEventData->wdiRequest, pfnReqProcTbl[pEventData->wdiRequest]);
21593 return pfnReqProcTbl[pEventData->wdiRequest](pWDICtx, pEventData);
21594 }
21595 else
21596 {
21597 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070021598 "Operation %d is not yet implemented ",
Jeff Johnson295189b2012-06-20 16:38:30 -070021599 pEventData->wdiRequest);
21600 return WDI_STATUS_E_NOT_IMPLEMENT;
21601 }
21602}/*WDI_ProcessRequest*/
21603
21604
21605/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021606 @brief Get message helper function - it allocates memory for a
Jeff Johnson295189b2012-06-20 16:38:30 -070021607 message that is to be sent to HAL accross the bus and
Jeff Johnsone7245742012-09-05 17:12:55 -070021608 prefixes it with a send message header
21609
21610 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070021611 wdiReqType: type of the request being sent
21612 uBufferLen: message buffer len
21613 pMsgBuffer: resulting allocated buffer
21614 pusDataOffset: offset in the buffer where the caller
21615 can start copying its message data
21616 puBufferSize: the resulting buffer size (offset+buff
21617 len)
Jeff Johnsone7245742012-09-05 17:12:55 -070021618
Jeff Johnson295189b2012-06-20 16:38:30 -070021619 @see
21620 @return Result of the function call
21621*/
21622WDI_Status
21623WDI_GetMessageBuffer
Jeff Johnsone7245742012-09-05 17:12:55 -070021624(
21625 WDI_ControlBlockType* pWDICtx,
21626 WDI_RequestEnumType wdiReqType,
Jeff Johnson295189b2012-06-20 16:38:30 -070021627 wpt_uint16 usBufferLen,
Jeff Johnsone7245742012-09-05 17:12:55 -070021628 wpt_uint8** pMsgBuffer,
21629 wpt_uint16* pusDataOffset,
Jeff Johnson295189b2012-06-20 16:38:30 -070021630 wpt_uint16* pusBufferSize
21631)
21632{
21633 tHalMsgHeader halMsgHeader;
21634 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21635
Jeff Johnsone7245742012-09-05 17:12:55 -070021636 /*!! No sanity check here as we trust the called - ! check this assumption
Jeff Johnson295189b2012-06-20 16:38:30 -070021637 again*/
21638
21639 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021640 Try to allocate message buffer from PAL
Jeff Johnson295189b2012-06-20 16:38:30 -070021641 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021642 *pusBufferSize = sizeof(halMsgHeader) + usBufferLen;
Jeff Johnson295189b2012-06-20 16:38:30 -070021643 *pMsgBuffer = (wpt_uint8*)wpalMemoryAllocate(*pusBufferSize);
21644 if ( NULL == *pMsgBuffer )
21645 {
21646 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
21647 "Unable to allocate message buffer for req %s (%d)",
21648 WDI_getReqMsgString(wdiReqType),
Jeff Johnsone7245742012-09-05 17:12:55 -070021649 wdiReqType);
Jeff Johnson295189b2012-06-20 16:38:30 -070021650 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021651 return WDI_STATUS_MEM_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021652 }
21653
21654 /*-------------------------------------------------------------------------
21655 Fill in the message header
21656 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021657 halMsgHeader.msgType = WDI_2_HAL_REQ_TYPE(wdiReqType);
21658 /* Fill msgVersion */
21659#ifdef WLAN_FEATURE_11AC
21660 if (WDI_getFwWlanFeatCaps(DOT11AC))
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070021661 halMsgHeader.msgVersion = WLAN_HAL_MSG_VERSION1;
Jeff Johnsone7245742012-09-05 17:12:55 -070021662 else
21663#endif
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070021664 halMsgHeader.msgVersion = WLAN_HAL_MSG_VERSION0;
Jeff Johnson295189b2012-06-20 16:38:30 -070021665
Jeff Johnsone7245742012-09-05 17:12:55 -070021666 halMsgHeader.msgLen = sizeof(halMsgHeader) + usBufferLen;
21667 *pusDataOffset = sizeof(halMsgHeader);
21668 wpalMemoryCopy(*pMsgBuffer, &halMsgHeader, sizeof(halMsgHeader));
21669
21670 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021671}/*WDI_GetMessageBuffer*/
21672
21673
21674/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021675 @brief Send message helper function - sends a message over the
Jeff Johnson295189b2012-06-20 16:38:30 -070021676 bus using the control tranport and saves some info in
Jeff Johnsone7245742012-09-05 17:12:55 -070021677 the CB
21678
21679 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070021680 pSendBuffer: buffer to be sent
Jeff Johnsone7245742012-09-05 17:12:55 -070021681
Jeff Johnson295189b2012-06-20 16:38:30 -070021682 usSendSize size of the buffer to be sent
21683 pRspCb: response callback - save in the WDI
21684 CB
21685 pUserData: user data associated with the
21686 callback
21687 wdiExpectedResponse: the code of the response that is
21688 expected to be rx-ed for this request
Jeff Johnsone7245742012-09-05 17:12:55 -070021689
Jeff Johnson295189b2012-06-20 16:38:30 -070021690 @see
21691 @return Result of the function call
21692*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021693WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070021694WDI_SendMsg
Jeff Johnsone7245742012-09-05 17:12:55 -070021695(
21696 WDI_ControlBlockType* pWDICtx,
21697 wpt_uint8* pSendBuffer,
21698 wpt_uint32 usSendSize,
21699 void* pRspCb,
Jeff Johnson295189b2012-06-20 16:38:30 -070021700 void* pUserData,
21701 WDI_ResponseEnumType wdiExpectedResponse
21702)
21703{
Jeff Johnsond13512a2012-07-17 11:42:19 -070021704 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080021705 wpt_uint32 ret;
Jeff Johnson295189b2012-06-20 16:38:30 -070021706 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
21707
21708 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021709 Save needed info in the CB
Jeff Johnson295189b2012-06-20 16:38:30 -070021710 ------------------------------------------------------------------------*/
21711 pWDICtx->pRspCBUserData = pUserData;
Jeff Johnsone7245742012-09-05 17:12:55 -070021712 pWDICtx->pfncRspCB = pRspCb;
21713 pWDICtx->wdiExpectedResponse = wdiExpectedResponse;
Jeff Johnson295189b2012-06-20 16:38:30 -070021714
21715 /*-----------------------------------------------------------------------
21716 Call the CTS to send this message over - free message afterwards
21717 - notify transport failure
21718 Note: CTS is reponsible for freeing the message buffer.
21719 -----------------------------------------------------------------------*/
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080021720 ret = WCTS_SendMessage(pWDICtx->wctsHandle, (void*)pSendBuffer, usSendSize);
21721 if ((eWLAN_PAL_STATUS_SUCCESS != ret) &&
21722 (eWLAN_PAL_STATUS_E_RESOURCES != ret))
Jeff Johnson295189b2012-06-20 16:38:30 -070021723 {
Jeff Johnsond13512a2012-07-17 11:42:19 -070021724 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Siddharth Bhalceddd5d2014-03-21 15:00:19 +053021725 "Failed to send message with expected response %s (%d)"
21726 " over the bus - catastrophic failure",
21727 WDI_getRespMsgString(pWDICtx->wdiExpectedResponse),
21728 pWDICtx->wdiExpectedResponse);
Jeff Johnson295189b2012-06-20 16:38:30 -070021729
Jeff Johnsond13512a2012-07-17 11:42:19 -070021730 wdiStatus = WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021731 }
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080021732 else
21733 {
21734 /* even when message was placed in CTS deferred Q, we will treat it
21735 success but log this info
21736 */
21737 if (eWLAN_PAL_STATUS_E_RESOURCES == ret)
21738 {
21739 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
21740 "WDI_SendMsg: message placed in CTS deferred Q, expected "
21741 "response %s (%d)",
21742 WDI_getRespMsgString(pWDICtx->wdiExpectedResponse),
21743 pWDICtx->wdiExpectedResponse);
Gopichand Nakkala3c5b0632012-12-23 08:30:59 -080021744 WDI_ASSERT(0);
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080021745 }
21746 }
Jeff Johnson295189b2012-06-20 16:38:30 -070021747
Jeff Johnsond13512a2012-07-17 11:42:19 -070021748 /*Check if originator provided a request status callback*/
Jeff Johnson295189b2012-06-20 16:38:30 -070021749 if ( NULL != pWDICtx->wdiReqStatusCB )
21750 {
Jeff Johnsond13512a2012-07-17 11:42:19 -070021751 /*Inform originator whether request went through or not*/
21752 WDI_ReqStatusCb callback = pWDICtx->wdiReqStatusCB;
21753 void *callbackContext = pWDICtx->pReqStatusUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070021754 pWDICtx->wdiReqStatusCB = NULL;
21755 pWDICtx->pReqStatusUserData = NULL;
Jeff Johnsond13512a2012-07-17 11:42:19 -070021756 callback(wdiStatus, callbackContext);
21757
21758 /*For WDI requests which have registered a request callback,
21759 inform the WDA caller of the same via setting the return value
21760 (wdiStatus) to WDI_STATUS_PENDING. This makes sure that WDA doesnt
21761 end up repeating the functonality in the req callback for the
21762 WDI_STATUS_E_FAILURE case*/
21763 if (wdiStatus == WDI_STATUS_E_FAILURE)
21764 wdiStatus = WDI_STATUS_PENDING;
Jeff Johnson295189b2012-06-20 16:38:30 -070021765 }
21766
Jeff Johnsond13512a2012-07-17 11:42:19 -070021767 if ( wdiStatus == WDI_STATUS_SUCCESS )
21768 {
Jeff Johnson295189b2012-06-20 16:38:30 -070021769 /*Start timer for the expected response */
21770 wpalTimerStart(&pWDICtx->wptResponseTimer, WDI_RESPONSE_TIMEOUT);
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080021771
21772 /*cache current timestamp for debugging */
Gopichand Nakkala3c5b0632012-12-23 08:30:59 -080021773 pWDICtx->uTimeStampRspTmrStart = wpalGetSystemTime();
Arif Hussain6c8947a2013-11-27 13:57:14 -080021774 pWDICtx->uArchTimeStampRspTmrStart = wpalGetArchCounterTime();
Jeff Johnsond13512a2012-07-17 11:42:19 -070021775 }
21776 else
21777 {
Jeff Johnson902c9832012-12-10 14:28:09 -080021778 /*Inform upper stack layers that a transport fatal error occurred*/
Jeff Johnsond13512a2012-07-17 11:42:19 -070021779 WDI_DetectedDeviceError(pWDICtx, WDI_ERR_TRANSPORT_FAILURE);
21780 }
Jeff Johnson295189b2012-06-20 16:38:30 -070021781
Jeff Johnsond13512a2012-07-17 11:42:19 -070021782 return wdiStatus;
21783
Jeff Johnson295189b2012-06-20 16:38:30 -070021784}/*WDI_SendMsg*/
21785
21786
21787
21788/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021789 @brief Send indication helper function - sends a message over
Jeff Johnson295189b2012-06-20 16:38:30 -070021790 the bus using the control transport and saves some info
21791 in the CB
Jeff Johnsone7245742012-09-05 17:12:55 -070021792
21793 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070021794 pSendBuffer: buffer to be sent
21795 usSendSize: size of the buffer to be sent
Jeff Johnsone7245742012-09-05 17:12:55 -070021796
Jeff Johnson295189b2012-06-20 16:38:30 -070021797 @see
21798 @return Result of the function call
21799*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021800WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070021801WDI_SendIndication
Jeff Johnsone7245742012-09-05 17:12:55 -070021802(
21803 WDI_ControlBlockType* pWDICtx,
21804 wpt_uint8* pSendBuffer,
Jeff Johnson295189b2012-06-20 16:38:30 -070021805 wpt_uint32 usSendSize
21806)
21807{
21808 wpt_uint32 uStatus ;
21809 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
21810
21811 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021812 Call the CTS to send this message over
Jeff Johnson295189b2012-06-20 16:38:30 -070021813 Note: CTS is reponsible for freeing the message buffer.
21814 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021815 uStatus = WCTS_SendMessage( pWDICtx->wctsHandle,
Jeff Johnson295189b2012-06-20 16:38:30 -070021816 (void*)pSendBuffer, usSendSize );
21817
21818 /*Inform Upper MAC about the outcome of the request*/
21819 if ( NULL != pWDICtx->wdiReqStatusCB )
21820 {
21821 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
21822 "Send indication status : %d", uStatus);
21823
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080021824 /* even if CTS placed indication into its deferred Q, we treat it
21825 * as success and let CTS drain its queue as per smd interrupt to CTS
21826 */
21827 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 -070021828 pWDICtx->pReqStatusUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070021829 }
21830
21831 /*If sending of the message failed - it is considered catastrophic and
21832 indicates an error with the device*/
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080021833 if (( eWLAN_PAL_STATUS_SUCCESS != uStatus) &&
21834 ( eWLAN_PAL_STATUS_E_RESOURCES != uStatus))
21835
Jeff Johnson295189b2012-06-20 16:38:30 -070021836 {
21837 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnsone7245742012-09-05 17:12:55 -070021838 "Failed to send indication over the bus - catastrophic failure");
Jeff Johnson295189b2012-06-20 16:38:30 -070021839
21840 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_TRANSPORT_FAILURE);
21841 return WDI_STATUS_E_FAILURE;
21842 }
21843
Jeff Johnsone7245742012-09-05 17:12:55 -070021844 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021845}/*WDI_SendIndication*/
21846
21847
21848/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021849 @brief WDI_DetectedDeviceError - called internally by DAL when
21850 it has detected a failure in the device
21851
21852 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070021853 usErrorCode: error code detected by WDI or received
21854 from HAL
Jeff Johnsone7245742012-09-05 17:12:55 -070021855
Jeff Johnson295189b2012-06-20 16:38:30 -070021856 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070021857 @return None
Jeff Johnson295189b2012-06-20 16:38:30 -070021858*/
21859void
21860WDI_DetectedDeviceError
21861(
21862 WDI_ControlBlockType* pWDICtx,
21863 wpt_uint16 usErrorCode
21864)
21865{
21866 WDI_LowLevelIndType wdiInd;
21867 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
21868
21869 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
21870 "Device Error detected code: %d - transitioning to stopped state",
21871 usErrorCode);
21872
Katya Nigamf02ad012014-05-05 16:12:49 +053021873 pWDICtx->DeviceErrorReason = VOS_RETURN_ADDRESS;
21874
Jeff Johnson295189b2012-06-20 16:38:30 -070021875 wpalMutexAcquire(&pWDICtx->wptMutex);
21876
21877 WDI_STATableStop(pWDICtx);
21878
21879 WDI_ResetAssocSessions(pWDICtx);
21880
21881 /*Set the expected state transition to stopped - because the device
21882 experienced a failure*/
21883 pWDICtx->ucExpectedStateTransition = WDI_STOPPED_ST;
21884
21885 /*Transition to stopped to fail all incomming requests from this point on*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021886 WDI_STATE_TRANSITION( pWDICtx, WDI_STOPPED_ST);
Jeff Johnson295189b2012-06-20 16:38:30 -070021887
Jeff Johnsone7245742012-09-05 17:12:55 -070021888 WDI_ClearPendingRequests(pWDICtx);
Jeff Johnson295189b2012-06-20 16:38:30 -070021889
21890 /*TO DO: - there should be an attempt to reset the device here*/
21891
21892 wpalMutexRelease(&pWDICtx->wptMutex);
21893
21894 /*------------------------------------------------------------------------
21895 Notify UMAC if a handler is registered
21896 ------------------------------------------------------------------------*/
21897 if (pWDICtx->wdiLowLevelIndCB)
21898 {
Jeff Johnsone7245742012-09-05 17:12:55 -070021899 wdiInd.wdiIndicationType = WDI_FATAL_ERROR_IND;
21900 wdiInd.wdiIndicationData.usErrorCode = usErrorCode;
Jeff Johnson295189b2012-06-20 16:38:30 -070021901
21902 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData);
21903 }
21904}/*WDI_DetectedDeviceError*/
21905
21906/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021907 @brief This callback is invoked by the wpt when a timer that
Jeff Johnson295189b2012-06-20 16:38:30 -070021908 we started on send message has expire - this should
21909 never happen - it means device is stuck and cannot
Jeff Johnsone7245742012-09-05 17:12:55 -070021910 reply - trigger catastrophic failure
21911 @param
21912
Jeff Johnson295189b2012-06-20 16:38:30 -070021913 pUserData: the callback data of the user (ptr to WDI CB)
Jeff Johnsone7245742012-09-05 17:12:55 -070021914
21915 @see
21916 @return None
Jeff Johnson295189b2012-06-20 16:38:30 -070021917*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021918void
Jeff Johnson295189b2012-06-20 16:38:30 -070021919WDI_ResponseTimerCB
21920(
21921 void *pUserData
21922)
21923{
21924 WDI_ControlBlockType* pWDICtx = (WDI_ControlBlockType*)pUserData;
21925 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21926
Gopichand Nakkalae620d5a2013-04-26 05:45:57 -070021927 if (NULL == pWDICtx)
Jeff Johnson295189b2012-06-20 16:38:30 -070021928 {
Gopichand Nakkalae620d5a2013-04-26 05:45:57 -070021929 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021930 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021931 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021932 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070021933 }
21934
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080021935 /*cache current timestamp for debugging */
Gopichand Nakkala3c5b0632012-12-23 08:30:59 -080021936 pWDICtx->uTimeStampRspTmrExp = wpalGetSystemTime();
Arif Hussain6c8947a2013-11-27 13:57:14 -080021937 pWDICtx->uArchTimeStampRspTmrExp = wpalGetArchCounterTime();
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080021938
21939 /* If response timer is running at this time that means this timer
21940 * event is not for the last request but rather last-to-last request and
21941 * this timer event has come after we recevied respone for last-to-last
21942 * message
21943 */
21944 if (VOS_TIMER_STATE_RUNNING == wpalTimerGetCurStatus(&pWDICtx->wptResponseTimer))
21945 {
21946 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
21947 "WDI_ResponseTimerCB: timer in running state on timer event, "
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080021948 "ignore tmr event, timeStampTmrStart: %u, timeStampTmrExp: %u",
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080021949 pWDICtx->uTimeStampRspTmrStart, pWDICtx->uTimeStampRspTmrExp);
Arif Hussain6c8947a2013-11-27 13:57:14 -080021950 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
21951 "uArchTimeStampTmrStart: %llu seconds, "
21952 "uArchTimeStampTmrExp: %llu seconds",
21953 pWDICtx->uArchTimeStampRspTmrStart,
21954 pWDICtx->uArchTimeStampRspTmrExp);
21955
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080021956 return;
21957 }
21958
Gopichand Nakkalae620d5a2013-04-26 05:45:57 -070021959 if (WDI_MAX_RESP != pWDICtx->wdiExpectedResponse)
Jeff Johnson295189b2012-06-20 16:38:30 -070021960 {
21961
Gopichand Nakkalae620d5a2013-04-26 05:45:57 -070021962 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnson295189b2012-06-20 16:38:30 -070021963 "Timeout occurred while waiting for %s (%d) message from device "
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080021964 " - catastrophic failure, timeStampTmrStart: %u, timeStampTmrExp: %u",
Jeff Johnson295189b2012-06-20 16:38:30 -070021965 WDI_getRespMsgString(pWDICtx->wdiExpectedResponse),
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080021966 pWDICtx->wdiExpectedResponse, pWDICtx->uTimeStampRspTmrStart,
21967 pWDICtx->uTimeStampRspTmrExp);
Arif Hussain6c8947a2013-11-27 13:57:14 -080021968 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
21969 "uArchTimeStampTmrStart: %llu seconds, "
21970 "uArchTimeStampTmrExp: %llu seconds",
21971 pWDICtx->uArchTimeStampRspTmrStart,
21972 pWDICtx->uArchTimeStampRspTmrExp);
Gopichand Nakkalae620d5a2013-04-26 05:45:57 -070021973
21974 /* WDI timeout means Riva is not responding or SMD communication to Riva
21975 * is not happening. The only possible way to recover from this error
21976 * is to initiate SSR from APPS.
21977 * There is also an option to re-enable wifi, which will eventually
21978 * trigger SSR
21979 */
21980 if (gWDICb.bEnableSSR == false)
21981 {
21982 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
21983 "SSR is not enabled on WDI timeout");
21984 WDI_DetectedDeviceError(pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
21985 return;
21986 }
Madan Mohan Koyyalamudia2fc6412012-10-21 12:06:12 -070021987#ifndef WDI_RE_ENABLE_WIFI_ON_WDI_TIMEOUT
Gopichand Nakkalae620d5a2013-04-26 05:45:57 -070021988 wpalWcnssResetIntr();
Katya Nigam921bf202014-02-26 14:52:24 +053021989 if(wpalIsWDresetInProgress())
21990 {
21991 wpalDevicePanic();
21992 }
Gopichand Nakkalae620d5a2013-04-26 05:45:57 -070021993 /* if this timer fires, it means Riva did not receive the FIQ */
21994 wpalTimerStart(&pWDICtx->ssrTimer, WDI_SSR_TIMEOUT);
Madan Mohan Koyyalamudia2fc6412012-10-21 12:06:12 -070021995#else
Gopichand Nakkalae620d5a2013-04-26 05:45:57 -070021996 WDI_DetectedDeviceError(pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
21997 wpalWlanReload();
Madan Mohan Koyyalamudia2fc6412012-10-21 12:06:12 -070021998#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070021999 }
22000 else
22001 {
Gopichand Nakkalae620d5a2013-04-26 05:45:57 -070022002 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080022003 "Timeout occurred but not waiting for any response %d "
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080022004 "timeStampTmrStart: %u, timeStampTmrExp: %u",
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080022005 pWDICtx->wdiExpectedResponse, pWDICtx->uTimeStampRspTmrStart,
22006 pWDICtx->uTimeStampRspTmrExp);
Arif Hussain6c8947a2013-11-27 13:57:14 -080022007 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
22008 "uArchTimeStampTmrStart: %llu seconds, "
22009 "uArchTimeStampTmrExp: %llu seconds",
22010 pWDICtx->uArchTimeStampRspTmrStart,
22011 pWDICtx->uArchTimeStampRspTmrExp);
22012
Jeff Johnson295189b2012-06-20 16:38:30 -070022013 }
22014
22015 return;
22016
22017}/*WDI_ResponseTimerCB*/
22018
22019
22020/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022021 @brief Process response helper function
Jeff Johnson295189b2012-06-20 16:38:30 -070022022
Jeff Johnsone7245742012-09-05 17:12:55 -070022023
22024 @param pWDICtx: pointer to the WLAN DAL context
22025 pEventData: pointer to the event information structure
22026
Jeff Johnson295189b2012-06-20 16:38:30 -070022027 @see
22028 @return Result of the function call
22029*/
22030WPT_INLINE WDI_Status
22031WDI_ProcessResponse
22032(
22033 WDI_ControlBlockType* pWDICtx,
22034 WDI_EventInfoType* pEventData
22035)
22036{
22037 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
22038
Jeff Johnsone7245742012-09-05 17:12:55 -070022039 /* Skip sanity check as this is called from the FSM functions which
Jeff Johnson295189b2012-06-20 16:38:30 -070022040 already checked these pointers
22041 ! - revisit this assumption */
22042 if (( pEventData->wdiResponse < WDI_MAX_RESP ) &&
22043 ( NULL != pfnRspProcTbl[pEventData->wdiResponse] ))
Jeff Johnsone7245742012-09-05 17:12:55 -070022044 {
Jeff Johnson295189b2012-06-20 16:38:30 -070022045 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080022046 "Calling response processing function for resp %s (%d) %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070022047 WDI_getRespMsgString(pEventData->wdiResponse),
22048 pEventData->wdiResponse, pfnRspProcTbl[pEventData->wdiResponse]);
22049 return pfnRspProcTbl[pEventData->wdiResponse](pWDICtx, pEventData);
22050 }
22051 else
22052 {
22053 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070022054 "Operation %d is not yet implemented ",
Jeff Johnson295189b2012-06-20 16:38:30 -070022055 pEventData->wdiResponse);
22056 return WDI_STATUS_E_NOT_IMPLEMENT;
22057 }
22058}/*WDI_ProcessResponse*/
22059
22060
22061/*=========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070022062 QUEUE SUPPORT UTILITY FUNCTIONS
Jeff Johnson295189b2012-06-20 16:38:30 -070022063=========================================================================*/
22064
22065/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022066 @brief Utility function used by the DAL Core to help queue a
22067 request that cannot be processed right away.
22068 @param
22069
Jeff Johnson295189b2012-06-20 16:38:30 -070022070 pWDICtx: - pointer to the WDI control block
22071 pEventData: - pointer to the evnt info that needs to be
Jeff Johnsone7245742012-09-05 17:12:55 -070022072 queued
22073
22074 @see
22075 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070022076*/
22077WDI_Status
22078WDI_QueuePendingReq
22079(
22080 WDI_ControlBlockType* pWDICtx,
22081 WDI_EventInfoType* pEventData
22082)
22083{
Jeff Johnsone7245742012-09-05 17:12:55 -070022084 wpt_list_node* pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070022085 WDI_EventInfoType* pEventDataQueue = wpalMemoryAllocate(sizeof(*pEventData));
Jeff Johnsone7245742012-09-05 17:12:55 -070022086 void* pEventInfo = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070022087 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
22088
22089 if ( NULL == pEventDataQueue )
22090 {
22091 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070022092 "Cannot allocate memory for queueing");
Jeff Johnson295189b2012-06-20 16:38:30 -070022093 WDI_ASSERT(0);
22094 return WDI_STATUS_MEM_FAILURE;
22095 }
22096
22097 pEventDataQueue->pCBfnc = pEventData->pCBfnc;
22098 pEventDataQueue->pUserData = pEventData->pUserData;
22099 pEventDataQueue->uEventDataSize = pEventData->uEventDataSize;
22100 pEventDataQueue->wdiRequest = pEventData->wdiRequest;
Jeff Johnsone7245742012-09-05 17:12:55 -070022101 pEventDataQueue->wdiResponse = pEventData->wdiResponse;
Jeff Johnson295189b2012-06-20 16:38:30 -070022102
22103 if( pEventData->uEventDataSize != 0 && pEventData->pEventData != NULL )
22104 {
22105 pEventInfo = wpalMemoryAllocate(pEventData->uEventDataSize);
Jeff Johnsone7245742012-09-05 17:12:55 -070022106
Jeff Johnson295189b2012-06-20 16:38:30 -070022107 if ( NULL == pEventInfo )
22108 {
22109 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070022110 "Cannot allocate memory for queueing event data info");
Jeff Johnson295189b2012-06-20 16:38:30 -070022111 WDI_ASSERT(0);
22112 wpalMemoryFree(pEventDataQueue);
22113 return WDI_STATUS_MEM_FAILURE;
22114 }
Jeff Johnsone7245742012-09-05 17:12:55 -070022115
Jeff Johnson295189b2012-06-20 16:38:30 -070022116 wpalMemoryCopy(pEventInfo, pEventData->pEventData, pEventData->uEventDataSize);
22117
22118 }
22119 pEventDataQueue->pEventData = pEventInfo;
22120
22121 /*Send wpt a pointer to the node (this is the 1st element in the event data)*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022122 pNode = (wpt_list_node*)pEventDataQueue;
Jeff Johnson295189b2012-06-20 16:38:30 -070022123
Jeff Johnsone7245742012-09-05 17:12:55 -070022124 wpal_list_insert_back(&(pWDICtx->wptPendingQueue), pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070022125
22126 return WDI_STATUS_SUCCESS;
22127}/*WDI_QueuePendingReq*/
22128
22129/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022130 @brief Callback function for serializing queued message
Jeff Johnson295189b2012-06-20 16:38:30 -070022131 processing in the control context
Jeff Johnsone7245742012-09-05 17:12:55 -070022132 @param
22133
22134 pMsg - pointer to the message
22135
22136 @see
22137 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070022138*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022139void
Jeff Johnson295189b2012-06-20 16:38:30 -070022140WDI_PALCtrlMsgCB
22141(
22142 wpt_msg *pMsg
22143)
22144{
22145 WDI_EventInfoType* pEventData = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070022146 WDI_ControlBlockType* pWDICtx = NULL;
22147 WDI_Status wdiStatus;
22148 WDI_ReqStatusCb pfnReqStatusCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070022149 void* pUserData;
22150 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
22151
22152 if (( NULL == pMsg )||
22153 ( NULL == (pEventData = (WDI_EventInfoType*)pMsg->ptr)) ||
22154 ( NULL == (pWDICtx = (WDI_ControlBlockType*)pMsg->pContext )))
22155 {
22156 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070022157 "Invalid message received on serialize ctrl context API");
Jeff Johnson295189b2012-06-20 16:38:30 -070022158 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070022159 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070022160 }
22161
22162 /*Transition back to the state that we had before serialization
22163 - serialization transitions us to BUSY to stop any incomming requests
22164 ! TO DO L: possible race condition here if a request comes in between the
22165 state transition and the post function*/
22166
Jeff Johnsone7245742012-09-05 17:12:55 -070022167 WDI_STATE_TRANSITION( pWDICtx, pMsg->val);
Jeff Johnson295189b2012-06-20 16:38:30 -070022168
22169 /*-----------------------------------------------------------------------
22170 Check to see what type of event we are serializing
Jeff Johnsone7245742012-09-05 17:12:55 -070022171 - responses are never expected to come through here
Jeff Johnson295189b2012-06-20 16:38:30 -070022172 -----------------------------------------------------------------------*/
22173 switch ( pEventData->wdiRequest )
22174 {
22175
Jeff Johnsone7245742012-09-05 17:12:55 -070022176 case WDI_STOP_REQ:
Jeff Johnson295189b2012-06-20 16:38:30 -070022177 wdiStatus = WDI_PostMainEvent(&gWDICb, WDI_STOP_EVENT, pEventData);
22178 break;
22179
Jeff Johnson295189b2012-06-20 16:38:30 -070022180 case WDI_NV_DOWNLOAD_REQ:
22181 // When WDI State is WDI_STARTED_ST, send WDI request message with event type WDI_REQUEST_EVENT.
22182 // In this case, because this request is called from response process, we could call WDI_ProcessRequest() directly.
22183 if (pWDICtx->uGlobalState == WDI_STARTED_ST)
22184 {
22185 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022186 "%s: WDI_NV_DOWNLOAD_REQ called in WDI_STARTED_ST - send with WDI_REQUEST_EVENT", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070022187 wdiStatus = WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, pEventData);
22188 }
22189 else
22190 {
22191 wdiStatus = WDI_PostMainEvent(&gWDICb, WDI_START_EVENT, pEventData);
22192 }
22193
22194 break;
22195
22196 default:
22197 wdiStatus = WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, pEventData);
22198 break;
22199 }/*switch ( pEventData->wdiRequest )*/
22200
22201 if ( WDI_STATUS_SUCCESS != wdiStatus )
22202 {
22203 WDI_ExtractRequestCBFromEvent(pEventData, &pfnReqStatusCB, &pUserData);
22204
22205 if ( NULL != pfnReqStatusCB )
22206 {
22207 /*Fail the request*/
22208 pfnReqStatusCB( wdiStatus, pUserData);
22209 }
22210 }
22211
22212 /* Free data - that was allocated when queueing*/
22213 if( pEventData != NULL )
22214 {
22215 if( pEventData->pEventData != NULL )
22216 {
22217 wpalMemoryFree(pEventData->pEventData);
22218 }
22219 wpalMemoryFree(pEventData);
22220 }
22221
22222 if( pMsg != NULL )
22223 {
22224 wpalMemoryFree(pMsg);
22225 }
Jeff Johnsone7245742012-09-05 17:12:55 -070022226
Jeff Johnson295189b2012-06-20 16:38:30 -070022227}/*WDI_PALCtrlMsgCB*/
22228
22229/**
22230 @brief Utility function used by the DAL Core to help dequeue
Jeff Johnsone7245742012-09-05 17:12:55 -070022231 and schedule for execution a pending request
22232 @param
22233
Jeff Johnson295189b2012-06-20 16:38:30 -070022234 pWDICtx: - pointer to the WDI control block
22235 pEventData: - pointer to the evnt info that needs to be
Jeff Johnsone7245742012-09-05 17:12:55 -070022236 queued
22237
22238 @see
22239 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070022240*/
22241WDI_Status
22242WDI_DequeuePendingReq
22243(
22244 WDI_ControlBlockType* pWDICtx
22245)
22246{
Jeff Johnsone7245742012-09-05 17:12:55 -070022247 wpt_list_node* pNode = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070022248 WDI_EventInfoType* pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070022249 wpt_msg* palMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070022250 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
22251
Jeff Johnsone7245742012-09-05 17:12:55 -070022252 wpal_list_remove_front(&(pWDICtx->wptPendingQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070022253
22254 if ( NULL == pNode )
22255 {
22256 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -070022257 "List is empty - return");
Jeff Johnson295189b2012-06-20 16:38:30 -070022258 return WDI_STATUS_SUCCESS;
22259 }
22260
22261 /*The node actually points to the 1st element inside the Event Data struct -
22262 just cast it back to the struct*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022263 pEventData = (WDI_EventInfoType*)pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070022264
22265 /*Serialize processing in the control thread
22266 !TO DO: - check to see if these are all the messages params that need
22267 to be filled in*/
22268 palMsg = wpalMemoryAllocate(sizeof(wpt_msg));
22269
22270 if ( NULL == palMsg )
22271 {
22272 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070022273 "WDI_DequeuePendingReq: Cannot allocate memory for palMsg.");
Jeff Johnson295189b2012-06-20 16:38:30 -070022274 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070022275 return WDI_STATUS_MEM_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022276 }
Jeff Johnsone7245742012-09-05 17:12:55 -070022277 palMsg->pContext = pWDICtx;
Jeff Johnson295189b2012-06-20 16:38:30 -070022278 palMsg->callback = WDI_PALCtrlMsgCB;
22279 palMsg->ptr = pEventData;
22280
22281 /*Save the global state as we need it on the other side*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022282 palMsg->val = pWDICtx->uGlobalState;
Leo Chang0f24ca12013-12-17 13:35:00 -080022283 palMsg->type = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070022284
Jeff Johnson295189b2012-06-20 16:38:30 -070022285 /*Transition back to BUSY as we need to handle a queued request*/
22286 WDI_STATE_TRANSITION( pWDICtx, WDI_BUSY_ST);
Jeff Johnsone7245742012-09-05 17:12:55 -070022287
Jeff Johnson295189b2012-06-20 16:38:30 -070022288 wpalPostCtrlMsg(pWDICtx->pPALContext, palMsg);
22289
22290 return WDI_STATUS_PENDING;
22291}/*WDI_DequeuePendingReq*/
22292
22293
22294/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022295 @brief Utility function used by the DAL Core to help queue
Jeff Johnson295189b2012-06-20 16:38:30 -070022296 an association request that cannot be processed right
Jeff Johnsone7245742012-09-05 17:12:55 -070022297 away.- The assoc requests will be queued by BSSID
22298 @param
22299
Jeff Johnson295189b2012-06-20 16:38:30 -070022300 pWDICtx: - pointer to the WDI control block
22301 pEventData: pointer to the evnt info that needs to be queued
22302 macBSSID: bssid
Jeff Johnsone7245742012-09-05 17:12:55 -070022303
22304 @see
22305 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070022306*/
22307WDI_Status
22308WDI_QueueNewAssocRequest
22309(
22310 WDI_ControlBlockType* pWDICtx,
22311 WDI_EventInfoType* pEventData,
22312 wpt_macAddr macBSSID
22313)
22314{
Jeff Johnsone7245742012-09-05 17:12:55 -070022315 wpt_uint8 i;
22316 WDI_BSSSessionType* pSession = NULL;
22317 wpt_list_node* pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070022318 WDI_EventInfoType* pEventDataQueue;
Jeff Johnsone7245742012-09-05 17:12:55 -070022319 void* pEventInfo;
22320 WDI_NextSessionIdType* pSessionIdElement;
Jeff Johnson295189b2012-06-20 16:38:30 -070022321 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Jeff Johnson295189b2012-06-20 16:38:30 -070022322
Jeff Johnsone7245742012-09-05 17:12:55 -070022323
22324 /*------------------------------------------------------------------------
22325 Search for a session that matches the BSSID
Jeff Johnson295189b2012-06-20 16:38:30 -070022326 ------------------------------------------------------------------------*/
22327 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
22328 {
22329 if ( eWLAN_PAL_FALSE == pWDICtx->aBSSSessions[i].bInUse )
22330 {
22331 /*Found an empty session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022332 pSession = &pWDICtx->aBSSSessions[i];
22333 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070022334 }
22335 }
22336
22337 if ( i >= WDI_MAX_BSS_SESSIONS )
22338 {
22339 /*Cannot find any empty sessions*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022340 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022341 }
Jeff Johnsone7245742012-09-05 17:12:55 -070022342
Jeff Johnson295189b2012-06-20 16:38:30 -070022343 /*------------------------------------------------------------------------
22344 Fill in the BSSID for this session and set the usage flag
22345 ------------------------------------------------------------------------*/
22346 wpalMemoryCopy(pWDICtx->aBSSSessions[i].macBSSID, macBSSID, WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070022347 pWDICtx->aBSSSessions[i].bInUse = eWLAN_PAL_TRUE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022348
22349 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022350 Allocate memory for this and place it in the queue
Jeff Johnson295189b2012-06-20 16:38:30 -070022351 ------------------------------------------------------------------------*/
22352 pEventDataQueue = (WDI_EventInfoType*)wpalMemoryAllocate(sizeof(WDI_EventInfoType));
22353 if ( NULL == pEventDataQueue )
22354 {
22355 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022356 "%s: Cannot allocate memory for queue node", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070022357 WDI_ASSERT(0);
22358 return WDI_STATUS_MEM_FAILURE;
22359 }
22360
22361 pSessionIdElement = (WDI_NextSessionIdType*)wpalMemoryAllocate(sizeof(WDI_NextSessionIdType));
22362 if ( NULL == pSessionIdElement )
22363 {
22364 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022365 "%s: Cannot allocate memory for session ID", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070022366 WDI_ASSERT(0);
22367 wpalMemoryFree(pEventDataQueue);
22368 return WDI_STATUS_MEM_FAILURE;
22369 }
22370
22371 pEventInfo = wpalMemoryAllocate(pEventData->uEventDataSize);
22372 if ( NULL == pEventInfo )
22373 {
22374 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022375 "%s: Cannot allocate memory for event data info", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070022376 WDI_ASSERT(0);
22377 wpalMemoryFree(pSessionIdElement);
22378 wpalMemoryFree(pEventDataQueue);
22379 return WDI_STATUS_MEM_FAILURE;
22380 }
22381
22382 pEventDataQueue->pCBfnc = pEventData->pCBfnc;
22383 pEventDataQueue->pUserData = pEventData->pUserData;
22384 pEventDataQueue->uEventDataSize = pEventData->uEventDataSize;
22385 pEventDataQueue->wdiRequest = pEventData->wdiRequest;
Jeff Johnsone7245742012-09-05 17:12:55 -070022386 pEventDataQueue->wdiResponse = pEventData->wdiResponse;
Jeff Johnson295189b2012-06-20 16:38:30 -070022387
22388 wpalMemoryCopy(pEventInfo, pEventData->pEventData, pEventData->uEventDataSize);
22389 pEventDataQueue->pEventData = pEventInfo;
22390
22391 /*Send wpt a pointer to the node (this is the 1st element in the event data)*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022392 pNode = (wpt_list_node*)pEventDataQueue;
Jeff Johnson295189b2012-06-20 16:38:30 -070022393
22394 /*This association is currently being queued*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022395 pSession->bAssocReqQueued = eWLAN_PAL_TRUE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022396
Jeff Johnsone7245742012-09-05 17:12:55 -070022397 wpal_list_insert_back(&(pSession->wptPendingQueue), pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070022398
22399 /*We need to maintain a separate list that keeps track of the order in which
22400 the new assoc requests are being queued such that we can start processing
22401 them in the order that they had arrived*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022402 pSessionIdElement->ucIndex = i;
22403 pNode = (wpt_list_node*)pSessionIdElement;
Jeff Johnson295189b2012-06-20 16:38:30 -070022404
22405 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
22406 "Queueing up new assoc session : %d ", pSessionIdElement->ucIndex);
Jeff Johnsone7245742012-09-05 17:12:55 -070022407 wpal_list_insert_back(&pWDICtx->wptPendingAssocSessionIdQueue, pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070022408
22409 /*Return pending as this is what the status of the request is since it has
22410 been queued*/
22411 return WDI_STATUS_PENDING;
22412}/*WDI_QueueNewAssocRequest*/
22413
22414/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022415 @brief Utility function used by the DAL Core to help queue
Jeff Johnson295189b2012-06-20 16:38:30 -070022416 an association request that cannot be processed right
Jeff Johnsone7245742012-09-05 17:12:55 -070022417 away.- The assoc requests will be queued by BSSID
22418 @param
22419
Jeff Johnson295189b2012-06-20 16:38:30 -070022420 pWDICtx: - pointer to the WDI control block
22421 pSession: - session in which to queue
22422 pEventData: pointer to the event info that needs to be
22423 queued
Jeff Johnsone7245742012-09-05 17:12:55 -070022424
22425 @see
22426 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070022427*/
22428WDI_Status
22429WDI_QueueAssocRequest
22430(
22431 WDI_ControlBlockType* pWDICtx,
22432 WDI_BSSSessionType* pSession,
22433 WDI_EventInfoType* pEventData
22434)
22435{
Jeff Johnsone7245742012-09-05 17:12:55 -070022436 wpt_list_node* pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070022437 WDI_EventInfoType* pEventDataQueue;
Jeff Johnsone7245742012-09-05 17:12:55 -070022438 void* pEventInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070022439 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Jeff Johnsone7245742012-09-05 17:12:55 -070022440
22441 /*------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -070022442 Sanity check
22443 ------------------------------------------------------------------------*/
22444 if (( NULL == pSession ) || ( NULL == pWDICtx ))
22445 {
22446 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022447 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070022448
Jeff Johnsone7245742012-09-05 17:12:55 -070022449 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022450 }
22451
22452 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022453 Allocate memory for this and place it in the queue
Jeff Johnson295189b2012-06-20 16:38:30 -070022454 ------------------------------------------------------------------------*/
22455 pEventDataQueue = (WDI_EventInfoType*)wpalMemoryAllocate(sizeof(WDI_EventInfoType));
22456 if ( NULL == pEventDataQueue )
22457 {
22458 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022459 "%s: Cannot allocate memory for queueing", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070022460 WDI_ASSERT(0);
22461 return WDI_STATUS_MEM_FAILURE;
22462 }
22463
22464 pEventInfo = wpalMemoryAllocate(pEventData->uEventDataSize);
22465 if ( NULL == pEventInfo )
22466 {
22467 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
22468 "%s: Cannot allocate memory for queueing event data info",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022469 __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070022470 WDI_ASSERT(0);
22471 wpalMemoryFree(pEventDataQueue);
22472 return WDI_STATUS_MEM_FAILURE;
22473 }
22474
22475 pEventDataQueue->pCBfnc = pEventData->pCBfnc;
22476 pEventDataQueue->pUserData = pEventData->pUserData;
22477 pEventDataQueue->uEventDataSize = pEventData->uEventDataSize;
22478 pEventDataQueue->wdiRequest = pEventData->wdiRequest;
Jeff Johnsone7245742012-09-05 17:12:55 -070022479 pEventDataQueue->wdiResponse = pEventData->wdiResponse;
Jeff Johnson295189b2012-06-20 16:38:30 -070022480 pEventDataQueue->pEventData = pEventInfo;
22481
22482 wpalMemoryCopy(pEventInfo, pEventData->pEventData, pEventData->uEventDataSize);
22483
22484 /*Send wpt a pointer to the node (this is the 1st element in the event data)*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022485 pNode = (wpt_list_node*)pEventDataQueue;
Jeff Johnson295189b2012-06-20 16:38:30 -070022486
22487 /*This association is currently being queued*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022488 pSession->bAssocReqQueued = eWLAN_PAL_TRUE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022489
Jeff Johnsone7245742012-09-05 17:12:55 -070022490 wpal_list_insert_back(&(pSession->wptPendingQueue), pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070022491
22492 /*The result of this operation is pending because the request has been
22493 queued and it will be processed at a later moment in time */
22494 return WDI_STATUS_PENDING;
22495}/*WDI_QueueAssocRequest*/
22496
22497/**
22498 @brief Utility function used by the DAL Core to help dequeue
22499 an association request that was pending
22500 The request will be queued up in front of the main
22501 pending queue for imediate processing
Jeff Johnsone7245742012-09-05 17:12:55 -070022502 @param
22503
Jeff Johnson295189b2012-06-20 16:38:30 -070022504 pWDICtx: - pointer to the WDI control block
Jeff Johnsone7245742012-09-05 17:12:55 -070022505
22506
22507 @see
22508 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070022509*/
22510WDI_Status
22511WDI_DequeueAssocRequest
22512(
22513 WDI_ControlBlockType* pWDICtx
22514)
22515{
Jeff Johnsone7245742012-09-05 17:12:55 -070022516 wpt_list_node* pNode = NULL;
22517 WDI_NextSessionIdType* pSessionIdElement;
Jeff Johnson295189b2012-06-20 16:38:30 -070022518 WDI_BSSSessionType* pSession;
22519 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Jeff Johnsone7245742012-09-05 17:12:55 -070022520
22521 /*------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -070022522 Sanity check
22523 ------------------------------------------------------------------------*/
22524 if ( NULL == pWDICtx )
22525 {
22526 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022527 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070022528
Jeff Johnsone7245742012-09-05 17:12:55 -070022529 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022530 }
22531
22532 /*------------------------------------------------------------------------
22533 An association has been completed => a new association can occur
22534 Check to see if there are any pending associations ->
22535 If so , transfer all the pending requests into the busy queue for
22536 processing
22537 These requests have arrived prior to the requests in the busy queue
22538 (bc they needed to be processed in order to be placed in this queue)
22539 => they will be placed at the front of the busy queue
22540 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022541 wpal_list_remove_front(&(pWDICtx->wptPendingAssocSessionIdQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070022542
22543 if ( NULL == pNode )
22544 {
22545 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -070022546 "List is empty - return");
Jeff Johnson295189b2012-06-20 16:38:30 -070022547 return WDI_STATUS_SUCCESS;
22548 }
22549
22550 /*The node actually points to the 1st element inside the Session Id struct -
22551 just cast it back to the struct*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022552 pSessionIdElement = (WDI_NextSessionIdType*)pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070022553
22554 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
22555 "Dequeueing new assoc session : %d ", pSessionIdElement->ucIndex);
22556
22557 if ( pSessionIdElement->ucIndex < WDI_MAX_BSS_SESSIONS )
22558 {
22559 pSession = &pWDICtx->aBSSSessions[pSessionIdElement->ucIndex];
Jeff Johnsone7245742012-09-05 17:12:55 -070022560
Jeff Johnson295189b2012-06-20 16:38:30 -070022561 /*Transfer all the pending requests in this assoc queue to
Jeff Johnsone7245742012-09-05 17:12:55 -070022562 the front of the main waiting queue for subsequent execution*/
22563 wpal_list_remove_back(&(pSession->wptPendingQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070022564 while ( NULL != pNode )
22565 {
22566 /*Place it in front of the main pending list*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022567 wpal_list_insert_front( &(pWDICtx->wptPendingQueue), &pNode);
22568 wpal_list_remove_back(&(pSession->wptPendingQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070022569 }
Jeff Johnsone7245742012-09-05 17:12:55 -070022570 pSession->bAssocReqQueued = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022571 }
22572 else
22573 {
22574 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnsone7245742012-09-05 17:12:55 -070022575 "Invalid session id queued up for assoc");
Jeff Johnson295189b2012-06-20 16:38:30 -070022576 WPAL_ASSERT(0);
22577 wpalMemoryFree(pSessionIdElement);
Jeff Johnsone7245742012-09-05 17:12:55 -070022578 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022579 }
Jeff Johnsone7245742012-09-05 17:12:55 -070022580
Jeff Johnson295189b2012-06-20 16:38:30 -070022581 /*Clean this up as it is no longer needed in order to prevent memory leak*/
22582 wpalMemoryFree(pSessionIdElement);
22583 return WDI_STATUS_SUCCESS;
22584}/*WDI_DequeueAssocRequest*/
22585
22586/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022587 @brief Utility function used by the DAL Core to clear any
Jeff Johnson295189b2012-06-20 16:38:30 -070022588 pending requests - all req cb will be called with
22589 failure and the queue will be emptied.
Jeff Johnsone7245742012-09-05 17:12:55 -070022590 @param
22591
Jeff Johnson295189b2012-06-20 16:38:30 -070022592 pWDICtx: - pointer to the WDI control block
Jeff Johnsone7245742012-09-05 17:12:55 -070022593
22594 @see
22595 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070022596*/
22597WDI_Status
22598WDI_ClearPendingRequests
Jeff Johnsone7245742012-09-05 17:12:55 -070022599(
Jeff Johnson295189b2012-06-20 16:38:30 -070022600 WDI_ControlBlockType* pWDICtx
22601)
22602{
Jeff Johnsone7245742012-09-05 17:12:55 -070022603 wpt_list_node* pNode = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070022604 WDI_EventInfoType* pEventDataQueue = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070022605 WDI_ReqStatusCb pfnReqStatusCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070022606 void* pUserData;
22607 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
22608
Jeff Johnsone7245742012-09-05 17:12:55 -070022609 wpal_list_remove_front(&(pWDICtx->wptPendingQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070022610
22611 /*------------------------------------------------------------------------
22612 Go through all the requests and fail them - this will only be called
22613 when device is being stopped or an error was detected - either case the
Jeff Johnsone7245742012-09-05 17:12:55 -070022614 pending requests can no longer be sent down to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070022615 ------------------------------------------------------------------------*/
22616 while( pNode )
22617 {
22618 /*The node actually points to the 1st element inside the Event Data struct -
22619 just cast it back to the struct*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022620 pEventDataQueue = (WDI_EventInfoType*)pNode;
22621
Jeff Johnson295189b2012-06-20 16:38:30 -070022622 WDI_ExtractRequestCBFromEvent(pEventDataQueue, &pfnReqStatusCB, &pUserData);
22623 if ( NULL != pfnReqStatusCB )
22624 {
22625 /*Fail the request*/
22626 pfnReqStatusCB( WDI_STATUS_E_FAILURE, pUserData);
22627 }
22628 /* Free data - that was allocated when queueing */
22629 if ( pEventDataQueue->pEventData != NULL )
22630 {
22631 wpalMemoryFree(pEventDataQueue->pEventData);
22632 }
22633 wpalMemoryFree(pEventDataQueue);
22634
22635 if (wpal_list_remove_front(&(pWDICtx->wptPendingQueue), &pNode) != eWLAN_PAL_STATUS_SUCCESS)
22636 {
22637 break;
22638 }
Jeff Johnsone7245742012-09-05 17:12:55 -070022639 }
22640
Jeff Johnson295189b2012-06-20 16:38:30 -070022641 return WDI_STATUS_SUCCESS;
22642}/*WDI_ClearPendingRequests*/
22643
22644/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022645 @brief Helper routine used to init the BSS Sessions in the WDI control block
22646
22647
22648 @param pWDICtx: pointer to the WLAN DAL context
22649
Jeff Johnson295189b2012-06-20 16:38:30 -070022650 @see
22651*/
22652void
22653WDI_ResetAssocSessions
Jeff Johnsone7245742012-09-05 17:12:55 -070022654(
Jeff Johnson295189b2012-06-20 16:38:30 -070022655 WDI_ControlBlockType* pWDICtx
22656)
22657{
Jeff Johnsone7245742012-09-05 17:12:55 -070022658 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070022659 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
22660
22661 /*-------------------------------------------------------------------------
22662 No Sanity check
22663 -------------------------------------------------------------------------*/
22664 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
22665 {
Jeff Johnsone7245742012-09-05 17:12:55 -070022666 wpalMemoryZero( &pWDICtx->aBSSSessions[i], sizeof(WDI_BSSSessionType) );
Jeff Johnson295189b2012-06-20 16:38:30 -070022667 pWDICtx->aBSSSessions[i].wdiAssocState = WDI_ASSOC_INIT_ST;
22668 pWDICtx->aBSSSessions[i].bcastStaIdx = WDI_STA_INVALID_IDX;
22669 pWDICtx->aBSSSessions[i].ucBSSIdx = WDI_BSS_INVALID_IDX;
22670 }
22671}/*WDI_ResetAssocSessions*/
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 pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070022678 macBSSID: BSSID of the session
Jeff Johnsone7245742012-09-05 17:12:55 -070022679 pSession: pointer to the session (if found)
22680
Jeff Johnson295189b2012-06-20 16:38:30 -070022681 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070022682 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070022683*/
22684wpt_uint8
22685WDI_FindAssocSession
Jeff Johnsone7245742012-09-05 17:12:55 -070022686(
Jeff Johnson295189b2012-06-20 16:38:30 -070022687 WDI_ControlBlockType* pWDICtx,
22688 wpt_macAddr macBSSID,
22689 WDI_BSSSessionType** ppSession
22690)
22691{
Jeff Johnsone7245742012-09-05 17:12:55 -070022692 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070022693 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
22694
22695 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022696 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070022697 -------------------------------------------------------------------------*/
22698 if ( NULL == ppSession )
22699 {
22700 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022701 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070022702 return WDI_MAX_BSS_SESSIONS;
Jeff Johnson295189b2012-06-20 16:38:30 -070022703 }
22704
Jeff Johnsone7245742012-09-05 17:12:55 -070022705 *ppSession = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070022706
Jeff Johnsone7245742012-09-05 17:12:55 -070022707 /*------------------------------------------------------------------------
22708 Search for a session that matches the BSSID
Jeff Johnson295189b2012-06-20 16:38:30 -070022709 ------------------------------------------------------------------------*/
22710 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
22711 {
Madan Mohan Koyyalamudi35287862012-10-22 14:52:46 -070022712 if ( (pWDICtx->aBSSSessions[i].bInUse == eWLAN_PAL_TRUE) &&
22713 (eWLAN_PAL_TRUE ==
22714 wpalMemoryCompare(pWDICtx->aBSSSessions[i].macBSSID, macBSSID,
22715 WDI_MAC_ADDR_LEN)) )
Jeff Johnson295189b2012-06-20 16:38:30 -070022716 {
22717 /*Found the session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022718 *ppSession = &pWDICtx->aBSSSessions[i];
Jeff Johnson295189b2012-06-20 16:38:30 -070022719 return i;
22720 }
22721 }
22722
Jeff Johnsone7245742012-09-05 17:12:55 -070022723 return i;
Jeff Johnson295189b2012-06-20 16:38:30 -070022724}/*WDI_FindAssocSession*/
22725
22726/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022727 @brief Helper routine used to find a session based on the BSSID
22728
22729
22730 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070022731 ucBSSIdx: BSS Index of the session
22732 ppSession: out pointer to the session (if found)
Jeff Johnsone7245742012-09-05 17:12:55 -070022733
Jeff Johnson295189b2012-06-20 16:38:30 -070022734 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070022735 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070022736*/
22737wpt_uint8
22738WDI_FindAssocSessionByBSSIdx
Jeff Johnsone7245742012-09-05 17:12:55 -070022739(
Jeff Johnson295189b2012-06-20 16:38:30 -070022740 WDI_ControlBlockType* pWDICtx,
22741 wpt_uint16 ucBSSIdx,
22742 WDI_BSSSessionType** ppSession
22743)
22744{
Jeff Johnsone7245742012-09-05 17:12:55 -070022745 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070022746 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
22747
22748 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022749 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070022750 -------------------------------------------------------------------------*/
22751 if ( NULL == ppSession )
22752 {
22753 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022754 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070022755 return WDI_MAX_BSS_SESSIONS;
Jeff Johnson295189b2012-06-20 16:38:30 -070022756 }
22757
Jeff Johnsone7245742012-09-05 17:12:55 -070022758 *ppSession = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070022759
Jeff Johnsone7245742012-09-05 17:12:55 -070022760 /*------------------------------------------------------------------------
22761 Search for a session that matches the BSSID
Jeff Johnson295189b2012-06-20 16:38:30 -070022762 ------------------------------------------------------------------------*/
22763 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
22764 {
22765 if ( ucBSSIdx == pWDICtx->aBSSSessions[i].ucBSSIdx )
22766 {
22767 /*Found the session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022768 *ppSession = &pWDICtx->aBSSSessions[i];
Jeff Johnson295189b2012-06-20 16:38:30 -070022769 return i;
22770 }
22771 }
22772
Jeff Johnsone7245742012-09-05 17:12:55 -070022773 return i;
Jeff Johnson295189b2012-06-20 16:38:30 -070022774}/*WDI_FindAssocSessionByBSSIdx*/
22775
22776/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022777 @brief Helper routine used to find a session based on the BSSID
22778
22779
22780 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070022781 ucBSSIdx: BSS Index of the session
22782 ppSession: out pointer to the session (if found)
Jeff Johnsone7245742012-09-05 17:12:55 -070022783
Jeff Johnson295189b2012-06-20 16:38:30 -070022784 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070022785 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070022786*/
22787wpt_uint8
22788WDI_FindAssocSessionByIdx
Jeff Johnsone7245742012-09-05 17:12:55 -070022789(
Jeff Johnson295189b2012-06-20 16:38:30 -070022790 WDI_ControlBlockType* pWDICtx,
22791 wpt_uint16 usIdx,
22792 WDI_BSSSessionType** ppSession
22793)
22794{
22795 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
22796
22797 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022798 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070022799 -------------------------------------------------------------------------*/
22800 if ( NULL == ppSession || usIdx >= WDI_MAX_BSS_SESSIONS )
22801 {
22802 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022803 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070022804 return WDI_MAX_BSS_SESSIONS;
Jeff Johnson295189b2012-06-20 16:38:30 -070022805 }
22806
22807 /*Found the session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022808 *ppSession = &pWDICtx->aBSSSessions[usIdx];
Jeff Johnson295189b2012-06-20 16:38:30 -070022809
22810 return usIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070022811
Jeff Johnson295189b2012-06-20 16:38:30 -070022812}/*WDI_FindAssocSessionByBSSIdx*/
22813
22814/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022815 @brief Helper routine used to find an empty session in the WDI
Jeff Johnson295189b2012-06-20 16:38:30 -070022816 CB
Jeff Johnsone7245742012-09-05 17:12:55 -070022817
22818
22819 @param pWDICtx: pointer to the WLAN DAL context
22820 pSession: pointer to the session (if found)
22821
Jeff Johnson295189b2012-06-20 16:38:30 -070022822 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070022823 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070022824*/
22825wpt_uint8
22826WDI_FindEmptySession
Jeff Johnsone7245742012-09-05 17:12:55 -070022827(
Jeff Johnson295189b2012-06-20 16:38:30 -070022828 WDI_ControlBlockType* pWDICtx,
22829 WDI_BSSSessionType** ppSession
22830)
22831{
Jeff Johnsone7245742012-09-05 17:12:55 -070022832 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070022833 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
22834 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022835 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070022836 -------------------------------------------------------------------------*/
22837 if ( NULL == ppSession )
22838 {
22839 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022840 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070022841 return WDI_MAX_BSS_SESSIONS;
Jeff Johnson295189b2012-06-20 16:38:30 -070022842 }
22843
Jeff Johnsone7245742012-09-05 17:12:55 -070022844 *ppSession = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070022845
Jeff Johnsone7245742012-09-05 17:12:55 -070022846 /*------------------------------------------------------------------------
22847 Search for a session that it is not in use
Jeff Johnson295189b2012-06-20 16:38:30 -070022848 ------------------------------------------------------------------------*/
22849 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
22850 {
22851 if ( ! pWDICtx->aBSSSessions[i].bInUse )
22852 {
22853 /*Found a session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022854 *ppSession = &pWDICtx->aBSSSessions[i];
Jeff Johnson295189b2012-06-20 16:38:30 -070022855 return i;
22856 }
22857 }
22858
Jeff Johnsone7245742012-09-05 17:12:55 -070022859 return i;
Jeff Johnson295189b2012-06-20 16:38:30 -070022860}/*WDI_FindEmptySession*/
22861
22862
22863/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022864 @brief Helper routine used to get the total count of active
Jeff Johnson295189b2012-06-20 16:38:30 -070022865 sessions
Jeff Johnsone7245742012-09-05 17:12:55 -070022866
22867
22868 @param pWDICtx: pointer to the WLAN DAL context
Hoonki Lee9af07cf2013-04-24 01:21:58 -070022869 macBSSID: pointer to BSSID. If NULL, get all the session.
22870 If not NULL, count ActiveSession by excluding (TRUE) or including (FALSE) skipBSSID.
22871 skipBSSID: if TRUE, get all the sessions except matching to macBSSID. If FALSE, get all session.
22872 This argument is ignored if macBSSID is NULL.
Jeff Johnson295189b2012-06-20 16:38:30 -070022873 @see
22874 @return Number of sessions in use
22875*/
22876wpt_uint8
22877WDI_GetActiveSessionsCount
Jeff Johnsone7245742012-09-05 17:12:55 -070022878(
Hoonki Lee9af07cf2013-04-24 01:21:58 -070022879 WDI_ControlBlockType* pWDICtx,
22880 wpt_macAddr macBSSID,
22881 wpt_boolean skipBSSID
Jeff Johnson295189b2012-06-20 16:38:30 -070022882)
22883{
Jeff Johnsone7245742012-09-05 17:12:55 -070022884 wpt_uint8 i, ucCount = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070022885 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022886
22887 /*------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -070022888 Count all sessions in use
22889 ------------------------------------------------------------------------*/
22890 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
22891 {
Hoonki Lee9af07cf2013-04-24 01:21:58 -070022892 if ( macBSSID && skipBSSID &&
22893 (eWLAN_PAL_TRUE ==
22894 wpalMemoryCompare(pWDICtx->aBSSSessions[i].macBSSID, macBSSID,
22895 WDI_MAC_ADDR_LEN)))
22896 {
22897 continue;
22898 }
22899 else if ( pWDICtx->aBSSSessions[i].bInUse )
22900 {
Jeff Johnson295189b2012-06-20 16:38:30 -070022901 ucCount++;
Hoonki Lee9af07cf2013-04-24 01:21:58 -070022902 }
Jeff Johnson295189b2012-06-20 16:38:30 -070022903 }
22904
Jeff Johnsone7245742012-09-05 17:12:55 -070022905 return ucCount;
Jeff Johnson295189b2012-06-20 16:38:30 -070022906}/*WDI_GetActiveSessionsCount*/
22907
22908/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022909 @brief Helper routine used to delete session in the WDI
Jeff Johnson295189b2012-06-20 16:38:30 -070022910 CB
Jeff Johnsone7245742012-09-05 17:12:55 -070022911
22912
22913 @param pWDICtx: pointer to the WLAN DAL context
22914 pSession: pointer to the session (if found)
22915
Jeff Johnson295189b2012-06-20 16:38:30 -070022916 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070022917 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070022918*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022919void
Jeff Johnson295189b2012-06-20 16:38:30 -070022920WDI_DeleteSession
Jeff Johnsone7245742012-09-05 17:12:55 -070022921(
Jeff Johnson295189b2012-06-20 16:38:30 -070022922 WDI_ControlBlockType* pWDICtx,
22923 WDI_BSSSessionType* ppSession
22924)
22925{
22926 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022927 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070022928 -------------------------------------------------------------------------*/
22929 if ( NULL == ppSession )
22930 {
22931 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022932 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070022933 return ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022934 }
22935
Jeff Johnsone7245742012-09-05 17:12:55 -070022936 /*------------------------------------------------------------------------
22937 Reset the entries int session
Jeff Johnson295189b2012-06-20 16:38:30 -070022938 ------------------------------------------------------------------------*/
22939 wpal_list_destroy(&ppSession->wptPendingQueue);
22940 wpalMemoryZero(ppSession, sizeof(*ppSession));
Jeff Johnsone7245742012-09-05 17:12:55 -070022941 ppSession->wdiAssocState = WDI_ASSOC_INIT_ST;
22942 ppSession->bInUse = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022943 ppSession->wdiBssType = WDI_INFRASTRUCTURE_MODE;
22944 wpal_list_init(&ppSession->wptPendingQueue);
22945
22946}/*WDI_DeleteSession*/
22947
22948/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022949 @brief Utility function to add the broadcast STA to the the STA table.
Jeff Johnson295189b2012-06-20 16:38:30 -070022950 The bcast STA ID is assigned by HAL and must be valid.
Jeff Johnsone7245742012-09-05 17:12:55 -070022951 @param
22952
Jeff Johnson295189b2012-06-20 16:38:30 -070022953 WDI_AddStaParams: - pointer to the WDI Add STA params
22954 usBcastStaIdx: - Broadcast STA index passed by HAL
Jeff Johnsone7245742012-09-05 17:12:55 -070022955
22956 @see
22957 @return void
Jeff Johnson295189b2012-06-20 16:38:30 -070022958*/
22959void
22960WDI_AddBcastSTAtoSTATable
22961(
22962 WDI_ControlBlockType* pWDICtx,
22963 WDI_AddStaParams * staParams,
22964 wpt_uint16 usBcastStaIdx
22965)
22966{
22967 WDI_AddStaParams wdiAddSTAParam = {0};
22968 wpt_macAddr bcastMacAddr = {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF};
22969 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
22970
22971 /*---------------------------------------------------------------------
22972 Sanity check
22973 ---------------------------------------------------------------------*/
22974 if ( NULL == staParams )
22975 {
22976 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022977 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070022978
Jeff Johnsone7245742012-09-05 17:12:55 -070022979 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070022980 }
22981
22982 wdiAddSTAParam.bcastDpuIndex = staParams->bcastDpuIndex;
22983 wdiAddSTAParam.bcastDpuSignature = staParams->bcastDpuSignature;
22984 wdiAddSTAParam.bcastMgmtDpuIndex = staParams->bcastMgmtDpuIndex;
22985 wdiAddSTAParam.bcastMgmtDpuSignature = staParams->bcastMgmtDpuSignature;
22986 wdiAddSTAParam.dpuIndex = staParams->dpuIndex;
22987 wdiAddSTAParam.dpuSig = staParams->dpuSig;
22988 wpalMemoryCopy( wdiAddSTAParam.macBSSID, staParams->macBSSID,
22989 WDI_MAC_ADDR_LEN );
22990 wpalMemoryCopy( wdiAddSTAParam.staMacAddr, bcastMacAddr, WDI_MAC_ADDR_LEN );
22991 wdiAddSTAParam.ucBSSIdx = staParams->ucBSSIdx;
22992 wdiAddSTAParam.ucHTCapable = staParams->ucHTCapable;
22993 wdiAddSTAParam.ucRmfEnabled = staParams->ucRmfEnabled;
22994 wdiAddSTAParam.ucStaType = WDI_STA_ENTRY_BCAST;
22995 wdiAddSTAParam.ucWmmEnabled = staParams->ucWmmEnabled;
22996 wdiAddSTAParam.ucSTAIdx = usBcastStaIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070022997
Jeff Johnson295189b2012-06-20 16:38:30 -070022998 (void)WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
22999}
23000
23001/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023002 @brief NV blob will be divided into fragments of size 4kb and
23003 Sent to HAL
23004
23005 @param pWDICtx: pointer to the WLAN DAL context
23006 pEventData: pointer to the event information structure
23007
Jeff Johnson295189b2012-06-20 16:38:30 -070023008 @see
23009 @return Result of the function call
23010 */
23011
23012WDI_Status WDI_SendNvBlobReq
Jeff Johnsone7245742012-09-05 17:12:55 -070023013(
Jeff Johnson295189b2012-06-20 16:38:30 -070023014 WDI_ControlBlockType* pWDICtx,
23015 WDI_EventInfoType* pEventData
23016)
23017{
23018
23019 tHalNvImgDownloadReqMsg halNvImgDownloadParam;
23020 wpt_uint8* pSendBuffer = NULL;
23021 wpt_uint16 usDataOffset = 0;
23022 wpt_uint16 usSendSize = 0;
23023 wpt_uint16 usCurrentFragmentSize =0;
23024 wpt_uint8* pSrcBuffer = NULL;
23025 WDI_NvDownloadReqParamsType* pwdiNvDownloadReqParams =NULL ;
23026 WDI_NvDownloadRspCb wdiNvDownloadRspCb;
23027
23028 wdiNvDownloadRspCb = (WDI_NvDownloadRspCb)pEventData->pCBfnc;
23029 WDI_ASSERT(NULL != wdiNvDownloadRspCb);
23030 pwdiNvDownloadReqParams = (WDI_NvDownloadReqParamsType*)pEventData->pEventData;
23031
Jeff Johnsone7245742012-09-05 17:12:55 -070023032 /* Sanity Check is done by the caller */
Jeff Johnson295189b2012-06-20 16:38:30 -070023033 pSrcBuffer =(wpt_uint8 *) pwdiNvDownloadReqParams->wdiBlobInfo.pBlobAddress;
23034
23035 /* Update the current Fragment Number */
23036 pWDICtx->wdiNvBlobInfo.usCurrentFragment += 1;
23037
23038 /*Update the HAL REQ structure */
23039 /*HAL maintaining the fragment count as 0,1,2...n where at WDI it is represented as 1,2,3.. n*/
23040 halNvImgDownloadParam.nvImageReqParams.fragNumber =
23041 pWDICtx->wdiNvBlobInfo.usCurrentFragment-1;
23042
23043 /* Divide the NV Image to size of 'FRAGMENT_SIZE' fragments and send it to HAL.
Jeff Johnsone7245742012-09-05 17:12:55 -070023044 If the size of the Image is less than 'FRAGMENT_SIZE' then in one iteration total
Jeff Johnson295189b2012-06-20 16:38:30 -070023045 image will be sent to HAL*/
23046
Jeff Johnsone7245742012-09-05 17:12:55 -070023047 if(pWDICtx->wdiNvBlobInfo.usTotalFragment
Jeff Johnson295189b2012-06-20 16:38:30 -070023048 == pWDICtx->wdiNvBlobInfo.usCurrentFragment)
Jeff Johnsone7245742012-09-05 17:12:55 -070023049 {
Jeff Johnson295189b2012-06-20 16:38:30 -070023050 /* Taking care of boundry condition */
Jeff Johnsone7245742012-09-05 17:12:55 -070023051 if( !(usCurrentFragmentSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070023052 pwdiNvDownloadReqParams->wdiBlobInfo.uBlobSize%FRAGMENT_SIZE ))
23053 usCurrentFragmentSize = FRAGMENT_SIZE;
23054
23055 /*Update the HAL REQ structure */
23056 halNvImgDownloadParam.nvImageReqParams.isLastFragment = 1;
23057 halNvImgDownloadParam.nvImageReqParams.nvImgBufferSize= usCurrentFragmentSize;
23058
23059 }
23060 else
Jeff Johnsone7245742012-09-05 17:12:55 -070023061 {
Jeff Johnson295189b2012-06-20 16:38:30 -070023062 usCurrentFragmentSize = FRAGMENT_SIZE;
23063
23064 /*Update the HAL REQ structure */
23065 halNvImgDownloadParam.nvImageReqParams.isLastFragment =0;
23066 halNvImgDownloadParam.nvImageReqParams.nvImgBufferSize = usCurrentFragmentSize;
23067 }
23068
23069 /*-----------------------------------------------------------------------
23070 Get message buffer
23071 -----------------------------------------------------------------------*/
23072 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,WDI_NV_DOWNLOAD_REQ,
23073 sizeof(halNvImgDownloadParam.nvImageReqParams)+ usCurrentFragmentSize,
23074 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070023075 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070023076 (usDataOffset + sizeof(halNvImgDownloadParam.nvImageReqParams) + usCurrentFragmentSize )))
23077 {
23078 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080023079 "Unable to get send buffer in NV Download req %p %p ",
Jeff Johnson295189b2012-06-20 16:38:30 -070023080 pEventData, pwdiNvDownloadReqParams);
23081 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070023082 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023083 }
23084
23085 /* Copying the Hal NV download REQ structure */
Jeff Johnsone7245742012-09-05 17:12:55 -070023086 wpalMemoryCopy(pSendBuffer + usDataOffset ,
Jeff Johnson295189b2012-06-20 16:38:30 -070023087 &halNvImgDownloadParam.nvImageReqParams ,sizeof(tHalNvImgDownloadReqParams));
23088
23089 /* Appending the NV image fragment */
23090 wpalMemoryCopy(pSendBuffer + usDataOffset + sizeof(tHalNvImgDownloadReqParams),
23091 (void *)(pSrcBuffer + halNvImgDownloadParam.nvImageReqParams.fragNumber * FRAGMENT_SIZE),
23092 usCurrentFragmentSize);
23093
23094 pWDICtx->wdiReqStatusCB = pwdiNvDownloadReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070023095 pWDICtx->pReqStatusUserData = pwdiNvDownloadReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070023096
Jeff Johnsone7245742012-09-05 17:12:55 -070023097 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
23098 wdiNvDownloadRspCb, pEventData->pUserData,
Jeff Johnson295189b2012-06-20 16:38:30 -070023099 WDI_NV_DOWNLOAD_RESP);
23100
23101}
Jeff Johnsone7245742012-09-05 17:12:55 -070023102/*============================================================================
23103 Helper inline functions for
Jeff Johnson295189b2012-06-20 16:38:30 -070023104 ============================================================================*/
23105/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023106 @brief Helper routine used to find a session based on the BSSID
23107 @param pContext: pointer to the WLAN DAL context
23108 @param pDPContext: pointer to the Datapath context
23109
Jeff Johnson295189b2012-06-20 16:38:30 -070023110 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070023111 @return
Jeff Johnson295189b2012-06-20 16:38:30 -070023112*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023113WPT_INLINE void
Jeff Johnson295189b2012-06-20 16:38:30 -070023114WDI_DS_AssignDatapathContext (void *pContext, void *pDPContext)
23115{
23116 WDI_ControlBlockType *pCB = (WDI_ControlBlockType *)pContext;
23117
23118 pCB->pDPContext = pDPContext;
23119 return;
23120}
23121
23122/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023123 @brief Helper routine used to find a session based on the BSSID
23124
23125
23126 @param pContext: pointer to the WLAN DAL context
23127
Jeff Johnson295189b2012-06-20 16:38:30 -070023128 @see
23129 @return pointer to Datapath context
23130*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023131WPT_INLINE void *
Jeff Johnson295189b2012-06-20 16:38:30 -070023132WDI_DS_GetDatapathContext (void *pContext)
23133{
23134 WDI_ControlBlockType *pCB = (WDI_ControlBlockType *)pContext;
23135 return pCB->pDPContext;
23136}
23137/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023138 @brief Helper routine used to find a session based on the BSSID
23139
23140
23141 @param pContext: pointer to the WLAN DAL context
23142 @param pDTDriverContext: pointer to the Transport Driver context
23143
Jeff Johnson295189b2012-06-20 16:38:30 -070023144 @see
23145 @return void
23146*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023147WPT_INLINE void
Jeff Johnson295189b2012-06-20 16:38:30 -070023148WDT_AssignTransportDriverContext (void *pContext, void *pDTDriverContext)
23149{
23150 WDI_ControlBlockType *pCB = (WDI_ControlBlockType *)pContext;
23151
23152 pCB->pDTDriverContext = pDTDriverContext;
Jeff Johnsone7245742012-09-05 17:12:55 -070023153 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070023154}
23155
23156/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023157 @brief Helper routine used to find a session based on the BSSID
23158
23159
23160 @param pWDICtx: pointer to the WLAN DAL context
23161
Jeff Johnson295189b2012-06-20 16:38:30 -070023162 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070023163 @return pointer to datapath context
Jeff Johnson295189b2012-06-20 16:38:30 -070023164*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023165WPT_INLINE void *
Jeff Johnson295189b2012-06-20 16:38:30 -070023166WDT_GetTransportDriverContext (void *pContext)
23167{
23168 WDI_ControlBlockType *pCB = (WDI_ControlBlockType *)pContext;
Jeff Johnsone7245742012-09-05 17:12:55 -070023169 return(pCB->pDTDriverContext);
Jeff Johnson295189b2012-06-20 16:38:30 -070023170}
23171
Jeff Johnsone7245742012-09-05 17:12:55 -070023172/*============================================================================
Jeff Johnson295189b2012-06-20 16:38:30 -070023173 Helper inline converters
23174 ============================================================================*/
23175/*Convert WDI driver type into HAL driver type*/
23176WPT_STATIC WPT_INLINE WDI_Status
23177WDI_HAL_2_WDI_STATUS
23178(
23179 eHalStatus halStatus
23180)
23181{
Jeff Johnsone7245742012-09-05 17:12:55 -070023182 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070023183 the chances of getting inlined*/
23184 switch( halStatus )
23185 {
23186 case eHAL_STATUS_SUCCESS:
23187 case eHAL_STATUS_ADD_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO:
23188 case eHAL_STATUS_DEL_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO:
23189 return WDI_STATUS_SUCCESS;
23190 case eHAL_STATUS_FAILURE:
23191 return WDI_STATUS_E_FAILURE;
23192 case eHAL_STATUS_FAILED_ALLOC:
Jeff Johnsone7245742012-09-05 17:12:55 -070023193 return WDI_STATUS_MEM_FAILURE;
23194 /*The rest of the HAL error codes must be kept hidden from the UMAC as
Jeff Johnson295189b2012-06-20 16:38:30 -070023195 they refer to specific internal modules of our device*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023196 default:
23197 return WDI_STATUS_DEV_INTERNAL_FAILURE;
23198 }
Jeff Johnson295189b2012-06-20 16:38:30 -070023199
Jeff Johnsone7245742012-09-05 17:12:55 -070023200 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023201}/*WDI_HAL_2_WDI_STATUS*/
23202
23203/*Convert WDI request type into HAL request type*/
23204WPT_STATIC WPT_INLINE tHalHostMsgType
23205WDI_2_HAL_REQ_TYPE
23206(
23207 WDI_RequestEnumType wdiReqType
23208)
23209{
Jeff Johnsone7245742012-09-05 17:12:55 -070023210 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070023211 the chances of getting inlined*/
23212 switch( wdiReqType )
Jeff Johnsone7245742012-09-05 17:12:55 -070023213 {
Jeff Johnson295189b2012-06-20 16:38:30 -070023214 case WDI_START_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023215 return WLAN_HAL_START_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023216 case WDI_STOP_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023217 return WLAN_HAL_STOP_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023218 case WDI_INIT_SCAN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023219 return WLAN_HAL_INIT_SCAN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023220 case WDI_START_SCAN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023221 return WLAN_HAL_START_SCAN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023222 case WDI_END_SCAN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023223 return WLAN_HAL_END_SCAN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023224 case WDI_FINISH_SCAN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023225 return WLAN_HAL_FINISH_SCAN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023226 case WDI_JOIN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023227 return WLAN_HAL_JOIN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023228 case WDI_CONFIG_BSS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023229 return WLAN_HAL_CONFIG_BSS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023230 case WDI_DEL_BSS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023231 return WLAN_HAL_DELETE_BSS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023232 case WDI_POST_ASSOC_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023233 return WLAN_HAL_POST_ASSOC_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023234 case WDI_DEL_STA_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023235 return WLAN_HAL_DELETE_STA_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023236 case WDI_SET_BSS_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023237 return WLAN_HAL_SET_BSSKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023238 case WDI_RMV_BSS_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023239 return WLAN_HAL_RMV_BSSKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023240 case WDI_SET_STA_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023241 return WLAN_HAL_SET_STAKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023242 case WDI_RMV_STA_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023243 return WLAN_HAL_RMV_STAKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023244 case WDI_SET_STA_BCAST_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023245 return WLAN_HAL_SET_BCASTKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023246 case WDI_RMV_STA_BCAST_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023247 //Some conflict in the old code - check this: return WLAN_HAL_RMV_BCASTKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023248 return WLAN_HAL_RMV_STAKEY_REQ;
23249 case WDI_ADD_TS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023250 return WLAN_HAL_ADD_TS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023251 case WDI_DEL_TS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023252 return WLAN_HAL_DEL_TS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023253 case WDI_UPD_EDCA_PRMS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023254 return WLAN_HAL_UPD_EDCA_PARAMS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023255 case WDI_ADD_BA_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023256 return WLAN_HAL_ADD_BA_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023257 case WDI_DEL_BA_REQ:
23258 return WLAN_HAL_DEL_BA_REQ;
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -080023259#ifdef FEATURE_WLAN_ESE
Jeff Johnson295189b2012-06-20 16:38:30 -070023260 case WDI_TSM_STATS_REQ:
23261 return WLAN_HAL_TSM_STATS_REQ;
23262#endif
23263 case WDI_CH_SWITCH_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023264 return WLAN_HAL_CH_SWITCH_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023265 case WDI_CONFIG_STA_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023266 return WLAN_HAL_CONFIG_STA_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023267 case WDI_SET_LINK_ST_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023268 return WLAN_HAL_SET_LINK_ST_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023269 case WDI_GET_STATS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023270 return WLAN_HAL_GET_STATS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023271 case WDI_UPDATE_CFG_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023272 return WLAN_HAL_UPDATE_CFG_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023273 case WDI_ADD_BA_SESSION_REQ:
23274 return WLAN_HAL_ADD_BA_SESSION_REQ;
23275 case WDI_TRIGGER_BA_REQ:
23276 return WLAN_HAL_TRIGGER_BA_REQ;
23277 case WDI_UPD_BCON_PRMS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023278 return WLAN_HAL_UPDATE_BEACON_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023279 case WDI_SND_BCON_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023280 return WLAN_HAL_SEND_BEACON_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023281 case WDI_UPD_PROBE_RSP_TEMPLATE_REQ:
23282 return WLAN_HAL_UPDATE_PROBE_RSP_TEMPLATE_REQ;
23283 case WDI_SET_MAX_TX_POWER_REQ:
23284 return WLAN_HAL_SET_MAX_TX_POWER_REQ;
Arif Hussaina5ebce02013-08-09 15:09:58 -070023285 case WDI_SET_MAX_TX_POWER_PER_BAND_REQ:
23286 return WLAN_HAL_SET_MAX_TX_POWER_PER_BAND_REQ;
schang86c22c42013-03-13 18:41:24 -070023287 case WDI_SET_TX_POWER_REQ:
23288 return WLAN_HAL_SET_TX_POWER_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023289 case WDI_P2P_GO_NOTICE_OF_ABSENCE_REQ:
23290 return WLAN_HAL_SET_P2P_GONOA_REQ;
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053023291#ifdef FEATURE_WLAN_TDLS
23292 case WDI_TDLS_LINK_ESTABLISH_REQ:
23293 return WLAN_HAL_TDLS_LINK_ESTABLISHED_REQ;
23294#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070023295 case WDI_ENTER_IMPS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023296 return WLAN_HAL_ENTER_IMPS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023297 case WDI_EXIT_IMPS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023298 return WLAN_HAL_EXIT_IMPS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023299 case WDI_ENTER_BMPS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023300 return WLAN_HAL_ENTER_BMPS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023301 case WDI_EXIT_BMPS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023302 return WLAN_HAL_EXIT_BMPS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023303 case WDI_ENTER_UAPSD_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023304 return WLAN_HAL_ENTER_UAPSD_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023305 case WDI_EXIT_UAPSD_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023306 return WLAN_HAL_EXIT_UAPSD_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023307 case WDI_SET_UAPSD_PARAM_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023308 return WLAN_HAL_SET_UAPSD_AC_PARAMS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023309 case WDI_UPDATE_UAPSD_PARAM_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023310 return WLAN_HAL_UPDATE_UAPSD_PARAM_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023311 case WDI_CONFIGURE_RXP_FILTER_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023312 return WLAN_HAL_CONFIGURE_RXP_FILTER_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023313 case WDI_SET_BEACON_FILTER_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023314 return WLAN_HAL_ADD_BCN_FILTER_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023315 case WDI_REM_BEACON_FILTER_REQ:
23316 return WLAN_HAL_REM_BCN_FILTER_REQ;
23317 case WDI_SET_RSSI_THRESHOLDS_REQ:
23318 return WLAN_HAL_SET_RSSI_THRESH_REQ;
23319 case WDI_HOST_OFFLOAD_REQ:
23320 return WLAN_HAL_HOST_OFFLOAD_REQ;
23321 case WDI_WOWL_ADD_BC_PTRN_REQ:
23322 return WLAN_HAL_ADD_WOWL_BCAST_PTRN;
23323 case WDI_WOWL_DEL_BC_PTRN_REQ:
23324 return WLAN_HAL_DEL_WOWL_BCAST_PTRN;
23325 case WDI_WOWL_ENTER_REQ:
23326 return WLAN_HAL_ENTER_WOWL_REQ;
23327 case WDI_WOWL_EXIT_REQ:
23328 return WLAN_HAL_EXIT_WOWL_REQ;
23329 case WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ:
23330 return WLAN_HAL_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ;
23331 case WDI_NV_DOWNLOAD_REQ:
23332 return WLAN_HAL_DOWNLOAD_NV_REQ;
23333 case WDI_FLUSH_AC_REQ:
23334 return WLAN_HAL_TL_HAL_FLUSH_AC_REQ;
23335 case WDI_BTAMP_EVENT_REQ:
23336 return WLAN_HAL_SIGNAL_BTAMP_EVENT_REQ;
23337#ifdef WLAN_FEATURE_VOWIFI_11R
23338 case WDI_AGGR_ADD_TS_REQ:
23339 return WLAN_HAL_AGGR_ADD_TS_REQ;
23340#endif /* WLAN_FEATURE_VOWIFI_11R */
Jeff Johnson295189b2012-06-20 16:38:30 -070023341 case WDI_FTM_CMD_REQ:
23342 return WLAN_HAL_PROCESS_PTT_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023343 case WDI_ADD_STA_SELF_REQ:
23344 return WLAN_HAL_ADD_STA_SELF_REQ;
23345 case WDI_DEL_STA_SELF_REQ:
23346 return WLAN_HAL_DEL_STA_SELF_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070023347#ifdef FEATURE_OEM_DATA_SUPPORT
23348 case WDI_START_OEM_DATA_REQ:
23349 return WLAN_HAL_START_OEM_DATA_REQ;
23350#endif /* FEATURE_OEM_DATA_SUPPORT */
Jeff Johnson295189b2012-06-20 16:38:30 -070023351 case WDI_HOST_RESUME_REQ:
23352 return WLAN_HAL_HOST_RESUME_REQ;
23353 case WDI_HOST_SUSPEND_IND:
23354 return WLAN_HAL_HOST_SUSPEND_IND;
Madan Mohan Koyyalamudi01cba042013-01-10 21:56:05 -080023355 case WDI_TRAFFIC_STATS_IND:
23356 return WLAN_HAL_CLASS_B_STATS_IND;
Chet Lanctot186b5732013-03-18 10:26:30 -070023357#ifdef WLAN_FEATURE_11W
23358 case WDI_EXCLUDE_UNENCRYPTED_IND:
23359 return WLAN_HAL_EXCLUDE_UNENCRYPTED_IND;
23360#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070023361 case WDI_KEEP_ALIVE_REQ:
23362 return WLAN_HAL_KEEP_ALIVE_REQ;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070023363#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070023364 case WDI_ROAM_SCAN_OFFLOAD_REQ:
23365 return WLAN_ROAM_SCAN_OFFLOAD_REQ;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070023366#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070023367#ifdef FEATURE_WLAN_SCAN_PNO
23368 case WDI_SET_PREF_NETWORK_REQ:
23369 return WLAN_HAL_SET_PREF_NETWORK_REQ;
23370 case WDI_SET_RSSI_FILTER_REQ:
23371 return WLAN_HAL_SET_RSSI_FILTER_REQ;
23372 case WDI_UPDATE_SCAN_PARAMS_REQ:
23373 return WLAN_HAL_UPDATE_SCAN_PARAM_REQ;
23374#endif // FEATURE_WLAN_SCAN_PNO
23375 case WDI_SET_TX_PER_TRACKING_REQ:
23376 return WLAN_HAL_SET_TX_PER_TRACKING_REQ;
23377#ifdef WLAN_FEATURE_PACKET_FILTERING
23378 case WDI_8023_MULTICAST_LIST_REQ:
23379 return WLAN_HAL_8023_MULTICAST_LIST_REQ;
23380 case WDI_RECEIVE_FILTER_SET_FILTER_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023381 return WLAN_HAL_SET_PACKET_FILTER_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023382 case WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ:
23383 return WLAN_HAL_PACKET_FILTER_MATCH_COUNT_REQ;
23384 case WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ:
23385 return WLAN_HAL_CLEAR_PACKET_FILTER_REQ;
23386#endif // WLAN_FEATURE_PACKET_FILTERING
23387 case WDI_HAL_DUMP_CMD_REQ:
23388 return WLAN_HAL_DUMP_COMMAND_REQ;
23389#ifdef WLAN_FEATURE_GTK_OFFLOAD
23390 case WDI_GTK_OFFLOAD_REQ:
23391 return WLAN_HAL_GTK_OFFLOAD_REQ;
23392 case WDI_GTK_OFFLOAD_GETINFO_REQ:
23393 return WLAN_HAL_GTK_OFFLOAD_GETINFO_REQ;
23394#endif /* WLAN_FEATURE_GTK_OFFLOAD */
23395
23396 case WDI_INIT_SCAN_CON_REQ:
23397 return WLAN_HAL_INIT_SCAN_CON_REQ;
23398 case WDI_SET_POWER_PARAMS_REQ:
23399 return WLAN_HAL_SET_POWER_PARAMS_REQ;
23400 case WDI_SET_TM_LEVEL_REQ:
23401 return WLAN_HAL_SET_THERMAL_MITIGATION_REQ;
23402 case WDI_FEATURE_CAPS_EXCHANGE_REQ:
23403 return WLAN_HAL_FEATURE_CAPS_EXCHANGE_REQ;
Mohit Khanna4a70d262012-09-11 16:30:12 -070023404#ifdef WLAN_FEATURE_11AC
23405 case WDI_UPDATE_VHT_OP_MODE_REQ:
23406 return WLAN_HAL_UPDATE_VHT_OP_MODE_REQ;
23407#endif
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -080023408 case WDI_GET_ROAM_RSSI_REQ:
23409 return WLAN_HAL_GET_ROAM_RSSI_REQ;
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +053023410 case WDI_DHCP_START_IND:
23411 return WLAN_HAL_DHCP_START_IND;
23412 case WDI_DHCP_STOP_IND:
23413 return WLAN_HAL_DHCP_STOP_IND;
Leo Chang9056f462013-08-01 19:21:11 -070023414#ifdef FEATURE_WLAN_LPHB
23415 case WDI_LPHB_CFG_REQ:
23416 return WLAN_HAL_LPHB_CFG_REQ;
23417#endif /* FEATURE_WLAN_LPHB */
Yue Mab9c86f42013-08-14 15:59:08 -070023418 case WDI_ADD_PERIODIC_TX_PATTERN_IND:
23419 return WLAN_HAL_ADD_PERIODIC_TX_PTRN_IND;
23420 case WDI_DEL_PERIODIC_TX_PATTERN_IND:
23421 return WLAN_HAL_DEL_PERIODIC_TX_PTRN_IND;
23422
Rajeev79dbe4c2013-10-05 11:03:42 +053023423#ifdef FEATURE_WLAN_BATCH_SCAN
23424 case WDI_SET_BATCH_SCAN_REQ:
23425 return WLAN_HAL_BATCHSCAN_SET_REQ;
23426 case WDI_STOP_BATCH_SCAN_IND:
23427 return WLAN_HAL_BATCHSCAN_STOP_IND;
23428 case WDI_TRIGGER_BATCH_SCAN_RESULT_IND:
23429 return WLAN_HAL_BATCHSCAN_TRIGGER_RESULT_IND;
23430#endif
Chittajit Mitraf5413a42013-10-18 14:20:08 -070023431 case WDI_RATE_UPDATE_IND:
23432 return WLAN_HAL_RATE_UPDATE_IND;
Sandeep Puligillac3450eb2014-03-06 18:10:57 +053023433 case WDI_START_HT40_OBSS_SCAN_IND:
23434 return WLAN_HAL_START_HT40_OBSS_SCAN_IND;
23435 case WDI_STOP_HT40_OBSS_SCAN_IND:
23436 return WLAN_HAL_STOP_HT40_OBSS_SCAN_IND;
Manjunathappa Prakash86f78ca2014-02-10 18:09:15 -080023437 case WDI_UPDATE_CHAN_REQ:
23438 return WLAN_HAL_UPDATE_CHANNEL_LIST_REQ;
Kalikinkar dhara1e83b772014-02-06 12:59:22 -080023439 case WDI_CH_SWITCH_REQ_V1:
23440 return WLAN_HAL_CH_SWITCH_V1_REQ;
c_hpothu92367912014-05-01 15:18:17 +053023441 case WDI_GET_BCN_MISS_RATE_REQ:
23442 return WLAN_HAL_GET_BCN_MISS_RATE_REQ;
Sunil Duttbd736ed2014-05-26 21:19:41 +053023443
23444#ifdef WLAN_FEATURE_LINK_LAYER_STATS
23445 case WDI_LL_STATS_SET_REQ:
23446 return WLAN_HAL_LL_SET_STATS_REQ;
23447 case WDI_LL_STATS_GET_REQ:
23448 return WLAN_HAL_LL_GET_STATS_REQ;
23449 case WDI_LL_STATS_CLEAR_REQ:
23450 return WLAN_HAL_LL_CLEAR_STATS_REQ;
23451#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070023452 default:
Jeff Johnsone7245742012-09-05 17:12:55 -070023453 return WLAN_HAL_MSG_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070023454 }
Jeff Johnsone7245742012-09-05 17:12:55 -070023455
Jeff Johnson295189b2012-06-20 16:38:30 -070023456}/*WDI_2_HAL_REQ_TYPE*/
23457
23458/*Convert WDI response type into HAL response type*/
23459WPT_STATIC WPT_INLINE WDI_ResponseEnumType
23460HAL_2_WDI_RSP_TYPE
23461(
23462 tHalHostMsgType halMsg
23463)
23464{
Jeff Johnsone7245742012-09-05 17:12:55 -070023465 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070023466 the chances of getting inlined*/
23467 switch( halMsg )
23468 {
23469 case WLAN_HAL_START_RSP:
23470 return WDI_START_RESP;
23471 case WLAN_HAL_STOP_RSP:
23472 return WDI_STOP_RESP;
23473 case WLAN_HAL_INIT_SCAN_RSP:
23474 return WDI_INIT_SCAN_RESP;
23475 case WLAN_HAL_START_SCAN_RSP:
23476 return WDI_START_SCAN_RESP;
23477 case WLAN_HAL_END_SCAN_RSP:
23478 return WDI_END_SCAN_RESP;
23479 case WLAN_HAL_FINISH_SCAN_RSP:
23480 return WDI_FINISH_SCAN_RESP;
23481 case WLAN_HAL_CONFIG_STA_RSP:
23482 return WDI_CONFIG_STA_RESP;
23483 case WLAN_HAL_DELETE_STA_RSP:
23484 return WDI_DEL_STA_RESP;
23485 case WLAN_HAL_CONFIG_BSS_RSP:
23486 return WDI_CONFIG_BSS_RESP;
23487 case WLAN_HAL_DELETE_BSS_RSP:
23488 return WDI_DEL_BSS_RESP;
23489 case WLAN_HAL_JOIN_RSP:
23490 return WDI_JOIN_RESP;
23491 case WLAN_HAL_POST_ASSOC_RSP:
23492 return WDI_POST_ASSOC_RESP;
23493 case WLAN_HAL_SET_BSSKEY_RSP:
23494 return WDI_SET_BSS_KEY_RESP;
23495 case WLAN_HAL_SET_STAKEY_RSP:
23496 return WDI_SET_STA_KEY_RESP;
23497 case WLAN_HAL_RMV_BSSKEY_RSP:
23498 return WDI_RMV_BSS_KEY_RESP;
23499 case WLAN_HAL_RMV_STAKEY_RSP:
23500 return WDI_RMV_STA_KEY_RESP;
23501 case WLAN_HAL_SET_BCASTKEY_RSP:
23502 return WDI_SET_STA_BCAST_KEY_RESP;
23503 //Some conflict in the old code - check this: case WLAN_HAL_RMV_BCASTKEY_RSP:
23504 // return WDI_RMV_STA_BCAST_KEY_RESP;
23505 case WLAN_HAL_ADD_TS_RSP:
23506 return WDI_ADD_TS_RESP;
23507 case WLAN_HAL_DEL_TS_RSP:
23508 return WDI_DEL_TS_RESP;
23509 case WLAN_HAL_UPD_EDCA_PARAMS_RSP:
23510 return WDI_UPD_EDCA_PRMS_RESP;
23511 case WLAN_HAL_ADD_BA_RSP:
23512 return WDI_ADD_BA_RESP;
23513 case WLAN_HAL_DEL_BA_RSP:
23514 return WDI_DEL_BA_RESP;
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -080023515#ifdef FEATURE_WLAN_ESE
Jeff Johnson295189b2012-06-20 16:38:30 -070023516 case WLAN_HAL_TSM_STATS_RSP:
23517 return WDI_TSM_STATS_RESP;
23518#endif
23519 case WLAN_HAL_CH_SWITCH_RSP:
23520 return WDI_CH_SWITCH_RESP;
23521 case WLAN_HAL_SET_LINK_ST_RSP:
23522 return WDI_SET_LINK_ST_RESP;
23523 case WLAN_HAL_GET_STATS_RSP:
23524 return WDI_GET_STATS_RESP;
23525 case WLAN_HAL_UPDATE_CFG_RSP:
23526 return WDI_UPDATE_CFG_RESP;
23527 case WLAN_HAL_ADD_BA_SESSION_RSP:
23528 return WDI_ADD_BA_SESSION_RESP;
23529 case WLAN_HAL_TRIGGER_BA_RSP:
23530 return WDI_TRIGGER_BA_RESP;
23531 case WLAN_HAL_UPDATE_BEACON_RSP:
23532 return WDI_UPD_BCON_PRMS_RESP;
23533 case WLAN_HAL_SEND_BEACON_RSP:
23534 return WDI_SND_BCON_RESP;
23535 case WLAN_HAL_UPDATE_PROBE_RSP_TEMPLATE_RSP:
23536 return WDI_UPD_PROBE_RSP_TEMPLATE_RESP;
23537 /*Indications*/
23538 case WLAN_HAL_RSSI_NOTIFICATION_IND:
23539 return WDI_HAL_RSSI_NOTIFICATION_IND;
23540 case WLAN_HAL_MISSED_BEACON_IND:
23541 return WDI_HAL_MISSED_BEACON_IND;
23542 case WLAN_HAL_UNKNOWN_ADDR2_FRAME_RX_IND:
23543 return WDI_HAL_UNKNOWN_ADDR2_FRAME_RX_IND;
23544 case WLAN_HAL_MIC_FAILURE_IND:
23545 return WDI_HAL_MIC_FAILURE_IND;
23546 case WLAN_HAL_FATAL_ERROR_IND:
23547 return WDI_HAL_FATAL_ERROR_IND;
23548 case WLAN_HAL_DELETE_STA_CONTEXT_IND:
23549 return WDI_HAL_DEL_STA_IND;
23550 case WLAN_HAL_COEX_IND:
23551 return WDI_HAL_COEX_IND;
23552 case WLAN_HAL_OTA_TX_COMPL_IND:
23553 return WDI_HAL_TX_COMPLETE_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070023554 case WLAN_HAL_P2P_NOA_ATTR_IND:
23555 return WDI_HAL_P2P_NOA_ATTR_IND;
Viral Modid86bde22012-12-10 13:09:21 -080023556 case WLAN_HAL_P2P_NOA_START_IND:
23557 return WDI_HAL_P2P_NOA_START_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070023558 case WLAN_HAL_TX_PER_HIT_IND:
23559 return WDI_HAL_TX_PER_HIT_IND;
23560 case WLAN_HAL_SET_MAX_TX_POWER_RSP:
23561 return WDI_SET_MAX_TX_POWER_RESP;
Arif Hussaina5ebce02013-08-09 15:09:58 -070023562 case WLAN_HAL_SET_MAX_TX_POWER_PER_BAND_RSP:
23563 return WDI_SET_MAX_TX_POWER_PER_BAND_RSP;
schang86c22c42013-03-13 18:41:24 -070023564 case WLAN_HAL_SET_TX_POWER_RSP:
23565 return WDI_SET_TX_POWER_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070023566 case WLAN_HAL_SET_P2P_GONOA_RSP:
23567 return WDI_P2P_GO_NOTICE_OF_ABSENCE_RESP;
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053023568#ifdef FEATURE_WLAN_TDLS
23569 case WLAN_HAL_TDLS_LINK_ESTABLISHED_RSP:
23570 return WDI_TDLS_LINK_ESTABLISH_REQ_RESP;
23571 case WLAN_HAL_TDLS_IND:
23572 return WDI_HAL_TDLS_IND;
23573#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070023574 case WLAN_HAL_ENTER_IMPS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070023575 return WDI_ENTER_IMPS_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070023576 case WLAN_HAL_EXIT_IMPS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070023577 return WDI_EXIT_IMPS_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070023578 case WLAN_HAL_ENTER_BMPS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070023579 return WDI_ENTER_BMPS_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070023580 case WLAN_HAL_EXIT_BMPS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070023581 return WDI_EXIT_BMPS_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070023582 case WLAN_HAL_ENTER_UAPSD_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070023583 return WDI_ENTER_UAPSD_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070023584 case WLAN_HAL_EXIT_UAPSD_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070023585 return WDI_EXIT_UAPSD_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070023586 case WLAN_HAL_SET_UAPSD_AC_PARAMS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070023587 return WDI_SET_UAPSD_PARAM_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070023588 case WLAN_HAL_UPDATE_UAPSD_PARAM_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070023589 return WDI_UPDATE_UAPSD_PARAM_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070023590 case WLAN_HAL_CONFIGURE_RXP_FILTER_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070023591 return WDI_CONFIGURE_RXP_FILTER_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070023592 case WLAN_HAL_ADD_BCN_FILTER_RSP:
23593 return WDI_SET_BEACON_FILTER_RESP;
23594 case WLAN_HAL_REM_BCN_FILTER_RSP:
23595 return WDI_REM_BEACON_FILTER_RESP;
23596 case WLAN_HAL_SET_RSSI_THRESH_RSP:
23597 return WDI_SET_RSSI_THRESHOLDS_RESP;
23598 case WLAN_HAL_HOST_OFFLOAD_RSP:
23599 return WDI_HOST_OFFLOAD_RESP;
23600 case WLAN_HAL_ADD_WOWL_BCAST_PTRN_RSP:
23601 return WDI_WOWL_ADD_BC_PTRN_RESP;
23602 case WLAN_HAL_DEL_WOWL_BCAST_PTRN_RSP:
23603 return WDI_WOWL_DEL_BC_PTRN_RESP;
23604 case WLAN_HAL_ENTER_WOWL_RSP:
23605 return WDI_WOWL_ENTER_RESP;
23606 case WLAN_HAL_EXIT_WOWL_RSP:
23607 return WDI_WOWL_EXIT_RESP;
23608 case WLAN_HAL_CONFIGURE_APPS_CPU_WAKEUP_STATE_RSP:
23609 return WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_RESP;
23610 case WLAN_HAL_DOWNLOAD_NV_RSP:
23611 return WDI_NV_DOWNLOAD_RESP;
23612 case WLAN_HAL_TL_HAL_FLUSH_AC_RSP:
23613 return WDI_FLUSH_AC_RESP;
23614 case WLAN_HAL_SIGNAL_BTAMP_EVENT_RSP:
23615 return WDI_BTAMP_EVENT_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070023616 case WLAN_HAL_PROCESS_PTT_RSP:
23617 return WDI_FTM_CMD_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070023618 case WLAN_HAL_ADD_STA_SELF_RSP:
23619 return WDI_ADD_STA_SELF_RESP;
23620case WLAN_HAL_DEL_STA_SELF_RSP:
23621 return WDI_DEL_STA_SELF_RESP;
Jeff Johnsone7245742012-09-05 17:12:55 -070023622#ifdef FEATURE_OEM_DATA_SUPPORT
23623 case WLAN_HAL_START_OEM_DATA_RSP:
23624 return WDI_START_OEM_DATA_RESP;
23625#endif /* FEATURE_OEM_DATA_SUPPORT */
Jeff Johnson295189b2012-06-20 16:38:30 -070023626 case WLAN_HAL_HOST_RESUME_RSP:
23627 return WDI_HOST_RESUME_RESP;
23628 case WLAN_HAL_KEEP_ALIVE_RSP:
23629 return WDI_KEEP_ALIVE_RESP;
23630#ifdef FEATURE_WLAN_SCAN_PNO
23631 case WLAN_HAL_SET_PREF_NETWORK_RSP:
23632 return WDI_SET_PREF_NETWORK_RESP;
23633 case WLAN_HAL_SET_RSSI_FILTER_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070023634 return WDI_SET_RSSI_FILTER_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070023635 case WLAN_HAL_UPDATE_SCAN_PARAM_RSP:
23636 return WDI_UPDATE_SCAN_PARAMS_RESP;
23637 case WLAN_HAL_PREF_NETW_FOUND_IND:
23638 return WDI_HAL_PREF_NETWORK_FOUND_IND;
23639#endif // FEATURE_WLAN_SCAN_PNO
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070023640#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070023641 case WLAN_ROAM_SCAN_OFFLOAD_RSP:
23642 return WDI_ROAM_SCAN_OFFLOAD_RESP;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070023643#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070023644 case WLAN_HAL_SET_TX_PER_TRACKING_RSP:
23645 return WDI_SET_TX_PER_TRACKING_RESP;
23646#ifdef WLAN_FEATURE_PACKET_FILTERING
23647 case WLAN_HAL_8023_MULTICAST_LIST_RSP:
23648 return WDI_8023_MULTICAST_LIST_RESP;
23649 case WLAN_HAL_SET_PACKET_FILTER_RSP:
23650 return WDI_RECEIVE_FILTER_SET_FILTER_RESP;
23651 case WLAN_HAL_PACKET_FILTER_MATCH_COUNT_RSP:
23652 return WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_RESP;
23653 case WLAN_HAL_CLEAR_PACKET_FILTER_RSP:
23654 return WDI_RECEIVE_FILTER_CLEAR_FILTER_RESP;
23655#endif // WLAN_FEATURE_PACKET_FILTERING
23656
23657 case WLAN_HAL_DUMP_COMMAND_RSP:
23658 return WDI_HAL_DUMP_CMD_RESP;
23659 case WLAN_HAL_SET_POWER_PARAMS_RSP:
23660 return WDI_SET_POWER_PARAMS_RESP;
23661#ifdef WLAN_FEATURE_VOWIFI_11R
23662 case WLAN_HAL_AGGR_ADD_TS_RSP:
23663 return WDI_AGGR_ADD_TS_RESP;
23664#endif
23665
23666#ifdef WLAN_FEATURE_GTK_OFFLOAD
23667 case WLAN_HAL_GTK_OFFLOAD_RSP:
23668 return WDI_GTK_OFFLOAD_RESP;
23669 case WLAN_HAL_GTK_OFFLOAD_GETINFO_RSP:
23670 return WDI_GTK_OFFLOAD_GETINFO_RESP;
23671#endif /* WLAN_FEATURE_GTK_OFFLOAD */
23672#ifdef WLAN_WAKEUP_EVENTS
23673 case WLAN_HAL_WAKE_REASON_IND:
23674 return WDI_HAL_WAKE_REASON_IND;
23675#endif // WLAN_WAKEUP_EVENTS
23676
23677 case WLAN_HAL_SET_THERMAL_MITIGATION_RSP:
23678 return WDI_SET_TM_LEVEL_RESP;
23679 case WLAN_HAL_FEATURE_CAPS_EXCHANGE_RSP:
23680 return WDI_FEATURE_CAPS_EXCHANGE_RESP;
Mohit Khanna4a70d262012-09-11 16:30:12 -070023681#ifdef WLAN_FEATURE_11AC
23682 case WLAN_HAL_UPDATE_VHT_OP_MODE_RSP:
23683 return WDI_UPDATE_VHT_OP_MODE_RESP;
23684#endif
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -080023685#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_ESE || defined(FEATURE_WLAN_LFR)
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -080023686 case WLAN_HAL_GET_ROAM_RSSI_RSP:
23687 return WDI_GET_ROAM_RSSI_RESP;
23688#endif
Ravi Joshid2ca7c42013-07-23 08:37:49 -070023689
Leo Chang9056f462013-08-01 19:21:11 -070023690#ifdef FEATURE_WLAN_LPHB
23691 case WLAN_HAL_LPHB_IND:
Leo Changd9df8aa2013-09-26 13:32:26 -070023692 return WDI_HAL_LPHB_IND;
Leo Chang9056f462013-08-01 19:21:11 -070023693 case WLAN_HAL_LPHB_CFG_RSP:
23694 return WDI_LPHB_CFG_RESP;
23695#endif /* FEATURE_WLAN_LPHB */
Ravi Joshid2ca7c42013-07-23 08:37:49 -070023696
23697 case WLAN_HAL_IBSS_PEER_INACTIVITY_IND:
23698 return WDI_HAL_IBSS_PEER_INACTIVITY_IND;
Yue Mab9c86f42013-08-14 15:59:08 -070023699 case WLAN_HAL_PERIODIC_TX_PTRN_FW_IND:
23700 return WDI_HAL_PERIODIC_TX_PTRN_FW_IND;
Ravi Joshid2ca7c42013-07-23 08:37:49 -070023701
Rajeev79dbe4c2013-10-05 11:03:42 +053023702#ifdef FEATURE_WLAN_BATCH_SCAN
23703 case WLAN_HAL_BATCHSCAN_SET_RSP:
23704 return WDI_SET_BATCH_SCAN_RESP;
23705 case WLAN_HAL_BATCHSCAN_RESULT_IND:
23706 return WDI_BATCHSCAN_RESULT_IND;
23707#endif // FEATURE_WLAN_BATCH_SCAN
23708
Leo Chang0b0e45a2013-12-15 15:18:55 -080023709#ifdef FEATURE_WLAN_CH_AVOID
23710 case WLAN_HAL_AVOID_FREQ_RANGE_IND:
23711 return WDI_HAL_CH_AVOID_IND;
23712#endif /* FEATURE_WLAN_CH_AVOID */
Manjunathappa Prakash86f78ca2014-02-10 18:09:15 -080023713 case WLAN_HAL_UPDATE_CHANNEL_LIST_RSP:
23714 return WDI_UPDATE_CHAN_RESP;
c_hpothu86041002014-04-14 19:06:51 +053023715 case WLAN_HAL_PRINT_REG_INFO_IND:
23716 return WDI_PRINT_REG_INFO_IND;
Abhishek Singhbe7f93d2014-06-04 10:47:11 +053023717 case WLAN_HAL_CH_SWITCH_V1_RSP:
23718 return WDI_CH_SWITCH_RESP_V1;
c_hpothu92367912014-05-01 15:18:17 +053023719 case WLAN_HAL_GET_BCN_MISS_RATE_RSP:
23720 return WDI_GET_BCN_MISS_RATE_RSP;
Sunil Duttbd736ed2014-05-26 21:19:41 +053023721#ifdef WLAN_FEATURE_LINK_LAYER_STATS
23722 case WLAN_HAL_LL_SET_STATS_RSP:
23723 return WDI_LL_STATS_SET_RSP;
23724 case WLAN_HAL_LL_GET_STATS_RSP:
23725 return WDI_LL_STATS_GET_RSP;
23726 case WLAN_HAL_LL_CLEAR_STATS_RSP:
23727 return WDI_LL_STATS_CLEAR_RSP;
23728 case WLAN_HAL_LL_NOTIFY_STATS:
23729 return WDI_HAL_LL_STATS_RESULTS_IND;
23730#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070023731 default:
Jeff Johnsone7245742012-09-05 17:12:55 -070023732 return eDRIVER_TYPE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070023733 }
23734
23735}/*HAL_2_WDI_RSP_TYPE*/
23736
23737
23738/*Convert WDI driver type into HAL driver type*/
23739WPT_STATIC WPT_INLINE tDriverType
23740WDI_2_HAL_DRV_TYPE
23741(
23742 WDI_DriverType wdiDriverType
23743)
23744{
Jeff Johnsone7245742012-09-05 17:12:55 -070023745 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070023746 the chances of getting inlined*/
23747 switch( wdiDriverType )
23748 {
23749 case WDI_DRIVER_TYPE_PRODUCTION:
23750 return eDRIVER_TYPE_PRODUCTION;
23751 case WDI_DRIVER_TYPE_MFG:
23752 return eDRIVER_TYPE_MFG;
23753 case WDI_DRIVER_TYPE_DVT:
23754 return eDRIVER_TYPE_DVT;
23755 }
23756
Jeff Johnsone7245742012-09-05 17:12:55 -070023757 return eDRIVER_TYPE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070023758}/*WDI_2_HAL_DRV_TYPE*/
23759
23760
23761/*Convert WDI stop reason into HAL stop reason*/
23762WPT_STATIC WPT_INLINE tHalStopType
23763WDI_2_HAL_STOP_REASON
23764(
23765 WDI_StopType wdiDriverType
23766)
23767{
Jeff Johnsone7245742012-09-05 17:12:55 -070023768 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070023769 the chances of getting inlined*/
23770 switch( wdiDriverType )
23771 {
23772 case WDI_STOP_TYPE_SYS_RESET:
23773 return HAL_STOP_TYPE_SYS_RESET;
Yue Mad8cac142013-03-28 11:33:46 -070023774 case WDI_STOP_TYPE_SYS_DEEP_SLEEP:
23775 return HAL_STOP_TYPE_SYS_DEEP_SLEEP;
Jeff Johnson295189b2012-06-20 16:38:30 -070023776 case WDI_STOP_TYPE_RF_KILL:
23777 return HAL_STOP_TYPE_RF_KILL;
23778 }
23779
Jeff Johnsone7245742012-09-05 17:12:55 -070023780 return HAL_STOP_TYPE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070023781}/*WDI_2_HAL_STOP_REASON*/
23782
23783
23784/*Convert WDI scan mode type into HAL scan mode type*/
23785WPT_STATIC WPT_INLINE eHalSysMode
23786WDI_2_HAL_SCAN_MODE
23787(
23788 WDI_ScanMode wdiScanMode
23789)
23790{
Jeff Johnsone7245742012-09-05 17:12:55 -070023791 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070023792 the chances of getting inlined*/
23793 switch( wdiScanMode )
23794 {
23795 case WDI_SCAN_MODE_NORMAL:
23796 return eHAL_SYS_MODE_NORMAL;
23797 case WDI_SCAN_MODE_LEARN:
23798 return eHAL_SYS_MODE_LEARN;
23799 case WDI_SCAN_MODE_SCAN:
23800 return eHAL_SYS_MODE_SCAN;
23801 case WDI_SCAN_MODE_PROMISC:
23802 return eHAL_SYS_MODE_PROMISC;
23803 case WDI_SCAN_MODE_SUSPEND_LINK:
23804 return eHAL_SYS_MODE_SUSPEND_LINK;
Madan Mohan Koyyalamudi9b876782012-10-11 16:22:51 -070023805 case WDI_SCAN_MODE_ROAM_SCAN:
23806 return eHAL_SYS_MODE_ROAM_SCAN;
23807 case WDI_SCAN_MODE_ROAM_SUSPEND_LINK:
23808 return eHAL_SYS_MODE_ROAM_SUSPEND_LINK;
Jeff Johnson295189b2012-06-20 16:38:30 -070023809 }
23810
Jeff Johnsone7245742012-09-05 17:12:55 -070023811 return eHAL_SYS_MODE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070023812}/*WDI_2_HAL_SCAN_MODE*/
23813
23814/*Convert WDI sec ch offset into HAL sec ch offset type*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023815WPT_STATIC WPT_INLINE ePhyChanBondState
Jeff Johnson295189b2012-06-20 16:38:30 -070023816WDI_2_HAL_SEC_CH_OFFSET
23817(
23818 WDI_HTSecondaryChannelOffset wdiSecChOffset
23819)
23820{
Jeff Johnsone7245742012-09-05 17:12:55 -070023821 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070023822 the chances of getting inlined*/
23823 switch( wdiSecChOffset )
23824 {
23825 case WDI_SECONDARY_CHANNEL_OFFSET_NONE:
Jeff Johnsone7245742012-09-05 17:12:55 -070023826 return PHY_SINGLE_CHANNEL_CENTERED;
Jeff Johnson295189b2012-06-20 16:38:30 -070023827 case WDI_SECONDARY_CHANNEL_OFFSET_UP:
Jeff Johnsone7245742012-09-05 17:12:55 -070023828 return PHY_DOUBLE_CHANNEL_LOW_PRIMARY;
Jeff Johnson295189b2012-06-20 16:38:30 -070023829 case WDI_SECONDARY_CHANNEL_OFFSET_DOWN:
Jeff Johnsone7245742012-09-05 17:12:55 -070023830 return PHY_DOUBLE_CHANNEL_HIGH_PRIMARY;
23831#ifdef WLAN_FEATURE_11AC
23832 case WDI_CHANNEL_20MHZ_LOW_40MHZ_CENTERED:
23833 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_CENTERED;
23834 case WDI_CHANNEL_20MHZ_CENTERED_40MHZ_CENTERED:
23835 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_CENTERED;
23836 case WDI_CHANNEL_20MHZ_HIGH_40MHZ_CENTERED:
23837 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_CENTERED;
23838 case WDI_CHANNEL_20MHZ_LOW_40MHZ_LOW:
23839 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_LOW;
23840 case WDI_CHANNEL_20MHZ_HIGH_40MHZ_LOW:
23841 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_LOW;
23842 case WDI_CHANNEL_20MHZ_LOW_40MHZ_HIGH:
23843 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_HIGH;
23844 case WDI_CHANNEL_20MHZ_HIGH_40MHZ_HIGH:
23845 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_HIGH;
23846#endif
23847 default:
23848 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070023849 }
23850
Jeff Johnsone7245742012-09-05 17:12:55 -070023851 return PHY_CHANNEL_BONDING_STATE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070023852}/*WDI_2_HAL_SEC_CH_OFFSET*/
23853
23854/*Convert WDI BSS type into HAL BSS type*/
23855WPT_STATIC WPT_INLINE tSirBssType
23856WDI_2_HAL_BSS_TYPE
23857(
23858 WDI_BssType wdiBSSType
23859)
23860{
Jeff Johnsone7245742012-09-05 17:12:55 -070023861 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070023862 the chances of getting inlined*/
23863 switch( wdiBSSType )
23864 {
23865 case WDI_INFRASTRUCTURE_MODE:
23866 return eSIR_INFRASTRUCTURE_MODE;
23867 case WDI_INFRA_AP_MODE:
23868 return eSIR_INFRA_AP_MODE;
23869 case WDI_IBSS_MODE:
23870 return eSIR_IBSS_MODE;
23871 case WDI_BTAMP_STA_MODE:
23872 return eSIR_BTAMP_STA_MODE;
23873 case WDI_BTAMP_AP_MODE:
Jeff Johnsone7245742012-09-05 17:12:55 -070023874 return eSIR_BTAMP_AP_MODE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023875 case WDI_BSS_AUTO_MODE:
23876 return eSIR_AUTO_MODE;
23877 }
23878
Jeff Johnsone7245742012-09-05 17:12:55 -070023879 return eSIR_DONOT_USE_BSS_TYPE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023880}/*WDI_2_HAL_BSS_TYPE*/
23881
23882/*Convert WDI NW type into HAL NW type*/
23883WPT_STATIC WPT_INLINE tSirNwType
23884WDI_2_HAL_NW_TYPE
23885(
23886 WDI_NwType wdiNWType
23887)
23888{
Jeff Johnsone7245742012-09-05 17:12:55 -070023889 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070023890 the chances of getting inlined*/
23891 switch( wdiNWType )
23892 {
23893 case WDI_11A_NW_TYPE:
23894 return eSIR_11A_NW_TYPE;
23895 case WDI_11B_NW_TYPE:
23896 return eSIR_11B_NW_TYPE;
23897 case WDI_11G_NW_TYPE:
23898 return eSIR_11G_NW_TYPE;
23899 case WDI_11N_NW_TYPE:
23900 return eSIR_11N_NW_TYPE;
23901 }
23902
Jeff Johnsone7245742012-09-05 17:12:55 -070023903 return eSIR_DONOT_USE_NW_TYPE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023904}/*WDI_2_HAL_NW_TYPE*/
23905
23906/*Convert WDI chanel bonding type into HAL cb type*/
23907WPT_STATIC WPT_INLINE ePhyChanBondState
23908WDI_2_HAL_CB_STATE
23909(
23910 WDI_PhyChanBondState wdiCbState
23911)
23912{
Jeff Johnsone7245742012-09-05 17:12:55 -070023913 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070023914 the chances of getting inlined*/
23915 switch ( wdiCbState )
23916 {
23917 case WDI_PHY_SINGLE_CHANNEL_CENTERED:
23918 return PHY_SINGLE_CHANNEL_CENTERED;
23919 case WDI_PHY_DOUBLE_CHANNEL_LOW_PRIMARY:
23920 return PHY_DOUBLE_CHANNEL_LOW_PRIMARY;
23921 case WDI_PHY_DOUBLE_CHANNEL_CENTERED:
23922 return PHY_DOUBLE_CHANNEL_CENTERED;
23923 case WDI_PHY_DOUBLE_CHANNEL_HIGH_PRIMARY:
23924 return PHY_DOUBLE_CHANNEL_HIGH_PRIMARY;
Jeff Johnsone7245742012-09-05 17:12:55 -070023925#ifdef WLAN_FEATURE_11AC
23926 case WDI_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_CENTERED:
23927 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_CENTERED;
23928 case WDI_QUADRUPLE_CHANNEL_20MHZ_CENTERED_40MHZ_CENTERED:
23929 return PHY_QUADRUPLE_CHANNEL_20MHZ_CENTERED_40MHZ_CENTERED;
23930 case WDI_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_CENTERED:
23931 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_CENTERED;
23932 case WDI_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_LOW:
23933 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_LOW;
23934 case WDI_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_LOW:
23935 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_LOW;
23936 case WDI_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_HIGH:
23937 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_HIGH;
23938 case WDI_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_HIGH:
23939 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_HIGH;
23940#endif
23941 case WDI_MAX_CB_STATE:
23942 default:
23943 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070023944 }
Jeff Johnsone7245742012-09-05 17:12:55 -070023945
Jeff Johnson295189b2012-06-20 16:38:30 -070023946 return PHY_CHANNEL_BONDING_STATE_MAX;
23947}/*WDI_2_HAL_CB_STATE*/
23948
23949/*Convert WDI chanel bonding type into HAL cb type*/
23950WPT_STATIC WPT_INLINE tSirMacHTOperatingMode
23951WDI_2_HAL_HT_OPER_MODE
23952(
23953 WDI_HTOperatingMode wdiHTOperMode
23954)
23955{
Jeff Johnsone7245742012-09-05 17:12:55 -070023956 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070023957 the chances of getting inlined*/
23958 switch ( wdiHTOperMode )
23959 {
23960 case WDI_HT_OP_MODE_PURE:
23961 return eSIR_HT_OP_MODE_PURE;
23962 case WDI_HT_OP_MODE_OVERLAP_LEGACY:
23963 return eSIR_HT_OP_MODE_OVERLAP_LEGACY;
23964 case WDI_HT_OP_MODE_NO_LEGACY_20MHZ_HT:
23965 return eSIR_HT_OP_MODE_NO_LEGACY_20MHZ_HT;
23966 case WDI_HT_OP_MODE_MIXED:
23967 return eSIR_HT_OP_MODE_MIXED;
23968 }
Jeff Johnsone7245742012-09-05 17:12:55 -070023969
Jeff Johnson295189b2012-06-20 16:38:30 -070023970 return eSIR_HT_OP_MODE_MAX;
23971}/*WDI_2_HAL_HT_OPER_MODE*/
23972
23973/*Convert WDI mimo PS type into HAL mimo PS type*/
23974WPT_STATIC WPT_INLINE tSirMacHTMIMOPowerSaveState
23975WDI_2_HAL_MIMO_PS
23976(
23977 WDI_HTMIMOPowerSaveState wdiHTOperMode
23978)
23979{
Jeff Johnsone7245742012-09-05 17:12:55 -070023980 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070023981 the chances of getting inlined*/
23982 switch ( wdiHTOperMode )
23983 {
23984 case WDI_HT_MIMO_PS_STATIC:
23985 return eSIR_HT_MIMO_PS_STATIC;
23986 case WDI_HT_MIMO_PS_DYNAMIC:
23987 return eSIR_HT_MIMO_PS_DYNAMIC;
23988 case WDI_HT_MIMO_PS_NA:
23989 return eSIR_HT_MIMO_PS_NA;
23990 case WDI_HT_MIMO_PS_NO_LIMIT:
23991 return eSIR_HT_MIMO_PS_NO_LIMIT;
23992 }
Jeff Johnsone7245742012-09-05 17:12:55 -070023993
Jeff Johnson295189b2012-06-20 16:38:30 -070023994 return eSIR_HT_MIMO_PS_MAX;
23995}/*WDI_2_HAL_MIMO_PS*/
23996
23997/*Convert WDI ENC type into HAL ENC type*/
23998WPT_STATIC WPT_INLINE tAniEdType
23999WDI_2_HAL_ENC_TYPE
24000(
24001 WDI_EncryptType wdiEncType
24002)
24003{
Jeff Johnsone7245742012-09-05 17:12:55 -070024004 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070024005 the chances of getting inlined*/
24006 switch ( wdiEncType )
24007 {
24008 case WDI_ENCR_NONE:
24009 return eSIR_ED_NONE;
24010
24011 case WDI_ENCR_WEP40:
24012 return eSIR_ED_WEP40;
24013
24014 case WDI_ENCR_WEP104:
24015 return eSIR_ED_WEP104;
24016
24017 case WDI_ENCR_TKIP:
24018 return eSIR_ED_TKIP;
24019
24020 case WDI_ENCR_CCMP:
24021 return eSIR_ED_CCMP;
24022
24023 case WDI_ENCR_AES_128_CMAC:
24024 return eSIR_ED_AES_128_CMAC;
24025#if defined(FEATURE_WLAN_WAPI)
24026 case WDI_ENCR_WPI:
24027 return eSIR_ED_WPI;
24028#endif
24029 default:
24030 return eSIR_ED_NOT_IMPLEMENTED;
24031 }
24032
24033}/*WDI_2_HAL_ENC_TYPE*/
24034
24035/*Convert WDI WEP type into HAL WEP type*/
24036WPT_STATIC WPT_INLINE tAniWepType
24037WDI_2_HAL_WEP_TYPE
24038(
24039 WDI_WepType wdiWEPType
24040)
24041{
Jeff Johnsone7245742012-09-05 17:12:55 -070024042 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070024043 the chances of getting inlined*/
24044 switch ( wdiWEPType )
24045 {
24046 case WDI_WEP_STATIC:
24047 return eSIR_WEP_STATIC;
24048
24049 case WDI_WEP_DYNAMIC:
24050 return eSIR_WEP_DYNAMIC;
24051 }
Jeff Johnsone7245742012-09-05 17:12:55 -070024052
Jeff Johnson295189b2012-06-20 16:38:30 -070024053 return eSIR_WEP_MAX;
24054}/*WDI_2_HAL_WEP_TYPE*/
24055
24056WPT_STATIC WPT_INLINE tSirLinkState
24057WDI_2_HAL_LINK_STATE
24058(
24059 WDI_LinkStateType wdiLinkState
24060)
24061{
Jeff Johnsone7245742012-09-05 17:12:55 -070024062 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070024063 the chances of getting inlined*/
24064 switch ( wdiLinkState )
24065 {
24066 case WDI_LINK_IDLE_STATE:
24067 return eSIR_LINK_IDLE_STATE;
24068
24069 case WDI_LINK_PREASSOC_STATE:
24070 return eSIR_LINK_PREASSOC_STATE;
24071
24072 case WDI_LINK_POSTASSOC_STATE:
24073 return eSIR_LINK_POSTASSOC_STATE;
24074
24075 case WDI_LINK_AP_STATE:
24076 return eSIR_LINK_AP_STATE;
24077
24078 case WDI_LINK_IBSS_STATE:
24079 return eSIR_LINK_IBSS_STATE;
24080
24081 case WDI_LINK_BTAMP_PREASSOC_STATE:
24082 return eSIR_LINK_BTAMP_PREASSOC_STATE;
24083
24084 case WDI_LINK_BTAMP_POSTASSOC_STATE:
24085 return eSIR_LINK_BTAMP_POSTASSOC_STATE;
24086
24087 case WDI_LINK_BTAMP_AP_STATE:
24088 return eSIR_LINK_BTAMP_AP_STATE;
24089
24090 case WDI_LINK_BTAMP_STA_STATE:
24091 return eSIR_LINK_BTAMP_STA_STATE;
24092
24093 case WDI_LINK_LEARN_STATE:
24094 return eSIR_LINK_LEARN_STATE;
24095
24096 case WDI_LINK_SCAN_STATE:
24097 return eSIR_LINK_SCAN_STATE;
24098
24099 case WDI_LINK_FINISH_SCAN_STATE:
24100 return eSIR_LINK_FINISH_SCAN_STATE;
24101
24102 case WDI_LINK_INIT_CAL_STATE:
24103 return eSIR_LINK_INIT_CAL_STATE;
24104
24105 case WDI_LINK_FINISH_CAL_STATE:
24106 return eSIR_LINK_FINISH_CAL_STATE;
24107
Jeff Johnson295189b2012-06-20 16:38:30 -070024108 case WDI_LINK_LISTEN_STATE:
24109 return eSIR_LINK_LISTEN_STATE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024110
Gopichand Nakkala924e4552013-05-08 19:18:14 +053024111 case WDI_LINK_SEND_ACTION_STATE:
24112 return eSIR_LINK_SEND_ACTION_STATE;
24113
Jeff Johnson295189b2012-06-20 16:38:30 -070024114 default:
24115 return eSIR_LINK_MAX;
Jeff Johnsone7245742012-09-05 17:12:55 -070024116 }
Jeff Johnson295189b2012-06-20 16:38:30 -070024117}
24118
Jeff Johnsone7245742012-09-05 17:12:55 -070024119/*Translate a STA Context from WDI into HAL*/
24120WPT_STATIC WPT_INLINE
Jeff Johnson295189b2012-06-20 16:38:30 -070024121void
24122WDI_CopyWDIStaCtxToHALStaCtx
Jeff Johnsone7245742012-09-05 17:12:55 -070024123(
Jeff Johnson295189b2012-06-20 16:38:30 -070024124 tConfigStaParams* phalConfigSta,
24125 WDI_ConfigStaReqInfoType* pwdiConfigSta
24126)
24127{
24128 wpt_uint8 i;
Jeff Johnsone7245742012-09-05 17:12:55 -070024129#ifdef WLAN_FEATURE_11AC
24130 /* Get the Version 1 Handler */
24131 tConfigStaParams_V1* phalConfigSta_V1 = NULL;
24132 if (WDI_getFwWlanFeatCaps(DOT11AC))
24133 {
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070024134 phalConfigSta_V1 = (tConfigStaParams_V1*)phalConfigSta;
Jeff Johnsone7245742012-09-05 17:12:55 -070024135 }
24136#endif
24137 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070024138 the chances of getting inlined*/
24139
Jeff Johnsone7245742012-09-05 17:12:55 -070024140 wpalMemoryCopy(phalConfigSta->bssId,
24141 pwdiConfigSta->macBSSID, WDI_MAC_ADDR_LEN);
24142
24143 wpalMemoryCopy(phalConfigSta->staMac,
24144 pwdiConfigSta->macSTA, WDI_MAC_ADDR_LEN);
Jeff Johnson295189b2012-06-20 16:38:30 -070024145
24146 phalConfigSta->assocId = pwdiConfigSta->usAssocId;
24147 phalConfigSta->staType = pwdiConfigSta->wdiSTAType;
24148 phalConfigSta->shortPreambleSupported = pwdiConfigSta->ucShortPreambleSupported;
24149 phalConfigSta->listenInterval = pwdiConfigSta->usListenInterval;
24150 phalConfigSta->wmmEnabled = pwdiConfigSta->ucWMMEnabled;
24151 phalConfigSta->htCapable = pwdiConfigSta->ucHTCapable;
24152 phalConfigSta->txChannelWidthSet = pwdiConfigSta->ucTXChannelWidthSet;
24153 phalConfigSta->rifsMode = pwdiConfigSta->ucRIFSMode;
24154 phalConfigSta->lsigTxopProtection = pwdiConfigSta->ucLSIGTxopProtection;
24155 phalConfigSta->maxAmpduSize = pwdiConfigSta->ucMaxAmpduSize;
24156 phalConfigSta->maxAmpduDensity = pwdiConfigSta->ucMaxAmpduDensity;
24157 phalConfigSta->maxAmsduSize = pwdiConfigSta->ucMaxAmsduSize;
24158 phalConfigSta->fShortGI40Mhz = pwdiConfigSta->ucShortGI40Mhz;
24159 phalConfigSta->fShortGI20Mhz = pwdiConfigSta->ucShortGI20Mhz;
24160 phalConfigSta->rmfEnabled = pwdiConfigSta->ucRMFEnabled;
24161 phalConfigSta->action = pwdiConfigSta->wdiAction;
24162 phalConfigSta->uAPSD = pwdiConfigSta->ucAPSD;
24163 phalConfigSta->maxSPLen = pwdiConfigSta->ucMaxSPLen;
24164 phalConfigSta->greenFieldCapable = pwdiConfigSta->ucGreenFieldCapable;
24165 phalConfigSta->delayedBASupport = pwdiConfigSta->ucDelayedBASupport;
24166 phalConfigSta->us32MaxAmpduDuration = pwdiConfigSta->us32MaxAmpduDuratio;
24167 phalConfigSta->fDsssCckMode40Mhz = pwdiConfigSta->ucDsssCckMode40Mhz;
24168 phalConfigSta->encryptType = pwdiConfigSta->ucEncryptType;
Jeff Johnsone7245742012-09-05 17:12:55 -070024169
Jeff Johnson295189b2012-06-20 16:38:30 -070024170 phalConfigSta->mimoPS = WDI_2_HAL_MIMO_PS(pwdiConfigSta->wdiMIMOPS);
24171
Jeff Johnsone7245742012-09-05 17:12:55 -070024172 phalConfigSta->supportedRates.opRateMode =
Jeff Johnson295189b2012-06-20 16:38:30 -070024173 pwdiConfigSta->wdiSupportedRates.opRateMode;
24174 for(i = 0; i < SIR_NUM_11B_RATES; i ++)
24175 {
Jeff Johnsone7245742012-09-05 17:12:55 -070024176 phalConfigSta->supportedRates.llbRates[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -070024177 pwdiConfigSta->wdiSupportedRates.llbRates[i];
24178 }
24179 for(i = 0; i < SIR_NUM_11A_RATES; i ++)
24180 {
Jeff Johnsone7245742012-09-05 17:12:55 -070024181 phalConfigSta->supportedRates.llaRates[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -070024182 pwdiConfigSta->wdiSupportedRates.llaRates[i];
24183 }
24184 for(i = 0; i < SIR_NUM_POLARIS_RATES; i ++)
24185 {
24186 phalConfigSta->supportedRates.aniLegacyRates[i] =
24187 pwdiConfigSta->wdiSupportedRates.aLegacyRates[i];
24188 }
Jeff Johnsone7245742012-09-05 17:12:55 -070024189 phalConfigSta->supportedRates.aniEnhancedRateBitmap =
Jeff Johnson295189b2012-06-20 16:38:30 -070024190 pwdiConfigSta->wdiSupportedRates.uEnhancedRateBitmap;
24191 for(i = 0; i < SIR_MAC_MAX_SUPPORTED_MCS_SET; i ++)
24192 {
Jeff Johnsone7245742012-09-05 17:12:55 -070024193 phalConfigSta->supportedRates.supportedMCSSet[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -070024194 pwdiConfigSta->wdiSupportedRates.aSupportedMCSSet[i];
24195 }
24196 phalConfigSta->supportedRates.rxHighestDataRate =
24197 pwdiConfigSta->wdiSupportedRates.aRxHighestDataRate;
24198
Jeff Johnsone7245742012-09-05 17:12:55 -070024199#ifdef WLAN_FEATURE_11AC
24200 if(phalConfigSta_V1 != NULL)
24201 {
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070024202 phalConfigSta_V1->supportedRates.vhtRxMCSMap = pwdiConfigSta->wdiSupportedRates.vhtRxMCSMap;
24203 phalConfigSta_V1->supportedRates.vhtRxHighestDataRate = pwdiConfigSta->wdiSupportedRates.vhtRxHighestDataRate;
24204 phalConfigSta_V1->supportedRates.vhtTxMCSMap = pwdiConfigSta->wdiSupportedRates.vhtTxMCSMap;
24205 phalConfigSta_V1->supportedRates.vhtTxHighestDataRate = pwdiConfigSta->wdiSupportedRates.vhtTxHighestDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070024206 }
24207#endif
24208
Jeff Johnson295189b2012-06-20 16:38:30 -070024209 phalConfigSta->p2pCapableSta = pwdiConfigSta->ucP2pCapableSta ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024210
Jeff Johnsone7245742012-09-05 17:12:55 -070024211#ifdef WLAN_FEATURE_11AC
24212 if(phalConfigSta_V1 != NULL)
24213 {
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070024214 phalConfigSta_V1->vhtCapable = pwdiConfigSta->ucVhtCapableSta;
24215 phalConfigSta_V1->vhtTxChannelWidthSet = pwdiConfigSta->ucVhtTxChannelWidthSet;
Shailender Karmuchi08f87c22013-01-17 12:51:24 -080024216 phalConfigSta_V1->vhtTxBFEnabled = pwdiConfigSta->ucVhtTxBFEnabled;
Gopichand Nakkalab2d2c312013-01-04 11:41:02 -080024217 phalConfigSta_V1->htLdpcEnabled = pwdiConfigSta->ucHtLdpcEnabled;
24218 phalConfigSta_V1->vhtLdpcEnabled = pwdiConfigSta->ucVhtLdpcEnabled;
24219
Jeff Johnsone7245742012-09-05 17:12:55 -070024220 }
24221#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070024222}/*WDI_CopyWDIStaCtxToHALStaCtx*/;
Jeff Johnsone7245742012-09-05 17:12:55 -070024223
24224/*Translate a Rate set info from WDI into HAL*/
24225WPT_STATIC WPT_INLINE void
Jeff Johnson295189b2012-06-20 16:38:30 -070024226WDI_CopyWDIRateSetToHALRateSet
Jeff Johnsone7245742012-09-05 17:12:55 -070024227(
Jeff Johnson295189b2012-06-20 16:38:30 -070024228 tSirMacRateSet* pHalRateSet,
24229 WDI_RateSet* pwdiRateSet
24230)
24231{
Jeff Johnsone7245742012-09-05 17:12:55 -070024232 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070024233 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
24234
24235 pHalRateSet->numRates = ( pwdiRateSet->ucNumRates <= SIR_MAC_RATESET_EID_MAX )?
24236 pwdiRateSet->ucNumRates:SIR_MAC_RATESET_EID_MAX;
24237
24238 for ( i = 0; i < pHalRateSet->numRates; i++ )
24239 {
24240 pHalRateSet->rate[i] = pwdiRateSet->aRates[i];
24241 }
Jeff Johnsone7245742012-09-05 17:12:55 -070024242
Jeff Johnson295189b2012-06-20 16:38:30 -070024243}/*WDI_CopyWDIRateSetToHALRateSet*/
24244
24245
24246/*Translate an EDCA Parameter Record from WDI into HAL*/
24247WPT_STATIC WPT_INLINE void
24248WDI_CopyWDIEDCAParamsToHALEDCAParams
Jeff Johnsone7245742012-09-05 17:12:55 -070024249(
Jeff Johnson295189b2012-06-20 16:38:30 -070024250 tSirMacEdcaParamRecord* phalEdcaParam,
24251 WDI_EdcaParamRecord* pWDIEdcaParam
24252)
24253{
Jeff Johnsone7245742012-09-05 17:12:55 -070024254 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070024255 the chances of getting inlined*/
24256
24257 phalEdcaParam->aci.rsvd = pWDIEdcaParam->wdiACI.rsvd;
24258 phalEdcaParam->aci.aci = pWDIEdcaParam->wdiACI.aci;
24259 phalEdcaParam->aci.acm = pWDIEdcaParam->wdiACI.acm;
24260 phalEdcaParam->aci.aifsn = pWDIEdcaParam->wdiACI.aifsn;
24261
24262 phalEdcaParam->cw.max = pWDIEdcaParam->wdiCW.max;
24263 phalEdcaParam->cw.min = pWDIEdcaParam->wdiCW.min;
24264 phalEdcaParam->txoplimit = pWDIEdcaParam->usTXOPLimit;
24265}/*WDI_CopyWDIEDCAParamsToHALEDCAParams*/
24266
24267
24268/*Copy a management frame header from WDI fmt into HAL fmt*/
24269WPT_STATIC WPT_INLINE void
24270WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr
24271(
24272 tSirMacMgmtHdr* pmacMgmtHdr,
24273 WDI_MacMgmtHdr* pwdiMacMgmtHdr
24274)
24275{
24276 pmacMgmtHdr->fc.protVer = pwdiMacMgmtHdr->fc.protVer;
24277 pmacMgmtHdr->fc.type = pwdiMacMgmtHdr->fc.type;
24278 pmacMgmtHdr->fc.subType = pwdiMacMgmtHdr->fc.subType;
24279 pmacMgmtHdr->fc.toDS = pwdiMacMgmtHdr->fc.toDS;
24280 pmacMgmtHdr->fc.fromDS = pwdiMacMgmtHdr->fc.fromDS;
24281 pmacMgmtHdr->fc.moreFrag = pwdiMacMgmtHdr->fc.moreFrag;
24282 pmacMgmtHdr->fc.retry = pwdiMacMgmtHdr->fc.retry;
24283 pmacMgmtHdr->fc.powerMgmt = pwdiMacMgmtHdr->fc.powerMgmt;
24284 pmacMgmtHdr->fc.moreData = pwdiMacMgmtHdr->fc.moreData;
24285 pmacMgmtHdr->fc.wep = pwdiMacMgmtHdr->fc.wep;
24286 pmacMgmtHdr->fc.order = pwdiMacMgmtHdr->fc.order;
24287
24288 pmacMgmtHdr->durationLo = pwdiMacMgmtHdr->durationLo;
24289 pmacMgmtHdr->durationHi = pwdiMacMgmtHdr->durationHi;
24290
Jeff Johnsone7245742012-09-05 17:12:55 -070024291 wpalMemoryCopy(pmacMgmtHdr->da,
Jeff Johnson295189b2012-06-20 16:38:30 -070024292 pwdiMacMgmtHdr->da, 6);
Jeff Johnsone7245742012-09-05 17:12:55 -070024293 wpalMemoryCopy(pmacMgmtHdr->sa,
Jeff Johnson295189b2012-06-20 16:38:30 -070024294 pwdiMacMgmtHdr->sa, 6);
Jeff Johnsone7245742012-09-05 17:12:55 -070024295 wpalMemoryCopy(pmacMgmtHdr->bssId,
Jeff Johnson295189b2012-06-20 16:38:30 -070024296 pwdiMacMgmtHdr->bssId, 6);
24297
24298 pmacMgmtHdr->seqControl.fragNum = pwdiMacMgmtHdr->seqControl.fragNum;
24299 pmacMgmtHdr->seqControl.seqNumLo = pwdiMacMgmtHdr->seqControl.seqNumLo;
24300 pmacMgmtHdr->seqControl.seqNumHi = pwdiMacMgmtHdr->seqControl.seqNumHi;
24301
24302}/*WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr*/
24303
24304
24305/*Copy config bss parameters from WDI fmt into HAL fmt*/
24306WPT_STATIC WPT_INLINE void
24307WDI_CopyWDIConfigBSSToHALConfigBSS
24308(
24309 tConfigBssParams* phalConfigBSS,
24310 WDI_ConfigBSSReqInfoType* pwdiConfigBSS
24311)
24312{
24313
24314 wpt_uint8 keyIndex = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070024315#ifdef WLAN_FEATURE_11AC
24316 /* Get the Version 1 Handler */
24317 tConfigBssParams_V1* phalConfigBSS_V1 = NULL;
24318 if (WDI_getFwWlanFeatCaps(DOT11AC))
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070024319 phalConfigBSS_V1 = (tConfigBssParams_V1*)phalConfigBSS;
Jeff Johnsone7245742012-09-05 17:12:55 -070024320#endif
24321
Jeff Johnson295189b2012-06-20 16:38:30 -070024322 wpalMemoryCopy( phalConfigBSS->bssId,
24323 pwdiConfigBSS->macBSSID,
24324 WDI_MAC_ADDR_LEN);
24325
24326#ifdef HAL_SELF_STA_PER_BSS
24327 wpalMemoryCopy( phalConfigBSS->selfMacAddr,
24328 pwdiConfigBSS->macSelfAddr,
24329 WDI_MAC_ADDR_LEN);
24330#endif
24331
24332 phalConfigBSS->bssType = WDI_2_HAL_BSS_TYPE(pwdiConfigBSS->wdiBSSType);
24333
24334 phalConfigBSS->operMode = pwdiConfigBSS->ucOperMode;
24335 phalConfigBSS->nwType = WDI_2_HAL_NW_TYPE(pwdiConfigBSS->wdiNWType);
24336
Jeff Johnsone7245742012-09-05 17:12:55 -070024337 phalConfigBSS->shortSlotTimeSupported =
Jeff Johnson295189b2012-06-20 16:38:30 -070024338 pwdiConfigBSS->ucShortSlotTimeSupported;
24339 phalConfigBSS->llaCoexist = pwdiConfigBSS->ucllaCoexist;
24340 phalConfigBSS->llbCoexist = pwdiConfigBSS->ucllbCoexist;
24341 phalConfigBSS->llgCoexist = pwdiConfigBSS->ucllgCoexist;
24342 phalConfigBSS->ht20Coexist = pwdiConfigBSS->ucHT20Coexist;
24343 phalConfigBSS->llnNonGFCoexist = pwdiConfigBSS->ucllnNonGFCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070024344 phalConfigBSS->fLsigTXOPProtectionFullSupport =
Jeff Johnson295189b2012-06-20 16:38:30 -070024345 pwdiConfigBSS->ucTXOPProtectionFullSupport;
24346 phalConfigBSS->fRIFSMode = pwdiConfigBSS->ucRIFSMode;
24347 phalConfigBSS->beaconInterval = pwdiConfigBSS->usBeaconInterval;
24348 phalConfigBSS->dtimPeriod = pwdiConfigBSS->ucDTIMPeriod;
24349 phalConfigBSS->txChannelWidthSet = pwdiConfigBSS->ucTXChannelWidthSet;
24350 phalConfigBSS->currentOperChannel = pwdiConfigBSS->ucCurrentOperChannel;
24351 phalConfigBSS->currentExtChannel = pwdiConfigBSS->ucCurrentExtChannel;
24352 phalConfigBSS->action = pwdiConfigBSS->wdiAction;
24353 phalConfigBSS->htCapable = pwdiConfigBSS->ucHTCapable;
24354 phalConfigBSS->obssProtEnabled = pwdiConfigBSS->ucObssProtEnabled;
24355 phalConfigBSS->rmfEnabled = pwdiConfigBSS->ucRMFEnabled;
24356
Jeff Johnsone7245742012-09-05 17:12:55 -070024357 phalConfigBSS->htOperMode =
24358 WDI_2_HAL_HT_OPER_MODE(pwdiConfigBSS->wdiHTOperMod);
Jeff Johnson295189b2012-06-20 16:38:30 -070024359
24360 phalConfigBSS->dualCTSProtection = pwdiConfigBSS->ucDualCTSProtection;
24361 phalConfigBSS->ucMaxProbeRespRetryLimit = pwdiConfigBSS->ucMaxProbeRespRetryLimit;
24362 phalConfigBSS->bHiddenSSIDEn = pwdiConfigBSS->bHiddenSSIDEn;
24363 phalConfigBSS->bProxyProbeRespEn = pwdiConfigBSS->bProxyProbeRespEn;
24364
24365#ifdef WLAN_FEATURE_VOWIFI
24366 phalConfigBSS->maxTxPower = pwdiConfigBSS->cMaxTxPower;
24367#endif
24368
24369 /*! Used 32 as magic number because that is how the ssid is declared inside the
24370 hal header - hal needs a macro for it */
Jeff Johnsone7245742012-09-05 17:12:55 -070024371 phalConfigBSS->ssId.length =
Jeff Johnson295189b2012-06-20 16:38:30 -070024372 (pwdiConfigBSS->wdiSSID.ucLength <= 32)?
24373 pwdiConfigBSS->wdiSSID.ucLength : 32;
24374 wpalMemoryCopy(phalConfigBSS->ssId.ssId,
Jeff Johnsone7245742012-09-05 17:12:55 -070024375 pwdiConfigBSS->wdiSSID.sSSID,
24376 phalConfigBSS->ssId.length);
Jeff Johnson295189b2012-06-20 16:38:30 -070024377
24378 WDI_CopyWDIStaCtxToHALStaCtx( &phalConfigBSS->staContext,
24379 &pwdiConfigBSS->wdiSTAContext);
Jeff Johnsone7245742012-09-05 17:12:55 -070024380
Jeff Johnson295189b2012-06-20 16:38:30 -070024381 WDI_CopyWDIRateSetToHALRateSet( &phalConfigBSS->rateSet,
24382 &pwdiConfigBSS->wdiRateSet);
24383
24384 phalConfigBSS->edcaParamsValid = pwdiConfigBSS->ucEDCAParamsValid;
24385
24386 if(phalConfigBSS->edcaParamsValid)
24387 {
24388 WDI_CopyWDIEDCAParamsToHALEDCAParams( &phalConfigBSS->acbe,
24389 &pwdiConfigBSS->wdiBEEDCAParams);
24390 WDI_CopyWDIEDCAParamsToHALEDCAParams( &phalConfigBSS->acbk,
24391 &pwdiConfigBSS->wdiBKEDCAParams);
24392 WDI_CopyWDIEDCAParamsToHALEDCAParams( &phalConfigBSS->acvi,
24393 &pwdiConfigBSS->wdiVIEDCAParams);
24394 WDI_CopyWDIEDCAParamsToHALEDCAParams( &phalConfigBSS->acvo,
24395 &pwdiConfigBSS->wdiVOEDCAParams);
24396 }
24397
Jeff Johnsone7245742012-09-05 17:12:55 -070024398 phalConfigBSS->halPersona = pwdiConfigBSS->ucPersona;
Jeff Johnson295189b2012-06-20 16:38:30 -070024399
24400 phalConfigBSS->bSpectrumMgtEnable = pwdiConfigBSS->bSpectrumMgtEn;
24401
24402#ifdef WLAN_FEATURE_VOWIFI_11R
24403
Jeff Johnsone7245742012-09-05 17:12:55 -070024404 phalConfigBSS->extSetStaKeyParamValid =
Jeff Johnson295189b2012-06-20 16:38:30 -070024405 pwdiConfigBSS->bExtSetStaKeyParamValid;
Jeff Johnsone7245742012-09-05 17:12:55 -070024406
Jeff Johnson295189b2012-06-20 16:38:30 -070024407 if( phalConfigBSS->extSetStaKeyParamValid )
24408 {
24409 /*-----------------------------------------------------------------------
24410 Copy the STA Key parameters into the HAL message
24411 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024412 phalConfigBSS->extSetStaKeyParam.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -070024413 WDI_2_HAL_ENC_TYPE (pwdiConfigBSS->wdiExtSetKeyParam.wdiEncType);
24414
Jeff Johnsone7245742012-09-05 17:12:55 -070024415 phalConfigBSS->extSetStaKeyParam.wepType =
Jeff Johnson295189b2012-06-20 16:38:30 -070024416 WDI_2_HAL_WEP_TYPE (pwdiConfigBSS->wdiExtSetKeyParam.wdiWEPType );
24417
24418 phalConfigBSS->extSetStaKeyParam.staIdx = pwdiConfigBSS->wdiExtSetKeyParam.ucSTAIdx;
24419
24420 phalConfigBSS->extSetStaKeyParam.defWEPIdx = pwdiConfigBSS->wdiExtSetKeyParam.ucDefWEPIdx;
24421
24422 phalConfigBSS->extSetStaKeyParam.singleTidRc = pwdiConfigBSS->wdiExtSetKeyParam.ucSingleTidRc;
24423
Jeff Johnson295189b2012-06-20 16:38:30 -070024424 for(keyIndex = 0; keyIndex < pwdiConfigBSS->wdiExtSetKeyParam.ucNumKeys ;
24425 keyIndex++)
24426 {
Jeff Johnsone7245742012-09-05 17:12:55 -070024427 phalConfigBSS->extSetStaKeyParam.key[keyIndex].keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -070024428 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].keyId;
24429 phalConfigBSS->extSetStaKeyParam.key[keyIndex].unicast =
24430 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].unicast;
24431 phalConfigBSS->extSetStaKeyParam.key[keyIndex].keyDirection =
24432 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].keyDirection;
24433 wpalMemoryCopy(phalConfigBSS->extSetStaKeyParam.key[keyIndex].keyRsc,
Jeff Johnsone7245742012-09-05 17:12:55 -070024434 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].keyRsc,
Jeff Johnson295189b2012-06-20 16:38:30 -070024435 WDI_MAX_KEY_RSC_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070024436 phalConfigBSS->extSetStaKeyParam.key[keyIndex].paeRole =
Jeff Johnson295189b2012-06-20 16:38:30 -070024437 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].paeRole;
Jeff Johnsone7245742012-09-05 17:12:55 -070024438 phalConfigBSS->extSetStaKeyParam.key[keyIndex].keyLength =
Jeff Johnson295189b2012-06-20 16:38:30 -070024439 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].keyLength;
24440 wpalMemoryCopy(phalConfigBSS->extSetStaKeyParam.key[keyIndex].key,
Jeff Johnsone7245742012-09-05 17:12:55 -070024441 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].key,
Jeff Johnson295189b2012-06-20 16:38:30 -070024442 WDI_MAX_KEY_LENGTH);
24443 }
Jeff Johnson295189b2012-06-20 16:38:30 -070024444 }
24445 else/* phalConfigBSS->extSetStaKeyParamValid is not set */
24446 {
Jeff Johnsone7245742012-09-05 17:12:55 -070024447 wpalMemoryZero( &phalConfigBSS->extSetStaKeyParam,
Jeff Johnson295189b2012-06-20 16:38:30 -070024448 sizeof(phalConfigBSS->extSetStaKeyParam) );
24449 }
24450
24451#endif /*WLAN_FEATURE_VOWIFI_11R*/
24452
Jeff Johnsone7245742012-09-05 17:12:55 -070024453#ifdef WLAN_FEATURE_11AC
24454 if(phalConfigBSS_V1 != NULL)
24455 {
24456 phalConfigBSS_V1->vhtCapable = pwdiConfigBSS->ucVhtCapableSta;
24457 phalConfigBSS_V1->vhtTxChannelWidthSet = pwdiConfigBSS->ucVhtTxChannelWidthSet;
24458 }
24459#endif
24460
Jeff Johnson295189b2012-06-20 16:38:30 -070024461}/*WDI_CopyWDIConfigBSSToHALConfigBSS*/
24462
24463
Jeff Johnsone7245742012-09-05 17:12:55 -070024464/*Extract the request CB function and user data from a request structure
Jeff Johnson295189b2012-06-20 16:38:30 -070024465 pointed to by user data */
24466WPT_STATIC WPT_INLINE void
24467WDI_ExtractRequestCBFromEvent
24468(
24469 WDI_EventInfoType* pEvent,
Jeff Johnsone7245742012-09-05 17:12:55 -070024470 WDI_ReqStatusCb* ppfnReqCB,
Jeff Johnson295189b2012-06-20 16:38:30 -070024471 void** ppUserData
24472)
24473{
24474 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
24475 switch ( pEvent->wdiRequest )
24476 {
24477 case WDI_START_REQ:
24478 *ppfnReqCB = ((WDI_StartReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24479 *ppUserData = ((WDI_StartReqParamsType*)pEvent->pEventData)->pUserData;
24480 break;
24481 case WDI_STOP_REQ:
24482 *ppfnReqCB = ((WDI_StopReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24483 *ppUserData = ((WDI_StopReqParamsType*)pEvent->pEventData)->pUserData;
24484 break;
24485 case WDI_INIT_SCAN_REQ:
24486 *ppfnReqCB = ((WDI_InitScanReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24487 *ppUserData = ((WDI_InitScanReqParamsType*)pEvent->pEventData)->pUserData;
24488 break;
24489 case WDI_START_SCAN_REQ:
24490 *ppfnReqCB = ((WDI_StartScanReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24491 *ppUserData = ((WDI_StartScanReqParamsType*)pEvent->pEventData)->pUserData;
24492 break;
24493 case WDI_END_SCAN_REQ:
24494 *ppfnReqCB = ((WDI_EndScanReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24495 *ppUserData = ((WDI_EndScanReqParamsType*)pEvent->pEventData)->pUserData;
24496 break;
24497 case WDI_FINISH_SCAN_REQ:
24498 *ppfnReqCB = ((WDI_FinishScanReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24499 *ppUserData = ((WDI_FinishScanReqParamsType*)pEvent->pEventData)->pUserData;
24500 break;
24501 case WDI_JOIN_REQ:
24502 *ppfnReqCB = ((WDI_JoinReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24503 *ppUserData = ((WDI_JoinReqParamsType*)pEvent->pEventData)->pUserData;
24504 break;
24505 case WDI_CONFIG_BSS_REQ:
24506 *ppfnReqCB = ((WDI_ConfigBSSReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24507 *ppUserData = ((WDI_ConfigBSSReqParamsType*)pEvent->pEventData)->pUserData;
24508 break;
24509 case WDI_DEL_BSS_REQ:
24510 *ppfnReqCB = ((WDI_DelBSSReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24511 *ppUserData = ((WDI_DelBSSReqParamsType*)pEvent->pEventData)->pUserData;
24512 break;
24513 case WDI_POST_ASSOC_REQ:
24514 *ppfnReqCB = ((WDI_PostAssocReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24515 *ppUserData = ((WDI_PostAssocReqParamsType*)pEvent->pEventData)->pUserData;
24516 break;
24517 case WDI_DEL_STA_REQ:
24518 *ppfnReqCB = ((WDI_DelSTAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24519 *ppUserData = ((WDI_DelSTAReqParamsType*)pEvent->pEventData)->pUserData;
24520 break;
24521 case WDI_DEL_STA_SELF_REQ:
24522 *ppfnReqCB = ((WDI_DelSTASelfReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24523 *ppUserData = ((WDI_DelSTASelfReqParamsType*)pEvent->pEventData)->pUserData;
24524 break;
24525
24526 case WDI_SET_BSS_KEY_REQ:
24527 *ppfnReqCB = ((WDI_SetBSSKeyReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24528 *ppUserData = ((WDI_SetBSSKeyReqParamsType*)pEvent->pEventData)->pUserData;
24529 break;
24530 case WDI_RMV_BSS_KEY_REQ:
24531 *ppfnReqCB = ((WDI_RemoveBSSKeyReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24532 *ppUserData = ((WDI_RemoveBSSKeyReqParamsType*)pEvent->pEventData)->pUserData;
24533 break;
24534 case WDI_SET_STA_KEY_REQ:
24535 *ppfnReqCB = ((WDI_SetSTAKeyReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24536 *ppUserData = ((WDI_SetSTAKeyReqParamsType*)pEvent->pEventData)->pUserData;
24537 break;
24538 case WDI_RMV_STA_KEY_REQ:
24539 *ppfnReqCB = ((WDI_RemoveSTAKeyReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24540 *ppUserData = ((WDI_RemoveSTAKeyReqParamsType*)pEvent->pEventData)->pUserData;
24541 break;
24542 case WDI_ADD_TS_REQ:
24543 *ppfnReqCB = ((WDI_AddTSReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24544 *ppUserData = ((WDI_AddTSReqParamsType*)pEvent->pEventData)->pUserData;
24545 break;
24546 case WDI_DEL_TS_REQ:
24547 *ppfnReqCB = ((WDI_DelTSReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24548 *ppUserData = ((WDI_DelTSReqParamsType*)pEvent->pEventData)->pUserData;
24549 break;
24550 case WDI_UPD_EDCA_PRMS_REQ:
24551 *ppfnReqCB = ((WDI_UpdateEDCAParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24552 *ppUserData = ((WDI_UpdateEDCAParamsType*)pEvent->pEventData)->pUserData;
24553 break;
24554 case WDI_ADD_BA_SESSION_REQ:
24555 *ppfnReqCB = ((WDI_AddBASessionReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24556 *ppUserData = ((WDI_AddBASessionReqParamsType*)pEvent->pEventData)->pUserData;
24557 break;
24558 case WDI_DEL_BA_REQ:
24559 *ppfnReqCB = ((WDI_DelBAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24560 *ppUserData = ((WDI_DelBAReqParamsType*)pEvent->pEventData)->pUserData;
24561 break;
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -080024562#ifdef FEATURE_WLAN_ESE
Jeff Johnson295189b2012-06-20 16:38:30 -070024563 case WDI_TSM_STATS_REQ:
24564 *ppfnReqCB = ((WDI_TSMStatsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24565 *ppUserData = ((WDI_TSMStatsReqParamsType*)pEvent->pEventData)->pUserData;
24566 break;
24567#endif
24568 case WDI_CH_SWITCH_REQ:
24569 *ppfnReqCB = ((WDI_SwitchChReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24570 *ppUserData = ((WDI_SwitchChReqParamsType*)pEvent->pEventData)->pUserData;
24571 break;
Kalikinkar dhara1e83b772014-02-06 12:59:22 -080024572 case WDI_CH_SWITCH_REQ_V1:
24573 *ppfnReqCB = ((WDI_SwitchChReqParamsType_V1*)pEvent->pEventData)->wdiReqStatusCB;
24574 *ppUserData = ((WDI_SwitchChReqParamsType_V1*)pEvent->pEventData)->pUserData;
24575 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070024576 case WDI_CONFIG_STA_REQ:
24577 *ppfnReqCB = ((WDI_ConfigSTAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24578 *ppUserData = ((WDI_ConfigSTAReqParamsType*)pEvent->pEventData)->pUserData;
24579 break;
24580 case WDI_SET_LINK_ST_REQ:
24581 *ppfnReqCB = ((WDI_SetLinkReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24582 *ppUserData = ((WDI_SetLinkReqParamsType*)pEvent->pEventData)->pUserData;
24583 break;
24584 case WDI_GET_STATS_REQ:
24585 *ppfnReqCB = ((WDI_GetStatsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24586 *ppUserData = ((WDI_GetStatsReqParamsType*)pEvent->pEventData)->pUserData;
24587 break;
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -080024588#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_ESE || defined(FEATURE_WLAN_LFR)
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -080024589 case WDI_GET_ROAM_RSSI_REQ:
24590 *ppfnReqCB = ((WDI_GetRoamRssiReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24591 *ppUserData = ((WDI_GetRoamRssiReqParamsType*)pEvent->pEventData)->pUserData;
24592 break;
24593#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070024594 case WDI_UPDATE_CFG_REQ:
24595 *ppfnReqCB = ((WDI_UpdateCfgReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24596 *ppUserData = ((WDI_UpdateCfgReqParamsType*)pEvent->pEventData)->pUserData;
24597 break;
24598 case WDI_ADD_BA_REQ:
24599 *ppfnReqCB = ((WDI_AddBAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24600 *ppUserData = ((WDI_AddBAReqParamsType*)pEvent->pEventData)->pUserData;
24601 break;
24602 case WDI_TRIGGER_BA_REQ:
24603 *ppfnReqCB = ((WDI_TriggerBAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24604 *ppUserData = ((WDI_TriggerBAReqParamsType*)pEvent->pEventData)->pUserData;
24605 break;
24606 case WDI_UPD_BCON_PRMS_REQ:
24607 *ppfnReqCB = ((WDI_UpdateBeaconParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24608 *ppUserData = ((WDI_UpdateBeaconParamsType*)pEvent->pEventData)->pUserData;
24609 break;
24610 case WDI_SND_BCON_REQ:
24611 *ppfnReqCB = ((WDI_SendBeaconParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24612 *ppUserData = ((WDI_SendBeaconParamsType*)pEvent->pEventData)->pUserData;
24613 break;
24614 case WDI_ENTER_BMPS_REQ:
24615 *ppfnReqCB = ((WDI_EnterBmpsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24616 *ppUserData = ((WDI_EnterBmpsReqParamsType*)pEvent->pEventData)->pUserData;
24617 break;
24618 case WDI_EXIT_BMPS_REQ:
24619 *ppfnReqCB = ((WDI_ExitBmpsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24620 *ppUserData = ((WDI_ExitBmpsReqParamsType*)pEvent->pEventData)->pUserData;
24621 break;
Mihir Shetea4306052014-03-25 00:02:54 +053024622 case WDI_ENTER_IMPS_REQ:
24623 *ppfnReqCB = ((WDI_EnterImpsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24624 *ppUserData = ((WDI_EnterImpsReqParamsType*)pEvent->pEventData)->pUserData;
24625 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070024626 case WDI_ENTER_UAPSD_REQ:
24627 *ppfnReqCB = ((WDI_EnterUapsdReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24628 *ppUserData = ((WDI_EnterUapsdReqParamsType*)pEvent->pEventData)->pUserData;
24629 break;
Yue Ma7f44bbe2013-04-12 11:47:39 -070024630 case WDI_EXIT_UAPSD_REQ:
24631 *ppfnReqCB = ((WDI_ExitUapsdReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24632 *ppUserData = ((WDI_ExitUapsdReqParamsType*)pEvent->pEventData)->pUserData;
24633 break;
24634 case WDI_SET_UAPSD_PARAM_REQ:
24635 *ppfnReqCB = ((WDI_SetUapsdAcParamsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24636 *ppUserData = ((WDI_SetUapsdAcParamsReqParamsType*)pEvent->pEventData)->pUserData;
24637 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070024638 case WDI_UPDATE_UAPSD_PARAM_REQ:
24639 *ppfnReqCB = ((WDI_UpdateUapsdReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24640 *ppUserData = ((WDI_UpdateUapsdReqParamsType*)pEvent->pEventData)->pUserData;
24641 break;
24642 case WDI_CONFIGURE_RXP_FILTER_REQ:
24643 *ppfnReqCB = ((WDI_ConfigureRxpFilterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24644 *ppUserData = ((WDI_ConfigureRxpFilterReqParamsType*)pEvent->pEventData)->pUserData;
24645 break;
24646 case WDI_SET_BEACON_FILTER_REQ:
24647 *ppfnReqCB = ((WDI_BeaconFilterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24648 *ppUserData = ((WDI_BeaconFilterReqParamsType*)pEvent->pEventData)->pUserData;
24649 break;
24650 case WDI_REM_BEACON_FILTER_REQ:
24651 *ppfnReqCB = ((WDI_RemBeaconFilterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24652 *ppUserData = ((WDI_RemBeaconFilterReqParamsType*)pEvent->pEventData)->pUserData;
Jeff Johnsone7245742012-09-05 17:12:55 -070024653 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070024654 case WDI_SET_RSSI_THRESHOLDS_REQ:
24655 *ppfnReqCB = ((WDI_SetRSSIThresholdsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24656 *ppUserData = ((WDI_SetRSSIThresholdsReqParamsType*)pEvent->pEventData)->pUserData;
24657 break;
24658 case WDI_HOST_OFFLOAD_REQ:
24659 *ppfnReqCB = ((WDI_HostOffloadReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24660 *ppUserData = ((WDI_HostOffloadReqParamsType*)pEvent->pEventData)->pUserData;
24661 break;
24662 case WDI_WOWL_ADD_BC_PTRN_REQ:
24663 *ppfnReqCB = ((WDI_WowlAddBcPtrnReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24664 *ppUserData = ((WDI_WowlAddBcPtrnReqParamsType*)pEvent->pEventData)->pUserData;
24665 break;
24666 case WDI_WOWL_DEL_BC_PTRN_REQ:
24667 *ppfnReqCB = ((WDI_WowlDelBcPtrnReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24668 *ppUserData = ((WDI_WowlDelBcPtrnReqParamsType*)pEvent->pEventData)->pUserData;
24669 break;
24670 case WDI_WOWL_ENTER_REQ:
24671 *ppfnReqCB = ((WDI_WowlEnterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24672 *ppUserData = ((WDI_WowlEnterReqParamsType*)pEvent->pEventData)->pUserData;
24673 break;
Yue Ma7f44bbe2013-04-12 11:47:39 -070024674 case WDI_WOWL_EXIT_REQ:
24675 *ppfnReqCB = ((WDI_WowlExitReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24676 *ppUserData = ((WDI_WowlExitReqParamsType*)pEvent->pEventData)->pUserData;
24677 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070024678 case WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ:
24679 *ppfnReqCB = ((WDI_ConfigureAppsCpuWakeupStateReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24680 *ppUserData = ((WDI_ConfigureAppsCpuWakeupStateReqParamsType*)pEvent->pEventData)->pUserData;
24681 break;
24682 case WDI_FLUSH_AC_REQ:
24683 *ppfnReqCB = ((WDI_FlushAcReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24684 *ppUserData = ((WDI_FlushAcReqParamsType*)pEvent->pEventData)->pUserData;
24685 break;
24686 case WDI_BTAMP_EVENT_REQ:
24687 *ppfnReqCB = ((WDI_BtAmpEventParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24688 *ppUserData = ((WDI_BtAmpEventParamsType*)pEvent->pEventData)->pUserData;
24689 break;
24690 case WDI_KEEP_ALIVE_REQ:
24691 *ppfnReqCB = ((WDI_KeepAliveReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24692 *ppUserData = ((WDI_KeepAliveReqParamsType*)pEvent->pEventData)->pUserData;
24693 break;
Yue Ma7f44bbe2013-04-12 11:47:39 -070024694#if defined FEATURE_WLAN_SCAN_PNO
24695 case WDI_SET_PREF_NETWORK_REQ:
24696 *ppfnReqCB = ((WDI_PNOScanReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24697 *ppUserData = ((WDI_PNOScanReqParamsType*)pEvent->pEventData)->pUserData;
24698 break;
24699 case WDI_SET_RSSI_FILTER_REQ:
24700 *ppfnReqCB = ((WDI_SetRssiFilterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24701 *ppUserData = ((WDI_SetRssiFilterReqParamsType*)pEvent->pEventData)->pUserData;
24702 break;
24703 case WDI_UPDATE_SCAN_PARAMS_REQ:
24704 *ppfnReqCB = ((WDI_UpdateScanParamsInfoType*)pEvent->pEventData)->wdiReqStatusCB;
24705 *ppUserData = ((WDI_UpdateScanParamsInfoType*)pEvent->pEventData)->pUserData;
24706 break;
24707#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070024708 case WDI_SET_TX_PER_TRACKING_REQ:
24709 *ppfnReqCB = ((WDI_SetTxPerTrackingReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24710 *ppUserData = ((WDI_SetTxPerTrackingReqParamsType*)pEvent->pEventData)->pUserData;
Tushnim Bhattacharyya4858ab62013-03-08 10:15:42 -080024711 break;
Yue Ma7f44bbe2013-04-12 11:47:39 -070024712#if defined WLAN_FEATURE_PACKET_FILTERING
24713 case WDI_8023_MULTICAST_LIST_REQ:
24714 *ppfnReqCB = ((WDI_RcvFltPktSetMcListReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24715 *ppUserData = ((WDI_RcvFltPktSetMcListReqParamsType*)pEvent->pEventData)->pUserData;
24716 break;
Tushnim Bhattacharyya4858ab62013-03-08 10:15:42 -080024717 case WDI_RECEIVE_FILTER_SET_FILTER_REQ:
24718 *ppfnReqCB = ((WDI_SetRcvPktFilterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24719 *ppUserData = ((WDI_SetRcvPktFilterReqParamsType*)pEvent->pEventData)->pUserData;
24720 break;
24721 case WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ:
24722 *ppfnReqCB = ((WDI_RcvFltPktMatchCntReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24723 *ppUserData = ((WDI_RcvFltPktMatchCntReqParamsType*)pEvent->pEventData)->pUserData;
24724 break;
24725 case WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ:
24726 *ppfnReqCB = ((WDI_RcvFltPktClearReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24727 *ppUserData = ((WDI_RcvFltPktClearReqParamsType*)pEvent->pEventData)->pUserData;
24728 break;
Yue Ma7f44bbe2013-04-12 11:47:39 -070024729#endif
24730 case WDI_SET_POWER_PARAMS_REQ:
24731 *ppfnReqCB = ((WDI_SetPowerParamsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24732 *ppUserData = ((WDI_SetPowerParamsReqParamsType*)pEvent->pEventData)->pUserData;
24733 break;
24734#if defined WLAN_FEATURE_GTK_OFFLOAD
24735 case WDI_GTK_OFFLOAD_REQ:
24736 *ppfnReqCB = ((WDI_GtkOffloadReqMsg*)pEvent->pEventData)->wdiReqStatusCB;
24737 *ppUserData = ((WDI_GtkOffloadReqMsg*)pEvent->pEventData)->pUserData;
24738 break;
24739 case WDI_GTK_OFFLOAD_GETINFO_REQ:
24740 *ppfnReqCB = ((WDI_GtkOffloadGetInfoReqMsg*)pEvent->pEventData)->wdiReqStatusCB;
24741 *ppUserData = ((WDI_GtkOffloadGetInfoReqMsg*)pEvent->pEventData)->pUserData;
24742 break;
24743#endif
Tushnim Bhattacharyya4858ab62013-03-08 10:15:42 -080024744
Jeff Johnson295189b2012-06-20 16:38:30 -070024745 default:
24746 *ppfnReqCB = NULL;
24747 *ppUserData = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070024748 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070024749 }
24750}/*WDI_ExtractRequestCBFromEvent*/
24751
24752
24753/**
Jeff Johnsone7245742012-09-05 17:12:55 -070024754 @brief WDI_IsHwFrameTxTranslationCapable checks to see if HW
Jeff Johnson295189b2012-06-20 16:38:30 -070024755 frame xtl is enabled for a particular STA.
24756
24757 WDI_PostAssocReq must have been called.
24758
Jeff Johnsone7245742012-09-05 17:12:55 -070024759 @param uSTAIdx: STA index
24760
Jeff Johnson295189b2012-06-20 16:38:30 -070024761 @see WDI_PostAssocReq
24762 @return Result of the function call
24763*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024764wpt_boolean
Jeff Johnson295189b2012-06-20 16:38:30 -070024765WDI_IsHwFrameTxTranslationCapable
24766(
24767 wpt_uint8 uSTAIdx
24768)
24769{
Jeff Johnsone7245742012-09-05 17:12:55 -070024770 /*!! FIX ME - this must eventually be per station - for now just feedback
Jeff Johnson295189b2012-06-20 16:38:30 -070024771 uma value*/
24772 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024773 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070024774 ------------------------------------------------------------------------*/
24775 if ( eWLAN_PAL_FALSE == gWDIInitialized )
24776 {
24777 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
24778 "WDI API call before module is initialized - Fail request");
24779
Jeff Johnsone7245742012-09-05 17:12:55 -070024780 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070024781 }
24782
Gopichand Nakkala976e3252013-01-03 15:45:56 -080024783#ifdef WLAN_SOFTAP_VSTA_FEATURE
24784 if (IS_VSTA_IDX(uSTAIdx))
24785 {
24786 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
24787 "STA %d is a Virtual STA, "
24788 "HW frame translation disabled", uSTAIdx);
24789 return eWLAN_PAL_FALSE;
24790 }
24791#endif
Jeff Johnsone7245742012-09-05 17:12:55 -070024792
Jeff Johnson295189b2012-06-20 16:38:30 -070024793 return gWDICb.bFrameTransEnabled;
24794}/*WDI_IsHwFrameTxTranslationCapable*/
24795
Katya Nigam6201c3e2014-05-27 17:51:42 +053024796
24797/**
24798 @brief WDI_IsSelfSTA - check if staid is self sta index
24799
24800
24801 @param pWDICtx: pointer to the WLAN DAL context
24802 ucSTAIdx: station index
24803
24804 @return Result of the function call
24805*/
24806wpt_boolean WDI_IsSelfSTA( void* pWDICtx, wpt_uint8 ucSTAIdx )
24807{
24808 wpt_uint8 ucSTAType;
24809
24810 if( WDI_STATableGetStaType( (WDI_ControlBlockType*)pWDICtx,
24811 ucSTAIdx,&ucSTAType) == WDI_STATUS_SUCCESS)
24812 {
24813 if( ucSTAType == WDI_STA_ENTRY_SELF )
24814 return eWLAN_PAL_TRUE;
24815 }
24816
24817 return eWLAN_PAL_FALSE;
24818}
24819
24820
24821
Jeff Johnson295189b2012-06-20 16:38:30 -070024822#ifdef FEATURE_WLAN_SCAN_PNO
24823/**
24824 @brief WDI_SetPreferredNetworkList
24825
Jeff Johnsone7245742012-09-05 17:12:55 -070024826 @param pwdiPNOScanReqParams: the Set PNO as specified
Jeff Johnson295189b2012-06-20 16:38:30 -070024827 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -070024828
Jeff Johnson295189b2012-06-20 16:38:30 -070024829 wdiPNOScanCb: callback for passing back the response
24830 of the Set PNO operation received from the
24831 device
Jeff Johnsone7245742012-09-05 17:12:55 -070024832
Jeff Johnson295189b2012-06-20 16:38:30 -070024833 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -070024834 callback
24835
Jeff Johnson295189b2012-06-20 16:38:30 -070024836 @return Result of the function call
24837*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024838WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070024839WDI_SetPreferredNetworkReq
24840(
24841 WDI_PNOScanReqParamsType* pwdiPNOScanReqParams,
24842 WDI_PNOScanCb wdiPNOScanCb,
24843 void* pUserData
24844)
24845{
24846 WDI_EventInfoType wdiEventData = {{0}};
24847 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
24848
24849 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024850 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070024851 ------------------------------------------------------------------------*/
24852 if ( eWLAN_PAL_FALSE == gWDIInitialized )
24853 {
24854 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
24855 "WDI API call before module is initialized - Fail request");
24856
Jeff Johnsone7245742012-09-05 17:12:55 -070024857 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070024858 }
24859
24860 /*------------------------------------------------------------------------
24861 Fill in Event data and post to the Main FSM
24862 ------------------------------------------------------------------------*/
24863 wdiEventData.wdiRequest = WDI_SET_PREF_NETWORK_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070024864 wdiEventData.pEventData = pwdiPNOScanReqParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070024865 wdiEventData.uEventDataSize = sizeof(*pwdiPNOScanReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -070024866 wdiEventData.pCBfnc = wdiPNOScanCb;
Jeff Johnson295189b2012-06-20 16:38:30 -070024867 wdiEventData.pUserData = pUserData;
24868
24869 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
24870}
24871
24872
24873/**
24874 @brief WDI_SetRssiFilterReq
24875
Jeff Johnsone7245742012-09-05 17:12:55 -070024876 @param pwdiRssiFilterReqParams: the Set RSSI Filter as
Jeff Johnson295189b2012-06-20 16:38:30 -070024877 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -070024878
Jeff Johnson295189b2012-06-20 16:38:30 -070024879 wdiRssiFilterCb: callback for passing back the response
24880 of the Set RSSI Filter operation received from the
24881 device
Jeff Johnsone7245742012-09-05 17:12:55 -070024882
Jeff Johnson295189b2012-06-20 16:38:30 -070024883 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -070024884 callback
24885
Jeff Johnson295189b2012-06-20 16:38:30 -070024886 @return Result of the function call
24887*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024888WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070024889WDI_SetRssiFilterReq
24890(
24891 WDI_SetRssiFilterReqParamsType* pwdiRssiFilterReqParams,
24892 WDI_RssiFilterCb wdiRssiFilterCb,
24893 void* pUserData
24894)
24895{
24896 WDI_EventInfoType wdiEventData = {{0}};
24897 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
24898
24899 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024900 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070024901 ------------------------------------------------------------------------*/
24902 if ( eWLAN_PAL_FALSE == gWDIInitialized )
24903 {
24904 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
24905 "WDI API call before module is initialized - Fail request");
24906
Jeff Johnsone7245742012-09-05 17:12:55 -070024907 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070024908 }
24909
24910 /*------------------------------------------------------------------------
24911 Fill in Event data and post to the Main FSM
24912 ------------------------------------------------------------------------*/
24913 wdiEventData.wdiRequest = WDI_SET_RSSI_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070024914 wdiEventData.pEventData = pwdiRssiFilterReqParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070024915 wdiEventData.uEventDataSize = sizeof(*pwdiRssiFilterReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -070024916 wdiEventData.pCBfnc = wdiRssiFilterCb;
Jeff Johnson295189b2012-06-20 16:38:30 -070024917 wdiEventData.pUserData = pUserData;
24918
24919 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
24920}/*WDI_SetRssiFilterReq*/
24921
24922/**
24923 @brief WDI_UpdateScanParamsReq
24924
Jeff Johnsone7245742012-09-05 17:12:55 -070024925 @param pwdiUpdateScanParamsInfoType: the Update Scan Params as specified
Jeff Johnson295189b2012-06-20 16:38:30 -070024926 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -070024927
Jeff Johnson295189b2012-06-20 16:38:30 -070024928 wdiUpdateScanParamsCb: callback for passing back the response
24929 of the Set PNO operation received from the
24930 device
Jeff Johnsone7245742012-09-05 17:12:55 -070024931
Jeff Johnson295189b2012-06-20 16:38:30 -070024932 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -070024933 callback
24934
Jeff Johnson295189b2012-06-20 16:38:30 -070024935 @return Result of the function call
24936*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024937WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070024938WDI_UpdateScanParamsReq
24939(
24940 WDI_UpdateScanParamsInfoType* pwdiUpdateScanParamsInfoType,
24941 WDI_UpdateScanParamsCb wdiUpdateScanParamsCb,
24942 void* pUserData
24943)
24944{
24945 WDI_EventInfoType wdiEventData = {{0}};
24946 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
24947
24948 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024949 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070024950 ------------------------------------------------------------------------*/
24951 if ( eWLAN_PAL_FALSE == gWDIInitialized )
24952 {
24953 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
24954 "WDI API call before module is initialized - Fail request");
24955
Jeff Johnsone7245742012-09-05 17:12:55 -070024956 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070024957 }
24958
24959 /*------------------------------------------------------------------------
24960 Fill in Event data and post to the Main FSM
24961 ------------------------------------------------------------------------*/
24962 wdiEventData.wdiRequest = WDI_UPDATE_SCAN_PARAMS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070024963 wdiEventData.pEventData = pwdiUpdateScanParamsInfoType;
Jeff Johnson295189b2012-06-20 16:38:30 -070024964 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateScanParamsInfoType);
Jeff Johnsone7245742012-09-05 17:12:55 -070024965 wdiEventData.pCBfnc = wdiUpdateScanParamsCb;
Jeff Johnson295189b2012-06-20 16:38:30 -070024966 wdiEventData.pUserData = pUserData;
24967
24968 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
24969}
24970
24971/**
Jeff Johnsone7245742012-09-05 17:12:55 -070024972 @brief Helper function to pack Set Preferred Network List
Jeff Johnson295189b2012-06-20 16:38:30 -070024973 Request parameters
Jeff Johnsone7245742012-09-05 17:12:55 -070024974
24975 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070024976 pwdiPNOScanReqParams: pointer to the info received
24977 from upper layers
24978 ppSendBuffer, pSize - out pointers of the packed buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070024979 and its size
24980
Jeff Johnson295189b2012-06-20 16:38:30 -070024981 @return Result of the function call
24982*/
24983
24984WDI_Status
24985WDI_PackPreferredNetworkList
24986(
24987 WDI_ControlBlockType* pWDICtx,
24988 WDI_PNOScanReqParamsType* pwdiPNOScanReqParams,
24989 wpt_uint8** ppSendBuffer,
24990 wpt_uint16* pSize
24991)
24992{
Jeff Johnsone7245742012-09-05 17:12:55 -070024993 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070024994 wpt_uint16 usDataOffset = 0;
24995 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024996 tpPrefNetwListParams pPrefNetwListParams = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070024997 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070024998 /*-----------------------------------------------------------------------
24999 Get message buffer
25000 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025001 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_PREF_NETWORK_REQ,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025002 sizeof(tPrefNetwListParams),
Jeff Johnson295189b2012-06-20 16:38:30 -070025003 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025004 ( usSendSize < (usDataOffset + sizeof(tPrefNetwListParams) )))
Jeff Johnson295189b2012-06-20 16:38:30 -070025005 {
25006 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080025007 "Unable to get send buffer in Set PNO req %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070025008 pwdiPNOScanReqParams);
25009 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070025010 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025011 }
25012
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025013 pPrefNetwListParams = (tpPrefNetwListParams)(pSendBuffer + usDataOffset);
25014
Jeff Johnson295189b2012-06-20 16:38:30 -070025015 /*-------------------------------------------------------------------------
25016 Fill prefNetwListParams from pwdiPNOScanReqParams->wdiPNOScanInfo
25017 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025018 pPrefNetwListParams->enable =
Jeff Johnson295189b2012-06-20 16:38:30 -070025019 pwdiPNOScanReqParams->wdiPNOScanInfo.bEnable;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025020 pPrefNetwListParams->modePNO =
Jeff Johnson295189b2012-06-20 16:38:30 -070025021 pwdiPNOScanReqParams->wdiPNOScanInfo.wdiModePNO;
25022
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025023 pPrefNetwListParams->ucNetworksCount =
Jeff Johnsone7245742012-09-05 17:12:55 -070025024 (pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount <
Jeff Johnson295189b2012-06-20 16:38:30 -070025025 WLAN_HAL_PNO_MAX_SUPP_NETWORKS)?
Jeff Johnsone7245742012-09-05 17:12:55 -070025026 pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount :
Jeff Johnson295189b2012-06-20 16:38:30 -070025027 WLAN_HAL_PNO_MAX_SUPP_NETWORKS;
25028
25029 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070025030 "WDI SET PNO: Enable %d, Mode %d, Netw Count %d",
Jeff Johnson295189b2012-06-20 16:38:30 -070025031 pwdiPNOScanReqParams->wdiPNOScanInfo.bEnable,
25032 pwdiPNOScanReqParams->wdiPNOScanInfo.wdiModePNO,
25033 pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount);
25034
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025035 for ( i = 0; i < pPrefNetwListParams->ucNetworksCount; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070025036 {
25037 /*SSID of the BSS*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025038 pPrefNetwListParams->aNetworks[i].ssId.length
Jeff Johnson295189b2012-06-20 16:38:30 -070025039 = pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ssId.ucLength;
25040
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025041 wpalMemoryCopy( pPrefNetwListParams->aNetworks[i].ssId.ssId,
Jeff Johnson295189b2012-06-20 16:38:30 -070025042 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ssId.sSSID,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025043 pPrefNetwListParams->aNetworks[i].ssId.length);
Jeff Johnson295189b2012-06-20 16:38:30 -070025044
25045 /*Authentication type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025046 pPrefNetwListParams->aNetworks[i].authentication =
Jeff Johnsone7245742012-09-05 17:12:55 -070025047 (tAuthType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiAuth;
Jeff Johnson295189b2012-06-20 16:38:30 -070025048
25049 /*Encryption type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025050 pPrefNetwListParams->aNetworks[i].encryption =
Jeff Johnsone7245742012-09-05 17:12:55 -070025051 (tEdType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiEncryption;
Jeff Johnson295189b2012-06-20 16:38:30 -070025052
Jeff Johnsone7245742012-09-05 17:12:55 -070025053 /*Indicate the channel on which the Network can be found
Jeff Johnson295189b2012-06-20 16:38:30 -070025054 0 - if all channels */
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025055 pPrefNetwListParams->aNetworks[i].ucChannelCount =
Madan Mohan Koyyalamudia208d102012-10-15 15:18:18 -070025056 (pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ucChannelCount <
25057 WLAN_HAL_PNO_MAX_NETW_CHANNELS)?
25058 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ucChannelCount :
25059 WLAN_HAL_PNO_MAX_NETW_CHANNELS;
Jeff Johnson295189b2012-06-20 16:38:30 -070025060
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025061 wpalMemoryCopy(pPrefNetwListParams->aNetworks[i].aChannels,
Jeff Johnson295189b2012-06-20 16:38:30 -070025062 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].aChannels,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025063 pPrefNetwListParams->aNetworks[i].ucChannelCount);
Jeff Johnson295189b2012-06-20 16:38:30 -070025064
25065 /*Indicates the RSSI threshold for the network to be considered*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025066 pPrefNetwListParams->aNetworks[i].rssiThreshold =
Jeff Johnson295189b2012-06-20 16:38:30 -070025067 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].rssiThreshold;
25068
25069 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070025070 "WDI SET PNO: SSID %d %s",
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025071 pPrefNetwListParams->aNetworks[i].ssId.length,
25072 pPrefNetwListParams->aNetworks[i].ssId.ssId);
Jeff Johnson295189b2012-06-20 16:38:30 -070025073 }
25074
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025075 pPrefNetwListParams->scanTimers.ucScanTimersCount =
Jeff Johnsone7245742012-09-05 17:12:55 -070025076 (pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.ucScanTimersCount <
Jeff Johnson295189b2012-06-20 16:38:30 -070025077 WLAN_HAL_PNO_MAX_SCAN_TIMERS)?
25078 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.ucScanTimersCount :
25079 WLAN_HAL_PNO_MAX_SCAN_TIMERS;
25080
25081 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070025082 "WDI SET PNO: Scan timers count %d 24G P %d 5G Probe %d",
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025083 pPrefNetwListParams->scanTimers.ucScanTimersCount,
Jeff Johnson295189b2012-06-20 16:38:30 -070025084 pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize,
25085 pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize);
25086
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025087 for ( i = 0; i < pPrefNetwListParams->scanTimers.ucScanTimersCount; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070025088 {
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025089 pPrefNetwListParams->scanTimers.aTimerValues[i].uTimerValue =
Jeff Johnson295189b2012-06-20 16:38:30 -070025090 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.aTimerValues[i].uTimerValue;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025091 pPrefNetwListParams->scanTimers.aTimerValues[i].uTimerRepeat =
Jeff Johnson295189b2012-06-20 16:38:30 -070025092 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.aTimerValues[i].uTimerRepeat;
25093 }
25094
25095 /*Copy the probe template*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025096 pPrefNetwListParams->us24GProbeSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070025097 (pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize<
25098 WLAN_HAL_PNO_MAX_PROBE_SIZE)?
25099 pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize:
Jeff Johnsone7245742012-09-05 17:12:55 -070025100 WLAN_HAL_PNO_MAX_PROBE_SIZE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025101
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025102 wpalMemoryCopy(pPrefNetwListParams->a24GProbeTemplate,
Jeff Johnsone7245742012-09-05 17:12:55 -070025103 pwdiPNOScanReqParams->wdiPNOScanInfo.a24GProbeTemplate,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025104 pPrefNetwListParams->us24GProbeSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070025105
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025106 pPrefNetwListParams->us5GProbeSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070025107 (pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize <
25108 WLAN_HAL_PNO_MAX_PROBE_SIZE)?
25109 pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize:
Jeff Johnsone7245742012-09-05 17:12:55 -070025110 WLAN_HAL_PNO_MAX_PROBE_SIZE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025111
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025112 wpalMemoryCopy(pPrefNetwListParams->a5GProbeTemplate,
Jeff Johnsone7245742012-09-05 17:12:55 -070025113 pwdiPNOScanReqParams->wdiPNOScanInfo.a5GProbeTemplate,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025114 pPrefNetwListParams->us5GProbeSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070025115
25116 /*Set the output values*/
25117 *ppSendBuffer = pSendBuffer;
Jeff Johnsone7245742012-09-05 17:12:55 -070025118 *pSize = usSendSize;
Jeff Johnson295189b2012-06-20 16:38:30 -070025119
25120 return WDI_STATUS_SUCCESS;
25121}/*WDI_PackPreferredNetworkList*/
25122
25123/**
Jeff Johnsone7245742012-09-05 17:12:55 -070025124 @brief Helper function to pack Set Preferred Network List
Jeff Johnson295189b2012-06-20 16:38:30 -070025125 Request parameters
Jeff Johnsone7245742012-09-05 17:12:55 -070025126
25127 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070025128 pwdiPNOScanReqParams: pointer to the info received
25129 from upper layers
25130 ppSendBuffer, pSize - out pointers of the packed buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070025131 and its size
25132
Jeff Johnson295189b2012-06-20 16:38:30 -070025133 @return Result of the function call
25134*/
25135
25136WDI_Status
25137WDI_PackPreferredNetworkListNew
25138(
25139 WDI_ControlBlockType* pWDICtx,
25140 WDI_PNOScanReqParamsType* pwdiPNOScanReqParams,
25141 wpt_uint8** ppSendBuffer,
25142 wpt_uint16* pSize
25143)
25144{
Jeff Johnsone7245742012-09-05 17:12:55 -070025145 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070025146 wpt_uint16 usDataOffset = 0;
25147 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025148 tpPrefNetwListParamsNew pPrefNetwListParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070025149 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070025150
25151 /*-----------------------------------------------------------------------
25152 Get message buffer
25153 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025154 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_PREF_NETWORK_REQ,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025155 sizeof(tPrefNetwListParamsNew),
Jeff Johnson295189b2012-06-20 16:38:30 -070025156 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025157 ( usSendSize < (usDataOffset + sizeof(tPrefNetwListParamsNew) )))
Jeff Johnson295189b2012-06-20 16:38:30 -070025158 {
25159 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080025160 "Unable to get send buffer in Set PNO req %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070025161 pwdiPNOScanReqParams);
25162 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070025163 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025164 }
25165
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025166 pPrefNetwListParams = (tpPrefNetwListParamsNew)(pSendBuffer + usDataOffset);
25167
Jeff Johnson295189b2012-06-20 16:38:30 -070025168 /*-------------------------------------------------------------------------
25169 Fill prefNetwListParams from pwdiPNOScanReqParams->wdiPNOScanInfo
25170 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025171 pPrefNetwListParams->enable =
Jeff Johnson295189b2012-06-20 16:38:30 -070025172 pwdiPNOScanReqParams->wdiPNOScanInfo.bEnable;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025173 pPrefNetwListParams->modePNO =
Jeff Johnson295189b2012-06-20 16:38:30 -070025174 pwdiPNOScanReqParams->wdiPNOScanInfo.wdiModePNO;
25175
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025176 pPrefNetwListParams->ucNetworksCount =
Jeff Johnsone7245742012-09-05 17:12:55 -070025177 (pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount <
Jeff Johnson295189b2012-06-20 16:38:30 -070025178 WLAN_HAL_PNO_MAX_SUPP_NETWORKS)?
Jeff Johnsone7245742012-09-05 17:12:55 -070025179 pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount :
Jeff Johnson295189b2012-06-20 16:38:30 -070025180 WLAN_HAL_PNO_MAX_SUPP_NETWORKS;
25181
25182 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070025183 "WDI SET PNO: Enable %d, Mode %d, Netw Count %d",
Jeff Johnson295189b2012-06-20 16:38:30 -070025184 pwdiPNOScanReqParams->wdiPNOScanInfo.bEnable,
25185 pwdiPNOScanReqParams->wdiPNOScanInfo.wdiModePNO,
25186 pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount);
25187
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025188 for ( i = 0; i < pPrefNetwListParams->ucNetworksCount; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070025189 {
25190 /*SSID of the BSS*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025191 pPrefNetwListParams->aNetworks[i].ssId.length
Jeff Johnson295189b2012-06-20 16:38:30 -070025192 = pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ssId.ucLength;
25193
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025194 wpalMemoryCopy( pPrefNetwListParams->aNetworks[i].ssId.ssId,
Jeff Johnson295189b2012-06-20 16:38:30 -070025195 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ssId.sSSID,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025196 pPrefNetwListParams->aNetworks[i].ssId.length);
Jeff Johnson295189b2012-06-20 16:38:30 -070025197
25198 /*Authentication type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025199 pPrefNetwListParams->aNetworks[i].authentication =
Jeff Johnsone7245742012-09-05 17:12:55 -070025200 (tAuthType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiAuth;
Jeff Johnson295189b2012-06-20 16:38:30 -070025201
25202 /*Encryption type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025203 pPrefNetwListParams->aNetworks[i].encryption =
Jeff Johnsone7245742012-09-05 17:12:55 -070025204 (tEdType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiEncryption;
Jeff Johnson295189b2012-06-20 16:38:30 -070025205
25206 /*SSID bcast type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025207 pPrefNetwListParams->aNetworks[i].bcastNetworkType =
Jeff Johnsone7245742012-09-05 17:12:55 -070025208 (tSSIDBcastType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiBcastNetworkType;
Jeff Johnson295189b2012-06-20 16:38:30 -070025209
Jeff Johnsone7245742012-09-05 17:12:55 -070025210 /*Indicate the channel on which the Network can be found
Jeff Johnson295189b2012-06-20 16:38:30 -070025211 0 - if all channels */
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025212 pPrefNetwListParams->aNetworks[i].ucChannelCount =
Jeff Johnson295189b2012-06-20 16:38:30 -070025213 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ucChannelCount;
25214
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025215 wpalMemoryCopy(pPrefNetwListParams->aNetworks[i].aChannels,
Jeff Johnson295189b2012-06-20 16:38:30 -070025216 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].aChannels,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025217 pPrefNetwListParams->aNetworks[i].ucChannelCount);
Jeff Johnson295189b2012-06-20 16:38:30 -070025218
25219 /*Indicates the RSSI threshold for the network to be considered*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025220 pPrefNetwListParams->aNetworks[i].rssiThreshold =
Jeff Johnson295189b2012-06-20 16:38:30 -070025221 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].rssiThreshold;
25222
25223 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070025224 "WDI SET PNO: SSID %d %s",
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025225 pPrefNetwListParams->aNetworks[i].ssId.length,
25226 pPrefNetwListParams->aNetworks[i].ssId.ssId);
Jeff Johnson295189b2012-06-20 16:38:30 -070025227 }
25228
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025229 pPrefNetwListParams->scanTimers.ucScanTimersCount =
Jeff Johnsone7245742012-09-05 17:12:55 -070025230 (pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.ucScanTimersCount <
Jeff Johnson295189b2012-06-20 16:38:30 -070025231 WLAN_HAL_PNO_MAX_SCAN_TIMERS)?
25232 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.ucScanTimersCount :
25233 WLAN_HAL_PNO_MAX_SCAN_TIMERS;
25234
25235 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070025236 "WDI SET PNO: Scan timers count %d 24G P %d 5G Probe %d",
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025237 pPrefNetwListParams->scanTimers.ucScanTimersCount,
Jeff Johnson295189b2012-06-20 16:38:30 -070025238 pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize,
25239 pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize);
25240
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025241 for ( i = 0; i < pPrefNetwListParams->scanTimers.ucScanTimersCount; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070025242 {
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025243 pPrefNetwListParams->scanTimers.aTimerValues[i].uTimerValue =
Jeff Johnson295189b2012-06-20 16:38:30 -070025244 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.aTimerValues[i].uTimerValue;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025245 pPrefNetwListParams->scanTimers.aTimerValues[i].uTimerRepeat =
Jeff Johnson295189b2012-06-20 16:38:30 -070025246 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.aTimerValues[i].uTimerRepeat;
25247 }
25248
25249 /*Copy the probe template*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025250 pPrefNetwListParams->us24GProbeSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070025251 (pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize<
25252 WLAN_HAL_PNO_MAX_PROBE_SIZE)?
25253 pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize:
Jeff Johnsone7245742012-09-05 17:12:55 -070025254 WLAN_HAL_PNO_MAX_PROBE_SIZE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025255
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025256 wpalMemoryCopy(pPrefNetwListParams->a24GProbeTemplate,
Jeff Johnsone7245742012-09-05 17:12:55 -070025257 pwdiPNOScanReqParams->wdiPNOScanInfo.a24GProbeTemplate,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025258 pPrefNetwListParams->us24GProbeSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070025259
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025260 pPrefNetwListParams->us5GProbeSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070025261 (pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize <
25262 WLAN_HAL_PNO_MAX_PROBE_SIZE)?
25263 pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize:
Jeff Johnsone7245742012-09-05 17:12:55 -070025264 WLAN_HAL_PNO_MAX_PROBE_SIZE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025265
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025266 wpalMemoryCopy(pPrefNetwListParams->a5GProbeTemplate,
Jeff Johnsone7245742012-09-05 17:12:55 -070025267 pwdiPNOScanReqParams->wdiPNOScanInfo.a5GProbeTemplate,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025268 pPrefNetwListParams->us5GProbeSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070025269
Jeff Johnson295189b2012-06-20 16:38:30 -070025270
25271 /*Set the output values*/
25272 *ppSendBuffer = pSendBuffer;
Jeff Johnsone7245742012-09-05 17:12:55 -070025273 *pSize = usSendSize;
Jeff Johnson295189b2012-06-20 16:38:30 -070025274
25275 return WDI_STATUS_SUCCESS;
25276}/*WDI_PackPreferredNetworkListNew*/
25277
25278/**
25279 @brief Process Set Preferred Network List Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070025280
25281 @param pWDICtx: pointer to the WLAN DAL context
25282 pEventData: pointer to the event information structure
25283
Jeff Johnson295189b2012-06-20 16:38:30 -070025284 @return Result of the function call
25285*/
25286WDI_Status
25287WDI_ProcessSetPreferredNetworkReq
Jeff Johnsone7245742012-09-05 17:12:55 -070025288(
Jeff Johnson295189b2012-06-20 16:38:30 -070025289 WDI_ControlBlockType* pWDICtx,
25290 WDI_EventInfoType* pEventData
25291)
25292{
25293 WDI_PNOScanReqParamsType* pwdiPNOScanReqParams = NULL;
25294 WDI_PNOScanCb wdiPNOScanCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070025295 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070025296 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070025297 WDI_Status wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070025298
25299 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025300 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070025301 -------------------------------------------------------------------------*/
25302 if (( NULL == pEventData ) ||
25303 ( NULL == (pwdiPNOScanReqParams = (WDI_PNOScanReqParamsType*)pEventData->pEventData)) ||
25304 ( NULL == (wdiPNOScanCb = (WDI_PNOScanCb)pEventData->pCBfnc)))
25305 {
25306 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025307 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025308 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070025309 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025310 }
25311
Mahesh A Saptasagar3604e792014-04-23 20:47:26 +053025312 /*----------------------------------------------------------------------
25313 Avoid Enable PNO during any active session or an ongoing session
25314 ----------------------------------------------------------------------*/
25315 if ( (pwdiPNOScanReqParams->wdiPNOScanInfo.bEnable &&
25316 WDI_GetActiveSessionsCount(pWDICtx, NULL, eWLAN_PAL_FALSE)) )
25317 {
25318 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25319 "%s:(Active/Ongoing Session) - Fail request", __func__);
25320
25321 return WDI_STATUS_E_FAILURE;
25322 }
25323
Jeff Johnson295189b2012-06-20 16:38:30 -070025324 /*-------------------------------------------------------------------------
25325 Pack the PNO request structure based on version
25326 -------------------------------------------------------------------------*/
25327 if ( pWDICtx->wdiPNOVersion > 0 )
25328 {
25329 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025330 "%s: PNO new version %d ", __func__,
Jeff Johnson295189b2012-06-20 16:38:30 -070025331 pWDICtx->wdiPNOVersion);
25332
25333 wdiStatus = WDI_PackPreferredNetworkListNew( pWDICtx, pwdiPNOScanReqParams,
25334 &pSendBuffer, &usSendSize);
25335 }
25336 else
25337 {
25338 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025339 "%s: PNO old version %d ", __func__,
Jeff Johnson295189b2012-06-20 16:38:30 -070025340 pWDICtx->wdiPNOVersion);
25341
25342 wdiStatus = WDI_PackPreferredNetworkList( pWDICtx, pwdiPNOScanReqParams,
25343 &pSendBuffer, &usSendSize);
25344 }
25345
25346 if (( WDI_STATUS_SUCCESS != wdiStatus )||
25347 ( NULL == pSendBuffer )||( 0 == usSendSize ))
25348 {
25349 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025350 "%s: failed to pack request parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025351 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070025352 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070025353 }
25354
25355 pWDICtx->wdiReqStatusCB = pwdiPNOScanReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070025356 pWDICtx->pReqStatusUserData = pwdiPNOScanReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070025357
25358 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025359 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070025360 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025361 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
25362 wdiPNOScanCb, pEventData->pUserData, WDI_SET_PREF_NETWORK_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070025363}
25364
25365/**
25366 @brief Process Set RSSI Filter Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070025367
25368 @param pWDICtx: pointer to the WLAN DAL context
25369 pEventData: pointer to the event information structure
25370
Jeff Johnson295189b2012-06-20 16:38:30 -070025371 @see
25372 @return Result of the function call
25373*/
25374WDI_Status
25375WDI_ProcessSetRssiFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070025376(
Jeff Johnson295189b2012-06-20 16:38:30 -070025377 WDI_ControlBlockType* pWDICtx,
25378 WDI_EventInfoType* pEventData
25379)
25380{
25381 WDI_SetRssiFilterReqParamsType* pwdiRssiFilterReqParams = NULL;
25382 WDI_RssiFilterCb wdiRssiFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070025383 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070025384 wpt_uint16 usDataOffset = 0;
25385 wpt_uint16 usSendSize = 0;
25386 wpt_uint8 ucRssiThreshold;
25387
25388 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025389 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070025390 -------------------------------------------------------------------------*/
25391 if (( NULL == pEventData ) ||
25392 ( NULL == (pwdiRssiFilterReqParams = (WDI_SetRssiFilterReqParamsType*)pEventData->pEventData)) ||
25393 ( NULL == (wdiRssiFilterCb = (WDI_RssiFilterCb)pEventData->pCBfnc)))
25394 {
25395 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025396 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025397 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070025398 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025399 }
25400
25401 /*-----------------------------------------------------------------------
25402 Get message buffer
25403 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025404 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_PREF_NETWORK_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070025405 sizeof(ucRssiThreshold),
25406 &pSendBuffer, &usDataOffset, &usSendSize))||
25407 ( usSendSize < (usDataOffset + sizeof(ucRssiThreshold) )))
25408 {
25409 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080025410 "Unable to get send buffer in Set PNO req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070025411 pEventData, pwdiRssiFilterReqParams, wdiRssiFilterCb);
25412 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070025413 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025414 }
25415
25416 ucRssiThreshold = pwdiRssiFilterReqParams->rssiThreshold;
25417
Jeff Johnsone7245742012-09-05 17:12:55 -070025418 wpalMemoryCopy( pSendBuffer+usDataOffset,
25419 &ucRssiThreshold,
25420 sizeof(ucRssiThreshold));
Jeff Johnson295189b2012-06-20 16:38:30 -070025421
25422 pWDICtx->wdiReqStatusCB = pwdiRssiFilterReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070025423 pWDICtx->pReqStatusUserData = pwdiRssiFilterReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070025424
25425 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025426 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070025427 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025428 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
25429 wdiRssiFilterCb, pEventData->pUserData, WDI_SET_RSSI_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070025430}
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025431#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
25432/**
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025433 @brief WDI_RoamScanOffloadReq
Jeff Johnson295189b2012-06-20 16:38:30 -070025434
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025435 @param pwdiRoamScanOffloadReqParams: the LookupReq as specified
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025436 by the Device Interface
25437
25438 wdiRoamOffloadScancb: callback for passing back the response
25439 of the Roam Candidate Lookup Req operation received from the
25440 device
25441
25442 pUserData: user data will be passed back with the
25443 callback
25444 @return Result of the function call
25445*/
25446WDI_Status
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025447WDI_RoamScanOffloadReq
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025448(
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025449 WDI_RoamScanOffloadReqParamsType* pwdiRoamScanOffloadReqParams,
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025450 WDI_RoamOffloadScanCb wdiRoamOffloadScancb,
25451 void* pUserData
25452)
25453{
25454 WDI_EventInfoType wdiEventData = {{0}};
25455 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25456
25457 /*------------------------------------------------------------------------
25458 Sanity Check
25459 ------------------------------------------------------------------------*/
25460 if ( eWLAN_PAL_FALSE == gWDIInitialized )
25461 {
25462 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25463 "WDI API call before module is initialized - Fail request");
25464
25465 return WDI_STATUS_E_NOT_ALLOWED;
25466 }
25467
25468 /*------------------------------------------------------------------------
25469 Fill in Event data and post to the Main FSM
25470 ------------------------------------------------------------------------*/
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025471 wdiEventData.wdiRequest = WDI_ROAM_SCAN_OFFLOAD_REQ;
25472 wdiEventData.pEventData = pwdiRoamScanOffloadReqParams;
25473 wdiEventData.uEventDataSize = sizeof(*pwdiRoamScanOffloadReqParams);
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025474 wdiEventData.pCBfnc = wdiRoamOffloadScancb;
25475 wdiEventData.pUserData = pUserData;
25476
25477 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
25478}
25479
25480void
25481WDI_wdiEdTypeEncToEdTypeEnc(tEdType *EdType, WDI_EdType wdiEdType)
25482{
25483 switch (wdiEdType)
25484 {
25485 case WDI_ED_NONE:
25486 *EdType = eED_NONE;
25487 break;
25488 case WDI_ED_WEP40:
25489 case WDI_ED_WEP104:
25490 *EdType = eED_WEP;
25491 break;
25492 case WDI_ED_TKIP:
25493 *EdType = eED_TKIP;
25494 break;
25495 case WDI_ED_CCMP:
25496#ifdef WLAN_FEATURE_11W
25497 case WDI_ED_AES_128_CMAC:
25498#endif
25499 *EdType = eED_CCMP;
25500 break;
25501#ifdef FEATURE_WLAN_WAPI
25502 case WDI_ED_WPI:
25503 *EdType = eED_WPI;
25504 break;
25505#endif
25506 case WDI_ED_ANY:
25507 *EdType = eED_ANY;
25508 break;
25509
25510 default:
25511 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
25512 "%s: Unknown Encryption Type", __func__);
25513 break;
25514 }
25515}
25516
25517/**
25518 @brief Helper function to pack Start Roam Candidate Lookup
25519 Request parameters
25520
25521 @param pWDICtx: pointer to the WLAN DAL context
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025522 pwdiRoamScanOffloadReqParams: pointer to the info received
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025523 from upper layers
25524 ppSendBuffer, pSize - out pointers of the packed buffer
25525 and its size
25526
25527 @return Result of the function call
25528*/
25529
25530WDI_Status
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025531WDI_PackRoamScanOffloadParams
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025532(
25533 WDI_ControlBlockType* pWDICtx,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025534 WDI_RoamScanOffloadReqParamsType* pwdiRoamScanOffloadReqParams,
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025535 wpt_uint8** ppSendBuffer,
25536 wpt_uint16* pSize
25537)
25538{
25539 wpt_uint8* pSendBuffer = NULL;
25540 wpt_uint16 usDataOffset = 0;
25541 wpt_uint16 usSendSize = 0;
25542 tpRoamCandidateListParams pRoamCandidateListParams = NULL;
25543 wpt_uint8 i;
25544 /*-----------------------------------------------------------------------
25545 Get message buffer
25546 -----------------------------------------------------------------------*/
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025547 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ROAM_SCAN_OFFLOAD_REQ,
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025548 sizeof(tRoamCandidateListParams),
25549 &pSendBuffer, &usDataOffset, &usSendSize))||
Varun Reddy Yeturu83952072013-06-03 11:31:52 -070025550 ( usSendSize < (usDataOffset + sizeof(tRoamCandidateListParams) )))
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025551 {
25552 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080025553 "Unable to get send buffer in Start Roam Candidate Lookup Req %p",
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025554 pwdiRoamScanOffloadReqParams);
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025555 WDI_ASSERT(0);
25556 return WDI_STATUS_E_FAILURE;
25557 }
25558 pRoamCandidateListParams = (tpRoamCandidateListParams)(pSendBuffer + usDataOffset);
Varun Reddy Yeturu83952072013-06-03 11:31:52 -070025559 wpalMemoryZero(pRoamCandidateListParams, sizeof(tRoamCandidateListParams));
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025560 pRoamCandidateListParams->RoamScanOffloadEnabled = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.RoamScanOffloadEnabled;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025561 wpalMemoryCopy(pRoamCandidateListParams->ConnectedNetwork.currAPbssid,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025562 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.currAPbssid,
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025563 HAL_MAC_ADDR_LEN);
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025564 pRoamCandidateListParams->ConnectedNetwork.authentication = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.authentication;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025565 WDI_wdiEdTypeEncToEdTypeEnc(&pRoamCandidateListParams->ConnectedNetwork.encryption,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025566 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.encryption);
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025567 WDI_wdiEdTypeEncToEdTypeEnc(&pRoamCandidateListParams->ConnectedNetwork.mcencryption,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025568 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.mcencryption);
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025569
25570 pRoamCandidateListParams->ConnectedNetwork.ssId.length
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025571 = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.ssId.ucLength;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025572 wpalMemoryCopy( pRoamCandidateListParams->ConnectedNetwork.ssId.ssId,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025573 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.ssId.sSSID,
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025574 pRoamCandidateListParams->ConnectedNetwork.ssId.length);
25575 wpalMemoryCopy(pRoamCandidateListParams->ConnectedNetwork.ChannelCache,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025576 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.ChannelCache,
25577 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.ChannelCount );
25578 pRoamCandidateListParams->ConnectedNetwork.ChannelCount = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.ChannelCount;
25579 pRoamCandidateListParams->ChannelCacheType = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ChannelCacheType ;
25580 pRoamCandidateListParams->LookupThreshold = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.LookupThreshold;
Varun Reddy Yeturu6c5e25c2014-01-09 21:55:37 -080025581 pRoamCandidateListParams->RxSensitivityThreshold = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.RxSensitivityThreshold;
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025582 pRoamCandidateListParams->RoamRssiDiff = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.RoamRssiDiff ;
Sameer Thalappil4ae66ec2013-11-05 14:17:35 -080025583 pRoamCandidateListParams->MAWCEnabled = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.MAWCEnabled ;
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025584 pRoamCandidateListParams->Command = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.Command ;
25585 pRoamCandidateListParams->StartScanReason = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.StartScanReason ;
25586 pRoamCandidateListParams->NeighborScanTimerPeriod = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.NeighborScanTimerPeriod ;
25587 pRoamCandidateListParams->NeighborRoamScanRefreshPeriod = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.NeighborRoamScanRefreshPeriod ;
25588 pRoamCandidateListParams->NeighborScanChannelMinTime = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.NeighborScanChannelMinTime ;
25589 pRoamCandidateListParams->NeighborScanChannelMaxTime = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.NeighborScanChannelMaxTime ;
25590 pRoamCandidateListParams->EmptyRefreshScanPeriod = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.EmptyRefreshScanPeriod ;
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -080025591 pRoamCandidateListParams->IsESEEnabled = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.IsESEEnabled ;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025592 wpalMemoryCopy(pRoamCandidateListParams->ValidChannelList,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025593 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ValidChannelList,
25594 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ValidChannelCount);
25595 pRoamCandidateListParams->ValidChannelCount = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ValidChannelCount;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025596
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025597 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO_HIGH,
25598 "Values are ssid = %s, RoamOffloadScan=%d,Command=%d,"
25599 "StartScanReason=%d,NeighborScanTimerPeriod=%d,"
25600 "NeighborRoamScanRefreshPeriod=%d,NeighborScanChannelMinTime=%d,"
25601 "NeighborScanChannelMaxTime = %d,EmptyRefreshScanPeriod=%d,"
25602 "mdiePresent=%d,MDID=%d, auth=%d, uce=%d, mce=%d, nProbes=%d,"
Arif Hussain9a5d5382013-11-17 22:05:35 -080025603 "HomeAwayTime=%d",
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025604 pRoamCandidateListParams->ConnectedNetwork.ssId.ssId,
25605 pRoamCandidateListParams->RoamScanOffloadEnabled,
25606 pRoamCandidateListParams->Command,
25607 pRoamCandidateListParams->StartScanReason,
25608 pRoamCandidateListParams->NeighborScanTimerPeriod,
25609 pRoamCandidateListParams->NeighborRoamScanRefreshPeriod,
25610 pRoamCandidateListParams->NeighborScanChannelMinTime,
25611 pRoamCandidateListParams->NeighborScanChannelMaxTime,
25612 pRoamCandidateListParams->EmptyRefreshScanPeriod,
25613 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.MDID.mdiePresent,
25614 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.MDID.mobilityDomain,
25615 pRoamCandidateListParams->ConnectedNetwork.authentication,
25616 pRoamCandidateListParams->ConnectedNetwork.encryption,
25617 pRoamCandidateListParams->ConnectedNetwork.mcencryption,
25618 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.nProbes,
25619 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.HomeAwayTime);
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025620 pRoamCandidateListParams->us24GProbeSize =
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025621 (pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.us24GProbeSize<
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025622 WLAN_HAL_ROAM_SCAN_MAX_PROBE_SIZE)?
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025623 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.us24GProbeSize:
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025624 WLAN_HAL_ROAM_SCAN_MAX_PROBE_SIZE;
25625 wpalMemoryCopy(pRoamCandidateListParams->a24GProbeTemplate,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025626 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.a24GProbeTemplate,
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025627 pRoamCandidateListParams->us24GProbeSize);
25628 pRoamCandidateListParams->us5GProbeSize =
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025629 (pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.us5GProbeSize<
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025630 WLAN_HAL_ROAM_SCAN_MAX_PROBE_SIZE)?
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025631 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.us5GProbeSize:
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025632 WLAN_HAL_ROAM_SCAN_MAX_PROBE_SIZE;
25633 wpalMemoryCopy(pRoamCandidateListParams->a5GProbeTemplate,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025634 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.a5GProbeTemplate,
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025635 pRoamCandidateListParams->us5GProbeSize);
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025636 pRoamCandidateListParams->MDID.mdiePresent = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.MDID.mdiePresent;
25637 pRoamCandidateListParams->MDID.mobilityDomain = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.MDID.mobilityDomain;
25638 pRoamCandidateListParams->nProbes =
25639 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.nProbes;
25640 pRoamCandidateListParams->HomeAwayTime =
25641 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.HomeAwayTime;
25642 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO_HIGH,"Valid Channel List");
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025643 for (i=0; i<pRoamCandidateListParams->ValidChannelCount ; i++)
25644 {
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025645 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO_HIGH,"%d", pRoamCandidateListParams->ValidChannelList[i]);
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025646 }
25647
25648
25649 /*Set the output values*/
25650 *ppSendBuffer = pSendBuffer;
25651 *pSize = usSendSize;
25652 return WDI_STATUS_SUCCESS;
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025653}/*WDI_PackRoamScanOffloadParams*/
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025654
25655/**
25656 @brief Process Start Roam Candidate Lookup Request function
25657
25658 @param pWDICtx: pointer to the WLAN DAL context
25659 pEventData: pointer to the event information structure
25660
25661 @return Result of the function call
25662*/
25663WDI_Status
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025664WDI_ProcessRoamScanOffloadReq
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025665(
25666 WDI_ControlBlockType* pWDICtx,
25667 WDI_EventInfoType* pEventData
25668)
25669{
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025670 WDI_RoamScanOffloadReqParamsType* pwdiRoamScanOffloadReqParams = NULL;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025671 WDI_RoamOffloadScanCb wdiRoamOffloadScancb = NULL;
25672 wpt_uint8* pSendBuffer = NULL;
25673 wpt_uint16 usSendSize = 0;
25674 WDI_Status wdiStatus;
25675 /*-------------------------------------------------------------------------
25676 Sanity check
25677 -------------------------------------------------------------------------*/
25678 if (( NULL == pEventData ) ||
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025679 ( NULL == (pwdiRoamScanOffloadReqParams = (WDI_RoamScanOffloadReqParamsType*)pEventData->pEventData)) ||
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025680 ( NULL == (wdiRoamOffloadScancb = (WDI_RoamOffloadScanCb)pEventData->pCBfnc)))
25681 {
25682 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
25683 "%s: Invalid parameters", __func__);
25684 WDI_ASSERT(0);
25685 return WDI_STATUS_E_FAILURE;
25686 }
25687
25688 /*-------------------------------------------------------------------------
25689 Pack the Start Roam Candidate Lookup request structure based on version
25690 -------------------------------------------------------------------------*/
25691 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
25692 "%s: Packing Roam Candidate Lookup request ", __func__);
25693
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025694 wdiStatus = WDI_PackRoamScanOffloadParams( pWDICtx, pwdiRoamScanOffloadReqParams,
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025695 &pSendBuffer, &usSendSize);
25696
25697 if (( WDI_STATUS_SUCCESS != wdiStatus )||
25698 ( NULL == pSendBuffer )||( 0 == usSendSize ))
25699 {
25700 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
25701 "%s: failed to pack request parameters", __func__);
25702 WDI_ASSERT(0);
25703 return wdiStatus;
25704 }
25705
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025706 pWDICtx->wdiReqStatusCB = pwdiRoamScanOffloadReqParams->wdiReqStatusCB;
25707 pWDICtx->pReqStatusUserData = pwdiRoamScanOffloadReqParams->pUserData;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025708
25709 /*-------------------------------------------------------------------------
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025710 Send WDI_ROAM_SCAN_OFFLOAD_REQ to HAL
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025711 -------------------------------------------------------------------------*/
25712 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025713 wdiRoamOffloadScancb, pEventData->pUserData, WDI_ROAM_SCAN_OFFLOAD_RESP);
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025714}
25715
25716/**
25717 @brief Process Start Roam Candidate Lookup Rsp function (called when a
25718 response is being received over the bus from HAL)
25719
25720 @param pWDICtx: pointer to the WLAN DAL context
25721 pEventData: pointer to the event information structure
25722
25723 @see
25724 @return Result of the function call
25725*/
25726WDI_Status
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025727WDI_ProcessRoamScanOffloadRsp
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025728(
25729 WDI_ControlBlockType* pWDICtx,
25730 WDI_EventInfoType* pEventData
25731)
25732{
25733 WDI_Status wdiStatus;
25734 eHalStatus halStatus;
25735 WDI_RoamOffloadScanCb wdiRoamOffloadScancb = NULL;
25736
25737 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25738
25739 /*-------------------------------------------------------------------------
25740 Sanity check
25741 -------------------------------------------------------------------------*/
25742 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
25743 ( NULL == pEventData->pEventData ))
25744 {
25745 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
25746 "%s: Invalid parameters", __func__);
25747 WDI_ASSERT(0);
25748 return WDI_STATUS_E_FAILURE;
25749 }
25750
25751 wdiRoamOffloadScancb = (WDI_RoamOffloadScanCb)pWDICtx->pfncRspCB;
25752
25753 /*-------------------------------------------------------------------------
25754 Extract response and send it to UMAC
25755 -------------------------------------------------------------------------*/
25756 halStatus = *((eHalStatus*)pEventData->pEventData);
25757 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
25758
25759 /*Notify UMAC*/
25760 wdiRoamOffloadScancb(wdiStatus, pWDICtx->pRspCBUserData);
25761
25762 return WDI_STATUS_SUCCESS;
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025763}/* WDI_ProcessRoamScanOffloadRsp */
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025764#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070025765
25766/**
25767 @brief Process Update Scan Params function
Jeff Johnsone7245742012-09-05 17:12:55 -070025768
25769 @param pWDICtx: pointer to the WLAN DAL context
25770 pEventData: pointer to the event information structure
25771
Jeff Johnson295189b2012-06-20 16:38:30 -070025772 @see
25773 @return Result of the function call
25774*/
25775WDI_Status
Pratik Bhalgatd4404592012-11-22 17:49:14 +053025776WDI_PackUpdateScanParamsReq
25777(
25778 WDI_ControlBlockType* pWDICtx,
25779 WDI_UpdateScanParamsInfoType* pwdiUpdateScanParams,
25780 wpt_uint8** ppSendBuffer,
25781 wpt_uint16* pSize
25782)
25783{
25784 wpt_uint8* pSendBuffer = NULL;
25785 wpt_uint16 usDataOffset = 0;
25786 wpt_uint16 usSendSize = 0;
25787 tUpdateScanParams updateScanParams = {0};
25788
25789
Varun Reddy Yeturuf68abd62013-02-11 14:05:06 -080025790 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Pratik Bhalgatd4404592012-11-22 17:49:14 +053025791 "Begin WDI Update Scan Parameters Old Style Params");
25792 /*-----------------------------------------------------------------------
25793 Get message buffer
25794 -----------------------------------------------------------------------*/
25795 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_SCAN_PARAMS_REQ,
25796 sizeof(updateScanParams),
25797 &pSendBuffer, &usDataOffset, &usSendSize))||
25798 ( usSendSize < (usDataOffset + sizeof(updateScanParams) )))
25799 {
25800 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080025801 "Unable to get send buffer in Update Scan Params req %p",
Pratik Bhalgatd4404592012-11-22 17:49:14 +053025802 pwdiUpdateScanParams);
25803 WDI_ASSERT(0);
25804 return WDI_STATUS_E_FAILURE;
25805 }
25806
25807 //
25808 // Fill updateScanParams from pwdiUpdateScanParams->wdiUpdateScanParamsInfo
25809 //
25810
25811 updateScanParams.b11dEnabled = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.b11dEnabled;
25812 updateScanParams.b11dResolved = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.b11dResolved;
25813
25814 updateScanParams.ucChannelCount =
25815 (pwdiUpdateScanParams->wdiUpdateScanParamsInfo.ucChannelCount <
25816 WLAN_HAL_PNO_MAX_NETW_CHANNELS)?
25817 pwdiUpdateScanParams->wdiUpdateScanParamsInfo.ucChannelCount :
25818 WLAN_HAL_PNO_MAX_NETW_CHANNELS;
25819
25820 wpalMemoryCopy( updateScanParams.aChannels,
25821 pwdiUpdateScanParams->wdiUpdateScanParamsInfo.aChannels,
25822 updateScanParams.ucChannelCount);
25823
25824
25825 updateScanParams.usActiveMinChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usActiveMinChTime;
25826 updateScanParams.usActiveMaxChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usActiveMaxChTime;
25827 updateScanParams.usPassiveMinChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usPassiveMinChTime;
25828 updateScanParams.usPassiveMaxChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usPassiveMaxChTime;
25829 updateScanParams.cbState = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.cbState;
25830
25831 wpalMemoryCopy( pSendBuffer+usDataOffset,
25832 &updateScanParams,
25833 sizeof(updateScanParams));
25834
25835 pWDICtx->wdiReqStatusCB = pwdiUpdateScanParams->wdiReqStatusCB;
25836 pWDICtx->pReqStatusUserData = pwdiUpdateScanParams->pUserData;
25837
Varun Reddy Yeturuf68abd62013-02-11 14:05:06 -080025838 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Pratik Bhalgatd4404592012-11-22 17:49:14 +053025839 "End Update Scan Parameters Old Style");
25840
25841 /*Set the output values*/
25842 *ppSendBuffer = pSendBuffer;
25843 *pSize = usSendSize;
25844
25845 return WDI_STATUS_SUCCESS;
25846}
25847
25848/**
25849 @brief Process Update Scan Params function
25850
25851 @param pWDICtx: pointer to the WLAN DAL context
25852 pEventData: pointer to the event information structure
25853
25854 @see
25855 @return Result of the function call
25856*/
25857WDI_Status
25858WDI_PackUpdateScanParamsReqEx
25859(
25860 WDI_ControlBlockType* pWDICtx,
25861 WDI_UpdateScanParamsInfoType* pwdiUpdateScanParams,
25862 wpt_uint8** ppSendBuffer,
25863 wpt_uint16* pSize
25864)
25865{
25866 wpt_uint8* pSendBuffer = NULL;
25867 wpt_uint16 usDataOffset = 0;
25868 wpt_uint16 usSendSize = 0;
25869 tUpdateScanParamsEx updateScanParams = {0};
25870
25871
Pratik Bhalgatd4404592012-11-22 17:49:14 +053025872 /*-----------------------------------------------------------------------
25873 Get message buffer
25874 -----------------------------------------------------------------------*/
25875 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_SCAN_PARAMS_REQ,
25876 sizeof(updateScanParams),
25877 &pSendBuffer, &usDataOffset, &usSendSize))||
25878 ( usSendSize < (usDataOffset + sizeof(updateScanParams) )))
25879 {
25880 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080025881 "Unable to get send buffer in Update Scan Params Ex req %p",
Pratik Bhalgatd4404592012-11-22 17:49:14 +053025882 pwdiUpdateScanParams);
25883 WDI_ASSERT(0);
25884 return WDI_STATUS_E_FAILURE;
25885 }
25886
25887 //
25888 // Fill updateScanParams from pwdiUpdateScanParams->wdiUpdateScanParamsInfo
25889 //
25890
25891 updateScanParams.b11dEnabled = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.b11dEnabled;
25892 updateScanParams.b11dResolved = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.b11dResolved;
25893
25894 updateScanParams.ucChannelCount =
25895 (pwdiUpdateScanParams->wdiUpdateScanParamsInfo.ucChannelCount <
25896 WLAN_HAL_PNO_MAX_NETW_CHANNELS_EX)?
25897 pwdiUpdateScanParams->wdiUpdateScanParamsInfo.ucChannelCount :
25898 WLAN_HAL_PNO_MAX_NETW_CHANNELS_EX;
25899
25900 wpalMemoryCopy( updateScanParams.aChannels,
25901 pwdiUpdateScanParams->wdiUpdateScanParamsInfo.aChannels,
25902 updateScanParams.ucChannelCount);
25903
25904
25905 updateScanParams.usActiveMinChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usActiveMinChTime;
25906 updateScanParams.usActiveMaxChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usActiveMaxChTime;
25907 updateScanParams.usPassiveMinChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usPassiveMinChTime;
25908 updateScanParams.usPassiveMaxChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usPassiveMaxChTime;
25909 updateScanParams.cbState = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.cbState;
25910
25911 wpalMemoryCopy( pSendBuffer+usDataOffset,
25912 &updateScanParams,
25913 sizeof(updateScanParams));
25914
25915 pWDICtx->wdiReqStatusCB = pwdiUpdateScanParams->wdiReqStatusCB;
25916 pWDICtx->pReqStatusUserData = pwdiUpdateScanParams->pUserData;
25917
Pratik Bhalgatd4404592012-11-22 17:49:14 +053025918 /*Set the output values*/
25919 *ppSendBuffer = pSendBuffer;
25920 *pSize = usSendSize;
25921
25922 return WDI_STATUS_SUCCESS;
25923}
25924
25925/**
25926 @brief Process Update Scan Params function
25927
25928 @param pWDICtx: pointer to the WLAN DAL context
25929 pEventData: pointer to the event information structure
25930
25931 @see
25932 @return Result of the function call
25933*/
25934WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070025935WDI_ProcessUpdateScanParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070025936(
Jeff Johnson295189b2012-06-20 16:38:30 -070025937 WDI_ControlBlockType* pWDICtx,
25938 WDI_EventInfoType* pEventData
25939)
25940{
25941 WDI_UpdateScanParamsInfoType* pwdiUpdateScanParams = NULL;
25942 WDI_UpdateScanParamsCb wdiUpdateScanParamsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070025943 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070025944 wpt_uint16 usSendSize = 0;
Pullela Naga Venkata Sai Ravaliab91c6b2012-12-27 17:31:42 -080025945 WDI_Status wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070025946
25947 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025948 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070025949 -------------------------------------------------------------------------*/
25950 if (( NULL == pEventData ) ||
25951 ( NULL == (pwdiUpdateScanParams = (WDI_UpdateScanParamsInfoType*)pEventData->pEventData)) ||
25952 ( NULL == (wdiUpdateScanParamsCb = (WDI_UpdateScanParamsCb)pEventData->pCBfnc)))
25953 {
25954 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025955 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025956 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070025957 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025958 }
25959
25960 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
25961 "Begin WDI Update Scan Parameters");
Jeff Johnson295189b2012-06-20 16:38:30 -070025962
25963 //
25964 // Fill updateScanParams from pwdiUpdateScanParams->wdiUpdateScanParamsInfo
25965 //
Pratik Bhalgatd4404592012-11-22 17:49:14 +053025966 if ( pWDICtx->wlanVersion.revision < 1 )
25967 {
Pullela Naga Venkata Sai Ravaliab91c6b2012-12-27 17:31:42 -080025968 wdiStatus = WDI_PackUpdateScanParamsReq( pWDICtx, pwdiUpdateScanParams,
Pratik Bhalgatd4404592012-11-22 17:49:14 +053025969 &pSendBuffer, &usSendSize);
25970 }
25971 else
25972 {
Pullela Naga Venkata Sai Ravaliab91c6b2012-12-27 17:31:42 -080025973 wdiStatus = WDI_PackUpdateScanParamsReqEx( pWDICtx, pwdiUpdateScanParams,
25974 &pSendBuffer, &usSendSize);
25975 }
25976
25977 if(WDI_STATUS_SUCCESS != wdiStatus)
25978 {
25979 //memory allocation failed
25980 return WDI_STATUS_E_FAILURE;
Pratik Bhalgatd4404592012-11-22 17:49:14 +053025981 }
Jeff Johnson295189b2012-06-20 16:38:30 -070025982
Jeff Johnson295189b2012-06-20 16:38:30 -070025983 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025984 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070025985 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025986 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Pratik Bhalgatd4404592012-11-22 17:49:14 +053025987 wdiUpdateScanParamsCb, pEventData->pUserData,
25988 WDI_UPDATE_SCAN_PARAMS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070025989}
25990
25991/**
Manjunathappa Prakash86f78ca2014-02-10 18:09:15 -080025992 @brief Process Update Channel Params function
25993
25994 @param pWDICtx: pointer to the WLAN DAL context
25995 pEventData: pointer to the event information structure
25996
25997 @see
25998 @return Result of the function call
25999*/
26000WDI_Status
26001WDI_ProcessUpdateChannelParamsReq
26002(
26003 WDI_ControlBlockType* pWDICtx,
26004 WDI_EventInfoType* pEventData
26005)
26006{
26007 WDI_UpdateChReqParamsType *pwdiUpdateChanListParams = NULL;
26008 WDI_UpdateChannelRspCb wdiUpdateChanParamsCb = NULL;
26009 wpt_uint8* pSendBuffer = NULL;
26010 wpt_uint16 usDataOffset = 0;
26011 wpt_uint16 usSendSize = 0;
26012 tUpdateChannelReqType *updateChannelParams;
26013 wpt_uint32 usUpdateChanParamSize;
26014 wpt_uint8 num_channels = 0;
26015
26016 /*-------------------------------------------------------------------------
26017 Sanity check
26018 -------------------------------------------------------------------------*/
26019 if (( NULL == pEventData ) ||
26020 ( NULL == (pwdiUpdateChanListParams = (WDI_UpdateChReqParamsType*)pEventData->pEventData)) ||
26021 ( NULL == (wdiUpdateChanParamsCb = (WDI_UpdateChannelRspCb)pEventData->pCBfnc)))
26022 {
26023 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
26024 "%s: Invalid parameters", __func__);
26025 WDI_ASSERT(0);
26026 return WDI_STATUS_E_FAILURE;
26027 }
26028 num_channels = pwdiUpdateChanListParams->wdiUpdateChanParams.numchan;
26029 usUpdateChanParamSize = (sizeof(tUpdateChannelReqType) -
26030 ((WLAN_HAL_ROAM_SCAN_MAX_CHANNELS - num_channels) *
26031 sizeof(tUpdateChannelParam)));
26032
26033 /*-----------------------------------------------------------------------
26034 Get message buffer
26035 -----------------------------------------------------------------------*/
26036 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
26037 WDI_UPDATE_CHAN_REQ, usUpdateChanParamSize,
26038 &pSendBuffer, &usDataOffset, &usSendSize))||
26039 ( usSendSize < (usDataOffset + usUpdateChanParamSize)))
26040 {
26041 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
26042 "Unable to get send buffer in Update Channel Params req %p",
26043 pwdiUpdateChanListParams);
26044 WDI_ASSERT(0);
26045 return WDI_STATUS_E_FAILURE;
26046 }
26047 updateChannelParams = (tUpdateChannelReqType *)(pSendBuffer + usDataOffset);
26048
26049 updateChannelParams->numChan = num_channels;
26050 wpalMemoryCopy(&updateChannelParams->chanParam,
26051 pwdiUpdateChanListParams->wdiUpdateChanParams.pchanParam,
26052 sizeof(WDI_UpdateChannelReqinfoType) * num_channels);
26053
26054 pWDICtx->wdiReqStatusCB = pwdiUpdateChanListParams->wdiReqStatusCB;
26055 pWDICtx->pReqStatusUserData = pwdiUpdateChanListParams->pUserData;
26056
26057 /*-------------------------------------------------------------------------
26058 Send Update channel request to fw
26059 -------------------------------------------------------------------------*/
26060 return WDI_SendMsg(pWDICtx, pSendBuffer, usSendSize,
26061 wdiUpdateChanParamsCb, pEventData->pUserData,
26062 WDI_UPDATE_CHAN_RESP);
26063}
26064
26065/**
Jeff Johnson295189b2012-06-20 16:38:30 -070026066 @brief Process Preferred Network Found Indication function
Jeff Johnsone7245742012-09-05 17:12:55 -070026067
26068 @param pWDICtx: pointer to the WLAN DAL context
26069 pEventData: pointer to the event information structure
26070
Jeff Johnson295189b2012-06-20 16:38:30 -070026071 @see
26072 @return Result of the function call
26073*/
26074WDI_Status
26075WDI_ProcessPrefNetworkFoundInd
Jeff Johnsone7245742012-09-05 17:12:55 -070026076(
Jeff Johnson295189b2012-06-20 16:38:30 -070026077 WDI_ControlBlockType* pWDICtx,
26078 WDI_EventInfoType* pEventData
26079)
26080{
Srikant Kuppa066904f2013-05-07 13:56:02 -070026081 WDI_LowLevelIndType wdiInd;
26082 tpPrefNetwFoundParams pNetwFoundParams;
26083 wpt_uint32 msgsize;
Jeff Johnson295189b2012-06-20 16:38:30 -070026084
26085
26086 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026087 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070026088 -------------------------------------------------------------------------*/
26089 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
26090 ( NULL == pEventData->pEventData ))
26091 {
26092 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026093 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026094 WDI_ASSERT( 0 );
Jeff Johnsone7245742012-09-05 17:12:55 -070026095 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026096 }
26097
26098 /*-------------------------------------------------------------------------
26099 Extract indication and send it to UMAC
26100 -------------------------------------------------------------------------*/
Srikant Kuppa066904f2013-05-07 13:56:02 -070026101 pNetwFoundParams = (tpPrefNetwFoundParams)(pEventData->pEventData);
26102
26103 msgsize = sizeof(tPrefNetwFoundParams) + pNetwFoundParams->frameLength;
26104 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.pData =
26105 (wpt_uint8 *)wpalMemoryAllocate(msgsize);
26106
26107 if (NULL == wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.pData)
26108 {
26109 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
26110 "%s: fail to allocate memory", __func__);
26111 return WDI_STATUS_MEM_FAILURE;
26112 }
26113
26114 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.ucLength =
26115 (pNetwFoundParams->ssId.length < 32 )?
26116 pNetwFoundParams->ssId.length : 32;
26117 wpalMemoryCopy( wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.sSSID,
26118 pNetwFoundParams->ssId.ssId,
26119 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.ucLength);
26120 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.rssi = pNetwFoundParams->rssi;
26121 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.frameLength =
26122 pNetwFoundParams->frameLength;
26123 wpalMemoryCopy( wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.pData,
26124 (wpt_uint8 *)pEventData->pEventData + sizeof(tPrefNetwFoundParams),
26125 pNetwFoundParams->frameLength);
Jeff Johnson295189b2012-06-20 16:38:30 -070026126
26127 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070026128 wdiInd.wdiIndicationType = WDI_PREF_NETWORK_FOUND_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070026129
Jeff Johnson295189b2012-06-20 16:38:30 -070026130 // DEBUG
26131 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Wilson Yang56002a22013-08-28 17:55:56 -070026132 "[PNO WDI] PREF_NETWORK_FOUND_IND Type (%x) data (SSID=%.*s, LENGTH=%u, RSSI=%u)",
Jeff Johnson295189b2012-06-20 16:38:30 -070026133 wdiInd.wdiIndicationType,
Wilson Yang56002a22013-08-28 17:55:56 -070026134 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.ucLength,
Jeff Johnson295189b2012-06-20 16:38:30 -070026135 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.sSSID,
Wilson Yang56002a22013-08-28 17:55:56 -070026136 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.ucLength,
Jeff Johnson295189b2012-06-20 16:38:30 -070026137 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.rssi );
26138
ltimariub77f24b2013-01-24 18:54:33 -080026139 if ( pWDICtx->wdiLowLevelIndCB )
26140 {
26141 /*Notify UMAC*/
26142 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
26143 }
Jeff Johnsone7245742012-09-05 17:12:55 -070026144
26145 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070026146}
26147
26148/**
26149 @brief Process PNO Rsp function (called when a
26150 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070026151
26152 @param pWDICtx: pointer to the WLAN DAL context
26153 pEventData: pointer to the event information structure
26154
Jeff Johnson295189b2012-06-20 16:38:30 -070026155 @see
26156 @return Result of the function call
26157*/
26158WDI_Status
26159WDI_ProcessSetPreferredNetworkRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070026160(
Jeff Johnson295189b2012-06-20 16:38:30 -070026161 WDI_ControlBlockType* pWDICtx,
26162 WDI_EventInfoType* pEventData
26163)
26164{
26165 WDI_Status wdiStatus;
26166 eHalStatus halStatus;
26167 WDI_PNOScanCb wdiPNOScanCb = NULL;
26168 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26169
26170 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026171 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070026172 -------------------------------------------------------------------------*/
26173 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
26174 ( NULL == pEventData->pEventData ))
26175 {
26176 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026177 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026178 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026179 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026180 }
26181
26182
Jeff Johnsone7245742012-09-05 17:12:55 -070026183 wdiPNOScanCb = (WDI_PNOScanCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070026184
26185 /*-------------------------------------------------------------------------
26186 Extract response and send it to UMAC
26187 -------------------------------------------------------------------------*/
26188 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070026189 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070026190
26191 /*Notify UMAC*/
26192 wdiPNOScanCb(wdiStatus, pWDICtx->pRspCBUserData);
26193
Jeff Johnsone7245742012-09-05 17:12:55 -070026194 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070026195}/*WDI_ProcessSetPreferredNetworkRsp*/
26196
26197/**
26198 @brief Process RSSI Filter Rsp function (called when a
26199 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070026200
26201 @param pWDICtx: pointer to the WLAN DAL context
26202 pEventData: pointer to the event information structure
26203
Jeff Johnson295189b2012-06-20 16:38:30 -070026204 @see
26205 @return Result of the function call
26206*/
26207WDI_Status
26208WDI_ProcessSetRssiFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070026209(
Jeff Johnson295189b2012-06-20 16:38:30 -070026210 WDI_ControlBlockType* pWDICtx,
26211 WDI_EventInfoType* pEventData
26212)
26213{
26214 WDI_Status wdiStatus;
26215 eHalStatus halStatus;
26216 WDI_RssiFilterCb wdiRssiFilterCb;
26217 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26218
26219 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026220 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070026221 -------------------------------------------------------------------------*/
26222 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
26223 ( NULL == pEventData->pEventData ))
26224 {
26225 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026226 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026227 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026228 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026229 }
26230
Jeff Johnsone7245742012-09-05 17:12:55 -070026231 wdiRssiFilterCb = (WDI_RssiFilterCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070026232
26233 /*-------------------------------------------------------------------------
26234 Extract response and send it to UMAC
26235 -------------------------------------------------------------------------*/
26236 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070026237 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070026238
26239 /*Notify UMAC*/
26240 wdiRssiFilterCb(wdiStatus, pWDICtx->pRspCBUserData);
26241
Jeff Johnsone7245742012-09-05 17:12:55 -070026242 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070026243}/*WDI_ProcessSetRssiFilterRsp*/
26244
26245/**
26246 @brief Process Update Scan Params Rsp function (called when a
26247 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070026248
26249 @param pWDICtx: pointer to the WLAN DAL context
26250 pEventData: pointer to the event information structure
26251
Jeff Johnson295189b2012-06-20 16:38:30 -070026252 @see
26253 @return Result of the function call
26254*/
26255WDI_Status
26256WDI_ProcessUpdateScanParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070026257(
Jeff Johnson295189b2012-06-20 16:38:30 -070026258 WDI_ControlBlockType* pWDICtx,
26259 WDI_EventInfoType* pEventData
26260)
26261{
26262 WDI_Status wdiStatus;
Jeff Johnsone7245742012-09-05 17:12:55 -070026263 tUpdateScanParamsResp halUpdScanParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070026264 WDI_UpdateScanParamsCb wdiUpdateScanParamsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070026265 wpt_uint32 uStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070026266 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26267
26268 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026269 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070026270 -------------------------------------------------------------------------*/
26271 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
26272 ( NULL == pEventData->pEventData ))
26273 {
26274 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026275 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026276 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026277 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026278 }
26279
26280 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080026281 "%s: Process UPD scan params ptr : %p",
26282 __func__, pEventData->pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070026283
Jeff Johnsone7245742012-09-05 17:12:55 -070026284 wdiUpdateScanParamsCb = (WDI_UpdateScanParamsCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070026285
26286 /*-------------------------------------------------------------------------
26287 Extract response and send it to UMAC
26288 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070026289 wpalMemoryCopy( (void *)&halUpdScanParams.status,
26290 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070026291 sizeof(halUpdScanParams.status));
26292
26293 uStatus = halUpdScanParams.status;
26294
26295 /*Extract PNO version - 1st bit of the status */
Jeff Johnsone7245742012-09-05 17:12:55 -070026296 pWDICtx->wdiPNOVersion = (uStatus & WDI_PNO_VERSION_MASK)? 1:0;
Jeff Johnson295189b2012-06-20 16:38:30 -070026297
26298 /*Remove version bit*/
Jeff Johnsone7245742012-09-05 17:12:55 -070026299 uStatus = uStatus & ( ~(WDI_PNO_VERSION_MASK));
Jeff Johnson295189b2012-06-20 16:38:30 -070026300
Jeff Johnsone7245742012-09-05 17:12:55 -070026301 wdiStatus = WDI_HAL_2_WDI_STATUS(uStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070026302
26303 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070026304 "UPD Scan Parameters rsp with status: %d",
Jeff Johnson295189b2012-06-20 16:38:30 -070026305 halUpdScanParams.status);
26306
26307 /*Notify UMAC*/
26308 wdiUpdateScanParamsCb(wdiStatus, pWDICtx->pRspCBUserData);
26309
Jeff Johnsone7245742012-09-05 17:12:55 -070026310 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070026311}
26312#endif // FEATURE_WLAN_SCAN_PNO
26313
26314#ifdef WLAN_FEATURE_PACKET_FILTERING
Jeff Johnsone7245742012-09-05 17:12:55 -070026315WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070026316WDI_8023MulticastListReq
26317(
26318 WDI_RcvFltPktSetMcListReqParamsType* pwdiRcvFltPktSetMcListReqInfo,
26319 WDI_8023MulticastListCb wdi8023MulticastListCallback,
26320 void* pUserData
26321)
26322{
26323 WDI_EventInfoType wdiEventData;
26324 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26325
26326 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026327 "%s", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026328
26329 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026330 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070026331 ------------------------------------------------------------------------*/
26332 if ( eWLAN_PAL_FALSE == gWDIInitialized )
26333 {
26334 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
26335 "WDI API call before module is initialized - Fail request");
26336
Jeff Johnsone7245742012-09-05 17:12:55 -070026337 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070026338 }
26339
26340 /*------------------------------------------------------------------------
26341 Fill in Event data and post to the Main FSM
26342 ------------------------------------------------------------------------*/
26343 wdiEventData.wdiRequest = WDI_8023_MULTICAST_LIST_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070026344 wdiEventData.pEventData = pwdiRcvFltPktSetMcListReqInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070026345 wdiEventData.uEventDataSize = sizeof(*pwdiRcvFltPktSetMcListReqInfo);
Jeff Johnsone7245742012-09-05 17:12:55 -070026346 wdiEventData.pCBfnc = wdi8023MulticastListCallback;
Jeff Johnson295189b2012-06-20 16:38:30 -070026347 wdiEventData.pUserData = pUserData;
26348
26349 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
26350}
26351
Jeff Johnsone7245742012-09-05 17:12:55 -070026352WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070026353WDI_ReceiveFilterSetFilterReq
26354(
26355 WDI_SetRcvPktFilterReqParamsType* pwdiSetRcvPktFilterReqInfo,
26356 WDI_ReceiveFilterSetFilterCb wdiReceiveFilterSetFilterCallback,
26357 void* pUserData
26358)
26359{
26360 WDI_EventInfoType wdiEventData;
26361 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26362
26363 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026364 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026365
26366 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026367 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070026368 ------------------------------------------------------------------------*/
26369 if ( eWLAN_PAL_FALSE == gWDIInitialized )
26370 {
26371 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
26372 "WDI API call before module is initialized - Fail request");
26373
Jeff Johnsone7245742012-09-05 17:12:55 -070026374 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070026375 }
26376
26377 /*------------------------------------------------------------------------
26378 Fill in Event data and post to the Main FSM
26379 ------------------------------------------------------------------------*/
26380 wdiEventData.wdiRequest = WDI_RECEIVE_FILTER_SET_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070026381 wdiEventData.pEventData = pwdiSetRcvPktFilterReqInfo;
26382 wdiEventData.uEventDataSize = sizeof(*pwdiSetRcvPktFilterReqInfo) +
Yue Ma13cf95c2013-03-18 18:05:27 -070026383 (pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams - 1)
26384 * sizeof(WDI_RcvPktFilterFieldParams);
Jeff Johnsone7245742012-09-05 17:12:55 -070026385 wdiEventData.pCBfnc = wdiReceiveFilterSetFilterCallback;
Jeff Johnson295189b2012-06-20 16:38:30 -070026386 wdiEventData.pUserData = pUserData;
26387
26388
26389 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
26390}
26391
Jeff Johnsone7245742012-09-05 17:12:55 -070026392WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070026393WDI_FilterMatchCountReq
26394(
26395 WDI_RcvFltPktMatchCntReqParamsType* pwdiRcvFltPktMatchCntReqInfo,
26396 WDI_FilterMatchCountCb wdiFilterMatchCountCallback,
26397 void* pUserData
26398)
26399{
26400 WDI_EventInfoType wdiEventData;
26401 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26402
26403 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026404 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026405
26406 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026407 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070026408 ------------------------------------------------------------------------*/
26409 if ( eWLAN_PAL_FALSE == gWDIInitialized )
26410 {
26411 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
26412 "WDI API call before module is initialized - Fail request");
26413
Jeff Johnsone7245742012-09-05 17:12:55 -070026414 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070026415 }
26416
26417 /*------------------------------------------------------------------------
26418 Fill in Event data and post to the Main FSM
26419 ------------------------------------------------------------------------*/
26420 wdiEventData.wdiRequest = WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070026421 wdiEventData.pEventData = pwdiRcvFltPktMatchCntReqInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070026422 wdiEventData.uEventDataSize = sizeof(*pwdiRcvFltPktMatchCntReqInfo);
Jeff Johnsone7245742012-09-05 17:12:55 -070026423 wdiEventData.pCBfnc = wdiFilterMatchCountCallback;
Jeff Johnson295189b2012-06-20 16:38:30 -070026424 wdiEventData.pUserData = pUserData;
26425
26426
26427 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
26428}
26429
Jeff Johnsone7245742012-09-05 17:12:55 -070026430WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070026431WDI_ReceiveFilterClearFilterReq
26432(
26433 WDI_RcvFltPktClearReqParamsType* pwdiRcvFltPktClearReqInfo,
26434 WDI_ReceiveFilterClearFilterCb wdiReceiveFilterClearFilterCallback,
26435 void* pUserData
26436)
26437{
26438 WDI_EventInfoType wdiEventData;
26439 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26440
26441 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026442 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026443
26444 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026445 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070026446 ------------------------------------------------------------------------*/
26447 if ( eWLAN_PAL_FALSE == gWDIInitialized )
26448 {
26449 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
26450 "WDI API call before module is initialized - Fail request");
26451
Jeff Johnsone7245742012-09-05 17:12:55 -070026452 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070026453 }
26454
26455 /*------------------------------------------------------------------------
26456 Fill in Event data and post to the Main FSM
26457 ------------------------------------------------------------------------*/
26458 wdiEventData.wdiRequest = WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070026459 wdiEventData.pEventData = pwdiRcvFltPktClearReqInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070026460 wdiEventData.uEventDataSize = sizeof(*pwdiRcvFltPktClearReqInfo);
Jeff Johnsone7245742012-09-05 17:12:55 -070026461 wdiEventData.pCBfnc = wdiReceiveFilterClearFilterCallback;
Jeff Johnson295189b2012-06-20 16:38:30 -070026462 wdiEventData.pUserData = pUserData;
26463
26464
26465 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
26466}
26467
26468/**
26469 @brief Process 8023 Multicast List Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070026470
26471 @param pWDICtx: pointer to the WLAN DAL context
26472 pEventData: pointer to the event information structure
26473
Jeff Johnson295189b2012-06-20 16:38:30 -070026474 @see
26475 @return Result of the function call
26476*/
26477WDI_Status
26478WDI_Process8023MulticastListReq
Jeff Johnsone7245742012-09-05 17:12:55 -070026479(
Jeff Johnson295189b2012-06-20 16:38:30 -070026480 WDI_ControlBlockType* pWDICtx,
26481 WDI_EventInfoType* pEventData
26482)
26483{
26484 WDI_RcvFltPktSetMcListReqParamsType* pwdiFltPktSetMcListReqParamsType = NULL;
26485 WDI_8023MulticastListCb wdi8023MulticastListCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070026486 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070026487 wpt_uint16 usDataOffset = 0;
26488 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026489 tpHalRcvFltMcAddrListType pRcvFltMcAddrListType;
Jeff Johnson295189b2012-06-20 16:38:30 -070026490 wpt_uint8 i;
Jeff Johnsone7245742012-09-05 17:12:55 -070026491 wpt_uint8 ucCurrentBSSSesIdx = 0;
26492 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070026493
26494 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026495 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026496
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026497 pRcvFltMcAddrListType = wpalMemoryAllocate(sizeof(tHalRcvFltMcAddrListType)) ;
26498 if( NULL == pRcvFltMcAddrListType )
26499 {
26500 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
26501 "Failed to alloc in WDI_Process8023MulticastListReq");
26502 return WDI_STATUS_E_FAILURE;
26503 }
26504
Jeff Johnson295189b2012-06-20 16:38:30 -070026505 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026506 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070026507 -------------------------------------------------------------------------*/
26508 if (( NULL == pEventData ) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070026509 ( NULL == (pwdiFltPktSetMcListReqParamsType =
Jeff Johnson295189b2012-06-20 16:38:30 -070026510 (WDI_RcvFltPktSetMcListReqParamsType*)pEventData->pEventData)) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070026511 ( NULL == (wdi8023MulticastListCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070026512 (WDI_8023MulticastListCb)pEventData->pCBfnc)))
26513 {
26514 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026515 "%s: Invalid parameters", __func__);
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026516 wpalMemoryFree(pRcvFltMcAddrListType);
Jeff Johnson295189b2012-06-20 16:38:30 -070026517 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026518 return WDI_STATUS_E_FAILURE;
26519 }
26520
26521 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
26522 pwdiFltPktSetMcListReqParamsType->mcAddrList.bssId,
26523 &pBSSSes);
26524 if ( NULL == pBSSSes )
26525 {
26526 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026527 " %s : Association for this BSSID does not exist",__func__);
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026528 wpalMemoryFree(pRcvFltMcAddrListType);
Jeff Johnsone7245742012-09-05 17:12:55 -070026529 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026530 }
26531
26532 /*-----------------------------------------------------------------------
26533 Get message buffer
26534 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070026535 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
26536 WDI_8023_MULTICAST_LIST_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070026537 sizeof(tHalRcvFltMcAddrListType),
26538 &pSendBuffer, &usDataOffset, &usSendSize))||
26539 ( usSendSize < (usDataOffset + sizeof(tHalRcvFltMcAddrListType))))
26540 {
26541 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
26542 "Unable to get send buffer in "
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080026543 "WDI_Process8023MulticastListReq() %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070026544 pEventData, pwdiFltPktSetMcListReqParamsType,
26545 wdi8023MulticastListCb);
Yue Mad8cac142013-03-28 11:33:46 -070026546 wpalMemoryFree(pRcvFltMcAddrListType);
Jeff Johnson295189b2012-06-20 16:38:30 -070026547 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026548 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026549 }
26550
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026551 pRcvFltMcAddrListType->cMulticastAddr =
Jeff Johnsone7245742012-09-05 17:12:55 -070026552 pwdiFltPktSetMcListReqParamsType->mcAddrList.ulMulticastAddrCnt;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026553 for( i = 0; i < pRcvFltMcAddrListType->cMulticastAddr; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070026554 {
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026555 wpalMemoryCopy(pRcvFltMcAddrListType->multicastAddr[i],
Jeff Johnson295189b2012-06-20 16:38:30 -070026556 pwdiFltPktSetMcListReqParamsType->mcAddrList.multicastAddr[i],
26557 sizeof(tSirMacAddr));
26558 }
26559
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026560 pRcvFltMcAddrListType->bssIdx = pBSSSes->ucBSSIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070026561 wpalMemoryCopy( pSendBuffer+usDataOffset,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026562 pRcvFltMcAddrListType,
26563 sizeof(tHalRcvFltMcAddrListType));
Jeff Johnson295189b2012-06-20 16:38:30 -070026564
26565 pWDICtx->wdiReqStatusCB = pwdiFltPktSetMcListReqParamsType->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070026566 pWDICtx->pReqStatusUserData = pwdiFltPktSetMcListReqParamsType->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070026567
26568
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026569 wpalMemoryFree(pRcvFltMcAddrListType);
Jeff Johnson295189b2012-06-20 16:38:30 -070026570 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026571 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070026572 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070026573 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070026574 wdi8023MulticastListCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -070026575 WDI_8023_MULTICAST_LIST_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070026576}
26577
26578/**
26579 @brief Process Receive Filter Set Filter Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070026580
26581 @param pWDICtx: pointer to the WLAN DAL context
26582 pEventData: pointer to the event information structure
26583
Jeff Johnson295189b2012-06-20 16:38:30 -070026584 @see
26585 @return Result of the function call
26586*/
26587WDI_Status
26588WDI_ProcessReceiveFilterSetFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070026589(
Jeff Johnson295189b2012-06-20 16:38:30 -070026590 WDI_ControlBlockType* pWDICtx,
26591 WDI_EventInfoType* pEventData
26592)
26593{
26594 WDI_SetRcvPktFilterReqParamsType* pwdiSetRcvPktFilterReqInfo = NULL;
26595 WDI_ReceiveFilterSetFilterCb wdiReceiveFilterSetFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070026596 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070026597 wpt_uint16 usDataOffset = 0;
26598 wpt_uint16 usSendSize = 0;
26599 wpt_uint32 usRcvPktFilterCfgSize;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026600 tHalRcvPktFilterCfgType *pRcvPktFilterCfg = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070026601 wpt_uint8 i;
Jeff Johnsone7245742012-09-05 17:12:55 -070026602 wpt_uint8 ucCurrentBSSSesIdx = 0;
26603 WDI_BSSSessionType* pBSSSes = NULL;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026604 tHalSessionizedRcvPktFilterCfgType *pSessRcvPktFilterCfg = NULL;
26605 wpt_uint32 usSessRcvPktFilterCfgSize;
Jeff Johnson295189b2012-06-20 16:38:30 -070026606
26607 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026608 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026609
26610 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026611 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070026612 -------------------------------------------------------------------------*/
26613 if (( NULL == pEventData ) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070026614 ( NULL == (pwdiSetRcvPktFilterReqInfo =
Jeff Johnson295189b2012-06-20 16:38:30 -070026615 (WDI_SetRcvPktFilterReqParamsType*)pEventData->pEventData)) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070026616 ( NULL == (wdiReceiveFilterSetFilterCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070026617 (WDI_ReceiveFilterSetFilterCb)pEventData->pCBfnc)))
26618 {
26619 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026620 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026621 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026622 return WDI_STATUS_E_FAILURE;
26623 }
26624
26625 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
26626 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.bssId,
26627 &pBSSSes);
26628 if ( NULL == pBSSSes )
26629 {
26630 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026631 " %s : Association for this BSSID does not exist",__func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070026632 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026633 }
26634
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026635 if( WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION) )
26636 {
Jeff Johnson295189b2012-06-20 16:38:30 -070026637
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026638 usSessRcvPktFilterCfgSize = sizeof(tHalSessionizedRcvPktFilterCfgType) +
26639 ((pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams - 1)
26640 * sizeof(tHalSessionizedRcvPktFilterCfgType));
26641
26642 pSessRcvPktFilterCfg = (tHalSessionizedRcvPktFilterCfgType *)wpalMemoryAllocate(
26643 usSessRcvPktFilterCfgSize);
26644
26645 if(NULL == pSessRcvPktFilterCfg)
26646 {
26647 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
26648 "%s: Failed to allocate memory for "
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080026649 "tHalRcvPktFilterCfgType: %p %p %p ",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026650 __func__, pWDICtx, pEventData, pEventData->pEventData);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026651 WDI_ASSERT(0);
26652 return WDI_STATUS_E_FAILURE;
26653 }
26654
26655 wpalMemoryZero(pSessRcvPktFilterCfg, usSessRcvPktFilterCfgSize);
26656
26657 /*-----------------------------------------------------------------------
26658 Get message buffer
26659 -----------------------------------------------------------------------*/
26660
26661 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_RECEIVE_FILTER_SET_FILTER_REQ,
26662 usSessRcvPktFilterCfgSize,
26663 &pSendBuffer, &usDataOffset, &usSendSize))||
26664 ( usSendSize < (usDataOffset + usSessRcvPktFilterCfgSize)))
26665 {
26666 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
26667 "Unable to get send buffer in "
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080026668 "WDI_ProcessReceiveFilterSetFilterReq() %p %p %p",
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026669 pEventData, pwdiSetRcvPktFilterReqInfo,
26670 wdiReceiveFilterSetFilterCb);
26671 WDI_ASSERT(0);
26672 wpalMemoryFree(pSessRcvPktFilterCfg);
26673 return WDI_STATUS_E_FAILURE;
26674 }
26675
26676 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080026677 "UsData Off %d UsSend %d cfg %p",usDataOffset,
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026678 usSendSize,pSessRcvPktFilterCfg);
26679
26680 pSessRcvPktFilterCfg->filterId = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.filterId;
26681 pSessRcvPktFilterCfg->filterType = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.filterType;
26682 pSessRcvPktFilterCfg->numParams = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams;
26683 pSessRcvPktFilterCfg->coleasceTime = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.coalesceTime;
26684
26685 pSessRcvPktFilterCfg->bssIdx = pBSSSes->ucBSSIdx;
26686
26687 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
26688 "Out: FID %d FT %d",pSessRcvPktFilterCfg->filterId,
26689 pSessRcvPktFilterCfg->filterType);
26690 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
26691 "NParams %d CT %d",pSessRcvPktFilterCfg->numParams,
26692 pSessRcvPktFilterCfg->coleasceTime);
26693
26694 for ( i = 0; i < pSessRcvPktFilterCfg->numParams; i++ )
26695 {
26696 pSessRcvPktFilterCfg->paramsData[i].protocolLayer =
26697 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].protocolLayer;
26698 pSessRcvPktFilterCfg->paramsData[i].cmpFlag =
26699 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].cmpFlag;
26700 pSessRcvPktFilterCfg->paramsData[i].dataOffset =
26701 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataOffset;
26702 pSessRcvPktFilterCfg->paramsData[i].dataLength =
26703 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataLength;
26704
26705 wpalMemoryCopy(&pSessRcvPktFilterCfg->paramsData[i].compareData,
26706 &pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].compareData,
26707 8);
26708 wpalMemoryCopy(&pSessRcvPktFilterCfg->paramsData[i].dataMask,
26709 &pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataMask,
26710 8);
26711
26712 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Arif Hussain9a5d5382013-11-17 22:05:35 -080026713 "Out:Proto %d Comp Flag %d",
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026714 pSessRcvPktFilterCfg->paramsData[i].protocolLayer,
26715 pSessRcvPktFilterCfg->paramsData[i].cmpFlag);
26716
26717 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Arif Hussain9a5d5382013-11-17 22:05:35 -080026718 "Data Offset %d Data Len %d",
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026719 pSessRcvPktFilterCfg->paramsData[i].dataOffset,
26720 pSessRcvPktFilterCfg->paramsData[i].dataLength);
26721
26722 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Arif Hussain9a5d5382013-11-17 22:05:35 -080026723 "CData: %d:%d:%d:%d:%d:%d",
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026724 pSessRcvPktFilterCfg->paramsData[i].compareData[0],
26725 pSessRcvPktFilterCfg->paramsData[i].compareData[1],
26726 pSessRcvPktFilterCfg->paramsData[i].compareData[2],
26727 pSessRcvPktFilterCfg->paramsData[i].compareData[3],
26728 pSessRcvPktFilterCfg->paramsData[i].compareData[4],
26729 pSessRcvPktFilterCfg->paramsData[i].compareData[5]);
26730
26731 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Arif Hussain9a5d5382013-11-17 22:05:35 -080026732 "MData: %d:%d:%d:%d:%d:%d",
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026733 pSessRcvPktFilterCfg->paramsData[i].dataMask[0],
26734 pSessRcvPktFilterCfg->paramsData[i].dataMask[1],
26735 pSessRcvPktFilterCfg->paramsData[i].dataMask[2],
26736 pSessRcvPktFilterCfg->paramsData[i].dataMask[3],
26737 pSessRcvPktFilterCfg->paramsData[i].dataMask[4],
26738 pSessRcvPktFilterCfg->paramsData[i].dataMask[5]);
26739 }
26740
26741 wpalMemoryCopy( pSendBuffer+usDataOffset,
26742 pSessRcvPktFilterCfg,
26743 usSessRcvPktFilterCfgSize);
26744
26745
26746 pWDICtx->wdiReqStatusCB = pwdiSetRcvPktFilterReqInfo->wdiReqStatusCB;
26747 pWDICtx->pReqStatusUserData = pwdiSetRcvPktFilterReqInfo->pUserData;
26748
26749 wpalMemoryFree(pSessRcvPktFilterCfg);
26750
26751 }
26752 /*If SLM_SESSIONIZATION is not supported then do this */
26753 else
26754 {
26755 usRcvPktFilterCfgSize = sizeof(tHalRcvPktFilterCfgType) +
26756 ((pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams - 1)
26757 * sizeof(tHalRcvPktFilterParams));
26758
26759 pRcvPktFilterCfg = (tHalRcvPktFilterCfgType *)wpalMemoryAllocate(
Jeff Johnson295189b2012-06-20 16:38:30 -070026760 usRcvPktFilterCfgSize);
26761
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026762 if(NULL == pRcvPktFilterCfg)
26763 {
26764 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
26765 "%s: Failed to allocate memory for "
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080026766 "tHalRcvPktFilterCfgType: %p %p %p ",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026767 __func__, pWDICtx, pEventData, pEventData->pEventData);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026768 WDI_ASSERT(0);
26769 return WDI_STATUS_E_FAILURE;
26770 }
Jeff Johnson295189b2012-06-20 16:38:30 -070026771
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026772 wpalMemoryZero(pRcvPktFilterCfg, usRcvPktFilterCfgSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070026773
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026774 /*-----------------------------------------------------------------------
26775 Get message buffer
26776 -----------------------------------------------------------------------*/
26777 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_RECEIVE_FILTER_SET_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070026778 usRcvPktFilterCfgSize,
26779 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026780 ( usSendSize < (usDataOffset + usRcvPktFilterCfgSize)))
26781 {
26782 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson295189b2012-06-20 16:38:30 -070026783 "Unable to get send buffer in "
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080026784 "WDI_ProcessReceiveFilterSetFilterReq() %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070026785 pEventData, pwdiSetRcvPktFilterReqInfo,
26786 wdiReceiveFilterSetFilterCb);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026787 WDI_ASSERT(0);
26788 wpalMemoryFree(pRcvPktFilterCfg);
26789 return WDI_STATUS_E_FAILURE;
26790 }
Jeff Johnson295189b2012-06-20 16:38:30 -070026791
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026792 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070026793 "UsData Off %d UsSend %d cfg %d",usDataOffset,
Jeff Johnson295189b2012-06-20 16:38:30 -070026794 usSendSize,usRcvPktFilterCfgSize);
26795
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026796 pRcvPktFilterCfg->filterId = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.filterId;
26797 pRcvPktFilterCfg->filterType = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.filterType;
26798 pRcvPktFilterCfg->numParams = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams;
26799 pRcvPktFilterCfg->coalesceTime = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.coalesceTime;
Jeff Johnson295189b2012-06-20 16:38:30 -070026800
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026801 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070026802 "Out: FID %d FT %d",pRcvPktFilterCfg->filterId,
Jeff Johnson295189b2012-06-20 16:38:30 -070026803 pRcvPktFilterCfg->filterType);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026804 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnson295189b2012-06-20 16:38:30 -070026805 "NParams %d CT %d",pRcvPktFilterCfg->numParams,
Jeff Johnsone7245742012-09-05 17:12:55 -070026806 pRcvPktFilterCfg->coalesceTime);
Jeff Johnson295189b2012-06-20 16:38:30 -070026807
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026808 for ( i = 0; i < pRcvPktFilterCfg->numParams; i++ )
26809 {
26810 pRcvPktFilterCfg->paramsData[i].protocolLayer =
26811 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].protocolLayer;
26812 pRcvPktFilterCfg->paramsData[i].cmpFlag =
26813 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].cmpFlag;
26814 pRcvPktFilterCfg->paramsData[i].dataOffset =
26815 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataOffset;
26816 pRcvPktFilterCfg->paramsData[i].dataLength =
26817 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataLength;
Jeff Johnson295189b2012-06-20 16:38:30 -070026818
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026819 wpalMemoryCopy(&pRcvPktFilterCfg->paramsData[i].compareData,
Jeff Johnson295189b2012-06-20 16:38:30 -070026820 &pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].compareData,
26821 8);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026822 wpalMemoryCopy(&pRcvPktFilterCfg->paramsData[i].dataMask,
Jeff Johnson295189b2012-06-20 16:38:30 -070026823 &pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataMask,
26824 8);
26825
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026826 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Arif Hussain9a5d5382013-11-17 22:05:35 -080026827 "Out:Proto %d Comp Flag %d",
Jeff Johnsone7245742012-09-05 17:12:55 -070026828 pRcvPktFilterCfg->paramsData[i].protocolLayer,
Jeff Johnson295189b2012-06-20 16:38:30 -070026829 pRcvPktFilterCfg->paramsData[i].cmpFlag);
26830
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026831 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Arif Hussain9a5d5382013-11-17 22:05:35 -080026832 "Data Offset %d Data Len %d",
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026833 pRcvPktFilterCfg->paramsData[i].dataOffset,
26834 pRcvPktFilterCfg->paramsData[i].dataLength);
Jeff Johnson295189b2012-06-20 16:38:30 -070026835
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026836 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Arif Hussain9a5d5382013-11-17 22:05:35 -080026837 "CData: %d:%d:%d:%d:%d:%d",
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026838 pRcvPktFilterCfg->paramsData[i].compareData[0],
26839 pRcvPktFilterCfg->paramsData[i].compareData[1],
26840 pRcvPktFilterCfg->paramsData[i].compareData[2],
26841 pRcvPktFilterCfg->paramsData[i].compareData[3],
26842 pRcvPktFilterCfg->paramsData[i].compareData[4],
26843 pRcvPktFilterCfg->paramsData[i].compareData[5]);
Jeff Johnson295189b2012-06-20 16:38:30 -070026844
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026845 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Arif Hussain9a5d5382013-11-17 22:05:35 -080026846 "MData: %d:%d:%d:%d:%d:%d",
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026847 pRcvPktFilterCfg->paramsData[i].dataMask[0],
26848 pRcvPktFilterCfg->paramsData[i].dataMask[1],
26849 pRcvPktFilterCfg->paramsData[i].dataMask[2],
26850 pRcvPktFilterCfg->paramsData[i].dataMask[3],
26851 pRcvPktFilterCfg->paramsData[i].dataMask[4],
26852 pRcvPktFilterCfg->paramsData[i].dataMask[5]);
26853 }
Jeff Johnson295189b2012-06-20 16:38:30 -070026854
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026855 wpalMemoryCopy( pSendBuffer+usDataOffset,
Jeff Johnsone7245742012-09-05 17:12:55 -070026856 pRcvPktFilterCfg,
26857 usRcvPktFilterCfgSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070026858
26859
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026860 pWDICtx->wdiReqStatusCB = pwdiSetRcvPktFilterReqInfo->wdiReqStatusCB;
26861 pWDICtx->pReqStatusUserData = pwdiSetRcvPktFilterReqInfo->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070026862
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026863 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026864 "%s",__func__);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026865 wpalMemoryFree(pRcvPktFilterCfg);
26866 }
Jeff Johnson295189b2012-06-20 16:38:30 -070026867 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026868 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070026869 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070026870 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070026871 wdiReceiveFilterSetFilterCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -070026872 WDI_RECEIVE_FILTER_SET_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070026873}
26874
26875/**
26876 @brief Process Packet Filter Match Count Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070026877
26878 @param pWDICtx: pointer to the WLAN DAL context
26879 pEventData: pointer to the event information structure
26880
Jeff Johnson295189b2012-06-20 16:38:30 -070026881 @see
26882 @return Result of the function call
26883*/
26884WDI_Status
26885WDI_ProcessFilterMatchCountReq
Jeff Johnsone7245742012-09-05 17:12:55 -070026886(
Jeff Johnson295189b2012-06-20 16:38:30 -070026887 WDI_ControlBlockType* pWDICtx,
26888 WDI_EventInfoType* pEventData
26889)
26890{
26891 WDI_RcvFltPktMatchCntReqParamsType* pwdiRcvFltPktMatchCntReqParamsType =
26892 NULL;
26893 WDI_FilterMatchCountCb wdiFilterMatchCountCb =
26894 NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070026895 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070026896 wpt_uint16 usDataOffset = 0;
26897 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026898 tHalRcvFltPktMatchCntReqParams rcvFltPktMatchCntReqParam = {0};
26899 wpt_uint8 ucCurrentBSSSesIdx = 0;
26900 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070026901
26902 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026903 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026904
26905 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026906 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070026907 -------------------------------------------------------------------------*/
26908 if (( NULL == pEventData ) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070026909 ( NULL == (pwdiRcvFltPktMatchCntReqParamsType =
Jeff Johnson295189b2012-06-20 16:38:30 -070026910 (WDI_RcvFltPktMatchCntReqParamsType*)pEventData->pEventData)) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070026911 ( NULL == (wdiFilterMatchCountCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070026912 (WDI_FilterMatchCountCb)pEventData->pCBfnc)))
26913 {
26914 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026915 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026916 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026917 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026918 }
26919
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026920 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
26921 pwdiRcvFltPktMatchCntReqParamsType->bssId,
26922 &pBSSSes);
26923 if ( NULL == pBSSSes )
26924 {
26925 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026926 " %s : Association for this BSSID does not exist",__func__);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026927 return WDI_STATUS_E_FAILURE;
26928 }
26929
Jeff Johnson295189b2012-06-20 16:38:30 -070026930 /*-----------------------------------------------------------------------
26931 Get message buffer
26932 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070026933 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
26934 WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ,
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026935 sizeof(tHalRcvFltPktMatchCntReqParams),
Jeff Johnson295189b2012-06-20 16:38:30 -070026936 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026937 ( usSendSize < (usDataOffset + sizeof(tHalRcvFltPktMatchCntReqParams))))
Jeff Johnson295189b2012-06-20 16:38:30 -070026938 {
26939 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
26940 "Unable to get send buffer in "
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080026941 "WDI_ProcessFilterMatchCountReq() %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070026942 pEventData, pwdiRcvFltPktMatchCntReqParamsType,
26943 wdiFilterMatchCountCb);
26944 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026945 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026946 }
26947
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026948 rcvFltPktMatchCntReqParam.bssIdx = pBSSSes->ucBSSIdx;
26949 wpalMemoryCopy( pSendBuffer+usDataOffset,
26950 &rcvFltPktMatchCntReqParam,
26951 sizeof(rcvFltPktMatchCntReqParam));
26952
Jeff Johnson295189b2012-06-20 16:38:30 -070026953 //
26954 // Don't need to fill send buffer other than header
26955 //
26956 pWDICtx->wdiReqStatusCB = pwdiRcvFltPktMatchCntReqParamsType->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070026957 pWDICtx->pReqStatusUserData = pwdiRcvFltPktMatchCntReqParamsType->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070026958
26959
26960 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026961 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070026962 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070026963 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
26964 wdiFilterMatchCountCb,
26965 pEventData->pUserData,
26966 WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070026967}
26968
26969/**
26970 @brief Process Receive Filter Clear Filter Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070026971
26972 @param pWDICtx: pointer to the WLAN DAL context
26973 pEventData: pointer to the event information structure
26974
Jeff Johnson295189b2012-06-20 16:38:30 -070026975 @see
26976 @return Result of the function call
26977*/
26978WDI_Status
26979WDI_ProcessReceiveFilterClearFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070026980(
Jeff Johnson295189b2012-06-20 16:38:30 -070026981 WDI_ControlBlockType* pWDICtx,
26982 WDI_EventInfoType* pEventData
26983)
Jeff Johnsone7245742012-09-05 17:12:55 -070026984{
Jeff Johnson295189b2012-06-20 16:38:30 -070026985 WDI_RcvFltPktClearReqParamsType* pwdiRcvFltPktClearReqParamsType = NULL;
26986 WDI_ReceiveFilterClearFilterCb wdiRcvFltPktClearFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070026987 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070026988 wpt_uint16 usDataOffset = 0;
26989 wpt_uint16 usSendSize = 0;
26990 tHalRcvFltPktClearParam rcvFltPktClearParam;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026991 wpt_uint8 ucCurrentSessionId = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070026992 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070026993
26994 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026995 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026996
26997 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026998 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070026999 -------------------------------------------------------------------------*/
27000 if (( NULL == pEventData ) ||
27001 ( NULL == (pwdiRcvFltPktClearReqParamsType =
27002 (WDI_RcvFltPktClearReqParamsType*)pEventData->pEventData)) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070027003 ( NULL == (wdiRcvFltPktClearFilterCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070027004 (WDI_ReceiveFilterClearFilterCb)pEventData->pCBfnc)))
27005 {
27006 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027007 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027008 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070027009 return WDI_STATUS_E_FAILURE;
27010 }
27011
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027012 ucCurrentSessionId = WDI_FindAssocSession( pWDICtx,
Jeff Johnsone7245742012-09-05 17:12:55 -070027013 pwdiRcvFltPktClearReqParamsType->filterClearParam.bssId,
27014 &pBSSSes);
27015 if ( NULL == pBSSSes )
27016 {
27017 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027018 " %s : Association for this BSSID does not exist",__func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070027019 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070027020 }
27021
27022 /*-----------------------------------------------------------------------
27023 Get message buffer
27024 -----------------------------------------------------------------------*/
27025 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
Jeff Johnsone7245742012-09-05 17:12:55 -070027026 WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070027027 sizeof(tHalRcvFltPktClearParam),
27028 &pSendBuffer, &usDataOffset, &usSendSize))||
27029 ( usSendSize < (usDataOffset + sizeof(tHalRcvFltPktClearParam))))
27030 {
27031 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
27032 "Unable to get send buffer in "
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080027033 "WDI_ProcessReceiveFilterClearFilterReq() %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070027034 pEventData, pwdiRcvFltPktClearReqParamsType,
27035 wdiRcvFltPktClearFilterCb);
27036 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070027037 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070027038 }
27039
27040
27041 rcvFltPktClearParam.status = pwdiRcvFltPktClearReqParamsType->
Jeff Johnsone7245742012-09-05 17:12:55 -070027042 filterClearParam.status;
Jeff Johnson295189b2012-06-20 16:38:30 -070027043 rcvFltPktClearParam.filterId = pwdiRcvFltPktClearReqParamsType->
Jeff Johnsone7245742012-09-05 17:12:55 -070027044 filterClearParam.filterId;
Jeff Johnson295189b2012-06-20 16:38:30 -070027045
Jeff Johnsone7245742012-09-05 17:12:55 -070027046 rcvFltPktClearParam.bssIdx = pBSSSes->ucBSSIdx;
27047 wpalMemoryCopy( pSendBuffer+usDataOffset,
27048 &rcvFltPktClearParam,
27049 sizeof(rcvFltPktClearParam));
Jeff Johnson295189b2012-06-20 16:38:30 -070027050
27051 pWDICtx->wdiReqStatusCB = pwdiRcvFltPktClearReqParamsType->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070027052 pWDICtx->pReqStatusUserData = pwdiRcvFltPktClearReqParamsType->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070027053
27054
27055 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027056 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070027057 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070027058 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070027059 wdiRcvFltPktClearFilterCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -070027060 WDI_RECEIVE_FILTER_CLEAR_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070027061}
27062
27063/**
27064 @brief Process 8023 Multicast List Response function
Jeff Johnsone7245742012-09-05 17:12:55 -070027065
27066 @param pWDICtx: pointer to the WLAN DAL context
27067 pEventData: pointer to the event information structure
27068
Jeff Johnson295189b2012-06-20 16:38:30 -070027069 @see
27070 @return Result of the function call
27071*/
27072WDI_Status
27073WDI_Process8023MulticastListRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070027074(
Jeff Johnson295189b2012-06-20 16:38:30 -070027075 WDI_ControlBlockType* pWDICtx,
27076 WDI_EventInfoType* pEventData
27077)
27078{
Jeff Johnson295189b2012-06-20 16:38:30 -070027079 eHalStatus halStatus;
27080 WDI_8023MulticastListCb wdi8023MulticastListCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027081 tHalRcvFltPktSetMcListRspType halRcvFltPktSetMcListRsp;
27082 WDI_RcvFltPktSetMcListRspParamsType wdiRcvFltPktSetMcListRspInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070027083 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27084
27085 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027086 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027087
27088 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027089 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070027090 -------------------------------------------------------------------------*/
27091 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
27092 ( NULL == pEventData->pEventData ))
27093 {
27094 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027095 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027096 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070027097 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070027098 }
27099
Jeff Johnsone7245742012-09-05 17:12:55 -070027100 wdi8023MulticastListCb = (WDI_8023MulticastListCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070027101
27102 /*-------------------------------------------------------------------------
27103 Extract response and send it to UMAC
27104 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027105 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
27106 {
27107 wpalMemoryCopy( &halRcvFltPktSetMcListRsp,
27108 pEventData->pEventData,
27109 sizeof(halRcvFltPktSetMcListRsp));
27110
27111 wdiRcvFltPktSetMcListRspInfo.wdiStatus =
27112 WDI_HAL_2_WDI_STATUS(halRcvFltPktSetMcListRsp.status);
27113 wdiRcvFltPktSetMcListRspInfo.bssIdx =
27114 halRcvFltPktSetMcListRsp.bssIdx;
27115 }
27116 else
27117 {
27118 halStatus = *((eHalStatus*)pEventData->pEventData);
27119 wdiRcvFltPktSetMcListRspInfo.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
27120 }
Jeff Johnson295189b2012-06-20 16:38:30 -070027121
27122 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027123 wdi8023MulticastListCb(&wdiRcvFltPktSetMcListRspInfo, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070027124
Jeff Johnsone7245742012-09-05 17:12:55 -070027125 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070027126}
27127
27128/**
27129 @brief Process Set Rsp function (called when a
27130 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070027131
27132 @param pWDICtx: pointer to the WLAN DAL context
27133 pEventData: pointer to the event information structure
27134
Jeff Johnson295189b2012-06-20 16:38:30 -070027135 @see
27136 @return Result of the function call
27137*/
27138WDI_Status
27139WDI_ProcessReceiveFilterSetFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070027140(
Jeff Johnson295189b2012-06-20 16:38:30 -070027141 WDI_ControlBlockType* pWDICtx,
27142 WDI_EventInfoType* pEventData
27143)
27144{
Jeff Johnson295189b2012-06-20 16:38:30 -070027145 eHalStatus halStatus;
27146 WDI_ReceiveFilterSetFilterCb wdiReceiveFilterSetFilterCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027147 tHalSetPktFilterRspParams halSetPktFilterRspParams;
27148 WDI_SetRcvPktFilterRspParamsType wdiSetRcvPktFilterRspInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070027149 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27150
27151 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027152 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027153
27154 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027155 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070027156 -------------------------------------------------------------------------*/
27157 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
27158 ( NULL == pEventData->pEventData ))
27159 {
27160 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027161 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027162 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070027163 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070027164 }
27165
27166 wdiReceiveFilterSetFilterCb = (WDI_ReceiveFilterSetFilterCb)pWDICtx->
Jeff Johnsone7245742012-09-05 17:12:55 -070027167 pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070027168
27169 /*-------------------------------------------------------------------------
27170 Extract response and send it to UMAC
27171 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027172 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
27173 {
27174 wpalMemoryCopy( &halSetPktFilterRspParams,
27175 pEventData->pEventData,
27176 sizeof(halSetPktFilterRspParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070027177
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027178 wdiSetRcvPktFilterRspInfo.bssIdx = halSetPktFilterRspParams.bssIdx;
27179 wdiSetRcvPktFilterRspInfo.wdiStatus = WDI_HAL_2_WDI_STATUS(halSetPktFilterRspParams.status);
27180 }
27181 else
27182 {
27183 halStatus = *((eHalStatus*)pEventData->pEventData);
27184 wdiSetRcvPktFilterRspInfo.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
27185 }
Jeff Johnson295189b2012-06-20 16:38:30 -070027186 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027187 wdiReceiveFilterSetFilterCb(&wdiSetRcvPktFilterRspInfo, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070027188
Jeff Johnsone7245742012-09-05 17:12:55 -070027189 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070027190}
27191
27192/**
27193 @brief Process Packet Filter Match Count Response function
Jeff Johnsone7245742012-09-05 17:12:55 -070027194
27195 @param pWDICtx: pointer to the WLAN DAL context
27196 pEventData: pointer to the event information structure
27197
Jeff Johnson295189b2012-06-20 16:38:30 -070027198 @see
27199 @return Result of the function call
27200*/
27201WDI_Status
27202WDI_ProcessFilterMatchCountRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070027203(
Jeff Johnson295189b2012-06-20 16:38:30 -070027204 WDI_ControlBlockType* pWDICtx,
27205 WDI_EventInfoType* pEventData
27206)
27207{
Jeff Johnson295189b2012-06-20 16:38:30 -070027208 eHalStatus halStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070027209 WDI_FilterMatchCountCb wdiFilterMatchCountCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027210 tHalRcvFltPktMatchRspParams halRcvFltrPktMatachRsp;
27211 WDI_RcvFltPktMatchCntRspParamsType wdiRcvFltPktMatchRspParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070027212
27213 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27214
27215 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027216 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027217
27218 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027219 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070027220 -------------------------------------------------------------------------*/
27221 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
27222 ( NULL == pEventData->pEventData ))
27223 {
27224 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027225 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027226 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070027227 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070027228 }
27229
Jeff Johnsone7245742012-09-05 17:12:55 -070027230 wdiFilterMatchCountCb = (WDI_FilterMatchCountCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070027231
27232 /*-------------------------------------------------------------------------
27233 Extract response and send it to UMAC
27234 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027235 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
27236 {
27237 wpalMemoryCopy( &halRcvFltrPktMatachRsp,
27238 pEventData->pEventData,
27239 sizeof(halRcvFltrPktMatachRsp));
27240
27241 wdiRcvFltPktMatchRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halRcvFltrPktMatachRsp.status);
27242 wdiRcvFltPktMatchRspParams.bssIdx = halRcvFltrPktMatachRsp.bssIdx;
27243 }
27244 else
27245 {
27246 halStatus = *((eHalStatus*)pEventData->pEventData);
27247 wdiRcvFltPktMatchRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
27248 }
Jeff Johnson295189b2012-06-20 16:38:30 -070027249
27250 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027251 wdiFilterMatchCountCb(&wdiRcvFltPktMatchRspParams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070027252
Jeff Johnsone7245742012-09-05 17:12:55 -070027253 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070027254}
27255
27256/**
27257 @brief Process Receive Filter Clear Filter Response function
Jeff Johnsone7245742012-09-05 17:12:55 -070027258
27259 @param pWDICtx: pointer to the WLAN DAL context
27260 pEventData: pointer to the event information structure
27261
Jeff Johnson295189b2012-06-20 16:38:30 -070027262 @see
27263 @return Result of the function call
27264*/
27265WDI_Status
27266WDI_ProcessReceiveFilterClearFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070027267(
Jeff Johnson295189b2012-06-20 16:38:30 -070027268 WDI_ControlBlockType* pWDICtx,
27269 WDI_EventInfoType* pEventData
27270)
27271{
Jeff Johnson295189b2012-06-20 16:38:30 -070027272 eHalStatus halStatus;
27273 WDI_ReceiveFilterClearFilterCb wdiReceiveFilterClearFilterCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027274 tHalRcvFltPktClearParam halRcvFltPktClearRspMsg;
27275 WDI_RcvFltPktClearRspParamsType wdiRcvFltPktClearRspParamsType;
Jeff Johnson295189b2012-06-20 16:38:30 -070027276 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27277
27278 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027279 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027280
27281 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027282 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070027283 -------------------------------------------------------------------------*/
27284 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
27285 ( NULL == pEventData->pEventData ))
27286 {
27287 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027288 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027289 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070027290 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070027291 }
27292
27293 wdiReceiveFilterClearFilterCb = (WDI_ReceiveFilterClearFilterCb)pWDICtx->
Jeff Johnsone7245742012-09-05 17:12:55 -070027294 pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070027295
27296 /*-------------------------------------------------------------------------
27297 Extract response and send it to UMAC
27298 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027299 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
27300 {
27301 wpalMemoryCopy( &halRcvFltPktClearRspMsg,
27302 pEventData->pEventData,
27303 sizeof(halRcvFltPktClearRspMsg));
27304
27305 wdiRcvFltPktClearRspParamsType.wdiStatus =
27306 WDI_HAL_2_WDI_STATUS(halRcvFltPktClearRspMsg.status);
27307 wdiRcvFltPktClearRspParamsType.bssIdx =
27308 halRcvFltPktClearRspMsg.bssIdx;
27309 }
27310 else
27311 {
27312 halStatus = *((eHalStatus*)pEventData->pEventData);
27313 wdiRcvFltPktClearRspParamsType.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
27314 }
Jeff Johnson295189b2012-06-20 16:38:30 -070027315
27316 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027317 wdiReceiveFilterClearFilterCb(&wdiRcvFltPktClearRspParamsType, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070027318
Jeff Johnsone7245742012-09-05 17:12:55 -070027319 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070027320}
27321#endif // WLAN_FEATURE_PACKET_FILTERING
27322
27323/**
27324 @brief Process Shutdown Rsp function
27325 There is no shutdown response comming from HAL
27326 - function just kept for simmetry
Jeff Johnsone7245742012-09-05 17:12:55 -070027327
Jeff Johnson295189b2012-06-20 16:38:30 -070027328 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnsone7245742012-09-05 17:12:55 -070027329 pEventData: pointer to the event information structure
Jeff Johnson295189b2012-06-20 16:38:30 -070027330
27331 @see
27332 @return Result of the function call
27333*/
27334WDI_Status
27335WDI_ProcessShutdownRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070027336(
Jeff Johnson295189b2012-06-20 16:38:30 -070027337 WDI_ControlBlockType* pWDICtx,
27338 WDI_EventInfoType* pEventData
27339)
27340{
27341 /*There is no shutdown response comming from HAL - function just kept for
27342 simmetry */
27343 WDI_ASSERT(0);
27344 return WDI_STATUS_SUCCESS;
27345}/*WDI_ProcessShutdownRsp*/
27346
27347/**
27348 @brief WDI_SetPowerParamsReq
27349
Jeff Johnsone7245742012-09-05 17:12:55 -070027350 @param pwdiPowerParamsReqParams: the Set Power Params as
Jeff Johnson295189b2012-06-20 16:38:30 -070027351 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -070027352
Jeff Johnson295189b2012-06-20 16:38:30 -070027353 wdiPowerParamsCb: callback for passing back the response
27354 of the Set Power Params operation received from the
27355 device
Jeff Johnsone7245742012-09-05 17:12:55 -070027356
Jeff Johnson295189b2012-06-20 16:38:30 -070027357 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -070027358 callback
27359
Jeff Johnson295189b2012-06-20 16:38:30 -070027360 @return Result of the function call
27361*/
Jeff Johnsone7245742012-09-05 17:12:55 -070027362WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070027363WDI_SetPowerParamsReq
27364(
27365 WDI_SetPowerParamsReqParamsType* pwdiPowerParamsReqParams,
27366 WDI_SetPowerParamsCb wdiPowerParamsCb,
27367 void* pUserData
27368)
27369{
27370 WDI_EventInfoType wdiEventData;
27371 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27372
27373 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027374 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070027375 ------------------------------------------------------------------------*/
27376 if ( eWLAN_PAL_FALSE == gWDIInitialized )
27377 {
27378 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
27379 "WDI API call before module is initialized - Fail request");
27380
Jeff Johnsone7245742012-09-05 17:12:55 -070027381 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070027382 }
27383
27384 /*------------------------------------------------------------------------
27385 Fill in Event data and post to the Main FSM
27386 ------------------------------------------------------------------------*/
27387 wdiEventData.wdiRequest = WDI_SET_POWER_PARAMS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070027388 wdiEventData.pEventData = pwdiPowerParamsReqParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070027389 wdiEventData.uEventDataSize = sizeof(*pwdiPowerParamsReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -070027390 wdiEventData.pCBfnc = wdiPowerParamsCb;
Jeff Johnson295189b2012-06-20 16:38:30 -070027391 wdiEventData.pUserData = pUserData;
27392
27393 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
27394}/*WDI_SetPowerParamsReq*/
27395
27396/**
27397 @brief Process Set Power Params Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070027398
27399 @param pWDICtx: pointer to the WLAN DAL context
27400 pEventData: pointer to the event information structure
27401
Jeff Johnson295189b2012-06-20 16:38:30 -070027402 @see
27403 @return Result of the function call
27404*/
27405WDI_Status
27406WDI_ProcessSetPowerParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070027407(
Jeff Johnson295189b2012-06-20 16:38:30 -070027408 WDI_ControlBlockType* pWDICtx,
27409 WDI_EventInfoType* pEventData
27410)
27411{
27412 WDI_SetPowerParamsReqParamsType* pwdiPowerParamsReqParams = NULL;
27413 WDI_SetPowerParamsCb wdiPowerParamsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070027414 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070027415 wpt_uint16 usDataOffset = 0;
27416 wpt_uint16 usSendSize = 0;
27417 tSetPowerParamsType powerParams;
27418
27419 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027420 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070027421 -------------------------------------------------------------------------*/
27422 if (( NULL == pEventData ) ||
27423 ( NULL == (pwdiPowerParamsReqParams = (WDI_SetPowerParamsReqParamsType*)pEventData->pEventData)) ||
27424 ( NULL == (wdiPowerParamsCb = (WDI_SetPowerParamsCb)pEventData->pCBfnc)))
27425 {
27426 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027427 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027428 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070027429 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070027430 }
27431
27432 /*-----------------------------------------------------------------------
27433 Get message buffer
27434 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070027435 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_POWER_PARAMS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070027436 sizeof(powerParams),
27437 &pSendBuffer, &usDataOffset, &usSendSize))||
27438 ( usSendSize < (usDataOffset + sizeof(powerParams) )))
27439 {
27440 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080027441 "Unable to get send buffer in Set PNO req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070027442 pEventData, pwdiPowerParamsReqParams, wdiPowerParamsCb);
27443 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070027444 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070027445 }
27446
27447 /* Ignore DTIM */
Jeff Johnsone7245742012-09-05 17:12:55 -070027448 powerParams.uIgnoreDTIM =
Jeff Johnson295189b2012-06-20 16:38:30 -070027449 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uIgnoreDTIM;
27450
27451 /*DTIM Period*/
Jeff Johnsone7245742012-09-05 17:12:55 -070027452 powerParams.uDTIMPeriod =
Jeff Johnson295189b2012-06-20 16:38:30 -070027453 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uDTIMPeriod;
27454
27455 /* Listen Interval */
Jeff Johnsone7245742012-09-05 17:12:55 -070027456 powerParams.uListenInterval=
Jeff Johnson295189b2012-06-20 16:38:30 -070027457 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uListenInterval;
27458
27459 /* Broadcast Multicas Filter */
Jeff Johnsone7245742012-09-05 17:12:55 -070027460 powerParams.uBcastMcastFilter =
Jeff Johnson295189b2012-06-20 16:38:30 -070027461 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uBcastMcastFilter;
27462
27463 /* Beacon Early Termination */
Jeff Johnsone7245742012-09-05 17:12:55 -070027464 powerParams.uEnableBET =
Jeff Johnson295189b2012-06-20 16:38:30 -070027465 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uEnableBET;
27466
27467 /* Beacon Early Termination Interval */
Jeff Johnsone7245742012-09-05 17:12:55 -070027468 powerParams.uBETInterval =
27469 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uBETInterval;
Jeff Johnson295189b2012-06-20 16:38:30 -070027470
Yue Mac24062f2013-05-13 17:01:29 -070027471 /* MAX LI for modulated DTIM */
27472 powerParams.uMaxLIModulatedDTIM =
27473 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uMaxLIModulatedDTIM;
Jeff Johnsone7245742012-09-05 17:12:55 -070027474
27475 wpalMemoryCopy( pSendBuffer+usDataOffset,
27476 &powerParams,
27477 sizeof(powerParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070027478
27479 pWDICtx->wdiReqStatusCB = pwdiPowerParamsReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070027480 pWDICtx->pReqStatusUserData = pwdiPowerParamsReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070027481
27482 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027483 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070027484 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070027485 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
27486 wdiPowerParamsCb, pEventData->pUserData, WDI_SET_POWER_PARAMS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070027487}
27488
27489/**
27490 @brief Process Power Params Rsp function (called when a
27491 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070027492
27493 @param pWDICtx: pointer to the WLAN DAL context
27494 pEventData: pointer to the event information structure
27495
Jeff Johnson295189b2012-06-20 16:38:30 -070027496 @see
27497 @return Result of the function call
27498*/
27499WDI_Status
27500WDI_ProcessSetPowerParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070027501(
Jeff Johnson295189b2012-06-20 16:38:30 -070027502 WDI_ControlBlockType* pWDICtx,
27503 WDI_EventInfoType* pEventData
27504)
27505{
27506 WDI_Status wdiStatus;
27507 eHalStatus halStatus;
27508 WDI_SetPowerParamsCb wdiPowerParamsCb;
27509 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27510
27511 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027512 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070027513 -------------------------------------------------------------------------*/
27514 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
27515 ( NULL == pEventData->pEventData ))
27516 {
27517 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027518 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027519 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070027520 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070027521 }
27522
Jeff Johnsone7245742012-09-05 17:12:55 -070027523 wdiPowerParamsCb = (WDI_SetPowerParamsCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070027524
27525 /*-------------------------------------------------------------------------
27526 Extract response and send it to UMAC
27527 -------------------------------------------------------------------------*/
27528 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070027529 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070027530
27531 /*Notify UMAC*/
27532 wdiPowerParamsCb(wdiStatus, pWDICtx->pRspCBUserData);
27533
Jeff Johnsone7245742012-09-05 17:12:55 -070027534 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070027535}/*WDI_ProcessSetPowerParamsRsp*/
27536
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +053027537/**
27538 @brief WDI_dhcpStartInd
27539 Host will send an event to the FW when DHCP is initiated
27540
27541 @param
27542 WDI_DHCPInd: DHCP Indication
27543 @see
27544 @return Result of the function call
27545*/
27546WDI_Status
27547WDI_dhcpStartInd
27548(
27549 WDI_DHCPInd *wdiDHCPInd
27550)
27551{
27552 WDI_EventInfoType wdiEventData;
27553
27554 /*------------------------------------------------------------------------
27555 Sanity Check
27556 ------------------------------------------------------------------------*/
27557 if ( eWLAN_PAL_FALSE == gWDIInitialized )
27558 {
27559 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
27560 "WDI API call before module is initialized - Fail request");
27561
27562 return WDI_STATUS_E_NOT_ALLOWED;
27563 }
27564
27565 wdiEventData.wdiRequest = WDI_DHCP_START_IND;
27566 wdiEventData.pEventData = wdiDHCPInd;
c_hpothu0b0cab72014-02-13 21:52:40 +053027567 wdiEventData.uEventDataSize = sizeof(WDI_DHCPInd);
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +053027568 wdiEventData.pCBfnc = NULL;
27569 wdiEventData.pUserData = NULL;
27570
27571 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
27572}
27573
27574
27575/**
27576 @brief WDI_dhcpStopInd
27577 Host will send an event to the FW when DHCP is completed
27578
27579 @param
27580 WDI_DHCPInd: DHCP Indication
27581 @see
27582 @return Result of the function call
27583*/
27584WDI_Status
27585WDI_dhcpStopInd
27586(
27587 WDI_DHCPInd *wdiDHCPInd
27588)
27589{
27590 WDI_EventInfoType wdiEventData;
27591
27592 /*------------------------------------------------------------------------
27593 Sanity Check
27594 ------------------------------------------------------------------------*/
27595 if ( eWLAN_PAL_FALSE == gWDIInitialized )
27596 {
27597 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
27598 "WDI API call before module is initialized - Fail request");
27599
27600 return WDI_STATUS_E_NOT_ALLOWED;
27601 }
27602
27603 wdiEventData.wdiRequest = WDI_DHCP_STOP_IND;
27604 wdiEventData.pEventData = wdiDHCPInd;
c_hpothu0b0cab72014-02-13 21:52:40 +053027605 wdiEventData.uEventDataSize = sizeof(WDI_DHCPInd);
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +053027606 wdiEventData.pCBfnc = NULL;
27607 wdiEventData.pUserData = NULL;
27608
27609 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
27610}
27611
27612
27613/**
27614 @brief Process DHCP Start Indication message and post it to HAL
27615
27616 @param pWDICtx: pointer to the WLAN DAL context
27617 pEventData: pointer to the event information structure
27618
27619 @see
27620 @return Result of the function call
27621*/
27622WDI_Status
27623WDI_ProcessDHCPStartInd
27624(
27625 WDI_ControlBlockType* pWDICtx,
27626 WDI_EventInfoType* pEventData
27627)
27628{
27629 wpt_uint8* pSendBuffer = NULL;
27630 wpt_uint16 usDataOffset = 0;
27631 wpt_uint16 usSendSize = 0;
27632 wpt_uint16 usLen = 0;
27633 WDI_DHCPInd* pwdiDHCPInd = NULL;
27634 tDHCPInfo* pDHCPInfo;
Sandeep Puligillaee789512014-02-13 19:14:52 +053027635 WDI_Status wdiStatus;
27636
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +053027637
27638 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27639
27640 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
27641 "%s", __func__);
27642
27643 /*-------------------------------------------------------------------------
27644 Sanity check
27645 -------------------------------------------------------------------------*/
27646 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
27647 {
27648 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
27649 "%s: Invalid parameters", __func__);
27650 WDI_ASSERT(0);
27651 return WDI_STATUS_E_FAILURE;
27652 }
27653 pwdiDHCPInd = (WDI_DHCPInd*)pEventData->pEventData;
27654 /*-----------------------------------------------------------------------
27655 Get message buffer
27656 -----------------------------------------------------------------------*/
27657
27658 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
27659 WDI_DHCP_START_IND,
27660 sizeof(tDHCPInfo),
27661 &pSendBuffer, &usDataOffset, &usSendSize))||
27662 ( usSendSize < (usDataOffset + usLen )))
27663 {
27664 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
27665 "Unable to get send buffer in DHCP Start req %p ",
27666 pEventData);
27667 WDI_ASSERT(0);
27668 return WDI_STATUS_E_FAILURE;
27669 }
27670
Sandeep Puligillaee789512014-02-13 19:14:52 +053027671 pDHCPInfo = (tDHCPInfo*)(pSendBuffer+usDataOffset);
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +053027672 pDHCPInfo->device_mode = pwdiDHCPInd->device_mode;
27673 wpalMemoryCopy(pDHCPInfo->macAddr, pwdiDHCPInd->macAddr,
27674 WDI_MAC_ADDR_LEN);
27675
27676 pWDICtx->pReqStatusUserData = NULL;
27677 pWDICtx->pfncRspCB = NULL;
27678
27679 /*-------------------------------------------------------------------------
27680 Send DHCP Start Indication to HAL
27681 -------------------------------------------------------------------------*/
Sandeep Puligillaee789512014-02-13 19:14:52 +053027682 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
27683 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus:WDI_STATUS_SUCCESS_SYNC;
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +053027684}/*WDI_ProcessDHCPStartInd*/
27685
27686/**
27687 @brief Process DHCP Stop indication message and post it to HAL
27688
27689 @param pWDICtx: pointer to the WLAN DAL context
27690 pEventData: pointer to the event information structure
27691
27692 @see
27693 @return Result of the function call
27694*/
27695WDI_Status
27696WDI_ProcessDHCPStopInd
27697(
27698 WDI_ControlBlockType* pWDICtx,
27699 WDI_EventInfoType* pEventData
27700)
27701{
27702 wpt_uint8* pSendBuffer = NULL;
27703 wpt_uint16 usDataOffset = 0;
27704 wpt_uint16 usSendSize = 0;
27705 wpt_uint16 usLen = 0;
27706 WDI_DHCPInd* pwdiDHCPInd = NULL;
27707 tDHCPInfo* pDHCPInfo;
Sandeep Puligillaee789512014-02-13 19:14:52 +053027708 WDI_Status wdiStatus;
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +053027709
27710 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27711
27712 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
27713 "%s", __func__);
27714
27715 /*-------------------------------------------------------------------------
27716 Sanity check
27717 -------------------------------------------------------------------------*/
27718
27719 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
27720 {
27721 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
27722 "%s: Invalid parameters", __func__);
27723 WDI_ASSERT(0);
27724 return WDI_STATUS_E_FAILURE;
27725 }
27726 pwdiDHCPInd = (WDI_DHCPInd*)pEventData->pEventData;
27727 /*-----------------------------------------------------------------------
27728 Get message buffer
27729 -----------------------------------------------------------------------*/
27730
27731 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
27732 WDI_DHCP_STOP_IND,
27733 sizeof(tDHCPInfo),
27734 &pSendBuffer, &usDataOffset, &usSendSize))||
27735 ( usSendSize < (usDataOffset + usLen )))
27736 {
27737 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
27738 "Unable to get send buffer in DHCP Start req %p ",
27739 pEventData);
27740 WDI_ASSERT(0);
27741 return WDI_STATUS_E_FAILURE;
27742 }
27743
Sandeep Puligillaee789512014-02-13 19:14:52 +053027744 pDHCPInfo = (tDHCPInfo*)(pSendBuffer+usDataOffset);
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +053027745 pDHCPInfo->device_mode = pwdiDHCPInd->device_mode;
27746 wpalMemoryCopy(pDHCPInfo->macAddr, pwdiDHCPInd->macAddr,
27747 WDI_MAC_ADDR_LEN);
27748
27749 pWDICtx->pReqStatusUserData = NULL;
27750 pWDICtx->pfncRspCB = NULL;
27751 /*-------------------------------------------------------------------------
27752 Send DHCP Stop indication to HAL
27753 -------------------------------------------------------------------------*/
Sandeep Puligillaee789512014-02-13 19:14:52 +053027754 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
27755 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus:WDI_STATUS_SUCCESS_SYNC;
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +053027756
27757}/*WDI_ProcessDHCPStopInd*/
27758
27759
Jeff Johnson295189b2012-06-20 16:38:30 -070027760#ifdef WLAN_FEATURE_GTK_OFFLOAD
27761/**
27762 @brief WDI_GTKOffloadReq will be called when the upper MAC
27763 wants to set GTK Rekey Counter while in power save. Upon
27764 the call of this API the WLAN DAL will pack and send a
27765 HAL GTK offload request message to the lower RIVA
27766 sub-system if DAL is in state STARTED.
27767
27768 In state BUSY this request will be queued. Request won't
27769 be allowed in any other state.
27770
27771 WDI_PostAssocReq must have been called.
27772
27773 @param pwdiGtkOffloadParams: the GTK offload as specified
27774 by the Device Interface
27775
27776 wdiGtkOffloadCb: callback for passing back the response
27777 of the GTK offload operation received from the device
27778
27779 pUserData: user data will be passed back with the
27780 callback
27781
27782 @see WDI_PostAssocReq
27783 @return Result of the function call
27784*/
27785WDI_Status
27786WDI_GTKOffloadReq
27787(
27788 WDI_GtkOffloadReqMsg* pwdiGtkOffloadReqMsg,
27789 WDI_GtkOffloadCb wdiGtkOffloadCb,
27790 void* pUserData
27791)
27792{
Gopichand Nakkala870cbae2013-03-15 21:16:09 +053027793 WDI_EventInfoType wdiEventData;
Jeff Johnson295189b2012-06-20 16:38:30 -070027794 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27795
27796 /*------------------------------------------------------------------------
27797 Sanity Check
27798 ------------------------------------------------------------------------*/
27799 if ( eWLAN_PAL_FALSE == gWDIInitialized )
27800 {
27801 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
27802 "WDI API call before module is initialized - Fail request");
27803
27804 return WDI_STATUS_E_NOT_ALLOWED;
27805 }
27806
27807 /*------------------------------------------------------------------------
27808 Fill in Event data and post to the Main FSM
27809 ------------------------------------------------------------------------*/
27810 wdiEventData.wdiRequest = WDI_GTK_OFFLOAD_REQ;
27811 wdiEventData.pEventData = pwdiGtkOffloadReqMsg;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -070027812 wdiEventData.uEventDataSize = sizeof(*pwdiGtkOffloadReqMsg);
Jeff Johnson295189b2012-06-20 16:38:30 -070027813 wdiEventData.pCBfnc = wdiGtkOffloadCb;
27814 wdiEventData.pUserData = pUserData;
27815
27816 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
27817}
27818
27819
27820/**
27821 @brief WDI_GTKOffloadGetInfoReq will be called when the upper
27822 MAC wants to get GTK Rekey Counter while in power save.
27823 Upon the call of this API the WLAN DAL will pack and
27824 send a HAL GTK offload request message to the lower RIVA
27825 sub-system if DAL is in state STARTED.
27826
27827 In state BUSY this request will be queued. Request won't
27828 be allowed in any other state.
27829
27830 WDI_PostAssocReq must have been called.
27831
27832 @param pwdiGtkOffloadGetInfoReqMsg: the GTK Offload
27833 Information Message as specified by the
27834 Device Interface
27835
27836 wdiGtkOffloadGetInfoCb: callback for passing back the
27837 response of the GTK offload operation received from the
27838 device
27839
27840 pUserData: user data will be passed back with the
27841 callback
27842
27843 @see WDI_PostAssocReq
27844 @return Result of the function call
27845*/
27846WDI_Status
27847WDI_GTKOffloadGetInfoReq
27848(
27849 WDI_GtkOffloadGetInfoReqMsg* pwdiGtkOffloadGetInfoReqMsg,
27850 WDI_GtkOffloadGetInfoCb wdiGtkOffloadGetInfoCb,
27851 void* pUserData
27852)
27853{
Gopichand Nakkala870cbae2013-03-15 21:16:09 +053027854 WDI_EventInfoType wdiEventData;
Jeff Johnson295189b2012-06-20 16:38:30 -070027855 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27856
27857 /*------------------------------------------------------------------------
27858 Sanity Check
27859 ------------------------------------------------------------------------*/
27860 if ( eWLAN_PAL_FALSE == gWDIInitialized )
27861 {
27862 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
27863 "WDI API call before module is initialized - Fail request");
27864
27865 return WDI_STATUS_E_NOT_ALLOWED;
27866 }
27867
27868 /*------------------------------------------------------------------------
27869 Fill in Event data and post to the Main FSM
27870 ------------------------------------------------------------------------*/
27871 wdiEventData.wdiRequest = WDI_GTK_OFFLOAD_GETINFO_REQ;
27872 wdiEventData.pEventData = pwdiGtkOffloadGetInfoReqMsg;
27873 wdiEventData.uEventDataSize = sizeof(*pwdiGtkOffloadGetInfoReqMsg);
27874 wdiEventData.pCBfnc = wdiGtkOffloadGetInfoCb;
27875 wdiEventData.pUserData = pUserData;
27876
27877 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
27878}
27879
27880
27881/**
27882 @brief Process set GTK Offload Request function
27883
27884 @param pWDICtx: pointer to the WLAN DAL context
27885 pEventData: pointer to the event information structure
27886
27887 @see
27888 @return Result of the function call
27889*/
27890WDI_Status
27891WDI_ProcessGTKOffloadReq
27892(
27893 WDI_ControlBlockType* pWDICtx,
27894 WDI_EventInfoType* pEventData
27895)
27896{
27897 WDI_GtkOffloadReqMsg* pwdiGtkOffloadReqMsg = NULL;
27898 WDI_GtkOffloadCb wdiGtkOffloadCb = NULL;
27899 wpt_uint8* pSendBuffer = NULL;
27900 wpt_uint16 usDataOffset = 0;
27901 wpt_uint16 usSendSize = 0;
27902 tHalGtkOffloadReqParams gtkOffloadReqParams = {0};
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027903 wpt_uint8 ucCurrentSessionId = 0;
27904 WDI_BSSSessionType* pBSSSes = NULL;
27905
Jeff Johnson295189b2012-06-20 16:38:30 -070027906 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27907
27908 /*-------------------------------------------------------------------------
27909 Sanity check
27910 -------------------------------------------------------------------------*/
27911 if (( NULL == pEventData ) ||
27912 ( NULL == (pwdiGtkOffloadReqMsg = (WDI_GtkOffloadReqMsg*)pEventData->pEventData)) ||
27913 ( NULL == (wdiGtkOffloadCb = (WDI_GtkOffloadCb)pEventData->pCBfnc)))
27914 {
27915 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027916 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027917 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080027918 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070027919 }
27920
27921 /*-----------------------------------------------------------------------
27922 Get message buffer
27923 -----------------------------------------------------------------------*/
27924 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_GTK_OFFLOAD_REQ,
27925 sizeof(gtkOffloadReqParams),
27926 &pSendBuffer, &usDataOffset, &usSendSize))||
27927 ( usSendSize < (usDataOffset + sizeof(gtkOffloadReqParams) )))
27928 {
27929 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080027930 "Unable to get send buffer in GTK offload req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070027931 pEventData, pwdiGtkOffloadReqMsg, wdiGtkOffloadCb);
27932 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080027933 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070027934 }
27935
27936 //
27937 // Fill gtkOffloadReqParams from pwdiGtkOffloadReqMsg->gtkOffloadReqParams
27938 //
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027939 ucCurrentSessionId = WDI_FindAssocSession( pWDICtx,
27940 pwdiGtkOffloadReqMsg->gtkOffloadReqParams.bssId,
27941 &pBSSSes);
27942 if ( NULL == pBSSSes )
27943 {
27944 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027945 " %s : Association for this BSSID does not exist", __func__);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080027946 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027947 }
27948
27949 gtkOffloadReqParams.bssIdx = pBSSSes->ucBSSIdx;
27950
Jeff Johnson295189b2012-06-20 16:38:30 -070027951 gtkOffloadReqParams.ulFlags = pwdiGtkOffloadReqMsg->gtkOffloadReqParams.ulFlags;
27952 // Copy KCK
27953 wpalMemoryCopy(&(gtkOffloadReqParams.aKCK[0]), &(pwdiGtkOffloadReqMsg->gtkOffloadReqParams.aKCK[0]), 16);
27954 // Copy KEK
27955 wpalMemoryCopy(&(gtkOffloadReqParams.aKEK[0]), &(pwdiGtkOffloadReqMsg->gtkOffloadReqParams.aKEK[0]), 16);
27956 // Copy KeyReplayCounter
27957 wpalMemoryCopy(&(gtkOffloadReqParams.ullKeyReplayCounter), &(pwdiGtkOffloadReqMsg->gtkOffloadReqParams.ullKeyReplayCounter), sizeof(v_U64_t));
27958
27959 wpalMemoryCopy( pSendBuffer+usDataOffset,
27960 &gtkOffloadReqParams,
27961 sizeof(gtkOffloadReqParams));
27962
27963 pWDICtx->wdiReqStatusCB = pwdiGtkOffloadReqMsg->wdiReqStatusCB;
27964 pWDICtx->pReqStatusUserData = pwdiGtkOffloadReqMsg->pUserData;
27965
27966 /*-------------------------------------------------------------------------
27967 Send Get STA Request to HAL
27968 -------------------------------------------------------------------------*/
27969 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
27970 wdiGtkOffloadCb, pEventData->pUserData, WDI_GTK_OFFLOAD_RESP);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080027971
27972fail:
27973 // Release the message buffer so we don't leak
27974 wpalMemoryFree(pSendBuffer);
27975
27976failRequest:
27977 //WDA should have failure check to avoid the memory leak
27978 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070027979}
27980
27981
27982/**
27983 @brief Process GTK Offload Get Information Request function
27984
27985 @param pWDICtx: pointer to the WLAN DAL context
27986 pEventData: pointer to the event information structure
27987
27988 @see
27989 @return Result of the function call
27990*/
27991WDI_Status
27992WDI_ProcessGTKOffloadGetInfoReq
27993(
27994 WDI_ControlBlockType* pWDICtx,
27995 WDI_EventInfoType* pEventData
27996)
27997{
27998 WDI_GtkOffloadGetInfoReqMsg* pwdiGtkOffloadGetInfoReqMsg = NULL;
27999 WDI_GtkOffloadGetInfoCb wdiGtkOffloadGetInfoCb = NULL;
28000 wpt_uint8* pSendBuffer = NULL;
28001 wpt_uint16 usDataOffset = 0;
28002 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028003 tHalGtkOffloadGetInfoReqParams halGtkOffloadGetInfoReqParams;
28004 wpt_uint8 ucCurrentSessionId = 0;
28005 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070028006
28007 /*-------------------------------------------------------------------------
28008 Sanity check
28009 -------------------------------------------------------------------------*/
28010 if (( NULL == pEventData ) ||
28011 ( NULL == (pwdiGtkOffloadGetInfoReqMsg = (WDI_GtkOffloadGetInfoReqMsg*)pEventData->pEventData)) ||
28012 ( NULL == (wdiGtkOffloadGetInfoCb = (WDI_GtkOffloadGetInfoCb)pEventData->pCBfnc)))
28013 {
28014 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028015 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028016 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080028017 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070028018 }
28019
28020 /*-----------------------------------------------------------------------
28021 Get message buffer
28022 -----------------------------------------------------------------------*/
28023 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_GTK_OFFLOAD_GETINFO_REQ,
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028024 sizeof(halGtkOffloadGetInfoReqParams),
Jeff Johnson295189b2012-06-20 16:38:30 -070028025 &pSendBuffer, &usDataOffset, &usSendSize))||
Gopichand Nakkala870cbae2013-03-15 21:16:09 +053028026 ( usSendSize < ( usDataOffset + sizeof(halGtkOffloadGetInfoReqParams))))
Jeff Johnson295189b2012-06-20 16:38:30 -070028027 {
28028 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080028029 "Unable to get send buffer in WDI_ProcessGTKOffloadGetInfoReq() %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070028030 pEventData, pwdiGtkOffloadGetInfoReqMsg, wdiGtkOffloadGetInfoCb);
28031 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080028032 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070028033 }
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028034 ucCurrentSessionId = WDI_FindAssocSession( pWDICtx,
28035 pwdiGtkOffloadGetInfoReqMsg->WDI_GtkOffloadGetInfoReqParams.bssId,
28036 &pBSSSes);
28037 if ( NULL == pBSSSes )
28038 {
28039 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028040 " %s : Association for this BSSID does not exist",__func__);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080028041 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028042 }
28043 halGtkOffloadGetInfoReqParams.bssIdx = pBSSSes->ucBSSIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070028044
28045 //
28046 // Don't need to fill send buffer other than header
28047 //
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028048 wpalMemoryCopy( pSendBuffer+usDataOffset,
28049 &halGtkOffloadGetInfoReqParams,
28050 sizeof(halGtkOffloadGetInfoReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070028051
28052 pWDICtx->wdiReqStatusCB = pwdiGtkOffloadGetInfoReqMsg->wdiReqStatusCB;
28053 pWDICtx->pReqStatusUserData = pwdiGtkOffloadGetInfoReqMsg->pUserData;
28054
28055 /*-------------------------------------------------------------------------
28056 Send Get STA Request to HAL
28057 -------------------------------------------------------------------------*/
28058 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
28059 wdiGtkOffloadGetInfoCb, pEventData->pUserData, WDI_GTK_OFFLOAD_GETINFO_RESP);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080028060fail:
28061 // Release the message buffer so we don't leak
28062 wpalMemoryFree(pSendBuffer);
28063
28064failRequest:
28065 //WDA should have failure check to avoid the memory leak
28066 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070028067}
28068
28069/**
28070 @brief Process host offload Rsp function (called when a
28071 response is being received over the bus from HAL)
28072
28073 @param pWDICtx: pointer to the WLAN DAL context
28074 pEventData: pointer to the event information structure
28075
28076 @see
28077 @return Result of the function call
28078*/
28079WDI_Status
28080WDI_ProcessGtkOffloadRsp
28081(
28082 WDI_ControlBlockType* pWDICtx,
28083 WDI_EventInfoType* pEventData
28084)
28085{
Jeff Johnson295189b2012-06-20 16:38:30 -070028086 eHalStatus halStatus;
28087 WDI_GtkOffloadCb wdiGtkOffloadCb = NULL;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028088 tHalGtkOffloadRspParams halGtkOffloadRspParams;
28089 WDI_GtkOffloadRspParams wdiGtkOffloadRsparams;
Jeff Johnson295189b2012-06-20 16:38:30 -070028090
28091 /*-------------------------------------------------------------------------
28092 Sanity check
28093 -------------------------------------------------------------------------*/
28094 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
28095 ( NULL == pEventData->pEventData))
28096 {
28097 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028098 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028099 WDI_ASSERT(0);
28100 return WDI_STATUS_E_FAILURE;
28101 }
28102
Wilson Yang00256342013-10-10 23:13:38 -070028103 wdiGtkOffloadCb = (WDI_GtkOffloadCb)pWDICtx->pfncRspCB;
28104
Jeff Johnson295189b2012-06-20 16:38:30 -070028105 /*-------------------------------------------------------------------------
28106 Extract response and send it to UMAC
28107 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028108 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
28109 {
28110 wpalMemoryCopy( &halGtkOffloadRspParams,
28111 pEventData->pEventData,
28112 sizeof(halGtkOffloadRspParams));
28113
28114 wdiGtkOffloadRsparams.ulStatus =
Gopichand Nakkala870cbae2013-03-15 21:16:09 +053028115 WDI_HAL_2_WDI_STATUS(halGtkOffloadRspParams.ulStatus);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028116 wdiGtkOffloadRsparams.bssIdx =
28117 halGtkOffloadRspParams.bssIdx;
28118 }
28119 else
28120 {
28121 halStatus = *((eHalStatus*)pEventData->pEventData);
28122 wdiGtkOffloadRsparams.ulStatus = WDI_HAL_2_WDI_STATUS(halStatus);
28123 }
Jeff Johnson295189b2012-06-20 16:38:30 -070028124
28125 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028126 wdiGtkOffloadCb( &wdiGtkOffloadRsparams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070028127
28128 return WDI_STATUS_SUCCESS;
28129}
28130
28131/**
28132 @brief Process GTK Offload Get Information Response function
28133
28134 @param pWDICtx: pointer to the WLAN DAL context
28135 pEventData: pointer to the event information structure
28136
28137 @see
28138 @return Result of the function call
28139*/
28140WDI_Status
28141WDI_ProcessGTKOffloadGetInfoRsp
28142(
28143 WDI_ControlBlockType* pWDICtx,
28144 WDI_EventInfoType* pEventData
28145)
28146{
Jeff Johnson295189b2012-06-20 16:38:30 -070028147 eHalStatus halStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070028148 WDI_GtkOffloadGetInfoCb wdiGtkOffloadGetInfoCb = NULL;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028149 tHalGtkOffloadGetInfoRspParams halGtkOffloadGetInfoRspParams;
28150 WDI_GtkOffloadGetInfoRspParams wdiGtkOffloadGetInfoRsparams;
Gopichand Nakkala870cbae2013-03-15 21:16:09 +053028151 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070028152
Jeff Johnson295189b2012-06-20 16:38:30 -070028153
28154 /*-------------------------------------------------------------------------
28155 Sanity check
28156 -------------------------------------------------------------------------*/
28157 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
28158 ( NULL == pEventData->pEventData ))
28159 {
28160 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028161 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028162 WDI_ASSERT(0);
28163 return WDI_STATUS_E_FAILURE;
28164 }
28165
Wilson Yang00256342013-10-10 23:13:38 -070028166 wdiGtkOffloadGetInfoCb = (WDI_GtkOffloadGetInfoCb)pWDICtx->pfncRspCB;
28167
28168 /*-------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -070028169 Extract response and send it to UMAC
28170 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028171 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
28172 {
28173 wpalMemoryCopy( &halGtkOffloadGetInfoRspParams,
28174 pEventData->pEventData,
28175 sizeof(halGtkOffloadGetInfoRspParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070028176
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028177 wdiGtkOffloadGetInfoRsparams.ulStatus =
Gopichand Nakkala870cbae2013-03-15 21:16:09 +053028178 WDI_HAL_2_WDI_STATUS(halGtkOffloadGetInfoRspParams.ulStatus);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028179 wdiGtkOffloadGetInfoRsparams.ullKeyReplayCounter =
28180 halGtkOffloadGetInfoRspParams.ullKeyReplayCounter;
28181 wdiGtkOffloadGetInfoRsparams.ulTotalRekeyCount =
28182 halGtkOffloadGetInfoRspParams.ulTotalRekeyCount;
28183 wdiGtkOffloadGetInfoRsparams.ulGTKRekeyCount =
28184 halGtkOffloadGetInfoRspParams.ulGTKRekeyCount;
28185 wdiGtkOffloadGetInfoRsparams.ulIGTKRekeyCount =
28186 halGtkOffloadGetInfoRspParams.ulIGTKRekeyCount;
Gopichand Nakkala870cbae2013-03-15 21:16:09 +053028187
28188 wpalMutexAcquire(&pWDICtx->wptMutex);
28189 WDI_FindAssocSessionByBSSIdx(pWDICtx, halGtkOffloadGetInfoRspParams.bssIdx,
28190 &pBSSSes);
28191
28192 if ( NULL == pBSSSes )
28193 {
28194 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
28195 "Association sequence for this BSS does not exist or "
28196 "association no longer in progress - mysterious HAL response");
28197 wpalMutexRelease(&pWDICtx->wptMutex);
28198 return WDI_STATUS_E_NOT_ALLOWED;
28199 }
28200
28201 wpalMemoryCopy(wdiGtkOffloadGetInfoRsparams.bssId, pBSSSes->macBSSID,
28202 sizeof (wpt_macAddr));
28203 wpalMutexRelease(&pWDICtx->wptMutex);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028204 }
28205 else
28206 {
28207 halStatus = *((eHalStatus*)pEventData->pEventData);
28208 wdiGtkOffloadGetInfoRsparams.ulStatus = WDI_HAL_2_WDI_STATUS(halStatus);
28209 }
Jeff Johnson295189b2012-06-20 16:38:30 -070028210 /*Notify UMAC*/
28211 //wdiUpdateScanParamsCb(wdiStatus, pWDICtx->pRspCBUserData);
28212 //wdiReceiveFilterClearFilterCb(wdiStatus, pWDICtx->pRspCBUserData);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028213 wdiGtkOffloadGetInfoCb(&wdiGtkOffloadGetInfoRsparams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070028214
28215 return WDI_STATUS_SUCCESS;
28216}
28217#endif // WLAN_FEATURE_GTK_OFFLOAD
28218
28219#ifdef WLAN_WAKEUP_EVENTS
28220WDI_Status
28221WDI_ProcessWakeReasonInd
28222(
28223 WDI_ControlBlockType* pWDICtx,
28224 WDI_EventInfoType* pEventData
28225)
28226{
28227 WDI_LowLevelIndType *pWdiInd;
28228 tpWakeReasonParams pWakeReasonParams;
28229 wpt_uint32 allocSize = 0;
28230
28231 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028232 "+%s", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028233
28234 /*-------------------------------------------------------------------------
28235 Sanity check
28236 -------------------------------------------------------------------------*/
28237 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
28238 ( NULL == pEventData->pEventData ))
28239 {
28240 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028241 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028242 WDI_ASSERT( 0 );
28243 return WDI_STATUS_E_FAILURE;
28244 }
28245
28246 /*-------------------------------------------------------------------------
28247 Extract indication and send it to UMAC
28248 -------------------------------------------------------------------------*/
28249 pWakeReasonParams = (tpWakeReasonParams)(pEventData->pEventData);
28250
28251 allocSize = sizeof(WDI_LowLevelIndType) + (pWakeReasonParams->ulStoredDataLen - 1);
28252
28253 //Allocate memory for WDI_WakeReasonIndType structure
28254 pWdiInd = wpalMemoryAllocate(allocSize) ;
28255
28256 if(NULL == pWdiInd)
28257 {
28258 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080028259 "%s: Failed to allocate memory for WDI_WakeReasonIndType: %p %p %p ",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028260 __func__, pWDICtx, pEventData, pEventData->pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070028261 WDI_ASSERT(0);
28262 return WDI_STATUS_E_FAILURE;
28263 }
28264
28265 wpalMemoryZero(pWdiInd, allocSize);
28266
28267 /* Fill in the indication parameters*/
28268 // Fill wdiInd.wdiIndicationData.wakeReasonInd structure from wakeReasonInd.wakeReasonParams
28269 pWdiInd->wdiIndicationType = WDI_WAKE_REASON_IND;
28270 pWdiInd->wdiIndicationData.wdiWakeReasonInd.ulReason = pWakeReasonParams->ulReason;
28271 pWdiInd->wdiIndicationData.wdiWakeReasonInd.ulReasonArg = pWakeReasonParams->ulReasonArg;
28272 pWdiInd->wdiIndicationData.wdiWakeReasonInd.ulStoredDataLen = pWakeReasonParams->ulStoredDataLen;
28273 pWdiInd->wdiIndicationData.wdiWakeReasonInd.ulActualDataLen = pWakeReasonParams->ulActualDataLen;
28274 wpalMemoryCopy( (void *)&(pWdiInd->wdiIndicationData.wdiWakeReasonInd.aDataStart[0]),
28275 &(pWakeReasonParams->aDataStart[0]),
28276 pWakeReasonParams->ulStoredDataLen);
28277
ltimariub77f24b2013-01-24 18:54:33 -080028278
28279 if ( pWDICtx->wdiLowLevelIndCB )
28280 {
28281 /*Notify UMAC*/
28282 pWDICtx->wdiLowLevelIndCB( pWdiInd, pWDICtx->pIndUserData );
28283 }
Jeff Johnson295189b2012-06-20 16:38:30 -070028284
28285 //Free memory allocated for WDI_WakeReasonIndType structure
28286 wpalMemoryFree(pWdiInd);
28287
28288 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028289 "-%s", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028290
28291 return WDI_STATUS_SUCCESS;
28292}
28293#endif // WLAN_WAKEUP_EVENTS
28294
28295void WDI_GetWcnssCompiledApiVersion
28296(
28297 WDI_WlanVersionType *pWcnssApiVersion
28298)
28299{
28300 pWcnssApiVersion->major = WLAN_HAL_VER_MAJOR;
28301 pWcnssApiVersion->minor = WLAN_HAL_VER_MINOR;
28302 pWcnssApiVersion->version = WLAN_HAL_VER_VERSION;
28303 pWcnssApiVersion->revision = WLAN_HAL_VER_REVISION;
28304}
28305
28306/**
28307 @brief Process Set TM Level Rsp function (called when a
28308 response is being received over the bus from HAL)
28309
28310 @param pWDICtx: pointer to the WLAN DAL context
28311 pEventData: pointer to the event information structure
28312
28313 @see
28314 @return Result of the function call
28315*/
28316WDI_Status
28317WDI_ProcessSetTmLevelRsp
28318(
28319 WDI_ControlBlockType* pWDICtx,
28320 WDI_EventInfoType* pEventData
28321)
28322{
28323 WDI_Status wdiStatus;
28324 eHalStatus halStatus;
28325 WDI_SetTmLevelCb wdiSetTmLevelCb;
28326 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28327
28328 /*-------------------------------------------------------------------------
28329 Sanity check
28330 -------------------------------------------------------------------------*/
28331 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
28332 ( NULL == pEventData->pEventData ))
28333 {
28334 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028335 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028336 WDI_ASSERT(0);
28337 return WDI_STATUS_E_FAILURE;
28338 }
28339
28340 wdiSetTmLevelCb = (WDI_SetPowerParamsCb)pWDICtx->pfncRspCB;
28341
28342 /*-------------------------------------------------------------------------
28343 Extract response and send it to UMAC
28344 -------------------------------------------------------------------------*/
28345 halStatus = *((eHalStatus*)pEventData->pEventData);
28346 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
28347
28348 /*Notify UMAC*/
28349 wdiSetTmLevelCb(wdiStatus, pWDICtx->pRspCBUserData);
28350
28351 return WDI_STATUS_SUCCESS;
28352}/*WDI_ProcessSetTmLevelRsp*/
28353
28354/**
28355 @brief Process Set Thermal Mitigation level Changed request
28356
28357 @param pWDICtx: pointer to the WLAN DAL context
28358 pEventData: pointer to the event information structure
28359
28360 @see
28361 @return Result of the function call
28362*/
28363WDI_Status
28364WDI_ProcessSetTmLevelReq
28365(
28366 WDI_ControlBlockType* pWDICtx,
28367 WDI_EventInfoType* pEventData
28368)
28369{
28370 WDI_SetTmLevelReqType *pwdiSetTmLevelReq = NULL;
28371 WDI_SetTmLevelCb wdiSetTmLevelCb = NULL;
28372 wpt_uint8* pSendBuffer = NULL;
28373 wpt_uint16 usDataOffset = 0;
28374 wpt_uint16 usSendSize = 0;
28375 tSetThermalMitgationType halTmMsg;
28376
28377 /*-------------------------------------------------------------------------
28378 Sanity check
28379 -------------------------------------------------------------------------*/
28380 if (( NULL == pEventData ) ||
28381 ( NULL == (pwdiSetTmLevelReq = (WDI_SetTmLevelReqType*)pEventData->pEventData)) ||
28382 ( NULL == (wdiSetTmLevelCb = (WDI_SetTmLevelCb)pEventData->pCBfnc)))
28383 {
28384 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028385 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028386 WDI_ASSERT(0);
28387 return WDI_STATUS_E_FAILURE;
28388 }
28389
28390 /*-----------------------------------------------------------------------
28391 Get message buffer
28392 -----------------------------------------------------------------------*/
28393 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_TM_LEVEL_REQ,
28394 sizeof(halTmMsg),
28395 &pSendBuffer, &usDataOffset, &usSendSize))||
28396 ( usSendSize < (usDataOffset + sizeof(halTmMsg) )))
28397 {
28398 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080028399 "Unable to get send buffer in Set PNO req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070028400 pEventData, pwdiSetTmLevelReq, wdiSetTmLevelCb);
28401 WDI_ASSERT(0);
28402 return WDI_STATUS_E_FAILURE;
28403 }
28404
28405 halTmMsg.thermalMitMode = pwdiSetTmLevelReq->tmMode;
28406 halTmMsg.thermalMitLevel = pwdiSetTmLevelReq->tmLevel;
28407
28408 wpalMemoryCopy( pSendBuffer+usDataOffset,
28409 &halTmMsg,
28410 sizeof(halTmMsg));
28411
28412 pWDICtx->pReqStatusUserData = pwdiSetTmLevelReq->pUserData;
28413 pWDICtx->pfncRspCB = NULL;
28414 /*-------------------------------------------------------------------------
28415 Send Get STA Request to HAL
28416 -------------------------------------------------------------------------*/
28417 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
28418 wdiSetTmLevelCb, pEventData->pUserData, WDI_SET_TM_LEVEL_RESP);
28419}
28420
28421/* Fill the value from the global features enabled array to the global capabilities
28422 * bitmap struct
28423 */
28424static void
28425FillAllFeatureCaps(tWlanFeatCaps *fCaps, placeHolderInCapBitmap *enabledFeat, wpt_int8 len)
28426{
28427 wpt_int8 i;
28428 for (i=0; i<len; i++)
28429 {
28430 setFeatCaps(fCaps, enabledFeat[i]);
28431 }
28432}
28433
28434/**
28435 @brief WDI_featureCapsExchangeReq
28436 Post feature capability bitmap exchange event.
28437 Host will send its own capability to FW in this req and
28438 expect FW to send its capability back as a bitmap in Response
28439
28440 @param
28441
28442 wdiFeatureCapsExchangeCb: callback called on getting the response.
28443 It is kept to mantain similarity between WDI reqs and if needed, can
28444 be used in future. Currently, It is set to NULL
28445
28446 pUserData: user data will be passed back with the
28447 callback
28448
28449 @see
28450 @return Result of the function call
28451*/
28452WDI_Status
28453WDI_featureCapsExchangeReq
28454(
28455 WDI_featureCapsExchangeCb wdiFeatureCapsExchangeCb,
28456 void* pUserData
28457)
28458{
28459 WDI_EventInfoType wdiEventData;
28460 wpt_int32 fCapsStructSize;
28461
28462 /*------------------------------------------------------------------------
28463 Sanity Check
28464 ------------------------------------------------------------------------*/
28465 if ( eWLAN_PAL_FALSE == gWDIInitialized )
28466 {
28467 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
28468 "WDI API call before module is initialized - Fail request");
28469
28470 return WDI_STATUS_E_NOT_ALLOWED;
28471 }
28472
28473 /* Allocate memory separately for global variable carrying FW caps */
28474 fCapsStructSize = sizeof(tWlanFeatCaps);
28475 gpHostWlanFeatCaps = wpalMemoryAllocate(fCapsStructSize);
28476 if ( NULL == gpHostWlanFeatCaps )
28477 {
28478 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Arif Hussain9a5d5382013-11-17 22:05:35 -080028479 "Cannot allocate memory for host capability info");
Jeff Johnson295189b2012-06-20 16:38:30 -070028480 WDI_ASSERT(0);
28481 return WDI_STATUS_MEM_FAILURE;
28482 }
28483
28484 wpalMemoryZero(gpHostWlanFeatCaps, fCapsStructSize);
28485
28486 /*------------------------------------------------------------------------
28487 Fill in Event data and post to the Main FSM
28488 ------------------------------------------------------------------------*/
28489 FillAllFeatureCaps(gpHostWlanFeatCaps, supportEnabledFeatures,
28490 (sizeof(supportEnabledFeatures)/sizeof(supportEnabledFeatures[0])));
Madan Mohan Koyyalamudif8d3b3f2013-07-30 19:10:54 +053028491 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Arif Hussain9a5d5382013-11-17 22:05:35 -080028492 "Host caps %x %x %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -070028493 gpHostWlanFeatCaps->featCaps[0],
28494 gpHostWlanFeatCaps->featCaps[1],
28495 gpHostWlanFeatCaps->featCaps[2],
28496 gpHostWlanFeatCaps->featCaps[3]
28497 );
Madan Mohan Koyyalamudif8d3b3f2013-07-30 19:10:54 +053028498 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR, "Host Capability");
28499 WDI_TraceHostFWCapabilities(gpHostWlanFeatCaps->featCaps);
Jeff Johnson295189b2012-06-20 16:38:30 -070028500 wdiEventData.wdiRequest = WDI_FEATURE_CAPS_EXCHANGE_REQ;
28501 wdiEventData.pEventData = gpHostWlanFeatCaps;
28502 wdiEventData.uEventDataSize = fCapsStructSize;
28503 wdiEventData.pCBfnc = wdiFeatureCapsExchangeCb;
28504 wdiEventData.pUserData = pUserData;
28505
28506 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
28507}
28508
28509/**
Yathish9f22e662012-12-10 14:21:35 -080028510 @brief Disable Active mode offload in Host
28511
28512 @param void
28513 @see
28514 @return void
28515*/
28516void
28517WDI_disableCapablityFeature(wpt_uint8 feature_index)
28518{
28519 supportEnabledFeatures[feature_index] = 0;
28520 return;
28521}
28522
28523/**
Jeff Johnson295189b2012-06-20 16:38:30 -070028524 @brief Process Host-FW Capability Exchange Request function
28525
28526 @param pWDICtx: pointer to the WLAN DAL context
28527 pEventData: pointer to the event information structure
28528
28529 @see
28530 @return Result of the function call
28531*/
28532WDI_Status
28533WDI_ProcessFeatureCapsExchangeReq
28534(
28535 WDI_ControlBlockType* pWDICtx,
28536 WDI_EventInfoType* pEventData
28537)
28538{
28539 wpt_uint8* pSendBuffer = NULL;
28540 wpt_uint16 usDataOffset = 0;
28541 wpt_uint16 usSendSize = 0;
28542 wpt_uint16 usLen = 0;
28543
28544 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28545
28546 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028547 "%s", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028548
28549 /*-------------------------------------------------------------------------
28550 Sanity check
28551 -------------------------------------------------------------------------*/
28552 /* Call back function is NULL since not required for cap exchange req */
28553 if (( NULL == pEventData ) ||
28554 ( NULL == (tWlanFeatCaps *)pEventData->pEventData))
28555 {
28556 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028557 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028558 WDI_ASSERT(0);
28559 return WDI_STATUS_E_FAILURE;
28560 }
28561
28562 /*-----------------------------------------------------------------------
28563 Get message buffer
28564 -----------------------------------------------------------------------*/
28565 usLen = sizeof(tWlanFeatCaps);
28566
28567 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
28568 WDI_FEATURE_CAPS_EXCHANGE_REQ,
28569 usLen,
28570 &pSendBuffer, &usDataOffset, &usSendSize))||
28571 ( usSendSize < (usDataOffset + usLen )))
28572 {
28573 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080028574 "Unable to get send buffer in feat caps exchange req %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070028575 pEventData, (tWlanFeatCaps *)pEventData->pEventData);
28576 WDI_ASSERT(0);
28577 return WDI_STATUS_E_FAILURE;
28578 }
28579
28580 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Arif Hussain9a5d5382013-11-17 22:05:35 -080028581 "Host Caps - %x %x %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -070028582 ((tWlanFeatCaps *)pEventData->pEventData)->featCaps[0],
28583 ((tWlanFeatCaps *)pEventData->pEventData)->featCaps[1],
28584 ((tWlanFeatCaps *)pEventData->pEventData)->featCaps[2],
28585 ((tWlanFeatCaps *)pEventData->pEventData)->featCaps[3]
28586 );
28587
28588 /* Copy host caps after the offset in the send buffer */
28589 wpalMemoryCopy( pSendBuffer+usDataOffset,
28590 (tWlanFeatCaps *)pEventData->pEventData,
28591 usLen);
28592
28593 /*-------------------------------------------------------------------------
28594 Send Start Request to HAL
28595 -------------------------------------------------------------------------*/
28596 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
28597 (WDI_StartRspCb)pEventData->pCBfnc,
28598 pEventData->pUserData, WDI_FEATURE_CAPS_EXCHANGE_RESP);
28599
28600}/*WDI_ProcessFeatureCapsExchangeReq*/
28601
28602/**
28603 @brief Process Host-FW Capability Exchange Response function
28604
28605 @param pWDICtx: pointer to the WLAN DAL context
28606 pEventData: pointer to the event information structure
28607
28608 @see
28609 @return Result of the function call
28610*/
28611WDI_Status
28612WDI_ProcessFeatureCapsExchangeRsp
28613(
28614 WDI_ControlBlockType* pWDICtx,
28615 WDI_EventInfoType* pEventData
28616)
28617{
28618 WDI_featureCapsExchangeCb wdiFeatureCapsExchangeCb;
28619 wpt_int32 fCapsStructSize;
28620 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28621
28622 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028623 "%s", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028624
28625 /*-------------------------------------------------------------------------
28626 Sanity check
28627 -------------------------------------------------------------------------*/
28628 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
28629 ( NULL == pEventData->pEventData ))
28630 {
28631 /* It will go here when riva is old (doesn't understand this msg) and host is new */
28632 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028633 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028634 WDI_ASSERT(0);
28635 return WDI_STATUS_E_FAILURE;
28636 }
28637
28638 /* Allocate memory separately for global variable carrying FW caps */
28639 fCapsStructSize = sizeof(tWlanFeatCaps);
28640 gpFwWlanFeatCaps = wpalMemoryAllocate(fCapsStructSize);
28641 if ( NULL == gpFwWlanFeatCaps )
28642 {
28643 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Arif Hussain9a5d5382013-11-17 22:05:35 -080028644 "Cannot allocate memory for host capability info");
Jeff Johnson295189b2012-06-20 16:38:30 -070028645 WDI_ASSERT(0);
28646 return WDI_STATUS_MEM_FAILURE;
28647 }
28648
28649 /*-------------------------------------------------------------------------
28650 Unpack HAL Response Message - the header was already extracted by the
28651 main Response Handling procedure
28652 -------------------------------------------------------------------------*/
28653 /*-------------------------------------------------------------------------
28654 Extract response and send it to UMAC
28655 -------------------------------------------------------------------------*/
28656
28657 wpalMemoryCopy(gpFwWlanFeatCaps,(tWlanFeatCaps *) pEventData -> pEventData,
28658 fCapsStructSize);
Madan Mohan Koyyalamudif8d3b3f2013-07-30 19:10:54 +053028659 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Arif Hussain9a5d5382013-11-17 22:05:35 -080028660 "FW caps %x %x %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -070028661 gpFwWlanFeatCaps->featCaps[0],
28662 gpFwWlanFeatCaps->featCaps[1],
28663 gpFwWlanFeatCaps->featCaps[2],
28664 gpFwWlanFeatCaps->featCaps[3]
Madan Mohan Koyyalamudif8d3b3f2013-07-30 19:10:54 +053028665 );
28666 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR, "Firmware Capability");
28667 WDI_TraceHostFWCapabilities(gpFwWlanFeatCaps->featCaps);
Jeff Johnson295189b2012-06-20 16:38:30 -070028668 wdiFeatureCapsExchangeCb = (WDI_featureCapsExchangeCb) pWDICtx -> pfncRspCB;
28669
28670 /*Notify UMAC - there is no callback right now but can be used in future if reqd */
28671 if (wdiFeatureCapsExchangeCb != NULL)
28672 wdiFeatureCapsExchangeCb(NULL, NULL);
28673
28674 return WDI_STATUS_SUCCESS;
28675}
28676
Mohit Khanna4a70d262012-09-11 16:30:12 -070028677#ifdef WLAN_FEATURE_11AC
28678WDI_Status
28679WDI_ProcessUpdateVHTOpModeRsp
28680(
28681 WDI_ControlBlockType* pWDICtx,
28682 WDI_EventInfoType* pEventData
28683)
28684{
28685 WDI_UpdateVHTOpModeCb wdiVHTOpModeCb = NULL;
28686 WDI_Status wdiStatus;
28687 eHalStatus halStatus;
28688
28689 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28690
28691 /*-------------------------------------------------------------------------
28692 Sanity check
28693 -------------------------------------------------------------------------*/
28694 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
28695 ( NULL == pEventData->pEventData))
28696 {
28697 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028698 "%s: Invalid parameters", __func__);
Mohit Khanna4a70d262012-09-11 16:30:12 -070028699 WDI_ASSERT(0);
28700 return WDI_STATUS_E_FAILURE;
28701 }
28702 wdiVHTOpModeCb = (WDI_UpdateVHTOpModeCb)pEventData->pCBfnc;
28703
28704 /*-------------------------------------------------------------------------
28705 Extract response and send it to UMAC
28706 -------------------------------------------------------------------------*/
28707 halStatus = *((eHalStatus*)pEventData->pEventData);
28708 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
28709
28710 /*Notify UMAC*/
28711 wdiVHTOpModeCb( wdiStatus, pEventData->pUserData);
28712
28713 return WDI_STATUS_SUCCESS;
28714}
28715#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070028716/**
28717 @brief WDI_getHostWlanFeatCaps
28718 WDI API that returns whether the feature passed to it as enum value in
28719 "placeHolderInCapBitmap" is supported by Host or not. It uses WDI global
28720 variable storing host capability bitmap to find this. This can be used by
28721 other moduels to decide certain things like call different APIs based on
28722 whether a particular feature is supported.
28723
28724 @param
28725
28726 feat_enum_value: enum value for the feature as in placeHolderInCapBitmap in wlan_hal_msg.h.
28727
28728 @see
28729 @return
28730 0 - if the feature is NOT supported in host
28731 any non-zero value - if the feature is SUPPORTED in host.
28732*/
28733wpt_uint8 WDI_getHostWlanFeatCaps(wpt_uint8 feat_enum_value)
28734{
28735 wpt_uint8 featSupported = 0;
28736 if (gpHostWlanFeatCaps != NULL)
28737 {
28738 getFeatCaps(gpHostWlanFeatCaps, feat_enum_value, featSupported);
28739 }
28740 else
28741 {
Madan Mohan Koyyalamudi8b7f1e62012-10-05 14:56:51 -070028742 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi8bdd3112012-09-24 13:55:14 -070028743 "Caps exchange feature NOT supported. Return NOT SUPPORTED for %u feature", feat_enum_value);
Jeff Johnson295189b2012-06-20 16:38:30 -070028744 }
28745 return featSupported;
28746}
28747
28748/**
28749 @brief WDI_getFwWlanFeatCaps
28750 WDI API that returns whether the feature passed to it as enum value in
28751 "placeHolderInCapBitmap" is supported by FW or not. It uses WDI global
28752 variable storing host capability bitmap to find this. This can be used by
28753 other moduels to decide certain things like call different APIs based on
28754 whether a particular feature is supported.
28755
28756 @param
28757
28758 feat_enum_value: enum value for the feature as in placeHolderInCapBitmap
28759 in wlan_hal_msg.h.
28760
28761 @see
28762 @return
28763 0 - if the feature is NOT supported in FW
28764 any non-zero value - if the feature is SUPPORTED in FW.
28765*/
28766wpt_uint8 WDI_getFwWlanFeatCaps(wpt_uint8 feat_enum_value)
28767{
28768 wpt_uint8 featSupported = 0;
28769 if (gpFwWlanFeatCaps != NULL)
28770 {
28771 getFeatCaps(gpFwWlanFeatCaps, feat_enum_value, featSupported);
28772 }
28773 else
28774 {
Madan Mohan Koyyalamudi8b7f1e62012-10-05 14:56:51 -070028775 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi8bdd3112012-09-24 13:55:14 -070028776 "Caps exchange feature NOT supported. Return NOT SUPPORTED for %u feature", feat_enum_value);
Jeff Johnson295189b2012-06-20 16:38:30 -070028777 }
28778 return featSupported;
28779}
Mohit Khanna4a70d262012-09-11 16:30:12 -070028780
28781#ifdef WLAN_FEATURE_11AC
28782WDI_Status
28783WDI_ProcessUpdateVHTOpModeReq
28784(
28785 WDI_ControlBlockType* pWDICtx,
28786 WDI_EventInfoType* pEventData
28787)
28788{
28789 WDI_UpdateVHTOpMode* pwdiVHTOpModeParams = NULL;
28790 WDI_UpdateVHTOpModeCb wdiVHTOpModeCb = NULL;
28791 wpt_uint8* pSendBuffer = NULL;
28792 wpt_uint16 usDataOffset = 0;
28793 wpt_uint16 usSendSize = 0;
28794
28795 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28796
28797 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028798 "%s", __func__);
Mohit Khanna4a70d262012-09-11 16:30:12 -070028799
28800 /*-------------------------------------------------------------------------
28801 Sanity check
28802 -------------------------------------------------------------------------*/
28803 if (( NULL == pEventData ) ||
28804 ( NULL == (pwdiVHTOpModeParams = (WDI_UpdateVHTOpMode*)pEventData->pEventData)) ||
28805 ( NULL == (wdiVHTOpModeCb = (WDI_UpdateVHTOpModeCb)pEventData->pCBfnc)))
28806 {
28807 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028808 "%s: Invalid parameters", __func__);
Mohit Khanna4a70d262012-09-11 16:30:12 -070028809 WDI_ASSERT(0);
28810 return WDI_STATUS_E_FAILURE;
28811 }
28812
28813 /*-----------------------------------------------------------------------
28814 Get message buffer
28815 -----------------------------------------------------------------------*/
28816 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_VHT_OP_MODE_REQ,
28817 sizeof(WDI_UpdateVHTOpMode),
28818 &pSendBuffer, &usDataOffset, &usSendSize))||
28819 ( usSendSize < (usDataOffset + sizeof(WDI_UpdateVHTOpMode) )))
28820 {
28821 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
28822 "Unable to get send buffer in update vht opMode req");
28823 WDI_ASSERT(0);
28824 return WDI_STATUS_E_FAILURE;
28825 }
28826
28827 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Arif Hussain9a5d5382013-11-17 22:05:35 -080028828 "pwdiVHTOpModeParams->opMode=%d, pwdiVHTOpModeParams->staId=%d", pwdiVHTOpModeParams->opMode, pwdiVHTOpModeParams->staId);
Mohit Khanna4a70d262012-09-11 16:30:12 -070028829
28830 wpalMemoryCopy( pSendBuffer+usDataOffset, pwdiVHTOpModeParams,
28831 sizeof(WDI_UpdateVHTOpMode));
28832
28833 /*-------------------------------------------------------------------------
28834 Send Start Request to HAL
28835 -------------------------------------------------------------------------*/
28836 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
28837 wdiVHTOpModeCb,
28838 pEventData->pUserData, WDI_UPDATE_VHT_OP_MODE_RESP);
28839
28840}
28841
28842WDI_Status
28843WDI_UpdateVHTOpModeReq
28844(
28845 WDI_UpdateVHTOpMode *pData,
28846 WDI_UpdateVHTOpModeCb wdiUpdateVHTOpModeCb,
28847 void* pUserData
28848)
28849{
28850 WDI_EventInfoType wdiEventData;
28851
28852 /*------------------------------------------------------------------------
28853 Sanity Check
28854 ------------------------------------------------------------------------*/
28855 if ( eWLAN_PAL_FALSE == gWDIInitialized )
28856 {
28857 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
28858 "WDI API call before module is initialized - Fail request");
28859
28860 return WDI_STATUS_E_NOT_ALLOWED;
28861 }
28862
28863 /*------------------------------------------------------------------------
28864 Fill in Event data and post to the Main FSM
28865 ------------------------------------------------------------------------*/
28866 wdiEventData.wdiRequest = WDI_UPDATE_VHT_OP_MODE_REQ;
28867 wdiEventData.pEventData = pData;
28868 wdiEventData.uEventDataSize = sizeof(WDI_UpdateVHTOpMode);
28869 wdiEventData.pCBfnc = wdiUpdateVHTOpModeCb;
28870 wdiEventData.pUserData = pUserData;
28871
28872 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Arif Hussain9a5d5382013-11-17 22:05:35 -080028873 "pData->opMode=%d, pData->staId=%d", pData->opMode, pData->staId);
Mohit Khanna4a70d262012-09-11 16:30:12 -070028874
28875 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
28876
28877}
28878#endif
Madan Mohan Koyyalamudi8cb53982012-09-28 14:34:47 -070028879
28880/**
28881 @brief WDI_TransportChannelDebug -
28882 Display DXE Channel debugging information
28883 User may request to display DXE channel snapshot
28884 Or if host driver detects any abnormal stcuk may display
Madan Mohan Koyyalamudi8b7f1e62012-10-05 14:56:51 -070028885
Jeff Johnsonb88db982012-12-10 13:34:59 -080028886 @param displaySnapshot : Display DXE snapshot option
Mihir Shete40a55652014-03-02 14:14:47 +053028887 @param debugFlags : Enable stall detect features
28888 defined by WPAL_DeviceDebugFlags
28889 These features may effect
28890 data performance.
Madan Mohan Koyyalamudi8cb53982012-09-28 14:34:47 -070028891 @see
28892 @return none
28893*/
28894void WDI_TransportChannelDebug
28895(
28896 wpt_boolean displaySnapshot,
Mihir Shete40a55652014-03-02 14:14:47 +053028897 wpt_uint8 debugFlags
Madan Mohan Koyyalamudi8cb53982012-09-28 14:34:47 -070028898)
28899{
Mihir Shete40a55652014-03-02 14:14:47 +053028900 WDTS_ChannelDebug(displaySnapshot, debugFlags);
Madan Mohan Koyyalamudi8cb53982012-09-28 14:34:47 -070028901 return;
Madan Mohan Koyyalamudi3352adb2012-09-28 14:57:24 -070028902}
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -070028903/**
28904 @brief WDI_SsrTimerCB
28905 Callback function for SSR timer, if this is called then the graceful
28906 shutdown for Riva did not happen.
28907
28908 @param pUserData : user data to timer
28909
28910 @see
28911 @return none
28912*/
28913void
28914WDI_SsrTimerCB
28915(
28916 void *pUserData
28917)
28918{
28919 WDI_ControlBlockType* pWDICtx = (WDI_ControlBlockType*)pUserData;
28920 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28921
28922 if (NULL == pWDICtx )
28923 {
28924 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028925 "%s: Invalid parameters", __func__);
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -070028926 WDI_ASSERT(0);
28927 return;
28928 }
28929 wpalRivaSubystemRestart();
28930
28931 return;
28932
28933}/*WDI_SsrTimerCB*/
Gopichand Nakkalae620d5a2013-04-26 05:45:57 -070028934
28935/**
28936 @brief WDI_SetEnableSSR -
28937 This API is called to enable/disable SSR on WDI timeout.
28938
28939 @param enableSSR : enable/disable SSR
28940
28941 @see
28942 @return none
28943*/
28944void WDI_SetEnableSSR(wpt_boolean enableSSR)
28945{
28946 gWDICb.bEnableSSR = enableSSR;
28947}
Leo Chang9056f462013-08-01 19:21:11 -070028948
28949
28950#ifdef FEATURE_WLAN_LPHB
28951/**
Leo Changd9df8aa2013-09-26 13:32:26 -070028952 @brief WDI_ProcessLphbInd -
Leo Chang9056f462013-08-01 19:21:11 -070028953 This function will be invoked when FW detects low power
28954 heart beat failure
28955
28956 @param pWDICtx : wdi context
28957 pEventData : indication data
Leo Chang9056f462013-08-01 19:21:11 -070028958 @see
28959 @return Result of the function call
28960*/
28961WDI_Status
Leo Changd9df8aa2013-09-26 13:32:26 -070028962WDI_ProcessLphbInd
Leo Chang9056f462013-08-01 19:21:11 -070028963(
28964 WDI_ControlBlockType* pWDICtx,
28965 WDI_EventInfoType* pEventData
28966)
28967{
28968 WDI_LowLevelIndType wdiInd;
Leo Changd9df8aa2013-09-26 13:32:26 -070028969 tHalLowPowerHeartBeatIndParam lphbIndicationParam;
Leo Chang9056f462013-08-01 19:21:11 -070028970 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28971
28972 /*-------------------------------------------------------------------------
28973 Sanity check
28974 -------------------------------------------------------------------------*/
28975 if ((NULL == pWDICtx) || (NULL == pEventData) ||
28976 (NULL == pEventData->pEventData))
28977 {
28978 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
28979 "%s: Invalid parameters", __func__);
28980 WDI_ASSERT(0);
28981 return WDI_STATUS_E_FAILURE;
28982 }
28983
28984 /*-------------------------------------------------------------------------
28985 Extract indication and send it to UMAC
28986 -------------------------------------------------------------------------*/
Leo Changd9df8aa2013-09-26 13:32:26 -070028987 wpalMemoryCopy(&lphbIndicationParam,
28988 pEventData->pEventData,
28989 sizeof(tHalLowPowerHeartBeatIndParam));
Leo Chang9056f462013-08-01 19:21:11 -070028990
Leo Changd9df8aa2013-09-26 13:32:26 -070028991 wdiInd.wdiIndicationType = WDI_LPHB_IND;
Leo Chang9056f462013-08-01 19:21:11 -070028992 wdiInd.wdiIndicationData.wdiLPHBTimeoutInd.bssIdx =
Leo Changd9df8aa2013-09-26 13:32:26 -070028993 lphbIndicationParam.bssIdx;
Leo Chang9056f462013-08-01 19:21:11 -070028994 wdiInd.wdiIndicationData.wdiLPHBTimeoutInd.sessionIdx =
Leo Changd9df8aa2013-09-26 13:32:26 -070028995 lphbIndicationParam.sessionIdx;
Leo Chang9056f462013-08-01 19:21:11 -070028996 wdiInd.wdiIndicationData.wdiLPHBTimeoutInd.protocolType =
Leo Changd9df8aa2013-09-26 13:32:26 -070028997 lphbIndicationParam.protocolType;
Leo Chang9056f462013-08-01 19:21:11 -070028998 wdiInd.wdiIndicationData.wdiLPHBTimeoutInd.eventReason =
Leo Changd9df8aa2013-09-26 13:32:26 -070028999 lphbIndicationParam.eventReason;
Leo Chang9056f462013-08-01 19:21:11 -070029000 /*Notify UMAC*/
29001 if (pWDICtx->wdiLowLevelIndCB)
29002 {
29003 pWDICtx->wdiLowLevelIndCB(&wdiInd, pWDICtx->pIndUserData);
29004 }
29005
29006 return WDI_STATUS_SUCCESS;
29007}
29008
29009/**
29010 @brief WDI_ProcessLphbCfgRsp -
29011 LPHB configuration response from FW
29012
29013 @param pWDICtx : wdi context
29014 pEventData : indication data
29015
29016 @see
29017 @return Result of the function call
29018*/
29019WDI_Status WDI_ProcessLphbCfgRsp
29020(
29021 WDI_ControlBlockType* pWDICtx,
29022 WDI_EventInfoType* pEventData
29023)
29024{
29025 WDI_Status wdiStatus;
29026 eHalStatus halStatus;
29027 WDI_LphbCfgCb wdiLphbCfgCb;
29028 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
29029
29030 /*-------------------------------------------------------------------------
29031 Sanity check
29032 -------------------------------------------------------------------------*/
29033 if ((NULL == pWDICtx) || (NULL == pEventData) ||
29034 (NULL == pEventData->pEventData))
29035 {
29036 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
29037 "%s: Invalid parameters", __func__);
29038 WDI_ASSERT(0);
29039 return WDI_STATUS_E_FAILURE;
29040 }
29041
29042 wdiLphbCfgCb = (WDI_LphbCfgCb)pWDICtx->pfncRspCB;
29043
29044 /*-------------------------------------------------------------------------
29045 Extract response and send it to UMAC
29046 -------------------------------------------------------------------------*/
29047 halStatus = *((eHalStatus*)pEventData->pEventData);
29048 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
29049
29050 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
29051 "LPHB Cfg Rsp Return status %d", wdiStatus);
29052 /*Notify UMAC*/
29053 if (NULL != wdiLphbCfgCb)
29054 {
29055 wdiLphbCfgCb(wdiStatus, pWDICtx->pRspCBUserData);
29056 }
29057
29058 return WDI_STATUS_SUCCESS;
29059}
29060
29061/**
29062 @brief WDI_ProcessLPHBConfReq -
29063 LPHB configuration request to FW
29064
29065 @param pWDICtx : wdi context
29066 pEventData : indication data
29067
29068 @see
29069 @return none
29070*/
29071WDI_Status WDI_ProcessLPHBConfReq
29072(
29073 WDI_ControlBlockType* pWDICtx,
29074 WDI_EventInfoType* pEventData
29075)
29076{
29077 WDI_LPHBReq *pLphbReqParams;
29078 WDI_Status wdiStatus;
29079 wpt_uint8* pSendBuffer = NULL;
29080 wpt_uint16 usDataOffset = 0;
29081 wpt_uint16 usSendSize = 0;
29082 tHalLowPowerHeartBeatReq *halLphbReqRarams;
29083 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
29084
29085 /*-------------------------------------------------------------------------
29086 Sanity check
29087 -------------------------------------------------------------------------*/
29088 if ((NULL == pEventData) || (NULL == pEventData->pEventData))
29089 {
29090 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
29091 "%s: Invalid parameters in Suspend ind",__func__);
29092 WDI_ASSERT(0);
29093 return WDI_STATUS_E_FAILURE;
29094 }
29095
29096 pLphbReqParams = (WDI_LPHBReq *)pEventData->pEventData;
29097
29098 /*-----------------------------------------------------------------------
29099 Get message buffer
29100 -----------------------------------------------------------------------*/
29101 if ((WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(pWDICtx,
29102 WDI_LPHB_CFG_REQ,
29103 sizeof(tHalLowPowerHeartBeatReqMsg),
29104 &pSendBuffer, &usDataOffset, &usSendSize))||
29105 (usSendSize < (usDataOffset + sizeof(tHalLowPowerHeartBeatReqMsg))))
29106 {
29107 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
29108 "Unable to get send buffer in LPHB Ind ");
29109 WDI_ASSERT(0);
29110 return WDI_STATUS_E_FAILURE;
29111 }
29112
29113 halLphbReqRarams = (tHalLowPowerHeartBeatReq *)(pSendBuffer + usDataOffset);
29114 wpalMemoryZero(halLphbReqRarams, sizeof(tHalLowPowerHeartBeatReq));
29115
29116 halLphbReqRarams->lowPowerHeartBeatCmdType =
29117 (tANI_U16)(++pLphbReqParams->cmd);
29118 switch ((tANI_U16)pLphbReqParams->cmd)
29119 {
29120 case WDI_LPHB_SET_EN_PARAMS_INDID:
29121 halLphbReqRarams->sessionIdx =
29122 pLphbReqParams->params.lphbEnableReq.session;
29123 halLphbReqRarams->options.control.heartBeatEnable =
29124 pLphbReqParams->params.lphbEnableReq.enable;
29125 halLphbReqRarams->options.control.heartBeatType =
29126 pLphbReqParams->params.lphbEnableReq.item;
29127 break;
29128
29129 case WDI_LPHB_SET_TCP_PARAMS_INDID:
29130 halLphbReqRarams->sessionIdx =
29131 pLphbReqParams->params.lphbTcpParamReq.session;
29132 halLphbReqRarams->options.tcpParams.timeOutSec =
29133 pLphbReqParams->params.lphbTcpParamReq.timeout;
29134 wpalMemoryCopy(&halLphbReqRarams->options.tcpParams.hostIpv4Addr,
29135 &pLphbReqParams->params.lphbTcpParamReq.dev_ip,
29136 sizeof(v_U32_t));
29137 wpalMemoryCopy(&halLphbReqRarams->options.tcpParams.destIpv4Addr,
29138 &pLphbReqParams->params.lphbTcpParamReq.srv_ip,
29139 sizeof(v_U32_t));
29140
29141 wpalMemoryCopy(halLphbReqRarams->options.tcpParams.gatewayMacAddr,
29142 pLphbReqParams->params.lphbTcpParamReq.gateway_mac,
29143 WDI_MAC_ADDR_LEN);
29144
29145 halLphbReqRarams->options.tcpParams.hostPort =
29146 pLphbReqParams->params.lphbTcpParamReq.src_port;
29147 halLphbReqRarams->options.tcpParams.destPort =
29148 pLphbReqParams->params.lphbTcpParamReq.dst_port;
Leo Changd9df8aa2013-09-26 13:32:26 -070029149 halLphbReqRarams->options.tcpParams.timePeriodSec =
29150 pLphbReqParams->params.lphbTcpParamReq.timePeriodSec;
29151 halLphbReqRarams->options.tcpParams.tcpSn =
29152 pLphbReqParams->params.lphbTcpParamReq.tcpSn;
Leo Chang9056f462013-08-01 19:21:11 -070029153 break;
29154
29155 case WDI_LPHB_SET_TCP_PKT_FILTER_INDID:
29156 halLphbReqRarams->sessionIdx =
29157 pLphbReqParams->params.lphbTcpFilterReq.session;
29158 halLphbReqRarams->options.tcpUdpFilter.offset =
29159 pLphbReqParams->params.lphbTcpFilterReq.offset;
29160 halLphbReqRarams->options.tcpUdpFilter.filterLength =
29161 pLphbReqParams->params.lphbTcpFilterReq.length;
29162 wpalMemoryCopy(halLphbReqRarams->options.tcpUdpFilter.filter,
29163 pLphbReqParams->params.lphbTcpFilterReq.filter,
29164 WDI_LPHB_FILTER_LEN);
29165 break;
29166
29167 case WDI_LPHB_SET_UDP_PARAMS_INDID:
29168 halLphbReqRarams->sessionIdx =
29169 pLphbReqParams->params.lphbUdpParamReq.session;
29170 halLphbReqRarams->options.udpParams.timeOutSec =
29171 pLphbReqParams->params.lphbUdpParamReq.timeout;
29172 halLphbReqRarams->options.udpParams.timePeriodSec =
29173 pLphbReqParams->params.lphbUdpParamReq.interval;
29174 wpalMemoryCopy(&halLphbReqRarams->options.udpParams.hostIpv4Addr,
29175 &pLphbReqParams->params.lphbUdpParamReq.dev_ip,
29176 sizeof(v_U32_t));
29177 wpalMemoryCopy(&halLphbReqRarams->options.udpParams.destIpv4Addr,
29178 &pLphbReqParams->params.lphbUdpParamReq.srv_ip,
29179 sizeof(v_U32_t));
29180
29181 wpalMemoryCopy(halLphbReqRarams->options.udpParams.gatewayMacAddr,
29182 pLphbReqParams->params.lphbUdpParamReq.gateway_mac,
29183 WDI_MAC_ADDR_LEN);
29184
29185 halLphbReqRarams->options.udpParams.hostPort =
29186 pLphbReqParams->params.lphbUdpParamReq.src_port;
29187 halLphbReqRarams->options.udpParams.destPort =
29188 pLphbReqParams->params.lphbUdpParamReq.dst_port;
29189 break;
29190
29191 case WDI_LPHB_SET_UDP_PKT_FILTER_INDID:
29192 halLphbReqRarams->sessionIdx =
29193 pLphbReqParams->params.lphbUdpFilterReq.session;
29194 halLphbReqRarams->options.tcpUdpFilter.offset =
29195 pLphbReqParams->params.lphbUdpFilterReq.offset;
29196 halLphbReqRarams->options.tcpUdpFilter.filterLength =
29197 pLphbReqParams->params.lphbUdpFilterReq.length;
29198 wpalMemoryCopy(halLphbReqRarams->options.tcpUdpFilter.filter,
29199 pLphbReqParams->params.lphbUdpFilterReq.filter,
29200 WDI_LPHB_FILTER_LEN);
29201 break;
29202
29203 case WDI_LPHB_SET_NETWORK_INFO_INDID:
29204 /* NA */
29205 break;
29206
29207 default:
29208 break;
29209 }
29210
29211 /*-------------------------------------------------------------------------
29212 Send Suspend Request to HAL
29213 -------------------------------------------------------------------------*/
29214 pWDICtx->pfncRspCB = pEventData->pCBfnc;
29215 pWDICtx->pReqStatusUserData = pEventData->pUserData;
29216
29217 wdiStatus = WDI_SendMsg(pWDICtx, pSendBuffer,
29218 usSendSize, pWDICtx->pfncRspCB,
29219 pWDICtx->pReqStatusUserData,
29220 WDI_LPHB_CFG_RESP);
29221
29222 return wdiStatus;
29223}
29224
29225/**
29226 @brief WDI_LPHBConfReq -
29227 LPHB configuration request API
29228
29229 @param lphbconfParam : configuration parameter
29230 usrData : client context
29231 lphbCfgCb : callback function pointer
29232
29233 @see
29234 @return Success or fail status code
29235*/
29236WDI_Status WDI_LPHBConfReq(void *lphbconfParam,
29237 void *usrData, WDI_LphbCfgCb lphbCfgCb)
29238{
29239 WDI_EventInfoType wdiEventData;
29240
29241 /*------------------------------------------------------------------------
29242 Sanity Check
29243 ------------------------------------------------------------------------*/
29244 if (eWLAN_PAL_FALSE == gWDIInitialized)
29245 {
29246 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
29247 "WDI API call before module is initialized - Fail request");
29248
29249 return WDI_STATUS_E_NOT_ALLOWED;
29250 }
29251
29252 /*------------------------------------------------------------------------
29253 Fill in Event data and post to the Main FSM
29254 ------------------------------------------------------------------------*/
29255 wdiEventData.wdiRequest = WDI_LPHB_CFG_REQ;
29256 wdiEventData.pEventData = lphbconfParam;
29257 wdiEventData.uEventDataSize = sizeof(WDI_LPHBReq);
29258 wdiEventData.pCBfnc = lphbCfgCb;
29259 wdiEventData.pUserData = usrData;
29260
29261 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
29262}
29263#endif /* FEATURE_WLAN_LPHB */
29264
Ravi Joshid2ca7c42013-07-23 08:37:49 -070029265/**
29266 @brief WDI_ProcessIbssPeerInactivityInd
29267 Process peer inactivity indication coming from HAL
29268
29269 @param pWDICtx: pointer to the WLAN DAL context
29270 pEventData: pointer to the event information structure
29271 @see
29272 @return Result of the function call
29273*/
29274WDI_Status
29275WDI_ProcessIbssPeerInactivityInd
29276(
29277 WDI_ControlBlockType* pWDICtx,
29278 WDI_EventInfoType* pEventData
29279)
29280{
29281 WDI_LowLevelIndType wdiInd;
29282 tIbssPeerInactivityIndMsg halIbssIndMsg;
29283
29284 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
29285
29286 /*-------------------------------------------------------------------------
29287 Sanity check
29288 -------------------------------------------------------------------------*/
29289 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
29290 ( NULL == pEventData->pEventData ))
29291 {
29292 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
29293 "%s: Invalid parameters", __func__);
29294 WDI_ASSERT( 0 );
29295 return WDI_STATUS_E_FAILURE;
29296 }
29297
29298 /*-------------------------------------------------------------------------
29299 Extract indication and send it to UMAC
29300 -------------------------------------------------------------------------*/
29301 wpalMemoryCopy( &halIbssIndMsg.ibssPeerInactivityIndParams,
29302 pEventData->pEventData,
29303 sizeof(halIbssIndMsg.ibssPeerInactivityIndParams) );
29304
29305 /*Fill in the indication parameters*/
29306 wdiInd.wdiIndicationType = WDI_IBSS_PEER_INACTIVITY_IND;
29307
29308 wdiInd.wdiIndicationData.wdiIbssPeerInactivityInd.bssIdx
29309 = halIbssIndMsg.ibssPeerInactivityIndParams.bssIdx;
29310
29311 wdiInd.wdiIndicationData.wdiIbssPeerInactivityInd.staIdx
29312 = halIbssIndMsg.ibssPeerInactivityIndParams.staIdx;
29313
29314 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiIbssPeerInactivityInd.staMacAddr,
29315 halIbssIndMsg.ibssPeerInactivityIndParams.staAddr,
29316 sizeof(tSirMacAddr));
29317
29318 /*Notify UMAC*/
29319 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
29320
29321 return WDI_STATUS_SUCCESS;
29322
29323} /*WDI_ProcessIbssPeerInactivityInd*/
Rajeev79dbe4c2013-10-05 11:03:42 +053029324
Chittajit Mitraf5413a42013-10-18 14:20:08 -070029325/**
29326*@brief WDI_RateUpdateInd will be called when the upper MAC
29327 requests the device to set rates.
Rajeev79dbe4c2013-10-05 11:03:42 +053029328
Chittajit Mitraf5413a42013-10-18 14:20:08 -070029329
29330 @param wdiRateUpdateIndParams:
29331
29332
29333 @see
29334 @return Result of the function call
29335*/
29336WDI_Status
29337WDI_RateUpdateInd
29338(
29339 WDI_RateUpdateIndParams *wdiRateUpdateIndParams
29340)
29341{
29342 WDI_EventInfoType wdiEventData;
29343 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
29344
29345 /*------------------------------------------------------------------------
29346 Sanity Check
29347 ------------------------------------------------------------------------*/
29348 if ( eWLAN_PAL_FALSE == gWDIInitialized )
29349 {
29350 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
29351 "WDI API call before module is initialized - Fail request");
29352
29353 return WDI_STATUS_E_NOT_ALLOWED;
29354 }
29355
29356 /*------------------------------------------------------------------------
29357 Fill in Event data and post to the Main FSM
29358 ------------------------------------------------------------------------*/
29359 wdiEventData.wdiRequest = WDI_RATE_UPDATE_IND;
29360 wdiEventData.pEventData = wdiRateUpdateIndParams;
29361 wdiEventData.uEventDataSize = sizeof(WDI_RateUpdateIndParams);
29362 wdiEventData.pCBfnc = NULL;
29363 wdiEventData.pUserData = NULL;
29364
29365 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
29366
29367}/* WDI_RateUpdateInd */
29368
29369/**
29370 @brief Process Rate Update Indication and post it to HAL
29371
29372 @param pWDICtx: pointer to the WLAN DAL context
29373 pEventData: pointer to the event information structure
29374
29375 @see
29376 @return Result of the function call
29377*/
29378WDI_Status
29379WDI_ProcessRateUpdateInd
29380(
29381 WDI_ControlBlockType* pWDICtx,
29382 WDI_EventInfoType* pEventData
29383)
29384{
29385 wpt_uint8* pSendBuffer = NULL;
29386 wpt_uint16 usDataOffset = 0;
29387 wpt_uint16 usSendSize = 0;
29388 WDI_RateUpdateIndParams *pwdiRateUpdateInd = NULL;
29389 tHalRateUpdateInd *pRateUpdateInd;
29390 WDI_Status wdiStatus;
29391
29392 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
29393
29394 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
29395 "%s", __func__);
29396
29397 /*-------------------------------------------------------------------------
29398 Sanity check
29399 -------------------------------------------------------------------------*/
29400 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
29401 {
29402 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
29403 "%s: Invalid parameters", __func__);
29404 WDI_ASSERT(0);
29405 return WDI_STATUS_E_FAILURE;
29406 }
29407 pwdiRateUpdateInd = (WDI_RateUpdateIndParams *)pEventData->pEventData;
29408 /*-----------------------------------------------------------------------
29409 Get message buffer
29410 -----------------------------------------------------------------------*/
29411
29412 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
29413 WDI_RATE_UPDATE_IND,
29414 sizeof(tHalRateUpdateParams),
29415 &pSendBuffer, &usDataOffset, &usSendSize))||
29416 ( usSendSize < (usDataOffset +
29417 sizeof(tHalRateUpdateParams) )))
29418 {
29419 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
29420 "Unable to get send buffer in Rate Update Indication %p ",
29421 pEventData);
29422 WDI_ASSERT(0);
29423 return WDI_STATUS_E_FAILURE;
29424 }
29425
29426 pRateUpdateInd = (tHalRateUpdateInd *)pSendBuffer;
29427
29428 /* Copy the bssid */
29429 wpalMemoryCopy(pRateUpdateInd->halRateUpdateParams.bssid,
29430 pwdiRateUpdateInd->bssid, WDI_MAC_ADDR_LEN);
29431
29432 /* Copy the tx flags */
29433 pRateUpdateInd->halRateUpdateParams.ucastDataRateTxFlag =
29434 pwdiRateUpdateInd->ucastDataRateTxFlag;
29435 pRateUpdateInd->halRateUpdateParams.reliableMcastDataRateTxFlag =
29436 pwdiRateUpdateInd->reliableMcastDataRateTxFlag;
29437 pRateUpdateInd->halRateUpdateParams.mcastDataRate24GHzTxFlag =
29438 pwdiRateUpdateInd->mcastDataRate24GHzTxFlag;
29439 pRateUpdateInd->halRateUpdateParams.mcastDataRate5GHzTxFlag =
29440 pwdiRateUpdateInd->mcastDataRate5GHzTxFlag;
29441
29442 /* Copy the tx rates */
29443 pRateUpdateInd->halRateUpdateParams.ucastDataRate =
29444 pwdiRateUpdateInd->ucastDataRate;
29445 pRateUpdateInd->halRateUpdateParams.reliableMcastDataRate =
29446 pwdiRateUpdateInd->reliableMcastDataRate;
29447 pRateUpdateInd->halRateUpdateParams.mcastDataRate24GHz =
29448 pwdiRateUpdateInd->mcastDataRate24GHz;
29449 pRateUpdateInd->halRateUpdateParams.mcastDataRate5GHz =
29450 pwdiRateUpdateInd->mcastDataRate5GHz;
29451
29452 /*-------------------------------------------------------------------------
29453 Send Rate Update Indication to HAL
29454 -------------------------------------------------------------------------*/
29455 pWDICtx->wdiReqStatusCB = pwdiRateUpdateInd->wdiReqStatusCB;
29456 pWDICtx->pReqStatusUserData = pwdiRateUpdateInd->pUserData;
29457
29458 wdiStatus = WDI_SendIndication(pWDICtx, pSendBuffer, usSendSize);
29459
29460 return (wdiStatus != WDI_STATUS_SUCCESS) ?
29461 wdiStatus : WDI_STATUS_SUCCESS_SYNC;
29462
29463} /* WDI_ProcessRateUpdateInd */
29464
29465#ifdef FEATURE_WLAN_BATCH_SCAN
Rajeev79dbe4c2013-10-05 11:03:42 +053029466/**
29467 @brief Process stop batch indication from WDA
29468
29469 @param pWDICtx: pointer to the WLAN DAL context
29470 pEventData: pointer to the event information structure
29471
29472 @see
29473 @return Result of the function call
29474*/
29475WDI_Status
29476WDI_ProcessStopBatchScanInd
29477(
29478 WDI_ControlBlockType* pWDICtx,
29479 WDI_EventInfoType* pEventData
29480)
29481{
29482 wpt_uint8* pSendBuffer = NULL;
29483 wpt_uint16 usDataOffset = 0;
29484 wpt_uint16 usSendSize = 0;
29485 WDI_Status wdiStatus;
29486 tHalBatchScanStopIndParam *pHalInd = NULL;
29487 WDI_StopBatchScanIndType *pWdiInd = NULL;
29488
29489
29490 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
29491
29492 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
29493 "%s", __func__);
29494
29495 /*-------------------------------------------------------------------------
29496 Sanity check
29497 -------------------------------------------------------------------------*/
29498
29499 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
29500 {
29501 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
29502 "%s: Invalid parameters", __func__);
29503 WDI_ASSERT(0);
29504 return WDI_STATUS_E_FAILURE;
29505 }
29506 pWdiInd = (WDI_StopBatchScanIndType *)pEventData->pEventData;
29507 /*-----------------------------------------------------------------------
29508 Get message buffer
29509 -----------------------------------------------------------------------*/
29510
29511 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
29512 WDI_STOP_BATCH_SCAN_IND,
29513 sizeof(tHalBatchScanStopIndParam),
29514 &pSendBuffer, &usDataOffset, &usSendSize))||
29515 ( usSendSize < (usDataOffset + sizeof(tHalBatchScanStopIndParam))))
29516 {
29517 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
29518 "Unable to get send buffer in stop batch scan ind %p ",
29519 pEventData);
29520 WDI_ASSERT(0);
29521 return WDI_STATUS_E_FAILURE;
29522 }
29523
29524 pHalInd = (tHalBatchScanStopIndParam *)(pSendBuffer + usDataOffset);
29525 pHalInd->param = pWdiInd->param;
29526
29527 pWDICtx->pReqStatusUserData = NULL;
29528 pWDICtx->pfncRspCB = NULL;
29529 /*-------------------------------------------------------------------------
29530 Send Stop batch scan indication to HAL
29531 -------------------------------------------------------------------------*/
29532 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
29533 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus:WDI_STATUS_SUCCESS_SYNC;
29534}
29535
29536/**
29537 @brief This API is called to trigger batch scan results from FW
29538
29539 @param pWDICtx: pointer to the WLAN DAL context
29540 pEventData: pointer to the event information structure
29541
29542 @see
29543 @return Result of the function call
29544*/
29545WDI_Status
29546WDI_ProcessTriggerBatchScanResultInd
29547(
29548 WDI_ControlBlockType* pWDICtx,
29549 WDI_EventInfoType* pEventData
29550)
29551{
29552 WDI_Status wdiStatus;
29553 wpt_uint8* pSendBuffer = NULL;
29554 wpt_uint16 usDataOffset = 0;
29555 wpt_uint16 usSendSize = 0;
29556 tHalBatchScanTriggerResultParam *pHalInd = NULL;
29557 WDI_TriggerBatchScanResultIndType *pWdiInd = NULL;
29558
29559
29560 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
29561
29562 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
29563 "%s", __func__);
29564
29565 /*-------------------------------------------------------------------------
29566 Sanity check
29567 -------------------------------------------------------------------------*/
29568
29569 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
29570 {
29571 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
29572 "%s: Invalid parameters", __func__);
29573 WDI_ASSERT(0);
29574 return WDI_STATUS_E_FAILURE;
29575 }
29576 pWdiInd = (WDI_TriggerBatchScanResultIndType *)pEventData->pEventData;
29577 /*-----------------------------------------------------------------------
29578 Get message buffer
29579 -----------------------------------------------------------------------*/
29580
29581 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
29582 WDI_TRIGGER_BATCH_SCAN_RESULT_IND,
29583 sizeof(tHalBatchScanTriggerResultParam),
29584 &pSendBuffer, &usDataOffset, &usSendSize))||
29585 ( usSendSize < (usDataOffset + sizeof(tHalBatchScanTriggerResultParam))))
29586 {
29587 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
29588 "Unable to get send buffer in stop batch scan ind %p ",
29589 pEventData);
29590 WDI_ASSERT(0);
29591 return WDI_STATUS_E_FAILURE;
29592 }
29593
29594 pHalInd = (tHalBatchScanTriggerResultParam *)(pSendBuffer + usDataOffset);
29595 pHalInd->param = pWdiInd->param;
29596
29597 pWDICtx->pReqStatusUserData = NULL;
29598 pWDICtx->pfncRspCB = NULL;
29599 /*-------------------------------------------------------------------------
29600 Send trigger batch scan result indication to HAL
29601 -------------------------------------------------------------------------*/
29602 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
29603 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus:WDI_STATUS_SUCCESS_SYNC;
29604}
29605
29606
29607/**
29608 @brief Process set batch scan response from FW
29609
29610 @param pWDICtx: pointer to the WLAN DAL context
29611 pEventData: pointer to the event information structure
29612
29613 @see
29614 @return Result of the function call
29615*/
29616WDI_Status
29617WDI_ProcessSetBatchScanRsp
29618(
29619 WDI_ControlBlockType* pWDICtx,
29620 WDI_EventInfoType* pEventData
29621)
29622{
29623 WDI_SetBatchScanCb wdiSetBatchScanCb;
29624 WDI_SetBatchScanRspType *pSetBatchScanRsp;
29625
29626 tHalBatchScanSetRspParam *pHalSetBatchScanRsp;
29627 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
29628
29629 /*sanity check*/
29630 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
29631 ( NULL == pEventData->pEventData))
29632 {
29633 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
29634 "%s: Invalid parameters", __func__);
29635 WDI_ASSERT(0);
29636 return WDI_STATUS_E_FAILURE;
29637 }
29638
29639 wdiSetBatchScanCb = (WDI_SetBatchScanCb)pWDICtx->pfncRspCB;
29640 if ( NULL == wdiSetBatchScanCb)
29641 {
29642 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
29643 "%s: call back function is NULL", __func__);
29644 WDI_ASSERT(0);
29645 return WDI_STATUS_E_FAILURE;
29646 }
29647
29648 pSetBatchScanRsp = wpalMemoryAllocate(sizeof(WDI_SetBatchScanRspType));
29649
29650 if (NULL == pSetBatchScanRsp)
29651 {
29652 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080029653 "Failed to allocate memory in set batch scan response %p %p %p ",
Rajeev79dbe4c2013-10-05 11:03:42 +053029654 pWDICtx, pEventData, pEventData->pEventData);
29655 WDI_ASSERT(0);
29656 return WDI_STATUS_E_FAILURE;
29657 }
29658
Sunil Duttbd736ed2014-05-26 21:19:41 +053029659 /* extract response and send it to UMAC */
Rajeev79dbe4c2013-10-05 11:03:42 +053029660 pHalSetBatchScanRsp = (tHalBatchScanSetRspParam *)pEventData->pEventData;
29661
29662 pSetBatchScanRsp->nScansToBatch = pHalSetBatchScanRsp->supportedMscan;
29663
Sunil Duttbd736ed2014-05-26 21:19:41 +053029664 /* Notify UMAC */
Rajeev79dbe4c2013-10-05 11:03:42 +053029665 wdiSetBatchScanCb(pSetBatchScanRsp, pWDICtx->pRspCBUserData);
29666
29667 wpalMemoryFree(pSetBatchScanRsp);
29668
29669 return WDI_STATUS_SUCCESS;
Sunil Duttbd736ed2014-05-26 21:19:41 +053029670}/* WDI_ProcessSetBatchScanRsp */
Rajeev79dbe4c2013-10-05 11:03:42 +053029671
29672/**
29673 @brief Process batch scan result indication from FW
29674
29675 @param pWDICtx: pointer to the WLAN DAL context
29676 pEventData: pointer to the event information structure
29677
29678 @see
29679 @return Result of the function call
29680*/
29681WDI_Status
29682WDI_ProcessBatchScanResultInd
29683(
29684 WDI_ControlBlockType* pWDICtx,
29685 WDI_EventInfoType* pEventData
29686)
29687{
29688 void *pBatchScanResultInd;
29689 WDI_LowLevelIndType wdiInd;
29690 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
29691
Sunil Duttbd736ed2014-05-26 21:19:41 +053029692 /* sanity check */
Rajeev79dbe4c2013-10-05 11:03:42 +053029693 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
29694 ( NULL == pEventData->pEventData))
29695 {
29696 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
29697 "%s: Invalid parameters", __func__);
29698 WDI_ASSERT(0);
29699 return WDI_STATUS_E_FAILURE;
29700 }
29701
Sunil Duttbd736ed2014-05-26 21:19:41 +053029702 /* extract response and send it to UMAC */
Rajeev79dbe4c2013-10-05 11:03:42 +053029703 pBatchScanResultInd = (void *)pEventData->pEventData;
29704
Sunil Duttbd736ed2014-05-26 21:19:41 +053029705 /* Fill in the indication parameters */
Rajeev79dbe4c2013-10-05 11:03:42 +053029706 wdiInd.wdiIndicationType = WDI_BATCH_SCAN_RESULT_IND;
29707
29708 wdiInd.wdiIndicationData.pBatchScanResult = pBatchScanResultInd;
29709
Sunil Duttbd736ed2014-05-26 21:19:41 +053029710 /* Notify UMAC */
Rajeev79dbe4c2013-10-05 11:03:42 +053029711 if (pWDICtx->wdiLowLevelIndCB)
29712 {
29713 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
29714 }
29715 else
29716 {
29717 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
29718 "%s: WDILowLevelIndCb is null", __func__);
29719 WDI_ASSERT(0);
29720 return WDI_STATUS_E_FAILURE;
29721 }
29722
29723 return WDI_STATUS_SUCCESS;
29724} /*End of WDI_ProcessBatchScanResultInd*/
29725
Sunil Duttbd736ed2014-05-26 21:19:41 +053029726#ifdef WLAN_FEATURE_LINK_LAYER_STATS
29727/**
29728 @brief Process Link Layer Statistics Result indication from FW
29729
29730 @param pWDICtx: pointer to the WLAN DAL context
29731 pEventData: pointer to the event information structure
29732
29733 @see
29734 @return Result of the function call
29735*/
29736WDI_Status
29737WDI_ProcessLinkLayerStatsResultsInd
29738(
29739 WDI_ControlBlockType* pWDICtx,
29740 WDI_EventInfoType* pEventData
29741)
29742{
29743 void *pLinkLayerStatsInd;
29744 WDI_LowLevelIndType wdiInd;
29745 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
29746
29747 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
29748 "%s: Event RESULTS Indication", __func__);
29749
29750 /* sanity check */
29751 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
29752 ( NULL == pEventData->pEventData))
29753 {
29754 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
29755 "%s: Invalid parameters", __func__);
29756 WDI_ASSERT(0);
29757 return WDI_STATUS_E_FAILURE;
29758 }
29759
29760 /* extract response and send it to UMAC */
29761 pLinkLayerStatsInd = (void *)pEventData->pEventData;
29762
29763 /* Fill in the indication parameters */
29764 wdiInd.wdiIndicationType = WDI_LL_STATS_RESULTS_IND;
29765
29766 wdiInd.wdiIndicationData.pLinkLayerStatsResults = pLinkLayerStatsInd;
29767
29768 /* Notify UMAC */
29769 if (pWDICtx->wdiLowLevelIndCB)
29770 {
29771 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
29772 }
29773 else
29774 {
29775 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
29776 "%s: WDILowLevelIndCb is null", __func__);
29777 WDI_ASSERT(0);
29778 return WDI_STATUS_E_FAILURE;
29779 }
29780
29781 return WDI_STATUS_SUCCESS;
29782} /* End of WDI_ProcessLinkLayerStatsResultsInd */
29783#endif /* WLAN_FEATURE_LINK_LAYER_STATS */
29784
Rajeev79dbe4c2013-10-05 11:03:42 +053029785/**
29786 @brief WDI_ProcessSetBatchScanReq -
29787 Set batch scan request to FW
29788
29789 @param pWDICtx : wdi context
29790 pEventData : indication data
29791
29792 @see
29793 @return none
29794*/
29795WDI_Status WDI_ProcessSetBatchScanReq
29796(
29797 WDI_ControlBlockType* pWDICtx,
29798 WDI_EventInfoType* pEventData
29799)
29800{
29801 WDI_SetBatchScanReqType *pWdiReq;
29802 WDI_Status wdiStatus;
29803 wpt_uint8* pSendBuffer = NULL;
29804 wpt_uint16 usDataOffset = 0;
29805 wpt_uint16 usSendSize = 0;
29806 tHalBatchScanSetParams *pHalReq;
29807 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
29808
29809 /*sanity check*/
29810 if ((NULL == pEventData) || (NULL == pEventData->pEventData))
29811 {
29812 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
29813 "%s: Invalid parameters in set batch scan request", __func__);
29814 WDI_ASSERT(0);
29815 return WDI_STATUS_E_FAILURE;
29816 }
29817
29818
29819 pWdiReq = (WDI_SetBatchScanReqType *)pEventData->pEventData;
29820
29821
29822 /*get message buffer*/
29823 if ((WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(pWDICtx,
29824 WDI_SET_BATCH_SCAN_REQ,
29825 sizeof(tHalBatchScanSetParams),
29826 &pSendBuffer, &usDataOffset, &usSendSize))||
29827 (usSendSize < (usDataOffset + sizeof(tHalBatchScanSetParams))))
29828 {
29829 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
29830 "Unable to get send buffer for SET_BATCH_SCAN_REQ ");
29831 WDI_ASSERT(0);
29832 return WDI_STATUS_E_FAILURE;
29833 }
29834
29835 pHalReq = (tHalBatchScanSetParams *)(pSendBuffer + usDataOffset);
29836
29837 pHalReq->rtt = pWdiReq->rtt;
29838 pHalReq->rfBand = pWdiReq->rfBand;
29839 pHalReq->bestNetworks = pWdiReq->bestNetwork;
29840 pHalReq->scanInterval = pWdiReq->scanFrequency;
29841 pHalReq->numScan2Batch = pWdiReq->numberOfScansToBatch;
29842
29843 /*send set batch scan request to fw*/
29844 pWDICtx->pfncRspCB = pEventData->pCBfnc;
29845 pWDICtx->pReqStatusUserData = pEventData->pUserData;
29846
29847 wdiStatus = WDI_SendMsg(pWDICtx, pSendBuffer,
29848 usSendSize, pWDICtx->pfncRspCB,
29849 pWDICtx->pReqStatusUserData,
29850 WDI_SET_BATCH_SCAN_RESP);
29851
29852 return wdiStatus;
29853}
29854
29855/**
29856 @brief WDI_SetBatchScanReq
29857 This API is called to set batch scan request in FW
29858
29859 @param pBatchScanReqParam : pointer to set batch scan re param
29860 usrData : Client context
29861 setBatchScanRspCb : set batch scan resp callback
29862 @see
29863 @return SUCCESS or FAIL
29864*/
29865WDI_Status WDI_SetBatchScanReq
29866(
29867 void *pBatchScanReqParam,
29868 void *usrData,
29869 WDI_SetBatchScanCb setBatchScanRspCb
29870)
29871{
29872 WDI_EventInfoType wdiEventData;
29873
29874 /*sanity check*/
29875 if (eWLAN_PAL_FALSE == gWDIInitialized)
29876 {
29877 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
29878 "WDI API call before module is initialized - Fail request");
29879
29880 return WDI_STATUS_E_NOT_ALLOWED;
29881 }
29882
29883 /* fill in event data and post to the main FSM */
29884 wdiEventData.wdiRequest = WDI_SET_BATCH_SCAN_REQ;
29885 wdiEventData.pEventData = pBatchScanReqParam;
29886 wdiEventData.uEventDataSize = sizeof(WDI_SetBatchScanReqType);
29887 wdiEventData.pCBfnc = setBatchScanRspCb;
29888 wdiEventData.pUserData = usrData;
29889
29890 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
29891}
29892
29893/**
29894 @brief WDI_StopbatchScanInd: Send stop batch scan indication to FW
29895
29896 @param None
29897
29898 @see
29899
29900 @return Status of the request
29901*/
29902WDI_Status
29903WDI_StopBatchScanInd(WDI_StopBatchScanIndType *pWdiReq)
29904{
29905 WDI_EventInfoType wdiEventData;
29906
29907 /*-------------------------------------------------------------------------
29908 Sanity Check
29909 ------------------------------------------------------------------------*/
29910 if (eWLAN_PAL_FALSE == gWDIInitialized)
29911 {
29912 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
29913 "WDI API call before module is initialized - Fail request!");
29914
29915 return WDI_STATUS_E_NOT_ALLOWED;
29916 }
29917
29918 /*-------------------------------------------------------------------------
29919 Fill in Event data and post to the Main FSM
29920 ------------------------------------------------------------------------*/
29921 wdiEventData.wdiRequest = WDI_STOP_BATCH_SCAN_IND;
29922 wdiEventData.pEventData = pWdiReq;
29923 wdiEventData.uEventDataSize = sizeof(WDI_StopBatchScanIndType);
29924 wdiEventData.pCBfnc = NULL;
29925 wdiEventData.pUserData = NULL;
29926
29927 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
29928}
29929
29930/**
29931 @brief WDI_TriggerBatchScanResultInd
29932 This API is called to pull batch scan result from FW
29933
29934 @param pWdiReq : pointer to get batch scan ind param
29935 @see
29936 @return SUCCESS or FAIL
29937*/
29938WDI_Status WDI_TriggerBatchScanResultInd
29939(
29940 WDI_TriggerBatchScanResultIndType *pWdiReq
29941)
29942{
29943 WDI_EventInfoType wdiEventData;
29944 /*-------------------------------------------------------------------------
29945 Sanity Check
29946 ------------------------------------------------------------------------*/
29947 if (eWLAN_PAL_FALSE == gWDIInitialized)
29948 {
29949 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
29950 "WDI API call before module is initialized - Fail request!");
29951
29952 return WDI_STATUS_E_NOT_ALLOWED;
29953 }
29954
29955 /*-------------------------------------------------------------------------
29956 Fill in Event data and post to the Main FSM
29957 ------------------------------------------------------------------------*/
29958 wdiEventData.wdiRequest = WDI_TRIGGER_BATCH_SCAN_RESULT_IND;
29959 wdiEventData.pEventData = pWdiReq;
29960 wdiEventData.uEventDataSize = sizeof(WDI_TriggerBatchScanResultIndType);
29961 wdiEventData.pCBfnc = NULL;
29962 wdiEventData.pUserData = NULL;
29963
29964 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
29965}
Rajeev79dbe4c2013-10-05 11:03:42 +053029966#endif /*FEATURE_WLAN_BATCH_SCAN*/
Leo Chang0b0e45a2013-12-15 15:18:55 -080029967
Manjunathappa Prakash86f78ca2014-02-10 18:09:15 -080029968/**
29969 @brief Process Update Channel Rsp function (called when a response is
29970 being received over the bus from HAL)
29971
29972 @param pWDICtx: pointer to the WLAN DAL context
29973 pEventData: pointer to the event information structure
29974
29975 @see
29976 @return Result of the function call
29977*/
29978WDI_Status
29979WDI_ProcessUpdateChanRsp
29980(
29981 WDI_ControlBlockType* pWDICtx,
29982 WDI_EventInfoType* pEventData
29983)
29984{
29985 WDI_Status wdiStatus;
29986 eHalStatus halStatus;
29987 WDI_UpdateChannelRspCb wdiUpdateChanRspCb;
29988 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
29989
29990 /*-------------------------------------------------------------------------
29991 Sanity check
29992 -------------------------------------------------------------------------*/
29993 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
29994 ( NULL == pEventData->pEventData))
29995 {
29996 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
29997 "%s: Invalid parameters", __func__);
29998 WDI_ASSERT(0);
29999 return WDI_STATUS_E_FAILURE;
30000 }
30001
30002 wdiUpdateChanRspCb = (WDI_UpdateChannelRspCb)pWDICtx->pfncRspCB;
30003
30004 /*-------------------------------------------------------------------------
30005 Extract response and send it to UMAC
30006 -------------------------------------------------------------------------*/
30007 halStatus = *((eHalStatus*)pEventData->pEventData);
30008 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
30009
30010 wdiUpdateChanRspCb( wdiStatus, pWDICtx->pRspCBUserData);
30011
30012 return WDI_STATUS_SUCCESS;
30013}/*WDI_ProcessUpdateChanRsp*/
30014
Leo Chang0b0e45a2013-12-15 15:18:55 -080030015#ifdef FEATURE_WLAN_CH_AVOID
30016/**
30017 @brief v -WDI_ProcessChAvoidInd
30018
30019
30020 @param pWDICtx : wdi context
30021 pEventData : indication data
30022 @see
30023 @return Result of the function call
30024*/
30025WDI_Status
30026WDI_ProcessChAvoidInd
30027(
30028 WDI_ControlBlockType* pWDICtx,
30029 WDI_EventInfoType* pEventData
30030)
30031{
30032 WDI_LowLevelIndType wdiInd;
30033 tHalAvoidFreqRangeIndParams chAvoidIndicationParam;
30034 wpt_uint16 rangeLoop;
30035 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
30036
30037 /*-------------------------------------------------------------------------
30038 Sanity check
30039 -------------------------------------------------------------------------*/
30040 if ((NULL == pWDICtx) || (NULL == pEventData) ||
30041 (NULL == pEventData->pEventData))
30042 {
30043 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
30044 "%s: Invalid parameters", __func__);
30045 WDI_ASSERT(0);
30046 return WDI_STATUS_E_FAILURE;
30047 }
30048
30049 /*-------------------------------------------------------------------------
30050 Extract indication and send it to UMAC
30051 -------------------------------------------------------------------------*/
30052 wpalMemoryCopy(&chAvoidIndicationParam,
30053 pEventData->pEventData,
30054 sizeof(tHalAvoidFreqRangeIndParams));
30055
30056 wdiInd.wdiIndicationType = WDI_CH_AVOID_IND;
30057 wdiInd.wdiIndicationData.wdiChAvoidInd.avoidRangeCount =
30058 chAvoidIndicationParam.avoidCnt;
30059 wpalMemoryCopy((void *)wdiInd.wdiIndicationData.wdiChAvoidInd.avoidFreqRange,
30060 (void *)chAvoidIndicationParam.avoidRange,
30061 wdiInd.wdiIndicationData.wdiChAvoidInd.avoidRangeCount *
30062 sizeof(WDI_ChAvoidFreqType));
30063 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
30064 "%s: band count %d", __func__,
30065 wdiInd.wdiIndicationData.wdiChAvoidInd.avoidRangeCount);
30066 for (rangeLoop = 0; rangeLoop < chAvoidIndicationParam.avoidCnt; rangeLoop++)
30067 {
30068 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
30069 "%s: srart freq %d, end freq %d", __func__,
30070 wdiInd.wdiIndicationData.wdiChAvoidInd.avoidFreqRange[rangeLoop].startFreq,
30071 wdiInd.wdiIndicationData.wdiChAvoidInd.avoidFreqRange[rangeLoop].endFreq);
30072 }
30073
30074 /*Notify UMAC*/
30075 if (pWDICtx->wdiLowLevelIndCB)
30076 {
30077 pWDICtx->wdiLowLevelIndCB(&wdiInd, pWDICtx->pIndUserData);
30078 }
30079
30080 return WDI_STATUS_SUCCESS;
30081}
30082#endif /* FEATURE_WLAN_CH_AVOID */
30083
Sandeep Puligilla8b8b74b2014-02-10 16:39:05 +053030084/**
30085 @brief Process OBSS Start scan result indication
30086
30087 @param pWDICtx: pointer to the WLAN DAL context
30088 pEventData: pointer to the event information structure
30089
30090 @see
30091 @return Result of the function call
30092*/
30093WDI_Status
30094WDI_ProcessHT40OBSSScanInd
30095(
30096 WDI_ControlBlockType* pWDICtx,
30097 WDI_EventInfoType* pEventData
30098)
30099{
30100 wpt_uint8* pSendBuffer = NULL;
30101 wpt_uint16 usDataOffset = 0;
30102 wpt_uint16 usSendSize = 0;
30103 wpt_uint16 usLen = 0;
30104 WDI_HT40ObssScanIndType *pwdiHT40OBSSScanInd = NULL;
30105 WDI_HT40ObssScanParamsType *pwdiHT40OBSSScanParams = NULL;
30106 tHT40ObssScanIndType* pHT40ObssScanInd = NULL;
30107 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
30108
30109 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
30110
30111 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
30112 "%s", __func__);
30113
30114 /*-------------------------------------------------------------------------
30115 Sanity check
30116 -------------------------------------------------------------------------*/
30117 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
30118 {
30119 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
30120 "%s: Invalid parameters", __func__);
30121 WDI_ASSERT(0);
30122 return WDI_STATUS_E_FAILURE;
30123 }
30124 pwdiHT40OBSSScanParams = (WDI_HT40ObssScanParamsType*)pEventData->pEventData;
30125
30126 pwdiHT40OBSSScanInd = &pwdiHT40OBSSScanParams->wdiHT40ObssScanParam;
30127 /*-----------------------------------------------------------------------
30128 Get message buffer
30129 -----------------------------------------------------------------------*/
30130
30131 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
30132 WDI_START_HT40_OBSS_SCAN_IND,
30133 sizeof(tHT40ObssScanIndType),
30134 &pSendBuffer, &usDataOffset, &usSendSize))||
30135 ( usSendSize < (usDataOffset + usLen )))
30136 {
30137 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
30138 "Unable to get send buffer in HT40 OBSS Start req %p ",
30139 pEventData);
30140 WDI_ASSERT(0);
30141 return WDI_STATUS_E_FAILURE;
30142 }
30143 pHT40ObssScanInd = (tHT40ObssScanIndType*)(pSendBuffer+usDataOffset);
30144 pHT40ObssScanInd->cmdType = pwdiHT40OBSSScanInd->cmdType;
30145 pHT40ObssScanInd->scanType = pwdiHT40OBSSScanInd->scanType;
30146 pHT40ObssScanInd->OBSSScanPassiveDwellTime =
30147 pwdiHT40OBSSScanInd->OBSSScanPassiveDwellTime;
30148 pHT40ObssScanInd->OBSSScanActiveDwellTime =
30149 pwdiHT40OBSSScanInd->OBSSScanActiveDwellTime;
30150 pHT40ObssScanInd->BSSChannelWidthTriggerScanInterval =
30151 pwdiHT40OBSSScanInd->BSSChannelWidthTriggerScanInterval;
30152 pHT40ObssScanInd->OBSSScanPassiveTotalPerChannel =
30153 pwdiHT40OBSSScanInd->OBSSScanPassiveTotalPerChannel;
30154 pHT40ObssScanInd->OBSSScanActiveTotalPerChannel =
30155 pwdiHT40OBSSScanInd->OBSSScanActiveTotalPerChannel;
30156 pHT40ObssScanInd->BSSWidthChannelTransitionDelayFactor =
30157 pwdiHT40OBSSScanInd->BSSWidthChannelTransitionDelayFactor;
30158 pHT40ObssScanInd->OBSSScanActivityThreshold =
30159 pwdiHT40OBSSScanInd->OBSSScanActivityThreshold;
30160 pHT40ObssScanInd->selfStaIdx =
30161 pwdiHT40OBSSScanInd->selfStaIdx;
30162 pHT40ObssScanInd->bssIdx =
30163 pwdiHT40OBSSScanInd->bssIdx;
30164 pHT40ObssScanInd->fortyMHZIntolerent =
30165 pwdiHT40OBSSScanInd->fortyMHZIntolerent;
30166 pHT40ObssScanInd->channelCount =
30167 pwdiHT40OBSSScanInd->channelCount;
30168
30169 wpalMemoryCopy(pHT40ObssScanInd->channels, pwdiHT40OBSSScanInd->channels,
30170 WDI_ROAM_SCAN_MAX_CHANNELS);
30171 pHT40ObssScanInd->ieFieldLen =
30172 pwdiHT40OBSSScanInd->ieFieldLen;
30173
30174 wpalMemoryCopy(pHT40ObssScanInd->ieField, pwdiHT40OBSSScanInd->ieField,
30175 WDI_ROAM_SCAN_MAX_PROBE_SIZE);
30176 pWDICtx->pReqStatusUserData = NULL;
30177 pWDICtx->pfncRspCB = NULL;
30178
30179 pWDICtx->wdiReqStatusCB = pwdiHT40OBSSScanParams->wdiReqStatusCB;
30180 pWDICtx->pReqStatusUserData = pwdiHT40OBSSScanParams->pUserData;
30181
30182 /*-------------------------------------------------------------------------
30183 Send OBSS Start Indication to HAL
30184 -------------------------------------------------------------------------*/
30185 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
30186 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus:WDI_STATUS_SUCCESS_SYNC;
30187
30188} /*End of WDI_ProcessHT40OBSSStartScanInd*/
30189
30190
30191/**
30192 @brief wdi_HT40OBSSScanInd
30193 This API is called to start OBSS scan
30194
30195 @param pWdiReq : pointer to get ind param
30196 @see
30197 @return SUCCESS or FAIL
30198*/
30199WDI_Status WDI_HT40OBSSScanInd
30200(
30201 WDI_HT40ObssScanParamsType *pWdiReq
30202)
30203{
30204 WDI_EventInfoType wdiEventData;
30205
30206 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
30207 "%s", __func__);
30208 /*-------------------------------------------------------------------------
30209 Sanity Check
30210 ------------------------------------------------------------------------*/
30211 if (eWLAN_PAL_FALSE == gWDIInitialized)
30212 {
30213 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
30214 "WDI API call before module is initialized - Fail request!");
30215
30216 return WDI_STATUS_E_NOT_ALLOWED;
30217 }
30218
30219 /*-------------------------------------------------------------------------
30220 Fill in Event data and post to the Main FSM
30221 ------------------------------------------------------------------------*/
30222 wdiEventData.wdiRequest = WDI_START_HT40_OBSS_SCAN_IND;
30223 wdiEventData.pEventData = pWdiReq;
30224 wdiEventData.uEventDataSize = sizeof(WDI_HT40ObssScanParamsType);
30225 wdiEventData.pCBfnc = NULL;
30226 wdiEventData.pUserData = NULL;
30227
30228
30229 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
30230}
30231
30232/**
30233 @brief Process OBSS Stop scan result
30234
30235 @param pWDICtx: pointer to the WLAN DAL context
30236 pEventData: pointer to the event information structure
30237
30238 @see
30239 @return Result of the function call
30240*/
30241WDI_Status
30242WDI_ProcessHT40OBSSStopScanInd
30243(
30244 WDI_ControlBlockType* pWDICtx,
30245 WDI_EventInfoType* pEventData
30246)
30247{
30248 wpt_uint8* pSendBuffer = NULL;
30249 wpt_uint16 usDataOffset = 0;
30250 wpt_uint16 usSendSize = 0;
30251 wpt_uint16 usLen = 0;
30252 wpt_uint8 *wdiBssIdx = 0;
30253 tANI_U8 *bssIdx = 0;
30254 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
30255
30256 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
30257
30258 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
30259 "%s", __func__);
30260
30261 /*-------------------------------------------------------------------------
30262 Sanity check
30263 -------------------------------------------------------------------------*/
30264 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
30265 {
30266 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
30267 "%s: Invalid parameters", __func__);
30268 WDI_ASSERT(0);
30269 return WDI_STATUS_E_FAILURE;
30270 }
30271 bssIdx = (wpt_uint8*)pEventData->pEventData;
30272 /*-----------------------------------------------------------------------
30273 Get message buffer
30274 -----------------------------------------------------------------------*/
30275
30276 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
30277 WDI_STOP_HT40_OBSS_SCAN_IND,
30278 sizeof(tANI_U8),
30279 &pSendBuffer, &usDataOffset, &usSendSize))||
30280 ( usSendSize < (usDataOffset + usLen )))
30281 {
30282 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
30283 "Unable to get send buffer in HT40 OBSS Start req %p ",
30284 pEventData);
30285 WDI_ASSERT(0);
30286 return WDI_STATUS_E_FAILURE;
30287 }
30288
30289 bssIdx = (tANI_U8*)pSendBuffer+usDataOffset;
30290 bssIdx = wdiBssIdx;
30291
30292 pWDICtx->pReqStatusUserData = NULL;
30293 pWDICtx->pfncRspCB = NULL;
30294
30295 /*-------------------------------------------------------------------------
30296 Send DHCP Start Indication to HAL
30297 -------------------------------------------------------------------------*/
30298 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
30299 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus:WDI_STATUS_SUCCESS_SYNC;
30300} /*End of WDI_ProcessHT40OBSSStopScanInd*/
30301
30302/**
30303 @brief WDI_HT40OBSSStopScanInd
30304 This API is called to start OBSS scan
30305 @param pWdiReq : pointer to get ind param
30306 @see
30307 @return SUCCESS or FAIL
30308*/
30309WDI_Status WDI_HT40OBSSStopScanInd
30310(
30311 wpt_uint8 bssIdx
30312)
30313{
30314 WDI_EventInfoType wdiEventData;
30315
30316 /*-------------------------------------------------------------------------
30317 Sanity Check
30318 ------------------------------------------------------------------------*/
30319 if (eWLAN_PAL_FALSE == gWDIInitialized)
30320 {
30321 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
30322 "WDI API call before module is initialized - Fail request!");
30323
30324 return WDI_STATUS_E_NOT_ALLOWED;
30325 }
30326
30327 /*-------------------------------------------------------------------------
30328 Fill in Event data and post to the Main FSM
30329 ------------------------------------------------------------------------*/
30330 wdiEventData.wdiRequest = WDI_STOP_HT40_OBSS_SCAN_IND;
30331 wdiEventData.pEventData = &bssIdx;
30332 wdiEventData.uEventDataSize = sizeof(wpt_uint8);
30333 wdiEventData.pCBfnc = NULL;
30334 wdiEventData.pUserData = NULL;
30335
30336 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
30337}
30338
c_hpothu86041002014-04-14 19:06:51 +053030339WDI_Status
30340WDI_printRegInfo
30341(
30342 WDI_ControlBlockType* pWDICtx,
30343 WDI_EventInfoType* pEventData
30344)
30345{
30346 tHalRegDebugInfo *pRegTable;
30347 tHalRegDebugInfoParams *pRegParams;
30348 uint32 cnt=0;
30349
30350 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
30351 "%s: ", __func__);
30352 /*-------------------------------------------------------------------------
30353 Sanity check
30354 -------------------------------------------------------------------------*/
30355 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
30356 ( NULL == pEventData->pEventData))
30357 {
30358 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
30359 "%s: Invalid parameters", __func__);
30360 WDI_ASSERT(0);
30361 return WDI_STATUS_E_FAILURE;
30362 }
30363
30364 pRegParams = (tHalRegDebugInfoParams *)pEventData->pEventData;
30365
30366 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
30367 "%s: regCount: %x scenario: %x reasonCode: %x", __func__,
30368 pRegParams->regCount, pRegParams->scenario, pRegParams->reasonCode);
30369
30370 pRegTable = (tHalRegDebugInfo *)(pRegParams+1); //data starts after regParams
30371
30372 if (pRegParams->regCount <= 0)
30373 {
30374 WPAL_TRACE (eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
30375 "%s incorrect parameters passed", __func__);
30376 return WDI_STATUS_E_FAILURE;
30377 }
30378
30379 while(pRegParams->regCount--)
30380 {
30381 WPAL_TRACE (eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
30382 "%x: %x", pRegTable[cnt].regAddr, pRegTable[cnt].regValue);
30383 cnt++;
30384 }
30385
30386 return WDI_STATUS_SUCCESS;
30387}
c_hpothu92367912014-05-01 15:18:17 +053030388
30389/*
30390 * FUNCTION: WDI_ProcessGetBcnMissRateRsp
30391 * send the response to PE with beacon miss count
30392 * received from WDI.
30393 */
30394WDI_Status
30395WDI_ProcessGetBcnMissRateRsp
30396(
30397 WDI_ControlBlockType* pWDICtx,
30398 WDI_EventInfoType* pEventData
30399)
30400{
30401 WDI_GetBcnMissRateCb wdiGetBcnMissRateCb;
30402 tpHalBcnMissRateRspParams pHalBcnMissRateRsp;
30403
30404 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
30405 "In %s",__func__);
30406 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
30407
30408 /*-------------------------------------------------------------------------
30409 Sanity check
30410 -------------------------------------------------------------------------*/
30411 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
30412 ( NULL == pEventData->pEventData))
30413 {
30414 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
30415 "%s: Invalid parameters", __func__);
30416 WDI_ASSERT(0);
30417 return WDI_STATUS_E_FAILURE;
30418 }
30419
30420 pHalBcnMissRateRsp = (tHalBcnMissRateRspParams *)pEventData->pEventData;
30421 wdiGetBcnMissRateCb = (WDI_GetBcnMissRateCb)pWDICtx->pfncRspCB;
30422
30423 /*Notify UMAC*/
30424 wdiGetBcnMissRateCb(pHalBcnMissRateRsp->status,
30425 pHalBcnMissRateRsp->bcnMissCnt, pWDICtx->pRspCBUserData);
30426 return WDI_STATUS_SUCCESS;
30427}
30428
30429/*
30430 * FUNCTION: WDI_ProcessGetBcnMissRateReq
30431 * Request to WDI to get missed beacon rate.
30432 */
30433WDI_Status
30434WDI_ProcessGetBcnMissRateReq
30435(
30436 WDI_ControlBlockType* pWDICtx,
30437 WDI_EventInfoType* pEventData
30438)
30439{
30440 wpt_uint8* pSendBuffer = NULL;
30441 wpt_uint16 usDataOffset = 0;
30442 wpt_uint16 usSendSize = 0;
30443 wpt_uint8 ucCurrentBSSSesIdx = 0;
30444 WDI_BSSSessionType* pBSSSes = NULL;
30445 wpt_macAddr macBSSID;
30446 WDI_GetBcnMissRateCb *wdiGetBcnMissRateCb;
30447 tHalBcnMissRateReqParams halBcnMissRateReq;
30448
30449/*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
30450
30451 /*-------------------------------------------------------------------------
30452 Sanity check
30453 -------------------------------------------------------------------------*/
30454 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData) ||
30455 ( NULL == pEventData->pCBfnc ) )
30456 {
30457 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
30458 "%s: Invalid parameters", __func__);
30459 WDI_ASSERT(0);
30460 return WDI_STATUS_E_FAILURE;
30461 }
30462
30463 wdiGetBcnMissRateCb = (WDI_GetBcnMissRateCb *)pEventData->pCBfnc;
30464
30465 wpalMutexAcquire(&pWDICtx->wptMutex);
30466
30467 ucCurrentBSSSesIdx = WDI_FindAssocSession(pWDICtx,
30468 pEventData->pEventData, &pBSSSes);
30469 if ( NULL == pBSSSes )
30470 {
30471 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
30472 "%s: Association sequence for this BSS does not yet exist. macBSSID"
30473 MAC_ADDRESS_STR, __func__, MAC_ADDR_ARRAY(macBSSID));
30474 wpalMutexRelease(&pWDICtx->wptMutex);
30475 return WDI_STATUS_E_NOT_ALLOWED;
30476 }
30477 wpalMutexRelease(&pWDICtx->wptMutex);
30478
30479 /*-----------------------------------------------------------------------
30480 Get message buffer
30481 -----------------------------------------------------------------------*/
30482 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
30483 pWDICtx, WDI_GET_BCN_MISS_RATE_REQ,
30484 sizeof(tHalBcnMissRateReqParams),
30485 &pSendBuffer, &usDataOffset, &usSendSize)) ||
30486 ( usSendSize < (usDataOffset + sizeof(tHalBcnMissRateReqParams))))
30487 {
30488 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
30489 "Unable to get send buffer in get WDI_GET_BCN_MISS_RATE_REQ %p",
30490 pEventData);
30491 WDI_ASSERT(0);
30492 return WDI_STATUS_E_FAILURE;
30493 }
30494
30495 pWDICtx->wdiReqStatusCB = NULL;
30496 pWDICtx->pReqStatusUserData = pEventData->pUserData;
30497
30498 halBcnMissRateReq.bssIdx = ucCurrentBSSSesIdx;
30499
30500 wpalMemoryCopy( pSendBuffer+usDataOffset,
30501 &halBcnMissRateReq,
30502 sizeof(tHalBcnMissRateReqParams));
30503 /*-------------------------------------------------------------------------
30504 Send Get STA Request to HAL
30505 -------------------------------------------------------------------------*/
30506 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize, wdiGetBcnMissRateCb,
30507 pEventData->pUserData, WDI_GET_BCN_MISS_RATE_RSP);
30508}
30509
30510/**
30511 @brief WDI_GetBcnMissRate
30512
30513 @param pUserData: user data will be passed back with the
30514 callback
30515 WDI_GetBcnMissRateCb: callback for passing back the response
30516 of the get stats operation received from the device
30517 bssid: bssid, to send bssIdx to FW
30518
30519 @return SUCCESS or FAIL
30520*/
30521WDI_Status WDI_GetBcnMissRate( void *pUserData,
30522 WDI_GetBcnMissRateCb wdiGetBcnMissRateCb,
30523 tANI_U8 *bssid )
30524{
30525 WDI_EventInfoType wdiEventData;
30526
30527 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
30528
30529 /*------------------------------------------------------------------------
30530 Sanity Check
30531 ------------------------------------------------------------------------*/
30532 if ( eWLAN_PAL_FALSE == gWDIInitialized )
30533 {
30534 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
30535 "WDI API call before module is initialized - Fail request");
30536
30537 return WDI_STATUS_E_NOT_ALLOWED;
30538 }
30539
30540 /*------------------------------------------------------------------------
30541 Fill in Event data and post to the Main FSM
30542 ------------------------------------------------------------------------*/
30543 wdiEventData.wdiRequest = WDI_GET_BCN_MISS_RATE_REQ;
30544 wdiEventData.pEventData = bssid;
30545 wdiEventData.uEventDataSize = sizeof(tSirMacAddr);
30546 wdiEventData.pCBfnc = wdiGetBcnMissRateCb;
30547 wdiEventData.pUserData = pUserData;
30548
30549 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
30550}
Sunil Duttbd736ed2014-05-26 21:19:41 +053030551#ifdef WLAN_FEATURE_LINK_LAYER_STATS
30552
30553/**
30554 @brief WDI_LLStatsSetReq
30555 This API is called to set link layer stats request in FW
30556
30557 @param pwdiLLStatsSetReqParams : pointer to set link layer request params
30558 wdiLLStatsSetRspCb : set link layer stats resp callback
30559 usrData : Client context
30560 @see
30561 @return SUCCESS or FAIL
30562*/
30563WDI_Status
30564WDI_LLStatsSetReq(WDI_LLStatsSetReqType* pwdiLLStatsSetReqParams,
30565 WDI_LLStatsSetRspCb wdiLLStatsSetRspCb,
30566 void* pUserData)
30567{
30568 WDI_EventInfoType wdiEventData;
30569
30570 /*------------------------------------------------------------------------
30571 Sanity Check
30572 ------------------------------------------------------------------------*/
30573 if ( eWLAN_PAL_FALSE == gWDIInitialized )
30574 {
30575 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
30576 "WDI API call before module is initialized - Fail request");
30577
30578 return WDI_STATUS_E_NOT_ALLOWED;
30579 }
30580
30581 wdiEventData.wdiRequest = WDI_LL_STATS_SET_REQ;
30582 wdiEventData.pEventData = pwdiLLStatsSetReqParams;
30583 wdiEventData.uEventDataSize = sizeof(*pwdiLLStatsSetReqParams);
30584 wdiEventData.pCBfnc = wdiLLStatsSetRspCb;
30585 wdiEventData.pUserData = pUserData;
30586
30587 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
30588}
30589
30590/**
30591 @brief WDI_ProcessLLStatsSetReq -
30592 Set Link Layer Stats request to FW
30593
30594 @param pWDICtx : wdi context
30595 pEventData : indication data
30596
30597 @see
30598 @return none
30599*/
30600WDI_Status
30601WDI_ProcessLLStatsSetReq
30602(
30603 WDI_ControlBlockType* pWDICtx,
30604 WDI_EventInfoType* pEventData
30605)
30606{
30607 WDI_LLStatsSetReqType* pwdiLLStatsSetReqParams;
30608 WDI_LLStatsSetRspCb wdiLLStatsSetCb;
30609 wpt_uint8* pSendBuffer = NULL;
30610 wpt_uint16 usSendSize = 0;
30611 wpt_uint16 usDataOffset = 0;
30612 tHalMacLlSetStatsReqParams halLLStatsSetParams;
30613
30614 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
30615 ( NULL == pEventData->pCBfnc ))
30616 {
30617 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
30618 "%s: Invalid parameters", __func__);
30619 WDI_ASSERT(0);
30620 return WDI_STATUS_E_FAILURE;
30621 }
30622
30623 pwdiLLStatsSetReqParams = (WDI_LLStatsSetReqType*)pEventData->pEventData;
30624 wdiLLStatsSetCb = (WDI_LLStatsSetRspCb)pEventData->pCBfnc;
30625
30626 /*-----------------------------------------------------------------------
30627 Get message buffer
30628 ! TO DO : proper conversion into the HAL Message Request Format
30629 -----------------------------------------------------------------------*/
30630 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
30631 pWDICtx,
30632 WDI_LL_STATS_SET_REQ,
30633 sizeof(tHalMacLlSetStatsReqParams),
30634 &pSendBuffer, &usDataOffset,
30635 &usSendSize))||
30636 ( usSendSize < (usDataOffset + sizeof(halLLStatsSetParams) )))
30637 {
30638 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
30639 "Unable to get send buffer in %s %p %p %p", __func__,
30640 pEventData, pwdiLLStatsSetReqParams, wdiLLStatsSetCb);
30641 WDI_ASSERT(0);
30642 return WDI_STATUS_E_FAILURE;
30643 }
30644
30645
30646
30647 halLLStatsSetParams.req_id = pwdiLLStatsSetReqParams->reqId;
30648 halLLStatsSetParams.sta_id = pwdiLLStatsSetReqParams->staId;
30649 halLLStatsSetParams.mpdu_size_threshold =
30650 pwdiLLStatsSetReqParams->mpduSizeThreshold;
30651 halLLStatsSetParams.aggressive_statistics_gathering =
30652 pwdiLLStatsSetReqParams->aggressiveStatisticsGathering;
30653
30654 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
30655 " halLLStatsSetParams.req_id = %u",
30656 halLLStatsSetParams.req_id);
30657 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
30658 " halLLStatsSetParams.sta_id = %u",
30659 halLLStatsSetParams.sta_id);
30660 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
30661 " halLLStatsSetParams.mpdu_size_threshold = %u",
30662 halLLStatsSetParams.mpdu_size_threshold);
30663 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
30664 " halLLStatsSetParams.aggressive_statistics_gathering = %u",
30665 halLLStatsSetParams.aggressive_statistics_gathering);
30666
30667 wpalMemoryCopy(pSendBuffer+usDataOffset,
30668 &halLLStatsSetParams,
30669 sizeof(halLLStatsSetParams));
30670
30671 pWDICtx->pReqStatusUserData = pEventData->pUserData;
30672
30673 /*-------------------------------------------------------------------------
30674 Send Clear Link Layer Stats Request to HAL
30675 -------------------------------------------------------------------------*/
30676 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
30677 wdiLLStatsSetCb, pEventData->pUserData,
30678 WDI_LL_STATS_SET_RSP);
30679}
30680
30681/**
30682 @brief WDI_LLStatsGetReq
30683 This API is called to get link layer stats request in FW
30684
30685 @param pwdiLLStatsGetReqParams : pointer to set link layer request params
30686 wdiLLStatsGetRspCb : get link layer stats resp callback
30687 usrData : Client context
30688 @see
30689 @return SUCCESS or FAIL
30690*/
30691WDI_Status
30692WDI_LLStatsGetReq(WDI_LLStatsGetReqType* pwdiLLStatsGetReqParams,
30693 WDI_LLStatsGetRspCb wdiLLStatsGetRspCb,
30694 void* pUserData)
30695{
30696 WDI_EventInfoType wdiEventData;
30697
30698 /*------------------------------------------------------------------------
30699 Sanity Check
30700 ------------------------------------------------------------------------*/
30701 if ( eWLAN_PAL_FALSE == gWDIInitialized )
30702 {
30703 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
30704 "WDI API call before module is initialized - Fail request");
30705
30706 return WDI_STATUS_E_NOT_ALLOWED;
30707 }
30708
30709 wdiEventData.wdiRequest = WDI_LL_STATS_GET_REQ;
30710 wdiEventData.pEventData = pwdiLLStatsGetReqParams;
30711 wdiEventData.uEventDataSize = sizeof(*pwdiLLStatsGetReqParams);
30712 wdiEventData.pCBfnc = wdiLLStatsGetRspCb;
30713 wdiEventData.pUserData = pUserData;
30714
30715 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
30716}
30717
30718/**
30719 @brief WDI_ProcessLLStatsGetReq -
30720 Get Link Layer Stats request to FW
30721
30722 @param pWDICtx : wdi context
30723 pEventData : indication data
30724
30725 @see
30726 @return none
30727*/
30728WDI_Status
30729WDI_ProcessLLStatsGetReq
30730(
30731 WDI_ControlBlockType* pWDICtx,
30732 WDI_EventInfoType* pEventData
30733)
30734{
30735 WDI_LLStatsGetReqType* pwdiLLStatsGetReqParams;
30736 WDI_LLStatsGetRspCb wdiLLStatsGetCb;
30737 wpt_uint8* pSendBuffer = NULL;
30738 wpt_uint16 usSendSize = 0;
30739 wpt_uint16 usDataOffset = 0;
30740 tHalMacLlGetStatsReqParams halLLStatsGetParams;
30741
30742 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
30743 ( NULL == pEventData->pCBfnc ))
30744 {
30745 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
30746 "%s: Invalid parameters", __func__);
30747 WDI_ASSERT(0);
30748 return WDI_STATUS_E_FAILURE;
30749 }
30750
30751 pwdiLLStatsGetReqParams = (WDI_LLStatsGetReqType*)pEventData->pEventData;
30752 wdiLLStatsGetCb = (WDI_LLStatsGetRspCb)pEventData->pCBfnc;
30753
30754 /*-----------------------------------------------------------------------
30755 Get message buffer
30756 ! TO DO : proper conversion into the HAL Message Request Format
30757 -----------------------------------------------------------------------*/
30758 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
30759 pWDICtx,
30760 WDI_LL_STATS_GET_REQ,
30761 sizeof(tHalMacLlGetStatsReqParams),
30762 &pSendBuffer, &usDataOffset,
30763 &usSendSize))||
30764 ( usSendSize < (usDataOffset + sizeof(halLLStatsGetParams) )))
30765 {
30766 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
30767 "Unable to get send buffer in %s %p %p %p", __func__,
30768 pEventData, pwdiLLStatsGetReqParams, wdiLLStatsGetCb);
30769 WDI_ASSERT(0);
30770 return WDI_STATUS_E_FAILURE;
30771 }
30772
30773 halLLStatsGetParams.req_id = pwdiLLStatsGetReqParams->reqId;
30774 halLLStatsGetParams.sta_id = pwdiLLStatsGetReqParams->staId;
30775 halLLStatsGetParams.param_id_mask = pwdiLLStatsGetReqParams->paramIdMask;
30776
30777 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
30778 " halLLStatsGetParams.req_id = %u",
30779 halLLStatsGetParams.req_id);
30780 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
30781 " halLLStatsGetParams.staId = %u",
30782 halLLStatsGetParams.sta_id);
30783 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
30784 " halLLStatsGetParams.Mask = %u",
30785 halLLStatsGetParams.param_id_mask);
30786
30787 wpalMemoryCopy(pSendBuffer+usDataOffset,
30788 &halLLStatsGetParams,
30789 sizeof(halLLStatsGetParams));
30790
30791 pWDICtx->pReqStatusUserData = pEventData->pUserData;
30792
30793 /*-------------------------------------------------------------------------
30794 Send Clear Link Layer Stats Request to HAL
30795 -------------------------------------------------------------------------*/
30796 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
30797 wdiLLStatsGetCb, pEventData->pUserData,
30798 WDI_LL_STATS_GET_RSP);
30799}
30800
30801/**
30802 @brief WDI_LLStatsClearReq
30803 This API is called to clear link layer stats request in FW
30804
30805 @param pwdiLLStatsClearReqParams : pointer to clear link layer request params
30806 wdiLLStatsSetRspCb : clear link layer stats resp callback
30807 usrData : Client context
30808 @see
30809 @return SUCCESS or FAIL
30810*/
30811WDI_Status
30812WDI_LLStatsClearReq(WDI_LLStatsClearReqType* pwdiLLStatsClearReqParams,
30813 WDI_LLStatsClearRspCb wdiLLStatsClearRspCb,
30814 void* pUserData)
30815{
30816 WDI_EventInfoType wdiEventData;
30817
30818 /*------------------------------------------------------------------------
30819 Sanity Check
30820 ------------------------------------------------------------------------*/
30821 if ( eWLAN_PAL_FALSE == gWDIInitialized )
30822 {
30823 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
30824 "WDI API call before module is initialized - Fail request");
30825
30826 return WDI_STATUS_E_NOT_ALLOWED;
30827 }
30828
30829 wdiEventData.wdiRequest = WDI_LL_STATS_CLEAR_REQ;
30830 wdiEventData.pEventData = pwdiLLStatsClearReqParams;
30831 wdiEventData.uEventDataSize = sizeof(*pwdiLLStatsClearReqParams);
30832 wdiEventData.pCBfnc = wdiLLStatsClearRspCb;
30833 wdiEventData.pUserData = pUserData;
30834
30835 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
30836 "%s:%d Enter", __func__, __LINE__);
30837
30838 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
30839}
30840
30841/**
30842 @brief WDI_ProcessLLStatsClearReq -
30843 Clear Link Layer Stats request to FW
30844
30845 @param pWDICtx : wdi context
30846 pEventData : indication data
30847
30848 @see
30849 @return none
30850*/
30851WDI_Status
30852WDI_ProcessLLStatsClearReq
30853(
30854 WDI_ControlBlockType* pWDICtx,
30855 WDI_EventInfoType* pEventData
30856)
30857{
30858 WDI_LLStatsClearReqType* pwdiLLStatsClearReqParams;
30859 WDI_LLStatsClearRspCb wdiLLStatsClearCb;
30860 wpt_uint8* pSendBuffer = NULL;
30861 wpt_uint16 usSendSize = 0;
30862 wpt_uint16 usDataOffset = 0;
30863 tHalMacLlClearStatsReqParams halLLStatsClearParams;
30864
30865 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
30866 ( NULL == pEventData->pCBfnc ))
30867 {
30868 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
30869 "%s: Invalid parameters", __func__);
30870 WDI_ASSERT(0);
30871 return WDI_STATUS_E_FAILURE;
30872 }
30873
30874 pwdiLLStatsClearReqParams = (WDI_LLStatsClearReqType*)pEventData->pEventData;
30875 wdiLLStatsClearCb = (WDI_LLStatsClearRspCb)pEventData->pCBfnc;
30876
30877 /*-----------------------------------------------------------------------
30878 Get message buffer
30879 ! TO DO : proper conversion into the HAL Message Request Format
30880 -----------------------------------------------------------------------*/
30881 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
30882 pWDICtx,
30883 WDI_LL_STATS_CLEAR_REQ,
30884 sizeof(tHalMacLlClearStatsReqParams),
30885 &pSendBuffer, &usDataOffset,
30886 &usSendSize))||
30887 ( usSendSize < (usDataOffset + sizeof(halLLStatsClearParams) )))
30888 {
30889 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
30890 "Unable to get send buffer in %s %p %p %p", __func__,
30891 pEventData, pwdiLLStatsClearReqParams, wdiLLStatsClearCb);
30892 WDI_ASSERT(0);
30893 return WDI_STATUS_E_FAILURE;
30894 }
30895
30896 halLLStatsClearParams.req_id = pwdiLLStatsClearReqParams->reqId;
30897 halLLStatsClearParams.sta_id = pwdiLLStatsClearReqParams->staId;
30898 halLLStatsClearParams.stats_clear_req_mask =
30899 pwdiLLStatsClearReqParams->statsClearReqMask;
30900 halLLStatsClearParams.stop_req = pwdiLLStatsClearReqParams->stopReq;
30901
30902 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
30903 "%s:HAL req_id = %d", __func__, halLLStatsClearParams.req_id);
30904 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
30905 "%s: HAL sta_id = %d", __func__, halLLStatsClearParams.sta_id);
30906 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
30907 "%s: HAL stats_clear_req_mask = 0x%X", __func__,
30908 halLLStatsClearParams.stats_clear_req_mask);
30909 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
30910 "%s: HAL stop_req = %d", __func__, halLLStatsClearParams.stop_req);
30911
30912 wpalMemoryCopy(pSendBuffer+usDataOffset,
30913 &halLLStatsClearParams,
30914 sizeof(halLLStatsClearParams));
30915
30916 pWDICtx->pReqStatusUserData = pEventData->pUserData;
30917
30918 /*-------------------------------------------------------------------------
30919 Send Clear Link Layer Stats Request to HAL
30920 -------------------------------------------------------------------------*/
30921 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
30922 wdiLLStatsClearCb, pEventData->pUserData,
30923 WDI_LL_STATS_CLEAR_RSP);
30924}
30925#endif /* WLAN_FEATURE_LINK_LAYER_STATS */