blob: 2ae88e47266f11728f2bf18bcfd9707e32268829 [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);
c_hpothu92367912014-05-01 15:18:17 +05301151 CASE_RETURN_STRING( WDI_GET_BCN_MISS_RATE_RSP );
Sunil Duttbd736ed2014-05-26 21:19:41 +05301152#ifdef WLAN_FEATURE_LINK_LAYER_STATS
1153 CASE_RETURN_STRING( WDI_LL_STATS_SET_RSP);
1154 CASE_RETURN_STRING( WDI_LL_STATS_GET_RSP);
1155 CASE_RETURN_STRING( WDI_LL_STATS_CLEAR_RSP);
1156#endif
Jeff Johnson295189b2012-06-20 16:38:30 -07001157 default:
1158 return "Unknown WDI MessageId";
1159 }
1160}
1161
1162/**
Madan Mohan Koyyalamudif8d3b3f2013-07-30 19:10:54 +05301163 @brief WDI_TraceHostFWCapabilities - Parses both host and Firmware
1164 Capability bitmap array.
Abhishek Singh08b60122014-02-04 18:05:23 +05301165 @param capabilityBitmap - Base address of a 4 element Bitmap array
1166 of type tANI_U32.
Madan Mohan Koyyalamudif8d3b3f2013-07-30 19:10:54 +05301167 @see
1168 @returns None
1169 */
1170void WDI_TraceHostFWCapabilities(tANI_U32 *capabilityBitmap)
1171{
Abhishek Singh08b60122014-02-04 18:05:23 +05301172 int i,j;
Madan Mohan Koyyalamudif8d3b3f2013-07-30 19:10:54 +05301173 char capStr[512];
1174 char *pCapStr = capStr;
Abhishek Singh08b60122014-02-04 18:05:23 +05301175 for (j = 0; j < 4; j++) {
1176 for (i = 0; i < 32; i++) {
1177 if ((*(capabilityBitmap + j) & (1 << i))) {
1178 switch(i + (j * 32)) {
Madan Mohan Koyyalamudif8d3b3f2013-07-30 19:10:54 +05301179 case MCC: snprintf(pCapStr, sizeof("MCC"), "%s", "MCC");
1180 pCapStr += strlen("MCC");
1181 break;
1182 case P2P: snprintf(pCapStr, sizeof("P2P"), "%s", "P2P");
1183 pCapStr += strlen("P2P");
1184 break;
1185 case DOT11AC: snprintf(pCapStr, sizeof("DOT11AC") , "%s", "DOT11AC");
1186 pCapStr += strlen("DOT11AC");
1187 break;
1188 case SLM_SESSIONIZATION: snprintf(pCapStr, sizeof("SLM_SESSIONIZATION"), "%s", "SLM_SESSIONIZATION");
1189 pCapStr += strlen("SLM_SESSIONIZATION");
1190 break;
1191 case DOT11AC_OPMODE: snprintf(pCapStr, sizeof("DOT11AC_OPMODE"), "%s", "DOT11AC_OPMODE");
1192 pCapStr += strlen("DOT11AC_OPMODE");
1193 break;
1194 case SAP32STA: snprintf(pCapStr, sizeof("SAP32STA"), "%s", "SAP32STA");
1195 pCapStr += strlen("SAP32STA");
1196 break;
1197 case TDLS: snprintf(pCapStr, sizeof("TDLS"), "%s", "TDLS");
1198 pCapStr += strlen("TDLS");
1199 break;
1200 case P2P_GO_NOA_DECOUPLE_INIT_SCAN: snprintf(pCapStr, sizeof("P2P_GO_NOA_DECOUPLE_INIT_SCAN"), "%s", "P2P_GO_NOA_DECOUPLE_INIT_SCAN");
1201 pCapStr += strlen("P2P_GO_NOA_DECOUPLE_INIT_SCAN");
1202 break;
1203 case WLANACTIVE_OFFLOAD: snprintf(pCapStr, sizeof("WLANACTIVE_OFFLOAD"), "%s", "WLANACTIVE_OFFLOAD");
1204 pCapStr += strlen("WLANACTIVE_OFFLOAD");
1205 break;
1206 case BEACON_OFFLOAD: snprintf(pCapStr, sizeof("BEACON_OFFLOAD"), "%s","BEACON_OFFLOAD");
1207 pCapStr += strlen("BEACON_OFFLOAD");
1208 break;
1209 case SCAN_OFFLOAD: snprintf(pCapStr, sizeof("SCAN_OFFLOAD"), "%s", "SCAN_OFFLOAD");
1210 pCapStr += strlen("SCAN_OFFLOAD");
1211 break;
1212 case ROAM_OFFLOAD: snprintf(pCapStr, sizeof("ROAM_OFFLOAD"), "%s", "ROAM_OFFLOAD");
1213 pCapStr += strlen("ROAM_OFFLOAD");
1214 break;
1215 case BCN_MISS_OFFLOAD: snprintf(pCapStr, sizeof("BCN_MISS_OFFLOAD"), "%s", "BCN_MISS_OFFLOAD");
1216 pCapStr += strlen("BCN_MISS_OFFLOAD");
1217 break;
1218 case STA_POWERSAVE: snprintf(pCapStr, sizeof("STA_POWERSAVE"), "%s", "STA_POWERSAVE");
1219 pCapStr += strlen("STA_POWERSAVE");
1220 break;
1221 case AP_UAPSD: snprintf(pCapStr, sizeof("AP_UAPSD"), "%s", "AP_UAPSD");
1222 pCapStr += strlen("AP_UAPSD");
1223 break;
1224 case AP_DFS: snprintf(pCapStr, sizeof("AP_DFS"), "%s", "AP_DFS");
1225 pCapStr += strlen("AP_DFS");
1226 break;
1227 case BLOCKACK: snprintf(pCapStr, sizeof("BLOCKACK"), "%s", "BLOCKACK");
1228 pCapStr += strlen("BLOCKACK");
1229 break;
1230 case PHY_ERR: snprintf(pCapStr, sizeof("PHY_ERR"), "%s", "PHY_ERR");
1231 pCapStr += strlen("PHY_ERR");
1232 break;
1233 case BCN_FILTER: snprintf(pCapStr, sizeof("BCN_FILTER"), "%s", "BCN_FILTER");
1234 pCapStr += strlen("BCN_FILTER");
1235 break;
1236 case RTT: snprintf(pCapStr, sizeof("RTT"), "%s", "RTT");
1237 pCapStr += strlen("RTT");
1238 break;
1239 case RATECTRL: snprintf(pCapStr, sizeof("RATECTRL"), "%s", "RATECTRL");
1240 pCapStr += strlen("RATECTRL");
1241 break;
1242 case WOW: snprintf(pCapStr, sizeof("WOW"), "%s", "WOW");
1243 pCapStr += strlen("WOW");
1244 break;
1245 case WLAN_ROAM_SCAN_OFFLOAD: snprintf(pCapStr, sizeof("WLAN_ROAM_SCAN_OFFLOAD"), "%s", "WLAN_ROAM_SCAN_OFFLOAD");
1246 pCapStr += strlen("WLAN_ROAM_SCAN_OFFLOAD");
1247 break;
Kanchanapally, Vidyullathaf9426e52013-12-24 17:28:54 +05301248 case FW_IN_TX_PATH: snprintf(pCapStr, sizeof("FW_IN_TX_PATH"), "%s", "FW_IN_TX_PATH");
1249 pCapStr += strlen("FW_IN_TX_PATH");
1250 break;
Sandeep Puligilla60342762014-01-30 21:05:37 +05301251 case HT40_OBSS_SCAN:
1252 snprintf(pCapStr, sizeof("HT40_OBSS_SCAN"),
1253 "%s", "HT40_OBSS_SCAN");
1254 pCapStr += strlen("HT40_OBSS_SCAN");
1255 break;
Hardik Kantilal Patele1760e12014-01-21 15:57:21 +05301256 case EXTENDED_NSOFFLOAD_SLOT: snprintf(pCapStr,
1257 sizeof("EXTENDED_NSOFFLOAD_SLOT"),
1258 "%s", "EXTENDED_NSOFFLOAD_SLOT");
1259 pCapStr += strlen("EXTENDED_NSOFFLOAD_SLOT");
1260 break;
Pradeep Reddy POTTETIedaeb5f2014-05-22 23:34:41 +05301261 case TDLS_SCAN_COEXISTENCE: snprintf(pCapStr, sizeof("TDLS_SCAN_COEXISTENCE"), "%s", "TDLS_SCAN_COEXISTENCE");
1262 pCapStr += strlen("TDLS_SCAN_COEXISTENCE");
1263 break;
Hardik Kantilal Patele1760e12014-01-21 15:57:21 +05301264
Abhishek Singh08b60122014-02-04 18:05:23 +05301265 }
1266 *pCapStr++ = ',';
1267 *pCapStr++ = ' ';
1268 }
Madan Mohan Koyyalamudif8d3b3f2013-07-30 19:10:54 +05301269 }
1270 }
Madan Mohan Koyyalamudic2bf6172013-08-07 14:19:18 +05301271 pCapStr -= 2;
1272 *pCapStr = '\0';
Madan Mohan Koyyalamudif8d3b3f2013-07-30 19:10:54 +05301273 pCapStr = capStr;
Madan Mohan Koyyalamudic2bf6172013-08-07 14:19:18 +05301274 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR, "\t\t%s", pCapStr);
Madan Mohan Koyyalamudif8d3b3f2013-07-30 19:10:54 +05301275}
1276
1277/**
Jeff Johnson295189b2012-06-20 16:38:30 -07001278 @brief WDI_getHALStatusMsgString prints the HAL status in string.
Jeff Johnsone7245742012-09-05 17:12:55 -07001279
1280 @param halStatusId: HAL status Id
1281
1282 @see
Jeff Johnson295189b2012-06-20 16:38:30 -07001283 @return Result of the function call
1284*/
1285static char *WDI_getHALStatusMsgString(wpt_uint16 halStatusId)
1286{
1287 switch (halStatusId)
1288 {
1289 CASE_RETURN_STRING( eHAL_STATUS_SUCCESS );
1290 CASE_RETURN_STRING( PAL_STATUS_INVAL );
1291 CASE_RETURN_STRING( PAL_STATUS_ALREADY );
1292 CASE_RETURN_STRING( PAL_STATUS_EMPTY );
1293 CASE_RETURN_STRING( PAL_STATUS_FAILURE );
1294 CASE_RETURN_STRING( eHAL_STATUS_FAILURE );
1295 CASE_RETURN_STRING( eHAL_STATUS_INVALID_PARAMETER );
1296 CASE_RETURN_STRING( eHAL_STATUS_INVALID_STAIDX );
1297 CASE_RETURN_STRING( eHAL_STATUS_DPU_DESCRIPTOR_TABLE_FULL );
1298 CASE_RETURN_STRING( eHAL_STATUS_NO_INTERRUPTS );
1299 CASE_RETURN_STRING( eHAL_STATUS_INTERRUPT_PRESENT );
1300 CASE_RETURN_STRING( eHAL_STATUS_STA_TABLE_FULL );
1301 CASE_RETURN_STRING( eHAL_STATUS_DUPLICATE_STA );
1302 CASE_RETURN_STRING( eHAL_STATUS_BSSID_INVALID );
1303 CASE_RETURN_STRING( eHAL_STATUS_STA_INVALID );
1304 CASE_RETURN_STRING( eHAL_STATUS_DUPLICATE_BSSID );
1305 CASE_RETURN_STRING( eHAL_STATUS_INVALID_BSSIDX );
1306 CASE_RETURN_STRING( eHAL_STATUS_BSSID_TABLE_FULL );
1307 CASE_RETURN_STRING( eHAL_STATUS_INVALID_SIGNATURE );
1308 CASE_RETURN_STRING( eHAL_STATUS_INVALID_KEYID );
1309 CASE_RETURN_STRING( eHAL_STATUS_SET_CHAN_ALREADY_ON_REQUESTED_CHAN );
1310 CASE_RETURN_STRING( eHAL_STATUS_UMA_DESCRIPTOR_TABLE_FULL );
1311 CASE_RETURN_STRING( eHAL_STATUS_DPU_MICKEY_TABLE_FULL );
1312 CASE_RETURN_STRING( eHAL_STATUS_BA_RX_BUFFERS_FULL );
1313 CASE_RETURN_STRING( eHAL_STATUS_BA_RX_MAX_SESSIONS_REACHED );
1314 CASE_RETURN_STRING( eHAL_STATUS_BA_RX_INVALID_SESSION_ID );
1315 CASE_RETURN_STRING( eHAL_STATUS_TIMER_START_FAILED );
1316 CASE_RETURN_STRING( eHAL_STATUS_TIMER_STOP_FAILED );
1317 CASE_RETURN_STRING( eHAL_STATUS_FAILED_ALLOC );
1318 CASE_RETURN_STRING( eHAL_STATUS_NOTIFY_BSS_FAIL );
1319 CASE_RETURN_STRING( eHAL_STATUS_DEL_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO );
1320 CASE_RETURN_STRING( eHAL_STATUS_ADD_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO );
1321 CASE_RETURN_STRING( eHAL_STATUS_FW_SEND_MSG_FAILED );
1322 default:
1323 return "Unknown HAL status";
1324 }
1325}
1326
Jeff Johnsone7245742012-09-05 17:12:55 -07001327/*========================================================================
1328
Jeff Johnson295189b2012-06-20 16:38:30 -07001329 INITIALIZATION APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07001330
Jeff Johnson295189b2012-06-20 16:38:30 -07001331==========================================================================*/
1332
1333/**
1334 @brief WDI_Init is used to initialize the DAL.
Jeff Johnsone7245742012-09-05 17:12:55 -07001335
Jeff Johnson295189b2012-06-20 16:38:30 -07001336 DAL will allocate all the resources it needs. It will open PAL, it will also
1337 open both the data and the control transport which in their turn will open
Jeff Johnsone7245742012-09-05 17:12:55 -07001338 DXE/SMD or any other drivers that they need.
1339
Arun Kumar Khandavalliebb19482014-03-25 13:56:53 +05301340 @param devHandle: pointer to the OS specific device handle
Jeff Johnson295189b2012-06-20 16:38:30 -07001341 ppWDIGlobalCtx: output pointer of Global Context
1342 pWdiDevCapability: output pointer of device capability
1343
1344 @return Result of the function call
1345*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001346WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07001347WDI_Init
Jeff Johnsone7245742012-09-05 17:12:55 -07001348(
Arun Kumar Khandavalliebb19482014-03-25 13:56:53 +05301349 void* devHandle,
Jeff Johnson295189b2012-06-20 16:38:30 -07001350 void** ppWDIGlobalCtx,
1351 WDI_DeviceCapabilityType* pWdiDevCapability,
1352 unsigned int driverType
1353)
1354{
1355 wpt_uint8 i;
Jeff Johnsone7245742012-09-05 17:12:55 -07001356 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07001357 WDI_Status wdiStatus;
Jeff Johnsone7245742012-09-05 17:12:55 -07001358 WCTS_TransportCBsType wctsCBs;
Jeff Johnson295189b2012-06-20 16:38:30 -07001359 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
1360
1361 /*---------------------------------------------------------------------
1362 Sanity check
1363 ---------------------------------------------------------------------*/
1364 if (( NULL == ppWDIGlobalCtx ) || ( NULL == pWdiDevCapability ))
1365 {
1366 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1367 "Invalid input parameters in WDI_Init");
1368
Jeff Johnsone7245742012-09-05 17:12:55 -07001369 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07001370 }
1371
1372 /*---------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001373 Check to see if the module has already been initialized or not
Jeff Johnson295189b2012-06-20 16:38:30 -07001374 ---------------------------------------------------------------------*/
1375 if ( eWLAN_PAL_FALSE != gWDIInitialized )
1376 {
1377 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
1378 "WDI module already initialized - return");
1379
Jeff Johnsone7245742012-09-05 17:12:55 -07001380 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07001381 }
1382
1383 /*Module is now initialized - this flag is to ensure the fact that multiple
1384 init will not happen on WDI
1385 !! - potential race does exist because read and set are not atomic,
1386 however an atomic operation would be closely here - reanalyze if necessary*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001387 gWDIInitialized = eWLAN_PAL_TRUE;
Jeff Johnson295189b2012-06-20 16:38:30 -07001388
1389 /*Setup the control block */
1390 WDI_CleanCB(&gWDICb);
Arun Kumar Khandavalliebb19482014-03-25 13:56:53 +05301391 gWDICb.pOSContext = devHandle ;
Jeff Johnson295189b2012-06-20 16:38:30 -07001392
1393 /*Setup the STA Table*/
1394 wdiStatus = WDI_STATableInit(&gWDICb);
1395 if ( WDI_STATUS_SUCCESS != wdiStatus )
1396 {
1397 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1398 "%s: Failure while initializing STA Table, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001399 __func__, wdiStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001400 goto fail_STATableInit;
1401 }
1402
1403 /*------------------------------------------------------------------------
1404 Open the PAL
1405 ------------------------------------------------------------------------*/
Arun Kumar Khandavalliebb19482014-03-25 13:56:53 +05301406 wptStatus = wpalOpen(&gWDICb.pPALContext, devHandle);
Jeff Johnson295189b2012-06-20 16:38:30 -07001407 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1408 {
1409 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1410 "%s: Failed to open PAL, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001411 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001412 goto fail_wpalOpen;
1413 }
1414
1415 /*Initialize main synchro mutex - it will be used to ensure integrity of
1416 the main WDI Control Block*/
1417 wptStatus = wpalMutexInit(&gWDICb.wptMutex);
1418 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1419 {
1420 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1421 "%s: Failed to init mutex, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001422 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001423 goto fail_mutex;
1424 }
1425
1426 /*Initialize the response timer - it will be used to time all messages
1427 expected as response from device*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001428 wptStatus = wpalTimerInit( &gWDICb.wptResponseTimer,
1429 WDI_ResponseTimerCB,
Jeff Johnson295189b2012-06-20 16:38:30 -07001430 &gWDICb);
1431 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1432 {
1433 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1434 "%s: Failed to init response timer, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001435 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001436 goto fail_timer;
1437 }
1438
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -07001439 wptStatus = wpalTimerInit( &gWDICb.ssrTimer,
1440 WDI_SsrTimerCB,
1441 &gWDICb);
1442 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1443 {
1444 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1445 "%s: Failed to init SSR timer, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001446 __func__, wptStatus);
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -07001447 goto fail_timer2;
1448 }
Jeff Johnson295189b2012-06-20 16:38:30 -07001449 /* Initialize the WDI Pending Request Queue*/
1450 wptStatus = wpal_list_init(&(gWDICb.wptPendingQueue));
1451 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1452 {
1453 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1454 "%s: Failed to init pending request queue, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001455 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001456 goto fail_pend_queue;
1457 }
1458
1459 /*Init WDI Pending Assoc Id Queue */
1460 wptStatus = wpal_list_init(&(gWDICb.wptPendingAssocSessionIdQueue));
1461 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1462 {
1463 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1464 "%s: Failed to init assoc session queue, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001465 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001466 goto fail_assoc_queue;
1467 }
1468
1469 /*Initialize the BSS sessions pending Queue */
1470 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
1471 {
1472 wptStatus = wpal_list_init(&(gWDICb.aBSSSessions[i].wptPendingQueue));
1473 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1474 {
1475 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1476 "%s: Failed to init BSS %d pending queue, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001477 __func__, i, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001478 goto fail_bss_queue;
1479 }
1480 }
1481
1482 /*Indicate the control block is sufficiently initialized for callbacks*/
1483 gWDICb.magic = WDI_CONTROL_BLOCK_MAGIC;
1484
1485 /*------------------------------------------------------------------------
1486 Initialize the Data Path Utility Module
1487 ------------------------------------------------------------------------*/
1488 wdiStatus = WDI_DP_UtilsInit(&gWDICb);
1489 if ( WDI_STATUS_SUCCESS != wdiStatus )
1490 {
1491 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1492 "%s: Failed to initialize the DP Util Module, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001493 __func__, wdiStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001494 goto fail_dp_util_init;
1495 }
1496
1497 /* Init Set power state event */
1498 wptStatus = wpalEventInit(&gWDICb.setPowerStateEvent);
Jeff Johnsone7245742012-09-05 17:12:55 -07001499 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -07001500 {
1501 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1502 "%s: Failed to initialize power state event, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001503 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001504 goto fail_power_event;
1505 }
1506
1507 /* Init WCTS action event */
1508 wptStatus = wpalEventInit(&gWDICb.wctsActionEvent);
Jeff Johnsone7245742012-09-05 17:12:55 -07001509 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -07001510 {
1511 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1512 "%s: Failed to initialize WCTS action event, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001513 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001514 goto fail_wcts_event;
1515 }
1516
1517 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001518 Open the Transport Services for Control and Data
Jeff Johnson295189b2012-06-20 16:38:30 -07001519 ------------------------------------------------------------------------*/
1520 wctsCBs.wctsNotifyCB = WDI_NotifyMsgCTSCB;
1521 wctsCBs.wctsNotifyCBData = &gWDICb;
Jeff Johnsone7245742012-09-05 17:12:55 -07001522 wctsCBs.wctsRxMsgCB = WDI_RXMsgCTSCB;
Jeff Johnson295189b2012-06-20 16:38:30 -07001523 wctsCBs.wctsRxMsgCBData = &gWDICb;
1524
Jeff Johnsone7245742012-09-05 17:12:55 -07001525 gWDICb.bCTOpened = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -07001526 gWDICb.wctsHandle = WCTS_OpenTransport( szTransportChName ,
Jeff Johnsone7245742012-09-05 17:12:55 -07001527 WDI_CT_CHANNEL_SIZE,
1528 &wctsCBs );
Jeff Johnson295189b2012-06-20 16:38:30 -07001529
1530 if ( NULL == gWDICb.wctsHandle )
1531 {
1532 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001533 "%s: Failed to open WCTS transport", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001534 goto fail_wcts_open;
1535 }
1536
1537 gWDICb.driverMode = (tDriverType)driverType;
1538 /* FTM mode not need to open Transport Driver */
1539 if(eDRIVER_TYPE_MFG != (tDriverType)driverType)
Jeff Johnsone7245742012-09-05 17:12:55 -07001540 {
Jeff Johnson295189b2012-06-20 16:38:30 -07001541 /*------------------------------------------------------------------------
1542 Open the Data Transport
1543 ------------------------------------------------------------------------*/
1544 if(eWLAN_PAL_STATUS_SUCCESS != WDTS_openTransport(&gWDICb))
1545 {
1546 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001547 "%s: Failed to open the DT Transport", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001548 goto fail_wdts_open;
1549 }
1550 }
1551
1552 /*The WDI is initialized - set state to init */
Jeff Johnsone7245742012-09-05 17:12:55 -07001553 gWDICb.uGlobalState = WDI_INIT_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07001554
1555 /*Send the context as a ptr to the global WDI Control Block*/
1556 *ppWDIGlobalCtx = &gWDICb;
1557
1558 /*Fill in the device capabilities*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001559 pWdiDevCapability->bFrameXtlSupported = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -07001560 pWdiDevCapability->ucMaxSTASupported = gWDICb.ucMaxStations;
1561 pWdiDevCapability->ucMaxBSSSupported = gWDICb.ucMaxBssids;
1562 return WDI_STATUS_SUCCESS;
1563
1564 /* ERROR handlers
1565 Undo everything that completed successfully */
1566
1567 fail_wdts_open:
1568 {
1569 wpt_status eventStatus;
1570
1571 /* Closing WCTS in this scenario is tricky since it has to close
1572 the SMD channel and then we get notified asynchronously when
1573 the channel has been closed. So we take some of the logic from
1574 the "normal" close procedure in WDI_Close()
1575 */
1576
1577 eventStatus = wpalEventReset(&gWDICb.wctsActionEvent);
Jeff Johnsone7245742012-09-05 17:12:55 -07001578 if ( eWLAN_PAL_STATUS_SUCCESS != eventStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -07001579 {
1580 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001581 "%s: Failed to reset WCTS action event", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001582 }
1583
1584 WCTS_CloseTransport(gWDICb.wctsHandle);
1585
1586 /* Wait for WCTS to close the control transport. If we were able
1587 to reset the event flag, then we'll wait for the event,
1588 otherwise we'll wait for a maximum amount of time required for
1589 the channel to be closed */
1590 if ( eWLAN_PAL_STATUS_SUCCESS == eventStatus )
1591 {
Jeff Johnsone7245742012-09-05 17:12:55 -07001592 eventStatus = wpalEventWait(&gWDICb.wctsActionEvent,
Jeff Johnson295189b2012-06-20 16:38:30 -07001593 WDI_WCTS_ACTION_TIMEOUT);
1594 if ( eWLAN_PAL_STATUS_SUCCESS != eventStatus )
1595 {
1596 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001597 "%s: Failed to wait on WCTS action event", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001598 }
1599 }
1600 else
1601 {
1602 wpalSleep(WDI_WCTS_ACTION_TIMEOUT);
1603 }
1604 }
1605 fail_wcts_open:
1606 wpalEventDelete(&gWDICb.wctsActionEvent);
1607 fail_wcts_event:
1608 wpalEventDelete(&gWDICb.setPowerStateEvent);
1609 fail_power_event:
1610 WDI_DP_UtilsExit(&gWDICb);
1611 fail_dp_util_init:
1612 gWDICb.magic = 0;
1613 fail_bss_queue:
1614 /* entries 0 thru i-1 were successfully initialized */
1615 while (0 < i)
1616 {
1617 i--;
1618 wpal_list_destroy(&(gWDICb.aBSSSessions[i].wptPendingQueue));
1619 }
1620 wpal_list_destroy(&(gWDICb.wptPendingAssocSessionIdQueue));
1621 fail_assoc_queue:
1622 wpal_list_destroy(&(gWDICb.wptPendingQueue));
1623 fail_pend_queue:
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -07001624 wpalTimerDelete(&gWDICb.ssrTimer);
1625 fail_timer2:
Jeff Johnson295189b2012-06-20 16:38:30 -07001626 wpalTimerDelete(&gWDICb.wptResponseTimer);
1627 fail_timer:
1628 wpalMutexDelete(&gWDICb.wptMutex);
1629 fail_mutex:
1630 wpalClose(gWDICb.pPALContext);
1631 fail_wpalOpen:
1632 WDI_STATableClose(&gWDICb);
1633 fail_STATableInit:
1634 gWDIInitialized = eWLAN_PAL_FALSE;
1635
1636 return WDI_STATUS_E_FAILURE;
1637
1638}/*WDI_Init*/;
1639
1640/**
1641 @brief WDI_Start will be called when the upper MAC is ready to
1642 commence operation with the WLAN Device. Upon the call
1643 of this API the WLAN DAL will pack and send a HAL Start
1644 message to the lower RIVA sub-system if the SMD channel
1645 has been fully opened and the RIVA subsystem is up.
1646
1647 If the RIVA sub-system is not yet up and running DAL
1648 will queue the request for Open and will wait for the
1649 SMD notification before attempting to send down the
Jeff Johnsone7245742012-09-05 17:12:55 -07001650 message to HAL.
Jeff Johnson295189b2012-06-20 16:38:30 -07001651
1652 WDI_Init must have been called.
1653
Jeff Johnsone7245742012-09-05 17:12:55 -07001654 @param wdiStartParams: the start parameters as specified by
Jeff Johnson295189b2012-06-20 16:38:30 -07001655 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07001656
Jeff Johnson295189b2012-06-20 16:38:30 -07001657 wdiStartRspCb: callback for passing back the response of
1658 the start operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07001659
Jeff Johnson295189b2012-06-20 16:38:30 -07001660 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07001661 callback
1662
Jeff Johnson295189b2012-06-20 16:38:30 -07001663 @see WDI_Start
1664 @return Result of the function call
1665*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001666WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07001667WDI_Start
1668(
1669 WDI_StartReqParamsType* pwdiStartParams,
1670 WDI_StartRspCb wdiStartRspCb,
1671 void* pUserData
1672)
1673{
1674 WDI_EventInfoType wdiEventData;
1675 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
1676
1677 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001678 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07001679 ------------------------------------------------------------------------*/
1680 if ( eWLAN_PAL_FALSE == gWDIInitialized )
1681 {
1682 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1683 "WDI API call before module is initialized - Fail request");
1684
Jeff Johnsone7245742012-09-05 17:12:55 -07001685 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07001686 }
1687
1688 /*------------------------------------------------------------------------
1689 Fill in Event data and post to the Main FSM
1690 ------------------------------------------------------------------------*/
1691 wdiEventData.wdiRequest = WDI_START_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07001692 wdiEventData.pEventData = pwdiStartParams;
1693 wdiEventData.uEventDataSize = sizeof(*pwdiStartParams);
1694 wdiEventData.pCBfnc = wdiStartRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07001695 wdiEventData.pUserData = pUserData;
1696
1697 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
1698
1699}/*WDI_Start*/
1700
1701/**
1702 @brief WDI_Stop will be called when the upper MAC is ready to
1703 stop any operation with the WLAN Device. Upon the call
1704 of this API the WLAN DAL will pack and send a HAL Stop
1705 message to the lower RIVA sub-system if the DAL Core is
1706 in started state.
1707
1708 In state BUSY this request will be queued.
Jeff Johnsone7245742012-09-05 17:12:55 -07001709
1710 Request will not be accepted in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07001711
1712 WDI_Start must have been called.
1713
Jeff Johnsone7245742012-09-05 17:12:55 -07001714 @param wdiStopParams: the stop parameters as specified by
Jeff Johnson295189b2012-06-20 16:38:30 -07001715 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07001716
Jeff Johnson295189b2012-06-20 16:38:30 -07001717 wdiStopRspCb: callback for passing back the response of
1718 the stop operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07001719
Jeff Johnson295189b2012-06-20 16:38:30 -07001720 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07001721 callback
1722
Jeff Johnson295189b2012-06-20 16:38:30 -07001723 @see WDI_Start
1724 @return Result of the function call
1725*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001726WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07001727WDI_Stop
1728(
1729 WDI_StopReqParamsType* pwdiStopParams,
1730 WDI_StopRspCb wdiStopRspCb,
1731 void* pUserData
1732)
1733{
1734 WDI_EventInfoType wdiEventData;
Jeff Johnson43971f52012-07-17 12:26:56 -07001735 WDI_ControlBlockType* pWDICtx = &gWDICb;
Jeff Johnson295189b2012-06-20 16:38:30 -07001736 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
1737
1738 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001739 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07001740 ------------------------------------------------------------------------*/
1741 if ( eWLAN_PAL_FALSE == gWDIInitialized )
1742 {
1743 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1744 "WDI API call before module is initialized - Fail request");
1745
Jeff Johnsone7245742012-09-05 17:12:55 -07001746 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07001747 }
1748
Jeff Johnson43971f52012-07-17 12:26:56 -07001749 /*Access to the global state must be locked before cleaning */
1750 wpalMutexAcquire(&pWDICtx->wptMutex);
1751
1752 /*Clear all pending request*/
1753 WDI_ClearPendingRequests(pWDICtx);
1754
1755 /*We have completed cleaning unlock now*/
1756 wpalMutexRelease(&pWDICtx->wptMutex);
1757
Jeff Johnson295189b2012-06-20 16:38:30 -07001758 /* Free the global variables */
1759 wpalMemoryFree(gpHostWlanFeatCaps);
1760 wpalMemoryFree(gpFwWlanFeatCaps);
Madan Mohan Koyyalamudi3352adb2012-09-28 14:57:24 -07001761 gpHostWlanFeatCaps = NULL;
1762 gpFwWlanFeatCaps = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07001763
1764 /*------------------------------------------------------------------------
1765 Fill in Event data and post to the Main FSM
1766 ------------------------------------------------------------------------*/
1767 wdiEventData.wdiRequest = WDI_STOP_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07001768 wdiEventData.pEventData = pwdiStopParams;
1769 wdiEventData.uEventDataSize = sizeof(*pwdiStopParams);
1770 wdiEventData.pCBfnc = wdiStopRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07001771 wdiEventData.pUserData = pUserData;
1772
1773 return WDI_PostMainEvent(&gWDICb, WDI_STOP_EVENT, &wdiEventData);
1774
1775}/*WDI_Stop*/
1776
1777
1778
1779/**
Jeff Johnsone7245742012-09-05 17:12:55 -07001780 @brief WDI_Close will be called when the upper MAC no longer
Jeff Johnson295189b2012-06-20 16:38:30 -07001781 needs to interact with DAL. DAL will free its control
1782 block.
Jeff Johnsone7245742012-09-05 17:12:55 -07001783
1784 It is only accepted in state STOPPED.
Jeff Johnson295189b2012-06-20 16:38:30 -07001785
1786 WDI_Stop must have been called.
1787
1788 @param none
Jeff Johnsone7245742012-09-05 17:12:55 -07001789
Jeff Johnson295189b2012-06-20 16:38:30 -07001790 @see WDI_Stop
1791 @return Result of the function call
1792*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001793WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07001794WDI_Close
1795(
1796 void
1797)
1798{
1799 wpt_uint8 i;
1800 WDI_EventInfoType wdiEventData;
1801 wpt_status wptStatus;
1802 wpt_status eventStatus;
1803 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
1804
1805 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001806 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07001807 ------------------------------------------------------------------------*/
1808 if ( eWLAN_PAL_FALSE == gWDIInitialized )
1809 {
1810 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1811 "WDI API call before module is initialized - Fail request");
1812
Jeff Johnsone7245742012-09-05 17:12:55 -07001813 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07001814 }
1815
1816 /*Reset WCTS action event prior to posting the WDI_CLOSE_REQ
1817 (the control transport will be closed by the FSM and we'll want
1818 to wait until that completes)*/
1819 eventStatus = wpalEventReset(&gWDICb.wctsActionEvent);
Jeff Johnsone7245742012-09-05 17:12:55 -07001820 if ( eWLAN_PAL_STATUS_SUCCESS != eventStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -07001821 {
1822 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001823 "%s: Failed to reset WCTS action event", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001824 /* fall through and try to finish closing via the FSM */
1825 }
1826
1827 /*------------------------------------------------------------------------
1828 Fill in Event data and post to the Main FSM
1829 ------------------------------------------------------------------------*/
1830 wdiEventData.wdiRequest = WDI_CLOSE_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07001831 wdiEventData.pEventData = NULL;
1832 wdiEventData.uEventDataSize = 0;
1833 wdiEventData.pCBfnc = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07001834 wdiEventData.pUserData = NULL;
1835
1836 gWDIInitialized = eWLAN_PAL_FALSE;
1837
1838 wptStatus = WDI_PostMainEvent(&gWDICb, WDI_CLOSE_EVENT, &wdiEventData);
1839
1840 /*Wait for WCTS to close the control transport
1841 (but only if we were able to reset the event flag*/
1842 if ( eWLAN_PAL_STATUS_SUCCESS == eventStatus )
1843 {
Jeff Johnsone7245742012-09-05 17:12:55 -07001844 eventStatus = wpalEventWait(&gWDICb.wctsActionEvent,
Jeff Johnson295189b2012-06-20 16:38:30 -07001845 WDI_WCTS_ACTION_TIMEOUT);
1846 if ( eWLAN_PAL_STATUS_SUCCESS != eventStatus )
1847 {
1848 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001849 "%s: Failed to wait on WCTS action event", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001850 }
1851 }
1852
1853 /* Destroy the WCTS action event */
1854 wptStatus = wpalEventDelete(&gWDICb.wctsActionEvent);
1855 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1856 {
1857 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
1858 "WDI Close failed to destroy an event");
Jeff Johnsone7245742012-09-05 17:12:55 -07001859 WDI_ASSERT(0);
Jeff Johnson295189b2012-06-20 16:38:30 -07001860 }
1861
1862 /* Destroy the Set Power State event */
1863 wptStatus = wpalEventDelete(&gWDICb.setPowerStateEvent);
1864 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1865 {
1866 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
1867 "WDI Close failed to destroy an event");
1868
Jeff Johnsone7245742012-09-05 17:12:55 -07001869 WDI_ASSERT(0);
Jeff Johnson295189b2012-06-20 16:38:30 -07001870 }
1871
1872 /*------------------------------------------------------------------------
1873 Closes the Data Path Utility Module
1874 ------------------------------------------------------------------------*/
1875 if ( WDI_STATUS_SUCCESS != WDI_DP_UtilsExit(&gWDICb))
1876 {
1877 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
1878 "WDI Init failed to close the DP Util Module");
1879
Jeff Johnsone7245742012-09-05 17:12:55 -07001880 WDI_ASSERT(0);
Jeff Johnson295189b2012-06-20 16:38:30 -07001881 }
1882
1883 /*destroy the BSS sessions pending Queue */
1884 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
1885 {
1886 wpal_list_destroy(&(gWDICb.aBSSSessions[i].wptPendingQueue));
1887 }
1888
1889 /* destroy the WDI Pending Assoc Id Request Queue*/
1890 wpal_list_destroy(&(gWDICb.wptPendingAssocSessionIdQueue));
1891
1892 /* destroy the WDI Pending Request Queue*/
1893 wpal_list_destroy(&(gWDICb.wptPendingQueue));
Jeff Johnsone7245742012-09-05 17:12:55 -07001894
Jeff Johnson295189b2012-06-20 16:38:30 -07001895 /*destroy the response timer */
1896 wptStatus = wpalTimerDelete( &gWDICb.wptResponseTimer);
1897
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -07001898 /*destroy the SSR timer */
1899 wptStatus = wpalTimerDelete( &gWDICb.ssrTimer);
1900
Jeff Johnson295189b2012-06-20 16:38:30 -07001901 /*invalidate the main synchro mutex */
1902 wptStatus = wpalMutexDelete(&gWDICb.wptMutex);
1903 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1904 {
1905 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1906 "Failed to delete mutex %d", wptStatus);
1907 WDI_ASSERT(0);
1908 }
1909
1910 /*Clear control block. note that this will clear the "magic"
1911 which will inhibit all asynchronous callbacks*/
1912 WDI_CleanCB(&gWDICb);
1913
1914 return wptStatus;
1915
1916}/*WDI_Close*/
1917
1918/**
1919 @brief WDI_Shutdown will be called during 'SSR shutdown' operation.
1920 This will do most of the WDI stop & close
1921 operations without doing any handshake with Riva
1922
1923 This will also make sure that the control transport
1924 will NOT be closed.
1925
1926 This request will not be queued.
1927
1928
1929 WDI_Start must have been called.
1930
1931 @param closeTransport: Close control channel if this is set
1932
1933 @return Result of the function call
1934*/
1935WDI_Status
1936WDI_Shutdown
1937(
1938 wpt_boolean closeTransport
1939)
1940{
1941 WDI_EventInfoType wdiEventData;
1942 wpt_status wptStatus;
1943 int i = 0;
1944 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
1945
1946 /*------------------------------------------------------------------------
1947 Sanity Check
1948 ------------------------------------------------------------------------*/
1949 if ( eWLAN_PAL_FALSE == gWDIInitialized )
1950 {
1951 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1952 "WDI API call before module is initialized - Fail request");
1953
1954 return WDI_STATUS_E_NOT_ALLOWED;
1955 }
1956
1957 /*------------------------------------------------------------------------
1958 Fill in Event data and post to the Main FSM
1959 ------------------------------------------------------------------------*/
1960 wdiEventData.wdiRequest = WDI_SHUTDOWN_REQ;
1961 wdiEventData.pEventData = NULL;
1962 wdiEventData.uEventDataSize = 0;
1963
1964 /* Shutdown will not be queued, if the state is busy timer will be
1965 * stopped & this message will be processed.*/
1966 wptStatus = WDI_PostMainEvent(&gWDICb, WDI_SHUTDOWN_EVENT, &wdiEventData);
1967 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1968 {
1969 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001970 "%s: Failed to process shutdown event", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001971 }
1972 /* Destroy the Set Power State event */
1973 wptStatus = wpalEventDelete(&gWDICb.setPowerStateEvent);
1974 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1975 {
1976 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
1977 "WDI Close failed to destroy an event");
1978
1979 WDI_ASSERT(0);
1980 }
1981 /*------------------------------------------------------------------------
1982 Closes the Data Path Utility Module
1983 ------------------------------------------------------------------------*/
1984 if ( WDI_STATUS_SUCCESS != WDI_DP_UtilsExit(&gWDICb))
1985 {
1986 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
1987 "WDI Init failed to close the DP Util Module");
1988
1989 WDI_ASSERT(0);
1990 }
1991 if ( closeTransport )
1992 {
1993 /* Close control transport, called from module unload */
1994 WCTS_CloseTransport(gWDICb.wctsHandle);
1995 }
Madan Mohan Koyyalamudifab2a7e2012-09-28 15:20:00 -07001996 else
1997 {
Madan Mohan Koyyalamudi8b7f1e62012-10-05 14:56:51 -07001998 /* Riva is crashed then SMD is already closed so cleaning all
Madan Mohan Koyyalamudifab2a7e2012-09-28 15:20:00 -07001999 the pending messages in the transport queue */
2000 WCTS_ClearPendingQueue(gWDICb.wctsHandle);
2001 }
Jeff Johnson295189b2012-06-20 16:38:30 -07002002 /*destroy the BSS sessions pending Queue */
2003 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
2004 {
2005 wpal_list_destroy(&(gWDICb.aBSSSessions[i].wptPendingQueue));
2006 }
2007
2008 /* destroy the WDI Pending Assoc Id Request Queue*/
2009 wpal_list_destroy(&(gWDICb.wptPendingAssocSessionIdQueue));
2010 /* destroy the WDI Pending Request Queue*/
2011 wpal_list_destroy(&(gWDICb.wptPendingQueue));
2012 /*destroy the response timer */
2013 wptStatus = wpalTimerDelete( &gWDICb.wptResponseTimer);
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -07002014 /*destroy the SSR timer */
2015 wptStatus = wpalTimerDelete( &gWDICb.ssrTimer);
Jeff Johnson295189b2012-06-20 16:38:30 -07002016
2017 /*invalidate the main synchro mutex */
2018 wptStatus = wpalMutexDelete(&gWDICb.wptMutex);
2019 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
2020 {
2021 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07002022 "%s: Failed to delete mutex %d", __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07002023 WDI_ASSERT(0);
2024 }
Madan Mohan Koyyalamudi3513bf52012-09-18 17:35:53 -07002025 /* Free the global variables */
2026 wpalMemoryFree(gpHostWlanFeatCaps);
2027 wpalMemoryFree(gpFwWlanFeatCaps);
Madan Mohan Koyyalamudi3352adb2012-09-28 14:57:24 -07002028 gpHostWlanFeatCaps = NULL;
2029 gpFwWlanFeatCaps = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07002030 /*Clear control block. note that this will clear the "magic"
2031 which will inhibit all asynchronous callbacks*/
2032 WDI_CleanCB(&gWDICb);
2033 return wptStatus;
2034
2035}/*WDI_Shutdown*/
2036
2037
Jeff Johnsone7245742012-09-05 17:12:55 -07002038/*========================================================================
2039
Jeff Johnson295189b2012-06-20 16:38:30 -07002040 SCAN APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07002041
Jeff Johnson295189b2012-06-20 16:38:30 -07002042==========================================================================*/
2043
2044/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002045 @brief WDI_InitScanReq will be called when the upper MAC wants
Jeff Johnson295189b2012-06-20 16:38:30 -07002046 the WLAN Device to get ready for a scan procedure. Upon
2047 the call of this API the WLAN DAL will pack and send a
2048 HAL Init Scan request message to the lower RIVA
2049 sub-system if DAL is in state STARTED.
2050
2051 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002052 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002053
2054 WDI_Start must have been called.
2055
2056 @param wdiInitScanParams: the init scan parameters as specified
2057 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002058
Jeff Johnson295189b2012-06-20 16:38:30 -07002059 wdiInitScanRspCb: callback for passing back the response
2060 of the init scan operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002061
Jeff Johnson295189b2012-06-20 16:38:30 -07002062 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002063 callback
2064
Jeff Johnson295189b2012-06-20 16:38:30 -07002065 @see WDI_Start
2066 @return Result of the function call
2067*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002068WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002069WDI_InitScanReq
2070(
2071 WDI_InitScanReqParamsType* pwdiInitScanParams,
2072 WDI_InitScanRspCb wdiInitScanRspCb,
2073 void* pUserData
2074)
2075{
2076 WDI_EventInfoType wdiEventData;
2077 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2078
2079 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002080 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002081 ------------------------------------------------------------------------*/
2082 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2083 {
2084 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2085 "WDI API call before module is initialized - Fail request");
2086
Jeff Johnsone7245742012-09-05 17:12:55 -07002087 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002088 }
2089
2090 /*------------------------------------------------------------------------
2091 Fill in Event data and post to the Main FSM
2092 ------------------------------------------------------------------------*/
2093 wdiEventData.wdiRequest = WDI_INIT_SCAN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002094 wdiEventData.pEventData = pwdiInitScanParams;
2095 wdiEventData.uEventDataSize = sizeof(*pwdiInitScanParams);
2096 wdiEventData.pCBfnc = wdiInitScanRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002097 wdiEventData.pUserData = pUserData;
2098
2099 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2100
2101}/*WDI_InitScanReq*/
2102
2103/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002104 @brief WDI_StartScanReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07002105 wishes to change the Scan channel on the WLAN Device.
2106 Upon the call of this API the WLAN DAL will pack and
2107 send a HAL Start Scan request message to the lower RIVA
2108 sub-system if DAL is in state STARTED.
2109
2110 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002111 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002112
2113 WDI_InitScanReq must have been called.
2114
Jeff Johnsone7245742012-09-05 17:12:55 -07002115 @param wdiStartScanParams: the start scan parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002116 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002117
Jeff Johnson295189b2012-06-20 16:38:30 -07002118 wdiStartScanRspCb: callback for passing back the
2119 response of the start scan operation received from the
2120 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002121
Jeff Johnson295189b2012-06-20 16:38:30 -07002122 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002123 callback
2124
Jeff Johnson295189b2012-06-20 16:38:30 -07002125 @see WDI_InitScanReq
2126 @return Result of the function call
2127*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002128WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002129WDI_StartScanReq
2130(
2131 WDI_StartScanReqParamsType* pwdiStartScanParams,
2132 WDI_StartScanRspCb wdiStartScanRspCb,
2133 void* pUserData
2134)
2135{
2136 WDI_EventInfoType wdiEventData;
2137 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2138
2139 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002140 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002141 ------------------------------------------------------------------------*/
2142 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2143 {
2144 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2145 "WDI API call before module is initialized - Fail request");
2146
Jeff Johnsone7245742012-09-05 17:12:55 -07002147 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002148 }
2149
2150 /*------------------------------------------------------------------------
2151 Fill in Event data and post to the Main FSM
2152 ------------------------------------------------------------------------*/
2153 wdiEventData.wdiRequest = WDI_START_SCAN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002154 wdiEventData.pEventData = pwdiStartScanParams;
2155 wdiEventData.uEventDataSize = sizeof(*pwdiStartScanParams);
2156 wdiEventData.pCBfnc = wdiStartScanRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002157 wdiEventData.pUserData = pUserData;
2158
2159 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2160
2161}/*WDI_StartScanReq*/
2162
2163
2164/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002165 @brief WDI_EndScanReq will be called when the upper MAC is
Jeff Johnson295189b2012-06-20 16:38:30 -07002166 wants to end scanning for a particular channel that it
2167 had set before by calling Scan Start on the WLAN Device.
2168 Upon the call of this API the WLAN DAL will pack and
2169 send a HAL End Scan request message to the lower RIVA
2170 sub-system if DAL is in state STARTED.
2171
2172 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002173 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002174
2175 WDI_StartScanReq must have been called.
2176
Jeff Johnsone7245742012-09-05 17:12:55 -07002177 @param wdiEndScanParams: the end scan parameters as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07002178 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002179
Jeff Johnson295189b2012-06-20 16:38:30 -07002180 wdiEndScanRspCb: callback for passing back the response
2181 of the end scan operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002182
Jeff Johnson295189b2012-06-20 16:38:30 -07002183 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002184 callback
2185
Jeff Johnson295189b2012-06-20 16:38:30 -07002186 @see WDI_StartScanReq
2187 @return Result of the function call
2188*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002189WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002190WDI_EndScanReq
2191(
2192 WDI_EndScanReqParamsType* pwdiEndScanParams,
2193 WDI_EndScanRspCb wdiEndScanRspCb,
2194 void* pUserData
2195)
2196{
2197 WDI_EventInfoType wdiEventData;
2198 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2199
2200 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002201 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002202 ------------------------------------------------------------------------*/
2203 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2204 {
2205 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2206 "WDI API call before module is initialized - Fail request");
2207
Jeff Johnsone7245742012-09-05 17:12:55 -07002208 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002209 }
2210
2211 /*------------------------------------------------------------------------
2212 Fill in Event data and post to the Main FSM
2213 ------------------------------------------------------------------------*/
2214 wdiEventData.wdiRequest = WDI_END_SCAN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002215 wdiEventData.pEventData = pwdiEndScanParams;
2216 wdiEventData.uEventDataSize = sizeof(*pwdiEndScanParams);
2217 wdiEventData.pCBfnc = wdiEndScanRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002218 wdiEventData.pUserData = pUserData;
2219
2220 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2221
2222}/*WDI_EndScanReq*/
2223
2224
2225/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002226 @brief WDI_FinishScanReq will be called when the upper MAC has
Jeff Johnson295189b2012-06-20 16:38:30 -07002227 completed the scan process on the WLAN Device. Upon the
2228 call of this API the WLAN DAL will pack and send a HAL
2229 Finish Scan Request request message to the lower RIVA
2230 sub-system if DAL is in state STARTED.
2231
2232 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002233 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002234
2235 WDI_InitScanReq must have been called.
2236
Jeff Johnsone7245742012-09-05 17:12:55 -07002237 @param wdiFinishScanParams: the finish scan parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002238 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002239
Jeff Johnson295189b2012-06-20 16:38:30 -07002240 wdiFinishScanRspCb: callback for passing back the
2241 response of the finish scan operation received from the
2242 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002243
Jeff Johnson295189b2012-06-20 16:38:30 -07002244 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002245 callback
2246
Jeff Johnson295189b2012-06-20 16:38:30 -07002247 @see WDI_InitScanReq
2248 @return Result of the function call
2249*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002250WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002251WDI_FinishScanReq
2252(
2253 WDI_FinishScanReqParamsType* pwdiFinishScanParams,
2254 WDI_FinishScanRspCb wdiFinishScanRspCb,
2255 void* pUserData
2256)
2257{
2258 WDI_EventInfoType wdiEventData;
2259 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2260
2261 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002262 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002263 ------------------------------------------------------------------------*/
2264 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2265 {
2266 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2267 "WDI API call before module is initialized - Fail request");
2268
Jeff Johnsone7245742012-09-05 17:12:55 -07002269 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002270 }
2271
2272 /*------------------------------------------------------------------------
2273 Fill in Event data and post to the Main FSM
2274 ------------------------------------------------------------------------*/
2275 wdiEventData.wdiRequest = WDI_FINISH_SCAN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002276 wdiEventData.pEventData = pwdiFinishScanParams;
2277 wdiEventData.uEventDataSize = sizeof(*pwdiFinishScanParams);
2278 wdiEventData.pCBfnc = wdiFinishScanRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002279 wdiEventData.pUserData = pUserData;
2280
2281 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2282
2283}/*WDI_FinishScanReq*/
2284
Jeff Johnsone7245742012-09-05 17:12:55 -07002285/*========================================================================
2286
Jeff Johnson295189b2012-06-20 16:38:30 -07002287 ASSOCIATION APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07002288
Jeff Johnson295189b2012-06-20 16:38:30 -07002289==========================================================================*/
2290
2291/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002292 @brief WDI_JoinReq will be called when the upper MAC is ready
Jeff Johnson295189b2012-06-20 16:38:30 -07002293 to start an association procedure to a BSS. Upon the
2294 call of this API the WLAN DAL will pack and send a HAL
2295 Join request message to the lower RIVA sub-system if
2296 DAL is in state STARTED.
2297
2298 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002299 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002300
2301 WDI_Start must have been called.
2302
Jeff Johnsone7245742012-09-05 17:12:55 -07002303 @param wdiJoinParams: the join parameters as specified by
Jeff Johnson295189b2012-06-20 16:38:30 -07002304 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002305
Jeff Johnson295189b2012-06-20 16:38:30 -07002306 wdiJoinRspCb: callback for passing back the response of
2307 the join operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002308
Jeff Johnson295189b2012-06-20 16:38:30 -07002309 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002310 callback
2311
Jeff Johnson295189b2012-06-20 16:38:30 -07002312 @see WDI_Start
2313 @return Result of the function call
2314*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002315WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002316WDI_JoinReq
2317(
2318 WDI_JoinReqParamsType* pwdiJoinParams,
2319 WDI_JoinRspCb wdiJoinRspCb,
2320 void* pUserData
2321)
2322{
2323 WDI_EventInfoType wdiEventData;
2324 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2325
2326 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002327 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002328 ------------------------------------------------------------------------*/
2329 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2330 {
2331 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2332 "WDI API call before module is initialized - Fail request");
2333
Jeff Johnsone7245742012-09-05 17:12:55 -07002334 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002335 }
2336
2337 /*------------------------------------------------------------------------
2338 Fill in Event data and post to the Main FSM
2339 ------------------------------------------------------------------------*/
2340 wdiEventData.wdiRequest = WDI_JOIN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002341 wdiEventData.pEventData = pwdiJoinParams;
2342 wdiEventData.uEventDataSize = sizeof(*pwdiJoinParams);
2343 wdiEventData.pCBfnc = wdiJoinRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002344 wdiEventData.pUserData = pUserData;
2345
2346 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2347
2348}/*WDI_JoinReq*/
2349
2350/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002351 @brief WDI_ConfigBSSReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07002352 wishes to configure the newly acquired or in process of
2353 being acquired BSS to the HW . Upon the call of this API
2354 the WLAN DAL will pack and send a HAL Config BSS request
2355 message to the lower RIVA sub-system if DAL is in state
2356 STARTED.
2357
2358 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002359 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002360
2361 WDI_JoinReq must have been called.
2362
Jeff Johnsone7245742012-09-05 17:12:55 -07002363 @param wdiConfigBSSParams: the config BSS parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002364 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002365
Jeff Johnson295189b2012-06-20 16:38:30 -07002366 wdiConfigBSSRspCb: callback for passing back the
2367 response of the config BSS operation received from the
2368 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002369
Jeff Johnson295189b2012-06-20 16:38:30 -07002370 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002371 callback
2372
Jeff Johnson295189b2012-06-20 16:38:30 -07002373 @see WDI_JoinReq
2374 @return Result of the function call
2375*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002376WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002377WDI_ConfigBSSReq
2378(
2379 WDI_ConfigBSSReqParamsType* pwdiConfigBSSParams,
2380 WDI_ConfigBSSRspCb wdiConfigBSSRspCb,
2381 void* pUserData
2382)
2383{
2384 WDI_EventInfoType wdiEventData;
2385 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2386
2387 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002388 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002389 ------------------------------------------------------------------------*/
2390 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2391 {
2392 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2393 "WDI API call before module is initialized - Fail request");
2394
Jeff Johnsone7245742012-09-05 17:12:55 -07002395 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002396 }
2397
2398 /*------------------------------------------------------------------------
2399 Fill in Event data and post to the Main FSM
2400 ------------------------------------------------------------------------*/
2401 wdiEventData.wdiRequest = WDI_CONFIG_BSS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002402 wdiEventData.pEventData = pwdiConfigBSSParams;
2403 wdiEventData.uEventDataSize = sizeof(*pwdiConfigBSSParams);
2404 wdiEventData.pCBfnc = wdiConfigBSSRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002405 wdiEventData.pUserData = pUserData;
2406
2407 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2408
2409}/*WDI_ConfigBSSReq*/
2410
2411/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002412 @brief WDI_DelBSSReq will be called when the upper MAC is
Jeff Johnson295189b2012-06-20 16:38:30 -07002413 disassociating from the BSS and wishes to notify HW.
2414 Upon the call of this API the WLAN DAL will pack and
2415 send a HAL Del BSS request message to the lower RIVA
2416 sub-system if DAL is in state STARTED.
2417
2418 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002419 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002420
2421 WDI_ConfigBSSReq or WDI_PostAssocReq must have been called.
2422
Jeff Johnsone7245742012-09-05 17:12:55 -07002423 @param wdiDelBSSParams: the del BSS parameters as specified by
Jeff Johnson295189b2012-06-20 16:38:30 -07002424 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002425
Jeff Johnson295189b2012-06-20 16:38:30 -07002426 wdiDelBSSRspCb: callback for passing back the response
2427 of the del bss operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002428
Jeff Johnson295189b2012-06-20 16:38:30 -07002429 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002430 callback
2431
2432 @see WDI_ConfigBSSReq, WDI_PostAssocReq
Jeff Johnson295189b2012-06-20 16:38:30 -07002433 @return Result of the function call
2434*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002435WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002436WDI_DelBSSReq
2437(
2438 WDI_DelBSSReqParamsType* pwdiDelBSSParams,
2439 WDI_DelBSSRspCb wdiDelBSSRspCb,
2440 void* pUserData
2441)
2442{
2443 WDI_EventInfoType wdiEventData;
2444 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2445
2446 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002447 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002448 ------------------------------------------------------------------------*/
2449 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2450 {
2451 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2452 "WDI API call before module is initialized - Fail request");
2453
Jeff Johnsone7245742012-09-05 17:12:55 -07002454 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002455 }
2456
2457 /*------------------------------------------------------------------------
2458 Fill in Event data and post to the Main FSM
2459 ------------------------------------------------------------------------*/
2460 wdiEventData.wdiRequest = WDI_DEL_BSS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002461 wdiEventData.pEventData = pwdiDelBSSParams;
2462 wdiEventData.uEventDataSize = sizeof(*pwdiDelBSSParams);
2463 wdiEventData.pCBfnc = wdiDelBSSRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002464 wdiEventData.pUserData = pUserData;
2465
2466 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2467
2468}/*WDI_DelBSSReq*/
2469
2470/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002471 @brief WDI_PostAssocReq will be called when the upper MAC has
Jeff Johnson295189b2012-06-20 16:38:30 -07002472 associated to a BSS and wishes to configure HW for
2473 associated state. Upon the call of this API the WLAN DAL
2474 will pack and send a HAL Post Assoc request message to
2475 the lower RIVA sub-system if DAL is in state STARTED.
2476
2477 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002478 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002479
2480 WDI_JoinReq must have been called.
2481
2482 @param wdiPostAssocReqParams: the assoc parameters as specified
2483 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002484
Jeff Johnson295189b2012-06-20 16:38:30 -07002485 wdiPostAssocRspCb: callback for passing back the
2486 response of the post assoc operation received from the
2487 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002488
Jeff Johnson295189b2012-06-20 16:38:30 -07002489 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002490 callback
2491
Jeff Johnson295189b2012-06-20 16:38:30 -07002492 @see WDI_JoinReq
2493 @return Result of the function call
2494*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002495WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002496WDI_PostAssocReq
2497(
2498 WDI_PostAssocReqParamsType* pwdiPostAssocReqParams,
2499 WDI_PostAssocRspCb wdiPostAssocRspCb,
2500 void* pUserData
2501)
2502{
2503 WDI_EventInfoType wdiEventData;
2504 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2505
2506 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002507 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002508 ------------------------------------------------------------------------*/
2509 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2510 {
2511 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2512 "WDI API call before module is initialized - Fail request");
2513
Jeff Johnsone7245742012-09-05 17:12:55 -07002514 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002515 }
2516
2517 /*------------------------------------------------------------------------
2518 Fill in Event data and post to the Main FSM
2519 ------------------------------------------------------------------------*/
2520 wdiEventData.wdiRequest = WDI_POST_ASSOC_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002521 wdiEventData.pEventData = pwdiPostAssocReqParams;
2522 wdiEventData.uEventDataSize = sizeof(*pwdiPostAssocReqParams);
2523 wdiEventData.pCBfnc = wdiPostAssocRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002524 wdiEventData.pUserData = pUserData;
2525
2526 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2527
2528}/*WDI_PostAssocReq*/
2529
2530/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002531 @brief WDI_DelSTAReq will be called when the upper MAC when an
Jeff Johnson295189b2012-06-20 16:38:30 -07002532 association with another STA has ended and the station
2533 must be deleted from HW. Upon the call of this API the
2534 WLAN DAL will pack and send a HAL Del STA request
2535 message to the lower RIVA sub-system if DAL is in state
2536 STARTED.
2537
2538 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002539 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002540
2541 WDI_PostAssocReq must have been called.
2542
Jeff Johnsone7245742012-09-05 17:12:55 -07002543 @param wdiDelSTAParams: the Del STA parameters as specified by
Jeff Johnson295189b2012-06-20 16:38:30 -07002544 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002545
Jeff Johnson295189b2012-06-20 16:38:30 -07002546 wdiDelSTARspCb: callback for passing back the response
2547 of the del STA operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002548
Jeff Johnson295189b2012-06-20 16:38:30 -07002549 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002550 callback
2551
Jeff Johnson295189b2012-06-20 16:38:30 -07002552 @see WDI_PostAssocReq
2553 @return Result of the function call
2554*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002555WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002556WDI_DelSTAReq
2557(
2558 WDI_DelSTAReqParamsType* pwdiDelSTAParams,
2559 WDI_DelSTARspCb wdiDelSTARspCb,
2560 void* pUserData
2561)
2562{
2563 WDI_EventInfoType wdiEventData;
2564 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2565
2566 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002567 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002568 ------------------------------------------------------------------------*/
2569 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2570 {
2571 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2572 "WDI API call before module is initialized - Fail request");
2573
Jeff Johnsone7245742012-09-05 17:12:55 -07002574 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002575 }
2576
2577 /*------------------------------------------------------------------------
2578 Fill in Event data and post to the Main FSM
2579 ------------------------------------------------------------------------*/
2580 wdiEventData.wdiRequest = WDI_DEL_STA_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002581 wdiEventData.pEventData = pwdiDelSTAParams;
2582 wdiEventData.uEventDataSize = sizeof(*pwdiDelSTAParams);
2583 wdiEventData.pCBfnc = wdiDelSTARspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002584 wdiEventData.pUserData = pUserData;
2585
2586 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2587
2588}/*WDI_DelSTAReq*/
2589
Jeff Johnsone7245742012-09-05 17:12:55 -07002590/*========================================================================
2591
Jeff Johnson295189b2012-06-20 16:38:30 -07002592 SECURITY APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07002593
Jeff Johnson295189b2012-06-20 16:38:30 -07002594==========================================================================*/
2595
2596/**
2597 @brief WDI_SetBSSKeyReq will be called when the upper MAC wants to
2598 install a BSS encryption key on the HW. Upon the call of this
2599 API the WLAN DAL will pack and send a Set BSS Key request
2600 message to the lower RIVA sub-system if DAL is in state
2601 STARTED.
2602
2603 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002604 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002605
2606 WDI_PostAssocReq must have been called.
2607
Jeff Johnsone7245742012-09-05 17:12:55 -07002608 @param wdiSetBSSKeyParams: the BSS Key set parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002609 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002610
Jeff Johnson295189b2012-06-20 16:38:30 -07002611 wdiSetBSSKeyRspCb: callback for passing back the
2612 response of the set BSS Key operation received from the
2613 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002614
Jeff Johnson295189b2012-06-20 16:38:30 -07002615 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002616 callback
2617
Jeff Johnson295189b2012-06-20 16:38:30 -07002618 @see WDI_PostAssocReq
2619 @return Result of the function call
2620*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002621WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002622WDI_SetBSSKeyReq
2623(
2624 WDI_SetBSSKeyReqParamsType* pwdiSetBSSKeyParams,
2625 WDI_SetBSSKeyRspCb wdiSetBSSKeyRspCb,
2626 void* pUserData
2627)
2628{
2629 WDI_EventInfoType wdiEventData;
2630 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2631
2632 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002633 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002634 ------------------------------------------------------------------------*/
2635 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2636 {
2637 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2638 "WDI API call before module is initialized - Fail request");
2639
Jeff Johnsone7245742012-09-05 17:12:55 -07002640 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002641 }
2642
2643 /*------------------------------------------------------------------------
2644 Fill in Event data and post to the Main FSM
2645 ------------------------------------------------------------------------*/
2646 wdiEventData.wdiRequest = WDI_SET_BSS_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002647 wdiEventData.pEventData = pwdiSetBSSKeyParams;
2648 wdiEventData.uEventDataSize = sizeof(*pwdiSetBSSKeyParams);
2649 wdiEventData.pCBfnc = wdiSetBSSKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002650 wdiEventData.pUserData = pUserData;
2651
2652 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2653
2654}/*WDI_SetBSSKeyReq*/
2655
2656/**
2657 @brief WDI_RemoveBSSKeyReq will be called when the upper MAC wants to
2658 uninstall a BSS key from HW. Upon the call of this API the
2659 WLAN DAL will pack and send a HAL Remove BSS Key request
2660 message to the lower RIVA sub-system if DAL is in state
2661 STARTED.
2662
2663 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002664 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002665
2666 WDI_SetBSSKeyReq must have been called.
2667
Jeff Johnsone7245742012-09-05 17:12:55 -07002668 @param wdiRemoveBSSKeyParams: the remove BSS key parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002669 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002670
Jeff Johnson295189b2012-06-20 16:38:30 -07002671 wdiRemoveBSSKeyRspCb: callback for passing back the
2672 response of the remove BSS key operation received from
2673 the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002674
Jeff Johnson295189b2012-06-20 16:38:30 -07002675 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002676 callback
2677
Jeff Johnson295189b2012-06-20 16:38:30 -07002678 @see WDI_SetBSSKeyReq
2679 @return Result of the function call
2680*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002681WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002682WDI_RemoveBSSKeyReq
2683(
2684 WDI_RemoveBSSKeyReqParamsType* pwdiRemoveBSSKeyParams,
2685 WDI_RemoveBSSKeyRspCb wdiRemoveBSSKeyRspCb,
2686 void* pUserData
2687)
2688{
2689 WDI_EventInfoType wdiEventData;
2690 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2691
2692 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002693 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002694 ------------------------------------------------------------------------*/
2695 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2696 {
2697 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2698 "WDI API call before module is initialized - Fail request");
2699
Jeff Johnsone7245742012-09-05 17:12:55 -07002700 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002701 }
2702
2703 /*------------------------------------------------------------------------
2704 Fill in Event data and post to the Main FSM
2705 ------------------------------------------------------------------------*/
2706 wdiEventData.wdiRequest = WDI_RMV_BSS_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002707 wdiEventData.pEventData = pwdiRemoveBSSKeyParams;
2708 wdiEventData.uEventDataSize = sizeof(*pwdiRemoveBSSKeyParams);
2709 wdiEventData.pCBfnc = wdiRemoveBSSKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002710 wdiEventData.pUserData = pUserData;
2711
2712 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2713
2714}/*WDI_RemoveBSSKeyReq*/
2715
2716
2717/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002718 @brief WDI_SetSTAKeyReq will be called when the upper MAC is
Jeff Johnson295189b2012-06-20 16:38:30 -07002719 ready to install a STA(ast) encryption key in HW. Upon
2720 the call of this API the WLAN DAL will pack and send a
2721 HAL Set STA Key request message to the lower RIVA
2722 sub-system if DAL is in state STARTED.
2723
2724 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002725 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002726
2727 WDI_PostAssocReq must have been called.
2728
Jeff Johnsone7245742012-09-05 17:12:55 -07002729 @param wdiSetSTAKeyParams: the set STA key parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002730 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002731
Jeff Johnson295189b2012-06-20 16:38:30 -07002732 wdiSetSTAKeyRspCb: callback for passing back the
2733 response of the set STA key operation received from the
2734 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002735
Jeff Johnson295189b2012-06-20 16:38:30 -07002736 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002737 callback
2738
Jeff Johnson295189b2012-06-20 16:38:30 -07002739 @see WDI_PostAssocReq
2740 @return Result of the function call
2741*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002742WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002743WDI_SetSTAKeyReq
2744(
2745 WDI_SetSTAKeyReqParamsType* pwdiSetSTAKeyParams,
2746 WDI_SetSTAKeyRspCb wdiSetSTAKeyRspCb,
2747 void* pUserData
2748)
2749{
2750 WDI_EventInfoType wdiEventData;
2751 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2752
2753 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002754 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002755 ------------------------------------------------------------------------*/
2756 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2757 {
2758 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2759 "WDI API call before module is initialized - Fail request");
2760
Jeff Johnsone7245742012-09-05 17:12:55 -07002761 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002762 }
2763
2764 /*------------------------------------------------------------------------
2765 Fill in Event data and post to the Main FSM
2766 ------------------------------------------------------------------------*/
2767 wdiEventData.wdiRequest = WDI_SET_STA_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002768 wdiEventData.pEventData = pwdiSetSTAKeyParams;
2769 wdiEventData.uEventDataSize = sizeof(*pwdiSetSTAKeyParams);
2770 wdiEventData.pCBfnc = wdiSetSTAKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002771 wdiEventData.pUserData = pUserData;
2772
2773 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2774
2775}/*WDI_SetSTAKeyReq*/
2776
2777
2778/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002779 @brief WDI_RemoveSTAKeyReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07002780 wants to uninstall a previously set STA key in HW. Upon
2781 the call of this API the WLAN DAL will pack and send a
2782 HAL Remove STA Key request message to the lower RIVA
2783 sub-system if DAL is in state STARTED.
2784
2785 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002786 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002787
2788 WDI_SetSTAKeyReq must have been called.
2789
Jeff Johnsone7245742012-09-05 17:12:55 -07002790 @param wdiRemoveSTAKeyParams: the remove STA key parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002791 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002792
Jeff Johnson295189b2012-06-20 16:38:30 -07002793 wdiRemoveSTAKeyRspCb: callback for passing back the
2794 response of the remove STA key operation received from
2795 the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002796
Jeff Johnson295189b2012-06-20 16:38:30 -07002797 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002798 callback
2799
Jeff Johnson295189b2012-06-20 16:38:30 -07002800 @see WDI_SetSTAKeyReq
2801 @return Result of the function call
2802*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002803WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002804WDI_RemoveSTAKeyReq
2805(
2806 WDI_RemoveSTAKeyReqParamsType* pwdiRemoveSTAKeyParams,
2807 WDI_RemoveSTAKeyRspCb wdiRemoveSTAKeyRspCb,
2808 void* pUserData
2809)
2810{
2811 WDI_EventInfoType wdiEventData;
2812 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2813
2814 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002815 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002816 ------------------------------------------------------------------------*/
2817 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2818 {
2819 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2820 "WDI API call before module is initialized - Fail request");
2821
Jeff Johnsone7245742012-09-05 17:12:55 -07002822 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002823 }
2824
2825 /*------------------------------------------------------------------------
2826 Fill in Event data and post to the Main FSM
2827 ------------------------------------------------------------------------*/
2828 wdiEventData.wdiRequest = WDI_RMV_STA_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002829 wdiEventData.pEventData = pwdiRemoveSTAKeyParams;
2830 wdiEventData.uEventDataSize = sizeof(*pwdiRemoveSTAKeyParams);
2831 wdiEventData.pCBfnc = wdiRemoveSTAKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002832 wdiEventData.pUserData = pUserData;
2833
2834 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2835
2836}/*WDI_RemoveSTAKeyReq*/
2837
2838
2839/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002840 @brief WDI_SetSTABcastKeyReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07002841 wants to install a STA Bcast encryption key on the HW.
2842 Upon the call of this API the WLAN DAL will pack and
2843 send a HAL Start request message to the lower RIVA
2844 sub-system if DAL is in state STARTED.
2845
2846 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002847 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002848
2849 WDI_PostAssocReq must have been called.
2850
Jeff Johnsone7245742012-09-05 17:12:55 -07002851 @param pwdiSetSTABcastKeyParams: the BSS Key set parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002852 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002853
Jeff Johnson295189b2012-06-20 16:38:30 -07002854 wdiSetSTABcastKeyRspCb: callback for passing back the
2855 response of the set BSS Key operation received from the
2856 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002857
Jeff Johnson295189b2012-06-20 16:38:30 -07002858 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002859 callback
2860
Jeff Johnson295189b2012-06-20 16:38:30 -07002861 @see WDI_PostAssocReq
2862 @return Result of the function call
2863*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002864WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002865WDI_SetSTABcastKeyReq
2866(
2867 WDI_SetSTAKeyReqParamsType* pwdiSetSTABcastKeyParams,
2868 WDI_SetSTAKeyRspCb wdiSetSTABcastKeyRspCb,
2869 void* pUserData
2870)
2871
2872{
2873 WDI_EventInfoType wdiEventData;
2874 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2875
2876 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002877 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002878 ------------------------------------------------------------------------*/
2879 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2880 {
2881 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2882 "WDI API call before module is initialized - Fail request");
2883
Jeff Johnsone7245742012-09-05 17:12:55 -07002884 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002885 }
2886
2887 /*------------------------------------------------------------------------
2888 Fill in Event data and post to the Main FSM
2889 ------------------------------------------------------------------------*/
2890 wdiEventData.wdiRequest = WDI_SET_STA_BCAST_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002891 wdiEventData.pEventData = pwdiSetSTABcastKeyParams;
2892 wdiEventData.uEventDataSize = sizeof(*pwdiSetSTABcastKeyParams);
2893 wdiEventData.pCBfnc = wdiSetSTABcastKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002894 wdiEventData.pUserData = pUserData;
2895
2896 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2897
2898}/*WDI_SetSTABcastKeyReq*/
2899
2900/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002901 @brief WDI_RemoveSTABcastKeyReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07002902 MAC wants to uninstall a STA Bcast key from HW. Upon the
2903 call of this API the WLAN DAL will pack and send a HAL
2904 Remove STA Bcast Key request message to the lower RIVA
2905 sub-system if DAL is in state STARTED.
2906
2907 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002908 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002909
2910 WDI_SetSTABcastKeyReq must have been called.
2911
Jeff Johnsone7245742012-09-05 17:12:55 -07002912 @param pwdiRemoveSTABcastKeyParams: the remove BSS key
Jeff Johnson295189b2012-06-20 16:38:30 -07002913 parameters as specified by the Device
2914 Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002915
Jeff Johnson295189b2012-06-20 16:38:30 -07002916 wdiRemoveSTABcastKeyRspCb: callback for passing back the
2917 response of the remove STA Bcast key operation received
2918 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002919
Jeff Johnson295189b2012-06-20 16:38:30 -07002920 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002921 callback
2922
Jeff Johnson295189b2012-06-20 16:38:30 -07002923 @see WDI_SetSTABcastKeyReq
2924 @return Result of the function call
2925*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002926WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002927WDI_RemoveSTABcastKeyReq
2928(
2929 WDI_RemoveSTAKeyReqParamsType* pwdiRemoveSTABcastKeyParams,
2930 WDI_RemoveSTAKeyRspCb wdiRemoveSTABcastKeyRspCb,
2931 void* pUserData
2932)
2933{
2934 WDI_EventInfoType wdiEventData;
2935 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2936
2937 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002938 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002939 ------------------------------------------------------------------------*/
2940 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2941 {
2942 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2943 "WDI API call before module is initialized - Fail request");
2944
Jeff Johnsone7245742012-09-05 17:12:55 -07002945 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002946 }
2947
2948 /*------------------------------------------------------------------------
2949 Fill in Event data and post to the Main FSM
2950 ------------------------------------------------------------------------*/
2951 wdiEventData.wdiRequest = WDI_RMV_STA_BCAST_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002952 wdiEventData.pEventData = pwdiRemoveSTABcastKeyParams;
2953 wdiEventData.uEventDataSize = sizeof(*pwdiRemoveSTABcastKeyParams);
2954 wdiEventData.pCBfnc = wdiRemoveSTABcastKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002955 wdiEventData.pUserData = pUserData;
2956
2957 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2958
2959}/*WDI_RemoveSTABcastKeyReq*/
2960
2961/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002962 @brief WDI_SetMaxTxPowerReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07002963 MAC wants to set Max Tx Power to HW. Upon the
2964 call of this API the WLAN DAL will pack and send a HAL
2965 Remove STA Bcast Key request message to the lower RIVA
2966 sub-system if DAL is in state STARTED.
2967
2968 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002969 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002970
2971 WDI_SetSTABcastKeyReq must have been called.
2972
Jeff Johnsone7245742012-09-05 17:12:55 -07002973 @param pwdiRemoveSTABcastKeyParams: the remove BSS key
Jeff Johnson295189b2012-06-20 16:38:30 -07002974 parameters as specified by the Device
2975 Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002976
Jeff Johnson295189b2012-06-20 16:38:30 -07002977 wdiRemoveSTABcastKeyRspCb: callback for passing back the
2978 response of the remove STA Bcast key operation received
2979 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002980
Jeff Johnson295189b2012-06-20 16:38:30 -07002981 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002982 callback
2983
Jeff Johnson295189b2012-06-20 16:38:30 -07002984 @see WDI_SetMaxTxPowerReq
2985 @return Result of the function call
2986*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002987WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002988WDI_SetMaxTxPowerReq
2989(
2990 WDI_SetMaxTxPowerParamsType* pwdiSetMaxTxPowerParams,
2991 WDA_SetMaxTxPowerRspCb wdiReqStatusCb,
2992 void* pUserData
2993)
2994{
2995 WDI_EventInfoType wdiEventData;
2996 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2997
2998 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002999 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003000 ------------------------------------------------------------------------*/
3001 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3002 {
3003 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3004 "WDI API call before module is initialized - Fail request");
3005
Jeff Johnsone7245742012-09-05 17:12:55 -07003006 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003007 }
3008
3009 /*------------------------------------------------------------------------
3010 Fill in Event data and post to the Main FSM
3011 ------------------------------------------------------------------------*/
3012 wdiEventData.wdiRequest = WDI_SET_MAX_TX_POWER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003013 wdiEventData.pEventData = pwdiSetMaxTxPowerParams;
3014 wdiEventData.uEventDataSize = sizeof(*pwdiSetMaxTxPowerParams);
3015 wdiEventData.pCBfnc = wdiReqStatusCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003016 wdiEventData.pUserData = pUserData;
3017
3018 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3019}
3020
schang86c22c42013-03-13 18:41:24 -07003021/**
Arif Hussaina5ebce02013-08-09 15:09:58 -07003022 @brief WDI_SetMaxTxPowerPerBandReq will be called when the upper
3023 MAC wants to set Max Tx Power to HW for specific band.
3024
3025 @param pwdiSetMaxTxPowerPerBandParams: Tx Power Information
3026
3027 wdiReqStatusCb: callback for passing back the
3028 response msg from the device
3029
3030 pUserData: user data will be passed back with the
3031 callback
3032
3033 @see WDI_SetMaxTxPowerPerBandReq
3034 @return Result of the function call
3035*/
3036WDI_Status
3037WDI_SetMaxTxPowerPerBandReq
3038(
3039 WDI_SetMaxTxPowerPerBandParamsType* pwdiSetMaxTxPowerPerBandParams,
3040 WDA_SetMaxTxPowerPerBandRspCb wdiReqStatusCb,
3041 void* pUserData
3042)
3043{
3044 WDI_EventInfoType wdiEventData;
3045 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3046
3047 /*------------------------------------------------------------------------
3048 Sanity Check
3049 ------------------------------------------------------------------------*/
3050 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3051 {
3052 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3053 "WDI API call before module is initialized - Fail request");
3054
3055 return WDI_STATUS_E_NOT_ALLOWED;
3056 }
3057
3058 /*------------------------------------------------------------------------
3059 Fill in Event data and post to the Main FSM
3060 ------------------------------------------------------------------------*/
3061 wdiEventData.wdiRequest = WDI_SET_MAX_TX_POWER_PER_BAND_REQ;
3062 wdiEventData.pEventData = pwdiSetMaxTxPowerPerBandParams;
3063 wdiEventData.uEventDataSize = sizeof(*pwdiSetMaxTxPowerPerBandParams);
3064 wdiEventData.pCBfnc = wdiReqStatusCb;
3065 wdiEventData.pUserData = pUserData;
3066
3067 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3068}
3069
3070/**
schang86c22c42013-03-13 18:41:24 -07003071 @brief WDI_SetTxPowerReq will be called when the upper
3072 MAC wants to set Tx Power to HW.
3073 In state BUSY this request will be queued. Request won't
3074 be allowed in any other state.
3075
3076
3077 @param pwdiSetTxPowerParams: set TS Power parameters
3078 BSSID and target TX Power with dbm included
3079
3080 wdiReqStatusCb: callback for passing back the response
3081
3082 pUserData: user data will be passed back with the
3083 callback
3084
3085 @return Result of the function call
3086*/
3087WDI_Status
3088WDI_SetTxPowerReq
3089(
3090 WDI_SetTxPowerParamsType* pwdiSetTxPowerParams,
3091 WDA_SetTxPowerRspCb wdiReqStatusCb,
3092 void* pUserData
3093)
3094{
3095 WDI_EventInfoType wdiEventData;
3096 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3097
3098 /*------------------------------------------------------------------------
3099 Sanity Check
3100 ------------------------------------------------------------------------*/
3101 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3102 {
3103 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3104 "WDI API call before module is initialized - Fail request");
3105
3106 return WDI_STATUS_E_NOT_ALLOWED;
3107 }
3108
3109 /*------------------------------------------------------------------------
3110 Fill in Event data and post to the Main FSM
3111 ------------------------------------------------------------------------*/
3112 wdiEventData.wdiRequest = WDI_SET_TX_POWER_REQ;
3113 wdiEventData.pEventData = pwdiSetTxPowerParams;
3114 wdiEventData.uEventDataSize = sizeof(*pwdiSetTxPowerParams);
3115 wdiEventData.pCBfnc = wdiReqStatusCb;
3116 wdiEventData.pUserData = pUserData;
3117
3118 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3119}
3120
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -08003121#ifdef FEATURE_WLAN_ESE
Jeff Johnson295189b2012-06-20 16:38:30 -07003122WDI_Status
3123WDI_TSMStatsReq
3124(
3125 WDI_TSMStatsReqParamsType* pwdiTsmReqParams,
3126 WDI_TsmRspCb wdiReqStatusCb,
3127 void* pUserData
3128)
3129{
3130 WDI_EventInfoType wdiEventData;
3131 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Jeff Johnson295189b2012-06-20 16:38:30 -07003132 /*------------------------------------------------------------------------
3133 Sanity Check
3134 ------------------------------------------------------------------------*/
3135 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3136 {
3137 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3138 "WDI API call before module is initialized - Fail request");
3139
3140 return WDI_STATUS_E_NOT_ALLOWED;
3141 }
3142
3143 /*------------------------------------------------------------------------
3144 Fill in Event data and post to the Main FSM
3145 ------------------------------------------------------------------------*/
3146 wdiEventData.wdiRequest = WDI_TSM_STATS_REQ;
3147 wdiEventData.pEventData = pwdiTsmReqParams;
3148 wdiEventData.uEventDataSize = sizeof(*pwdiTsmReqParams);
3149 wdiEventData.pCBfnc = wdiReqStatusCb;
3150 wdiEventData.pUserData = pUserData;
3151
3152 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3153
3154}
3155#endif
3156
3157/*========================================================================
3158
3159 QoS and BA APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07003160
Jeff Johnson295189b2012-06-20 16:38:30 -07003161==========================================================================*/
3162
3163/**
3164 @brief WDI_AddTSReq will be called when the upper MAC to inform
3165 the device of a successful add TSpec negotiation. HW
3166 needs to receive the TSpec Info from the UMAC in order
3167 to configure properly the QoS data traffic. Upon the
3168 call of this API the WLAN DAL will pack and send a HAL
3169 Add TS request message to the lower RIVA sub-system if
3170 DAL is in state STARTED.
3171
3172 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003173 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003174
3175 WDI_PostAssocReq must have been called.
3176
3177 @param wdiAddTsReqParams: the add TS parameters as specified by
3178 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003179
Jeff Johnson295189b2012-06-20 16:38:30 -07003180 wdiAddTsRspCb: callback for passing back the response of
3181 the add TS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003182
Jeff Johnson295189b2012-06-20 16:38:30 -07003183 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003184 callback
3185
Jeff Johnson295189b2012-06-20 16:38:30 -07003186 @see WDI_PostAssocReq
3187 @return Result of the function call
3188*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003189WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003190WDI_AddTSReq
3191(
3192 WDI_AddTSReqParamsType* pwdiAddTsReqParams,
3193 WDI_AddTsRspCb wdiAddTsRspCb,
3194 void* pUserData
3195)
3196{
3197 WDI_EventInfoType wdiEventData;
3198 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3199
3200 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003201 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003202 ------------------------------------------------------------------------*/
3203 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3204 {
3205 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3206 "WDI API call before module is initialized - Fail request");
3207
Jeff Johnsone7245742012-09-05 17:12:55 -07003208 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003209 }
3210
3211 /*------------------------------------------------------------------------
3212 Fill in Event data and post to the Main FSM
3213 ------------------------------------------------------------------------*/
3214 wdiEventData.wdiRequest = WDI_ADD_TS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003215 wdiEventData.pEventData = pwdiAddTsReqParams;
3216 wdiEventData.uEventDataSize = sizeof(*pwdiAddTsReqParams);
3217 wdiEventData.pCBfnc = wdiAddTsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003218 wdiEventData.pUserData = pUserData;
3219
3220 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3221
3222}/*WDI_AddTSReq*/
3223
3224
3225
3226/**
3227 @brief WDI_DelTSReq will be called when the upper MAC has ended
3228 admission on a specific AC. This is to inform HW that
3229 QoS traffic parameters must be rest. Upon the call of
3230 this API the WLAN DAL will pack and send a HAL Del TS
3231 request message to the lower RIVA sub-system if DAL is
3232 in state STARTED.
3233
3234 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003235 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003236
3237 WDI_AddTSReq must have been called.
3238
3239 @param wdiDelTsReqParams: the del TS parameters as specified by
3240 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003241
Jeff Johnson295189b2012-06-20 16:38:30 -07003242 wdiDelTsRspCb: callback for passing back the response of
3243 the del TS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003244
Jeff Johnson295189b2012-06-20 16:38:30 -07003245 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003246 callback
3247
Jeff Johnson295189b2012-06-20 16:38:30 -07003248 @see WDI_AddTSReq
3249 @return Result of the function call
3250*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003251WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003252WDI_DelTSReq
3253(
3254 WDI_DelTSReqParamsType* pwdiDelTsReqParams,
3255 WDI_DelTsRspCb wdiDelTsRspCb,
3256 void* pUserData
3257)
3258{
3259 WDI_EventInfoType wdiEventData;
3260 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3261
3262 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003263 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003264 ------------------------------------------------------------------------*/
3265 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3266 {
3267 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3268 "WDI API call before module is initialized - Fail request");
3269
Jeff Johnsone7245742012-09-05 17:12:55 -07003270 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003271 }
3272
3273 /*------------------------------------------------------------------------
3274 Fill in Event data and post to the Main FSM
3275 ------------------------------------------------------------------------*/
3276 wdiEventData.wdiRequest = WDI_DEL_TS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003277 wdiEventData.pEventData = pwdiDelTsReqParams;
3278 wdiEventData.uEventDataSize = sizeof(*pwdiDelTsReqParams);
3279 wdiEventData.pCBfnc = wdiDelTsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003280 wdiEventData.pUserData = pUserData;
3281
3282 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3283
3284}/*WDI_DelTSReq*/
3285
3286
3287
3288/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003289 @brief WDI_UpdateEDCAParams will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07003290 wishes to update the EDCA parameters used by HW for QoS
3291 data traffic. Upon the call of this API the WLAN DAL
3292 will pack and send a HAL Update EDCA Params request
3293 message to the lower RIVA sub-system if DAL is in state
3294 STARTED.
3295
3296 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003297 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003298
3299 WDI_PostAssocReq must have been called.
3300
Jeff Johnsone7245742012-09-05 17:12:55 -07003301 @param wdiUpdateEDCAParams: the start parameters as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07003302 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003303
Jeff Johnson295189b2012-06-20 16:38:30 -07003304 wdiUpdateEDCAParamsRspCb: callback for passing back the
3305 response of the start operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003306
Jeff Johnson295189b2012-06-20 16:38:30 -07003307 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003308 callback
3309
Jeff Johnson295189b2012-06-20 16:38:30 -07003310 @see WDI_PostAssocReq
3311 @return Result of the function call
3312*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003313WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003314WDI_UpdateEDCAParams
3315(
3316 WDI_UpdateEDCAParamsType* pwdiUpdateEDCAParams,
3317 WDI_UpdateEDCAParamsRspCb wdiUpdateEDCAParamsRspCb,
3318 void* pUserData
3319)
3320{
3321 WDI_EventInfoType wdiEventData;
3322 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3323
3324 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003325 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003326 ------------------------------------------------------------------------*/
3327 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3328 {
3329 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3330 "WDI API call before module is initialized - Fail request");
3331
Jeff Johnsone7245742012-09-05 17:12:55 -07003332 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003333 }
3334
3335 /*------------------------------------------------------------------------
3336 Fill in Event data and post to the Main FSM
3337 ------------------------------------------------------------------------*/
3338 wdiEventData.wdiRequest = WDI_UPD_EDCA_PRMS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003339 wdiEventData.pEventData = pwdiUpdateEDCAParams;
3340 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateEDCAParams);
3341 wdiEventData.pCBfnc = wdiUpdateEDCAParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003342 wdiEventData.pUserData = pUserData;
3343
3344 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3345
3346}/*WDI_UpdateEDCAParams*/
3347
3348
3349/**
3350 @brief WDI_AddBASessionReq will be called when the upper MAC has setup
3351 successfully a BA session and needs to notify the HW for
3352 the appropriate settings to take place. Upon the call of
3353 this API the WLAN DAL will pack and send a HAL Add BA
3354 request message to the lower RIVA sub-system if DAL is
3355 in state STARTED.
3356
3357 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003358 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003359
3360 WDI_PostAssocReq must have been called.
3361
3362 @param wdiAddBAReqParams: the add BA parameters as specified by
3363 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003364
Jeff Johnson295189b2012-06-20 16:38:30 -07003365 wdiAddBARspCb: callback for passing back the response of
3366 the add BA operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003367
Jeff Johnson295189b2012-06-20 16:38:30 -07003368 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003369 callback
3370
Jeff Johnson295189b2012-06-20 16:38:30 -07003371 @see WDI_PostAssocReq
3372 @return Result of the function call
3373*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003374WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003375WDI_AddBASessionReq
3376(
3377 WDI_AddBASessionReqParamsType* pwdiAddBASessionReqParams,
3378 WDI_AddBASessionRspCb wdiAddBASessionRspCb,
3379 void* pUserData
3380)
3381{
3382 WDI_EventInfoType wdiEventData;
3383 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3384
3385 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003386 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003387 ------------------------------------------------------------------------*/
3388 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3389 {
3390 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3391 "WDI API call before module is initialized - Fail request");
3392
Jeff Johnsone7245742012-09-05 17:12:55 -07003393 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003394 }
3395
3396 /*------------------------------------------------------------------------
3397 Fill in Event data and post to the Main FSM
3398 ------------------------------------------------------------------------*/
3399 wdiEventData.wdiRequest = WDI_ADD_BA_SESSION_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003400 wdiEventData.pEventData = pwdiAddBASessionReqParams;
3401 wdiEventData.uEventDataSize = sizeof(*pwdiAddBASessionReqParams);
3402 wdiEventData.pCBfnc = wdiAddBASessionRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003403 wdiEventData.pUserData = pUserData;
3404
3405 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3406
3407}/*WDI_AddBASessionReq*/
3408
3409/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003410 @brief WDI_DelBAReq will be called when the upper MAC wants to
Jeff Johnson295189b2012-06-20 16:38:30 -07003411 inform HW that it has deleted a previously created BA
3412 session. Upon the call of this API the WLAN DAL will
3413 pack and send a HAL Del BA request message to the lower
3414 RIVA sub-system if DAL is in state STARTED.
3415
3416 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003417 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003418
3419 WDI_AddBAReq must have been called.
3420
3421 @param wdiDelBAReqParams: the del BA parameters as specified by
3422 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003423
Jeff Johnson295189b2012-06-20 16:38:30 -07003424 wdiDelBARspCb: callback for passing back the response of
3425 the del BA operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003426
Jeff Johnson295189b2012-06-20 16:38:30 -07003427 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003428 callback
3429
Jeff Johnson295189b2012-06-20 16:38:30 -07003430 @see WDI_AddBAReq
3431 @return Result of the function call
3432*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003433WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003434WDI_DelBAReq
3435(
3436 WDI_DelBAReqParamsType* pwdiDelBAReqParams,
3437 WDI_DelBARspCb wdiDelBARspCb,
3438 void* pUserData
3439)
3440{
3441 WDI_EventInfoType wdiEventData;
3442 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3443
3444 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003445 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003446 ------------------------------------------------------------------------*/
3447 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3448 {
3449 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3450 "WDI API call before module is initialized - Fail request");
3451
Jeff Johnsone7245742012-09-05 17:12:55 -07003452 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003453 }
3454
3455 /*------------------------------------------------------------------------
3456 Fill in Event data and post to the Main FSM
3457 ------------------------------------------------------------------------*/
3458 wdiEventData.wdiRequest = WDI_DEL_BA_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003459 wdiEventData.pEventData = pwdiDelBAReqParams;
3460 wdiEventData.uEventDataSize = sizeof(*pwdiDelBAReqParams);
3461 wdiEventData.pCBfnc = wdiDelBARspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003462 wdiEventData.pUserData = pUserData;
3463
3464 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3465
3466}/*WDI_DelBAReq*/
3467
Jeff Johnsone7245742012-09-05 17:12:55 -07003468/*========================================================================
3469
Jeff Johnson295189b2012-06-20 16:38:30 -07003470 Power Save APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07003471
Jeff Johnson295189b2012-06-20 16:38:30 -07003472==========================================================================*/
3473
3474/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003475 @brief WDI_SetPwrSaveCfgReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07003476 wants to set the power save related configurations of
3477 the WLAN Device. Upon the call of this API the WLAN DAL
3478 will pack and send a HAL Update CFG request message to
3479 the lower RIVA sub-system if DAL is in state STARTED.
3480
3481 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003482 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003483
3484 WDI_Start must have been called.
3485
Jeff Johnsone7245742012-09-05 17:12:55 -07003486 @param pwdiPowerSaveCfg: the power save cfg parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07003487 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003488
Jeff Johnson295189b2012-06-20 16:38:30 -07003489 wdiSetPwrSaveCfgCb: callback for passing back the
3490 response of the set power save cfg operation received
3491 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003492
Jeff Johnson295189b2012-06-20 16:38:30 -07003493 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003494 callback
3495
Jeff Johnson295189b2012-06-20 16:38:30 -07003496 @see WDI_Start
Jeff Johnsone7245742012-09-05 17:12:55 -07003497 @return Result of the function call
3498*/
3499WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003500WDI_SetPwrSaveCfgReq
3501(
3502 WDI_UpdateCfgReqParamsType* pwdiPowerSaveCfg,
3503 WDI_SetPwrSaveCfgCb wdiSetPwrSaveCfgCb,
3504 void* pUserData
3505)
3506{
3507 WDI_EventInfoType wdiEventData;
3508 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3509
3510 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003511 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003512 ------------------------------------------------------------------------*/
3513 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3514 {
3515 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3516 "WDI API call before module is initialized - Fail request");
3517
Jeff Johnsone7245742012-09-05 17:12:55 -07003518 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003519 }
3520
3521 /*------------------------------------------------------------------------
3522 Fill in Event data and post to the Main FSM
3523 ------------------------------------------------------------------------*/
3524 wdiEventData.wdiRequest = WDI_UPDATE_CFG_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003525 wdiEventData.pEventData = pwdiPowerSaveCfg;
3526 wdiEventData.uEventDataSize = sizeof(*pwdiPowerSaveCfg);
3527 wdiEventData.pCBfnc = wdiSetPwrSaveCfgCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003528 wdiEventData.pUserData = pUserData;
3529
3530 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3531
3532}/*WDI_SetPwrSaveCfgReq*/
3533
3534/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003535 @brief WDI_EnterImpsReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07003536 request the device to get into IMPS power state. Upon
3537 the call of this API the WLAN DAL will send a HAL Enter
3538 IMPS request message to the lower RIVA sub-system if DAL
3539 is in state STARTED.
3540
3541 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003542 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003543
Jeff Johnsone7245742012-09-05 17:12:55 -07003544
3545 @param wdiEnterImpsRspCb: callback for passing back the
Jeff Johnson295189b2012-06-20 16:38:30 -07003546 response of the Enter IMPS operation received from the
3547 device
Jeff Johnsone7245742012-09-05 17:12:55 -07003548
Jeff Johnson295189b2012-06-20 16:38:30 -07003549 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003550 callback
3551
Jeff Johnson295189b2012-06-20 16:38:30 -07003552 @see WDI_Start
3553 @return Result of the function call
3554*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003555WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003556WDI_EnterImpsReq
3557(
Mihir Shetea4306052014-03-25 00:02:54 +05303558 WDI_EnterImpsReqParamsType *pwdiEnterImpsReqParams,
Jeff Johnson295189b2012-06-20 16:38:30 -07003559 WDI_EnterImpsRspCb wdiEnterImpsRspCb,
3560 void* pUserData
3561)
3562{
3563 WDI_EventInfoType wdiEventData;
3564 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3565
3566 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003567 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003568 ------------------------------------------------------------------------*/
3569 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3570 {
3571 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3572 "WDI API call before module is initialized - Fail request");
3573
Jeff Johnsone7245742012-09-05 17:12:55 -07003574 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003575 }
3576
3577 /*------------------------------------------------------------------------
3578 Fill in Event data and post to the Main FSM
3579 ------------------------------------------------------------------------*/
3580 wdiEventData.wdiRequest = WDI_ENTER_IMPS_REQ;
Mihir Shetea4306052014-03-25 00:02:54 +05303581 wdiEventData.pEventData = pwdiEnterImpsReqParams;
3582 wdiEventData.uEventDataSize = sizeof(*pwdiEnterImpsReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07003583 wdiEventData.pCBfnc = wdiEnterImpsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003584 wdiEventData.pUserData = pUserData;
3585
3586 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3587
3588}/*WDI_EnterImpsReq*/
3589
3590/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003591 @brief WDI_ExitImpsReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07003592 request the device to get out of IMPS power state. Upon
3593 the call of this API the WLAN DAL will send a HAL Exit
3594 IMPS request message to the lower RIVA sub-system if DAL
3595 is in state STARTED.
3596
3597 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003598 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003599
Jeff Johnson295189b2012-06-20 16:38:30 -07003600
Jeff Johnsone7245742012-09-05 17:12:55 -07003601
3602 @param wdiExitImpsRspCb: callback for passing back the response
Jeff Johnson295189b2012-06-20 16:38:30 -07003603 of the Exit IMPS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003604
Jeff Johnson295189b2012-06-20 16:38:30 -07003605 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003606 callback
3607
Jeff Johnson295189b2012-06-20 16:38:30 -07003608 @see WDI_Start
3609 @return Result of the function call
3610*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003611WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003612WDI_ExitImpsReq
3613(
3614 WDI_ExitImpsRspCb wdiExitImpsRspCb,
3615 void* pUserData
3616)
3617{
3618 WDI_EventInfoType wdiEventData;
3619 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3620
3621 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003622 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003623 ------------------------------------------------------------------------*/
3624 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3625 {
3626 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3627 "WDI API call before module is initialized - Fail request");
3628
Jeff Johnsone7245742012-09-05 17:12:55 -07003629 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003630 }
3631
3632 /*------------------------------------------------------------------------
3633 Fill in Event data and post to the Main FSM
3634 ------------------------------------------------------------------------*/
3635 wdiEventData.wdiRequest = WDI_EXIT_IMPS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003636 wdiEventData.pEventData = NULL;
3637 wdiEventData.uEventDataSize = 0;
3638 wdiEventData.pCBfnc = wdiExitImpsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003639 wdiEventData.pUserData = pUserData;
3640
3641 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3642
3643}/*WDI_ExitImpsReq*/
3644
3645/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003646 @brief WDI_EnterBmpsReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07003647 request the device to get into BMPS power state. Upon
3648 the call of this API the WLAN DAL will pack and send a
3649 HAL Enter BMPS request message to the lower RIVA
3650 sub-system if DAL is in state STARTED.
3651
3652 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003653 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003654
3655 WDI_PostAssocReq must have been called.
3656
Jeff Johnsone7245742012-09-05 17:12:55 -07003657 @param pwdiEnterBmpsReqParams: the Enter BMPS parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07003658 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003659
Jeff Johnson295189b2012-06-20 16:38:30 -07003660 wdiEnterBmpsRspCb: callback for passing back the
3661 response of the Enter BMPS operation received from the
3662 device
Jeff Johnsone7245742012-09-05 17:12:55 -07003663
Jeff Johnson295189b2012-06-20 16:38:30 -07003664 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003665 callback
3666
Jeff Johnson295189b2012-06-20 16:38:30 -07003667 @see WDI_PostAssocReq
3668 @return Result of the function call
3669*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003670WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003671WDI_EnterBmpsReq
3672(
3673 WDI_EnterBmpsReqParamsType *pwdiEnterBmpsReqParams,
3674 WDI_EnterBmpsRspCb wdiEnterBmpsRspCb,
3675 void* pUserData
3676)
3677{
3678 WDI_EventInfoType wdiEventData;
3679 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3680
3681 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003682 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003683 ------------------------------------------------------------------------*/
3684 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3685 {
3686 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3687 "WDI API call before module is initialized - Fail request");
3688
Jeff Johnsone7245742012-09-05 17:12:55 -07003689 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003690 }
3691
3692 /*------------------------------------------------------------------------
3693 Fill in Event data and post to the Main FSM
3694 ------------------------------------------------------------------------*/
3695 wdiEventData.wdiRequest = WDI_ENTER_BMPS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003696 wdiEventData.pEventData = pwdiEnterBmpsReqParams;
3697 wdiEventData.uEventDataSize = sizeof(*pwdiEnterBmpsReqParams);
3698 wdiEventData.pCBfnc = wdiEnterBmpsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003699 wdiEventData.pUserData = pUserData;
3700
3701 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3702
3703}/*WDI_EnterBmpsReq*/
3704
3705/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003706 @brief WDI_ExitBmpsReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07003707 request the device to get out of BMPS power state. Upon
3708 the call of this API the WLAN DAL will pack and send a
3709 HAL Exit BMPS request message to the lower RIVA
3710 sub-system if DAL is in state STARTED.
3711
3712 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003713 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003714
3715 WDI_PostAssocReq must have been called.
3716
Jeff Johnsone7245742012-09-05 17:12:55 -07003717 @param pwdiExitBmpsReqParams: the Exit BMPS parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07003718 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003719
Jeff Johnson295189b2012-06-20 16:38:30 -07003720 wdiExitBmpsRspCb: callback for passing back the response
3721 of the Exit BMPS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003722
Jeff Johnson295189b2012-06-20 16:38:30 -07003723 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003724 callback
3725
Jeff Johnson295189b2012-06-20 16:38:30 -07003726 @see WDI_PostAssocReq
3727 @return Result of the function call
3728*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003729WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003730WDI_ExitBmpsReq
3731(
3732 WDI_ExitBmpsReqParamsType *pwdiExitBmpsReqParams,
3733 WDI_ExitBmpsRspCb wdiExitBmpsRspCb,
3734 void* pUserData
3735)
3736{
3737 WDI_EventInfoType wdiEventData;
3738 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3739
3740 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003741 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003742 ------------------------------------------------------------------------*/
3743 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3744 {
3745 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3746 "WDI API call before module is initialized - Fail request");
3747
Jeff Johnsone7245742012-09-05 17:12:55 -07003748 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003749 }
3750
3751 /*------------------------------------------------------------------------
3752 Fill in Event data and post to the Main FSM
3753 ------------------------------------------------------------------------*/
3754 wdiEventData.wdiRequest = WDI_EXIT_BMPS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003755 wdiEventData.pEventData = pwdiExitBmpsReqParams;
3756 wdiEventData.uEventDataSize = sizeof(*pwdiExitBmpsReqParams);
3757 wdiEventData.pCBfnc = wdiExitBmpsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003758 wdiEventData.pUserData = pUserData;
3759
3760 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3761
3762}/*WDI_ExitBmpsReq*/
3763
3764/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003765 @brief WDI_EnterUapsdReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07003766 request the device to get into UAPSD power state. Upon
3767 the call of this API the WLAN DAL will pack and send a
3768 HAL Enter UAPSD request message to the lower RIVA
3769 sub-system if DAL is in state STARTED.
3770
3771 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003772 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003773
3774 WDI_PostAssocReq must have been called.
3775 WDI_SetUapsdAcParamsReq must have been called.
Jeff Johnsone7245742012-09-05 17:12:55 -07003776
3777 @param pwdiEnterUapsdReqParams: the Enter UAPSD parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07003778 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003779
Jeff Johnson295189b2012-06-20 16:38:30 -07003780 wdiEnterUapsdRspCb: callback for passing back the
3781 response of the Enter UAPSD operation received from the
3782 device
Jeff Johnsone7245742012-09-05 17:12:55 -07003783
Jeff Johnson295189b2012-06-20 16:38:30 -07003784 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003785 callback
3786
Jeff Johnson295189b2012-06-20 16:38:30 -07003787 @see WDI_PostAssocReq, WDI_SetUapsdAcParamsReq
3788 @return Result of the function call
3789*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003790WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003791WDI_EnterUapsdReq
3792(
3793 WDI_EnterUapsdReqParamsType *pwdiEnterUapsdReqParams,
3794 WDI_EnterUapsdRspCb wdiEnterUapsdRspCb,
3795 void* pUserData
3796)
3797{
3798 WDI_EventInfoType wdiEventData;
3799 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3800
3801 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003802 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003803 ------------------------------------------------------------------------*/
3804 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3805 {
3806 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3807 "WDI API call before module is initialized - Fail request");
3808
Jeff Johnsone7245742012-09-05 17:12:55 -07003809 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003810 }
3811
3812 /*------------------------------------------------------------------------
3813 Fill in Event data and post to the Main FSM
3814 ------------------------------------------------------------------------*/
3815 wdiEventData.wdiRequest = WDI_ENTER_UAPSD_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003816 wdiEventData.pEventData = pwdiEnterUapsdReqParams;
3817 wdiEventData.uEventDataSize = sizeof(*pwdiEnterUapsdReqParams);
3818 wdiEventData.pCBfnc = wdiEnterUapsdRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003819 wdiEventData.pUserData = pUserData;
3820
3821 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3822
3823}/*WDI_EnterUapsdReq*/
3824
3825/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003826 @brief WDI_ExitUapsdReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07003827 request the device to get out of UAPSD power state. Upon
3828 the call of this API the WLAN DAL will send a HAL Exit
3829 UAPSD request message to the lower RIVA sub-system if
3830 DAL is in state STARTED.
3831
3832 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003833 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003834
3835 WDI_PostAssocReq must have been called.
3836
Jeff Johnsone7245742012-09-05 17:12:55 -07003837 @param wdiExitUapsdRspCb: callback for passing back the
Jeff Johnson295189b2012-06-20 16:38:30 -07003838 response of the Exit UAPSD operation received from the
3839 device
Jeff Johnsone7245742012-09-05 17:12:55 -07003840
Jeff Johnson295189b2012-06-20 16:38:30 -07003841 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003842 callback
3843
Jeff Johnson295189b2012-06-20 16:38:30 -07003844 @see WDI_PostAssocReq
3845 @return Result of the function call
3846*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003847WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003848WDI_ExitUapsdReq
3849(
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -07003850 WDI_ExitUapsdReqParamsType *pwdiExitUapsdReqParams,
Jeff Johnson295189b2012-06-20 16:38:30 -07003851 WDI_ExitUapsdRspCb wdiExitUapsdRspCb,
3852 void* pUserData
3853)
3854{
3855 WDI_EventInfoType wdiEventData;
3856 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3857
3858 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003859 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003860 ------------------------------------------------------------------------*/
3861 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3862 {
3863 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3864 "WDI API call before module is initialized - Fail request");
3865
Jeff Johnsone7245742012-09-05 17:12:55 -07003866 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003867 }
3868
3869 /*------------------------------------------------------------------------
3870 Fill in Event data and post to the Main FSM
3871 ------------------------------------------------------------------------*/
3872 wdiEventData.wdiRequest = WDI_EXIT_UAPSD_REQ;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -07003873 wdiEventData.pEventData = pwdiExitUapsdReqParams;
3874 wdiEventData.uEventDataSize = sizeof(*pwdiExitUapsdReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07003875 wdiEventData.pCBfnc = wdiExitUapsdRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003876 wdiEventData.pUserData = pUserData;
3877
3878 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3879
3880}/*WDI_ExitUapsdReq*/
3881
3882/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003883 @brief WDI_UpdateUapsdParamsReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07003884 MAC wants to set the UAPSD related configurations
3885 of an associated STA (while acting as an AP) to the WLAN
3886 Device. Upon the call of this API the WLAN DAL will pack
3887 and send a HAL Update UAPSD params request message to
3888 the lower RIVA sub-system if DAL is in state STARTED.
3889
3890 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003891 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003892
3893 WDI_ConfigBSSReq must have been called.
3894
Jeff Johnsone7245742012-09-05 17:12:55 -07003895 @param pwdiUpdateUapsdReqParams: the UAPSD parameters
Jeff Johnson295189b2012-06-20 16:38:30 -07003896 as specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003897
Jeff Johnson295189b2012-06-20 16:38:30 -07003898 wdiUpdateUapsdParamsCb: callback for passing back the
3899 response of the update UAPSD params operation received
3900 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003901
Jeff Johnson295189b2012-06-20 16:38:30 -07003902 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003903 callback
3904
Jeff Johnson295189b2012-06-20 16:38:30 -07003905 @see WDI_ConfigBSSReq
3906 @return Result of the function call
3907*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003908WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003909WDI_UpdateUapsdParamsReq
3910(
3911 WDI_UpdateUapsdReqParamsType *pwdiUpdateUapsdReqParams,
3912 WDI_UpdateUapsdParamsCb wdiUpdateUapsdParamsCb,
3913 void* pUserData
3914)
3915{
3916 WDI_EventInfoType wdiEventData;
3917 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3918
3919 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003920 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003921 ------------------------------------------------------------------------*/
3922 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3923 {
3924 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3925 "WDI API call before module is initialized - Fail request");
3926
Jeff Johnsone7245742012-09-05 17:12:55 -07003927 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003928 }
3929
3930 /*------------------------------------------------------------------------
3931 Fill in Event data and post to the Main FSM
3932 ------------------------------------------------------------------------*/
3933 wdiEventData.wdiRequest = WDI_UPDATE_UAPSD_PARAM_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003934 wdiEventData.pEventData = pwdiUpdateUapsdReqParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07003935 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateUapsdReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07003936 wdiEventData.pCBfnc = wdiUpdateUapsdParamsCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003937 wdiEventData.pUserData = pUserData;
3938
3939 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3940
3941}/*WDI_UpdateUapsdParamsReq*/
3942
3943/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003944 @brief WDI_SetUapsdAcParamsReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07003945 MAC wants to set the UAPSD related configurations before
3946 requesting for enter UAPSD power state to the WLAN
3947 Device. Upon the call of this API the WLAN DAL will pack
3948 and send a HAL Set UAPSD params request message to
3949 the lower RIVA sub-system if DAL is in state STARTED.
3950
3951 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003952 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003953
3954 WDI_PostAssocReq must have been called.
3955
3956 @param pwdiUapsdInfo: the UAPSD parameters as specified by
3957 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003958
Jeff Johnson295189b2012-06-20 16:38:30 -07003959 wdiSetUapsdAcParamsCb: callback for passing back the
3960 response of the set UAPSD params operation received from
3961 the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003962
Jeff Johnson295189b2012-06-20 16:38:30 -07003963 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003964 callback
3965
Jeff Johnson295189b2012-06-20 16:38:30 -07003966 @see WDI_PostAssocReq
3967 @return Result of the function call
3968*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003969WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003970WDI_SetUapsdAcParamsReq
3971(
3972 WDI_SetUapsdAcParamsReqParamsType* pwdiUapsdInfo,
3973 WDI_SetUapsdAcParamsCb wdiSetUapsdAcParamsCb,
3974 void* pUserData
3975)
3976{
3977 WDI_EventInfoType wdiEventData;
3978 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3979
3980 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003981 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003982 ------------------------------------------------------------------------*/
3983 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3984 {
3985 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3986 "WDI API call before module is initialized - Fail request");
3987
Jeff Johnsone7245742012-09-05 17:12:55 -07003988 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003989 }
3990
3991 /*------------------------------------------------------------------------
3992 Fill in Event data and post to the Main FSM
3993 ------------------------------------------------------------------------*/
3994 wdiEventData.wdiRequest = WDI_SET_UAPSD_PARAM_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003995 wdiEventData.pEventData = pwdiUapsdInfo;
3996 wdiEventData.uEventDataSize = sizeof(*pwdiUapsdInfo);
3997 wdiEventData.pCBfnc = wdiSetUapsdAcParamsCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003998 wdiEventData.pUserData = pUserData;
3999
4000 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4001
4002}/*WDI_SetUapsdAcParamsReq*/
4003
4004/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004005 @brief WDI_ConfigureRxpFilterReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07004006 MAC wants to set/reset the RXP filters for received pkts
4007 (MC, BC etc.). Upon the call of this API the WLAN DAL will pack
4008 and send a HAL configure RXP filter request message to
4009 the lower RIVA sub-system.
4010
4011 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004012 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004013
Jeff Johnsone7245742012-09-05 17:12:55 -07004014
4015 @param pwdiConfigureRxpFilterReqParams: the RXP
Jeff Johnson295189b2012-06-20 16:38:30 -07004016 filter as specified by the Device
4017 Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004018
Jeff Johnson295189b2012-06-20 16:38:30 -07004019 wdiConfigureRxpFilterCb: callback for passing back the
4020 response of the configure RXP filter operation received
4021 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004022
Jeff Johnson295189b2012-06-20 16:38:30 -07004023 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004024 callback
4025
Jeff Johnson295189b2012-06-20 16:38:30 -07004026 @return Result of the function call
4027*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004028WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004029WDI_ConfigureRxpFilterReq
4030(
4031 WDI_ConfigureRxpFilterReqParamsType *pwdiConfigureRxpFilterReqParams,
4032 WDI_ConfigureRxpFilterCb wdiConfigureRxpFilterCb,
4033 void* pUserData
4034)
4035{
4036 WDI_EventInfoType wdiEventData;
4037 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4038
4039 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004040 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004041 ------------------------------------------------------------------------*/
4042 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4043 {
4044 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4045 "WDI API call before module is initialized - Fail request");
4046
Jeff Johnsone7245742012-09-05 17:12:55 -07004047 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004048 }
4049
4050 /*------------------------------------------------------------------------
4051 Fill in Event data and post to the Main FSM
4052 ------------------------------------------------------------------------*/
4053 wdiEventData.wdiRequest = WDI_CONFIGURE_RXP_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004054 wdiEventData.pEventData = pwdiConfigureRxpFilterReqParams;
4055 wdiEventData.uEventDataSize = sizeof(*pwdiConfigureRxpFilterReqParams);
4056 wdiEventData.pCBfnc = wdiConfigureRxpFilterCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004057 wdiEventData.pUserData = pUserData;
4058
4059 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4060}/*WDI_ConfigureRxpFilterReq*/
4061
4062/**
4063 @brief WDI_SetBeaconFilterReq will be called when the upper MAC
4064 wants to set the beacon filters while in power save.
4065 Upon the call of this API the WLAN DAL will pack and
4066 send a Beacon filter request message to the
4067 lower RIVA sub-system.
4068
4069 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004070 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004071
Jeff Johnsone7245742012-09-05 17:12:55 -07004072
4073 @param pwdiBeaconFilterReqParams: the beacon
Jeff Johnson295189b2012-06-20 16:38:30 -07004074 filter as specified by the Device
4075 Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004076
Jeff Johnson295189b2012-06-20 16:38:30 -07004077 wdiBeaconFilterCb: callback for passing back the
4078 response of the set beacon filter operation received
4079 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004080
Jeff Johnson295189b2012-06-20 16:38:30 -07004081 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004082 callback
4083
Jeff Johnson295189b2012-06-20 16:38:30 -07004084 @return Result of the function call
4085*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004086WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004087WDI_SetBeaconFilterReq
4088(
4089 WDI_BeaconFilterReqParamsType *pwdiBeaconFilterReqParams,
4090 WDI_SetBeaconFilterCb wdiBeaconFilterCb,
4091 void* pUserData
4092)
4093{
4094 WDI_EventInfoType wdiEventData;
4095 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4096
4097 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004098 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004099 ------------------------------------------------------------------------*/
4100 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4101 {
4102 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4103 "WDI API call before module is initialized - Fail request");
4104
Jeff Johnsone7245742012-09-05 17:12:55 -07004105 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004106 }
4107
4108 /*------------------------------------------------------------------------
4109 Fill in Event data and post to the Main FSM
4110 ------------------------------------------------------------------------*/
4111 wdiEventData.wdiRequest = WDI_SET_BEACON_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004112 wdiEventData.pEventData = pwdiBeaconFilterReqParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07004113 wdiEventData.uEventDataSize = sizeof(*pwdiBeaconFilterReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004114 wdiEventData.pCBfnc = wdiBeaconFilterCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004115 wdiEventData.pUserData = pUserData;
4116
4117 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4118}/*WDI_SetBeaconFilterReq*/
4119
4120/**
4121 @brief WDI_RemBeaconFilterReq will be called when the upper MAC
4122 wants to remove the beacon filter for particular IE
4123 while in power save. Upon the call of this API the WLAN
4124 DAL will pack and send a remove Beacon filter request
4125 message to the lower RIVA sub-system.
4126
4127 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004128 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004129
Jeff Johnsone7245742012-09-05 17:12:55 -07004130
4131 @param pwdiBeaconFilterReqParams: the beacon
Jeff Johnson295189b2012-06-20 16:38:30 -07004132 filter as specified by the Device
4133 Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004134
Jeff Johnson295189b2012-06-20 16:38:30 -07004135 wdiBeaconFilterCb: callback for passing back the
4136 response of the remove beacon filter operation received
4137 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004138
Jeff Johnson295189b2012-06-20 16:38:30 -07004139 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004140 callback
4141
Jeff Johnson295189b2012-06-20 16:38:30 -07004142 @return Result of the function call
4143*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004144WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004145WDI_RemBeaconFilterReq
4146(
4147 WDI_RemBeaconFilterReqParamsType *pwdiBeaconFilterReqParams,
4148 WDI_RemBeaconFilterCb wdiBeaconFilterCb,
4149 void* pUserData
4150)
4151{
4152 WDI_EventInfoType wdiEventData;
4153 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4154
4155 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004156 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004157 ------------------------------------------------------------------------*/
4158 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4159 {
4160 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4161 "WDI API call before module is initialized - Fail request");
4162
Jeff Johnsone7245742012-09-05 17:12:55 -07004163 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004164 }
4165
4166 /*------------------------------------------------------------------------
4167 Fill in Event data and post to the Main FSM
4168 ------------------------------------------------------------------------*/
4169 wdiEventData.wdiRequest = WDI_REM_BEACON_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004170 wdiEventData.pEventData = pwdiBeaconFilterReqParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07004171 wdiEventData.uEventDataSize = sizeof(*pwdiBeaconFilterReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004172 wdiEventData.pCBfnc = wdiBeaconFilterCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004173 wdiEventData.pUserData = pUserData;
4174
4175 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4176}/*WDI_RemBeaconFilterReq*/
4177
4178/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004179 @brief WDI_SetRSSIThresholdsReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07004180 MAC wants to set the RSSI thresholds related
4181 configurations while in power save. Upon the call of
4182 this API the WLAN DAL will pack and send a HAL Set RSSI
4183 thresholds request message to the lower RIVA
4184 sub-system if DAL is in state STARTED.
4185
4186 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004187 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004188
4189 WDI_PostAssocReq must have been called.
4190
4191 @param pwdiUapsdInfo: the UAPSD parameters as specified by
4192 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004193
Jeff Johnson295189b2012-06-20 16:38:30 -07004194 wdiSetUapsdAcParamsCb: callback for passing back the
4195 response of the set UAPSD params operation received from
4196 the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004197
Jeff Johnson295189b2012-06-20 16:38:30 -07004198 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004199 callback
4200
Jeff Johnson295189b2012-06-20 16:38:30 -07004201 @see WDI_PostAssocReq
4202 @return Result of the function call
4203*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004204WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004205WDI_SetRSSIThresholdsReq
4206(
4207 WDI_SetRSSIThresholdsReqParamsType* pwdiRSSIThresholdsParams,
4208 WDI_SetRSSIThresholdsCb wdiSetRSSIThresholdsCb,
4209 void* pUserData
4210)
4211{
4212 WDI_EventInfoType wdiEventData;
4213 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4214
4215 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004216 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004217 ------------------------------------------------------------------------*/
4218 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4219 {
4220 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4221 "WDI API call before module is initialized - Fail request");
4222
Jeff Johnsone7245742012-09-05 17:12:55 -07004223 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004224 }
4225
4226 /*------------------------------------------------------------------------
4227 Fill in Event data and post to the Main FSM
4228 ------------------------------------------------------------------------*/
4229 wdiEventData.wdiRequest = WDI_SET_RSSI_THRESHOLDS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004230 wdiEventData.pEventData = pwdiRSSIThresholdsParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07004231 wdiEventData.uEventDataSize = sizeof(*pwdiRSSIThresholdsParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004232 wdiEventData.pCBfnc = wdiSetRSSIThresholdsCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004233 wdiEventData.pUserData = pUserData;
4234
4235 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4236}/* WDI_SetRSSIThresholdsReq*/
4237
4238/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004239 @brief WDI_HostOffloadReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004240 wants to set the filter to minimize unnecessary host
4241 wakeup due to broadcast traffic while in power save.
4242 Upon the call of this API the WLAN DAL will pack and
4243 send a HAL host offload request message to the
4244 lower RIVA sub-system if DAL is in state STARTED.
4245
4246 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004247 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004248
4249 WDI_PostAssocReq must have been called.
4250
Jeff Johnsone7245742012-09-05 17:12:55 -07004251 @param pwdiHostOffloadParams: the host offload as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07004252 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004253
Jeff Johnson295189b2012-06-20 16:38:30 -07004254 wdiHostOffloadCb: callback for passing back the response
4255 of the host offload operation received from the
4256 device
Jeff Johnsone7245742012-09-05 17:12:55 -07004257
Jeff Johnson295189b2012-06-20 16:38:30 -07004258 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004259 callback
4260
Jeff Johnson295189b2012-06-20 16:38:30 -07004261 @see WDI_PostAssocReq
4262 @return Result of the function call
4263*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004264WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004265WDI_HostOffloadReq
4266(
4267 WDI_HostOffloadReqParamsType* pwdiHostOffloadParams,
4268 WDI_HostOffloadCb wdiHostOffloadCb,
4269 void* pUserData
4270)
4271{
4272 WDI_EventInfoType wdiEventData;
4273 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4274
4275 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004276 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004277 ------------------------------------------------------------------------*/
4278 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4279 {
4280 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4281 "WDI API call before module is initialized - Fail request");
4282
Jeff Johnsone7245742012-09-05 17:12:55 -07004283 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004284 }
4285
4286 /*------------------------------------------------------------------------
4287 Fill in Event data and post to the Main FSM
4288 ------------------------------------------------------------------------*/
4289 wdiEventData.wdiRequest = WDI_HOST_OFFLOAD_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004290 wdiEventData.pEventData = pwdiHostOffloadParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07004291 wdiEventData.uEventDataSize = sizeof(*pwdiHostOffloadParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004292 wdiEventData.pCBfnc = wdiHostOffloadCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004293 wdiEventData.pUserData = pUserData;
4294
4295 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4296}/*WDI_HostOffloadReq*/
4297
4298/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004299 @brief WDI_KeepAliveReq will be called when the upper MAC
4300 wants to set the filter to send NULL or unsolicited ARP responses
Jeff Johnson295189b2012-06-20 16:38:30 -07004301 and minimize unnecessary host wakeups due to while in power save.
4302 Upon the call of this API the WLAN DAL will pack and
4303 send a HAL Keep Alive request message to the
4304 lower RIVA sub-system if DAL is in state STARTED.
4305
4306 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004307 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004308
4309 WDI_PostAssocReq must have been called.
4310
Jeff Johnsone7245742012-09-05 17:12:55 -07004311 @param pwdiKeepAliveParams: the Keep Alive as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07004312 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004313
Jeff Johnson295189b2012-06-20 16:38:30 -07004314 wdiKeepAliveCb: callback for passing back the response
4315 of the Keep Alive operation received from the
4316 device
Jeff Johnsone7245742012-09-05 17:12:55 -07004317
Jeff Johnson295189b2012-06-20 16:38:30 -07004318 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004319 callback
4320
Jeff Johnson295189b2012-06-20 16:38:30 -07004321 @see WDI_PostAssocReq
4322 @return Result of the function call
4323*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004324WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004325WDI_KeepAliveReq
4326(
4327 WDI_KeepAliveReqParamsType* pwdiKeepAliveParams,
4328 WDI_KeepAliveCb wdiKeepAliveCb,
4329 void* pUserData
4330)
4331{
4332 WDI_EventInfoType wdiEventData;
4333 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4334
4335 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004336 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004337 ------------------------------------------------------------------------*/
4338 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4339 {
4340 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4341 "WDI_KeepAliveReq: WDI API call before module "
4342 "is initialized - Fail request");
4343
Jeff Johnsone7245742012-09-05 17:12:55 -07004344 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004345 }
4346
4347 /*------------------------------------------------------------------------
4348 Fill in Event data and post to the Main FSM
4349 ------------------------------------------------------------------------*/
4350 wdiEventData.wdiRequest = WDI_KEEP_ALIVE_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004351 wdiEventData.pEventData = pwdiKeepAliveParams;
4352 wdiEventData.uEventDataSize = sizeof(*pwdiKeepAliveParams);
4353 wdiEventData.pCBfnc = wdiKeepAliveCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004354 wdiEventData.pUserData = pUserData;
4355
4356 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4357}/*WDI_KeepAliveReq*/
4358
4359/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004360 @brief WDI_WowlAddBcPtrnReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004361 wants to set the Wowl Bcast ptrn to minimize unnecessary
4362 host wakeup due to broadcast traffic while in power
4363 save. Upon the call of this API the WLAN DAL will pack
4364 and send a HAL Wowl Bcast ptrn request message to the
4365 lower RIVA sub-system if DAL is in state STARTED.
4366
4367 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004368 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004369
4370 WDI_PostAssocReq must have been called.
4371
Jeff Johnsone7245742012-09-05 17:12:55 -07004372 @param pwdiWowlAddBcPtrnParams: the Wowl bcast ptrn as
Jeff Johnson295189b2012-06-20 16:38:30 -07004373 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004374
Jeff Johnson295189b2012-06-20 16:38:30 -07004375 wdiWowlAddBcPtrnCb: callback for passing back the
4376 response of the add Wowl bcast ptrn operation received
4377 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004378
Jeff Johnson295189b2012-06-20 16:38:30 -07004379 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004380 callback
4381
Jeff Johnson295189b2012-06-20 16:38:30 -07004382 @see WDI_PostAssocReq
4383 @return Result of the function call
4384*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004385WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004386WDI_WowlAddBcPtrnReq
4387(
4388 WDI_WowlAddBcPtrnReqParamsType* pwdiWowlAddBcPtrnParams,
4389 WDI_WowlAddBcPtrnCb wdiWowlAddBcPtrnCb,
4390 void* pUserData
4391)
4392{
4393 WDI_EventInfoType wdiEventData;
4394 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4395
4396 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004397 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004398 ------------------------------------------------------------------------*/
4399 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4400 {
4401 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4402 "WDI API call before module is initialized - Fail request");
4403
Jeff Johnsone7245742012-09-05 17:12:55 -07004404 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004405 }
4406
4407 /*------------------------------------------------------------------------
4408 Fill in Event data and post to the Main FSM
4409 ------------------------------------------------------------------------*/
4410 wdiEventData.wdiRequest = WDI_WOWL_ADD_BC_PTRN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004411 wdiEventData.pEventData = pwdiWowlAddBcPtrnParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07004412 wdiEventData.uEventDataSize = sizeof(*pwdiWowlAddBcPtrnParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004413 wdiEventData.pCBfnc = wdiWowlAddBcPtrnCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004414 wdiEventData.pUserData = pUserData;
4415
4416 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4417}/*WDI_WowlAddBcPtrnReq*/
4418
4419/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004420 @brief WDI_WowlDelBcPtrnReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004421 wants to clear the Wowl Bcast ptrn. Upon the call of
4422 this API the WLAN DAL will pack and send a HAL delete
4423 Wowl Bcast ptrn request message to the lower RIVA
4424 sub-system if DAL is in state STARTED.
4425
4426 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004427 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004428
4429 WDI_WowlAddBcPtrnReq must have been called.
4430
Jeff Johnsone7245742012-09-05 17:12:55 -07004431 @param pwdiWowlDelBcPtrnParams: the Wowl bcast ptrn as
Jeff Johnson295189b2012-06-20 16:38:30 -07004432 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004433
Jeff Johnson295189b2012-06-20 16:38:30 -07004434 wdiWowlDelBcPtrnCb: callback for passing back the
4435 response of the del Wowl bcast ptrn operation received
4436 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004437
Jeff Johnson295189b2012-06-20 16:38:30 -07004438 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004439 callback
4440
Jeff Johnson295189b2012-06-20 16:38:30 -07004441 @see WDI_WowlAddBcPtrnReq
4442 @return Result of the function call
4443*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004444WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004445WDI_WowlDelBcPtrnReq
4446(
4447 WDI_WowlDelBcPtrnReqParamsType* pwdiWowlDelBcPtrnParams,
4448 WDI_WowlDelBcPtrnCb wdiWowlDelBcPtrnCb,
4449 void* pUserData
4450)
4451{
4452 WDI_EventInfoType wdiEventData;
4453 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4454
4455 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004456 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004457 ------------------------------------------------------------------------*/
4458 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4459 {
4460 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4461 "WDI API call before module is initialized - Fail request");
4462
Jeff Johnsone7245742012-09-05 17:12:55 -07004463 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004464 }
4465
4466 /*------------------------------------------------------------------------
4467 Fill in Event data and post to the Main FSM
4468 ------------------------------------------------------------------------*/
4469 wdiEventData.wdiRequest = WDI_WOWL_DEL_BC_PTRN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004470 wdiEventData.pEventData = pwdiWowlDelBcPtrnParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07004471 wdiEventData.uEventDataSize = sizeof(*pwdiWowlDelBcPtrnParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004472 wdiEventData.pCBfnc = wdiWowlDelBcPtrnCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004473 wdiEventData.pUserData = pUserData;
4474
4475 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4476}/*WDI_WowlDelBcPtrnReq*/
4477
4478/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004479 @brief WDI_WowlEnterReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004480 wants to enter the Wowl state to minimize unnecessary
4481 host wakeup while in power save. Upon the call of this
4482 API the WLAN DAL will pack and send a HAL Wowl enter
4483 request message to the lower RIVA sub-system if DAL is
4484 in state STARTED.
4485
4486 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004487 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004488
4489 WDI_PostAssocReq must have been called.
4490
Jeff Johnsone7245742012-09-05 17:12:55 -07004491 @param pwdiWowlEnterReqParams: the Wowl enter info as
Jeff Johnson295189b2012-06-20 16:38:30 -07004492 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004493
Jeff Johnson295189b2012-06-20 16:38:30 -07004494 wdiWowlEnterReqCb: callback for passing back the
4495 response of the enter Wowl operation received from the
4496 device
Jeff Johnsone7245742012-09-05 17:12:55 -07004497
Jeff Johnson295189b2012-06-20 16:38:30 -07004498 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004499 callback
4500
Jeff Johnson295189b2012-06-20 16:38:30 -07004501 @see WDI_PostAssocReq
4502 @return Result of the function call
4503*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004504WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004505WDI_WowlEnterReq
4506(
4507 WDI_WowlEnterReqParamsType* pwdiWowlEnterParams,
4508 WDI_WowlEnterReqCb wdiWowlEnterCb,
4509 void* pUserData
4510)
4511{
4512 WDI_EventInfoType wdiEventData;
4513 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4514
4515 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004516 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004517 ------------------------------------------------------------------------*/
4518 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4519 {
4520 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4521 "WDI API call before module is initialized - Fail request");
4522
Jeff Johnsone7245742012-09-05 17:12:55 -07004523 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004524 }
4525
4526 /*------------------------------------------------------------------------
4527 Fill in Event data and post to the Main FSM
4528 ------------------------------------------------------------------------*/
4529 wdiEventData.wdiRequest = WDI_WOWL_ENTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004530 wdiEventData.pEventData = pwdiWowlEnterParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07004531 wdiEventData.uEventDataSize = sizeof(*pwdiWowlEnterParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004532 wdiEventData.pCBfnc = wdiWowlEnterCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004533 wdiEventData.pUserData = pUserData;
4534
4535 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4536}/*WDI_WowlEnterReq*/
4537
4538/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004539 @brief WDI_WowlExitReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004540 wants to exit the Wowl state. Upon the call of this API
4541 the WLAN DAL will pack and send a HAL Wowl exit request
4542 message to the lower RIVA sub-system if DAL is in state
4543 STARTED.
4544
4545 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004546 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004547
4548 WDI_WowlEnterReq must have been called.
4549
Jeff Johnsone7245742012-09-05 17:12:55 -07004550 @param pwdiWowlExitReqParams: the Wowl exit info as
Jeff Johnson295189b2012-06-20 16:38:30 -07004551 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004552
Jeff Johnson295189b2012-06-20 16:38:30 -07004553 wdiWowlExitReqCb: callback for passing back the response
4554 of the exit Wowl operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004555
Jeff Johnson295189b2012-06-20 16:38:30 -07004556 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004557 callback
4558
Jeff Johnson295189b2012-06-20 16:38:30 -07004559 @see WDI_WowlEnterReq
4560 @return Result of the function call
4561*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004562WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004563WDI_WowlExitReq
4564(
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -07004565 WDI_WowlExitReqParamsType* pwdiWowlExitParams,
Jeff Johnson295189b2012-06-20 16:38:30 -07004566 WDI_WowlExitReqCb wdiWowlExitCb,
4567 void* pUserData
4568)
4569{
4570 WDI_EventInfoType wdiEventData;
4571 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4572
4573 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004574 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004575 ------------------------------------------------------------------------*/
4576 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4577 {
4578 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4579 "WDI API call before module is initialized - Fail request");
4580
Jeff Johnsone7245742012-09-05 17:12:55 -07004581 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004582 }
4583
4584 /*------------------------------------------------------------------------
4585 Fill in Event data and post to the Main FSM
4586 ------------------------------------------------------------------------*/
4587 wdiEventData.wdiRequest = WDI_WOWL_EXIT_REQ;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -07004588 wdiEventData.pEventData = pwdiWowlExitParams;
4589 wdiEventData.uEventDataSize = sizeof(*pwdiWowlExitParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004590 wdiEventData.pCBfnc = wdiWowlExitCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004591 wdiEventData.pUserData = pUserData;
4592
4593 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4594}/*WDI_WowlExitReq*/
4595
4596/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004597 @brief WDI_ConfigureAppsCpuWakeupStateReq will be called when
Jeff Johnson295189b2012-06-20 16:38:30 -07004598 the upper MAC wants to dynamically adjusts the listen
4599 interval based on the WLAN/MSM activity. Upon the call
4600 of this API the WLAN DAL will pack and send a HAL
4601 configure Apps Cpu Wakeup State request message to the
4602 lower RIVA sub-system.
4603
4604 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004605 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004606
Jeff Johnsone7245742012-09-05 17:12:55 -07004607
4608 @param pwdiConfigureAppsCpuWakeupStateReqParams: the
Jeff Johnson295189b2012-06-20 16:38:30 -07004609 Apps Cpu Wakeup State as specified by the
4610 Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004611
Jeff Johnson295189b2012-06-20 16:38:30 -07004612 wdiConfigureAppsCpuWakeupStateCb: callback for passing
4613 back the response of the configure Apps Cpu Wakeup State
4614 operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004615
Jeff Johnson295189b2012-06-20 16:38:30 -07004616 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004617 callback
4618
Jeff Johnson295189b2012-06-20 16:38:30 -07004619 @return Result of the function call
4620*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004621WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004622WDI_ConfigureAppsCpuWakeupStateReq
4623(
4624 WDI_ConfigureAppsCpuWakeupStateReqParamsType *pwdiConfigureAppsCpuWakeupStateReqParams,
4625 WDI_ConfigureAppsCpuWakeupStateCb wdiConfigureAppsCpuWakeupStateCb,
4626 void* pUserData
4627)
4628{
4629 WDI_EventInfoType wdiEventData;
4630 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4631
4632 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004633 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004634 ------------------------------------------------------------------------*/
4635 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4636 {
4637 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4638 "WDI API call before module is initialized - Fail request");
4639
Jeff Johnsone7245742012-09-05 17:12:55 -07004640 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004641 }
4642
4643 /*------------------------------------------------------------------------
4644 Fill in Event data and post to the Main FSM
4645 ------------------------------------------------------------------------*/
4646 wdiEventData.wdiRequest = WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004647 wdiEventData.pEventData = pwdiConfigureAppsCpuWakeupStateReqParams;
4648 wdiEventData.uEventDataSize = sizeof(*pwdiConfigureAppsCpuWakeupStateReqParams);
4649 wdiEventData.pCBfnc = wdiConfigureAppsCpuWakeupStateCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004650 wdiEventData.pUserData = pUserData;
4651
4652 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4653}/*WDI_ConfigureAppsCpuWakeupStateReq*/
4654/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004655 @brief WDI_FlushAcReq will be called when the upper MAC wants
Jeff Johnson295189b2012-06-20 16:38:30 -07004656 to to perform a flush operation on a given AC. Upon the
4657 call of this API the WLAN DAL will pack and send a HAL
4658 Flush AC request message to the lower RIVA sub-system if
4659 DAL is in state STARTED.
4660
4661 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004662 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004663
4664 WDI_AddBAReq must have been called.
4665
Jeff Johnsone7245742012-09-05 17:12:55 -07004666 @param pwdiFlushAcReqParams: the Flush AC parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07004667 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004668
Jeff Johnson295189b2012-06-20 16:38:30 -07004669 wdiFlushAcRspCb: callback for passing back the response
4670 of the Flush AC operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004671
Jeff Johnson295189b2012-06-20 16:38:30 -07004672 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004673 callback
4674
Jeff Johnson295189b2012-06-20 16:38:30 -07004675 @see WDI_AddBAReq
4676 @return Result of the function call
4677*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004678WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004679WDI_FlushAcReq
4680(
4681 WDI_FlushAcReqParamsType* pwdiFlushAcReqParams,
4682 WDI_FlushAcRspCb wdiFlushAcRspCb,
4683 void* pUserData
4684)
4685{
4686 WDI_EventInfoType wdiEventData;
4687 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4688
4689 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004690 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004691 ------------------------------------------------------------------------*/
4692 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4693 {
4694 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4695 "WDI API call before module is initialized - Fail request");
4696
Jeff Johnsone7245742012-09-05 17:12:55 -07004697 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004698 }
4699
4700 /*------------------------------------------------------------------------
4701 Fill in Event data and post to the Main FSM
4702 ------------------------------------------------------------------------*/
4703 wdiEventData.wdiRequest = WDI_FLUSH_AC_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004704 wdiEventData.pEventData = pwdiFlushAcReqParams;
4705 wdiEventData.uEventDataSize = sizeof(*pwdiFlushAcReqParams);
4706 wdiEventData.pCBfnc = wdiFlushAcRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004707 wdiEventData.pUserData = pUserData;
4708
4709 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4710
4711}/*WDI_FlushAcReq*/
4712
4713/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004714 @brief WDI_BtAmpEventReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004715 wants to notify the lower mac on a BT AMP event. This is
4716 to inform BTC-SLM that some BT AMP event occurred. Upon
4717 the call of this API the WLAN DAL will pack and send a
4718 HAL BT AMP event request message to the lower RIVA
4719 sub-system if DAL is in state STARTED.
4720
4721 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004722 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004723
Jeff Johnsone7245742012-09-05 17:12:55 -07004724
4725 @param wdiBtAmpEventReqParams: the BT AMP event parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07004726 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004727
Jeff Johnson295189b2012-06-20 16:38:30 -07004728 wdiBtAmpEventRspCb: callback for passing back the
4729 response of the BT AMP event operation received from the
4730 device
Jeff Johnsone7245742012-09-05 17:12:55 -07004731
Jeff Johnson295189b2012-06-20 16:38:30 -07004732 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004733 callback
4734
Jeff Johnson295189b2012-06-20 16:38:30 -07004735 @return Result of the function call
4736*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004737WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004738WDI_BtAmpEventReq
4739(
4740 WDI_BtAmpEventParamsType* pwdiBtAmpEventReqParams,
4741 WDI_BtAmpEventRspCb wdiBtAmpEventRspCb,
4742 void* pUserData
4743)
4744{
4745 WDI_EventInfoType wdiEventData;
4746 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4747
4748 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004749 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004750 ------------------------------------------------------------------------*/
4751 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4752 {
4753 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4754 "WDI API call before module is initialized - Fail request");
4755
Jeff Johnsone7245742012-09-05 17:12:55 -07004756 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004757 }
4758
4759 /*------------------------------------------------------------------------
4760 Fill in Event data and post to the Main FSM
4761 ------------------------------------------------------------------------*/
4762 wdiEventData.wdiRequest = WDI_BTAMP_EVENT_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004763 wdiEventData.pEventData = pwdiBtAmpEventReqParams;
4764 wdiEventData.uEventDataSize = sizeof(*pwdiBtAmpEventReqParams);
4765 wdiEventData.pCBfnc = wdiBtAmpEventRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004766 wdiEventData.pUserData = pUserData;
4767
4768 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4769
4770}/*WDI_BtAmpEventReq*/
4771
Jeff Johnsone7245742012-09-05 17:12:55 -07004772#ifdef FEATURE_OEM_DATA_SUPPORT
4773/**
4774 @brief WDI_Start Oem Data Req will be called when the upper MAC
4775 wants to notify the lower mac on a oem data Req event.Upon
4776 the call of this API the WLAN DAL will pack and send a
4777 HAL OEM Data Req event request message to the lower RIVA
4778 sub-system if DAL is in state STARTED.
4779
4780 In state BUSY this request will be queued. Request won't
4781 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004782
4783
Jeff Johnsone7245742012-09-05 17:12:55 -07004784
4785 @param pwdiOemDataReqParams: the Oem Data Req as
4786 specified by the Device Interface
4787
4788 wdiStartOemDataRspCb: callback for passing back the
4789 response of the Oem Data Req received from the
4790 device
4791
4792 pUserData: user data will be passed back with the
4793 callback
4794
4795 @return Result of the function call
4796*/
4797WDI_Status
4798WDI_StartOemDataReq
4799(
4800 WDI_oemDataReqParamsType* pwdiOemDataReqParams,
4801 WDI_oemDataRspCb wdiOemDataRspCb,
4802 void* pUserData
4803)
4804{
4805 WDI_EventInfoType wdiEventData;
4806 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4807
4808 /*------------------------------------------------------------------------
4809 Sanity Check
4810 ------------------------------------------------------------------------*/
4811 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4812 {
4813 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4814 "WDI API call before module is initialized - Fail request");
4815
4816 return WDI_STATUS_E_NOT_ALLOWED;
4817 }
4818
4819 /*------------------------------------------------------------------------
4820 Fill in Event data and post to the Main FSM
4821 ------------------------------------------------------------------------*/
4822 wdiEventData.wdiRequest = WDI_START_OEM_DATA_REQ;
4823 wdiEventData.pEventData = pwdiOemDataReqParams;
4824 wdiEventData.uEventDataSize = sizeof(*pwdiOemDataReqParams);
4825 wdiEventData.pCBfnc = wdiOemDataRspCb;
4826 wdiEventData.pUserData = pUserData;
4827
4828 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4829
4830
4831}
4832
4833#endif
4834
4835
4836/*========================================================================
4837
Jeff Johnson295189b2012-06-20 16:38:30 -07004838 CONTROL APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07004839
Jeff Johnson295189b2012-06-20 16:38:30 -07004840==========================================================================*/
4841/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004842 @brief WDI_SwitchChReq will be called when the upper MAC wants
Jeff Johnson295189b2012-06-20 16:38:30 -07004843 the WLAN HW to change the current channel of operation.
4844 Upon the call of this API the WLAN DAL will pack and
4845 send a HAL Start request message to the lower RIVA
4846 sub-system if DAL is in state STARTED.
4847
4848 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004849 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004850
4851 WDI_Start must have been called.
4852
Jeff Johnsone7245742012-09-05 17:12:55 -07004853 @param wdiSwitchChReqParams: the switch ch parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07004854 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004855
Jeff Johnson295189b2012-06-20 16:38:30 -07004856 wdiSwitchChRspCb: callback for passing back the response
4857 of the switch ch operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004858
Jeff Johnson295189b2012-06-20 16:38:30 -07004859 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004860 callback
4861
Jeff Johnson295189b2012-06-20 16:38:30 -07004862 @see WDI_Start
4863 @return Result of the function call
4864*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004865WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004866WDI_SwitchChReq
4867(
4868 WDI_SwitchChReqParamsType* pwdiSwitchChReqParams,
4869 WDI_SwitchChRspCb wdiSwitchChRspCb,
4870 void* pUserData
4871)
4872{
4873 WDI_EventInfoType wdiEventData;
4874 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4875
4876 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004877 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004878 ------------------------------------------------------------------------*/
4879 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4880 {
4881 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4882 "WDI API call before module is initialized - Fail request");
4883
Jeff Johnsone7245742012-09-05 17:12:55 -07004884 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004885 }
4886
4887 /*------------------------------------------------------------------------
4888 Fill in Event data and post to the Main FSM
4889 ------------------------------------------------------------------------*/
4890 wdiEventData.wdiRequest = WDI_CH_SWITCH_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004891 wdiEventData.pEventData = pwdiSwitchChReqParams;
4892 wdiEventData.uEventDataSize = sizeof(*pwdiSwitchChReqParams);
4893 wdiEventData.pCBfnc = wdiSwitchChRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004894 wdiEventData.pUserData = pUserData;
4895
4896 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4897
4898}/*WDI_SwitchChReq*/
4899
Kalikinkar dhara1e83b772014-02-06 12:59:22 -08004900/**
4901 @brief WDI_SwitchChReq_V1 will be called when the upper MAC wants
4902 the WLAN HW to change the current channel of operation.
4903 Upon the call of this API the WLAN DAL will pack and
4904 send a HAL Start request message to the lower RIVA
4905 sub-system if DAL is in state STARTED.
4906 This request message also includes source of channel switch,
4907 like CSA,
4908
4909 In state BUSY this request will be queued. Request won't
4910 be allowed in any other state.
4911
4912 WDI_Start must have been called.
4913
4914 @param wdiSwitchChReqParams: the switch ch parameters as
4915 specified by the Device Interface
4916
4917 wdiSwitchChRspCb: callback for passing back the response
4918 of the switch ch operation received from the device
4919
4920 pUserData: user data will be passed back with the
4921 callback
4922
4923 @see WDI_Start
4924 @return Result of the function call
4925*/
4926WDI_Status
4927WDI_SwitchChReq_V1
4928(
4929 WDI_SwitchChReqParamsType_V1* pwdiSwitchChReqParams,
4930 WDI_SwitchChRspCb_V1 wdiSwitchChRspCb,
4931 void* pUserData
4932)
4933{
4934 WDI_EventInfoType wdiEventData;
4935 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4936 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
4937 "WDI API call WDI_SwitchChReq_V1");
4938 /*------------------------------------------------------------------------
4939 Sanity Check
4940 ------------------------------------------------------------------------*/
4941 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4942 {
4943 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4944 "WDI API call before module is initialized - Fail request");
4945
4946 return WDI_STATUS_E_NOT_ALLOWED;
4947 }
4948
4949 /*------------------------------------------------------------------------
4950 Fill in Event data and post to the Main FSM
4951 ------------------------------------------------------------------------*/
4952 wdiEventData.wdiRequest = WDI_CH_SWITCH_REQ_V1;
4953 wdiEventData.pEventData = pwdiSwitchChReqParams;
4954 wdiEventData.uEventDataSize = sizeof(*pwdiSwitchChReqParams);
4955 wdiEventData.pCBfnc = wdiSwitchChRspCb;
4956 wdiEventData.pUserData = pUserData;
4957
4958 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4959
4960}/*WDI_SwitchChReq_V1*/
4961
Jeff Johnson295189b2012-06-20 16:38:30 -07004962
4963/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004964 @brief WDI_ConfigSTAReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004965 wishes to add or update a STA in HW. Upon the call of
4966 this API the WLAN DAL will pack and send a HAL Start
4967 message request message to the lower RIVA sub-system if
4968 DAL is in state STARTED.
4969
4970 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004971 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004972
4973 WDI_Start must have been called.
4974
Jeff Johnsone7245742012-09-05 17:12:55 -07004975 @param wdiConfigSTAReqParams: the config STA parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07004976 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004977
Jeff Johnson295189b2012-06-20 16:38:30 -07004978 wdiConfigSTARspCb: callback for passing back the
4979 response of the config STA operation received from the
4980 device
Jeff Johnsone7245742012-09-05 17:12:55 -07004981
Jeff Johnson295189b2012-06-20 16:38:30 -07004982 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004983 callback
4984
Jeff Johnson295189b2012-06-20 16:38:30 -07004985 @see WDI_Start
4986 @return Result of the function call
4987*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004988WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004989WDI_ConfigSTAReq
4990(
4991 WDI_ConfigSTAReqParamsType* pwdiConfigSTAReqParams,
4992 WDI_ConfigSTARspCb wdiConfigSTARspCb,
4993 void* pUserData
4994)
4995{
4996 WDI_EventInfoType wdiEventData;
4997 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4998
4999 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005000 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005001 ------------------------------------------------------------------------*/
5002 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5003 {
5004 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5005 "WDI API call before module is initialized - Fail request");
5006
Jeff Johnsone7245742012-09-05 17:12:55 -07005007 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005008 }
5009
5010 /*------------------------------------------------------------------------
5011 Fill in Event data and post to the Main FSM
5012 ------------------------------------------------------------------------*/
5013 wdiEventData.wdiRequest = WDI_CONFIG_STA_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005014 wdiEventData.pEventData = pwdiConfigSTAReqParams;
5015 wdiEventData.uEventDataSize = sizeof(*pwdiConfigSTAReqParams);
5016 wdiEventData.pCBfnc = wdiConfigSTARspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005017 wdiEventData.pUserData = pUserData;
5018
5019 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5020
5021}/*WDI_ConfigSTAReq*/
5022
Manjunathappa Prakash86f78ca2014-02-10 18:09:15 -08005023 /**
5024 @brief WDI_UpdateChannelReq will be called when the upper MAC
5025 wants to update the channel list on change in country code.
5026
5027 In state BUSY this request will be queued. Request won't
5028 be allowed in any other state.
5029
5030 WDI_UpdateChannelReq must have been called.
5031
5032 @param wdiUpdateChannelReqParams: the updated channel parameters
5033 as specified by the Device Interface
5034
5035 wdiUpdateChannelRspCb: callback for passing back the
5036 response of the update channel operation received from
5037 the device
5038
5039 pUserData: user data will be passed back with the
5040 callback
5041
5042 @return Result of the function call
5043*/
5044WDI_Status
5045WDI_UpdateChannelReq
5046(
5047 WDI_UpdateChReqParamsType *pwdiUpdateChannelReqParams,
5048 WDI_UpdateChannelRspCb wdiUpdateChannelRspCb,
5049 void* pUserData
5050)
5051{
5052 WDI_EventInfoType wdiEventData = {{0}};
5053 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5054
5055 /*------------------------------------------------------------------------
5056 Sanity Check
5057 ------------------------------------------------------------------------*/
5058 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5059 {
5060 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5061 "WDI API call before module is initialized - Fail request");
5062
5063 return WDI_STATUS_E_NOT_ALLOWED;
5064 }
5065
5066 /*------------------------------------------------------------------------
5067 Fill in Event data and post to the Main FSM
5068 ------------------------------------------------------------------------*/
5069 wdiEventData.wdiRequest = WDI_UPDATE_CHAN_REQ;
5070 wdiEventData.pEventData = pwdiUpdateChannelReqParams;
5071 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateChannelReqParams);
5072 wdiEventData.pCBfnc = wdiUpdateChannelRspCb;
5073 wdiEventData.pUserData = pUserData;
5074
5075 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5076
5077}/*WDI_UpdateChannelReq*/
5078
Jeff Johnson295189b2012-06-20 16:38:30 -07005079/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005080 @brief WDI_SetLinkStateReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07005081 wants to change the state of an ongoing link. Upon the
5082 call of this API the WLAN DAL will pack and send a HAL
5083 Start message request message to the lower RIVA
5084 sub-system if DAL is in state STARTED.
5085
5086 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005087 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005088
5089 WDI_JoinStartReq must have been called.
5090
Jeff Johnsone7245742012-09-05 17:12:55 -07005091 @param wdiSetLinkStateReqParams: the set link state parameters
Jeff Johnson295189b2012-06-20 16:38:30 -07005092 as specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005093
Jeff Johnson295189b2012-06-20 16:38:30 -07005094 wdiSetLinkStateRspCb: callback for passing back the
5095 response of the set link state operation received from
5096 the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005097
Jeff Johnson295189b2012-06-20 16:38:30 -07005098 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005099 callback
5100
Jeff Johnson295189b2012-06-20 16:38:30 -07005101 @see WDI_JoinStartReq
5102 @return Result of the function call
5103*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005104WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005105WDI_SetLinkStateReq
5106(
5107 WDI_SetLinkReqParamsType* pwdiSetLinkStateReqParams,
5108 WDI_SetLinkStateRspCb wdiSetLinkStateRspCb,
5109 void* pUserData
5110)
5111{
5112 WDI_EventInfoType wdiEventData;
5113 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5114
5115 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005116 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005117 ------------------------------------------------------------------------*/
5118 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5119 {
5120 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5121 "WDI API call before module is initialized - Fail request");
5122
Jeff Johnsone7245742012-09-05 17:12:55 -07005123 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005124 }
5125
5126 /*------------------------------------------------------------------------
5127 Fill in Event data and post to the Main FSM
5128 ------------------------------------------------------------------------*/
5129 wdiEventData.wdiRequest = WDI_SET_LINK_ST_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005130 wdiEventData.pEventData = pwdiSetLinkStateReqParams;
5131 wdiEventData.uEventDataSize = sizeof(*pwdiSetLinkStateReqParams);
5132 wdiEventData.pCBfnc = wdiSetLinkStateRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005133 wdiEventData.pUserData = pUserData;
5134
5135 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5136
5137}/*WDI_SetLinkStateReq*/
5138
5139
5140/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005141 @brief WDI_GetStatsReq will be called when the upper MAC wants
Jeff Johnson295189b2012-06-20 16:38:30 -07005142 to get statistics (MIB counters) from the device. Upon
5143 the call of this API the WLAN DAL will pack and send a
5144 HAL Start request message to the lower RIVA sub-system
5145 if DAL is in state STARTED.
5146
5147 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005148 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005149
5150 WDI_Start must have been called.
5151
Jeff Johnsone7245742012-09-05 17:12:55 -07005152 @param wdiGetStatsReqParams: the stats parameters to get as
Jeff Johnson295189b2012-06-20 16:38:30 -07005153 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005154
Jeff Johnson295189b2012-06-20 16:38:30 -07005155 wdiGetStatsRspCb: callback for passing back the response
5156 of the get stats operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005157
Jeff Johnson295189b2012-06-20 16:38:30 -07005158 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005159 callback
5160
Jeff Johnson295189b2012-06-20 16:38:30 -07005161 @see WDI_Start
5162 @return Result of the function call
5163*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005164WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005165WDI_GetStatsReq
5166(
5167 WDI_GetStatsReqParamsType* pwdiGetStatsReqParams,
5168 WDI_GetStatsRspCb wdiGetStatsRspCb,
5169 void* pUserData
5170)
5171{
5172 WDI_EventInfoType wdiEventData;
5173 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5174
5175 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005176 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005177 ------------------------------------------------------------------------*/
5178 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5179 {
5180 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5181 "WDI API call before module is initialized - Fail request");
5182
Jeff Johnsone7245742012-09-05 17:12:55 -07005183 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005184 }
5185
5186 /*------------------------------------------------------------------------
5187 Fill in Event data and post to the Main FSM
5188 ------------------------------------------------------------------------*/
5189 wdiEventData.wdiRequest = WDI_GET_STATS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005190 wdiEventData.pEventData = pwdiGetStatsReqParams;
5191 wdiEventData.uEventDataSize = sizeof(*pwdiGetStatsReqParams);
5192 wdiEventData.pCBfnc = wdiGetStatsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005193 wdiEventData.pUserData = pUserData;
5194
5195 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5196
5197}/*WDI_GetStatsReq*/
5198
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -08005199#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_ESE || defined(FEATURE_WLAN_LFR)
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -08005200/**
5201 @brief WDI_GetRoamRssiReq will be called when the upper MAC wants
5202 to get roam rssi from the device. Upon
5203 the call of this API the WLAN DAL will pack and send a
5204 HAL Start request message to the lower RIVA sub-system
5205 if DAL is in state STARTED.
5206
5207 In state BUSY this request will be queued. Request won't
5208 be allowed in any other state.
5209
5210 WDI_Start must have been called.
5211
5212 @param wdiGetRoamRssiReqParams: the stats parameters to get as
5213 specified by the Device Interface
5214
5215 wdiGetRoamRssiRspCb: callback for passing back the response
5216 of the get stats operation received from the device
5217
5218 pUserData: user data will be passed back with the
5219 callback
5220
5221 @see WDI_Start
5222 @return Result of the function call
5223*/
5224WDI_Status
5225WDI_GetRoamRssiReq
5226(
5227 WDI_GetRoamRssiReqParamsType* pwdiGetRoamRssiReqParams,
5228 WDI_GetRoamRssiRspCb wdiGetRoamRssiRspCb,
5229 void* pUserData
5230)
5231{
5232 WDI_EventInfoType wdiEventData;
5233 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5234
5235 /*------------------------------------------------------------------------
5236 Sanity Check
5237 ------------------------------------------------------------------------*/
5238 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5239 {
5240 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5241 "WDI API call before module is initialized - Fail request");
5242
5243 return WDI_STATUS_E_NOT_ALLOWED;
5244 }
5245 /*------------------------------------------------------------------------
5246 Fill in Event data and post to the Main FSM
5247 ------------------------------------------------------------------------*/
5248 wdiEventData.wdiRequest = WDI_GET_ROAM_RSSI_REQ;
5249 wdiEventData.pEventData = pwdiGetRoamRssiReqParams;
5250 wdiEventData.uEventDataSize = sizeof(*pwdiGetRoamRssiReqParams);
5251 wdiEventData.pCBfnc = wdiGetRoamRssiRspCb;
5252 wdiEventData.pUserData = pUserData;
5253
5254 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5255
5256}/*WDI_GetRoamRssiReq*/
5257#endif
5258
Jeff Johnson295189b2012-06-20 16:38:30 -07005259
5260/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005261 @brief WDI_UpdateCfgReq will be called when the upper MAC when
Jeff Johnson295189b2012-06-20 16:38:30 -07005262 it wishes to change the configuration of the WLAN
5263 Device. Upon the call of this API the WLAN DAL will pack
5264 and send a HAL Update CFG request message to the lower
5265 RIVA sub-system if DAL is in state STARTED.
5266
5267 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005268 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005269
5270 WDI_Start must have been called.
5271
Jeff Johnsone7245742012-09-05 17:12:55 -07005272 @param wdiUpdateCfgReqParams: the update cfg parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07005273 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005274
Jeff Johnson295189b2012-06-20 16:38:30 -07005275 wdiUpdateCfgsRspCb: callback for passing back the
5276 response of the update cfg operation received from the
5277 device
Jeff Johnsone7245742012-09-05 17:12:55 -07005278
Jeff Johnson295189b2012-06-20 16:38:30 -07005279 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005280 callback
5281
Jeff Johnson295189b2012-06-20 16:38:30 -07005282 @see WDI_Start
5283 @return Result of the function call
5284*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005285WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005286WDI_UpdateCfgReq
5287(
5288 WDI_UpdateCfgReqParamsType* pwdiUpdateCfgReqParams,
5289 WDI_UpdateCfgRspCb wdiUpdateCfgsRspCb,
5290 void* pUserData
5291)
5292{
5293 WDI_EventInfoType wdiEventData;
5294 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5295
5296 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005297 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005298 ------------------------------------------------------------------------*/
5299 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5300 {
5301 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5302 "WDI API call before module is initialized - Fail request");
5303
Jeff Johnsone7245742012-09-05 17:12:55 -07005304 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005305 }
5306
5307 /*------------------------------------------------------------------------
5308 Fill in Event data and post to the Main FSM
5309 ------------------------------------------------------------------------*/
5310 wdiEventData.wdiRequest = WDI_UPDATE_CFG_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005311 wdiEventData.pEventData = pwdiUpdateCfgReqParams;
5312 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateCfgReqParams);
5313 wdiEventData.pCBfnc = wdiUpdateCfgsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005314 wdiEventData.pUserData = pUserData;
5315
5316 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5317
5318}/*WDI_UpdateCfgReq*/
5319
5320
5321
5322/**
5323 @brief WDI_AddBAReq will be called when the upper MAC has setup
5324 successfully a BA session and needs to notify the HW for
5325 the appropriate settings to take place. Upon the call of
5326 this API the WLAN DAL will pack and send a HAL Add BA
5327 request message to the lower RIVA sub-system if DAL is
5328 in state STARTED.
5329
5330 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005331 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005332
5333 WDI_PostAssocReq must have been called.
5334
5335 @param wdiAddBAReqParams: the add BA parameters as specified by
5336 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005337
Jeff Johnson295189b2012-06-20 16:38:30 -07005338 wdiAddBARspCb: callback for passing back the response of
5339 the add BA operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005340
Jeff Johnson295189b2012-06-20 16:38:30 -07005341 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005342 callback
5343
Jeff Johnson295189b2012-06-20 16:38:30 -07005344 @see WDI_PostAssocReq
5345 @return Result of the function call
5346*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005347WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005348WDI_AddBAReq
5349(
5350 WDI_AddBAReqParamsType* pwdiAddBAReqParams,
5351 WDI_AddBARspCb wdiAddBARspCb,
5352 void* pUserData
5353)
5354{
5355 WDI_EventInfoType wdiEventData;
5356 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5357
5358 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005359 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005360 ------------------------------------------------------------------------*/
5361 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5362 {
5363 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5364 "WDI API call before module is initialized - Fail request");
5365
Jeff Johnsone7245742012-09-05 17:12:55 -07005366 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005367 }
5368
5369 /*------------------------------------------------------------------------
5370 Fill in Event data and post to the Main FSM
5371 ------------------------------------------------------------------------*/
5372 wdiEventData.wdiRequest = WDI_ADD_BA_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005373 wdiEventData.pEventData = pwdiAddBAReqParams;
5374 wdiEventData.uEventDataSize = sizeof(*pwdiAddBAReqParams);
5375 wdiEventData.pCBfnc = wdiAddBARspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005376 wdiEventData.pUserData = pUserData;
5377
5378 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5379
5380}/*WDI_AddBAReq*/
5381
5382
5383/**
5384 @brief WDI_TriggerBAReq will be called when the upper MAC has setup
5385 successfully a BA session and needs to notify the HW for
5386 the appropriate settings to take place. Upon the call of
5387 this API the WLAN DAL will pack and send a HAL Add BA
5388 request message to the lower RIVA sub-system if DAL is
5389 in state STARTED.
5390
5391 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005392 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005393
5394 WDI_PostAssocReq must have been called.
5395
5396 @param wdiAddBAReqParams: the add BA parameters as specified by
5397 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005398
Jeff Johnson295189b2012-06-20 16:38:30 -07005399 wdiAddBARspCb: callback for passing back the response of
5400 the add BA operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005401
Jeff Johnson295189b2012-06-20 16:38:30 -07005402 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005403 callback
5404
Jeff Johnson295189b2012-06-20 16:38:30 -07005405 @see WDI_PostAssocReq
5406 @return Result of the function call
5407*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005408WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005409WDI_TriggerBAReq
5410(
5411 WDI_TriggerBAReqParamsType* pwdiTriggerBAReqParams,
5412 WDI_TriggerBARspCb wdiTriggerBARspCb,
5413 void* pUserData
5414)
5415{
5416 WDI_EventInfoType wdiEventData;
5417 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5418
5419 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005420 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005421 ------------------------------------------------------------------------*/
5422 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5423 {
5424 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5425 "WDI API call before module is initialized - Fail request");
5426
Jeff Johnsone7245742012-09-05 17:12:55 -07005427 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005428 }
5429
5430 /*------------------------------------------------------------------------
5431 Fill in Event data and post to the Main FSM
5432 ------------------------------------------------------------------------*/
5433 wdiEventData.wdiRequest = WDI_TRIGGER_BA_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005434 wdiEventData.pEventData = pwdiTriggerBAReqParams;
5435 wdiEventData.uEventDataSize = sizeof(*pwdiTriggerBAReqParams);
5436 wdiEventData.pCBfnc = wdiTriggerBARspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005437 wdiEventData.pUserData = pUserData;
5438
5439 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5440
5441}/*WDI_AddBAReq*/
5442
5443/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005444 @brief WDI_UpdateBeaconParamsReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07005445 wishes to update any of the Beacon parameters used by HW.
5446 Upon the call of this API the WLAN DAL will pack and send a HAL Update Beacon Params request
5447 message to the lower RIVA sub-system if DAL is in state
5448 STARTED.
5449
5450 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005451 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005452
5453 WDI_PostAssocReq must have been called.
5454
Jeff Johnsone7245742012-09-05 17:12:55 -07005455 @param wdiUpdateBeaconParams: the Beacon parameters as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07005456 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005457
Jeff Johnson295189b2012-06-20 16:38:30 -07005458 wdiUpdateBeaconParamsRspCb: callback for passing back the
5459 response of the start operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005460
Jeff Johnson295189b2012-06-20 16:38:30 -07005461 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005462 callback
5463
Jeff Johnson295189b2012-06-20 16:38:30 -07005464 @see WDI_PostAssocReq
5465 @return Result of the function call
5466*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005467WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005468WDI_UpdateBeaconParamsReq
5469(
5470 WDI_UpdateBeaconParamsType* pwdiUpdateBeaconParams,
5471 WDI_UpdateBeaconParamsRspCb wdiUpdateBeaconParamsRspCb,
5472 void* pUserData
5473)
5474{
5475 WDI_EventInfoType wdiEventData;
5476 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5477
5478 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005479 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005480 ------------------------------------------------------------------------*/
5481 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5482 {
5483 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5484 "WDI API call before module is initialized - Fail request");
5485
Jeff Johnsone7245742012-09-05 17:12:55 -07005486 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005487 }
5488
5489 /*------------------------------------------------------------------------
5490 Fill in Event data and post to the Main FSM
5491 ------------------------------------------------------------------------*/
5492 wdiEventData.wdiRequest = WDI_UPD_BCON_PRMS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005493 wdiEventData.pEventData = pwdiUpdateBeaconParams;
5494 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateBeaconParams);
5495 wdiEventData.pCBfnc = wdiUpdateBeaconParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005496 wdiEventData.pUserData = pUserData;
5497
5498 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5499
5500}/*WDI_UpdateBeaconParamsReq*/
5501
5502/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005503 @brief WDI_SendBeaconParamsReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07005504 wishes to update the Beacon template used by HW.
5505 Upon the call of this API the WLAN DAL will pack and send a HAL Update Beacon template request
5506 message to the lower RIVA sub-system if DAL is in state
5507 STARTED.
5508
5509 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005510 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005511
5512 WDI_PostAssocReq must have been called.
5513
Jeff Johnsone7245742012-09-05 17:12:55 -07005514 @param wdiSendBeaconParams: the Beacon parameters as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07005515 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005516
Jeff Johnson295189b2012-06-20 16:38:30 -07005517 wdiSendBeaconParamsRspCb: callback for passing back the
5518 response of the start operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005519
Jeff Johnson295189b2012-06-20 16:38:30 -07005520 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005521 callback
5522
Jeff Johnson295189b2012-06-20 16:38:30 -07005523 @see WDI_PostAssocReq
5524 @return Result of the function call
5525*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005526WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005527WDI_SendBeaconParamsReq
5528(
5529 WDI_SendBeaconParamsType* pwdiSendBeaconParams,
5530 WDI_SendBeaconParamsRspCb wdiSendBeaconParamsRspCb,
5531 void* pUserData
5532)
5533{
5534 WDI_EventInfoType wdiEventData;
5535 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5536
5537 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005538 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005539 ------------------------------------------------------------------------*/
5540 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5541 {
5542 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5543 "WDI API call before module is initialized - Fail request");
5544
Jeff Johnsone7245742012-09-05 17:12:55 -07005545 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005546 }
5547
5548 /*------------------------------------------------------------------------
5549 Fill in Event data and post to the Main FSM
5550 ------------------------------------------------------------------------*/
5551 wdiEventData.wdiRequest = WDI_SND_BCON_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005552 wdiEventData.pEventData = pwdiSendBeaconParams;
5553 wdiEventData.uEventDataSize = sizeof(*pwdiSendBeaconParams);
5554 wdiEventData.pCBfnc = wdiSendBeaconParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005555 wdiEventData.pUserData = pUserData;
5556
5557 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5558
5559}/*WDI_SendBeaconParamsReq*/
5560
5561/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005562 @brief WDI_UpdateProbeRspTemplateReq will be called when the
Jeff Johnson295189b2012-06-20 16:38:30 -07005563 upper MAC wants to update the probe response template to
5564 be transmitted as Soft AP
5565 Upon the call of this API the WLAN DAL will
5566 pack and send the probe rsp template message to the
5567 lower RIVA sub-system if DAL is in state STARTED.
5568
5569 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005570 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005571
5572
Jeff Johnsone7245742012-09-05 17:12:55 -07005573 @param pwdiUpdateProbeRspParams: the Update Beacon parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07005574 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005575
Jeff Johnson295189b2012-06-20 16:38:30 -07005576 wdiSendBeaconParamsRspCb: callback for passing back the
5577 response of the Send Beacon Params operation received
5578 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005579
Jeff Johnson295189b2012-06-20 16:38:30 -07005580 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005581 callback
5582
Jeff Johnson295189b2012-06-20 16:38:30 -07005583 @see WDI_AddBAReq
5584 @return Result of the function call
5585*/
5586
Jeff Johnsone7245742012-09-05 17:12:55 -07005587WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005588WDI_UpdateProbeRspTemplateReq
5589(
5590 WDI_UpdateProbeRspTemplateParamsType* pwdiUpdateProbeRspParams,
5591 WDI_UpdateProbeRspTemplateRspCb wdiUpdateProbeRspParamsRspCb,
5592 void* pUserData
5593)
5594{
5595 WDI_EventInfoType wdiEventData;
5596 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5597
5598 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005599 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005600 ------------------------------------------------------------------------*/
5601 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5602 {
5603 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5604 "WDI API call before module is initialized - Fail request");
5605
Jeff Johnsone7245742012-09-05 17:12:55 -07005606 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005607 }
5608
5609 /*------------------------------------------------------------------------
5610 Fill in Event data and post to the Main FSM
5611 ------------------------------------------------------------------------*/
5612 wdiEventData.wdiRequest = WDI_UPD_PROBE_RSP_TEMPLATE_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005613 wdiEventData.pEventData = pwdiUpdateProbeRspParams;
5614 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateProbeRspParams);
5615 wdiEventData.pCBfnc = wdiUpdateProbeRspParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005616 wdiEventData.pUserData = pUserData;
5617
5618 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5619
5620}/*WDI_UpdateProbeRspTemplateReq*/
5621
5622/**
5623 @brief WDI_NvDownloadReq will be called by the UMAC to download the NV blob
5624 to the NV memory.
5625
5626
5627 @param wdiNvDownloadReqParams: the NV Download parameters as specified by
5628 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005629
Jeff Johnson295189b2012-06-20 16:38:30 -07005630 wdiNvDownloadRspCb: callback for passing back the response of
5631 the NV Download operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005632
Jeff Johnson295189b2012-06-20 16:38:30 -07005633 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005634 callback
5635
Jeff Johnson295189b2012-06-20 16:38:30 -07005636 @see WDI_PostAssocReq
5637 @return Result of the function call
5638*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005639WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005640WDI_NvDownloadReq
5641(
5642 WDI_NvDownloadReqParamsType* pwdiNvDownloadReqParams,
5643 WDI_NvDownloadRspCb wdiNvDownloadRspCb,
5644 void* pUserData
5645)
5646{
5647 WDI_EventInfoType wdiEventData;
5648
5649 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005650 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005651 ------------------------------------------------------------------------*/
5652 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5653 {
5654 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5655 "WDI API call before module is initialized - Fail request");
5656
Jeff Johnsone7245742012-09-05 17:12:55 -07005657 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005658 }
5659
5660 /*------------------------------------------------------------------------
5661 Fill in Event data and post to the Main FSM
5662 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005663 wdiEventData.wdiRequest = WDI_NV_DOWNLOAD_REQ;
5664 wdiEventData.pEventData = (void *)pwdiNvDownloadReqParams;
5665 wdiEventData.uEventDataSize = sizeof(*pwdiNvDownloadReqParams);
5666 wdiEventData.pCBfnc = wdiNvDownloadRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005667 wdiEventData.pUserData = pUserData;
5668
5669 return WDI_PostMainEvent(&gWDICb, WDI_START_EVENT, &wdiEventData);
5670
5671}/*WDI_NVDownloadReq*/
5672
Jeff Johnson295189b2012-06-20 16:38:30 -07005673/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005674 @brief WDI_SetP2PGONOAReq will be called when the
Jeff Johnson295189b2012-06-20 16:38:30 -07005675 upper MAC wants to send Notice of Absence
5676 Upon the call of this API the WLAN DAL will
5677 pack and send the probe rsp template message to the
5678 lower RIVA sub-system if DAL is in state STARTED.
5679
5680 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005681 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005682
5683
Jeff Johnsone7245742012-09-05 17:12:55 -07005684 @param pwdiUpdateProbeRspParams: the Update Beacon parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07005685 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005686
Jeff Johnson295189b2012-06-20 16:38:30 -07005687 wdiSendBeaconParamsRspCb: callback for passing back the
5688 response of the Send Beacon Params operation received
5689 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005690
Jeff Johnson295189b2012-06-20 16:38:30 -07005691 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005692 callback
5693
Jeff Johnson295189b2012-06-20 16:38:30 -07005694 @see WDI_AddBAReq
5695 @return Result of the function call
5696*/
5697WDI_Status
5698WDI_SetP2PGONOAReq
5699(
5700 WDI_SetP2PGONOAReqParamsType* pwdiP2PGONOAReqParams,
5701 WDI_SetP2PGONOAReqParamsRspCb wdiP2PGONOAReqParamsRspCb,
5702 void* pUserData
5703)
5704{
5705 WDI_EventInfoType wdiEventData;
5706 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5707
5708 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005709 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005710 ------------------------------------------------------------------------*/
5711 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5712 {
5713 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5714 "WDI API call before module is initialized - Fail request");
5715
Jeff Johnsone7245742012-09-05 17:12:55 -07005716 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005717 }
5718
5719 /*------------------------------------------------------------------------
5720 Fill in Event data and post to the Main FSM
5721 ------------------------------------------------------------------------*/
5722 wdiEventData.wdiRequest = WDI_P2P_GO_NOTICE_OF_ABSENCE_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005723 wdiEventData.pEventData = pwdiP2PGONOAReqParams;
5724 wdiEventData.uEventDataSize = sizeof(*pwdiP2PGONOAReqParams);
5725 wdiEventData.pCBfnc = wdiP2PGONOAReqParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005726 wdiEventData.pUserData = pUserData;
5727
5728 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5729
5730}/*WDI_SetP2PGONOAReq*/
Jeff Johnson295189b2012-06-20 16:38:30 -07005731
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +05305732#ifdef FEATURE_WLAN_TDLS
5733/**
5734 @brief WDI_SetTDLSLinkEstablishReq will be called when the
5735 upper MAC wants to send TDLS Link Establish Request Parameters
5736 Upon the call of this API the WLAN DAL will
5737 pack and send the TDLS Link Establish Request message to the
5738 lower RIVA sub-system if DAL is in state STARTED.
5739
5740 In state BUSY this request will be queued. Request won't
5741 be allowed in any other state.
5742
5743
5744 @param pwdiTDLSLinkEstablishReqParams: TDLS Peer Parameters
5745 for Link Establishment (Used for PUAPSD , TDLS Off Channel ...)
5746
5747 wdiTDLSLinkEstablishReqRspCb: callback for passing back the
5748 response of the TDLS Link Establish request received
5749 from the device
5750
5751 pUserData: user data will be passed back with the
5752 callback
5753
5754 @see
5755 @return Result of the function call
5756*/
5757WDI_Status
5758WDI_SetTDLSLinkEstablishReq
5759(
5760 WDI_SetTDLSLinkEstablishReqParamsType* pwdiTDLSLinkEstablishReqParams,
5761 WDI_SetTDLSLinkEstablishReqParamsRspCb wdiTDLSLinkEstablishReqRspCb,
5762 void* pUserData
5763)
5764{
5765 WDI_EventInfoType wdiEventData;
5766 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5767
5768 /*------------------------------------------------------------------------
5769 Sanity Check
5770 ------------------------------------------------------------------------*/
5771 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5772 {
5773 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5774 "WDI API call before module is initialized - Fail request");
5775
5776 return WDI_STATUS_E_NOT_ALLOWED;
5777 }
5778
5779 /*------------------------------------------------------------------------
5780 Fill in Event data and post to the Main FSM
5781 ------------------------------------------------------------------------*/
5782 wdiEventData.wdiRequest = WDI_TDLS_LINK_ESTABLISH_REQ;
5783 wdiEventData.pEventData = pwdiTDLSLinkEstablishReqParams;
5784 wdiEventData.uEventDataSize = sizeof(*pwdiTDLSLinkEstablishReqParams);
5785 wdiEventData.pCBfnc = wdiTDLSLinkEstablishReqRspCb;
5786 wdiEventData.pUserData = pUserData;
5787
5788 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5789
5790}/*WDI_SetTDLSLinkEstablishReq*/
5791#endif
5792
Jeff Johnson295189b2012-06-20 16:38:30 -07005793/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005794 @brief WDI_AddSTASelfReq will be called when the
Jeff Johnson295189b2012-06-20 16:38:30 -07005795 UMAC wanted to add STA self while opening any new session
5796 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005797 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005798
5799
Jeff Johnsone7245742012-09-05 17:12:55 -07005800 @param pwdiAddSTASelfParams: the add sta self parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07005801 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005802
Jeff Johnson295189b2012-06-20 16:38:30 -07005803 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005804 callback
5805
5806 @see
Jeff Johnson295189b2012-06-20 16:38:30 -07005807 @return Result of the function call
5808*/
5809WDI_Status
5810WDI_AddSTASelfReq
5811(
5812 WDI_AddSTASelfReqParamsType* pwdiAddSTASelfReqParams,
5813 WDI_AddSTASelfParamsRspCb wdiAddSTASelfReqParamsRspCb,
5814 void* pUserData
5815)
5816{
5817 WDI_EventInfoType wdiEventData;
5818 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5819
5820 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005821 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005822 ------------------------------------------------------------------------*/
5823 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5824 {
5825 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5826 "WDI API call before module is initialized - Fail request");
5827
Jeff Johnsone7245742012-09-05 17:12:55 -07005828 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005829 }
5830
5831 /*------------------------------------------------------------------------
5832 Fill in Event data and post to the Main FSM
5833 ------------------------------------------------------------------------*/
5834 wdiEventData.wdiRequest = WDI_ADD_STA_SELF_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005835 wdiEventData.pEventData = pwdiAddSTASelfReqParams;
5836 wdiEventData.uEventDataSize = sizeof(*pwdiAddSTASelfReqParams);
5837 wdiEventData.pCBfnc = wdiAddSTASelfReqParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005838 wdiEventData.pUserData = pUserData;
5839
5840 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5841
5842}/*WDI_AddSTASelfReq*/
5843
5844
Jeff Johnsone7245742012-09-05 17:12:55 -07005845#ifdef WLAN_FEATURE_VOWIFI_11R
Jeff Johnson295189b2012-06-20 16:38:30 -07005846/**
5847 @brief WDI_AggrAddTSReq will be called when the upper MAC to inform
5848 the device of a successful add TSpec negotiation. HW
5849 needs to receive the TSpec Info from the UMAC in order
5850 to configure properly the QoS data traffic. Upon the
5851 call of this API the WLAN DAL will pack and send a HAL
5852 Add TS request message to the lower RIVA sub-system if
5853 DAL is in state STARTED.
5854
5855 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005856 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005857
5858 WDI_PostAssocReq must have been called.
5859
5860 @param wdiAddTsReqParams: the add TS parameters as specified by
5861 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005862
Jeff Johnson295189b2012-06-20 16:38:30 -07005863 wdiAddTsRspCb: callback for passing back the response of
5864 the add TS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005865
Jeff Johnson295189b2012-06-20 16:38:30 -07005866 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005867 callback
5868
Jeff Johnson295189b2012-06-20 16:38:30 -07005869 @see WDI_PostAssocReq
5870 @return Result of the function call
5871*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005872WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005873WDI_AggrAddTSReq
5874(
5875 WDI_AggrAddTSReqParamsType* pwdiAggrAddTsReqParams,
5876 WDI_AggrAddTsRspCb wdiAggrAddTsRspCb,
5877 void* pUserData
5878)
5879{
5880 WDI_EventInfoType wdiEventData;
5881 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5882
5883 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005884 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005885 ------------------------------------------------------------------------*/
5886 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5887 {
5888 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5889 "WDI API call before module is initialized - Fail request");
5890
Jeff Johnsone7245742012-09-05 17:12:55 -07005891 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005892 }
5893
5894 /*------------------------------------------------------------------------
5895 Fill in Event data and post to the Main FSM
5896 ------------------------------------------------------------------------*/
5897 wdiEventData.wdiRequest = WDI_AGGR_ADD_TS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005898 wdiEventData.pEventData = pwdiAggrAddTsReqParams;
5899 wdiEventData.uEventDataSize = sizeof(*pwdiAggrAddTsReqParams);
5900 wdiEventData.pCBfnc = wdiAggrAddTsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005901 wdiEventData.pUserData = pUserData;
5902
5903 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5904
5905}/*WDI_AggrAddTSReq*/
5906
5907#endif /* WLAN_FEATURE_VOWIFI_11R */
5908
Jeff Johnson295189b2012-06-20 16:38:30 -07005909/**
5910 @brief WDI_FTMCommandReq
5911 Post FTM Command Event
Jeff Johnsone7245742012-09-05 17:12:55 -07005912
5913 @param ftmCommandReq: FTM Command Body
5914 @param ftmCommandRspCb: FTM Response from HAL CB
Jeff Johnson295189b2012-06-20 16:38:30 -07005915 @param pUserData: Client Data
Jeff Johnsone7245742012-09-05 17:12:55 -07005916
Jeff Johnson295189b2012-06-20 16:38:30 -07005917 @see
5918 @return Result of the function call
5919*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005920WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005921WDI_FTMCommandReq
5922(
5923 WDI_FTMCommandReqType *ftmCommandReq,
5924 WDI_FTMCommandRspCb ftmCommandRspCb,
5925 void *pUserData
5926)
5927{
5928 WDI_EventInfoType wdiEventData;
5929 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5930
5931 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005932 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005933 ------------------------------------------------------------------------*/
5934 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5935 {
5936 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5937 "WDI API call before module is initialized - Fail request");
5938
Jeff Johnsone7245742012-09-05 17:12:55 -07005939 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005940 }
5941
5942 /*------------------------------------------------------------------------
5943 Fill in Event data and post to the Main FSM
5944 ------------------------------------------------------------------------*/
5945 wdiEventData.wdiRequest = WDI_FTM_CMD_REQ;
5946 wdiEventData.pEventData = (void *)ftmCommandReq;
5947 wdiEventData.uEventDataSize = ftmCommandReq->bodyLength + sizeof(wpt_uint32);
5948 wdiEventData.pCBfnc = ftmCommandRspCb;
5949 wdiEventData.pUserData = pUserData;
5950
5951 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5952}
Jeff Johnson295189b2012-06-20 16:38:30 -07005953/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005954 @brief WDI_HostResumeReq will be called
Jeff Johnson295189b2012-06-20 16:38:30 -07005955
5956 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005957 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005958
5959
5960 @param pwdiResumeReqParams: as specified by
5961 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005962
Jeff Johnson295189b2012-06-20 16:38:30 -07005963 wdiResumeReqRspCb: callback for passing back the response of
5964 the Resume Req received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005965
Jeff Johnson295189b2012-06-20 16:38:30 -07005966 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005967 callback
5968
5969 @see
Jeff Johnson295189b2012-06-20 16:38:30 -07005970 @return Result of the function call
5971*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005972WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005973WDI_HostResumeReq
5974(
5975 WDI_ResumeParamsType* pwdiResumeReqParams,
5976 WDI_HostResumeEventRspCb wdiResumeReqRspCb,
5977 void* pUserData
5978)
5979{
5980 WDI_EventInfoType wdiEventData;
5981 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5982
5983 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005984 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005985 ------------------------------------------------------------------------*/
5986 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5987 {
5988 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5989 "WDI API call before module is initialized - Fail request");
5990
Jeff Johnsone7245742012-09-05 17:12:55 -07005991 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005992 }
5993
5994 /*------------------------------------------------------------------------
5995 Fill in Event data and post to the Main FSM
5996 ------------------------------------------------------------------------*/
5997 wdiEventData.wdiRequest = WDI_HOST_RESUME_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005998 wdiEventData.pEventData = pwdiResumeReqParams;
5999 wdiEventData.uEventDataSize = sizeof(*pwdiResumeReqParams);
6000 wdiEventData.pCBfnc = wdiResumeReqRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07006001 wdiEventData.pUserData = pUserData;
6002
6003 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6004
6005}/*WDI_HostResumeReq*/
6006
6007/**
Jeff Johnsone7245742012-09-05 17:12:55 -07006008 @brief WDI_DelSTASelfReq will be called
Jeff Johnson295189b2012-06-20 16:38:30 -07006009
6010 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07006011 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07006012
6013
6014 @param pwdiDelStaSelfReqParams: as specified by
6015 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07006016
Jeff Johnson295189b2012-06-20 16:38:30 -07006017 wdiDelStaSelfRspCb: callback for passing back the response of
6018 the add TS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07006019
Jeff Johnson295189b2012-06-20 16:38:30 -07006020 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07006021 callback
6022
Jeff Johnson295189b2012-06-20 16:38:30 -07006023 @see WDI_PostAssocReq
6024 @return Result of the function call
6025*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006026WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07006027WDI_DelSTASelfReq
6028(
6029 WDI_DelSTASelfReqParamsType* pwdiDelStaSelfReqParams,
6030 WDI_DelSTASelfRspCb wdiDelStaSelfRspCb,
6031 void* pUserData
6032)
6033{
6034 WDI_EventInfoType wdiEventData;
6035 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6036
6037 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006038 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006039 ------------------------------------------------------------------------*/
6040 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6041 {
6042 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6043 "WDI API call before module is initialized - Fail request");
6044
Jeff Johnsone7245742012-09-05 17:12:55 -07006045 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006046 }
6047
6048 /*------------------------------------------------------------------------
6049 Fill in Event data and post to the Main FSM
6050 ------------------------------------------------------------------------*/
6051 wdiEventData.wdiRequest = WDI_DEL_STA_SELF_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07006052 wdiEventData.pEventData = pwdiDelStaSelfReqParams;
6053 wdiEventData.uEventDataSize = sizeof(*pwdiDelStaSelfReqParams);
6054 wdiEventData.pCBfnc = wdiDelStaSelfRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07006055 wdiEventData.pUserData = pUserData;
6056
6057 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6058
6059}/*WDI_AggrAddTSReq*/
6060
6061/**
Jeff Johnsone7245742012-09-05 17:12:55 -07006062 @brief WDI_SetTxPerTrackingReq will be called when the upper MAC
6063 wants to set the Tx Per Tracking configurations.
Jeff Johnson295189b2012-06-20 16:38:30 -07006064 Upon the call of this API the WLAN DAL will pack
6065 and send a HAL Set Tx Per Tracking request message to the
6066 lower RIVA sub-system if DAL is in state STARTED.
6067
6068 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07006069 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07006070
Jeff Johnsone7245742012-09-05 17:12:55 -07006071 @param pwdiSetTxPerTrackingReqParams: the Set Tx PER Tracking configurations as
Jeff Johnson295189b2012-06-20 16:38:30 -07006072 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07006073
Jeff Johnson295189b2012-06-20 16:38:30 -07006074 pwdiSetTxPerTrackingRspCb: callback for passing back the
6075 response of the set Tx PER Tracking configurations operation received
6076 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07006077
Jeff Johnson295189b2012-06-20 16:38:30 -07006078 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07006079 callback
6080
Jeff Johnson295189b2012-06-20 16:38:30 -07006081 @return Result of the function call
6082*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006083WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07006084WDI_SetTxPerTrackingReq
6085(
6086 WDI_SetTxPerTrackingReqParamsType* pwdiSetTxPerTrackingReqParams,
6087 WDI_SetTxPerTrackingRspCb pwdiSetTxPerTrackingRspCb,
6088 void* pUserData
6089)
6090{
6091 WDI_EventInfoType wdiEventData;
6092 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6093
6094 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006095 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006096 ------------------------------------------------------------------------*/
6097 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6098 {
6099 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6100 "WDI API call before module is initialized - Fail request");
6101
Jeff Johnsone7245742012-09-05 17:12:55 -07006102 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006103 }
6104
6105 /*------------------------------------------------------------------------
6106 Fill in Event data and post to the Main FSM
6107 ------------------------------------------------------------------------*/
6108 wdiEventData.wdiRequest = WDI_SET_TX_PER_TRACKING_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07006109 wdiEventData.pEventData = pwdiSetTxPerTrackingReqParams;
Jeff Johnson295189b2012-06-20 16:38:30 -07006110 wdiEventData.uEventDataSize = sizeof(*pwdiSetTxPerTrackingReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07006111 wdiEventData.pCBfnc = pwdiSetTxPerTrackingRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07006112 wdiEventData.pUserData = pUserData;
6113
6114 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6115
6116}/*WDI_SetTxPerTrackingReq*/
6117
6118/**
6119 @brief WDI_SetTmLevelReq
6120 If HW Thermal condition changed, driver should react based on new
6121 HW thermal condition.
6122
6123 @param pwdiSetTmLevelReq: New thermal condition information
6124
6125 pwdiSetTmLevelRspCb: callback
6126
6127 usrData: user data will be passed back with the
6128 callback
6129
6130 @return Result of the function call
6131*/
6132WDI_Status
6133WDI_SetTmLevelReq
6134(
6135 WDI_SetTmLevelReqType *pwdiSetTmLevelReq,
6136 WDI_SetTmLevelCb pwdiSetTmLevelRspCb,
6137 void *usrData
6138)
6139{
6140 WDI_EventInfoType wdiEventData;
6141 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6142
6143 /*------------------------------------------------------------------------
6144 Sanity Check
6145 ------------------------------------------------------------------------*/
6146 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6147 {
6148 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6149 "WDI API call before module is initialized - Fail request");
6150
6151 return WDI_STATUS_E_NOT_ALLOWED;
6152 }
6153
6154 /*------------------------------------------------------------------------
6155 Fill in Event data and post to the Main FSM
6156 ------------------------------------------------------------------------*/
6157 wdiEventData.wdiRequest = WDI_SET_TM_LEVEL_REQ;
6158 wdiEventData.pEventData = pwdiSetTmLevelReq;
6159 wdiEventData.uEventDataSize = sizeof(*pwdiSetTmLevelReq);
6160 wdiEventData.pCBfnc = pwdiSetTmLevelRspCb;
6161 wdiEventData.pUserData = usrData;
6162
6163 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6164}
6165
6166/**
6167 @brief WDI_HostSuspendInd
6168
6169 Suspend Indication from the upper layer will be sent
6170 down to HAL
Jeff Johnsone7245742012-09-05 17:12:55 -07006171
Jeff Johnson295189b2012-06-20 16:38:30 -07006172 @param WDI_SuspendResumeIndParamsType
Jeff Johnsone7245742012-09-05 17:12:55 -07006173
6174 @see
6175
Jeff Johnson295189b2012-06-20 16:38:30 -07006176 @return Status of the request
6177*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006178WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07006179WDI_HostSuspendInd
6180(
6181 WDI_SuspendParamsType* pwdiSuspendIndParams
6182)
6183{
6184
6185 WDI_EventInfoType wdiEventData;
6186 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6187
6188 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006189 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006190 ------------------------------------------------------------------------*/
6191 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6192 {
6193 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6194 "WDI API call before module is initialized - Fail request");
6195
Jeff Johnsone7245742012-09-05 17:12:55 -07006196 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006197 }
6198
6199 /*------------------------------------------------------------------------
6200 Fill in Event data and post to the Main FSM
6201 ------------------------------------------------------------------------*/
6202 wdiEventData.wdiRequest = WDI_HOST_SUSPEND_IND;
Jeff Johnsone7245742012-09-05 17:12:55 -07006203 wdiEventData.pEventData = pwdiSuspendIndParams;
6204 wdiEventData.uEventDataSize = sizeof(*pwdiSuspendIndParams);
6205 wdiEventData.pCBfnc = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07006206 wdiEventData.pUserData = NULL;
6207
6208 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6209
6210}/*WDI_HostSuspendInd*/
6211
6212/**
Madan Mohan Koyyalamudi01cba042013-01-10 21:56:05 -08006213 @brief WDI_TrafficStatsInd
6214 Traffic Stats from the upper layer will be sent
6215 down to HAL
6216
6217 @param WDI_TrafficStatsIndType
6218
6219 @see
6220
6221 @return Status of the request
6222*/
6223WDI_Status
6224WDI_TrafficStatsInd
6225(
6226 WDI_TrafficStatsIndType *pWdiTrafficStatsIndParams
6227)
6228{
6229
6230 WDI_EventInfoType wdiEventData;
6231 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6232
6233 /*------------------------------------------------------------------------
6234 Sanity Check
6235 ------------------------------------------------------------------------*/
6236 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6237 {
6238 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6239 "WDI API call before module is initialized - Fail request");
6240
6241 return WDI_STATUS_E_NOT_ALLOWED;
6242 }
6243
6244 /*------------------------------------------------------------------------
6245 Fill in Event data and post to the Main FSM
6246 ------------------------------------------------------------------------*/
6247 wdiEventData.wdiRequest = WDI_TRAFFIC_STATS_IND;
6248 wdiEventData.pEventData = pWdiTrafficStatsIndParams;
6249 wdiEventData.uEventDataSize = sizeof(*pWdiTrafficStatsIndParams);
6250 wdiEventData.pCBfnc = NULL;
6251 wdiEventData.pUserData = NULL;
6252
6253 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6254
6255}/*WDI_TrafficStatsInd*/
6256
Chet Lanctot186b5732013-03-18 10:26:30 -07006257#ifdef WLAN_FEATURE_11W
6258/**
6259 @brief WDI_ExcludeUnencryptedInd
6260 Register with HAL to receive/drop unencrypted frames
6261
6262 @param WDI_ExcludeUnencryptIndType
6263
6264 @see
6265
6266 @return Status of the request
6267*/
6268WDI_Status
6269WDI_ExcludeUnencryptedInd
6270(
6271 WDI_ExcludeUnencryptIndType *pWdiExcUnencParams
6272)
6273{
6274
6275 WDI_EventInfoType wdiEventData;
6276 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6277
6278 /*------------------------------------------------------------------------
6279 Sanity Check
6280 ------------------------------------------------------------------------*/
6281 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6282 {
6283 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6284 "WDI API call before module is initialized - Fail request");
6285
6286 return WDI_STATUS_E_NOT_ALLOWED;
6287 }
6288
6289 /*------------------------------------------------------------------------
6290 Fill in Event data and post to the Main FSM
6291 ------------------------------------------------------------------------*/
6292 wdiEventData.wdiRequest = WDI_EXCLUDE_UNENCRYPTED_IND;
6293 wdiEventData.pEventData = pWdiExcUnencParams;
6294 wdiEventData.uEventDataSize = sizeof(*pWdiExcUnencParams);
6295 wdiEventData.pCBfnc = NULL;
6296 wdiEventData.pUserData = NULL;
6297
6298 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6299
6300}/*WDI_TrafficStatsInd*/
6301#endif
6302
Madan Mohan Koyyalamudi01cba042013-01-10 21:56:05 -08006303/**
Yue Mab9c86f42013-08-14 15:59:08 -07006304 @brief WDI_AddPeriodicTxPtrnInd: Add Periodic TX Pattern Indication to FW
6305
6306 @param addPeriodicTxPtrnParams: Add Pattern parameters
6307
6308 @see
6309
6310 @return Status of the request
6311*/
6312WDI_Status
6313WDI_AddPeriodicTxPtrnInd
6314(
6315 WDI_AddPeriodicTxPtrnParamsType* addPeriodicTxPtrnParams
6316)
6317{
6318 WDI_EventInfoType wdiEventData;
6319
6320 /*-------------------------------------------------------------------------
6321 Sanity Check
6322 ------------------------------------------------------------------------*/
6323 if (eWLAN_PAL_FALSE == gWDIInitialized)
6324 {
6325 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6326 "WDI API call before module is initialized - Fail request!");
6327
6328 return WDI_STATUS_E_NOT_ALLOWED;
6329 }
6330
6331 /*-------------------------------------------------------------------------
6332 Fill in Event data and post to the Main FSM
6333 ------------------------------------------------------------------------*/
6334 wdiEventData.wdiRequest = WDI_ADD_PERIODIC_TX_PATTERN_IND;
6335 wdiEventData.pEventData = addPeriodicTxPtrnParams;
6336 wdiEventData.uEventDataSize = sizeof(WDI_AddPeriodicTxPtrnParamsType);
6337 wdiEventData.pCBfnc = NULL;
6338 wdiEventData.pUserData = NULL;
6339
6340 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6341}
6342
6343/**
6344 @brief WDI_DelPeriodicTxPtrnInd: Delete Periodic TX Pattern Indication to FW
6345
6346 @param delPeriodicTxPtrnParams: Delete Pattern parameters
6347
6348 @see
6349
6350 @return Status of the request
6351*/
6352WDI_Status
6353WDI_DelPeriodicTxPtrnInd
6354(
6355 WDI_DelPeriodicTxPtrnParamsType* delPeriodicTxPtrnParams
6356)
6357{
6358 WDI_EventInfoType wdiEventData;
6359
6360 /*-------------------------------------------------------------------------
6361 Sanity Check
6362 ------------------------------------------------------------------------*/
6363 if (eWLAN_PAL_FALSE == gWDIInitialized)
6364 {
6365 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6366 "WDI API call before module is initialized - Fail request!");
6367
6368 return WDI_STATUS_E_NOT_ALLOWED;
6369 }
6370
6371 /*-------------------------------------------------------------------------
6372 Fill in Event data and post to the Main FSM
6373 ------------------------------------------------------------------------*/
6374 wdiEventData.wdiRequest = WDI_DEL_PERIODIC_TX_PATTERN_IND;
6375 wdiEventData.pEventData = delPeriodicTxPtrnParams;
6376 wdiEventData.uEventDataSize = sizeof(WDI_DelPeriodicTxPtrnParamsType);
6377 wdiEventData.pCBfnc = NULL;
6378 wdiEventData.pUserData = NULL;
6379
6380 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6381}
6382
6383/**
Jeff Johnson295189b2012-06-20 16:38:30 -07006384 @brief WDI_HALDumpCmdReq
6385 Post HAL DUMP Command Event
Jeff Johnsone7245742012-09-05 17:12:55 -07006386
6387 @param halDumpCmdReqParams: Hal Dump Command Body
6388 @param halDumpCmdRspCb: HAL DUMP Response from HAL CB
Jeff Johnson295189b2012-06-20 16:38:30 -07006389 @param pUserData: Client Data
Jeff Johnsone7245742012-09-05 17:12:55 -07006390
Jeff Johnson295189b2012-06-20 16:38:30 -07006391 @see
6392 @return Result of the function call
6393*/
6394WDI_Status WDI_HALDumpCmdReq
6395(
6396 WDI_HALDumpCmdReqParamsType *halDumpCmdReqParams,
6397 WDI_HALDumpCmdRspCb halDumpCmdRspCb,
6398 void *pUserData
6399)
6400{
6401 WDI_EventInfoType wdiEventData;
6402 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6403
6404 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006405 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006406 ------------------------------------------------------------------------*/
6407 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6408 {
6409 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6410 "WDI API call before module is initialized - Fail request");
6411
Jeff Johnsone7245742012-09-05 17:12:55 -07006412 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006413 }
6414
6415 /*------------------------------------------------------------------------
6416 Fill in Event data and post to the Main FSM
6417 ------------------------------------------------------------------------*/
6418 wdiEventData.wdiRequest = WDI_HAL_DUMP_CMD_REQ;
6419 wdiEventData.pEventData = (void *)halDumpCmdReqParams;
6420 wdiEventData.uEventDataSize = sizeof(WDI_HALDumpCmdReqParamsType);
6421 wdiEventData.pCBfnc = halDumpCmdRspCb;
6422 wdiEventData.pUserData = pUserData;
6423
6424 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6425}
6426
Jeff Johnsone7245742012-09-05 17:12:55 -07006427/*============================================================================
6428
Jeff Johnson295189b2012-06-20 16:38:30 -07006429 DAL Control Path Main FSM Function Implementation
Jeff Johnsone7245742012-09-05 17:12:55 -07006430
Jeff Johnson295189b2012-06-20 16:38:30 -07006431 ============================================================================*/
6432
6433/**
6434 @brief Main FSM Start function for all states except BUSY
6435
Jeff Johnsone7245742012-09-05 17:12:55 -07006436
6437 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -07006438 wdiEV: event posted to the main DAL FSM
6439 pEventData: pointer to the event information
Jeff Johnsone7245742012-09-05 17:12:55 -07006440 structure
6441
Jeff Johnson295189b2012-06-20 16:38:30 -07006442 @see
6443 @return Result of the function call
6444*/
6445WDI_Status
6446WDI_PostMainEvent
6447(
Jeff Johnsone7245742012-09-05 17:12:55 -07006448 WDI_ControlBlockType* pWDICtx,
6449 WDI_MainEventType wdiEV,
Jeff Johnson295189b2012-06-20 16:38:30 -07006450 WDI_EventInfoType* pEventData
Jeff Johnson295189b2012-06-20 16:38:30 -07006451)
6452{
Jeff Johnsone7245742012-09-05 17:12:55 -07006453 WDI_Status wdiStatus;
6454 WDI_MainFuncType pfnWDIMainEvHdlr;
6455 WDI_MainStateType wdiOldState;
Jeff Johnson295189b2012-06-20 16:38:30 -07006456 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6457
6458 /*-------------------------------------------------------------------------
6459 Sanity check
6460 -------------------------------------------------------------------------*/
6461 if (( pWDICtx->uGlobalState >= WDI_MAX_ST ) ||
6462 ( wdiEV >= WDI_MAX_EVENT ))
6463 {
6464 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6465 "Invalid state or event in Post Main Ev function ST: %d EV: %d",
6466 pWDICtx->uGlobalState, wdiEV);
Jeff Johnsone7245742012-09-05 17:12:55 -07006467 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006468 }
6469
6470 /*Access to the global state must be locked */
6471 wpalMutexAcquire(&pWDICtx->wptMutex);
6472
6473 /*Fetch event handler for state*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006474 pfnWDIMainEvHdlr = wdiMainFSM[pWDICtx->uGlobalState].pfnMainTbl[wdiEV];
Jeff Johnson295189b2012-06-20 16:38:30 -07006475
6476 wdiOldState = pWDICtx->uGlobalState;
6477
6478 /*
Jeff Johnsone7245742012-09-05 17:12:55 -07006479 --Incase of WDI event is WDI_RESPONSE_EVENT and this is called when a
6480 response comes from CCPU for the request sent by host:
6481 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 -07006482 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 -07006483 --Incase of WDI event is WDI_RESPONSE_EVENT and it is an indication from the
Jeff Johnson295189b2012-06-20 16:38:30 -07006484 CCPU:
6485 don't change the state */
6486 if ( WDI_RESPONSE_EVENT != wdiEV)
6487 {
6488 /*Transition to BUSY State - the request is now being processed by the FSM,
6489 if the request fails we shall transition back to the old state, if not
6490 the request will manage its own state transition*/
6491 WDI_STATE_TRANSITION( pWDICtx, WDI_BUSY_ST);
6492 }
6493 /* If the state function associated with the EV is NULL it means that this
6494 event is not allowed in this state*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006495 if ( NULL != pfnWDIMainEvHdlr )
Jeff Johnson295189b2012-06-20 16:38:30 -07006496 {
6497 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -07006498 "Posting event %d in state: %d to the Main FSM",
Jeff Johnson295189b2012-06-20 16:38:30 -07006499 wdiEV, wdiOldState);
Jeff Johnsone7245742012-09-05 17:12:55 -07006500 wdiStatus = pfnWDIMainEvHdlr( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07006501 }
6502 else
6503 {
6504 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07006505 "Unexpected event %d in state: %d",
Jeff Johnson295189b2012-06-20 16:38:30 -07006506 wdiEV, wdiOldState);
Jeff Johnsone7245742012-09-05 17:12:55 -07006507 wdiStatus = WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006508 }
6509
6510 /* If a request handles itself well it will end up in a success or in a
6511 pending
6512 Success - means that the request was processed and the proper state
6513 transition already occurred or will occur when the resp is received
6514 - NO other state transition or dequeueing is required
Jeff Johnsone7245742012-09-05 17:12:55 -07006515
Jeff Johnson295189b2012-06-20 16:38:30 -07006516 Pending - means the request could not be processed at this moment in time
6517 because the FSM was already busy so no state transition or dequeueing
6518 is necessary anymore
Jeff Johnsone7245742012-09-05 17:12:55 -07006519
Jeff Johnson295189b2012-06-20 16:38:30 -07006520 Success for synchronous case means that the transition may occur and
6521 processing of pending requests may continue - so it should go through
6522 and restores the state and continue processing queued requests*/
6523 if (( WDI_STATUS_SUCCESS != wdiStatus )&&
6524 ( WDI_STATUS_PENDING != wdiStatus ))
6525 {
6526 if ( WDI_RESPONSE_EVENT != wdiEV)
6527 {
6528 /*The request has failed or could not be processed - transition back to
6529 the old state - check to see if anything was queued and try to execute
6530 The dequeue logic should post a message to a thread and return - no
6531 actual processing can occur */
6532 WDI_STATE_TRANSITION( pWDICtx, wdiOldState);
6533 }
6534 WDI_DequeuePendingReq(pWDICtx);
Jeff Johnsone7245742012-09-05 17:12:55 -07006535
Jeff Johnson295189b2012-06-20 16:38:30 -07006536 }
6537
6538 /* we have completed processing the event */
6539 wpalMutexRelease(&pWDICtx->wptMutex);
6540
Jeff Johnsone7245742012-09-05 17:12:55 -07006541 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07006542
6543}/*WDI_PostMainEvent*/
6544
6545
6546/*--------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006547 INIT State Functions
Jeff Johnson295189b2012-06-20 16:38:30 -07006548--------------------------------------------------------------------------*/
6549/**
6550 @brief Main FSM Start function for all states except BUSY
6551
Jeff Johnsone7245742012-09-05 17:12:55 -07006552
6553 @param pWDICtx: pointer to the WLAN DAL context
6554 pEventData: pointer to the event information structure
6555
Jeff Johnson295189b2012-06-20 16:38:30 -07006556 @see
6557 @return Result of the function call
6558*/
6559WDI_Status
6560WDI_MainStart
Jeff Johnsone7245742012-09-05 17:12:55 -07006561(
Jeff Johnson295189b2012-06-20 16:38:30 -07006562 WDI_ControlBlockType* pWDICtx,
6563 WDI_EventInfoType* pEventData
6564)
6565{
6566
6567 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006568 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006569 ----------------------------------------------------------------------*/
6570 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6571 {
6572 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08006573 "Invalid parameters on Main Start Started %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07006574 pWDICtx, pEventData);
6575 return WDI_STATUS_E_FAILURE;
6576 }
6577
6578 wpalMutexAcquire(&pWDICtx->wptMutex);
6579
6580 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006581 Check if the Control Transport has been opened
Jeff Johnson295189b2012-06-20 16:38:30 -07006582 ----------------------------------------------------------------------*/
6583 if ( eWLAN_PAL_FALSE == pWDICtx->bCTOpened )
6584 {
6585 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
6586 "Control Transport not yet Open - queueing the request");
6587
6588 WDI_STATE_TRANSITION( pWDICtx, WDI_INIT_ST);
Jeff Johnsone7245742012-09-05 17:12:55 -07006589 WDI_QueuePendingReq( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07006590
6591 wpalMutexRelease(&pWDICtx->wptMutex);
6592 return WDI_STATUS_PENDING;
6593 }
Jeff Johnsone7245742012-09-05 17:12:55 -07006594
Jeff Johnson295189b2012-06-20 16:38:30 -07006595 wpalMutexRelease(&pWDICtx->wptMutex);
6596
6597 /*Return Success*/
6598 return WDI_ProcessRequest( pWDICtx, pEventData );
6599
6600}/*WDI_MainStart*/
6601
6602/**
6603 @brief Main FSM Response function for state INIT
6604
Jeff Johnsone7245742012-09-05 17:12:55 -07006605
6606 @param pWDICtx: pointer to the WLAN DAL context
6607 pEventData: pointer to the event information structure
6608
Jeff Johnson295189b2012-06-20 16:38:30 -07006609 @see
6610 @return Result of the function call
6611*/
6612WDI_Status
6613WDI_MainRspInit
Jeff Johnsone7245742012-09-05 17:12:55 -07006614(
Jeff Johnson295189b2012-06-20 16:38:30 -07006615 WDI_ControlBlockType* pWDICtx,
6616 WDI_EventInfoType* pEventData
6617)
6618{
6619 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006620 Not expecting a response from the device before it is started
Jeff Johnson295189b2012-06-20 16:38:30 -07006621 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006622 WDI_ASSERT(0);
Jeff Johnson295189b2012-06-20 16:38:30 -07006623
6624 /*Return Success*/
6625 return WDI_STATUS_E_NOT_ALLOWED;
6626}/* WDI_MainRspInit */
6627
6628/**
6629 @brief Main FSM Close function for all states except BUSY
6630
Jeff Johnsone7245742012-09-05 17:12:55 -07006631
6632 @param pWDICtx: pointer to the WLAN DAL context
6633 pEventData: pointer to the event information structure
6634
Jeff Johnson295189b2012-06-20 16:38:30 -07006635 @see
6636 @return Result of the function call
6637*/
6638WDI_Status
6639WDI_MainClose
Jeff Johnsone7245742012-09-05 17:12:55 -07006640(
Jeff Johnson295189b2012-06-20 16:38:30 -07006641 WDI_ControlBlockType* pWDICtx,
6642 WDI_EventInfoType* pEventData
6643)
6644{
6645
6646 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006647 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006648 ----------------------------------------------------------------------*/
6649 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6650 {
6651 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08006652 "Invalid parameters on Main Close %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07006653 pWDICtx, pEventData);
6654 return WDI_STATUS_E_FAILURE;
6655 }
6656
6657 /*Return Success*/
6658 return WDI_ProcessRequest( pWDICtx, pEventData );
6659
6660}/*WDI_MainClose*/
6661/*--------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006662 STARTED State Functions
Jeff Johnson295189b2012-06-20 16:38:30 -07006663--------------------------------------------------------------------------*/
6664/**
6665 @brief Main FSM Start function for state STARTED
6666
Jeff Johnsone7245742012-09-05 17:12:55 -07006667
6668 @param pWDICtx: pointer to the WLAN DAL context
6669 pEventData: pointer to the event information structure
6670
Jeff Johnson295189b2012-06-20 16:38:30 -07006671 @see
6672 @return Result of the function call
6673*/
6674WDI_Status
6675WDI_MainStartStarted
Jeff Johnsone7245742012-09-05 17:12:55 -07006676(
Jeff Johnson295189b2012-06-20 16:38:30 -07006677 WDI_ControlBlockType* pWDICtx,
6678 WDI_EventInfoType* pEventData
6679)
6680{
6681 WDI_StartRspCb wdiStartRspCb = NULL;
6682 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6683
6684 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006685 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006686 ----------------------------------------------------------------------*/
6687 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6688 {
6689 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08006690 "Invalid parameters on Main Start %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07006691 pWDICtx, pEventData);
6692 return WDI_STATUS_E_FAILURE;
6693 }
6694
6695 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006696 Nothing to do transport was already started
Jeff Johnson295189b2012-06-20 16:38:30 -07006697 ----------------------------------------------------------------------*/
6698 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -07006699 "Received start while transport was already started - nothing to do");
Jeff Johnson295189b2012-06-20 16:38:30 -07006700
6701 wpalMutexAcquire(&pWDICtx->wptMutex);
6702
6703 /*Transition back to started because the post function transitioned us to
6704 busy*/
6705 WDI_STATE_TRANSITION( pWDICtx, WDI_STARTED_ST);
6706
6707 /*Check to see if any request is pending*/
6708 WDI_DequeuePendingReq(pWDICtx);
Jeff Johnsone7245742012-09-05 17:12:55 -07006709
Jeff Johnson295189b2012-06-20 16:38:30 -07006710 wpalMutexRelease(&pWDICtx->wptMutex);
6711
6712 /*Tell UMAC Success*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006713 wdiStartRspCb = (WDI_StartRspCb)pEventData->pCBfnc;
6714
Jeff Johnson295189b2012-06-20 16:38:30 -07006715 /*Notify UMAC*/
6716 wdiStartRspCb( &pWDICtx->wdiCachedStartRspParams, pWDICtx->pRspCBUserData);
6717
6718 /*Return Success*/
6719 return WDI_STATUS_SUCCESS;
6720
6721}/*WDI_MainStartStarted*/
6722
6723/**
6724 @brief Main FSM Stop function for state STARTED
6725
Jeff Johnsone7245742012-09-05 17:12:55 -07006726
6727 @param pWDICtx: pointer to the WLAN DAL context
6728 pEventData: pointer to the event information structure
6729
Jeff Johnson295189b2012-06-20 16:38:30 -07006730 @see
6731 @return Result of the function call
6732*/
6733WDI_Status
6734WDI_MainStopStarted
Jeff Johnsone7245742012-09-05 17:12:55 -07006735(
Jeff Johnson295189b2012-06-20 16:38:30 -07006736 WDI_ControlBlockType* pWDICtx,
6737 WDI_EventInfoType* pEventData
6738)
6739{
6740 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006741 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006742 ----------------------------------------------------------------------*/
6743 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6744 {
6745 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08006746 "Invalid parameters on Main Stop Started %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07006747 pWDICtx, pEventData);
6748 return WDI_STATUS_E_FAILURE;
6749 }
6750
6751 /*State at this point is BUSY - because we enter this state before posting
6752 an event to the FSM in order to prevent potential race conditions*/
6753
6754 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
6755 "Processing stop request in FSM");
6756
6757 /*Return Success*/
6758 return WDI_ProcessRequest( pWDICtx, pEventData );
6759
6760}/*WDI_MainStopStarted*/
6761/**
6762 @brief Main FSM Request function for state started
6763
Jeff Johnsone7245742012-09-05 17:12:55 -07006764
6765 @param pWDICtx: pointer to the WLAN DAL context
6766 pEventData: pointer to the event information structure
6767
Jeff Johnson295189b2012-06-20 16:38:30 -07006768 @see
6769 @return Result of the function call
6770*/
6771WDI_Status
6772WDI_MainReqStarted
Jeff Johnsone7245742012-09-05 17:12:55 -07006773(
Jeff Johnson295189b2012-06-20 16:38:30 -07006774 WDI_ControlBlockType* pWDICtx,
6775 WDI_EventInfoType* pEventData
6776)
6777{
6778
6779 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006780 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006781 ----------------------------------------------------------------------*/
6782 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6783 {
6784 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08006785 "Invalid parameters on Main Req Started %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07006786 pWDICtx, pEventData);
6787 return WDI_STATUS_E_FAILURE;
6788 }
6789
6790 /*State at this point is BUSY - because we enter this state before posting
6791 an event to the FSM in order to prevent potential race conditions*/
6792
6793 /*Return Success*/
6794 return WDI_ProcessRequest( pWDICtx, pEventData );
6795
6796}/*WDI_MainReqStarted*/
6797
6798/**
6799 @brief Main FSM Response function for all states except INIT
6800
Jeff Johnsone7245742012-09-05 17:12:55 -07006801
6802 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -07006803 pEventData: pointer to the event information structure
Jeff Johnsone7245742012-09-05 17:12:55 -07006804
Jeff Johnson295189b2012-06-20 16:38:30 -07006805 @see
6806 @return Result of the function call
6807*/
6808WDI_Status
6809WDI_MainRsp
Jeff Johnsone7245742012-09-05 17:12:55 -07006810(
Jeff Johnson295189b2012-06-20 16:38:30 -07006811 WDI_ControlBlockType* pWDICtx,
6812 WDI_EventInfoType* pEventData
6813)
6814{
Jeff Johnsone7245742012-09-05 17:12:55 -07006815 WDI_Status wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07006816 wpt_boolean expectedResponse;
6817
6818 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006819 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006820 ----------------------------------------------------------------------*/
6821 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6822 {
6823 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08006824 "Invalid parameters on Main Response %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07006825 pWDICtx, pEventData);
6826 return WDI_STATUS_E_FAILURE;
6827 }
6828
6829 if ( pEventData->wdiResponse == pWDICtx->wdiExpectedResponse )
6830 {
6831 /* we received an expected response */
6832 expectedResponse = eWLAN_PAL_TRUE;
6833
6834 /*We expect that we will transition to started after this processing*/
6835 pWDICtx->ucExpectedStateTransition = WDI_STARTED_ST;
6836
6837 /* we are no longer expecting a response */
6838 pWDICtx->wdiExpectedResponse = WDI_MAX_RESP;
6839 }
6840 else
6841 {
6842 /* we received an indication or unexpected response */
6843 expectedResponse = eWLAN_PAL_FALSE;
6844 /* for indications no need to update state from what it is right
6845 now, unless it explicitly does it in the indication handler (say
6846 for device failure ind) */
6847 pWDICtx->ucExpectedStateTransition = pWDICtx->uGlobalState;
6848 }
6849
6850 /*Process the response and indication */
6851 wdiStatus = WDI_ProcessResponse( pWDICtx, pEventData );
6852
6853 /*Lock the CB as we are about to do a state transition*/
6854 wpalMutexAcquire(&pWDICtx->wptMutex);
6855
6856 /*Transition to the expected state after the response processing
6857 - this should always be started state with the following exceptions:
6858 1. processing of a failed start response
6859 2. device failure detected while processing response
6860 3. stop response received*/
6861 WDI_STATE_TRANSITION( pWDICtx, pWDICtx->ucExpectedStateTransition);
Jeff Johnsone7245742012-09-05 17:12:55 -07006862
Jeff Johnson295189b2012-06-20 16:38:30 -07006863 /*Dequeue request that may have been queued while we were waiting for the
6864 response */
6865 if ( expectedResponse )
6866 {
Jeff Johnsone7245742012-09-05 17:12:55 -07006867 WDI_DequeuePendingReq(pWDICtx);
Jeff Johnson295189b2012-06-20 16:38:30 -07006868 }
6869
6870 wpalMutexRelease(&pWDICtx->wptMutex);
6871
6872 /*Return Success - always */
Jeff Johnsone7245742012-09-05 17:12:55 -07006873 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07006874
6875}/*WDI_MainRsp*/
6876
6877/*--------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006878 STOPPED State Functions
Jeff Johnson295189b2012-06-20 16:38:30 -07006879--------------------------------------------------------------------------*/
6880/**
6881 @brief Main FSM Stop function for state STOPPED
6882
Jeff Johnsone7245742012-09-05 17:12:55 -07006883
6884 @param pWDICtx: pointer to the WLAN DAL context
6885 pEventData: pointer to the event information structure
6886
Jeff Johnson295189b2012-06-20 16:38:30 -07006887 @see
6888 @return Result of the function call
6889*/
6890WDI_Status
6891WDI_MainStopStopped
Jeff Johnsone7245742012-09-05 17:12:55 -07006892(
Jeff Johnson295189b2012-06-20 16:38:30 -07006893 WDI_ControlBlockType* pWDICtx,
6894 WDI_EventInfoType* pEventData
6895)
6896{
6897 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006898 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006899 ----------------------------------------------------------------------*/
6900 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6901 {
6902 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08006903 "Invalid parameters on Main Stop Stopped %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07006904 pWDICtx, pEventData);
6905 return WDI_STATUS_E_FAILURE;
6906 }
6907
6908 /*We should normally not get a STOP request if we are already stopped
6909 since we should normally be stopped by the UMAC. However in some
6910 error situations we put ourselves in the stopped state without the
6911 UMAC knowing, so when we get a STOP request in this state we still
6912 process it since we need to clean up the underlying state */
6913 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6914 "Processing stop request while stopped in FSM");
6915
6916 /*Return Success*/
6917 return WDI_ProcessRequest( pWDICtx, pEventData );
6918
6919}/*WDI_MainStopStopped*/
6920
6921/*--------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006922 BUSY State Functions
Jeff Johnson295189b2012-06-20 16:38:30 -07006923--------------------------------------------------------------------------*/
6924/**
6925 @brief Main FSM Start function for state BUSY
6926
Jeff Johnsone7245742012-09-05 17:12:55 -07006927
6928 @param pWDICtx: pointer to the WLAN DAL context
6929 pEventData: pointer to the event information structure
6930
Jeff Johnson295189b2012-06-20 16:38:30 -07006931 @see
6932 @return Result of the function call
6933*/
6934WDI_Status
6935WDI_MainStartBusy
Jeff Johnsone7245742012-09-05 17:12:55 -07006936(
Jeff Johnson295189b2012-06-20 16:38:30 -07006937 WDI_ControlBlockType* pWDICtx,
6938 WDI_EventInfoType* pEventData
6939)
6940{
6941 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006942 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006943 ----------------------------------------------------------------------*/
6944 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6945 {
6946 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08006947 "Invalid parameters on Main Start in BUSY %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07006948 pWDICtx, pEventData);
6949 return WDI_STATUS_E_FAILURE;
6950 }
6951
6952 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006953 Check if the Control Transport has been opened
Jeff Johnson295189b2012-06-20 16:38:30 -07006954 ----------------------------------------------------------------------*/
6955 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
6956 "WDI Busy state - queue start request");
6957
6958 /*Queue the start request*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006959 WDI_QueuePendingReq( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07006960
6961 /*Return Success*/
6962 return WDI_STATUS_PENDING;
6963}/*WDI_MainStartBusy*/
6964
6965/**
6966 @brief Main FSM Stop function for state BUSY
6967
Jeff Johnsone7245742012-09-05 17:12:55 -07006968
6969 @param pWDICtx: pointer to the WLAN DAL context
6970 pEventData: pointer to the event information structure
6971
Jeff Johnson295189b2012-06-20 16:38:30 -07006972 @see
6973 @return Result of the function call
6974*/
6975WDI_Status
6976WDI_MainStopBusy
Jeff Johnsone7245742012-09-05 17:12:55 -07006977(
Jeff Johnson295189b2012-06-20 16:38:30 -07006978 WDI_ControlBlockType* pWDICtx,
6979 WDI_EventInfoType* pEventData
6980)
6981{
6982 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006983 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006984 ----------------------------------------------------------------------*/
6985 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6986 {
6987 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08006988 "Invalid parameters on Main Stop in BUSY %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07006989 pWDICtx, pEventData);
6990 return WDI_STATUS_E_FAILURE;
6991 }
6992
6993 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006994 Check if the Control Transport has been opened
Jeff Johnson295189b2012-06-20 16:38:30 -07006995 ----------------------------------------------------------------------*/
6996 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
6997 "WDI Busy state - queue stop request");
6998
Jeff Johnsone7245742012-09-05 17:12:55 -07006999 WDI_QueuePendingReq( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07007000 return WDI_STATUS_PENDING;
Jeff Johnsone7245742012-09-05 17:12:55 -07007001
Jeff Johnson295189b2012-06-20 16:38:30 -07007002}/*WDI_MainStopBusy*/
7003
7004/**
7005 @brief Main FSM Request function for state BUSY
7006
Jeff Johnsone7245742012-09-05 17:12:55 -07007007
7008 @param pWDICtx: pointer to the WLAN DAL context
7009 pEventData: pointer to the event information structure
7010
Jeff Johnson295189b2012-06-20 16:38:30 -07007011 @see
7012 @return Result of the function call
7013*/
7014WDI_Status
7015WDI_MainReqBusy
Jeff Johnsone7245742012-09-05 17:12:55 -07007016(
Jeff Johnson295189b2012-06-20 16:38:30 -07007017 WDI_ControlBlockType* pWDICtx,
7018 WDI_EventInfoType* pEventData
7019)
7020{
7021 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007022 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07007023 ----------------------------------------------------------------------*/
7024 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
7025 {
7026 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007027 "Invalid parameters on Main Request in BUSY %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007028 pWDICtx, pEventData);
7029 return WDI_STATUS_E_FAILURE;
7030 }
7031
7032 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007033 Check if the Control Transport has been opened
Jeff Johnson295189b2012-06-20 16:38:30 -07007034 ----------------------------------------------------------------------*/
7035 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7036 "WDI Busy state - queue request %d because waiting for response %d",
7037 pEventData->wdiRequest, pWDICtx->wdiExpectedResponse);
7038
Jeff Johnsone7245742012-09-05 17:12:55 -07007039 WDI_QueuePendingReq( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07007040 return WDI_STATUS_PENDING;
Jeff Johnsone7245742012-09-05 17:12:55 -07007041
Jeff Johnson295189b2012-06-20 16:38:30 -07007042}/*WDI_MainReqBusy*/
7043/**
7044 @brief Main FSM Close function for state BUSY
7045
Jeff Johnsone7245742012-09-05 17:12:55 -07007046
7047 @param pWDICtx: pointer to the WLAN DAL context
7048 pEventData: pointer to the event information structure
7049
Jeff Johnson295189b2012-06-20 16:38:30 -07007050 @see
7051 @return Result of the function call
7052*/
7053WDI_Status
7054WDI_MainCloseBusy
Jeff Johnsone7245742012-09-05 17:12:55 -07007055(
Jeff Johnson295189b2012-06-20 16:38:30 -07007056 WDI_ControlBlockType* pWDICtx,
7057 WDI_EventInfoType* pEventData
7058)
7059{
7060 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007061 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07007062 ----------------------------------------------------------------------*/
7063 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
7064 {
7065 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007066 "Invalid parameters on Main Close in BUSY %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007067 pWDICtx, pEventData);
7068 return WDI_STATUS_E_FAILURE;
7069 }
7070
7071 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007072 Check if the Control Transport has been opened
Jeff Johnson295189b2012-06-20 16:38:30 -07007073 ----------------------------------------------------------------------*/
7074 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7075 "WDI Busy state - queue close request");
7076
Jeff Johnsone7245742012-09-05 17:12:55 -07007077 WDI_QueuePendingReq( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07007078 return WDI_STATUS_PENDING;
Jeff Johnsone7245742012-09-05 17:12:55 -07007079
Jeff Johnson295189b2012-06-20 16:38:30 -07007080}/*WDI_MainCloseBusy*/
7081
7082/**
7083 @brief Main FSM Shutdown function for INIT & STARTED states
7084
7085
7086 @param pWDICtx: pointer to the WLAN DAL context
7087 pEventData: pointer to the event information structure
7088
7089 @see
7090 @return Result of the function call
7091*/
7092WDI_Status
7093WDI_MainShutdown
7094(
7095 WDI_ControlBlockType* pWDICtx,
7096 WDI_EventInfoType* pEventData
7097)
7098{
7099 /*--------------------------------------------------------------------
7100 Sanity Check
7101 ----------------------------------------------------------------------*/
7102 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
7103 {
7104 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007105 "Invalid parameters on Main Start %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007106 pWDICtx, pEventData);
7107 return WDI_STATUS_E_FAILURE;
7108 }
7109
7110 /*State at this point is BUSY - because we enter this state before posting
7111 an event to the FSM in order to prevent potential race conditions*/
7112
7113 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
7114 "Processing shutdown request in FSM");
7115
7116 /*Return Success*/
7117 return WDI_ProcessRequest( pWDICtx, pEventData );
7118
7119}/*WDI_MainShutdown*/
7120
7121/**
7122 @brief Main FSM Shutdown function for BUSY state
7123
7124
7125 @param pWDICtx: pointer to the WLAN DAL context
7126 pEventData: pointer to the event information structure
7127
7128 @see
7129 @return Result of the function call
7130*/
7131WDI_Status
7132WDI_MainShutdownBusy
7133(
7134 WDI_ControlBlockType* pWDICtx,
7135 WDI_EventInfoType* pEventData
7136)
7137{
7138 /*--------------------------------------------------------------------
7139 Sanity Check
7140 ----------------------------------------------------------------------*/
7141 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
7142 {
7143 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007144 "Invalid parameters on Main Start %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007145 pWDICtx, pEventData);
7146 return WDI_STATUS_E_FAILURE;
7147 }
7148
7149 /* If you are waiting for a HAL response at this stage, you are not
7150 * going to get it. Riva is already shutdown/crashed.
7151 */
7152 wpalTimerStop(&gWDICb.wptResponseTimer);
7153
7154 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
7155 "Processing shutdown request in FSM: Busy state ");
7156
7157 return WDI_ProcessRequest( pWDICtx, pEventData );
7158
7159}/*WDI_MainShutdownBusy*/
7160
7161
Jeff Johnsone7245742012-09-05 17:12:55 -07007162/*=======================================================================
7163
Jeff Johnson295189b2012-06-20 16:38:30 -07007164 WLAN DAL Control Path Main Processing Functions
Jeff Johnsone7245742012-09-05 17:12:55 -07007165
Jeff Johnson295189b2012-06-20 16:38:30 -07007166*=======================================================================*/
7167
7168/*========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -07007169 Main DAL Control Path Request Processing API
Jeff Johnson295189b2012-06-20 16:38:30 -07007170========================================================================*/
7171/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007172 @brief Process Start Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07007173 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007174
7175 @param pWDICtx: pointer to the WLAN DAL context
7176 pEventData: pointer to the event information structure
7177
Jeff Johnson295189b2012-06-20 16:38:30 -07007178 @see
7179 @return Result of the function call
7180*/
7181WDI_Status
7182WDI_ProcessStartReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007183(
Jeff Johnson295189b2012-06-20 16:38:30 -07007184 WDI_ControlBlockType* pWDICtx,
7185 WDI_EventInfoType* pEventData
7186)
7187{
7188 WDI_StartReqParamsType* pwdiStartParams = NULL;
7189 WDI_StartRspCb wdiStartRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07007190 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07007191 wpt_uint16 usDataOffset = 0;
7192 wpt_uint16 usSendSize = 0;
7193
Jeff Johnsone7245742012-09-05 17:12:55 -07007194 tHalMacStartReqMsg halStartReq;
7195 wpt_uint16 usLen = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07007196 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7197
7198 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007199 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07007200 -------------------------------------------------------------------------*/
7201 if (( NULL == pEventData ) ||
7202 ( NULL == (pwdiStartParams = (WDI_StartReqParamsType*)pEventData->pEventData)) ||
7203 ( NULL == (wdiStartRspCb = (WDI_StartRspCb)pEventData->pCBfnc)))
7204 {
7205 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07007206 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07007207 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007208 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007209 }
7210
7211 /*-----------------------------------------------------------------------
7212 Get message buffer
7213 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007214 usLen = sizeof(halStartReq.startReqParams) +
Jeff Johnson295189b2012-06-20 16:38:30 -07007215 pwdiStartParams->usConfigBufferLen;
7216
Jeff Johnsone7245742012-09-05 17:12:55 -07007217 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_START_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07007218 usLen,
7219 &pSendBuffer, &usDataOffset, &usSendSize))||
7220 ( usSendSize < (usDataOffset + usLen )))
7221 {
7222 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007223 "Unable to get send buffer in start req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007224 pEventData, pwdiStartParams, wdiStartRspCb);
7225 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007226 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007227 }
7228
7229 /*-----------------------------------------------------------------------
7230 Fill in the message
7231 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007232 halStartReq.startReqParams.driverType =
7233 WDI_2_HAL_DRV_TYPE(pwdiStartParams->wdiDriverType);
Jeff Johnson295189b2012-06-20 16:38:30 -07007234
Jeff Johnsone7245742012-09-05 17:12:55 -07007235 halStartReq.startReqParams.uConfigBufferLen =
7236 pwdiStartParams->usConfigBufferLen;
7237 wpalMemoryCopy( pSendBuffer+usDataOffset,
7238 &halStartReq.startReqParams,
7239 sizeof(halStartReq.startReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07007240
Jeff Johnsone7245742012-09-05 17:12:55 -07007241 usDataOffset += sizeof(halStartReq.startReqParams);
7242 wpalMemoryCopy( pSendBuffer+usDataOffset,
7243 pwdiStartParams->pConfigBuffer,
7244 pwdiStartParams->usConfigBufferLen);
Jeff Johnson295189b2012-06-20 16:38:30 -07007245
7246 pWDICtx->wdiReqStatusCB = pwdiStartParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07007247 pWDICtx->pReqStatusUserData = pwdiStartParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07007248
7249 /*Save Low Level Ind CB and associated user data - it will be used further
7250 on when an indication is coming from the lower MAC*/
7251 pWDICtx->wdiLowLevelIndCB = pwdiStartParams->wdiLowLevelIndCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07007252 pWDICtx->pIndUserData = pwdiStartParams->pIndUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07007253
Jeff Johnsone7245742012-09-05 17:12:55 -07007254 pWDICtx->bFrameTransEnabled = pwdiStartParams->bFrameTransEnabled;
Jeff Johnson295189b2012-06-20 16:38:30 -07007255 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007256 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07007257 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007258 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07007259 wdiStartRspCb, pEventData->pUserData, WDI_START_RESP);
7260
Jeff Johnsone7245742012-09-05 17:12:55 -07007261
Jeff Johnson295189b2012-06-20 16:38:30 -07007262}/*WDI_ProcessStartReq*/
7263
7264/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007265 @brief Process Stop Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07007266 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007267
7268 @param pWDICtx: pointer to the WLAN DAL context
7269 pEventData: pointer to the event information structure
7270
Jeff Johnson295189b2012-06-20 16:38:30 -07007271 @see
7272 @return Result of the function call
7273*/
7274WDI_Status
7275WDI_ProcessStopReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007276(
Jeff Johnson295189b2012-06-20 16:38:30 -07007277 WDI_ControlBlockType* pWDICtx,
7278 WDI_EventInfoType* pEventData
7279)
7280{
7281 WDI_StopReqParamsType* pwdiStopParams = NULL;
7282 WDI_StopRspCb wdiStopRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07007283 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07007284 wpt_uint16 usDataOffset = 0;
7285 wpt_uint16 usSendSize = 0;
Jeff Johnson43971f52012-07-17 12:26:56 -07007286 wpt_status status;
Jeff Johnsone7245742012-09-05 17:12:55 -07007287 tHalMacStopReqMsg halStopReq;
Jeff Johnson295189b2012-06-20 16:38:30 -07007288 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7289
7290 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007291 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07007292 -------------------------------------------------------------------------*/
7293 if (( NULL == pEventData ) ||
7294 ( NULL == (pwdiStopParams = (WDI_StopReqParamsType*)pEventData->pEventData)) ||
7295 ( NULL == (wdiStopRspCb = (WDI_StopRspCb)pEventData->pCBfnc)))
7296 {
7297 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07007298 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07007299 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -08007300 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -07007301 }
7302
7303 /*-----------------------------------------------------------------------
7304 Get message buffer
7305 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007306 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_STOP_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07007307 sizeof(halStopReq.stopReqParams),
7308 &pSendBuffer, &usDataOffset, &usSendSize))||
7309 ( usSendSize < (usDataOffset + sizeof(halStopReq.stopReqParams) )))
7310 {
7311 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007312 "Unable to get send buffer in stop req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007313 pEventData, pwdiStopParams, wdiStopRspCb);
7314 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -08007315 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -07007316 }
7317
7318 /*-----------------------------------------------------------------------
7319 Fill in the message
7320 -----------------------------------------------------------------------*/
7321 halStopReq.stopReqParams.reason = WDI_2_HAL_STOP_REASON(
7322 pwdiStopParams->wdiStopReason);
7323
Jeff Johnsone7245742012-09-05 17:12:55 -07007324 wpalMemoryCopy( pSendBuffer+usDataOffset,
7325 &halStopReq.stopReqParams,
7326 sizeof(halStopReq.stopReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07007327
7328 pWDICtx->wdiReqStatusCB = pwdiStopParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07007329 pWDICtx->pReqStatusUserData = pwdiStopParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07007330
7331 /*! TO DO: stop the data services */
7332 if ( eDRIVER_TYPE_MFG != pWDICtx->driverMode )
7333 {
7334 /*Stop the STA Table !UT- check this logic again
7335 It is safer to do it here than on the response - because a stop is imminent*/
7336 WDI_STATableStop(pWDICtx);
7337
7338 /* Reset the event to be not signalled */
Jeff Johnson43971f52012-07-17 12:26:56 -07007339 status = wpalEventReset(&pWDICtx->setPowerStateEvent);
7340 if (eWLAN_PAL_STATUS_SUCCESS != status)
Jeff Johnson295189b2012-06-20 16:38:30 -07007341 {
7342 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7343 "WDI Init failed to reset power state event");
7344
Jeff Johnsone7245742012-09-05 17:12:55 -07007345 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -08007346 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -07007347 }
7348 /* Stop Transport Driver, DXE */
Ravali85acf6b2012-12-12 14:01:38 -08007349 status = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_DOWN, WDI_SetPowerStateCb);
7350 if( eWLAN_PAL_STATUS_SUCCESS != status )
7351 {
7352 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain9a5d5382013-11-17 22:05:35 -08007353 "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 -08007354 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -08007355 goto fail;
Ravali85acf6b2012-12-12 14:01:38 -08007356 }
Jeff Johnson295189b2012-06-20 16:38:30 -07007357 /*
Jeff Johnsone7245742012-09-05 17:12:55 -07007358 * Wait for the event to be set once the ACK comes back from DXE
Jeff Johnson295189b2012-06-20 16:38:30 -07007359 */
Jeff Johnson43971f52012-07-17 12:26:56 -07007360 status = wpalEventWait(&pWDICtx->setPowerStateEvent,
7361 WDI_SET_POWER_STATE_TIMEOUT);
7362 if (eWLAN_PAL_STATUS_SUCCESS != status)
Jeff Johnson295189b2012-06-20 16:38:30 -07007363 {
7364 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7365 "WDI Init failed to wait on an event");
7366
Jeff Johnsone7245742012-09-05 17:12:55 -07007367 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -08007368 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -07007369 }
7370 }
7371
7372 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007373 Send Stop Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07007374 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007375 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07007376 wdiStopRspCb, pEventData->pUserData, WDI_STOP_RESP);
7377
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -08007378fail:
7379 // Release the message buffer so we don't leak
7380 wpalMemoryFree(pSendBuffer);
7381
7382failRequest:
7383 //WDA should have failure check to avoid the memory leak
7384 return WDI_STATUS_E_FAILURE;
7385
Jeff Johnson295189b2012-06-20 16:38:30 -07007386}/*WDI_ProcessStopReq*/
7387
7388/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007389 @brief Process Close Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07007390 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007391
7392 @param pWDICtx: pointer to the WLAN DAL context
7393 pEventData: pointer to the event information structure
7394
Jeff Johnson295189b2012-06-20 16:38:30 -07007395 @see
7396 @return Result of the function call
7397*/
7398WDI_Status
7399WDI_ProcessCloseReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007400(
Jeff Johnson295189b2012-06-20 16:38:30 -07007401 WDI_ControlBlockType* pWDICtx,
7402 WDI_EventInfoType* pEventData
7403)
7404{
Jeff Johnsone7245742012-09-05 17:12:55 -07007405 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07007406 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7407
7408 /*Lock control block for cleanup*/
7409 wpalMutexAcquire(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07007410
Jeff Johnson295189b2012-06-20 16:38:30 -07007411 /*Clear all pending request*/
7412 WDI_ClearPendingRequests(pWDICtx);
7413
7414 /* Close Control transport*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007415 WCTS_CloseTransport(pWDICtx->wctsHandle);
Jeff Johnson295189b2012-06-20 16:38:30 -07007416
7417 /* Close Data transport*/
7418 /* FTM mode does not open Data Path */
7419 if ( eDRIVER_TYPE_MFG != pWDICtx->driverMode )
7420 {
7421 WDTS_Close(pWDICtx);
7422 }
7423
7424 /*Close the STA Table !UT- check this logic again*/
7425 WDI_STATableClose(pWDICtx);
7426
7427 /*close the PAL */
7428 wptStatus = wpalClose(pWDICtx->pPALContext);
7429 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
7430 {
7431 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
7432 "Failed to wpal Close %d", wptStatus);
7433 WDI_ASSERT(0);
7434 }
7435
7436 /*Transition back to init state*/
7437 WDI_STATE_TRANSITION( pWDICtx, WDI_INIT_ST);
7438
7439 wpalMutexRelease(&pWDICtx->wptMutex);
7440
7441 /*Make sure the expected state is properly defaulted to Init*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007442 pWDICtx->ucExpectedStateTransition = WDI_INIT_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07007443
Jeff Johnsone7245742012-09-05 17:12:55 -07007444 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07007445}/*WDI_ProcessCloseReq*/
7446
7447
7448/*===========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -07007449 SCANING REQUEST PROCESSING API
Jeff Johnson295189b2012-06-20 16:38:30 -07007450===========================================================================*/
7451
7452/**
7453 @brief Process Init Scan Request function (called when Main FSM
7454 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007455
7456 @param pWDICtx: pointer to the WLAN DAL context
7457 pEventData: pointer to the event information structure
7458
Jeff Johnson295189b2012-06-20 16:38:30 -07007459 @see
7460 @return Result of the function call
7461*/
7462WDI_Status
7463WDI_ProcessInitScanReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007464(
Jeff Johnson295189b2012-06-20 16:38:30 -07007465 WDI_ControlBlockType* pWDICtx,
7466 WDI_EventInfoType* pEventData
7467)
7468{
7469 WDI_InitScanReqParamsType* pwdiInitScanParams = NULL;
7470 WDI_InitScanRspCb wdiInitScanRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07007471 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07007472 wpt_uint16 usDataOffset = 0;
7473 wpt_uint16 usSendSize = 0;
7474 wpt_uint8 i = 0;
7475
7476 tHalInitScanReqMsg halInitScanReqMsg;
7477
Jeff Johnsone7245742012-09-05 17:12:55 -07007478 /*This is temporary fix.
Jeff Johnson295189b2012-06-20 16:38:30 -07007479 * It shold be removed once host and riva changes are in sync*/
7480 tHalInitScanConReqMsg halInitScanConReqMsg;
7481
7482 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7483
7484 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007485 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07007486 -------------------------------------------------------------------------*/
7487 if (( NULL == pEventData ) ||
7488 ( NULL == (pwdiInitScanParams = (WDI_InitScanReqParamsType*)pEventData->pEventData)) ||
7489 ( NULL == (wdiInitScanRspCb = (WDI_InitScanRspCb)pEventData->pCBfnc)))
7490 {
7491 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07007492 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07007493 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007494 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007495 }
7496
7497#if 0
7498 wpalMutexAcquire(&pWDICtx->wptMutex);
7499 /*-----------------------------------------------------------------------
7500 Check to see if SCAN is already in progress - if so reject the req
7501 We only allow one scan at a time
Jeff Johnsone7245742012-09-05 17:12:55 -07007502 ! TO DO: - revisit this constraint
Jeff Johnson295189b2012-06-20 16:38:30 -07007503 -----------------------------------------------------------------------*/
7504 if ( pWDICtx->bScanInProgress )
7505 {
7506 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
7507 "Scan is already in progress - subsequent scan is not allowed"
7508 " until the first scan completes");
7509
7510 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07007511 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07007512 }
7513
Jeff Johnsone7245742012-09-05 17:12:55 -07007514 pWDICtx->bScanInProgress = eWLAN_PAL_TRUE;
7515 pWDICtx->uScanState = WDI_SCAN_INITIALIZED_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07007516
7517 wpalMutexRelease(&pWDICtx->wptMutex);
7518#endif
Viral Modid86bde22012-12-10 13:09:21 -08007519 if ((pwdiInitScanParams->wdiReqInfo.bUseNOA) && (!WDI_getFwWlanFeatCaps(P2P_GO_NOA_DECOUPLE_INIT_SCAN)))
Jeff Johnson295189b2012-06-20 16:38:30 -07007520 {
Jeff Johnsone7245742012-09-05 17:12:55 -07007521 /*This is temporary fix.
Jeff Johnson295189b2012-06-20 16:38:30 -07007522 * It shold be removed once host and riva changes are in sync*/
7523 /*-----------------------------------------------------------------------
7524 Get message buffer
7525 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007526 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_INIT_SCAN_CON_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07007527 sizeof(halInitScanConReqMsg.initScanParams),
7528 &pSendBuffer, &usDataOffset, &usSendSize))||
7529 ( usSendSize < (usDataOffset + sizeof(halInitScanConReqMsg.initScanParams) )))
7530 {
7531 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007532 "Unable to get send buffer in init scan req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007533 pEventData, pwdiInitScanParams, wdiInitScanRspCb);
7534 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007535 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007536 }
7537
7538
7539 /*-----------------------------------------------------------------------
7540 Fill in the message
7541 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007542 halInitScanConReqMsg.initScanParams.scanMode =
Jeff Johnson295189b2012-06-20 16:38:30 -07007543 WDI_2_HAL_SCAN_MODE(pwdiInitScanParams->wdiReqInfo.wdiScanMode);
7544
7545 wpalMemoryCopy(halInitScanConReqMsg.initScanParams.bssid,
7546 pwdiInitScanParams->wdiReqInfo.macBSSID, WDI_MAC_ADDR_LEN);
7547
Jeff Johnsone7245742012-09-05 17:12:55 -07007548 halInitScanConReqMsg.initScanParams.notifyBss =
Jeff Johnson295189b2012-06-20 16:38:30 -07007549 pwdiInitScanParams->wdiReqInfo.bNotifyBSS;
Jeff Johnsone7245742012-09-05 17:12:55 -07007550 halInitScanConReqMsg.initScanParams.frameType =
Jeff Johnson295189b2012-06-20 16:38:30 -07007551 pwdiInitScanParams->wdiReqInfo.ucFrameType;
Jeff Johnsone7245742012-09-05 17:12:55 -07007552 halInitScanConReqMsg.initScanParams.frameLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07007553 pwdiInitScanParams->wdiReqInfo.ucFrameLength;
7554
7555 WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr( &halInitScanConReqMsg.initScanParams.macMgmtHdr,
7556 &pwdiInitScanParams->wdiReqInfo.wdiMACMgmtHdr);
7557
Jeff Johnson295189b2012-06-20 16:38:30 -07007558 halInitScanConReqMsg.initScanParams.useNoA = pwdiInitScanParams->wdiReqInfo.bUseNOA;
7559 halInitScanConReqMsg.initScanParams.scanDuration = pwdiInitScanParams->wdiReqInfo.scanDuration;
Jeff Johnson295189b2012-06-20 16:38:30 -07007560
Jeff Johnsone7245742012-09-05 17:12:55 -07007561 halInitScanConReqMsg.initScanParams.scanEntry.activeBSScnt =
Jeff Johnson295189b2012-06-20 16:38:30 -07007562 pwdiInitScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt;
7563
7564 for (i=0; i < pwdiInitScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt; i++)
7565 {
Jeff Johnsone7245742012-09-05 17:12:55 -07007566 halInitScanConReqMsg.initScanParams.scanEntry.bssIdx[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -07007567 pwdiInitScanParams->wdiReqInfo.wdiScanEntry.bssIdx[i];
7568 }
7569
Jeff Johnsone7245742012-09-05 17:12:55 -07007570 wpalMemoryCopy( pSendBuffer+usDataOffset,
7571 &halInitScanConReqMsg.initScanParams,
7572 sizeof(halInitScanConReqMsg.initScanParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07007573 }
7574 else
7575 {
7576 /*-----------------------------------------------------------------------
7577 Get message buffer
7578 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007579 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_INIT_SCAN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07007580 sizeof(halInitScanReqMsg.initScanParams),
7581 &pSendBuffer, &usDataOffset, &usSendSize))||
7582 ( usSendSize < (usDataOffset + sizeof(halInitScanReqMsg.initScanParams) )))
7583 {
7584 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007585 "Unable to get send buffer in init scan req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007586 pEventData, pwdiInitScanParams, wdiInitScanRspCb);
7587 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007588 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007589 }
7590
7591
7592 /*-----------------------------------------------------------------------
7593 Fill in the message
7594 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007595 halInitScanReqMsg.initScanParams.scanMode =
Jeff Johnson295189b2012-06-20 16:38:30 -07007596 WDI_2_HAL_SCAN_MODE(pwdiInitScanParams->wdiReqInfo.wdiScanMode);
7597
7598 wpalMemoryCopy(halInitScanReqMsg.initScanParams.bssid,
7599 pwdiInitScanParams->wdiReqInfo.macBSSID, WDI_MAC_ADDR_LEN);
7600
Jeff Johnsone7245742012-09-05 17:12:55 -07007601 halInitScanReqMsg.initScanParams.notifyBss =
Jeff Johnson295189b2012-06-20 16:38:30 -07007602 pwdiInitScanParams->wdiReqInfo.bNotifyBSS;
Jeff Johnsone7245742012-09-05 17:12:55 -07007603 halInitScanReqMsg.initScanParams.frameType =
Jeff Johnson295189b2012-06-20 16:38:30 -07007604 pwdiInitScanParams->wdiReqInfo.ucFrameType;
Jeff Johnsone7245742012-09-05 17:12:55 -07007605 halInitScanReqMsg.initScanParams.frameLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07007606 pwdiInitScanParams->wdiReqInfo.ucFrameLength;
7607
7608 WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr( &halInitScanReqMsg.initScanParams.macMgmtHdr,
7609 &pwdiInitScanParams->wdiReqInfo.wdiMACMgmtHdr);
7610
Jeff Johnsone7245742012-09-05 17:12:55 -07007611 halInitScanReqMsg.initScanParams.scanEntry.activeBSScnt =
Jeff Johnson295189b2012-06-20 16:38:30 -07007612 pwdiInitScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt;
7613
7614 for (i=0; i < pwdiInitScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt; i++)
7615 {
Jeff Johnsone7245742012-09-05 17:12:55 -07007616 halInitScanReqMsg.initScanParams.scanEntry.bssIdx[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -07007617 pwdiInitScanParams->wdiReqInfo.wdiScanEntry.bssIdx[i];
7618 }
7619
Jeff Johnsone7245742012-09-05 17:12:55 -07007620 wpalMemoryCopy( pSendBuffer+usDataOffset,
7621 &halInitScanReqMsg.initScanParams,
7622 sizeof(halInitScanReqMsg.initScanParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07007623 }
7624
7625 pWDICtx->wdiReqStatusCB = pwdiInitScanParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07007626 pWDICtx->pReqStatusUserData = pwdiInitScanParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07007627
7628 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007629 Send Init Scan Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07007630 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007631 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07007632 wdiInitScanRspCb, pEventData->pUserData, WDI_INIT_SCAN_RESP);
7633
7634}/*WDI_ProcessInitScanReq*/
7635
7636/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007637 @brief Process Start Scan Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -07007638 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007639
7640 @param pWDICtx: pointer to the WLAN DAL context
7641 pEventData: pointer to the event information structure
7642
Jeff Johnson295189b2012-06-20 16:38:30 -07007643 @see
7644 @return Result of the function call
7645*/
7646WDI_Status
7647WDI_ProcessStartScanReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007648(
Jeff Johnson295189b2012-06-20 16:38:30 -07007649 WDI_ControlBlockType* pWDICtx,
7650 WDI_EventInfoType* pEventData
7651)
7652{
7653 WDI_StartScanReqParamsType* pwdiStartScanParams = NULL;
7654 WDI_StartScanRspCb wdiStartScanRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07007655 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07007656 wpt_uint16 usDataOffset = 0;
7657 wpt_uint16 usSendSize = 0;
7658
Jeff Johnsone7245742012-09-05 17:12:55 -07007659 tHalStartScanReqMsg halStartScanReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07007660 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7661
7662 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007663 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07007664 -------------------------------------------------------------------------*/
7665 if (( NULL == pEventData ) ||
7666 ( NULL == (pwdiStartScanParams = (WDI_StartScanReqParamsType*)pEventData->pEventData)) ||
7667 ( NULL == (wdiStartScanRspCb = (WDI_StartScanRspCb)pEventData->pCBfnc)))
7668 {
7669 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07007670 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07007671 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007672 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007673 }
7674
7675#if 0
7676 wpalMutexAcquire(&pWDICtx->wptMutex);
7677 /*-----------------------------------------------------------------------
7678 Check to see if SCAN is already in progress - start scan is only
7679 allowed when a scan is ongoing and the state of the scan procedure
Jeff Johnsone7245742012-09-05 17:12:55 -07007680 is either init or end
Jeff Johnson295189b2012-06-20 16:38:30 -07007681 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007682 if (( !pWDICtx->bScanInProgress ) ||
Jeff Johnson295189b2012-06-20 16:38:30 -07007683 (( WDI_SCAN_INITIALIZED_ST != pWDICtx->uScanState ) &&
7684 ( WDI_SCAN_ENDED_ST != pWDICtx->uScanState )))
7685 {
7686 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
7687 "Scan start not allowed in this state %d %d",
7688 pWDICtx->bScanInProgress, pWDICtx->uScanState);
Jeff Johnsone7245742012-09-05 17:12:55 -07007689
Jeff Johnson295189b2012-06-20 16:38:30 -07007690 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07007691 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07007692 }
7693
Jeff Johnsone7245742012-09-05 17:12:55 -07007694 pWDICtx->uScanState = WDI_SCAN_STARTED_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07007695
7696 wpalMutexRelease(&pWDICtx->wptMutex);
7697#endif
7698
7699 /*-----------------------------------------------------------------------
7700 Get message buffer
7701 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007702 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_START_SCAN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07007703 sizeof(halStartScanReqMsg.startScanParams),
7704 &pSendBuffer, &usDataOffset, &usSendSize))||
7705 ( usSendSize < (usDataOffset + sizeof(halStartScanReqMsg.startScanParams) )))
7706 {
7707 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007708 "Unable to get send buffer in start scan req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007709 pEventData, pwdiStartScanParams, wdiStartScanRspCb);
7710 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007711 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007712 }
7713
Jeff Johnsone7245742012-09-05 17:12:55 -07007714 halStartScanReqMsg.startScanParams.scanChannel =
Jeff Johnson295189b2012-06-20 16:38:30 -07007715 pwdiStartScanParams->ucChannel;
Jeff Johnsone7245742012-09-05 17:12:55 -07007716 wpalMemoryCopy( pSendBuffer+usDataOffset,
7717 &halStartScanReqMsg.startScanParams,
7718 sizeof(halStartScanReqMsg.startScanParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07007719
7720 pWDICtx->wdiReqStatusCB = pwdiStartScanParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07007721 pWDICtx->pReqStatusUserData = pwdiStartScanParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07007722
7723 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007724 Send Start Scan Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07007725 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007726 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07007727 wdiStartScanRspCb, pEventData->pUserData, WDI_START_SCAN_RESP);
7728}/*WDI_ProcessStartScanReq*/
7729
7730
7731/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007732 @brief Process End Scan Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07007733 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007734
7735 @param pWDICtx: pointer to the WLAN DAL context
7736 pEventData: pointer to the event information structure
7737
Jeff Johnson295189b2012-06-20 16:38:30 -07007738 @see
7739 @return Result of the function call
7740*/
7741WDI_Status
7742WDI_ProcessEndScanReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007743(
Jeff Johnson295189b2012-06-20 16:38:30 -07007744 WDI_ControlBlockType* pWDICtx,
7745 WDI_EventInfoType* pEventData
7746)
7747{
7748 WDI_EndScanReqParamsType* pwdiEndScanParams = NULL;
7749 WDI_EndScanRspCb wdiEndScanRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07007750 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07007751 wpt_uint16 usDataOffset = 0;
7752 wpt_uint16 usSendSize = 0;
7753
Jeff Johnsone7245742012-09-05 17:12:55 -07007754 tHalEndScanReqMsg halEndScanReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07007755 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7756
7757 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007758 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07007759 -------------------------------------------------------------------------*/
7760 if (( NULL == pEventData ) ||
7761 ( NULL == (pwdiEndScanParams = (WDI_EndScanReqParamsType*)pEventData->pEventData)) ||
7762 ( NULL == (wdiEndScanRspCb = (WDI_EndScanRspCb)pEventData->pCBfnc)))
7763 {
7764 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07007765 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07007766 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007767 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007768 }
7769
Jeff Johnsone7245742012-09-05 17:12:55 -07007770 /* commenting this check as UMAC is sending END_SCAN_REQ after FINISH_SCAN
7771 * sometimes because of this check the scan request is not being
Jeff Johnson295189b2012-06-20 16:38:30 -07007772 * forwarded to HAL and result in hang*/
7773#if 0
7774 wpalMutexAcquire(&pWDICtx->wptMutex);
7775 /*-----------------------------------------------------------------------
7776 Check to see if SCAN is already in progress - end scan is only
7777 allowed when a scan is ongoing and the state of the scan procedure
7778 is started
7779 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007780 if (( !pWDICtx->bScanInProgress ) ||
Jeff Johnson295189b2012-06-20 16:38:30 -07007781 ( WDI_SCAN_STARTED_ST != pWDICtx->uScanState ))
7782 {
7783 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7784 "End start not allowed in this state %d %d",
7785 pWDICtx->bScanInProgress, pWDICtx->uScanState);
Jeff Johnsone7245742012-09-05 17:12:55 -07007786
Jeff Johnson295189b2012-06-20 16:38:30 -07007787 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07007788 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07007789 }
7790
Jeff Johnsone7245742012-09-05 17:12:55 -07007791 pWDICtx->uScanState = WDI_SCAN_ENDED_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07007792
7793 wpalMutexRelease(&pWDICtx->wptMutex);
7794#endif
7795
7796 /*-----------------------------------------------------------------------
7797 Get message buffer
7798 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007799 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_END_SCAN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07007800 sizeof(halEndScanReqMsg.endScanParams),
7801 &pSendBuffer, &usDataOffset, &usSendSize))||
7802 ( usSendSize < (usDataOffset + sizeof(halEndScanReqMsg.endScanParams) )))
7803 {
7804 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007805 "Unable to get send buffer in start scan req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007806 pEventData, pwdiEndScanParams, wdiEndScanRspCb);
7807 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007808 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007809 }
7810
7811 halEndScanReqMsg.endScanParams.scanChannel = pwdiEndScanParams->ucChannel;
7812
Jeff Johnsone7245742012-09-05 17:12:55 -07007813 wpalMemoryCopy( pSendBuffer+usDataOffset,
7814 &halEndScanReqMsg.endScanParams,
7815 sizeof(halEndScanReqMsg.endScanParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07007816
7817 pWDICtx->wdiReqStatusCB = pwdiEndScanParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07007818 pWDICtx->pReqStatusUserData = pwdiEndScanParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07007819
7820 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007821 Send End Scan Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07007822 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007823 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07007824 wdiEndScanRspCb, pEventData->pUserData, WDI_END_SCAN_RESP);
7825}/*WDI_ProcessEndScanReq*/
7826
7827
7828/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007829 @brief Process Finish Scan Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -07007830 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007831
7832 @param pWDICtx: pointer to the WLAN DAL context
7833 pEventData: pointer to the event information structure
7834
Jeff Johnson295189b2012-06-20 16:38:30 -07007835 @see
7836 @return Result of the function call
7837*/
7838WDI_Status
7839WDI_ProcessFinishScanReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007840(
Jeff Johnson295189b2012-06-20 16:38:30 -07007841 WDI_ControlBlockType* pWDICtx,
7842 WDI_EventInfoType* pEventData
7843)
7844{
7845 WDI_FinishScanReqParamsType* pwdiFinishScanParams;
7846 WDI_FinishScanRspCb wdiFinishScanRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07007847 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07007848 wpt_uint16 usDataOffset = 0;
7849 wpt_uint16 usSendSize = 0;
7850 wpt_uint8 i = 0;
Ravali85acf6b2012-12-12 14:01:38 -08007851 wpt_status wptStatus;
Jeff Johnsone7245742012-09-05 17:12:55 -07007852 tHalFinishScanReqMsg halFinishScanReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07007853 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7854
7855 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007856 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07007857 -------------------------------------------------------------------------*/
7858 if (( NULL == pEventData ) ||
7859 ( NULL == pEventData->pEventData) ||
7860 ( NULL == pEventData->pCBfnc))
7861 {
7862 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07007863 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07007864 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007865 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007866 }
7867
7868 pwdiFinishScanParams = (WDI_FinishScanReqParamsType*)pEventData->pEventData;
7869 wdiFinishScanRspCb = (WDI_FinishScanRspCb)pEventData->pCBfnc;
Jeff Johnsone7245742012-09-05 17:12:55 -07007870 /* commenting this check as UMAC is sending END_SCAN_REQ after FINISH_SCAN
7871 * sometimes because of this check the scan request is not being
Jeff Johnson295189b2012-06-20 16:38:30 -07007872 * forwarded to HAL and result in hang*/
7873#if 0
7874 wpalMutexAcquire(&pWDICtx->wptMutex);
7875 /*-----------------------------------------------------------------------
7876 Check to see if SCAN is already in progress
7877 Finish scan gets invoked any scan states. ie. abort scan
7878 It should be allowed in any states.
7879 -----------------------------------------------------------------------*/
7880 if ( !pWDICtx->bScanInProgress )
7881 {
7882 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7883 "Finish start not allowed in this state %d",
7884 pWDICtx->bScanInProgress );
7885
7886 wpalMutexRelease(&pWDICtx->wptMutex);
Ravali85acf6b2012-12-12 14:01:38 -08007887 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07007888 }
7889
7890 /*-----------------------------------------------------------------------
7891 It is safe to reset the scan flags here because until the response comes
Jeff Johnsone7245742012-09-05 17:12:55 -07007892 back all subsequent requests will be blocked at BUSY state
Jeff Johnson295189b2012-06-20 16:38:30 -07007893 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007894 pWDICtx->uScanState = WDI_SCAN_FINISHED_ST;
7895 pWDICtx->bScanInProgress = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007896 wpalMutexRelease(&pWDICtx->wptMutex);
7897#endif
7898
7899 if ( pWDICtx->bInBmps )
7900 {
7901 // notify DTS that we are entering BMPS
Ravali85acf6b2012-12-12 14:01:38 -08007902 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_BMPS, NULL);
7903 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
7904 {
7905 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain9a5d5382013-11-17 22:05:35 -08007906 "WDTS_SetPowerState returned with status %d when trying to notify DTS that host is entering BMPS", wptStatus);
Ravali85acf6b2012-12-12 14:01:38 -08007907 WDI_ASSERT(0);
7908 }
Jeff Johnson295189b2012-06-20 16:38:30 -07007909 }
7910
7911 /*-----------------------------------------------------------------------
7912 Get message buffer
7913 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007914 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_FINISH_SCAN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07007915 sizeof(halFinishScanReqMsg.finishScanParams),
7916 &pSendBuffer, &usDataOffset, &usSendSize))||
7917 ( usSendSize < (usDataOffset + sizeof(halFinishScanReqMsg.finishScanParams) )))
7918 {
7919 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007920 "Unable to get send buffer in start scan req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007921 pEventData, pwdiFinishScanParams, wdiFinishScanRspCb);
7922 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007923 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007924 }
7925
Jeff Johnsone7245742012-09-05 17:12:55 -07007926 halFinishScanReqMsg.finishScanParams.scanMode =
Jeff Johnson295189b2012-06-20 16:38:30 -07007927 WDI_2_HAL_SCAN_MODE(pwdiFinishScanParams->wdiReqInfo.wdiScanMode);
7928
Jeff Johnsone7245742012-09-05 17:12:55 -07007929 halFinishScanReqMsg.finishScanParams.currentOperChannel =
Jeff Johnson295189b2012-06-20 16:38:30 -07007930 pwdiFinishScanParams->wdiReqInfo.ucCurrentOperatingChannel;
7931
Jeff Johnsone7245742012-09-05 17:12:55 -07007932 halFinishScanReqMsg.finishScanParams.cbState =
Jeff Johnson295189b2012-06-20 16:38:30 -07007933 WDI_2_HAL_CB_STATE(pwdiFinishScanParams->wdiReqInfo.wdiCBState);
7934
7935 wpalMemoryCopy(halFinishScanReqMsg.finishScanParams.bssid,
7936 pwdiFinishScanParams->wdiReqInfo.macBSSID, WDI_MAC_ADDR_LEN);
7937
Jeff Johnsone7245742012-09-05 17:12:55 -07007938 halFinishScanReqMsg.finishScanParams.notifyBss =
Jeff Johnson295189b2012-06-20 16:38:30 -07007939 pwdiFinishScanParams->wdiReqInfo.bNotifyBSS ;
Jeff Johnsone7245742012-09-05 17:12:55 -07007940 halFinishScanReqMsg.finishScanParams.frameType =
Jeff Johnson295189b2012-06-20 16:38:30 -07007941 pwdiFinishScanParams->wdiReqInfo.ucFrameType ;
Jeff Johnsone7245742012-09-05 17:12:55 -07007942 halFinishScanReqMsg.finishScanParams.frameLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07007943 pwdiFinishScanParams->wdiReqInfo.ucFrameLength ;
7944
Jeff Johnsone7245742012-09-05 17:12:55 -07007945 halFinishScanReqMsg.finishScanParams.scanEntry.activeBSScnt =
Jeff Johnson295189b2012-06-20 16:38:30 -07007946 pwdiFinishScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt ;
7947
7948 for (i = 0; i < pwdiFinishScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt; i++)
7949 {
Jeff Johnsone7245742012-09-05 17:12:55 -07007950 halFinishScanReqMsg.finishScanParams.scanEntry.bssIdx[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -07007951 pwdiFinishScanParams->wdiReqInfo.wdiScanEntry.bssIdx[i] ;
7952 }
7953
7954 WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr( &halFinishScanReqMsg.finishScanParams.macMgmtHdr,
7955 &pwdiFinishScanParams->wdiReqInfo.wdiMACMgmtHdr);
7956
Jeff Johnsone7245742012-09-05 17:12:55 -07007957 wpalMemoryCopy( pSendBuffer+usDataOffset,
7958 &halFinishScanReqMsg.finishScanParams,
7959 sizeof(halFinishScanReqMsg.finishScanParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07007960
7961 pWDICtx->wdiReqStatusCB = pwdiFinishScanParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07007962 pWDICtx->pReqStatusUserData = pwdiFinishScanParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07007963
7964 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007965 Send Finish Scan Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07007966 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007967 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07007968 wdiFinishScanRspCb, pEventData->pUserData, WDI_FINISH_SCAN_RESP);
7969}/*WDI_ProcessFinishScanReq*/
7970
7971
7972/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -07007973 ASSOCIATION REQUEST API
Jeff Johnson295189b2012-06-20 16:38:30 -07007974==========================================================================*/
7975/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007976 @brief Process BSS Join for a given Session
7977
7978 @param pWDICtx: pointer to the WLAN DAL context
7979 pEventData: pointer to the event information structure
7980
Jeff Johnson295189b2012-06-20 16:38:30 -07007981 @see
7982 @return Result of the function call
7983*/
7984WDI_Status
7985WDI_ProcessBSSSessionJoinReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007986(
Jeff Johnson295189b2012-06-20 16:38:30 -07007987 WDI_ControlBlockType* pWDICtx,
7988 WDI_JoinReqParamsType* pwdiJoinParams,
7989 WDI_JoinRspCb wdiJoinRspCb,
7990 void* pUserData
7991)
7992{
7993 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07007994 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07007995 wpt_uint16 usDataOffset = 0;
7996 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07007997 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07007998
Jeff Johnsone7245742012-09-05 17:12:55 -07007999 tHalJoinReqMsg halJoinReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07008000 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8001
Madan Mohan Koyyalamudi35287862012-10-22 14:52:46 -07008002 wpalMutexAcquire(&pWDICtx->wptMutex);
8003
Jeff Johnson295189b2012-06-20 16:38:30 -07008004 /*------------------------------------------------------------------------
8005 Check to see if we have any session with this BSSID already stored, we
8006 should not
8007 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008008 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
8009 pwdiJoinParams->wdiReqInfo.macBSSID,
8010 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07008011
8012 if ( NULL != pBSSSes )
8013 {
8014 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi35287862012-10-22 14:52:46 -07008015 "Association for this BSSID: " MAC_ADDRESS_STR " is already in place",
8016 MAC_ADDR_ARRAY(pwdiJoinParams->wdiReqInfo.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07008017
Madan Mohan Koyyalamudi35287862012-10-22 14:52:46 -07008018 /*reset the bAssociationInProgress otherwise the next
8019 *join request will be queued*/
8020 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
8021 wpalMutexRelease(&pWDICtx->wptMutex);
8022 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008023 }
8024
Jeff Johnson295189b2012-06-20 16:38:30 -07008025 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008026 Fetch an empty session block
Jeff Johnson295189b2012-06-20 16:38:30 -07008027 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008028 ucCurrentBSSSesIdx = WDI_FindEmptySession( pWDICtx, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07008029 if ( NULL == pBSSSes )
8030 {
8031
8032 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
8033 "DAL has no free sessions - cannot run another join");
8034
Madan Mohan Koyyalamudi35287862012-10-22 14:52:46 -07008035 /*reset the bAssociationInProgress otherwise the next
8036 *join request will be queued*/
8037 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008038 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008039 return WDI_STATUS_RES_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008040 }
8041
8042 /*Save BSS Session Info*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008043 pBSSSes->bInUse = eWLAN_PAL_TRUE;
8044 wpalMemoryCopy( pBSSSes->macBSSID, pwdiJoinParams->wdiReqInfo.macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -07008045 WDI_MAC_ADDR_LEN);
8046
8047 /*Transition to state Joining*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008048 pBSSSes->wdiAssocState = WDI_ASSOC_JOINING_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07008049 pWDICtx->ucCurrentBSSSesIdx = ucCurrentBSSSesIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -07008050
Jeff Johnson295189b2012-06-20 16:38:30 -07008051 wpalMutexRelease(&pWDICtx->wptMutex);
8052
8053 /*-----------------------------------------------------------------------
8054 Get message buffer
8055 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008056 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_JOIN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008057 sizeof(halJoinReqMsg.joinReqParams),
8058 &pSendBuffer, &usDataOffset, &usSendSize))||
8059 ( usSendSize < (usDataOffset + sizeof(halJoinReqMsg.joinReqParams) )))
8060 {
8061 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08008062 "Unable to get send buffer in join req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07008063 pUserData, pwdiJoinParams, wdiJoinRspCb);
8064 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008065 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008066 }
8067
8068 wpalMemoryCopy(halJoinReqMsg.joinReqParams.bssId,
Jeff Johnsone7245742012-09-05 17:12:55 -07008069 pwdiJoinParams->wdiReqInfo.macBSSID, WDI_MAC_ADDR_LEN);
Jeff Johnson295189b2012-06-20 16:38:30 -07008070
8071 wpalMemoryCopy(halJoinReqMsg.joinReqParams.selfStaMacAddr,
Jeff Johnsone7245742012-09-05 17:12:55 -07008072 pwdiJoinParams->wdiReqInfo.macSTASelf,
8073 WDI_MAC_ADDR_LEN);
Jeff Johnson295189b2012-06-20 16:38:30 -07008074
Jeff Johnsone7245742012-09-05 17:12:55 -07008075 halJoinReqMsg.joinReqParams.ucChannel =
Jeff Johnson295189b2012-06-20 16:38:30 -07008076 pwdiJoinParams->wdiReqInfo.wdiChannelInfo.ucChannel;
8077
8078 halJoinReqMsg.joinReqParams.linkState = pwdiJoinParams->wdiReqInfo.linkState;
8079
Madan Mohan Koyyalamudi83b12822012-11-02 12:43:10 -07008080#ifdef WLAN_FEATURE_VOWIFI
8081 halJoinReqMsg.joinReqParams.maxTxPower =
8082 pwdiJoinParams->wdiReqInfo.wdiChannelInfo.cMaxTxPower;
8083#else
Jeff Johnsone7245742012-09-05 17:12:55 -07008084 halJoinReqMsg.joinReqParams.ucLocalPowerConstraint =
Jeff Johnson295189b2012-06-20 16:38:30 -07008085 pwdiJoinParams->wdiReqInfo.wdiChannelInfo.ucLocalPowerConstraint;
8086#endif
8087
Jeff Johnsone7245742012-09-05 17:12:55 -07008088 halJoinReqMsg.joinReqParams.secondaryChannelOffset =
Jeff Johnson295189b2012-06-20 16:38:30 -07008089 WDI_2_HAL_SEC_CH_OFFSET(pwdiJoinParams->wdiReqInfo.wdiChannelInfo.
8090 wdiSecondaryChannelOffset);
8091
Jeff Johnsone7245742012-09-05 17:12:55 -07008092 wpalMemoryCopy( pSendBuffer+usDataOffset,
8093 &halJoinReqMsg.joinReqParams,
8094 sizeof(halJoinReqMsg.joinReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008095
8096 pWDICtx->wdiReqStatusCB = pwdiJoinParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008097 pWDICtx->pReqStatusUserData = pwdiJoinParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008098
8099 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008100 Send Join Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008101 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008102 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
8103 wdiJoinRspCb, pUserData, WDI_JOIN_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07008104
8105}/*WDI_ProcessBSSSessionJoinReq*/
8106
8107/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008108 @brief Process Join Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07008109 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008110
8111 @param pWDICtx: pointer to the WLAN DAL context
8112 pEventData: pointer to the event information structure
8113
Jeff Johnson295189b2012-06-20 16:38:30 -07008114 @see
8115 @return Result of the function call
8116*/
8117WDI_Status
8118WDI_ProcessJoinReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008119(
Jeff Johnson295189b2012-06-20 16:38:30 -07008120 WDI_ControlBlockType* pWDICtx,
8121 WDI_EventInfoType* pEventData
8122)
8123{
8124 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
8125 WDI_JoinReqParamsType* pwdiJoinParams = NULL;
8126 WDI_JoinRspCb wdiJoinRspCb = NULL;
8127 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8128
8129 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008130 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008131 -------------------------------------------------------------------------*/
8132 if (( NULL == pEventData ) ||
8133 ( NULL == (pwdiJoinParams = (WDI_JoinReqParamsType*)pEventData->pEventData)) ||
8134 ( NULL == (wdiJoinRspCb = (WDI_JoinRspCb)pEventData->pCBfnc)))
8135 {
8136 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008137 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008138 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008139 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008140 }
Jeff Johnsone7245742012-09-05 17:12:55 -07008141
Jeff Johnson295189b2012-06-20 16:38:30 -07008142 /*-------------------------------------------------------------------------
8143 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07008144 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07008145 -------------------------------------------------------------------------*/
8146 wpalMutexAcquire(&pWDICtx->wptMutex);
8147
8148 if ( eWLAN_PAL_FALSE != pWDICtx->bAssociationInProgress )
8149 {
8150 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8151 "Association is currently in progress, queueing new join req");
8152
8153 /*Association is in progress - queue current one*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008154 wdiStatus = WDI_QueueNewAssocRequest(pWDICtx, pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -07008155 pwdiJoinParams->wdiReqInfo.macBSSID);
8156
8157 wpalMutexRelease(&pWDICtx->wptMutex);
8158
Jeff Johnsone7245742012-09-05 17:12:55 -07008159 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07008160 }
8161
8162 /*Starting a new association */
8163 pWDICtx->bAssociationInProgress = eWLAN_PAL_TRUE;
8164 wpalMutexRelease(&pWDICtx->wptMutex);
8165
8166 /*Process the Join Request*/
8167 return WDI_ProcessBSSSessionJoinReq( pWDICtx, pwdiJoinParams,
8168 wdiJoinRspCb,pEventData->pUserData);
8169
8170}/*WDI_ProcessJoinReq*/
8171
8172
8173/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008174 @brief Process Config BSS Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -07008175 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008176
8177 @param pWDICtx: pointer to the WLAN DAL context
8178 pEventData: pointer to the event information structure
8179
Jeff Johnson295189b2012-06-20 16:38:30 -07008180 @see
8181 @return Result of the function call
8182*/
8183WDI_Status
8184WDI_ProcessConfigBSSReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008185(
Jeff Johnson295189b2012-06-20 16:38:30 -07008186 WDI_ControlBlockType* pWDICtx,
8187 WDI_EventInfoType* pEventData
8188)
8189{
8190 WDI_ConfigBSSReqParamsType* pwdiConfigBSSParams;
8191 WDI_ConfigBSSRspCb wdiConfigBSSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07008192 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07008193 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008194 wpt_uint16 uMsgSize = 0;
8195 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008196 wpt_uint16 usDataOffset = 0;
8197 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07008198 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07008199
Jeff Johnsone7245742012-09-05 17:12:55 -07008200 tConfigBssReqMsg halConfigBssReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07008201 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8202
8203 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008204 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008205 -------------------------------------------------------------------------*/
8206 if (( NULL == pEventData ) ||
8207 ( NULL == pEventData->pEventData ) ||
8208 ( NULL == pEventData->pCBfnc ))
8209 {
8210 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008211 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008212 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008213 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008214 }
8215
8216 pwdiConfigBSSParams = (WDI_ConfigBSSReqParamsType*)pEventData->pEventData;
8217 wdiConfigBSSRspCb = (WDI_ConfigBSSRspCb)pEventData->pCBfnc;
8218 /*-------------------------------------------------------------------------
8219 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07008220 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07008221 -------------------------------------------------------------------------*/
8222 wpalMutexAcquire(&pWDICtx->wptMutex);
8223
8224 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008225 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07008226 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008227 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
8228 pwdiConfigBSSParams->wdiReqInfo.macBSSID,
8229 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07008230
Jeff Johnsone7245742012-09-05 17:12:55 -07008231 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07008232 {
8233#ifdef WLAN_FEATURE_VOWIFI_11R
8234 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008235 Fetch an empty session block
Jeff Johnson295189b2012-06-20 16:38:30 -07008236 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008237 ucCurrentBSSSesIdx = WDI_FindEmptySession( pWDICtx, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07008238 if ( NULL == pBSSSes )
8239 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008240
Jeff Johnson295189b2012-06-20 16:38:30 -07008241 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
8242 "DAL has no free sessions - cannot run another join");
Jeff Johnsone7245742012-09-05 17:12:55 -07008243
Jeff Johnson295189b2012-06-20 16:38:30 -07008244 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008245 return WDI_STATUS_RES_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008246 }
Jeff Johnsone7245742012-09-05 17:12:55 -07008247
Jeff Johnson295189b2012-06-20 16:38:30 -07008248 /*Save BSS Session Info*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008249 pBSSSes->bInUse = eWLAN_PAL_TRUE;
8250 wpalMemoryCopy( pBSSSes->macBSSID, pwdiConfigBSSParams->wdiReqInfo.macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -07008251 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -07008252
Jeff Johnson295189b2012-06-20 16:38:30 -07008253 /*Transition to state Joining*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008254 pBSSSes->wdiAssocState = WDI_ASSOC_JOINING_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07008255 pWDICtx->ucCurrentBSSSesIdx = ucCurrentBSSSesIdx;
8256#else
Jeff Johnsone7245742012-09-05 17:12:55 -07008257 /* If the BSS type is IBSS create the session here as there is no Join
Jeff Johnson295189b2012-06-20 16:38:30 -07008258 * Request in case of IBSS*/
8259 if((pwdiConfigBSSParams->wdiReqInfo.wdiBSSType == WDI_IBSS_MODE) ||
8260 (pwdiConfigBSSParams->wdiReqInfo.wdiBSSType == WDI_INFRA_AP_MODE) ||
8261 (pwdiConfigBSSParams->wdiReqInfo.wdiBSSType == WDI_BTAMP_AP_MODE) ||
8262 (pwdiConfigBSSParams->wdiReqInfo.wdiBSSType == WDI_BTAMP_STA_MODE))
8263 {
8264 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008265 Fetch an empty session block
Jeff Johnson295189b2012-06-20 16:38:30 -07008266 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008267 ucCurrentBSSSesIdx = WDI_FindEmptySession( pWDICtx, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07008268 if ( NULL == pBSSSes )
8269 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008270
Jeff Johnson295189b2012-06-20 16:38:30 -07008271 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
8272 "DAL has no free sessions - cannot run another join");
Jeff Johnsone7245742012-09-05 17:12:55 -07008273
Jeff Johnson295189b2012-06-20 16:38:30 -07008274 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008275 return WDI_STATUS_RES_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008276 }
Jeff Johnsone7245742012-09-05 17:12:55 -07008277
Jeff Johnson295189b2012-06-20 16:38:30 -07008278 /*Save BSS Session Info*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008279 pBSSSes->bInUse = eWLAN_PAL_TRUE;
8280 wpalMemoryCopy( pBSSSes->macBSSID, pwdiConfigBSSParams->wdiReqInfo.macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -07008281 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -07008282
Jeff Johnson295189b2012-06-20 16:38:30 -07008283 /*Transition to state Joining*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008284 pBSSSes->wdiAssocState = WDI_ASSOC_JOINING_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07008285 pWDICtx->ucCurrentBSSSesIdx = ucCurrentBSSSesIdx;
8286 }
8287 else
8288 {
8289 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07008290 "%s: Association sequence for this BSS does not yet exist." MAC_ADDRESS_STR "wdiBssType %d",
8291 __func__, MAC_ADDR_ARRAY(pwdiConfigBSSParams->wdiReqInfo.macBSSID),
8292 pwdiConfigBSSParams->wdiReqInfo.wdiBSSType);
8293
Jeff Johnson295189b2012-06-20 16:38:30 -07008294 /* for IBSS testing */
8295 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008296 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008297 }
8298#endif
8299 }
8300
8301 /*------------------------------------------------------------------------
8302 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07008303 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07008304 ------------------------------------------------------------------------*/
8305 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
8306 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008307 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8308 "%s: Association sequence for this BSS exists but currently queued. " MAC_ADDRESS_STR " bssIdx %d",
8309 __func__, MAC_ADDR_ARRAY(pwdiConfigBSSParams->wdiReqInfo.macBSSID),
8310 ucCurrentBSSSesIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07008311
Jeff Johnsone7245742012-09-05 17:12:55 -07008312 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07008313
8314 wpalMutexRelease(&pWDICtx->wptMutex);
8315
Jeff Johnsone7245742012-09-05 17:12:55 -07008316 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07008317 }
8318
8319 /* Cache the request for response processing */
Jeff Johnsone7245742012-09-05 17:12:55 -07008320 wpalMemoryCopy(&pWDICtx->wdiCachedConfigBssReq,
8321 pwdiConfigBSSParams,
Jeff Johnson295189b2012-06-20 16:38:30 -07008322 sizeof(pWDICtx->wdiCachedConfigBssReq));
8323
8324 wpalMutexRelease(&pWDICtx->wptMutex);
8325
Jeff Johnsone7245742012-09-05 17:12:55 -07008326 /* Allocation of BssReqMsg Memory Based on Firmware Capabilities */
8327#ifdef WLAN_FEATURE_11AC
8328 if (WDI_getFwWlanFeatCaps(DOT11AC))
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -07008329 uMsgSize = sizeof(halConfigBssReqMsg.uBssParams.configBssParams_V1); // Version - 1 For 11AC
Jeff Johnsone7245742012-09-05 17:12:55 -07008330 else
8331#endif
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -07008332 uMsgSize = sizeof(halConfigBssReqMsg.uBssParams.configBssParams); // default Version - 0 Structure
Jeff Johnson295189b2012-06-20 16:38:30 -07008333
8334 /*-----------------------------------------------------------------------
8335 Get message buffer
8336 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008337 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_CONFIG_BSS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008338 uMsgSize, &pSendBuffer, &usDataOffset, &usSendSize))||
8339 ( usSendSize < (usDataOffset + uMsgSize )))
8340 {
8341 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08008342 "Unable to get send buffer in config bss req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07008343 pEventData, pwdiConfigBSSParams, wdiConfigBSSRspCb);
8344 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008345 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008346 }
8347
8348 /*Copy the BSS request */
Madan Mohan Koyyalamudia208d102012-10-15 15:18:18 -07008349#ifdef WLAN_FEATURE_11AC
8350 if (WDI_getFwWlanFeatCaps(DOT11AC))
8351 WDI_CopyWDIConfigBSSToHALConfigBSS( (tConfigBssParams*)&halConfigBssReqMsg.uBssParams.configBssParams_V1,
8352 &pwdiConfigBSSParams->wdiReqInfo);
8353 else
8354#endif
Jeff Johnsone7245742012-09-05 17:12:55 -07008355 WDI_CopyWDIConfigBSSToHALConfigBSS( &halConfigBssReqMsg.uBssParams.configBssParams,
Jeff Johnson295189b2012-06-20 16:38:30 -07008356 &pwdiConfigBSSParams->wdiReqInfo);
8357
8358 /* Need to fill in the STA Index to invalid, since at this point we have not
8359 yet received it from HAL */
Jeff Johnsone7245742012-09-05 17:12:55 -07008360 halConfigBssReqMsg.uBssParams.configBssParams.staContext.staIdx = WDI_STA_INVALID_IDX;
Jeff Johnson295189b2012-06-20 16:38:30 -07008361
8362 /* Need to fill in the BSS index */
Jeff Johnsone7245742012-09-05 17:12:55 -07008363 halConfigBssReqMsg.uBssParams.configBssParams.staContext.bssIdx = pBSSSes->ucBSSIdx;
8364
Madan Mohan Koyyalamudif244d8f2012-11-29 11:21:05 -08008365#ifdef WLAN_FEATURE_11AC
8366 if (WDI_getFwWlanFeatCaps(DOT11AC)){
8367 wpalMemoryCopy( pSendBuffer+usDataOffset,
8368 &halConfigBssReqMsg.uBssParams.configBssParams_V1,
8369 uMsgSize);
8370 }else
8371#endif
Tushnim Bhattacharyya5dd94562013-03-20 20:15:03 -07008372 {
8373 if ( uMsgSize <= sizeof(tConfigBssParams) )
8374 {
Tushnim Bhattacharyyaf64c5dc2013-03-21 15:11:31 -07008375 wpalMemoryCopy( pSendBuffer+usDataOffset,
Tushnim Bhattacharyya5dd94562013-03-20 20:15:03 -07008376 &halConfigBssReqMsg.uBssParams.configBssParams,
8377 uMsgSize);
8378 }
8379 else
8380 {
8381 return WDI_STATUS_E_FAILURE;
8382 }
8383 }
Jeff Johnson295189b2012-06-20 16:38:30 -07008384
8385 pWDICtx->wdiReqStatusCB = pwdiConfigBSSParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008386 pWDICtx->pReqStatusUserData = pwdiConfigBSSParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008387
8388 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008389 Send Config BSS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008390 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008391 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
8392 wdiConfigBSSRspCb, pEventData->pUserData,
Jeff Johnson295189b2012-06-20 16:38:30 -07008393 WDI_CONFIG_BSS_RESP);
8394
8395}/*WDI_ProcessConfigBSSReq*/
8396
8397
8398/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008399 @brief Process Del BSS Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07008400 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008401
8402 @param pWDICtx: pointer to the WLAN DAL context
8403 pEventData: pointer to the event information structure
8404
Jeff Johnson295189b2012-06-20 16:38:30 -07008405 @see
8406 @return Result of the function call
8407*/
8408WDI_Status
8409WDI_ProcessDelBSSReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008410(
Jeff Johnson295189b2012-06-20 16:38:30 -07008411 WDI_ControlBlockType* pWDICtx,
8412 WDI_EventInfoType* pEventData
8413)
8414{
8415 WDI_DelBSSReqParamsType* pwdiDelBSSParams = NULL;
8416 WDI_DelBSSRspCb wdiDelBSSRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008417 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07008418 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008419 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008420 wpt_uint16 usDataOffset = 0;
8421 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07008422 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07008423
Jeff Johnsone7245742012-09-05 17:12:55 -07008424 tDeleteBssReqMsg halBssReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07008425 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8426
8427 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008428 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008429 -------------------------------------------------------------------------*/
8430 if (( NULL == pEventData ) ||
8431 ( NULL == (pwdiDelBSSParams = (WDI_DelBSSReqParamsType*)pEventData->pEventData)) ||
8432 ( NULL == (wdiDelBSSRspCb = (WDI_DelBSSRspCb)pEventData->pCBfnc)))
8433 {
8434 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008435 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008436 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008437 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008438 }
8439
8440 /*-------------------------------------------------------------------------
8441 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07008442 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07008443 -------------------------------------------------------------------------*/
8444 wpalMutexAcquire(&pWDICtx->wptMutex);
8445
8446 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008447 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07008448 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008449 ucCurrentBSSSesIdx = WDI_FindAssocSessionByBSSIdx( pWDICtx,
8450 pwdiDelBSSParams->ucBssIdx,
8451 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07008452
Jeff Johnsone7245742012-09-05 17:12:55 -07008453 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07008454 {
8455 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07008456 "%s: BSS does not yet exist. ucBssIdx %d",
8457 __func__, pwdiDelBSSParams->ucBssIdx);
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -08008458
8459 wpalMutexRelease(&pWDICtx->wptMutex);
8460
8461 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008462 }
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -08008463
8464 /*------------------------------------------------------------------------
8465 Check if this BSS is being currently processed or queued,
8466 if queued - queue the new request as well
8467 ------------------------------------------------------------------------*/
8468 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
Jeff Johnson295189b2012-06-20 16:38:30 -07008469 {
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -08008470 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8471 "%s: Association sequence for this BSS exists but currently queued. ucBssIdx %d",
8472 __func__, pwdiDelBSSParams->ucBssIdx);
8473
8474 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
8475
8476 wpalMutexRelease(&pWDICtx->wptMutex);
8477
8478 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07008479 }
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -08008480
Jeff Johnson295189b2012-06-20 16:38:30 -07008481 /*-----------------------------------------------------------------------
8482 If we receive a Del BSS request for an association that is already in
8483 progress, it indicates that the assoc has failed => we no longer have
8484 an association in progress => we must check for pending associations
Jeff Johnsone7245742012-09-05 17:12:55 -07008485 that were queued and start as soon as the Del BSS response is received
Jeff Johnson295189b2012-06-20 16:38:30 -07008486 -----------------------------------------------------------------------*/
8487 if ( ucCurrentBSSSesIdx == pWDICtx->ucCurrentBSSSesIdx )
8488 {
8489 /*We can switch to false here because even if a subsequent Join comes in
8490 it will only be processed when DAL transitions out of BUSY state which
8491 happens when the Del BSS request comes */
8492 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
8493
8494 /*Former association is complete - prepare next pending assoc for
8495 processing */
8496 WDI_DequeueAssocRequest(pWDICtx);
8497 }
8498
8499 wpalMutexRelease(&pWDICtx->wptMutex);
8500 /*-----------------------------------------------------------------------
8501 Get message buffer
8502 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008503 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_DEL_BSS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008504 sizeof(halBssReqMsg.deleteBssParams),
8505 &pSendBuffer, &usDataOffset, &usSendSize))||
8506 ( usSendSize < (usDataOffset + sizeof(halBssReqMsg.deleteBssParams) )))
8507 {
8508 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08008509 "Unable to get send buffer in start req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07008510 pEventData, pwdiDelBSSParams, wdiDelBSSRspCb);
8511 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008512 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008513 }
8514
8515 /*Fill in the message request structure*/
8516
8517 /*BSS Index is saved on config BSS response and Post Assoc Response */
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -08008518 halBssReqMsg.deleteBssParams.bssIdx = pBSSSes->ucBSSIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -07008519
Jeff Johnsone7245742012-09-05 17:12:55 -07008520 wpalMemoryCopy( pSendBuffer+usDataOffset,
8521 &halBssReqMsg.deleteBssParams,
8522 sizeof(halBssReqMsg.deleteBssParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008523
8524 pWDICtx->wdiReqStatusCB = pwdiDelBSSParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008525 pWDICtx->pReqStatusUserData = pwdiDelBSSParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008526
Jeff Johnsone7245742012-09-05 17:12:55 -07008527
Jeff Johnson295189b2012-06-20 16:38:30 -07008528 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008529 Send Del BSS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008530 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008531 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07008532 wdiDelBSSRspCb, pEventData->pUserData, WDI_DEL_BSS_RESP);
8533
Jeff Johnsone7245742012-09-05 17:12:55 -07008534
Jeff Johnson295189b2012-06-20 16:38:30 -07008535}/*WDI_ProcessDelBSSReq*/
8536
8537/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008538 @brief Process Post Assoc Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -07008539 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008540
8541 @param pWDICtx: pointer to the WLAN DAL context
8542 pEventData: pointer to the event information structure
8543
Jeff Johnson295189b2012-06-20 16:38:30 -07008544 @see
8545 @return Result of the function call
8546*/
8547WDI_Status
8548WDI_ProcessPostAssocReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008549(
Jeff Johnson295189b2012-06-20 16:38:30 -07008550 WDI_ControlBlockType* pWDICtx,
8551 WDI_EventInfoType* pEventData
8552)
8553{
8554 WDI_PostAssocReqParamsType* pwdiPostAssocParams = NULL;
8555 WDI_PostAssocRspCb wdiPostAssocRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008556 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07008557 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008558 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008559 wpt_uint16 usDataOffset = 0;
8560 wpt_uint16 usSendSize = 0;
8561 wpt_uint16 uMsgSize = 0;
8562 wpt_uint16 uOffset = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07008563 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07008564
Jeff Johnsone7245742012-09-05 17:12:55 -07008565 tPostAssocReqMsg halPostAssocReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07008566 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8567
8568 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008569 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008570 -------------------------------------------------------------------------*/
8571 if (( NULL == pEventData ) ||
8572 ( NULL == (pwdiPostAssocParams = (WDI_PostAssocReqParamsType*)pEventData->pEventData)) ||
8573 ( NULL == (wdiPostAssocRspCb = (WDI_PostAssocRspCb)pEventData->pCBfnc)))
8574 {
8575 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008576 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008577 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008578 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008579 }
8580
8581 /*-------------------------------------------------------------------------
8582 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07008583 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07008584 -------------------------------------------------------------------------*/
8585 wpalMutexAcquire(&pWDICtx->wptMutex);
8586
8587 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008588 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07008589 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008590 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
8591 pwdiPostAssocParams->wdiBSSParams.macBSSID,
8592 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07008593
8594 if ( NULL == pBSSSes )
8595 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008596 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
8597 "%s: Association sequence for this BSS does not yet exist - "
8598 "operation not allowed. macBSSID " MAC_ADDRESS_STR,
8599 __func__, MAC_ADDR_ARRAY(pwdiPostAssocParams->wdiBSSParams.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07008600
8601 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008602 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008603 }
8604
8605 /*------------------------------------------------------------------------
8606 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07008607 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07008608 ------------------------------------------------------------------------*/
8609 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
8610 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008611 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8612 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
8613 __func__, MAC_ADDR_ARRAY(pwdiPostAssocParams->wdiBSSParams.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07008614
Jeff Johnsone7245742012-09-05 17:12:55 -07008615 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07008616
8617 wpalMutexRelease(&pWDICtx->wptMutex);
8618
Jeff Johnsone7245742012-09-05 17:12:55 -07008619 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07008620 }
8621
8622 /*-----------------------------------------------------------------------
8623 If Post Assoc was not yet received - the current association must
8624 be in progress
8625 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008626 if (( ucCurrentBSSSesIdx != pWDICtx->ucCurrentBSSSesIdx ) ||
Jeff Johnson295189b2012-06-20 16:38:30 -07008627 ( eWLAN_PAL_FALSE == pWDICtx->bAssociationInProgress ))
8628 {
8629 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
8630 "Association sequence for this BSS association no longer in "
8631 "progress - not allowed");
8632
8633 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008634 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008635 }
8636
8637 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008638 Post Assoc Request is only allowed in Joining state
Jeff Johnson295189b2012-06-20 16:38:30 -07008639 -----------------------------------------------------------------------*/
8640 if ( WDI_ASSOC_JOINING_ST != pBSSSes->wdiAssocState)
8641 {
8642 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
8643 "Post Assoc not allowed before JOIN - failing request");
8644
8645 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008646 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008647 }
8648
8649 wpalMutexRelease(&pWDICtx->wptMutex);
8650
8651 uMsgSize = sizeof(halPostAssocReqMsg.postAssocReqParams.configStaParams) +
8652 sizeof(halPostAssocReqMsg.postAssocReqParams.configBssParams) ;
8653 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008654 Fill message for tx over the bus
Jeff Johnson295189b2012-06-20 16:38:30 -07008655 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008656 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_POST_ASSOC_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008657 uMsgSize,&pSendBuffer, &usDataOffset, &usSendSize))||
8658 ( usSendSize < (usDataOffset + uMsgSize )))
8659 {
8660 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08008661 "Unable to get send buffer in start req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07008662 pEventData, pwdiPostAssocParams, wdiPostAssocRspCb);
8663 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008664 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008665 }
8666
8667 /*Copy the STA parameters */
8668 WDI_CopyWDIStaCtxToHALStaCtx(&halPostAssocReqMsg.postAssocReqParams.configStaParams,
8669 &pwdiPostAssocParams->wdiSTAParams );
8670
8671 /* Need to fill in the self STA Index */
Jeff Johnsone7245742012-09-05 17:12:55 -07008672 if ( WDI_STATUS_SUCCESS !=
Jeff Johnson295189b2012-06-20 16:38:30 -07008673 WDI_STATableFindStaidByAddr(pWDICtx,
8674 pwdiPostAssocParams->wdiSTAParams.macSTA,
8675 (wpt_uint8*)&halPostAssocReqMsg.postAssocReqParams.configStaParams.staIdx ))
8676 {
8677 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08008678 MAC_ADDRESS_STR
8679 ": This station does not exist in the WDI Station Table",
8680 MAC_ADDR_ARRAY(pwdiPostAssocParams->wdiSTAParams.macSTA));
Jeff Johnson295189b2012-06-20 16:38:30 -07008681 wpalMutexRelease(&pWDICtx->wptMutex);
Madan Mohan Koyyalamudif244d8f2012-11-29 11:21:05 -08008682 wpalMemoryFree(pSendBuffer);
Jeff Johnsone7245742012-09-05 17:12:55 -07008683 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008684 }
8685
8686 /* Need to fill in the BSS index */
Jeff Johnsone7245742012-09-05 17:12:55 -07008687 halPostAssocReqMsg.postAssocReqParams.configStaParams.bssIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -07008688 pBSSSes->ucBSSIdx;
8689
8690 /*Copy the BSS parameters */
8691 WDI_CopyWDIConfigBSSToHALConfigBSS( &halPostAssocReqMsg.postAssocReqParams.configBssParams,
8692 &pwdiPostAssocParams->wdiBSSParams);
8693
8694 /* Need to fill in the STA index of the peer */
Jeff Johnsone7245742012-09-05 17:12:55 -07008695 if ( WDI_STATUS_SUCCESS !=
Jeff Johnson295189b2012-06-20 16:38:30 -07008696 WDI_STATableFindStaidByAddr(pWDICtx,
8697 pwdiPostAssocParams->wdiBSSParams.wdiSTAContext.macSTA,
Jeff Johnsone7245742012-09-05 17:12:55 -07008698 (wpt_uint8*)&halPostAssocReqMsg.postAssocReqParams.configBssParams.staContext.staIdx))
Jeff Johnson295189b2012-06-20 16:38:30 -07008699 {
8700 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08008701 MAC_ADDRESS_STR
8702 ": This station does not exist in the WDI Station Table",
8703 MAC_ADDR_ARRAY(pwdiPostAssocParams->wdiBSSParams.wdiSTAContext.macSTA));
Jeff Johnson295189b2012-06-20 16:38:30 -07008704 wpalMutexRelease(&pWDICtx->wptMutex);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -08008705 wpalMemoryFree(pSendBuffer);
Jeff Johnsone7245742012-09-05 17:12:55 -07008706 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008707 }
8708
8709 /* Need to fill in the BSS index */
Jeff Johnsone7245742012-09-05 17:12:55 -07008710 halPostAssocReqMsg.postAssocReqParams.configStaParams.bssIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -07008711 pBSSSes->ucBSSIdx;
8712
Jeff Johnsone7245742012-09-05 17:12:55 -07008713
8714 wpalMemoryCopy( pSendBuffer+usDataOffset,
8715 &halPostAssocReqMsg.postAssocReqParams.configStaParams,
8716 sizeof(halPostAssocReqMsg.postAssocReqParams.configStaParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008717
8718 uOffset = sizeof(halPostAssocReqMsg.postAssocReqParams.configStaParams);
8719
Jeff Johnsone7245742012-09-05 17:12:55 -07008720 wpalMemoryCopy( pSendBuffer+usDataOffset + uOffset,
8721 &halPostAssocReqMsg.postAssocReqParams.configBssParams,
8722 sizeof(halPostAssocReqMsg.postAssocReqParams.configBssParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008723
Jeff Johnsone7245742012-09-05 17:12:55 -07008724
Jeff Johnson295189b2012-06-20 16:38:30 -07008725 pWDICtx->wdiReqStatusCB = pwdiPostAssocParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008726 pWDICtx->pReqStatusUserData = pwdiPostAssocParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008727
Jeff Johnsone7245742012-09-05 17:12:55 -07008728
8729 wpalMemoryCopy( &pWDICtx->wdiCachedPostAssocReq,
Jeff Johnson295189b2012-06-20 16:38:30 -07008730 pwdiPostAssocParams,
Jeff Johnsone7245742012-09-05 17:12:55 -07008731 sizeof(pWDICtx->wdiCachedPostAssocReq));
Jeff Johnson295189b2012-06-20 16:38:30 -07008732
8733 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008734 Send Post Assoc Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008735 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008736 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07008737 wdiPostAssocRspCb, pEventData->pUserData, WDI_POST_ASSOC_RESP);
8738
Jeff Johnsone7245742012-09-05 17:12:55 -07008739
Jeff Johnson295189b2012-06-20 16:38:30 -07008740}/*WDI_ProcessPostAssocReq*/
8741
8742/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008743 @brief Process Del STA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07008744 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008745
8746 @param pWDICtx: pointer to the WLAN DAL context
8747 pEventData: pointer to the event information structure
8748
Jeff Johnson295189b2012-06-20 16:38:30 -07008749 @see
8750 @return Result of the function call
8751*/
8752WDI_Status
8753WDI_ProcessDelSTAReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008754(
Jeff Johnson295189b2012-06-20 16:38:30 -07008755 WDI_ControlBlockType* pWDICtx,
8756 WDI_EventInfoType* pEventData
8757)
8758{
8759 WDI_DelSTAReqParamsType* pwdiDelSTAParams;
8760 WDI_DelSTARspCb wdiDelSTARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07008761 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07008762 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008763 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008764 wpt_uint16 usDataOffset = 0;
8765 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07008766 wpt_macAddr macBSSID;
Jeff Johnson295189b2012-06-20 16:38:30 -07008767 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
8768
Jeff Johnsone7245742012-09-05 17:12:55 -07008769 tDeleteStaReqMsg halDelStaReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07008770 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8771
8772 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008773 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008774 -------------------------------------------------------------------------*/
8775 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
8776 ( NULL == pEventData->pCBfnc ))
8777 {
8778 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008779 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008780 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008781 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008782 }
8783
8784 pwdiDelSTAParams = (WDI_DelSTAReqParamsType*)pEventData->pEventData;
8785 wdiDelSTARspCb = (WDI_DelSTARspCb)pEventData->pCBfnc;
8786 /*-------------------------------------------------------------------------
8787 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07008788 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07008789 -------------------------------------------------------------------------*/
8790 wpalMutexAcquire(&pWDICtx->wptMutex);
8791
8792 /*------------------------------------------------------------------------
8793 Find the BSS for which the request is made and identify WDI session
8794 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008795 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
8796 pwdiDelSTAParams->ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07008797 &macBSSID))
8798 {
8799 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08008800 "This station does not exist in the WDI Station Table %d",
8801 pwdiDelSTAParams->ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07008802 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008803 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008804 }
8805
Jeff Johnsone7245742012-09-05 17:12:55 -07008806 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
8807 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07008808 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008809 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
8810 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
8811 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07008812
8813 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008814 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008815 }
8816
8817 /*------------------------------------------------------------------------
8818 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07008819 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07008820 ------------------------------------------------------------------------*/
8821 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
8822 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008823 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8824 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
8825 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07008826
Jeff Johnsone7245742012-09-05 17:12:55 -07008827 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07008828 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008829 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07008830 }
8831
8832 wpalMutexRelease(&pWDICtx->wptMutex);
8833 /*-----------------------------------------------------------------------
8834 Get message buffer
8835 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008836 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_DEL_STA_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008837 sizeof(halDelStaReqMsg.delStaParams),
8838 &pSendBuffer, &usDataOffset, &usSendSize))||
8839 ( usSendSize < (usDataOffset + sizeof(halDelStaReqMsg.delStaParams) )))
8840 {
8841 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08008842 "Unable to get send buffer in start req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07008843 pEventData, pwdiDelSTAParams, wdiDelSTARspCb);
8844 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008845 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008846 }
8847
Jeff Johnsone7245742012-09-05 17:12:55 -07008848 halDelStaReqMsg.delStaParams.staIdx = pwdiDelSTAParams->ucSTAIdx;
8849 wpalMemoryCopy( pSendBuffer+usDataOffset,
8850 &halDelStaReqMsg.delStaParams,
8851 sizeof(halDelStaReqMsg.delStaParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008852
8853 pWDICtx->wdiReqStatusCB = pwdiDelSTAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008854 pWDICtx->pReqStatusUserData = pwdiDelSTAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008855
8856 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008857 Send Del STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008858 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008859 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07008860 wdiDelSTARspCb, pEventData->pUserData, WDI_DEL_STA_RESP);
8861
8862}/*WDI_ProcessDelSTAReq*/
8863
8864
8865/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -07008866 SECURITY REQUEST PROCESSING API
Jeff Johnson295189b2012-06-20 16:38:30 -07008867==========================================================================*/
8868/**
8869 @brief Process Set BSS Key Request function (called when Main FSM
8870 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008871
8872 @param pWDICtx: pointer to the WLAN DAL context
8873 pEventData: pointer to the event information structure
8874
Jeff Johnson295189b2012-06-20 16:38:30 -07008875 @see
8876 @return Result of the function call
8877*/
8878WDI_Status
8879WDI_ProcessSetBssKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008880(
Jeff Johnson295189b2012-06-20 16:38:30 -07008881 WDI_ControlBlockType* pWDICtx,
8882 WDI_EventInfoType* pEventData
8883)
8884{
8885 WDI_SetBSSKeyReqParamsType* pwdiSetBSSKeyParams;
8886 WDI_SetBSSKeyRspCb wdiSetBSSKeyRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07008887 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07008888 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008889 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008890 wpt_uint16 usDataOffset = 0;
8891 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07008892 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07008893 tSetBssKeyReqMsg halSetBssKeyReqMsg = {{0}};
8894 wpt_uint8 keyIndex = 0;
8895
8896 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8897
8898 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008899 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008900 -------------------------------------------------------------------------*/
8901 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
8902 ( NULL == pEventData->pCBfnc ))
8903 {
8904 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008905 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008906 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008907 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008908 }
8909
8910 pwdiSetBSSKeyParams = (WDI_SetBSSKeyReqParamsType*)pEventData->pEventData;
8911 wdiSetBSSKeyRspCb = (WDI_SetBSSKeyRspCb)pEventData->pCBfnc;
8912 /*-------------------------------------------------------------------------
8913 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07008914 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07008915 -------------------------------------------------------------------------*/
8916 wpalMutexAcquire(&pWDICtx->wptMutex);
8917
8918 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008919 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07008920 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008921 ucCurrentBSSSesIdx = WDI_FindAssocSessionByBSSIdx( pWDICtx,
8922 pwdiSetBSSKeyParams->wdiBSSKeyInfo.ucBssIdx,
8923 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07008924
Jeff Johnsone7245742012-09-05 17:12:55 -07008925 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07008926 {
8927 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07008928 "%s: Association sequence for this BSS does not yet exist. ucBssIdx %d",
8929 __func__, pwdiSetBSSKeyParams->wdiBSSKeyInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07008930
8931 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008932 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008933 }
8934
8935 /*------------------------------------------------------------------------
8936 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07008937 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07008938 ------------------------------------------------------------------------*/
8939 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
8940 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008941 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8942 "%s: Association sequence for this BSS exists but currently queued. ucBssIdx %d",
8943 __func__, pwdiSetBSSKeyParams->wdiBSSKeyInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07008944
Jeff Johnsone7245742012-09-05 17:12:55 -07008945 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07008946 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008947 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07008948 }
8949
8950
8951 wpalMutexRelease(&pWDICtx->wptMutex);
8952 /*-----------------------------------------------------------------------
8953 Get message buffer
8954 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008955 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_BSS_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008956 sizeof(halSetBssKeyReqMsg.setBssKeyParams),
8957 &pSendBuffer, &usDataOffset, &usSendSize))||
8958 ( usSendSize < (usDataOffset + sizeof(halSetBssKeyReqMsg.setBssKeyParams) )))
8959 {
8960 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08008961 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07008962 pEventData, pwdiSetBSSKeyParams, wdiSetBSSKeyRspCb);
8963 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008964 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008965 }
8966
8967 /*-----------------------------------------------------------------------
8968 Copy the Key parameters into the HAL message
8969 -----------------------------------------------------------------------*/
8970
Jeff Johnsone7245742012-09-05 17:12:55 -07008971 halSetBssKeyReqMsg.setBssKeyParams.bssIdx = ucCurrentBSSSesIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -07008972
Jeff Johnsone7245742012-09-05 17:12:55 -07008973 halSetBssKeyReqMsg.setBssKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -07008974 WDI_2_HAL_ENC_TYPE (pwdiSetBSSKeyParams->wdiBSSKeyInfo.wdiEncType);
8975
Jeff Johnsone7245742012-09-05 17:12:55 -07008976 halSetBssKeyReqMsg.setBssKeyParams.numKeys =
Jeff Johnson295189b2012-06-20 16:38:30 -07008977 pwdiSetBSSKeyParams->wdiBSSKeyInfo.ucNumKeys;
8978
8979 for(keyIndex = 0; keyIndex < pwdiSetBSSKeyParams->wdiBSSKeyInfo.ucNumKeys ;
8980 keyIndex++)
8981 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008982 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -07008983 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].keyId;
8984 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].unicast =
8985 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].unicast;
8986 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].keyDirection =
8987 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].keyDirection;
8988 wpalMemoryCopy(halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].keyRsc,
Jeff Johnsone7245742012-09-05 17:12:55 -07008989 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].keyRsc,
Jeff Johnson295189b2012-06-20 16:38:30 -07008990 WDI_MAX_KEY_RSC_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -07008991 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].paeRole =
Jeff Johnson295189b2012-06-20 16:38:30 -07008992 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].paeRole;
Jeff Johnsone7245742012-09-05 17:12:55 -07008993 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].keyLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07008994 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].keyLength;
8995 wpalMemoryCopy(halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].key,
Jeff Johnsone7245742012-09-05 17:12:55 -07008996 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].key,
Jeff Johnson295189b2012-06-20 16:38:30 -07008997 WDI_MAX_KEY_LENGTH);
8998 }
Jeff Johnsone7245742012-09-05 17:12:55 -07008999
9000 wpalMemoryCopy( pSendBuffer+usDataOffset,
9001 &halSetBssKeyReqMsg.setBssKeyParams,
9002 sizeof(halSetBssKeyReqMsg.setBssKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07009003
9004 pWDICtx->wdiReqStatusCB = pwdiSetBSSKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009005 pWDICtx->pReqStatusUserData = pwdiSetBSSKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009006
9007 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009008 Send Set BSS Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009009 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009010 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
9011 wdiSetBSSKeyRspCb, pEventData->pUserData,
9012 WDI_SET_BSS_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009013
9014}/*WDI_ProcessSetBssKeyReq*/
9015
9016/**
Jeff Johnsone7245742012-09-05 17:12:55 -07009017 @brief Process Remove BSS Key Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -07009018 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009019
9020 @param pWDICtx: pointer to the WLAN DAL context
9021 pEventData: pointer to the event information structure
9022
Jeff Johnson295189b2012-06-20 16:38:30 -07009023 @see
9024 @return Result of the function call
9025*/
9026WDI_Status
9027WDI_ProcessRemoveBssKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009028(
Jeff Johnson295189b2012-06-20 16:38:30 -07009029 WDI_ControlBlockType* pWDICtx,
9030 WDI_EventInfoType* pEventData
9031)
9032{
9033 WDI_RemoveBSSKeyReqParamsType* pwdiRemoveBSSKeyParams;
9034 WDI_RemoveBSSKeyRspCb wdiRemoveBSSKeyRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07009035 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07009036 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009037 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009038 wpt_uint16 usDataOffset = 0;
9039 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009040 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07009041 tRemoveBssKeyReqMsg halRemoveBssKeyReqMsg = {{0}};
9042 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9043
9044 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009045 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009046 -------------------------------------------------------------------------*/
9047 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9048 ( NULL == pEventData->pCBfnc ))
9049 {
9050 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009051 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009052 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009053 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009054 }
9055
9056 pwdiRemoveBSSKeyParams = (WDI_RemoveBSSKeyReqParamsType*)pEventData->pEventData;
9057 wdiRemoveBSSKeyRspCb = (WDI_RemoveBSSKeyRspCb)pEventData->pCBfnc;
9058 /*-------------------------------------------------------------------------
9059 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009060 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009061 -------------------------------------------------------------------------*/
9062 wpalMutexAcquire(&pWDICtx->wptMutex);
9063
9064 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009065 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07009066 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009067 ucCurrentBSSSesIdx = WDI_FindAssocSessionByBSSIdx( pWDICtx,
9068 pwdiRemoveBSSKeyParams->wdiKeyInfo.ucBssIdx,
9069 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07009070
Jeff Johnsone7245742012-09-05 17:12:55 -07009071 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009072 {
9073 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07009074 "%s: Association sequence for this BSS does not yet exist. ucBssIdx %d",
9075 __func__, pwdiRemoveBSSKeyParams->wdiKeyInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07009076
9077 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009078 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009079 }
9080
9081 /*------------------------------------------------------------------------
9082 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009083 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009084 ------------------------------------------------------------------------*/
9085 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9086 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009087 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9088 "%s: Association sequence for this BSS exists but currently queued. ucBssIdx %d",
9089 __func__, pwdiRemoveBSSKeyParams->wdiKeyInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07009090
Jeff Johnsone7245742012-09-05 17:12:55 -07009091 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009092 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009093 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009094 }
9095
9096
9097 wpalMutexRelease(&pWDICtx->wptMutex);
9098
9099 /*-----------------------------------------------------------------------
9100 Get message buffer
9101 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009102 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_RMV_BSS_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009103 sizeof(halRemoveBssKeyReqMsg.removeBssKeyParams),
9104 &pSendBuffer, &usDataOffset, &usSendSize))||
9105 ( usSendSize < (usDataOffset + sizeof(halRemoveBssKeyReqMsg.removeBssKeyParams) )))
9106 {
9107 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009108 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07009109 pEventData, pwdiRemoveBSSKeyParams, wdiRemoveBSSKeyRspCb);
9110 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009111 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009112 }
9113 /*-----------------------------------------------------------------------
9114 Copy the Key parameters into the HAL message
9115 -----------------------------------------------------------------------*/
9116 halRemoveBssKeyReqMsg.removeBssKeyParams.bssIdx = ucCurrentBSSSesIdx;
9117
Jeff Johnsone7245742012-09-05 17:12:55 -07009118 halRemoveBssKeyReqMsg.removeBssKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -07009119 WDI_2_HAL_ENC_TYPE (pwdiRemoveBSSKeyParams->wdiKeyInfo.wdiEncType);
9120
9121 halRemoveBssKeyReqMsg.removeBssKeyParams.keyId = pwdiRemoveBSSKeyParams->wdiKeyInfo.ucKeyId;
9122
Jeff Johnsone7245742012-09-05 17:12:55 -07009123 halRemoveBssKeyReqMsg.removeBssKeyParams.wepType =
Jeff Johnson295189b2012-06-20 16:38:30 -07009124 WDI_2_HAL_WEP_TYPE(pwdiRemoveBSSKeyParams->wdiKeyInfo.wdiWEPType);
9125
Jeff Johnsone7245742012-09-05 17:12:55 -07009126 wpalMemoryCopy( pSendBuffer+usDataOffset,
9127 &halRemoveBssKeyReqMsg.removeBssKeyParams,
9128 sizeof(halRemoveBssKeyReqMsg.removeBssKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07009129
9130 pWDICtx->wdiReqStatusCB = pwdiRemoveBSSKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009131 pWDICtx->pReqStatusUserData = pwdiRemoveBSSKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009132
9133 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009134 Send Remove BSS Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009135 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009136 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07009137 wdiRemoveBSSKeyRspCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -07009138 WDI_RMV_BSS_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009139}/*WDI_ProcessRemoveBssKeyReq*/
9140
9141/**
Jeff Johnsone7245742012-09-05 17:12:55 -07009142 @brief Process Set STA KeyRequest function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07009143 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009144
9145 @param pWDICtx: pointer to the WLAN DAL context
9146 pEventData: pointer to the event information structure
9147
Jeff Johnson295189b2012-06-20 16:38:30 -07009148 @see
9149 @return Result of the function call
9150*/
9151WDI_Status
9152WDI_ProcessSetStaKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009153(
Jeff Johnson295189b2012-06-20 16:38:30 -07009154 WDI_ControlBlockType* pWDICtx,
9155 WDI_EventInfoType* pEventData
9156)
9157{
9158 WDI_SetSTAKeyReqParamsType* pwdiSetSTAKeyParams;
9159 WDI_SetSTAKeyRspCb wdiSetSTAKeyRspCb;
9160 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009161 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009162 wpt_uint16 usDataOffset = 0;
9163 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009164 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07009165 wpt_macAddr macBSSID;
Jeff Johnsone7245742012-09-05 17:12:55 -07009166 wpt_uint8 ucCurrentBSSSesIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -07009167 tSetStaKeyReqMsg halSetStaKeyReqMsg = {{0}};
9168 wpt_uint8 keyIndex = 0;
9169
9170 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9171
9172 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009173 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009174 -------------------------------------------------------------------------*/
9175 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9176 ( NULL == pEventData->pCBfnc ))
9177 {
9178 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009179 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009180 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009181 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009182 }
9183
9184 pwdiSetSTAKeyParams = (WDI_SetSTAKeyReqParamsType*)pEventData->pEventData;
9185 wdiSetSTAKeyRspCb = (WDI_SetSTAKeyRspCb)pEventData->pCBfnc;
9186 /*-------------------------------------------------------------------------
9187 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009188 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009189 -------------------------------------------------------------------------*/
9190 wpalMutexAcquire(&pWDICtx->wptMutex);
9191
9192 /*------------------------------------------------------------------------
9193 Find the BSS for which the request is made and identify WDI session
9194 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009195 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
9196 pwdiSetSTAKeyParams->wdiKeyInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07009197 &macBSSID))
9198 {
9199 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009200 "This station does not exist in the WDI Station Table %d",
9201 pwdiSetSTAKeyParams->wdiKeyInfo.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07009202 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009203 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009204 }
9205
Jeff Johnsone7245742012-09-05 17:12:55 -07009206 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
9207 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009208 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009209 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
9210 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
9211 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009212
9213 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009214 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009215 }
Jeff Johnsone7245742012-09-05 17:12:55 -07009216
Jeff Johnson295189b2012-06-20 16:38:30 -07009217 /*------------------------------------------------------------------------
9218 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009219 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009220 ------------------------------------------------------------------------*/
9221 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9222 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009223 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9224 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
9225 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009226
Jeff Johnsone7245742012-09-05 17:12:55 -07009227 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009228 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009229 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009230 }
9231
9232
9233 wpalMutexRelease(&pWDICtx->wptMutex);
9234 /*-----------------------------------------------------------------------
9235 Get message buffer
9236 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009237 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_STA_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009238 sizeof(halSetStaKeyReqMsg.setStaKeyParams),
9239 &pSendBuffer, &usDataOffset, &usSendSize))||
9240 ( usSendSize < (usDataOffset + sizeof(halSetStaKeyReqMsg.setStaKeyParams) )))
9241 {
9242 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009243 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07009244 pEventData, pwdiSetSTAKeyParams, wdiSetSTAKeyRspCb);
9245 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009246 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009247 }
9248 /*-----------------------------------------------------------------------
9249 Copy the STA Key parameters into the HAL message
9250 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009251 halSetStaKeyReqMsg.setStaKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -07009252 WDI_2_HAL_ENC_TYPE (pwdiSetSTAKeyParams->wdiKeyInfo.wdiEncType);
9253
Jeff Johnsone7245742012-09-05 17:12:55 -07009254 halSetStaKeyReqMsg.setStaKeyParams.wepType =
Jeff Johnson295189b2012-06-20 16:38:30 -07009255 WDI_2_HAL_WEP_TYPE (pwdiSetSTAKeyParams->wdiKeyInfo.wdiWEPType );
9256
9257 halSetStaKeyReqMsg.setStaKeyParams.staIdx = pwdiSetSTAKeyParams->wdiKeyInfo.ucSTAIdx;
9258
9259 halSetStaKeyReqMsg.setStaKeyParams.defWEPIdx = pwdiSetSTAKeyParams->wdiKeyInfo.ucDefWEPIdx;
9260
9261 halSetStaKeyReqMsg.setStaKeyParams.singleTidRc = pwdiSetSTAKeyParams->wdiKeyInfo.ucSingleTidRc;
9262
Jeff Johnson295189b2012-06-20 16:38:30 -07009263 for(keyIndex = 0; keyIndex < pwdiSetSTAKeyParams->wdiKeyInfo.ucNumKeys ;
9264 keyIndex++)
9265 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009266 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -07009267 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyId;
9268 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].unicast =
9269 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].unicast;
9270 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyDirection =
9271 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyDirection;
9272 wpalMemoryCopy(halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyRsc,
Jeff Johnsone7245742012-09-05 17:12:55 -07009273 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyRsc,
Jeff Johnson295189b2012-06-20 16:38:30 -07009274 WDI_MAX_KEY_RSC_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -07009275 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].paeRole =
Jeff Johnson295189b2012-06-20 16:38:30 -07009276 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].paeRole;
Jeff Johnsone7245742012-09-05 17:12:55 -07009277 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07009278 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyLength;
9279 wpalMemoryCopy(halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].key,
Jeff Johnsone7245742012-09-05 17:12:55 -07009280 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].key,
Jeff Johnson295189b2012-06-20 16:38:30 -07009281 WDI_MAX_KEY_LENGTH);
9282 }
Jeff Johnson295189b2012-06-20 16:38:30 -07009283
Jeff Johnsone7245742012-09-05 17:12:55 -07009284 wpalMemoryCopy( pSendBuffer+usDataOffset,
9285 &halSetStaKeyReqMsg.setStaKeyParams,
9286 sizeof(halSetStaKeyReqMsg.setStaKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07009287
9288 pWDICtx->wdiReqStatusCB = pwdiSetSTAKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009289 pWDICtx->pReqStatusUserData = pwdiSetSTAKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009290
9291 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009292 Send Set STA Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009293 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009294 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
9295 wdiSetSTAKeyRspCb, pEventData->pUserData,
9296 WDI_SET_STA_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009297
9298}/*WDI_ProcessSetSTAKeyReq*/
9299
9300/**
Jeff Johnsone7245742012-09-05 17:12:55 -07009301 @brief Process Remove STA Key Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -07009302 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009303
9304 @param pWDICtx: pointer to the WLAN DAL context
9305 pEventData: pointer to the event information structure
9306
Jeff Johnson295189b2012-06-20 16:38:30 -07009307 @see
9308 @return Result of the function call
9309*/
9310WDI_Status
9311WDI_ProcessRemoveStaKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009312(
Jeff Johnson295189b2012-06-20 16:38:30 -07009313 WDI_ControlBlockType* pWDICtx,
9314 WDI_EventInfoType* pEventData
9315)
9316{
9317 WDI_RemoveSTAKeyReqParamsType* pwdiRemoveSTAKeyParams;
9318 WDI_RemoveSTAKeyRspCb wdiRemoveSTAKeyRspCb;
9319 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009320 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009321 wpt_uint16 usDataOffset = 0;
9322 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009323 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07009324 wpt_macAddr macBSSID;
9325 wpt_uint8 ucCurrentBSSSesIdx;
9326 tRemoveStaKeyReqMsg halRemoveStaKeyReqMsg = {{0}};
9327 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9328
9329 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009330 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009331 -------------------------------------------------------------------------*/
9332 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9333 ( NULL == pEventData->pCBfnc ))
9334 {
9335 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009336 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009337 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009338 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009339 }
9340
9341 pwdiRemoveSTAKeyParams = (WDI_RemoveSTAKeyReqParamsType*)pEventData->pEventData;
9342 wdiRemoveSTAKeyRspCb = (WDI_RemoveSTAKeyRspCb)pEventData->pCBfnc;
9343 /*-------------------------------------------------------------------------
9344 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009345 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009346 -------------------------------------------------------------------------*/
9347 wpalMutexAcquire(&pWDICtx->wptMutex);
9348
9349 /*------------------------------------------------------------------------
9350 Find the BSS for which the request is made and identify WDI session
9351 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009352 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
9353 pwdiRemoveSTAKeyParams->wdiKeyInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07009354 &macBSSID))
9355 {
9356 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009357 "This station does not exist in the WDI Station Table %d",
9358 pwdiRemoveSTAKeyParams->wdiKeyInfo.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07009359 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009360 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009361 }
9362
Jeff Johnsone7245742012-09-05 17:12:55 -07009363 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
9364 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009365 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009366 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
9367 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
9368 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009369
9370 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009371 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009372 }
Jeff Johnsone7245742012-09-05 17:12:55 -07009373
Jeff Johnson295189b2012-06-20 16:38:30 -07009374 /*------------------------------------------------------------------------
9375 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009376 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009377 ------------------------------------------------------------------------*/
9378 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9379 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009380 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9381 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
9382 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009383
Jeff Johnsone7245742012-09-05 17:12:55 -07009384 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009385 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009386 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009387 }
9388
9389
9390
9391 wpalMutexRelease(&pWDICtx->wptMutex);
9392 /*-----------------------------------------------------------------------
9393 Get message buffer
9394 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009395 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_RMV_STA_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009396 sizeof(halRemoveStaKeyReqMsg.removeStaKeyParams),
9397 &pSendBuffer, &usDataOffset, &usSendSize))||
9398 ( usSendSize < (usDataOffset + sizeof(halRemoveStaKeyReqMsg.removeStaKeyParams) )))
9399 {
9400 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009401 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07009402 pEventData, pwdiRemoveSTAKeyParams, wdiRemoveSTAKeyRspCb);
9403 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009404 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009405 }
9406
9407 /*-----------------------------------------------------------------------
9408 Copy the Key parameters into the HAL message
9409 -----------------------------------------------------------------------*/
9410
Jeff Johnsone7245742012-09-05 17:12:55 -07009411 halRemoveStaKeyReqMsg.removeStaKeyParams.staIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -07009412 pwdiRemoveSTAKeyParams->wdiKeyInfo.ucSTAIdx;
9413
Jeff Johnsone7245742012-09-05 17:12:55 -07009414 halRemoveStaKeyReqMsg.removeStaKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -07009415 WDI_2_HAL_ENC_TYPE (pwdiRemoveSTAKeyParams->wdiKeyInfo.wdiEncType);
9416
Jeff Johnsone7245742012-09-05 17:12:55 -07009417 halRemoveStaKeyReqMsg.removeStaKeyParams.keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -07009418 pwdiRemoveSTAKeyParams->wdiKeyInfo.ucKeyId;
9419
Jeff Johnsone7245742012-09-05 17:12:55 -07009420 halRemoveStaKeyReqMsg.removeStaKeyParams.unicast =
Jeff Johnson295189b2012-06-20 16:38:30 -07009421 pwdiRemoveSTAKeyParams->wdiKeyInfo.ucUnicast;
9422
Jeff Johnsone7245742012-09-05 17:12:55 -07009423 wpalMemoryCopy( pSendBuffer+usDataOffset,
9424 &halRemoveStaKeyReqMsg.removeStaKeyParams,
9425 sizeof(halRemoveStaKeyReqMsg.removeStaKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07009426
9427 pWDICtx->wdiReqStatusCB = pwdiRemoveSTAKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009428 pWDICtx->pReqStatusUserData = pwdiRemoveSTAKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009429
9430 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009431 Send Remove STA Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009432 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009433 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07009434 wdiRemoveSTAKeyRspCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -07009435 WDI_RMV_STA_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009436
9437}/*WDI_ProcessRemoveSTAKeyReq*/
9438
9439/**
Jeff Johnsone7245742012-09-05 17:12:55 -07009440 @brief Process Set STA KeyRequest function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07009441 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009442
9443 @param pWDICtx: pointer to the WLAN DAL context
9444 pEventData: pointer to the event information structure
9445
Jeff Johnson295189b2012-06-20 16:38:30 -07009446 @see
9447 @return Result of the function call
9448*/
9449WDI_Status
9450WDI_ProcessSetStaBcastKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009451(
Jeff Johnson295189b2012-06-20 16:38:30 -07009452 WDI_ControlBlockType* pWDICtx,
9453 WDI_EventInfoType* pEventData
9454)
9455{
9456 WDI_SetSTAKeyReqParamsType* pwdiSetSTAKeyParams;
9457 WDI_SetSTAKeyRspCb wdiSetSTAKeyRspCb;
9458 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009459 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009460 wpt_uint16 usDataOffset = 0;
9461 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009462 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07009463 wpt_macAddr macBSSID;
Jeff Johnsone7245742012-09-05 17:12:55 -07009464 wpt_uint8 ucCurrentBSSSesIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -07009465 tSetStaKeyReqMsg halSetStaKeyReqMsg = {{0}};
9466 wpt_uint8 keyIndex = 0;
9467
9468 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9469
9470 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009471 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009472 -------------------------------------------------------------------------*/
9473 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9474 ( NULL == pEventData->pCBfnc ))
9475 {
9476 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009477 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009478 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009479 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009480 }
9481
9482 pwdiSetSTAKeyParams = (WDI_SetSTAKeyReqParamsType*)pEventData->pEventData;
9483 wdiSetSTAKeyRspCb = (WDI_SetSTAKeyRspCb)pEventData->pCBfnc;
9484 /*-------------------------------------------------------------------------
9485 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009486 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009487 -------------------------------------------------------------------------*/
9488 wpalMutexAcquire(&pWDICtx->wptMutex);
9489
9490 /*------------------------------------------------------------------------
9491 Find the BSS for which the request is made and identify WDI session
9492 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009493 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
9494 pwdiSetSTAKeyParams->wdiKeyInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07009495 &macBSSID))
9496 {
9497 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009498 "This station does not exist in the WDI Station Table %d",
9499 pwdiSetSTAKeyParams->wdiKeyInfo.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07009500 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009501 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009502 }
9503
Jeff Johnsone7245742012-09-05 17:12:55 -07009504 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
9505 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009506 {
9507 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009508 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
Jeff Johnsone7245742012-09-05 17:12:55 -07009509 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009510
9511 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009512 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009513 }
Jeff Johnsone7245742012-09-05 17:12:55 -07009514
Jeff Johnson295189b2012-06-20 16:38:30 -07009515 /*------------------------------------------------------------------------
9516 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009517 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009518 ------------------------------------------------------------------------*/
9519 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9520 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009521 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9522 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
9523 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009524
Jeff Johnsone7245742012-09-05 17:12:55 -07009525 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009526 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009527 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009528 }
9529
9530
9531 wpalMutexRelease(&pWDICtx->wptMutex);
9532 /*-----------------------------------------------------------------------
9533 Get message buffer
9534 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009535 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_STA_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009536 sizeof(halSetStaKeyReqMsg.setStaKeyParams),
9537 &pSendBuffer, &usDataOffset, &usSendSize))||
9538 ( usSendSize < (usDataOffset + sizeof(halSetStaKeyReqMsg.setStaKeyParams) )))
9539 {
9540 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009541 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07009542 pEventData, pwdiSetSTAKeyParams, wdiSetSTAKeyRspCb);
9543 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009544 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009545 }
9546 /*-----------------------------------------------------------------------
9547 Copy the STA Key parameters into the HAL message
9548 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009549 halSetStaKeyReqMsg.setStaKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -07009550 WDI_2_HAL_ENC_TYPE (pwdiSetSTAKeyParams->wdiKeyInfo.wdiEncType);
9551
Jeff Johnsone7245742012-09-05 17:12:55 -07009552 halSetStaKeyReqMsg.setStaKeyParams.wepType =
Jeff Johnson295189b2012-06-20 16:38:30 -07009553 WDI_2_HAL_WEP_TYPE (pwdiSetSTAKeyParams->wdiKeyInfo.wdiWEPType );
9554
9555 halSetStaKeyReqMsg.setStaKeyParams.staIdx = pwdiSetSTAKeyParams->wdiKeyInfo.ucSTAIdx;
9556
9557 halSetStaKeyReqMsg.setStaKeyParams.defWEPIdx = pwdiSetSTAKeyParams->wdiKeyInfo.ucDefWEPIdx;
9558
9559 halSetStaKeyReqMsg.setStaKeyParams.singleTidRc = pwdiSetSTAKeyParams->wdiKeyInfo.ucSingleTidRc;
9560
Jeff Johnson295189b2012-06-20 16:38:30 -07009561 for(keyIndex = 0; keyIndex < pwdiSetSTAKeyParams->wdiKeyInfo.ucNumKeys ;
9562 keyIndex++)
9563 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009564 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -07009565 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyId;
9566 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].unicast =
9567 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].unicast;
9568 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyDirection =
9569 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyDirection;
9570 wpalMemoryCopy(halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyRsc,
Jeff Johnsone7245742012-09-05 17:12:55 -07009571 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyRsc,
Jeff Johnson295189b2012-06-20 16:38:30 -07009572 WDI_MAX_KEY_RSC_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -07009573 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].paeRole =
Jeff Johnson295189b2012-06-20 16:38:30 -07009574 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].paeRole;
Jeff Johnsone7245742012-09-05 17:12:55 -07009575 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07009576 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyLength;
9577 wpalMemoryCopy(halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].key,
Jeff Johnsone7245742012-09-05 17:12:55 -07009578 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].key,
Jeff Johnson295189b2012-06-20 16:38:30 -07009579 WDI_MAX_KEY_LENGTH);
9580 }
Jeff Johnson295189b2012-06-20 16:38:30 -07009581
Jeff Johnsone7245742012-09-05 17:12:55 -07009582 wpalMemoryCopy( pSendBuffer+usDataOffset,
9583 &halSetStaKeyReqMsg.setStaKeyParams,
9584 sizeof(halSetStaKeyReqMsg.setStaKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07009585
9586 pWDICtx->wdiReqStatusCB = pwdiSetSTAKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009587 pWDICtx->pReqStatusUserData = pwdiSetSTAKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009588
9589 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009590 Send Set STA Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009591 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009592 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
9593 wdiSetSTAKeyRspCb, pEventData->pUserData,
9594 WDI_SET_STA_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009595
9596}/*WDI_ProcessSetSTABcastKeyReq*/
9597
9598/**
Jeff Johnsone7245742012-09-05 17:12:55 -07009599 @brief Process Remove STA Key Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -07009600 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009601
9602 @param pWDICtx: pointer to the WLAN DAL context
9603 pEventData: pointer to the event information structure
9604
Jeff Johnson295189b2012-06-20 16:38:30 -07009605 @see
9606 @return Result of the function call
9607*/
9608WDI_Status
9609WDI_ProcessRemoveStaBcastKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009610(
Jeff Johnson295189b2012-06-20 16:38:30 -07009611 WDI_ControlBlockType* pWDICtx,
9612 WDI_EventInfoType* pEventData
9613)
9614{
9615 WDI_RemoveSTAKeyReqParamsType* pwdiRemoveSTABcastKeyParams;
9616 WDI_RemoveSTAKeyRspCb wdiRemoveSTAKeyRspCb;
9617 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009618 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009619 wpt_uint16 usDataOffset = 0;
9620 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009621 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07009622 wpt_macAddr macBSSID;
9623 wpt_uint8 ucCurrentBSSSesIdx;
9624 tRemoveStaKeyReqMsg halRemoveStaBcastKeyReqMsg = {{0}};
9625 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9626
9627 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009628 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009629 -------------------------------------------------------------------------*/
9630 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9631 ( NULL == pEventData->pCBfnc ))
9632 {
9633 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009634 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009635 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009636 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009637 }
9638
9639 pwdiRemoveSTABcastKeyParams = (WDI_RemoveSTAKeyReqParamsType*)pEventData->pEventData;
9640 wdiRemoveSTAKeyRspCb = (WDI_RemoveSTAKeyRspCb)pEventData->pCBfnc;
9641 /*-------------------------------------------------------------------------
9642 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009643 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009644 -------------------------------------------------------------------------*/
9645 wpalMutexAcquire(&pWDICtx->wptMutex);
9646
9647 /*------------------------------------------------------------------------
9648 Find the BSS for which the request is made and identify WDI session
9649 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009650 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
9651 pwdiRemoveSTABcastKeyParams->wdiKeyInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07009652 &macBSSID))
9653 {
9654 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009655 "This station does not exist in the WDI Station Table %d",
9656 pwdiRemoveSTABcastKeyParams->wdiKeyInfo.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07009657 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009658 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009659 }
9660
Jeff Johnsone7245742012-09-05 17:12:55 -07009661 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
9662 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009663 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009664 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
9665 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
9666 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009667
9668 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009669 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009670 }
Jeff Johnsone7245742012-09-05 17:12:55 -07009671
Jeff Johnson295189b2012-06-20 16:38:30 -07009672 /*------------------------------------------------------------------------
9673 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009674 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009675 ------------------------------------------------------------------------*/
9676 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9677 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009678 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9679 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
9680 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009681
Jeff Johnsone7245742012-09-05 17:12:55 -07009682 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009683 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009684 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009685 }
9686
9687
9688
9689 wpalMutexRelease(&pWDICtx->wptMutex);
9690 /*-----------------------------------------------------------------------
9691 Get message buffer
9692 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009693 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_RMV_STA_BCAST_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009694 sizeof(halRemoveStaBcastKeyReqMsg.removeStaKeyParams),
9695 &pSendBuffer, &usDataOffset, &usSendSize))||
9696 ( usSendSize < (usDataOffset + sizeof(halRemoveStaBcastKeyReqMsg.removeStaKeyParams) )))
9697 {
9698 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009699 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07009700 pEventData, pwdiRemoveSTABcastKeyParams, wdiRemoveSTAKeyRspCb);
9701 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009702 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009703 }
9704
9705 /*-----------------------------------------------------------------------
9706 Copy the Key parameters into the HAL message
9707 -----------------------------------------------------------------------*/
9708
Jeff Johnsone7245742012-09-05 17:12:55 -07009709 halRemoveStaBcastKeyReqMsg.removeStaKeyParams.staIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -07009710 pwdiRemoveSTABcastKeyParams->wdiKeyInfo.ucSTAIdx;
9711
Jeff Johnsone7245742012-09-05 17:12:55 -07009712 halRemoveStaBcastKeyReqMsg.removeStaKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -07009713 WDI_2_HAL_ENC_TYPE (pwdiRemoveSTABcastKeyParams->wdiKeyInfo.wdiEncType);
9714
Jeff Johnsone7245742012-09-05 17:12:55 -07009715 halRemoveStaBcastKeyReqMsg.removeStaKeyParams.keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -07009716 pwdiRemoveSTABcastKeyParams->wdiKeyInfo.ucKeyId;
9717
Jeff Johnsone7245742012-09-05 17:12:55 -07009718 halRemoveStaBcastKeyReqMsg.removeStaKeyParams.unicast =
Jeff Johnson295189b2012-06-20 16:38:30 -07009719 pwdiRemoveSTABcastKeyParams->wdiKeyInfo.ucUnicast;
9720
Jeff Johnsone7245742012-09-05 17:12:55 -07009721 wpalMemoryCopy( pSendBuffer+usDataOffset,
9722 &halRemoveStaBcastKeyReqMsg.removeStaKeyParams,
9723 sizeof(halRemoveStaBcastKeyReqMsg.removeStaKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07009724
9725 pWDICtx->wdiReqStatusCB = pwdiRemoveSTABcastKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009726 pWDICtx->pReqStatusUserData = pwdiRemoveSTABcastKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009727
9728 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009729 Send Remove STA Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009730 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009731 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07009732 wdiRemoveSTAKeyRspCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -07009733 WDI_RMV_STA_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009734
9735}/*WDI_ProcessRemoveSTABcastKeyReq*/
9736
9737/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -07009738 QOS and BA PROCESSING REQUEST API
Jeff Johnson295189b2012-06-20 16:38:30 -07009739==========================================================================*/
9740/**
9741 @brief Process Add TSpec Request function (called when Main FSM
9742 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009743
9744 @param pWDICtx: pointer to the WLAN DAL context
9745 pEventData: pointer to the event information structure
9746
Jeff Johnson295189b2012-06-20 16:38:30 -07009747 @see
9748 @return Result of the function call
9749*/
9750WDI_Status
9751WDI_ProcessAddTSpecReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009752(
Jeff Johnson295189b2012-06-20 16:38:30 -07009753 WDI_ControlBlockType* pWDICtx,
9754 WDI_EventInfoType* pEventData
9755)
9756{
9757 WDI_AddTSReqParamsType* pwdiAddTSParams;
9758 WDI_AddTsRspCb wdiAddTSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07009759 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07009760 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009761 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009762 wpt_uint16 usDataOffset = 0;
9763 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009764 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07009765 wpt_macAddr macBSSID;
9766 tAddTsParams halAddTsParams = {0};
Jeff Johnsone7245742012-09-05 17:12:55 -07009767
Jeff Johnson295189b2012-06-20 16:38:30 -07009768 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9769
9770 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009771 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009772 -------------------------------------------------------------------------*/
9773 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9774 ( NULL == pEventData->pCBfnc ))
9775 {
9776 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009777 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009778 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009779 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009780 }
9781
9782 pwdiAddTSParams = (WDI_AddTSReqParamsType*)pEventData->pEventData;
9783 wdiAddTSRspCb = (WDI_AddTsRspCb)pEventData->pCBfnc;
9784 /*-------------------------------------------------------------------------
9785 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009786 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009787 -------------------------------------------------------------------------*/
9788 wpalMutexAcquire(&pWDICtx->wptMutex);
9789
9790 /*------------------------------------------------------------------------
9791 Find the BSS for which the request is made and identify WDI session
9792 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009793 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
9794 pwdiAddTSParams->wdiTsInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07009795 &macBSSID))
9796 {
9797 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009798 "This station does not exist in the WDI Station Table %d",
9799 pwdiAddTSParams->wdiTsInfo.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07009800 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009801 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009802 }
9803
Jeff Johnsone7245742012-09-05 17:12:55 -07009804 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
9805 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009806 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009807 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
9808 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
9809 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009810
9811 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009812 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009813 }
Jeff Johnsone7245742012-09-05 17:12:55 -07009814
Jeff Johnson295189b2012-06-20 16:38:30 -07009815 /*------------------------------------------------------------------------
9816 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009817 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009818 ------------------------------------------------------------------------*/
9819 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9820 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009821 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9822 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
9823 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009824
Jeff Johnsone7245742012-09-05 17:12:55 -07009825 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009826 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009827 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009828 }
9829
9830 wpalMutexRelease(&pWDICtx->wptMutex);
9831 /*-----------------------------------------------------------------------
9832 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -07009833 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -07009834 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009835 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ADD_TS_REQ,
9836 sizeof(halAddTsParams),
9837 &pSendBuffer, &usDataOffset,
Jeff Johnson295189b2012-06-20 16:38:30 -07009838 &usSendSize))||
9839 ( usSendSize < (usDataOffset + sizeof(halAddTsParams) )))
9840 {
9841 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009842 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07009843 pEventData, pwdiAddTSParams, wdiAddTSRspCb);
9844 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009845 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009846 }
9847
9848 halAddTsParams.staIdx = pwdiAddTSParams->wdiTsInfo.ucSTAIdx;
9849 halAddTsParams.tspecIdx = pwdiAddTSParams->wdiTsInfo.ucTspecIdx;
9850
9851 //TSPEC IE
9852 halAddTsParams.tspec.type = pwdiAddTSParams->wdiTsInfo.wdiTspecIE.ucType;
9853 halAddTsParams.tspec.length = pwdiAddTSParams->wdiTsInfo.wdiTspecIE.ucLength;
Jeff Johnsone7245742012-09-05 17:12:55 -07009854 halAddTsParams.tspec.nomMsduSz =
Jeff Johnson295189b2012-06-20 16:38:30 -07009855 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.usNomMsduSz;
Jeff Johnsone7245742012-09-05 17:12:55 -07009856 halAddTsParams.tspec.maxMsduSz =
Jeff Johnson295189b2012-06-20 16:38:30 -07009857 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.usMaxMsduSz;
Jeff Johnsone7245742012-09-05 17:12:55 -07009858 halAddTsParams.tspec.minSvcInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -07009859 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMinSvcInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -07009860 halAddTsParams.tspec.maxSvcInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -07009861 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMaxSvcInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -07009862 halAddTsParams.tspec.inactInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -07009863 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uInactInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -07009864 halAddTsParams.tspec.suspendInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -07009865 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uSuspendInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -07009866 halAddTsParams.tspec.svcStartTime =
Jeff Johnson295189b2012-06-20 16:38:30 -07009867 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uSvcStartTime;
Jeff Johnsone7245742012-09-05 17:12:55 -07009868 halAddTsParams.tspec.minDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -07009869 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMinDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -07009870 halAddTsParams.tspec.meanDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -07009871 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMeanDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -07009872 halAddTsParams.tspec.peakDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -07009873 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uPeakDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -07009874 halAddTsParams.tspec.maxBurstSz =
Jeff Johnson295189b2012-06-20 16:38:30 -07009875 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMaxBurstSz;
Jeff Johnsone7245742012-09-05 17:12:55 -07009876 halAddTsParams.tspec.delayBound =
Jeff Johnson295189b2012-06-20 16:38:30 -07009877 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uDelayBound;
Jeff Johnsone7245742012-09-05 17:12:55 -07009878 halAddTsParams.tspec.minPhyRate =
Jeff Johnson295189b2012-06-20 16:38:30 -07009879 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMinPhyRate;
Jeff Johnsone7245742012-09-05 17:12:55 -07009880 halAddTsParams.tspec.surplusBw =
Jeff Johnson295189b2012-06-20 16:38:30 -07009881 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.usSurplusBw;
Jeff Johnsone7245742012-09-05 17:12:55 -07009882 halAddTsParams.tspec.mediumTime =
Jeff Johnson295189b2012-06-20 16:38:30 -07009883 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.usMediumTime;
9884
9885 //TSPEC IE : TS INFO : TRAFFIC
Jeff Johnsone7245742012-09-05 17:12:55 -07009886 halAddTsParams.tspec.tsinfo.traffic.ackPolicy =
Jeff Johnson295189b2012-06-20 16:38:30 -07009887 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.accessPolicy;
Jeff Johnsone7245742012-09-05 17:12:55 -07009888 halAddTsParams.tspec.tsinfo.traffic.userPrio =
Jeff Johnson295189b2012-06-20 16:38:30 -07009889 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.userPrio;
Jeff Johnsone7245742012-09-05 17:12:55 -07009890 halAddTsParams.tspec.tsinfo.traffic.psb =
Jeff Johnson295189b2012-06-20 16:38:30 -07009891 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.psb;
Jeff Johnsone7245742012-09-05 17:12:55 -07009892 halAddTsParams.tspec.tsinfo.traffic.aggregation =
Jeff Johnson295189b2012-06-20 16:38:30 -07009893 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.aggregation;
Jeff Johnsone7245742012-09-05 17:12:55 -07009894 halAddTsParams.tspec.tsinfo.traffic.direction =
Jeff Johnson295189b2012-06-20 16:38:30 -07009895 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.direction;
Jeff Johnsone7245742012-09-05 17:12:55 -07009896 halAddTsParams.tspec.tsinfo.traffic.tsid =
Jeff Johnson295189b2012-06-20 16:38:30 -07009897 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.tsid;
Jeff Johnsone7245742012-09-05 17:12:55 -07009898 halAddTsParams.tspec.tsinfo.traffic.trafficType =
Jeff Johnson295189b2012-06-20 16:38:30 -07009899 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.trafficType;
9900
9901 //TSPEC IE : TS INFO : SCHEDULE
Jeff Johnsone7245742012-09-05 17:12:55 -07009902 halAddTsParams.tspec.tsinfo.schedule.rsvd =
Jeff Johnson295189b2012-06-20 16:38:30 -07009903 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiSchedule.rsvd;
Jeff Johnsone7245742012-09-05 17:12:55 -07009904 halAddTsParams.tspec.tsinfo.schedule.schedule =
Jeff Johnson295189b2012-06-20 16:38:30 -07009905 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiSchedule.schedule;
9906
Jeff Johnsone7245742012-09-05 17:12:55 -07009907 wpalMemoryCopy( pSendBuffer+usDataOffset,
9908 &halAddTsParams,
9909 sizeof(halAddTsParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07009910
9911 pWDICtx->wdiReqStatusCB = pwdiAddTSParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009912 pWDICtx->pReqStatusUserData = pwdiAddTSParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009913
9914 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009915 Send Add TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009916 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009917 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07009918 wdiAddTSRspCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -07009919 WDI_ADD_TS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009920}/*WDI_ProcessAddTSpecReq*/
9921
9922
9923/**
9924 @brief Process Del TSpec Request function (called when Main FSM
9925 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009926
9927 @param pWDICtx: pointer to the WLAN DAL context
9928 pEventData: pointer to the event information structure
9929
Jeff Johnson295189b2012-06-20 16:38:30 -07009930 @see
9931 @return Result of the function call
9932*/
9933WDI_Status
9934WDI_ProcessDelTSpecReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009935(
Jeff Johnson295189b2012-06-20 16:38:30 -07009936 WDI_ControlBlockType* pWDICtx,
9937 WDI_EventInfoType* pEventData
9938)
9939{
9940 WDI_DelTSReqParamsType* pwdiDelTSParams;
9941 WDI_DelTsRspCb wdiDelTSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07009942 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07009943 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009944 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009945 wpt_uint16 usDataOffset = 0;
9946 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009947 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07009948 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9949
9950 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009951 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009952 -------------------------------------------------------------------------*/
9953 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9954 ( NULL == pEventData->pCBfnc ))
9955 {
9956 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009957 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009958 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009959 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009960 }
9961
9962 pwdiDelTSParams = (WDI_DelTSReqParamsType*)pEventData->pEventData;
9963 wdiDelTSRspCb = (WDI_DelTsRspCb)pEventData->pCBfnc;
9964
9965 /*-------------------------------------------------------------------------
9966 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009967 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009968 -------------------------------------------------------------------------*/
9969 wpalMutexAcquire(&pWDICtx->wptMutex);
9970
9971 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009972 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07009973 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009974 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
9975 pwdiDelTSParams->wdiDelTSInfo.macBSSID,
9976 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07009977
Jeff Johnsone7245742012-09-05 17:12:55 -07009978 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009979 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009980 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
9981 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
9982 __func__, MAC_ADDR_ARRAY(pwdiDelTSParams->wdiDelTSInfo.macBSSID));
9983
Jeff Johnson295189b2012-06-20 16:38:30 -07009984 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009985 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009986 }
9987
9988 /*------------------------------------------------------------------------
9989 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009990 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009991 ------------------------------------------------------------------------*/
9992 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9993 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009994 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9995 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
9996 __func__, MAC_ADDR_ARRAY(pwdiDelTSParams->wdiDelTSInfo.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009997
Jeff Johnsone7245742012-09-05 17:12:55 -07009998 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009999 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010000 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070010001 }
10002
10003
10004 wpalMutexRelease(&pWDICtx->wptMutex);
10005 /*-----------------------------------------------------------------------
10006 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070010007 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070010008 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010009 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_DEL_TS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010010 sizeof(pwdiDelTSParams->wdiDelTSInfo),
10011 &pSendBuffer, &usDataOffset, &usSendSize))||
10012 ( usSendSize < (usDataOffset + sizeof(pwdiDelTSParams->wdiDelTSInfo) )))
10013 {
10014 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010015 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070010016 pEventData, pwdiDelTSParams, wdiDelTSRspCb);
10017 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010018 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010019 }
10020
Jeff Johnsone7245742012-09-05 17:12:55 -070010021 wpalMemoryCopy( pSendBuffer+usDataOffset,
10022 &pwdiDelTSParams->wdiDelTSInfo,
10023 sizeof(pwdiDelTSParams->wdiDelTSInfo));
Jeff Johnson295189b2012-06-20 16:38:30 -070010024
10025 pWDICtx->wdiReqStatusCB = pwdiDelTSParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010026 pWDICtx->pReqStatusUserData = pwdiDelTSParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010027
10028 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010029 Send Del TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010030 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010031 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10032 wdiDelTSRspCb, pEventData->pUserData, WDI_DEL_TS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010033}/*WDI_ProcessDelTSpecReq*/
10034
10035/**
10036 @brief Process Update EDCA Params Request function (called when
10037 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010038
10039 @param pWDICtx: pointer to the WLAN DAL context
10040 pEventData: pointer to the event information structure
10041
Jeff Johnson295189b2012-06-20 16:38:30 -070010042 @see
10043 @return Result of the function call
10044*/
10045WDI_Status
10046WDI_ProcessUpdateEDCAParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010047(
Jeff Johnson295189b2012-06-20 16:38:30 -070010048 WDI_ControlBlockType* pWDICtx,
10049 WDI_EventInfoType* pEventData
10050)
10051{
10052 WDI_UpdateEDCAParamsType* pwdiUpdateEDCAParams;
10053 WDI_UpdateEDCAParamsRspCb wdiUpdateEDCARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010054 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070010055 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070010056 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010057 wpt_uint16 usDataOffset = 0;
10058 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070010059 WDI_Status wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070010060 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10061
10062 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010063 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010064 -------------------------------------------------------------------------*/
10065 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10066 ( NULL == pEventData->pCBfnc ))
10067 {
10068 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010069 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010070 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010071 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010072 }
10073
10074 pwdiUpdateEDCAParams = (WDI_UpdateEDCAParamsType*)pEventData->pEventData;
10075 wdiUpdateEDCARspCb = (WDI_UpdateEDCAParamsRspCb)pEventData->pCBfnc;
10076 /*-------------------------------------------------------------------------
10077 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070010078 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070010079 -------------------------------------------------------------------------*/
10080 wpalMutexAcquire(&pWDICtx->wptMutex);
10081
10082 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010083 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070010084 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010085 ucCurrentBSSSesIdx = WDI_FindAssocSessionByBSSIdx( pWDICtx,
10086 pwdiUpdateEDCAParams->wdiEDCAInfo.ucBssIdx,
10087 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070010088
Jeff Johnsone7245742012-09-05 17:12:55 -070010089 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070010090 {
10091 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070010092 "%s: Association sequence for this BSS does not yet exist. ucBssIdx %d",
10093 __func__, pwdiUpdateEDCAParams->wdiEDCAInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070010094
10095 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010096 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070010097 }
10098
10099 /*------------------------------------------------------------------------
10100 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070010101 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070010102 ------------------------------------------------------------------------*/
10103 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
10104 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010105 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10106 "%s: Association sequence for this BSS exists but currently queued. ucBssIdx %d",
10107 __func__, pwdiUpdateEDCAParams->wdiEDCAInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070010108
Jeff Johnsone7245742012-09-05 17:12:55 -070010109 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070010110 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010111 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070010112 }
10113
10114
10115 wpalMutexRelease(&pWDICtx->wptMutex);
10116 /*-----------------------------------------------------------------------
10117 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070010118 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070010119 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010120 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPD_EDCA_PRMS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010121 sizeof(pwdiUpdateEDCAParams->wdiEDCAInfo),
10122 &pSendBuffer, &usDataOffset, &usSendSize))||
10123 ( usSendSize < (usDataOffset + sizeof(pwdiUpdateEDCAParams->wdiEDCAInfo) )))
10124 {
10125 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010126 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070010127 pEventData, pwdiUpdateEDCAParams, wdiUpdateEDCARspCb);
10128 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010129 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010130 }
10131
Jeff Johnsone7245742012-09-05 17:12:55 -070010132 wpalMemoryCopy( pSendBuffer+usDataOffset,
10133 &pwdiUpdateEDCAParams->wdiEDCAInfo,
10134 sizeof(pwdiUpdateEDCAParams->wdiEDCAInfo));
Jeff Johnson295189b2012-06-20 16:38:30 -070010135
10136 pWDICtx->wdiReqStatusCB = pwdiUpdateEDCAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010137 pWDICtx->pReqStatusUserData = pwdiUpdateEDCAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010138
10139 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010140 Send Update EDCA Params Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010141 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010142 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10143 wdiUpdateEDCARspCb, pEventData->pUserData,
10144 WDI_UPD_EDCA_PRMS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010145}/*WDI_ProcessUpdateEDCAParamsReq*/
10146
10147/**
Jeff Johnsone7245742012-09-05 17:12:55 -070010148 @brief Process Add BA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070010149 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010150
10151 @param pWDICtx: pointer to the WLAN DAL context
10152 pEventData: pointer to the event information structure
10153
Jeff Johnson295189b2012-06-20 16:38:30 -070010154 @see
10155 @return Result of the function call
10156*/
10157WDI_Status
10158WDI_ProcessAddBASessionReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010159(
Jeff Johnson295189b2012-06-20 16:38:30 -070010160 WDI_ControlBlockType* pWDICtx,
10161 WDI_EventInfoType* pEventData
10162)
10163{
10164 WDI_AddBASessionReqParamsType* pwdiAddBASessionParams;
10165 WDI_AddBASessionRspCb wdiAddBASessionRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010166 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070010167 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070010168 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010169 wpt_uint16 usDataOffset = 0;
10170 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070010171 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070010172 wpt_macAddr macBSSID;
10173
10174 tAddBASessionReqMsg halAddBASessionReq;
10175 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10176
10177 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010178 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010179 -------------------------------------------------------------------------*/
10180 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10181 ( NULL == pEventData->pCBfnc ))
10182 {
10183 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010184 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010185 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010186 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010187 }
10188
Jeff Johnsone7245742012-09-05 17:12:55 -070010189 pwdiAddBASessionParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070010190 (WDI_AddBASessionReqParamsType*)pEventData->pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070010191 wdiAddBASessionRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070010192 (WDI_AddBASessionRspCb)pEventData->pCBfnc;
10193 /*-------------------------------------------------------------------------
10194 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070010195 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070010196 -------------------------------------------------------------------------*/
10197 wpalMutexAcquire(&pWDICtx->wptMutex);
10198
10199 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010200 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070010201 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010202 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
10203 pwdiAddBASessionParams->wdiBASessionInfoType.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070010204 &macBSSID))
10205 {
10206 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010207 "This station does not exist in the WDI Station Table %d",
10208 pwdiAddBASessionParams->wdiBASessionInfoType.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070010209 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010210 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010211 }
10212
10213
Jeff Johnsone7245742012-09-05 17:12:55 -070010214 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070010215
Jeff Johnsone7245742012-09-05 17:12:55 -070010216 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070010217 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010218 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
10219 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
10220 __func__, MAC_ADDR_ARRAY(macBSSID));
10221
Jeff Johnson295189b2012-06-20 16:38:30 -070010222 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010223 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070010224 }
10225
10226 /*------------------------------------------------------------------------
10227 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070010228 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070010229 ------------------------------------------------------------------------*/
10230 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
10231 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010232 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10233 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
10234 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010235
Jeff Johnsone7245742012-09-05 17:12:55 -070010236 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070010237 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010238 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070010239 }
10240
10241
10242 wpalMutexRelease(&pWDICtx->wptMutex);
10243 /*-----------------------------------------------------------------------
10244 Get message buffer
10245 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010246 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
10247 WDI_ADD_BA_SESSION_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010248 sizeof(halAddBASessionReq.addBASessionParams),
10249 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070010250 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070010251 (usDataOffset + sizeof(halAddBASessionReq.addBASessionParams) )))
10252 {
10253 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010254 "Unable to get send buffer in Add BA session req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070010255 pEventData, pwdiAddBASessionParams, wdiAddBASessionRspCb);
10256 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010257 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010258 }
10259
10260 halAddBASessionReq.addBASessionParams.staIdx =
10261 pwdiAddBASessionParams->wdiBASessionInfoType.ucSTAIdx;
10262 wpalMemoryCopy(halAddBASessionReq.addBASessionParams.peerMacAddr,
10263 pwdiAddBASessionParams->wdiBASessionInfoType.macPeerAddr,
10264 WDI_MAC_ADDR_LEN);
10265 halAddBASessionReq.addBASessionParams.baTID =
10266 pwdiAddBASessionParams->wdiBASessionInfoType.ucBaTID;
10267 halAddBASessionReq.addBASessionParams.baPolicy =
10268 pwdiAddBASessionParams->wdiBASessionInfoType.ucBaPolicy;
10269 halAddBASessionReq.addBASessionParams.baBufferSize =
10270 pwdiAddBASessionParams->wdiBASessionInfoType.usBaBufferSize;
10271 halAddBASessionReq.addBASessionParams.baTimeout =
10272 pwdiAddBASessionParams->wdiBASessionInfoType.usBaTimeout;
10273 halAddBASessionReq.addBASessionParams.baSSN =
10274 pwdiAddBASessionParams->wdiBASessionInfoType.usBaSSN;
10275 halAddBASessionReq.addBASessionParams.baDirection =
10276 pwdiAddBASessionParams->wdiBASessionInfoType.ucBaDirection;
10277
Jeff Johnsone7245742012-09-05 17:12:55 -070010278 wpalMemoryCopy( pSendBuffer+usDataOffset,
10279 &halAddBASessionReq.addBASessionParams,
10280 sizeof(halAddBASessionReq.addBASessionParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070010281
10282 pWDICtx->wdiReqStatusCB = pwdiAddBASessionParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010283 pWDICtx->pReqStatusUserData = pwdiAddBASessionParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010284
10285 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010286 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010287 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010288 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10289 wdiAddBASessionRspCb, pEventData->pUserData,
10290 WDI_ADD_BA_SESSION_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010291}/*WDI_ProcessAddBASessionReq*/
10292
10293/**
Jeff Johnsone7245742012-09-05 17:12:55 -070010294 @brief Process Del BA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070010295 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010296
10297 @param pWDICtx: pointer to the WLAN DAL context
10298 pEventData: pointer to the event information structure
10299
Jeff Johnson295189b2012-06-20 16:38:30 -070010300 @see
10301 @return Result of the function call
10302*/
10303WDI_Status
10304WDI_ProcessDelBAReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010305(
Jeff Johnson295189b2012-06-20 16:38:30 -070010306 WDI_ControlBlockType* pWDICtx,
10307 WDI_EventInfoType* pEventData
10308)
10309{
10310 WDI_DelBAReqParamsType* pwdiDelBAParams;
10311 WDI_DelBARspCb wdiDelBARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010312 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070010313 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070010314 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010315 wpt_uint16 usDataOffset = 0;
10316 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070010317 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070010318 wpt_macAddr macBSSID;
10319 tDelBAParams halDelBAparam;
10320 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10321
10322 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010323 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010324 -------------------------------------------------------------------------*/
10325 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10326 ( NULL == pEventData->pCBfnc ))
10327 {
10328 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010329 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010330 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010331 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010332 }
10333
10334 pwdiDelBAParams = (WDI_DelBAReqParamsType*)pEventData->pEventData;
10335 wdiDelBARspCb = (WDI_DelBARspCb)pEventData->pCBfnc;
10336 /*-------------------------------------------------------------------------
10337 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070010338 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070010339 -------------------------------------------------------------------------*/
10340 wpalMutexAcquire(&pWDICtx->wptMutex);
10341
10342 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010343 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070010344 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010345 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
10346 pwdiDelBAParams->wdiBAInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070010347 &macBSSID))
10348 {
10349 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010350 "This station does not exist in the WDI Station Table %d",
10351 pwdiDelBAParams->wdiBAInfo.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070010352 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010353 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010354 }
10355
Jeff Johnsone7245742012-09-05 17:12:55 -070010356 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070010357
Jeff Johnsone7245742012-09-05 17:12:55 -070010358 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070010359 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010360 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
10361 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
10362 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010363
10364 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010365 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070010366 }
10367
10368 /*------------------------------------------------------------------------
10369 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070010370 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070010371 ------------------------------------------------------------------------*/
10372 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
10373 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010374 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10375 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
10376 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010377
Jeff Johnsone7245742012-09-05 17:12:55 -070010378 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070010379 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010380 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070010381 }
10382
10383 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010384 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_DEL_BA_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010385 sizeof(halDelBAparam),
10386 &pSendBuffer, &usDataOffset, &usSendSize))||
10387 ( usSendSize < (usDataOffset + sizeof(halDelBAparam) )))
10388 {
10389 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010390 "Unable to get send buffer for DEL BA req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070010391 pEventData, pwdiDelBAParams, wdiDelBARspCb);
10392 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010393 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010394 }
10395
10396 halDelBAparam.staIdx = pwdiDelBAParams->wdiBAInfo.ucSTAIdx;
10397 halDelBAparam.baTID = pwdiDelBAParams->wdiBAInfo.ucBaTID;
10398 halDelBAparam.baDirection = pwdiDelBAParams->wdiBAInfo.ucBaDirection;
10399
Jeff Johnsone7245742012-09-05 17:12:55 -070010400 wpalMemoryCopy( pSendBuffer+usDataOffset,
10401 &halDelBAparam,
10402 sizeof(halDelBAparam));
Jeff Johnson295189b2012-06-20 16:38:30 -070010403
10404 pWDICtx->wdiReqStatusCB = pwdiDelBAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010405 pWDICtx->pReqStatusUserData = pwdiDelBAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010406
10407 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010408 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010409 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010410 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10411 wdiDelBARspCb, pEventData->pUserData, WDI_DEL_BA_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010412}/*WDI_ProcessDelBAReq*/
10413
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -080010414#ifdef FEATURE_WLAN_ESE
Jeff Johnson295189b2012-06-20 16:38:30 -070010415
10416WDI_Status
10417WDI_ProcessTSMStatsReq
10418(
10419 WDI_ControlBlockType* pWDICtx,
10420 WDI_EventInfoType* pEventData
10421)
10422{
10423 WDI_TSMStatsReqParamsType* pwdiTSMParams;
10424 WDI_TsmRspCb wdiTSMRspCb;
10425 wpt_uint8 ucCurrentBSSSesIdx = 0;
10426 WDI_BSSSessionType* pBSSSes = NULL;
10427 wpt_uint8* pSendBuffer = NULL;
10428 wpt_uint16 usDataOffset = 0;
10429 wpt_uint16 usSendSize = 0;
10430 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
10431 tTsmStatsParams halTsmStatsReqParams = {0};
10432
10433 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10434
10435 /*-------------------------------------------------------------------------
10436 Sanity check
10437 -------------------------------------------------------------------------*/
10438 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10439 ( NULL == pEventData->pCBfnc ))
10440 {
10441 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010442 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010443 WDI_ASSERT(0);
10444 return WDI_STATUS_E_FAILURE;
10445 }
10446
10447 pwdiTSMParams = (WDI_TSMStatsReqParamsType*)pEventData->pEventData;
10448 wdiTSMRspCb = (WDI_TsmRspCb)pEventData->pCBfnc;
10449 /*-------------------------------------------------------------------------
10450 Check to see if we are in the middle of an association, if so queue, if
10451 not it means it is free to process request
10452 -------------------------------------------------------------------------*/
10453 wpalMutexAcquire(&pWDICtx->wptMutex);
10454
10455 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, pwdiTSMParams->wdiTsmStatsParamsInfo.bssid, &pBSSSes);
10456 if ( NULL == pBSSSes )
10457 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010458 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
10459 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
10460 __func__, MAC_ADDR_ARRAY(pwdiTSMParams->wdiTsmStatsParamsInfo.bssid));
Jeff Johnson295189b2012-06-20 16:38:30 -070010461
10462 wpalMutexRelease(&pWDICtx->wptMutex);
10463 return WDI_STATUS_E_NOT_ALLOWED;
10464 }
10465
10466 /*------------------------------------------------------------------------
10467 Check if this BSS is being currently processed or queued,
10468 if queued - queue the new request as well
10469 ------------------------------------------------------------------------*/
10470 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
10471 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010472 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Srinivas Girigowda6d1f9062014-02-03 18:15:54 -080010473 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
Jeff Johnsone7245742012-09-05 17:12:55 -070010474 __func__, MAC_ADDR_ARRAY(pwdiTSMParams->wdiTsmStatsParamsInfo.bssid));
Jeff Johnson295189b2012-06-20 16:38:30 -070010475
10476 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
10477 wpalMutexRelease(&pWDICtx->wptMutex);
10478 return wdiStatus;
10479 }
10480
10481 wpalMutexRelease(&pWDICtx->wptMutex);
10482 /*-----------------------------------------------------------------------
10483 Get message buffer
10484 ! TO DO : proper conversion into the HAL Message Request Format
10485 -----------------------------------------------------------------------*/
10486 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_TSM_STATS_REQ,
10487 sizeof(halTsmStatsReqParams),
10488 &pSendBuffer, &usDataOffset, &usSendSize))||
10489 ( usSendSize < (usDataOffset + sizeof(halTsmStatsReqParams) )))
10490 {
10491 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010492 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070010493 pEventData, pwdiTSMParams, wdiTSMRspCb);
10494 WDI_ASSERT(0);
10495 return WDI_STATUS_E_FAILURE;
10496 }
10497
10498 halTsmStatsReqParams.tsmTID = pwdiTSMParams->wdiTsmStatsParamsInfo.ucTid;
10499 wpalMemoryCopy(halTsmStatsReqParams.bssId,
10500 pwdiTSMParams->wdiTsmStatsParamsInfo.bssid,
10501 WDI_MAC_ADDR_LEN);
10502 wpalMemoryCopy( pSendBuffer+usDataOffset,
10503 &halTsmStatsReqParams,
10504 sizeof(halTsmStatsReqParams));
10505
10506 pWDICtx->wdiReqStatusCB = pwdiTSMParams->wdiReqStatusCB;
10507 pWDICtx->pReqStatusUserData = pwdiTSMParams->pUserData;
10508
10509 /*-------------------------------------------------------------------------
10510 Send TSM Stats Request to HAL
10511 -------------------------------------------------------------------------*/
10512 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10513 wdiTSMRspCb, pEventData->pUserData,
10514 WDI_TSM_STATS_RESP);
10515}/*WDI_ProcessTSMStatsReq*/
10516
10517#endif
10518
10519
10520/**
Jeff Johnsone7245742012-09-05 17:12:55 -070010521 @brief Process Flush AC Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070010522 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010523
10524 @param pWDICtx: pointer to the WLAN DAL context
10525 pEventData: pointer to the event information structure
10526
Jeff Johnson295189b2012-06-20 16:38:30 -070010527 @see
10528 @return Result of the function call
10529*/
10530WDI_Status
10531WDI_ProcessFlushAcReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010532(
Jeff Johnson295189b2012-06-20 16:38:30 -070010533 WDI_ControlBlockType* pWDICtx,
10534 WDI_EventInfoType* pEventData
10535)
10536{
10537 WDI_FlushAcReqParamsType* pwdiFlushAcParams = NULL;
10538 WDI_FlushAcRspCb wdiFlushAcRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010539 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010540 wpt_uint16 usDataOffset = 0;
10541 wpt_uint16 usSendSize = 0;
10542 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10543
10544 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010545 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010546 -------------------------------------------------------------------------*/
10547 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10548 ( NULL == pEventData->pCBfnc ))
10549 {
10550 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010551 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010552 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010553 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010554 }
10555
10556 pwdiFlushAcParams = (WDI_FlushAcReqParamsType*)pEventData->pEventData;
10557 wdiFlushAcRspCb = (WDI_FlushAcRspCb)pEventData->pCBfnc;
10558 /*-----------------------------------------------------------------------
10559 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070010560 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070010561 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010562 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_FLUSH_AC_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010563 sizeof(pwdiFlushAcParams->wdiFlushAcInfo),
10564 &pSendBuffer, &usDataOffset, &usSendSize))||
10565 ( usSendSize < (usDataOffset + sizeof(pwdiFlushAcParams->wdiFlushAcInfo) )))
10566 {
10567 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010568 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070010569 pEventData, pwdiFlushAcParams, wdiFlushAcRspCb);
10570 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010571 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010572 }
10573
Jeff Johnsone7245742012-09-05 17:12:55 -070010574 wpalMemoryCopy( pSendBuffer+usDataOffset,
10575 &pwdiFlushAcParams->wdiFlushAcInfo,
10576 sizeof(pwdiFlushAcParams->wdiFlushAcInfo));
Jeff Johnson295189b2012-06-20 16:38:30 -070010577
10578 pWDICtx->wdiReqStatusCB = pwdiFlushAcParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010579 pWDICtx->pReqStatusUserData = pwdiFlushAcParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010580
10581 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010582 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010583 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010584 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10585 wdiFlushAcRspCb, pEventData->pUserData, WDI_FLUSH_AC_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010586}/*WDI_ProcessFlushAcReq*/
10587
10588/**
Jeff Johnsone7245742012-09-05 17:12:55 -070010589 @brief Process BT AMP event Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070010590 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010591
10592 @param pWDICtx: pointer to the WLAN DAL context
10593 pEventData: pointer to the event information structure
10594
Jeff Johnson295189b2012-06-20 16:38:30 -070010595 @see
10596 @return Result of the function call
10597*/
10598WDI_Status
10599WDI_ProcessBtAmpEventReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010600(
Jeff Johnson295189b2012-06-20 16:38:30 -070010601 WDI_ControlBlockType* pWDICtx,
10602 WDI_EventInfoType* pEventData
10603)
10604{
10605 WDI_BtAmpEventParamsType* pwdiBtAmpEventParams = NULL;
10606 WDI_BtAmpEventRspCb wdiBtAmpEventRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010607 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010608 wpt_uint16 usDataOffset = 0;
10609 wpt_uint16 usSendSize = 0;
10610
10611 tBtAmpEventMsg haltBtAmpEventMsg;
10612 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10613
10614 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010615 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010616 -------------------------------------------------------------------------*/
10617 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10618 ( NULL == pEventData->pCBfnc ))
10619 {
10620 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010621 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010622 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010623 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010624 }
10625
10626 pwdiBtAmpEventParams = (WDI_BtAmpEventParamsType*)pEventData->pEventData;
10627 wdiBtAmpEventRspCb = (WDI_BtAmpEventRspCb)pEventData->pCBfnc;
10628 /*-----------------------------------------------------------------------
10629 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070010630 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070010631 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010632 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_BTAMP_EVENT_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010633 sizeof(haltBtAmpEventMsg.btAmpEventParams),
10634 &pSendBuffer, &usDataOffset, &usSendSize))||
10635 ( usSendSize < (usDataOffset + sizeof(haltBtAmpEventMsg.btAmpEventParams) )))
10636 {
10637 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010638 "Unable to get send buffer in BT AMP event req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070010639 pEventData, pwdiBtAmpEventParams, wdiBtAmpEventRspCb);
10640 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010641 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010642 }
10643
Jeff Johnsone7245742012-09-05 17:12:55 -070010644 haltBtAmpEventMsg.btAmpEventParams.btAmpEventType =
Jeff Johnson295189b2012-06-20 16:38:30 -070010645 pwdiBtAmpEventParams->wdiBtAmpEventInfo.ucBtAmpEventType;
Jeff Johnsone7245742012-09-05 17:12:55 -070010646 wpalMemoryCopy( pSendBuffer+usDataOffset,
10647 &haltBtAmpEventMsg.btAmpEventParams,
10648 sizeof(haltBtAmpEventMsg.btAmpEventParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070010649
10650 pWDICtx->wdiReqStatusCB = pwdiBtAmpEventParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010651 pWDICtx->pReqStatusUserData = pwdiBtAmpEventParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010652
10653 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010654 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010655 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010656 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10657 wdiBtAmpEventRspCb, pEventData->pUserData, WDI_BTAMP_EVENT_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010658}/*WDI_ProcessBtAmpEventReq*/
10659
10660/**
10661 @brief Process Add STA self Request function (called when Main FSM
10662 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010663
10664 @param pWDICtx: pointer to the WLAN DAL context
10665 pEventData: pointer to the event information structure
10666
Jeff Johnson295189b2012-06-20 16:38:30 -070010667 @see
10668 @return Result of the function call
10669*/
10670WDI_Status
10671WDI_ProcessAddSTASelfReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010672(
Jeff Johnson295189b2012-06-20 16:38:30 -070010673 WDI_ControlBlockType* pWDICtx,
10674 WDI_EventInfoType* pEventData
10675)
10676{
10677 WDI_AddSTASelfReqParamsType* pwdiAddSTASelfReqParams;
10678 WDI_AddSTASelfParamsRspCb wdiAddSTASelfReqRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010679 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010680 wpt_uint16 usDataOffset = 0;
10681 wpt_uint16 usSendSize = 0;
Kiran Kumar Lokere0ad5cd32013-06-25 11:26:22 -070010682 tAddStaSelfParams_V1 halAddSTASelfParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070010683 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10684
10685 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010686 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010687 -------------------------------------------------------------------------*/
10688 if (( NULL == pEventData ) ||
10689 ( NULL == pEventData->pEventData) ||
10690 ( NULL == pEventData->pCBfnc))
10691 {
10692 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010693 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010694 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010695 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010696 }
10697
Jeff Johnsone7245742012-09-05 17:12:55 -070010698 pwdiAddSTASelfReqParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070010699 (WDI_AddSTASelfReqParamsType*)pEventData->pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070010700 wdiAddSTASelfReqRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070010701 (WDI_AddSTASelfParamsRspCb)pEventData->pCBfnc;
10702 /*-----------------------------------------------------------------------
10703 Get message buffer
10704 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010705 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
10706 WDI_ADD_STA_SELF_REQ,
Kiran Kumar Lokere0ad5cd32013-06-25 11:26:22 -070010707 sizeof(tAddStaSelfParams_V1),
Jeff Johnson295189b2012-06-20 16:38:30 -070010708 &pSendBuffer, &usDataOffset, &usSendSize))||
Kiran Kumar Lokere0ad5cd32013-06-25 11:26:22 -070010709 ( usSendSize < (usDataOffset + sizeof(tAddStaSelfParams_V1) )))
Jeff Johnson295189b2012-06-20 16:38:30 -070010710 {
10711 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010712 "Unable to get send buffer in ADD STA SELF REQ %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070010713 pEventData, pwdiAddSTASelfReqParams, wdiAddSTASelfReqRspCb);
10714 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010715 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010716 }
10717
10718 /* Cache the request for response processing */
Jeff Johnsone7245742012-09-05 17:12:55 -070010719 wpalMemoryCopy(&pWDICtx->wdiCacheAddSTASelfReq, pwdiAddSTASelfReqParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070010720 sizeof(pWDICtx->wdiCacheAddSTASelfReq));
10721
Jeff Johnsone7245742012-09-05 17:12:55 -070010722 wpalMemoryCopy(halAddSTASelfParams.selfMacAddr,
Kiran Kumar Lokere0ad5cd32013-06-25 11:26:22 -070010723 pwdiAddSTASelfReqParams->wdiAddSTASelfInfo.selfMacAddr, 6);
10724 halAddSTASelfParams.iface_persona = HAL_IFACE_UNKNOWN;
10725 if (pwdiAddSTASelfReqParams->wdiAddSTASelfInfo.currDeviceMode == VOS_STA_MODE)
10726 {
10727 halAddSTASelfParams.iface_persona = HAL_IFACE_STA_MODE;
10728 }
10729 else if ((pwdiAddSTASelfReqParams->wdiAddSTASelfInfo.currDeviceMode ==
10730 VOS_P2P_CLIENT_MODE) ||
10731 (pwdiAddSTASelfReqParams->wdiAddSTASelfInfo.currDeviceMode ==
10732 VOS_P2P_DEVICE))
10733 {
10734 halAddSTASelfParams.iface_persona = HAL_IFACE_P2P_MODE;
10735 }
Jeff Johnsone7245742012-09-05 17:12:55 -070010736 wpalMemoryCopy( pSendBuffer+usDataOffset, &halAddSTASelfParams,
Kiran Kumar Lokere0ad5cd32013-06-25 11:26:22 -070010737 sizeof(tAddStaSelfParams_V1));
Jeff Johnson295189b2012-06-20 16:38:30 -070010738
10739 pWDICtx->wdiReqStatusCB = pwdiAddSTASelfReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010740 pWDICtx->pReqStatusUserData = pwdiAddSTASelfReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010741
10742 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010743 Send Update Probe Resp Template Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010744 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010745 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10746 wdiAddSTASelfReqRspCb, pEventData->pUserData,
10747 WDI_ADD_STA_SELF_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010748}/*WDI_ProcessAddSTASelfReq*/
10749
10750
10751
10752/**
Jeff Johnsone7245742012-09-05 17:12:55 -070010753 @brief Process Del Sta Self Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070010754 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010755
10756 @param pWDICtx: pointer to the WLAN DAL context
10757 pEventData: pointer to the event information structure
10758
Jeff Johnson295189b2012-06-20 16:38:30 -070010759 @see
10760 @return Result of the function call
10761*/
10762WDI_Status
10763WDI_ProcessDelSTASelfReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010764(
Jeff Johnson295189b2012-06-20 16:38:30 -070010765 WDI_ControlBlockType* pWDICtx,
10766 WDI_EventInfoType* pEventData
10767)
10768{
10769 WDI_DelSTASelfReqParamsType* pwdiDelStaSelfReqParams;
10770 WDI_DelSTASelfRspCb wdiDelStaSelfRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010771 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010772 wpt_uint16 usDataOffset = 0;
10773 wpt_uint16 usSendSize = 0;
10774 tDelStaSelfParams halSetDelSelfSTAParams;
10775 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10776
10777 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010778 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010779 -------------------------------------------------------------------------*/
10780 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10781 ( NULL == pEventData->pCBfnc ))
10782 {
10783 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010784 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010785 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010786 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010787 }
10788
Jeff Johnsone7245742012-09-05 17:12:55 -070010789 pwdiDelStaSelfReqParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070010790 (WDI_DelSTASelfReqParamsType*)pEventData->pEventData;
10791 wdiDelStaSelfRspCb = (WDI_DelSTASelfRspCb)pEventData->pCBfnc;
10792
10793 /*-----------------------------------------------------------------------
10794 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070010795 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070010796 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010797 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_DEL_STA_SELF_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010798 sizeof(pwdiDelStaSelfReqParams->wdiDelStaSelfInfo),
10799 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070010800 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070010801 (usDataOffset + sizeof(pwdiDelStaSelfReqParams->wdiDelStaSelfInfo) )))
10802 {
10803 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010804 "Unable to get send buffer in Del Sta Self req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070010805 pEventData, pwdiDelStaSelfReqParams, wdiDelStaSelfRspCb);
10806 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010807 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010808 }
10809
Jeff Johnsone7245742012-09-05 17:12:55 -070010810 wpalMemoryCopy(halSetDelSelfSTAParams.selfMacAddr,
Jeff Johnson295189b2012-06-20 16:38:30 -070010811 pwdiDelStaSelfReqParams->wdiDelStaSelfInfo.selfMacAddr, 6) ;
10812
Jeff Johnsone7245742012-09-05 17:12:55 -070010813 wpalMemoryCopy( pSendBuffer+usDataOffset, &halSetDelSelfSTAParams,
10814 sizeof(tDelStaSelfParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070010815
10816 pWDICtx->wdiReqStatusCB = pwdiDelStaSelfReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010817 pWDICtx->pReqStatusUserData = pwdiDelStaSelfReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010818
10819 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010820 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010821 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010822 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10823 wdiDelStaSelfRspCb, pEventData->pUserData,
Jeff Johnson295189b2012-06-20 16:38:30 -070010824 WDI_DEL_STA_SELF_RESP);
10825
10826}
10827
Jeff Johnsone7245742012-09-05 17:12:55 -070010828#ifdef FEATURE_OEM_DATA_SUPPORT
10829/**
10830 @brief Process Start Oem Data Request function (called when Main
10831 FSM allows it)
10832
10833 @param pWDICtx: pointer to the WLAN DAL context
10834 pEventData: pointer to the event information structure
10835
10836 @see
10837 @return Result of the function call
10838*/
10839WDI_Status
10840WDI_ProcessStartOemDataReq
10841(
10842 WDI_ControlBlockType* pWDICtx,
10843 WDI_EventInfoType* pEventData
10844)
10845{
10846 WDI_oemDataReqParamsType* pwdiOemDataReqParams = NULL;
10847 WDI_oemDataRspCb wdiOemDataRspCb;
10848 wpt_uint8* pSendBuffer = NULL;
10849 wpt_uint16 usDataOffset = 0;
10850 wpt_uint16 usSendSize = 0;
10851 wpt_uint16 reqLen;
10852 tStartOemDataReqParams* halStartOemDataReqParams;
10853
10854 /*-------------------------------------------------------------------------
10855 Sanity check
10856 -------------------------------------------------------------------------*/
10857 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10858 ( NULL == pEventData->pCBfnc ))
10859 {
10860 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010861 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070010862 WDI_ASSERT(0);
10863 return WDI_STATUS_E_FAILURE;
10864 }
10865
10866 pwdiOemDataReqParams = (WDI_oemDataReqParamsType*)pEventData->pEventData;
10867 wdiOemDataRspCb = (WDI_oemDataRspCb)pEventData->pCBfnc;
10868
10869 /*-----------------------------------------------------------------------
10870 Get message buffer
10871 -----------------------------------------------------------------------*/
10872
10873 reqLen = sizeof(tStartOemDataReqParams);
10874
10875 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
10876 WDI_START_OEM_DATA_REQ, reqLen,
10877 &pSendBuffer, &usDataOffset, &usSendSize))||
10878 (usSendSize < (usDataOffset + reqLen)))
10879 {
10880 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010881 "Unable to get send buffer in Start Oem Data req %p %p %p",
Jeff Johnsone7245742012-09-05 17:12:55 -070010882 pEventData, pwdiOemDataReqParams, wdiOemDataRspCb);
10883 WDI_ASSERT(0);
10884 return WDI_STATUS_E_FAILURE;
10885 }
10886
10887 //copying WDI OEM DATA REQ PARAMS to shared memory
10888 halStartOemDataReqParams = (tStartOemDataReqParams *)(pSendBuffer + usDataOffset );
10889
10890 wpalMemoryCopy(&halStartOemDataReqParams->selfMacAddr, &pwdiOemDataReqParams->wdiOemDataReqInfo.selfMacAddr, sizeof(wpt_macAddr));
10891 wpalMemoryCopy(&halStartOemDataReqParams->oemDataReq, &pwdiOemDataReqParams->wdiOemDataReqInfo.oemDataReq, OEM_DATA_REQ_SIZE);
10892
10893 pWDICtx->wdiReqStatusCB = pwdiOemDataReqParams->wdiReqStatusCB;
10894 pWDICtx->pReqStatusUserData = pwdiOemDataReqParams->pUserData;
10895
10896 /*-------------------------------------------------------------------------
10897 Send Start Request to HAL
10898 -------------------------------------------------------------------------*/
10899 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10900 wdiOemDataRspCb, pEventData->pUserData,
10901 WDI_START_OEM_DATA_RESP);
10902}/*WDI_ProcessStartOemDataReq*/
10903#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070010904
10905/**
Jeff Johnsone7245742012-09-05 17:12:55 -070010906 @brief Process Host Resume Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070010907 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010908
10909 @param pWDICtx: pointer to the WLAN DAL context
10910 pEventData: pointer to the event information structure
10911
Jeff Johnson295189b2012-06-20 16:38:30 -070010912 @see
10913 @return Result of the function call
10914*/
10915WDI_Status
10916WDI_ProcessHostResumeReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010917(
Jeff Johnson295189b2012-06-20 16:38:30 -070010918 WDI_ControlBlockType* pWDICtx,
10919 WDI_EventInfoType* pEventData
10920)
10921{
10922 WDI_ResumeParamsType* pwdiHostResumeParams = NULL;
10923 WDI_HostResumeEventRspCb wdiHostResumeRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010924 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010925 wpt_uint16 usDataOffset = 0;
10926 wpt_uint16 usSendSize = 0;
10927 tHalWlanHostResumeReqParam halResumeReqParams;
10928
10929 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10930
10931 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010932 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010933 -------------------------------------------------------------------------*/
10934 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10935 ( NULL == pEventData->pCBfnc ))
10936 {
10937 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010938 "%s: Invalid parameters ",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010939 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010940 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010941 }
10942
10943 pwdiHostResumeParams = (WDI_ResumeParamsType*)pEventData->pEventData;
10944 wdiHostResumeRspCb = (WDI_HostResumeEventRspCb)pEventData->pCBfnc;
10945
10946 /*-----------------------------------------------------------------------
10947 Get message buffer
10948 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010949 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
Jeff Johnson295189b2012-06-20 16:38:30 -070010950 WDI_HOST_RESUME_REQ, sizeof(halResumeReqParams),
10951 &pSendBuffer, &usDataOffset, &usSendSize))||
10952 (usSendSize < (usDataOffset + sizeof(halResumeReqParams))))
10953 {
10954 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010955 "Unable to get send buffer in Start Oem Data req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070010956 pEventData, pwdiHostResumeParams, wdiHostResumeRspCb);
10957 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010958 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010959 }
10960
Jeff Johnsone7245742012-09-05 17:12:55 -070010961 halResumeReqParams.configuredMcstBcstFilterSetting =
Jeff Johnson295189b2012-06-20 16:38:30 -070010962 pwdiHostResumeParams->wdiResumeParams.ucConfiguredMcstBcstFilterSetting;
Jeff Johnsone7245742012-09-05 17:12:55 -070010963
10964 wpalMemoryCopy( pSendBuffer+usDataOffset,
10965 &halResumeReqParams,
10966 sizeof(halResumeReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070010967
10968 pWDICtx->wdiReqStatusCB = pwdiHostResumeParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010969 pWDICtx->pReqStatusUserData = pwdiHostResumeParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010970
10971 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010972 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010973 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010974 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10975 wdiHostResumeRspCb, pEventData->pUserData,
10976 WDI_HOST_RESUME_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010977}/*WDI_ProcessHostResumeReq*/
10978
10979/**
Jeff Johnsone7245742012-09-05 17:12:55 -070010980 @brief Process set Tx Per Tracking Parameters Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070010981 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010982
10983 @param pWDICtx: pointer to the WLAN DAL context
10984 pEventData: pointer to the event information structure
10985
Jeff Johnson295189b2012-06-20 16:38:30 -070010986 @see
10987 @return Result of the function call
10988*/
10989WDI_Status
10990WDI_ProcessSetTxPerTrackingReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010991(
Jeff Johnson295189b2012-06-20 16:38:30 -070010992 WDI_ControlBlockType* pWDICtx,
10993 WDI_EventInfoType* pEventData
10994)
10995{
10996 WDI_SetTxPerTrackingReqParamsType* pwdiSetTxPerTrackingReqParams = NULL;
10997 WDI_SetTxPerTrackingRspCb pwdiSetTxPerTrackingRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070010998 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010999 wpt_uint16 usDataOffset = 0;
11000 wpt_uint16 usSendSize = 0;
11001 tHalTxPerTrackingReqParam halTxPerTrackingReqParam;
11002 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11003
11004 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011005 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011006 -------------------------------------------------------------------------*/
11007 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
11008 ( NULL == pEventData->pCBfnc ))
11009 {
11010 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011011 "%s: Invalid parameters ",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011012 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011013 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011014 }
11015
11016 pwdiSetTxPerTrackingReqParams = (WDI_SetTxPerTrackingReqParamsType*)pEventData->pEventData;
11017 pwdiSetTxPerTrackingRspCb = (WDI_SetTxPerTrackingRspCb)pEventData->pCBfnc;
Jeff Johnsone7245742012-09-05 17:12:55 -070011018
Jeff Johnson295189b2012-06-20 16:38:30 -070011019 /*-----------------------------------------------------------------------
11020 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070011021 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070011022 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011023 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_TX_PER_TRACKING_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011024 sizeof(halTxPerTrackingReqParam),
11025 &pSendBuffer, &usDataOffset, &usSendSize))||
11026 ( usSendSize < (usDataOffset + sizeof(halTxPerTrackingReqParam) )))
11027 {
11028 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080011029 "Unable to get send buffer in set tx per tracking req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070011030 pEventData, pwdiSetTxPerTrackingReqParams, pwdiSetTxPerTrackingRspCb);
11031 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011032 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011033 }
Jeff Johnsone7245742012-09-05 17:12:55 -070011034
Jeff Johnson295189b2012-06-20 16:38:30 -070011035 halTxPerTrackingReqParam.ucTxPerTrackingEnable = pwdiSetTxPerTrackingReqParams->wdiTxPerTrackingParam.ucTxPerTrackingEnable;
11036 halTxPerTrackingReqParam.ucTxPerTrackingPeriod = pwdiSetTxPerTrackingReqParams->wdiTxPerTrackingParam.ucTxPerTrackingPeriod;
11037 halTxPerTrackingReqParam.ucTxPerTrackingRatio = pwdiSetTxPerTrackingReqParams->wdiTxPerTrackingParam.ucTxPerTrackingRatio;
11038 halTxPerTrackingReqParam.uTxPerTrackingWatermark = pwdiSetTxPerTrackingReqParams->wdiTxPerTrackingParam.uTxPerTrackingWatermark;
Jeff Johnsone7245742012-09-05 17:12:55 -070011039
11040 wpalMemoryCopy( pSendBuffer+usDataOffset,
11041 &halTxPerTrackingReqParam,
11042 sizeof(halTxPerTrackingReqParam));
Jeff Johnson295189b2012-06-20 16:38:30 -070011043
11044 pWDICtx->wdiReqStatusCB = pwdiSetTxPerTrackingReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011045 pWDICtx->pReqStatusUserData = pwdiSetTxPerTrackingReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011046
11047 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011048 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011049 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011050 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11051 pwdiSetTxPerTrackingRspCb, pEventData->pUserData, WDI_SET_TX_PER_TRACKING_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011052}/*WDI_ProcessSetTxPerTrackingReq*/
11053
11054/*=========================================================================
11055 Indications
11056=========================================================================*/
11057
11058/**
11059 @brief Process Suspend Indications function (called when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011060
11061 @param pWDICtx: pointer to the WLAN DAL context
11062 pEventData: pointer to the event information structure
11063
Jeff Johnson295189b2012-06-20 16:38:30 -070011064 @see
11065 @return Result of the function call
11066*/
11067WDI_Status
11068WDI_ProcessHostSuspendInd
Jeff Johnsone7245742012-09-05 17:12:55 -070011069(
Jeff Johnson295189b2012-06-20 16:38:30 -070011070 WDI_ControlBlockType* pWDICtx,
11071 WDI_EventInfoType* pEventData
11072)
11073{
11074 WDI_SuspendParamsType *pSuspendIndParams;
Jeff Johnsone7245742012-09-05 17:12:55 -070011075 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011076 wpt_uint16 usDataOffset = 0;
11077 wpt_uint16 usSendSize = 0;
11078 WDI_Status wdiStatus;
11079 tHalWlanHostSuspendIndParam halWlanSuspendIndparams;
11080 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11081
11082 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011083 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011084 -------------------------------------------------------------------------*/
11085 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
11086 {
11087 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011088 "%s: Invalid parameters in Suspend ind",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011089 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011090 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011091 }
11092
11093 pSuspendIndParams = (WDI_SuspendParamsType *)pEventData->pEventData;
11094
11095 /*-----------------------------------------------------------------------
11096 Get message buffer
11097 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011098 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
11099 WDI_HOST_SUSPEND_IND,
Jeff Johnson295189b2012-06-20 16:38:30 -070011100 sizeof(halWlanSuspendIndparams),
11101 &pSendBuffer, &usDataOffset, &usSendSize))||
11102 (usSendSize < (usDataOffset + sizeof(halWlanSuspendIndparams))))
11103 {
11104 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11105 "Unable to get send buffer in Suspend Ind ");
11106 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011107 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011108 }
11109
11110 halWlanSuspendIndparams.configuredMcstBcstFilterSetting =
11111 pSuspendIndParams->wdiSuspendParams.ucConfiguredMcstBcstFilterSetting;
11112
Jeff Johnsone7245742012-09-05 17:12:55 -070011113 halWlanSuspendIndparams.activeSessionCount =
Hoonki Lee9af07cf2013-04-24 01:21:58 -070011114 WDI_GetActiveSessionsCount(pWDICtx, NULL, eWLAN_PAL_TRUE);
Jeff Johnson295189b2012-06-20 16:38:30 -070011115
Jeff Johnsone7245742012-09-05 17:12:55 -070011116 wpalMemoryCopy( pSendBuffer+usDataOffset, &halWlanSuspendIndparams,
11117 sizeof(tHalWlanHostSuspendIndParam));
Jeff Johnson295189b2012-06-20 16:38:30 -070011118
11119 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011120 Send Suspend Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011121 -------------------------------------------------------------------------*/
11122 pWDICtx->wdiReqStatusCB = pSuspendIndParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011123 pWDICtx->pReqStatusUserData = pSuspendIndParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011124
Jeff Johnsone7245742012-09-05 17:12:55 -070011125 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070011126 return ( wdiStatus != WDI_STATUS_SUCCESS )?wdiStatus:WDI_STATUS_SUCCESS_SYNC;
11127}/*WDI_ProcessHostSuspendInd*/
11128
Madan Mohan Koyyalamudi01cba042013-01-10 21:56:05 -080011129
11130
11131/**
11132 @brief Process Traffic Stats Indications function (called when Main FSM allows it)
11133
11134 @param pWDICtx: pointer to the WLAN DAL context
11135 pEventData: pointer to the event information structure
11136
11137 @see
11138 @return Result of the function call
11139*/
11140WDI_Status
11141WDI_ProcessTrafficStatsInd
11142(
11143 WDI_ControlBlockType* pWDICtx,
11144 WDI_EventInfoType* pEventData
11145)
11146{
11147 WDI_TrafficStatsIndType* pTrafficStatsIndParams;
11148 wpt_uint8* pSendBuffer = NULL;
11149 wpt_uint16 usDataOffset = 0;
11150 wpt_uint16 usSendSize = 0;
11151 WDI_Status wdiStatus;
11152 tStatsClassBIndParams* pStatsClassBIndParams;
11153 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11154
11155 /*-------------------------------------------------------------------------
11156 Sanity check
11157 -------------------------------------------------------------------------*/
11158 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
11159 {
11160 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11161 "%s: Invalid parameters in Traffic Stats ind",__func__);
11162 WDI_ASSERT(0);
11163 return WDI_STATUS_E_FAILURE;
11164 }
11165
11166 pTrafficStatsIndParams = (WDI_TrafficStatsIndType *)pEventData->pEventData;
11167
11168 if(pTrafficStatsIndParams->length != sizeof(tStaStatsClassB)*(HAL_NUM_STA))
11169 {
11170 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11171 "%s: Invalid parameters in Traffic Stats ind",__func__);
11172 WDI_ASSERT(0);
11173 return WDI_STATUS_E_FAILURE;
11174 }
11175
11176 /*-----------------------------------------------------------------------
11177 Get message buffer
11178 -----------------------------------------------------------------------*/
11179 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
11180 WDI_TRAFFIC_STATS_IND,
11181 sizeof(tStatsClassBIndParams),
11182 &pSendBuffer, &usDataOffset, &usSendSize))||
11183 (usSendSize < (usDataOffset + sizeof(tStatsClassBIndParams))))
11184 {
11185 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
11186 "Unable to get send buffer in Traffic Stats Ind ");
11187 WDI_ASSERT(0);
11188 return WDI_STATUS_E_FAILURE;
11189 }
11190
11191 pStatsClassBIndParams = (tStatsClassBIndParams*)(pSendBuffer+usDataOffset);
11192
11193 pStatsClassBIndParams->duration = pTrafficStatsIndParams->duration;
11194
11195 wpalMemoryCopy(pStatsClassBIndParams->staStatsClassB,
11196 pTrafficStatsIndParams->pTrafficStats,
11197 pTrafficStatsIndParams->length);
11198
11199 /*-------------------------------------------------------------------------
11200 Send Suspend Request to HAL
11201 -------------------------------------------------------------------------*/
11202 pWDICtx->wdiReqStatusCB = pTrafficStatsIndParams->wdiReqStatusCB;
11203 pWDICtx->pReqStatusUserData = pTrafficStatsIndParams->pUserData;
11204
11205 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
11206 return ( wdiStatus != WDI_STATUS_SUCCESS )?wdiStatus:WDI_STATUS_SUCCESS_SYNC;
11207}/*WDI_ProcessTrafficStatsInd*/
11208
Chet Lanctot186b5732013-03-18 10:26:30 -070011209#ifdef WLAN_FEATURE_11W
11210/**
11211 @brief Process Exclude Unencrypted Indications function (called
11212 when Main FSM allows it)
11213
11214 @param pWDICtx: pointer to the WLAN DAL context
11215 pEventData: pointer to the event information structure
11216
11217 @see
11218 @return Result of the function call
11219*/
11220WDI_Status
11221WDI_ProcessExcludeUnencryptInd
11222(
11223 WDI_ControlBlockType* pWDICtx,
11224 WDI_EventInfoType* pEventData
11225)
11226{
11227 WDI_ExcludeUnencryptIndType* pWDIExcUnencIndParams;
11228 wpt_uint8* pSendBuffer = NULL;
11229 wpt_uint16 usDataOffset = 0;
11230 wpt_uint16 usSendSize = 0;
11231 WDI_Status wdiStatus;
11232 tHalWlanExcludeUnEncryptedIndParam* pHalExcUnencIndParams;
11233 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11234
11235 /*-------------------------------------------------------------------------
11236 Sanity check
11237 -------------------------------------------------------------------------*/
11238 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
11239 {
11240 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11241 "%s: Invalid parameters in Exclude Unencrypted ind",__func__);
11242 WDI_ASSERT(0);
11243 return WDI_STATUS_E_FAILURE;
11244 }
11245
11246 pWDIExcUnencIndParams = (WDI_ExcludeUnencryptIndType *)pEventData->pEventData;
11247
11248 /*-----------------------------------------------------------------------
11249 Get message buffer
11250 -----------------------------------------------------------------------*/
11251 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
11252 WDI_EXCLUDE_UNENCRYPTED_IND,
11253 sizeof(tHalWlanExcludeUnEncryptedIndParam),
11254 &pSendBuffer, &usDataOffset, &usSendSize))||
11255 (usSendSize < (usDataOffset + sizeof(tHalWlanExcludeUnEncryptedIndParam))))
11256 {
11257 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
11258 "Unable to get send buffer in Exclude Unencrypted Ind ");
11259 WDI_ASSERT(0);
11260 return WDI_STATUS_E_FAILURE;
11261 }
11262
11263 pHalExcUnencIndParams = (tHalWlanExcludeUnEncryptedIndParam*)(pSendBuffer+usDataOffset);
11264
11265 pHalExcUnencIndParams->bDot11ExcludeUnencrypted = pWDIExcUnencIndParams->bExcludeUnencrypt;
11266
11267 wpalMemoryCopy(pHalExcUnencIndParams->bssId,
11268 pWDIExcUnencIndParams->bssid, WDI_MAC_ADDR_LEN);
11269
11270 /*-------------------------------------------------------------------------
11271 Send Suspend Request to HAL
11272 -------------------------------------------------------------------------*/
11273 pWDICtx->wdiReqStatusCB = pWDIExcUnencIndParams->wdiReqStatusCB;
11274 pWDICtx->pReqStatusUserData = pWDIExcUnencIndParams->pUserData;
11275
11276 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
11277 return ( wdiStatus != WDI_STATUS_SUCCESS )?wdiStatus:WDI_STATUS_SUCCESS_SYNC;
11278}/*WDI_ProcessExcludeUnencryptInd*/
11279#endif
11280
Yue Mab9c86f42013-08-14 15:59:08 -070011281/**
11282 @brief Process Add Periodic Tx Pattern Indication function (called when
11283 Main FSM allows it)
11284
11285 @param pWDICtx: pointer to the WLAN DAL context
11286 pEventData: pointer to the event information structure
11287
11288 @see
11289 @return Result of the function call
11290*/
11291WDI_Status
11292WDI_ProcessAddPeriodicTxPtrnInd
11293(
11294 WDI_ControlBlockType* pWDICtx,
11295 WDI_EventInfoType* pEventData
11296)
11297{
11298 WDI_AddPeriodicTxPtrnParamsType *pAddPeriodicTxPtrnParams;
11299 wpt_uint8* pSendBuffer = NULL;
11300 wpt_uint16 usDataOffset = 0;
11301 wpt_uint16 usSendSize = 0;
11302 WDI_Status wdiStatus;
11303 tHalAddPeriodicTxPtrn *halAddPeriodicTxPtrn;
11304 wpt_uint8 selfStaIdx = 0;
11305
11306 /*-------------------------------------------------------------------------
11307 Sanity check
11308 -------------------------------------------------------------------------*/
11309 if ((NULL == pEventData) || (NULL == pEventData->pEventData))
11310 {
11311 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11312 "%s: Invalid parameters in AddPeriodicTxPtrnInd!", __func__);
11313 WDI_ASSERT(0);
11314 return WDI_STATUS_E_FAILURE;
11315 }
11316
11317 pAddPeriodicTxPtrnParams =
11318 (WDI_AddPeriodicTxPtrnParamsType *)pEventData->pEventData;
11319
11320 /*------------------------------------------------------------------------
11321 Get message buffer
11322 ------------------------------------------------------------------------*/
11323 if ((WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(pWDICtx,
11324 WDI_ADD_PERIODIC_TX_PATTERN_IND, sizeof(tHalAddPeriodicTxPtrn),
11325 &pSendBuffer, &usDataOffset, &usSendSize))||
11326 (usSendSize < (usDataOffset + sizeof(tHalAddPeriodicTxPtrn))))
11327 {
11328 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11329 "%s: Unable to get send buffer in AddPeriodicTxPtrnInd!",
11330 __func__);
11331 WDI_ASSERT(0);
11332 return WDI_STATUS_E_FAILURE;
11333 }
11334
11335 halAddPeriodicTxPtrn = (tHalAddPeriodicTxPtrn *)(pSendBuffer + usDataOffset);
11336
11337 if (WDI_STATUS_SUCCESS != WDI_STATableFindStaidByAddr(pWDICtx,
11338 pAddPeriodicTxPtrnParams->wdiAddPeriodicTxPtrnParams.macAddr,
11339 &selfStaIdx))
11340 {
11341 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
11342 "%s: Failed to get selfStaIdx!", __func__);
Wilson Yang00256342013-10-10 23:13:38 -070011343 wpalMemoryFree(pSendBuffer);
Yue Mab9c86f42013-08-14 15:59:08 -070011344
11345 return WDI_STATUS_E_FAILURE;
11346 }
11347
11348 halAddPeriodicTxPtrn->selfStaIdx = selfStaIdx;
11349 halAddPeriodicTxPtrn->ucPtrnId =
11350 pAddPeriodicTxPtrnParams->wdiAddPeriodicTxPtrnParams.ucPtrnId;
11351 halAddPeriodicTxPtrn->usPtrnSize =
11352 pAddPeriodicTxPtrnParams->wdiAddPeriodicTxPtrnParams.ucPtrnSize;
11353 halAddPeriodicTxPtrn->uPtrnIntervalMs =
11354 pAddPeriodicTxPtrnParams->wdiAddPeriodicTxPtrnParams.usPtrnIntervalMs;
11355
11356 wpalMemoryCopy(halAddPeriodicTxPtrn->ucPattern,
11357 pAddPeriodicTxPtrnParams->wdiAddPeriodicTxPtrnParams.ucPattern,
11358 pAddPeriodicTxPtrnParams->wdiAddPeriodicTxPtrnParams.ucPtrnSize);
11359
11360 /*-------------------------------------------------------------------------
11361 Send Indication to HAL
11362 -------------------------------------------------------------------------*/
11363 pWDICtx->wdiReqStatusCB = pAddPeriodicTxPtrnParams->wdiReqStatusCB;
11364 pWDICtx->pReqStatusUserData = pAddPeriodicTxPtrnParams->pUserData;
11365
11366 wdiStatus = WDI_SendIndication(pWDICtx, pSendBuffer, usSendSize);
11367
11368 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
11369 "%s: Sent WLAN_HAL_ADD_PERIODIC_TX_PTRN_IND to HAL.", __func__);
11370
11371 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus : WDI_STATUS_SUCCESS_SYNC;
11372} /* WDI_ProcessAddPeriodicTxPtrnInd */
11373
11374/**
11375 @brief Process Delete Periodic Tx Pattern Indication function (called when
11376 Main FSM allows it)
11377
11378 @param pWDICtx: pointer to the WLAN DAL context
11379 pEventData: pointer to the event information structure
11380
11381 @see
11382 @return Result of the function call
11383*/
11384WDI_Status
11385WDI_ProcessDelPeriodicTxPtrnInd
11386(
11387 WDI_ControlBlockType* pWDICtx,
11388 WDI_EventInfoType* pEventData
11389)
11390{
11391 WDI_DelPeriodicTxPtrnParamsType *pDelPeriodicTxPtrnParams;
11392 wpt_uint8* pSendBuffer = NULL;
11393 wpt_uint16 usDataOffset = 0;
11394 wpt_uint16 usSendSize = 0;
11395 WDI_Status wdiStatus;
11396 tHalDelPeriodicTxPtrn *halDelPeriodicTxPtrn;
11397 wpt_uint8 selfStaIdx = 0;
11398
11399 /*-------------------------------------------------------------------------
11400 Sanity check
11401 -------------------------------------------------------------------------*/
11402 if ((NULL == pEventData) || (NULL == pEventData->pEventData))
11403 {
11404 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11405 "%s: Invalid parameters in DelPeriodicTxPtrnInd!", __func__);
11406 WDI_ASSERT(0);
11407 return WDI_STATUS_E_FAILURE;
11408 }
11409
11410 pDelPeriodicTxPtrnParams =
11411 (WDI_DelPeriodicTxPtrnParamsType *)pEventData->pEventData;
11412
11413 /*------------------------------------------------------------------------
11414 Get message buffer
11415 ------------------------------------------------------------------------*/
11416 if ((WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(pWDICtx,
11417 WDI_DEL_PERIODIC_TX_PATTERN_IND, sizeof(tHalDelPeriodicTxPtrn),
11418 &pSendBuffer, &usDataOffset, &usSendSize))||
11419 (usSendSize < (usDataOffset + sizeof(tHalDelPeriodicTxPtrn))))
11420 {
11421 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11422 "%s: Unable to get send buffer in DelPeriodicTxPtrnInd!",
11423 __func__);
11424 WDI_ASSERT(0);
11425 return WDI_STATUS_E_FAILURE;
11426 }
11427
11428 halDelPeriodicTxPtrn = (tHalDelPeriodicTxPtrn *)(pSendBuffer + usDataOffset);
11429
11430 if (WDI_STATUS_SUCCESS != WDI_STATableFindStaidByAddr(pWDICtx,
11431 pDelPeriodicTxPtrnParams->wdiDelPeriodicTxPtrnParams.macAddr,
11432 &selfStaIdx))
11433 {
11434 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
11435 "%s: Failed to get selfStaIdx!", __func__);
Wilson Yang00256342013-10-10 23:13:38 -070011436 wpalMemoryFree(pSendBuffer);
Yue Mab9c86f42013-08-14 15:59:08 -070011437
11438 return WDI_STATUS_E_FAILURE;
11439 }
11440
11441 halDelPeriodicTxPtrn->selfStaIdx = selfStaIdx;
11442 halDelPeriodicTxPtrn->uPatternIdBitmap =
11443 pDelPeriodicTxPtrnParams->wdiDelPeriodicTxPtrnParams.ucPatternIdBitmap;
11444
11445 /*-------------------------------------------------------------------------
11446 Send Indication to HAL
11447 -------------------------------------------------------------------------*/
11448 pWDICtx->wdiReqStatusCB = pDelPeriodicTxPtrnParams->wdiReqStatusCB;
11449 pWDICtx->pReqStatusUserData = pDelPeriodicTxPtrnParams->pUserData;
11450
11451 wdiStatus = WDI_SendIndication(pWDICtx, pSendBuffer, usSendSize);
11452
11453 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
11454 "%s: Sent WLAN_HAL_DEL_PERIODIC_TX_PTRN_IND to HAL.", __func__);
11455
11456 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus : WDI_STATUS_SUCCESS_SYNC;
11457} /* WDI_ProcessDelPeriodicTxPtrnInd */
11458
Jeff Johnson295189b2012-06-20 16:38:30 -070011459/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070011460 MISC CONTROL PROCESSING REQUEST API
Jeff Johnson295189b2012-06-20 16:38:30 -070011461==========================================================================*/
11462/**
Jeff Johnsone7245742012-09-05 17:12:55 -070011463 @brief Process Channel Switch Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070011464 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011465
11466 @param pWDICtx: pointer to the WLAN DAL context
11467 pEventData: pointer to the event information structure
11468
Jeff Johnson295189b2012-06-20 16:38:30 -070011469 @see
11470 @return Result of the function call
11471*/
11472WDI_Status
11473WDI_ProcessChannelSwitchReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011474(
Jeff Johnson295189b2012-06-20 16:38:30 -070011475 WDI_ControlBlockType* pWDICtx,
11476 WDI_EventInfoType* pEventData
11477)
11478{
11479 WDI_SwitchChReqParamsType* pwdiSwitchChParams;
11480 WDI_SwitchChRspCb wdiSwitchChRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011481 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011482 wpt_uint16 usDataOffset = 0;
11483 wpt_uint16 usSendSize = 0;
11484 tSwitchChannelReqMsg halSwitchChannelReq = {{0}};
11485 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11486
11487 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011488 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011489 -------------------------------------------------------------------------*/
11490 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
11491 ( NULL == pEventData->pCBfnc ))
11492 {
11493 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011494 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011495 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011496 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011497 }
11498
11499 pwdiSwitchChParams = (WDI_SwitchChReqParamsType*)pEventData->pEventData;
11500 wdiSwitchChRspCb = (WDI_SwitchChRspCb)pEventData->pCBfnc;
11501 /*-----------------------------------------------------------------------
11502 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070011503 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070011504 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011505 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_CH_SWITCH_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011506 sizeof(halSwitchChannelReq.switchChannelParams),
11507 &pSendBuffer, &usDataOffset, &usSendSize))||
11508 ( usSendSize < (usDataOffset + sizeof(halSwitchChannelReq.switchChannelParams) )))
11509 {
11510 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080011511 "Unable to get send buffer in channel switch req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070011512 pEventData, pwdiSwitchChParams, wdiSwitchChRspCb);
11513 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011514 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011515 }
11516
Jeff Johnsone7245742012-09-05 17:12:55 -070011517 halSwitchChannelReq.switchChannelParams.channelNumber =
Jeff Johnson295189b2012-06-20 16:38:30 -070011518 pwdiSwitchChParams->wdiChInfo.ucChannel;
Jeff Johnsone7245742012-09-05 17:12:55 -070011519#ifndef WLAN_FEATURE_VOWIFI
11520 halSwitchChannelReq.switchChannelParams.localPowerConstraint =
Jeff Johnson295189b2012-06-20 16:38:30 -070011521 pwdiSwitchChParams->wdiChInfo.ucLocalPowerConstraint;
11522#endif
Jeff Johnsone7245742012-09-05 17:12:55 -070011523 halSwitchChannelReq.switchChannelParams.secondaryChannelOffset =
Jeff Johnson295189b2012-06-20 16:38:30 -070011524 pwdiSwitchChParams->wdiChInfo.wdiSecondaryChannelOffset;
11525
11526#ifdef WLAN_FEATURE_VOWIFI
11527 halSwitchChannelReq.switchChannelParams.maxTxPower
Jeff Johnsone7245742012-09-05 17:12:55 -070011528 = pwdiSwitchChParams->wdiChInfo.cMaxTxPower;
Jeff Johnson295189b2012-06-20 16:38:30 -070011529 wpalMemoryCopy(halSwitchChannelReq.switchChannelParams.selfStaMacAddr,
11530 pwdiSwitchChParams->wdiChInfo.macSelfStaMacAddr,
11531 WDI_MAC_ADDR_LEN);
11532 wpalMemoryCopy(halSwitchChannelReq.switchChannelParams.bssId,
11533 pwdiSwitchChParams->wdiChInfo.macBSSId,
11534 WDI_MAC_ADDR_LEN);
11535#endif
Jeff Johnsone7245742012-09-05 17:12:55 -070011536 wpalMemoryCopy( pSendBuffer+usDataOffset,
11537 &halSwitchChannelReq.switchChannelParams,
11538 sizeof(halSwitchChannelReq.switchChannelParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070011539
11540 pWDICtx->wdiReqStatusCB = pwdiSwitchChParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011541 pWDICtx->pReqStatusUserData = pwdiSwitchChParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011542
11543 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011544 Send Switch Channel Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011545 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011546 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11547 wdiSwitchChRspCb, pEventData->pUserData, WDI_CH_SWITCH_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011548}/*WDI_ProcessChannelSwitchReq*/
11549
11550/**
Kalikinkar dhara1e83b772014-02-06 12:59:22 -080011551 @brief Process Channel Switch Request function (called when
11552 Main FSM allows it)
11553
11554 @param pWDICtx: pointer to the WLAN DAL context
11555 pEventData: pointer to the event information structure
11556
11557 @see
11558 @return Result of the function call
11559*/
11560WDI_Status WDI_ProcessChannelSwitchReq_V1
11561(
11562 WDI_ControlBlockType* pWDICtx,
11563 WDI_EventInfoType* pEventData
11564)
11565{
11566 WDI_SwitchChReqParamsType_V1* pwdiSwitchChParams;
11567 WDI_SwitchChRspCb_V1 wdiSwitchChRspCb;
11568 wpt_uint8* pSendBuffer = NULL;
11569 wpt_uint16 usDataOffset = 0;
11570 wpt_uint16 usSendSize = 0;
11571 tSwitchChannelReqMsg_V1 halSwitchChannelReq = {{0}};
11572 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11573
11574 /*-------------------------------------------------------------------------
11575 Sanity check
11576 -------------------------------------------------------------------------*/
11577 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
11578 ( NULL == pEventData->pCBfnc ))
11579 {
11580 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11581 "%s: Invalid parameters", __func__);
11582 WDI_ASSERT(0);
11583 return WDI_STATUS_E_FAILURE;
11584 }
11585
11586 pwdiSwitchChParams = (WDI_SwitchChReqParamsType_V1*)pEventData->pEventData;
11587 wdiSwitchChRspCb = (WDI_SwitchChRspCb_V1)pEventData->pCBfnc;
11588 /*-----------------------------------------------------------------------
11589 Get message buffer
11590 ! TO DO : proper conversion into the HAL Message Request Format
11591 -----------------------------------------------------------------------*/
11592 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
11593 WDI_CH_SWITCH_REQ_V1,
11594 sizeof(halSwitchChannelReq.switchChannelParams_V1),
11595 &pSendBuffer, &usDataOffset, &usSendSize))||
11596 ( usSendSize < (usDataOffset +
11597 sizeof(halSwitchChannelReq.switchChannelParams_V1) )))
11598 {
11599 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11600 "Unable to get send buffer in channel switch req %p %p %p",
11601 pEventData, pwdiSwitchChParams, wdiSwitchChRspCb);
11602 WDI_ASSERT(0);
11603 return WDI_STATUS_E_FAILURE;
11604 }
11605
11606 halSwitchChannelReq.switchChannelParams_V1.channelSwitchSrc =
11607 pwdiSwitchChParams->wdiChInfo.channelSwitchSrc;
11608
11609 halSwitchChannelReq.switchChannelParams_V1.channelNumber =
11610 pwdiSwitchChParams->wdiChInfo.ucChannel;
11611#ifndef WLAN_FEATURE_VOWIFI
11612 halSwitchChannelReq.switchChannelParams_V1.localPowerConstraint =
11613 pwdiSwitchChParams->wdiChInfo.ucLocalPowerConstraint;
11614#endif
11615 halSwitchChannelReq.switchChannelParams_V1.secondaryChannelOffset =
11616 pwdiSwitchChParams->wdiChInfo.wdiSecondaryChannelOffset;
11617
11618#ifdef WLAN_FEATURE_VOWIFI
11619 halSwitchChannelReq.switchChannelParams_V1.maxTxPower
11620 = pwdiSwitchChParams->wdiChInfo.cMaxTxPower;
11621 wpalMemoryCopy(halSwitchChannelReq.switchChannelParams_V1.selfStaMacAddr,
11622 pwdiSwitchChParams->wdiChInfo.macSelfStaMacAddr,
11623 WDI_MAC_ADDR_LEN);
11624 wpalMemoryCopy(halSwitchChannelReq.switchChannelParams_V1.bssId,
11625 pwdiSwitchChParams->wdiChInfo.macBSSId,
11626 WDI_MAC_ADDR_LEN);
11627#endif
11628 wpalMemoryCopy( pSendBuffer+usDataOffset,
11629 &halSwitchChannelReq.switchChannelParams_V1,
11630 sizeof(halSwitchChannelReq.switchChannelParams_V1));
11631
11632 pWDICtx->wdiReqStatusCB = pwdiSwitchChParams->wdiReqStatusCB;
11633 pWDICtx->pReqStatusUserData = pwdiSwitchChParams->pUserData;
11634
11635 /*-------------------------------------------------------------------------
11636 Send Switch Channel Request to HAL
11637 -------------------------------------------------------------------------*/
11638 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11639 wdiSwitchChRspCb, pEventData->pUserData,
11640 WDI_CH_SWITCH_RESP_V1);
11641}/*WDI_ProcessChannelSwitchReq_V1*/
11642
11643/**
Jeff Johnsone7245742012-09-05 17:12:55 -070011644 @brief Process Config STA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070011645 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011646
11647 @param pWDICtx: pointer to the WLAN DAL context
11648 pEventData: pointer to the event information structure
11649
Jeff Johnson295189b2012-06-20 16:38:30 -070011650 @see
11651 @return Result of the function call
11652*/
11653WDI_Status
11654WDI_ProcessConfigStaReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011655(
Jeff Johnson295189b2012-06-20 16:38:30 -070011656 WDI_ControlBlockType* pWDICtx,
11657 WDI_EventInfoType* pEventData
11658)
11659{
11660 WDI_ConfigSTAReqParamsType* pwdiConfigSTAParams;
11661 WDI_ConfigSTARspCb wdiConfigSTARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011662 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070011663 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070011664 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011665 wpt_uint16 usDataOffset = 0;
11666 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070011667 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070011668
Jeff Johnsone7245742012-09-05 17:12:55 -070011669 tConfigStaReqMsg halConfigStaReqMsg;
11670 wpt_uint16 uMsgSize = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070011671 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11672
11673 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011674 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011675 -------------------------------------------------------------------------*/
11676 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
11677 ( NULL == pEventData->pCBfnc ))
11678 {
11679 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011680 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011681 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011682 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011683 }
11684
11685 pwdiConfigSTAParams = (WDI_ConfigSTAReqParamsType*)pEventData->pEventData;
11686 wdiConfigSTARspCb = (WDI_ConfigSTARspCb)pEventData->pCBfnc;
11687 /*-------------------------------------------------------------------------
11688 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070011689 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070011690 -------------------------------------------------------------------------*/
11691 wpalMutexAcquire(&pWDICtx->wptMutex);
11692
11693 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011694 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070011695 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011696 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
11697 pwdiConfigSTAParams->wdiReqInfo.macBSSID,
11698 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070011699
Jeff Johnsone7245742012-09-05 17:12:55 -070011700 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070011701 {
Jeff Johnsone7245742012-09-05 17:12:55 -070011702 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
11703 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
11704 __func__, MAC_ADDR_ARRAY(pwdiConfigSTAParams->wdiReqInfo.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070011705
11706 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011707 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070011708 }
11709
11710 /*------------------------------------------------------------------------
11711 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070011712 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070011713 ------------------------------------------------------------------------*/
11714 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
11715 {
Jeff Johnsone7245742012-09-05 17:12:55 -070011716 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11717 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
11718 __func__, MAC_ADDR_ARRAY(pwdiConfigSTAParams->wdiReqInfo.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070011719
Jeff Johnsone7245742012-09-05 17:12:55 -070011720 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070011721 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011722 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070011723 }
11724
11725 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011726
11727 /* Allocation of StaReqMsg Memory Based on Firmware Capabilities */
11728#ifdef WLAN_FEATURE_11AC
11729 if (WDI_getFwWlanFeatCaps(DOT11AC))
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070011730 uMsgSize = sizeof(halConfigStaReqMsg.uStaParams.configStaParams_V1); // Version-1 For 11AC
Jeff Johnsone7245742012-09-05 17:12:55 -070011731 else
11732#endif
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070011733 uMsgSize = sizeof(halConfigStaReqMsg.uStaParams.configStaParams); // Version-0 Default
Jeff Johnsone7245742012-09-05 17:12:55 -070011734
Jeff Johnson295189b2012-06-20 16:38:30 -070011735 /*-----------------------------------------------------------------------
11736 Get message buffer
11737 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011738 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_CONFIG_STA_REQ,
11739 uMsgSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070011740 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070011741 ( usSendSize < (usDataOffset + uMsgSize )))
Jeff Johnson295189b2012-06-20 16:38:30 -070011742 {
11743 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080011744 "Unable to get send buffer in config sta req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070011745 pEventData, pwdiConfigSTAParams, wdiConfigSTARspCb);
11746 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011747 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011748 }
11749
11750 /*Copy the station context*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011751 WDI_CopyWDIStaCtxToHALStaCtx( &halConfigStaReqMsg.uStaParams.configStaParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070011752 &pwdiConfigSTAParams->wdiReqInfo);
11753
11754 if(pwdiConfigSTAParams->wdiReqInfo.wdiSTAType == WDI_STA_ENTRY_SELF)
11755 {
11756 /* Need to fill in the self STA Index */
Jeff Johnsone7245742012-09-05 17:12:55 -070011757 if ( WDI_STATUS_SUCCESS !=
Jeff Johnson295189b2012-06-20 16:38:30 -070011758 WDI_STATableFindStaidByAddr(pWDICtx,
11759 pwdiConfigSTAParams->wdiReqInfo.macSTA,
Jeff Johnsone7245742012-09-05 17:12:55 -070011760 (wpt_uint8*)&halConfigStaReqMsg.uStaParams.configStaParams.staIdx ))
Jeff Johnson295189b2012-06-20 16:38:30 -070011761 {
11762 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080011763 MAC_ADDRESS_STR
11764 ": This station does not exist in the WDI Station Table",
11765 MAC_ADDR_ARRAY(pwdiConfigSTAParams->wdiReqInfo.macSTA));
Jeff Johnson295189b2012-06-20 16:38:30 -070011766 wpalMutexRelease(&pWDICtx->wptMutex);
Madan Mohan Koyyalamudif244d8f2012-11-29 11:21:05 -080011767 wpalMemoryFree(pSendBuffer);
Jeff Johnsone7245742012-09-05 17:12:55 -070011768 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011769 }
11770 }
11771 else
11772 {
11773 /* Need to fill in the STA Index to invalid, since at this point we have not
11774 yet received it from HAL */
Gopichand Nakkalae7cbc5d2013-03-27 21:09:23 -070011775 halConfigStaReqMsg.uStaParams.configStaParams.staIdx = pwdiConfigSTAParams->wdiReqInfo.staIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070011776 }
11777
11778 /* Need to fill in the BSS index */
Jeff Johnsone7245742012-09-05 17:12:55 -070011779 halConfigStaReqMsg.uStaParams.configStaParams.bssIdx = pBSSSes->ucBSSIdx;
Madan Mohan Koyyalamudi0e4acab2012-11-02 12:46:40 -070011780
Jeff Johnsone7245742012-09-05 17:12:55 -070011781 wpalMemoryCopy( pSendBuffer+usDataOffset,
11782 &halConfigStaReqMsg.uStaParams,
Madan Mohan Koyyalamudi0e4acab2012-11-02 12:46:40 -070011783 uMsgSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070011784
11785 pWDICtx->wdiReqStatusCB = pwdiConfigSTAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011786 pWDICtx->pReqStatusUserData = pwdiConfigSTAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011787
Jeff Johnsone7245742012-09-05 17:12:55 -070011788 wpalMemoryCopy( &pWDICtx->wdiCachedConfigStaReq,
11789 pwdiConfigSTAParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070011790 sizeof(pWDICtx->wdiCachedConfigStaReq));
11791
11792 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011793 Send Config STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011794 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011795 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11796 wdiConfigSTARspCb, pEventData->pUserData, WDI_CONFIG_STA_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011797}/*WDI_ProcessConfigStaReq*/
11798
11799
11800/**
Jeff Johnsone7245742012-09-05 17:12:55 -070011801 @brief Process Set Link State Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070011802 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011803
11804 @param pWDICtx: pointer to the WLAN DAL context
11805 pEventData: pointer to the event information structure
11806
Jeff Johnson295189b2012-06-20 16:38:30 -070011807 @see
11808 @return Result of the function call
11809*/
11810WDI_Status
11811WDI_ProcessSetLinkStateReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011812(
Jeff Johnson295189b2012-06-20 16:38:30 -070011813 WDI_ControlBlockType* pWDICtx,
11814 WDI_EventInfoType* pEventData
11815)
11816{
11817 WDI_SetLinkReqParamsType* pwdiSetLinkParams;
11818 WDI_SetLinkStateRspCb wdiSetLinkRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011819 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070011820 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070011821 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011822 wpt_uint16 usDataOffset = 0;
11823 wpt_uint16 usSendSize = 0;
11824 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnsone7245742012-09-05 17:12:55 -070011825 tLinkStateParams halLinkStateReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070011826 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11827
11828 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011829 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011830 -------------------------------------------------------------------------*/
11831 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
11832 ( NULL == pEventData->pCBfnc ))
11833 {
11834 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011835 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011836 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011837 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011838 }
11839
11840 pwdiSetLinkParams = (WDI_SetLinkReqParamsType*)pEventData->pEventData;
11841 wdiSetLinkRspCb = (WDI_SetLinkStateRspCb)pEventData->pCBfnc;
11842 /*-------------------------------------------------------------------------
11843 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070011844 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070011845 -------------------------------------------------------------------------*/
11846 wpalMutexAcquire(&pWDICtx->wptMutex);
11847
11848 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011849 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070011850 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011851 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
11852 pwdiSetLinkParams->wdiLinkInfo.macBSSID,
11853 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070011854
Jeff Johnsone7245742012-09-05 17:12:55 -070011855 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070011856 {
Madan Mohan Koyyalamudi891e9492012-10-21 12:19:31 -070011857 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070011858 "%s: Set link request received outside association session. macBSSID " MAC_ADDRESS_STR,
11859 __func__, MAC_ADDR_ARRAY(pwdiSetLinkParams->wdiLinkInfo.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070011860 }
11861 else
11862 {
11863 /*------------------------------------------------------------------------
11864 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070011865 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070011866 ------------------------------------------------------------------------*/
11867 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
11868 {
Jeff Johnsone7245742012-09-05 17:12:55 -070011869 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11870 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
11871 __func__, MAC_ADDR_ARRAY(pwdiSetLinkParams->wdiLinkInfo.macBSSID));
11872
11873 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070011874 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011875 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070011876 }
11877 }
11878 /* If the link is set to enter IDLE - the Session allocated for this BSS
11879 will be deleted on the Set Link State response coming from HAL
11880 - cache the request for response processing */
Jeff Johnsone7245742012-09-05 17:12:55 -070011881 wpalMemoryCopy(&pWDICtx->wdiCacheSetLinkStReq, pwdiSetLinkParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070011882 sizeof(pWDICtx->wdiCacheSetLinkStReq));
11883
11884 wpalMutexRelease(&pWDICtx->wptMutex);
11885 /*-----------------------------------------------------------------------
11886 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070011887 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070011888 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011889
11890 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_LINK_ST_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011891 sizeof(halLinkStateReqMsg),
11892 &pSendBuffer, &usDataOffset, &usSendSize))||
11893 ( usSendSize < (usDataOffset + sizeof(halLinkStateReqMsg) )))
11894 {
11895 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080011896 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070011897 pEventData, pwdiSetLinkParams, wdiSetLinkRspCb);
11898 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011899 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011900 }
11901
11902 wpalMemoryCopy(halLinkStateReqMsg.bssid,
11903 pwdiSetLinkParams->wdiLinkInfo.macBSSID, WDI_MAC_ADDR_LEN);
11904
11905 wpalMemoryCopy(halLinkStateReqMsg.selfMacAddr,
11906 pwdiSetLinkParams->wdiLinkInfo.macSelfStaMacAddr, WDI_MAC_ADDR_LEN);
11907
Jeff Johnsone7245742012-09-05 17:12:55 -070011908 halLinkStateReqMsg.state =
Jeff Johnson295189b2012-06-20 16:38:30 -070011909 WDI_2_HAL_LINK_STATE(pwdiSetLinkParams->wdiLinkInfo.wdiLinkState);
11910
Jeff Johnsone7245742012-09-05 17:12:55 -070011911 wpalMemoryCopy( pSendBuffer+usDataOffset,
11912 &halLinkStateReqMsg,
11913 sizeof(halLinkStateReqMsg));
Jeff Johnson295189b2012-06-20 16:38:30 -070011914
11915 pWDICtx->wdiReqStatusCB = pwdiSetLinkParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011916 pWDICtx->pReqStatusUserData = pwdiSetLinkParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011917
11918 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011919 Send Set Link State Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011920 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011921 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11922 wdiSetLinkRspCb, pEventData->pUserData, WDI_SET_LINK_ST_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011923}/*WDI_ProcessSetLinkStateReq*/
11924
11925
11926/**
11927 @brief Process Get Stats Request function (called when Main FSM
11928 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011929
11930 @param pWDICtx: pointer to the WLAN DAL context
11931 pEventData: pointer to the event information structure
11932
Jeff Johnson295189b2012-06-20 16:38:30 -070011933 @see
11934 @return Result of the function call
11935*/
11936WDI_Status
11937WDI_ProcessGetStatsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011938(
Jeff Johnson295189b2012-06-20 16:38:30 -070011939 WDI_ControlBlockType* pWDICtx,
11940 WDI_EventInfoType* pEventData
11941)
11942{
11943 WDI_GetStatsReqParamsType* pwdiGetStatsParams;
11944 WDI_GetStatsRspCb wdiGetStatsRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011945 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011946 wpt_uint16 usDataOffset = 0;
11947 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070011948 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070011949 WDI_BSSSessionType* pBSSSes = NULL;
11950 wpt_macAddr macBSSID;
Jeff Johnsone7245742012-09-05 17:12:55 -070011951 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070011952 tHalStatsReqMsg halStatsReqMsg;
11953 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11954
11955 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011956 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011957 -------------------------------------------------------------------------*/
11958 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData) ||
11959 ( NULL == pEventData->pCBfnc ) )
11960 {
11961 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011962 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011963 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011964 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011965 }
11966
11967 pwdiGetStatsParams = (WDI_GetStatsReqParamsType*)pEventData->pEventData;
11968 wdiGetStatsRspCb = (WDI_GetStatsRspCb)pEventData->pCBfnc;
11969
11970 /*-------------------------------------------------------------------------
11971 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070011972 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070011973 -------------------------------------------------------------------------*/
11974 wpalMutexAcquire(&pWDICtx->wptMutex);
11975
11976 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011977 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070011978 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011979 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
11980 pwdiGetStatsParams->wdiGetStatsParamsInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070011981 &macBSSID))
11982 {
11983 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080011984 "This station does not exist in the WDI Station Table %d",
11985 pwdiGetStatsParams->wdiGetStatsParamsInfo.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070011986 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011987 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011988 }
11989
Jeff Johnsone7245742012-09-05 17:12:55 -070011990 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
11991 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070011992 {
Jeff Johnsone7245742012-09-05 17:12:55 -070011993 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
11994 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
11995 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070011996
11997 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011998 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070011999 }
12000
12001 /*------------------------------------------------------------------------
12002 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070012003 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070012004 ------------------------------------------------------------------------*/
12005 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
12006 {
Jeff Johnsone7245742012-09-05 17:12:55 -070012007 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12008 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
12009 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070012010
Jeff Johnsone7245742012-09-05 17:12:55 -070012011 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070012012 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070012013 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070012014 }
12015
12016
12017 wpalMutexRelease(&pWDICtx->wptMutex);
12018
12019 /*-----------------------------------------------------------------------
12020 Get message buffer
12021 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012022 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_GET_STATS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012023 sizeof(halStatsReqMsg.statsReqParams),
12024 &pSendBuffer, &usDataOffset, &usSendSize))||
12025 ( usSendSize < (usDataOffset + sizeof(halStatsReqMsg.statsReqParams) )))
12026 {
12027 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012028 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070012029 pEventData, pwdiGetStatsParams, wdiGetStatsRspCb);
12030 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012031 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012032 }
12033
Jeff Johnsone7245742012-09-05 17:12:55 -070012034 halStatsReqMsg.statsReqParams.staId =
Jeff Johnson295189b2012-06-20 16:38:30 -070012035 pwdiGetStatsParams->wdiGetStatsParamsInfo.ucSTAIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070012036 halStatsReqMsg.statsReqParams.statsMask =
Jeff Johnson295189b2012-06-20 16:38:30 -070012037 pwdiGetStatsParams->wdiGetStatsParamsInfo.uStatsMask;
Jeff Johnsone7245742012-09-05 17:12:55 -070012038 wpalMemoryCopy( pSendBuffer+usDataOffset,
12039 &halStatsReqMsg.statsReqParams,
12040 sizeof(halStatsReqMsg.statsReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070012041
12042 pWDICtx->wdiReqStatusCB = pwdiGetStatsParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012043 pWDICtx->pReqStatusUserData = pwdiGetStatsParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012044
12045 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012046 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012047 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012048 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12049 wdiGetStatsRspCb, pEventData->pUserData, WDI_GET_STATS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012050}/*WDI_ProcessGetStatsReq*/
12051
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -080012052#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_ESE || defined(FEATURE_WLAN_LFR)
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -080012053/**
12054 @brief Process Get Roam Rssi Request function (called when Main FSM
12055 allows it)
12056
12057 @param pWDICtx: pointer to the WLAN DAL context
12058 pEventData: pointer to the event information structure
12059
12060 @see
12061 @return Result of the function call
12062*/
12063WDI_Status
12064WDI_ProcessGetRoamRssiReq
12065(
12066 WDI_ControlBlockType* pWDICtx,
12067 WDI_EventInfoType* pEventData
12068)
12069{
12070 WDI_GetRoamRssiReqParamsType* pwdiGetRoamRssiParams;
12071 WDI_GetStatsRspCb wdiGetStatsRspCb;
12072 wpt_uint8* pSendBuffer = NULL;
12073 wpt_uint16 usDataOffset = 0;
12074 wpt_uint16 usSendSize = 0;
12075 wpt_uint8 ucCurrentBSSSesIdx = 0;
12076 WDI_BSSSessionType* pBSSSes = NULL;
12077 wpt_macAddr macBSSID;
12078 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
12079 tHalGetRoamRssiReqMsg halRssiRoamReqMsg;
12080 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12081 /*-------------------------------------------------------------------------
12082 Sanity check
12083 -------------------------------------------------------------------------*/
12084 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData) ||
12085 ( NULL == pEventData->pCBfnc ) )
12086 {
12087 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12088 "%s: Invalid parameters", __func__);
12089 WDI_ASSERT(0);
12090 return WDI_STATUS_E_FAILURE;
12091 }
12092
12093 pwdiGetRoamRssiParams = (WDI_GetRoamRssiReqParamsType*)pEventData->pEventData;
12094 wdiGetStatsRspCb = (WDI_GetStatsRspCb)pEventData->pCBfnc;
12095
12096 /*-------------------------------------------------------------------------
12097 Check to see if we are in the middle of an association, if so queue, if
12098 not it means it is free to process request
12099 -------------------------------------------------------------------------*/
12100 wpalMutexAcquire(&pWDICtx->wptMutex);
12101
12102 /*------------------------------------------------------------------------
12103 Find the BSS for which the request is made
12104 ------------------------------------------------------------------------*/
12105 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
12106 pwdiGetRoamRssiParams->wdiGetRoamRssiParamsInfo.ucSTAIdx,
12107 &macBSSID))
12108 {
12109 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012110 "This station does not exist in the WDI Station Table %d",
12111 pwdiGetRoamRssiParams->wdiGetRoamRssiParamsInfo.ucSTAIdx);
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -080012112 wpalMutexRelease(&pWDICtx->wptMutex);
12113 return WDI_STATUS_E_FAILURE;
12114 }
12115
12116 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
12117 if ( NULL == pBSSSes )
12118 {
12119 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
12120 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
12121 __func__, MAC_ADDR_ARRAY(macBSSID));
12122
12123 wpalMutexRelease(&pWDICtx->wptMutex);
12124 return WDI_STATUS_E_NOT_ALLOWED;
12125 }
12126
12127 /*------------------------------------------------------------------------
12128 Check if this BSS is being currently processed or queued,
12129 if queued - queue the new request as well
12130 ------------------------------------------------------------------------*/
12131 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
12132 {
12133 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12134 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
12135 __func__, MAC_ADDR_ARRAY(macBSSID));
12136
12137 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
12138 wpalMutexRelease(&pWDICtx->wptMutex);
12139 return wdiStatus;
12140 }
12141
12142 wpalMutexRelease(&pWDICtx->wptMutex);
12143
12144 /*-----------------------------------------------------------------------
12145 Get message buffer
12146 -----------------------------------------------------------------------*/
12147 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_GET_ROAM_RSSI_REQ,
12148 sizeof(halRssiRoamReqMsg.roamRssiReqParams),
12149 &pSendBuffer, &usDataOffset, &usSendSize))||
12150 ( usSendSize < (usDataOffset + sizeof(halRssiRoamReqMsg.roamRssiReqParams) )))
12151 {
12152 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012153 "Unable to get send buffer in set bss key req %p %p %p",
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -080012154 pEventData, pwdiGetRoamRssiParams, wdiGetStatsRspCb);
12155 WDI_ASSERT(0);
12156 return WDI_STATUS_E_FAILURE;
12157 }
12158
12159 halRssiRoamReqMsg.roamRssiReqParams.staId =
12160 pwdiGetRoamRssiParams->wdiGetRoamRssiParamsInfo.ucSTAIdx;
12161 wpalMemoryCopy( pSendBuffer+usDataOffset,
12162 &halRssiRoamReqMsg.roamRssiReqParams,
12163 sizeof(halRssiRoamReqMsg.roamRssiReqParams));
12164
12165 pWDICtx->wdiReqStatusCB = pwdiGetRoamRssiParams->wdiReqStatusCB;
12166 pWDICtx->pReqStatusUserData = pwdiGetRoamRssiParams->pUserData;
12167
12168 /*-------------------------------------------------------------------------
12169 Send Get STA Request to HAL
12170 -------------------------------------------------------------------------*/
12171 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12172 wdiGetStatsRspCb, pEventData->pUserData, WDI_GET_ROAM_RSSI_RESP);
12173}/*WDI_ProcessGetRoamRssiReq*/
12174#endif
12175
Jeff Johnson295189b2012-06-20 16:38:30 -070012176/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012177 @brief Process Update Cfg Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070012178 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012179
12180 @param pWDICtx: pointer to the WLAN DAL context
12181 pEventData: pointer to the event information structure
12182
Jeff Johnson295189b2012-06-20 16:38:30 -070012183 @see
12184 @return Result of the function call
12185*/
12186WDI_Status
12187WDI_ProcessUpdateCfgReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012188(
Jeff Johnson295189b2012-06-20 16:38:30 -070012189 WDI_ControlBlockType* pWDICtx,
12190 WDI_EventInfoType* pEventData
12191)
12192{
12193 WDI_UpdateCfgReqParamsType* pwdiUpdateCfgParams = NULL;
12194 WDI_UpdateCfgRspCb wdiUpdateCfgRspCb = NULL;
12195
Jeff Johnsone7245742012-09-05 17:12:55 -070012196 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012197 wpt_uint16 usDataOffset = 0;
12198 wpt_uint16 usSendSize = 0;
12199 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12200
12201 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012202 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012203 -------------------------------------------------------------------------*/
12204 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
12205 ( NULL == pEventData->pCBfnc))
12206 {
12207 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012208 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012209 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012210 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012211 }
12212
12213 pwdiUpdateCfgParams = (WDI_UpdateCfgReqParamsType*)pEventData->pEventData;
12214 wdiUpdateCfgRspCb = (WDI_UpdateCfgRspCb)pEventData->pCBfnc;
12215
12216 /*-----------------------------------------------------------------------
12217 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070012218 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070012219 -----------------------------------------------------------------------*/
12220
Jeff Johnsone7245742012-09-05 17:12:55 -070012221 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_CFG_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012222 pwdiUpdateCfgParams->uConfigBufferLen + sizeof(wpt_uint32),
12223 &pSendBuffer, &usDataOffset, &usSendSize))||
12224 ( usSendSize < (usDataOffset + pwdiUpdateCfgParams->uConfigBufferLen)))
12225 {
12226 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012227 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070012228 pEventData, pwdiUpdateCfgParams, wdiUpdateCfgRspCb);
12229 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012230 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012231 }
12232
Jeff Johnsone7245742012-09-05 17:12:55 -070012233 wpalMemoryCopy( pSendBuffer+usDataOffset,
12234 &pwdiUpdateCfgParams->uConfigBufferLen,
12235 sizeof(wpt_uint32));
12236 wpalMemoryCopy( pSendBuffer+usDataOffset+sizeof(wpt_uint32),
12237 pwdiUpdateCfgParams->pConfigBuffer,
12238 pwdiUpdateCfgParams->uConfigBufferLen);
Jeff Johnson295189b2012-06-20 16:38:30 -070012239
12240 pWDICtx->wdiReqStatusCB = pwdiUpdateCfgParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012241 pWDICtx->pReqStatusUserData = pwdiUpdateCfgParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012242
12243 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012244 Send Update Cfg Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012245 -------------------------------------------------------------------------*/
12246
Jeff Johnsone7245742012-09-05 17:12:55 -070012247 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12248 wdiUpdateCfgRspCb, pEventData->pUserData, WDI_UPDATE_CFG_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012249
12250}/*WDI_ProcessUpdateCfgReq*/
12251
12252
12253/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012254 @brief Process Add BA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070012255 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012256
12257 @param pWDICtx: pointer to the WLAN DAL context
12258 pEventData: pointer to the event information structure
12259
Jeff Johnson295189b2012-06-20 16:38:30 -070012260 @see
12261 @return Result of the function call
12262*/
12263WDI_Status
12264WDI_ProcessAddBAReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012265(
Jeff Johnson295189b2012-06-20 16:38:30 -070012266 WDI_ControlBlockType* pWDICtx,
12267 WDI_EventInfoType* pEventData
12268)
12269{
12270 WDI_AddBAReqParamsType* pwdiAddBAParams;
12271 WDI_AddBARspCb wdiAddBARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070012272 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070012273 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070012274 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012275 wpt_uint16 usDataOffset = 0;
12276 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070012277 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070012278 wpt_macAddr macBSSID;
12279
12280 tAddBAReqMsg halAddBAReq;
12281 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12282
12283 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012284 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012285 -------------------------------------------------------------------------*/
12286 if (( NULL == pEventData ) ||
12287 ( NULL == pEventData->pEventData) ||
12288 ( NULL == pEventData->pCBfnc ))
12289 {
12290 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012291 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012292 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012293 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012294 }
12295
12296 pwdiAddBAParams = (WDI_AddBAReqParamsType*)pEventData->pEventData;
12297 wdiAddBARspCb = (WDI_AddBARspCb)pEventData->pCBfnc;
12298
12299 /*-------------------------------------------------------------------------
12300 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070012301 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070012302 -------------------------------------------------------------------------*/
12303 wpalMutexAcquire(&pWDICtx->wptMutex);
12304
12305 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012306 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070012307 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012308 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
12309 pwdiAddBAParams->wdiBAInfoType.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070012310 &macBSSID))
12311 {
12312 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012313 "This station does not exist in the WDI Station Table %d",
12314 pwdiAddBAParams->wdiBAInfoType.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070012315 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070012316 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012317 }
12318
Jeff Johnsone7245742012-09-05 17:12:55 -070012319 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
12320 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070012321 {
Jeff Johnsone7245742012-09-05 17:12:55 -070012322 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
12323 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
12324 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070012325
12326 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070012327 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070012328 }
12329
12330 /*------------------------------------------------------------------------
12331 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070012332 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070012333 ------------------------------------------------------------------------*/
12334 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
12335 {
Jeff Johnsone7245742012-09-05 17:12:55 -070012336 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12337 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
12338 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070012339
Jeff Johnsone7245742012-09-05 17:12:55 -070012340 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070012341 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070012342 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070012343 }
12344
12345
12346 wpalMutexRelease(&pWDICtx->wptMutex);
12347 /*-----------------------------------------------------------------------
12348 Get message buffer
12349 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012350 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ADD_BA_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012351 sizeof(halAddBAReq.addBAParams),
12352 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070012353 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070012354 (usDataOffset + sizeof(halAddBAReq.addBAParams) )))
12355 {
12356 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012357 "Unable to get send buffer in Add BA req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070012358 pEventData, pwdiAddBAParams, wdiAddBARspCb);
12359 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012360 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012361 }
12362
Jeff Johnsone7245742012-09-05 17:12:55 -070012363 halAddBAReq.addBAParams.baSessionID =
Jeff Johnson295189b2012-06-20 16:38:30 -070012364 pwdiAddBAParams->wdiBAInfoType.ucBaSessionID;
12365 halAddBAReq.addBAParams.winSize = pwdiAddBAParams->wdiBAInfoType.ucWinSize;
12366#ifdef FEATURE_ON_CHIP_REORDERING
Jeff Johnsone7245742012-09-05 17:12:55 -070012367 halAddBAReq.addBAParams.isReorderingDoneOnChip =
Jeff Johnson295189b2012-06-20 16:38:30 -070012368 pwdiAddBAParams->wdiBAInfoType.bIsReorderingDoneOnChip;
12369#endif
12370
Jeff Johnsone7245742012-09-05 17:12:55 -070012371 wpalMemoryCopy( pSendBuffer+usDataOffset,
12372 &halAddBAReq.addBAParams,
12373 sizeof(halAddBAReq.addBAParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070012374
12375 pWDICtx->wdiReqStatusCB = pwdiAddBAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012376 pWDICtx->pReqStatusUserData = pwdiAddBAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012377
12378 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012379 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012380 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012381 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12382 wdiAddBARspCb, pEventData->pUserData,
12383 WDI_ADD_BA_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012384}/*WDI_ProcessAddBAReq*/
12385
12386
12387
12388/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012389 @brief Process Trigger BA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070012390 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012391
12392 @param pWDICtx: pointer to the WLAN DAL context
12393 pEventData: pointer to the event information structure
12394
Jeff Johnson295189b2012-06-20 16:38:30 -070012395 @see
12396 @return Result of the function call
12397*/
12398WDI_Status
12399WDI_ProcessTriggerBAReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012400(
Jeff Johnson295189b2012-06-20 16:38:30 -070012401 WDI_ControlBlockType* pWDICtx,
12402 WDI_EventInfoType* pEventData
12403)
12404{
12405 WDI_TriggerBAReqParamsType* pwdiTriggerBAParams;
12406 WDI_TriggerBARspCb wdiTriggerBARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070012407 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070012408 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070012409 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012410 wpt_uint16 usDataOffset = 0;
12411 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070012412 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070012413 wpt_uint16 index;
12414 wpt_macAddr macBSSID;
Jeff Johnsone7245742012-09-05 17:12:55 -070012415
Jeff Johnson295189b2012-06-20 16:38:30 -070012416 tTriggerBAReqMsg halTriggerBAReq;
12417 tTriggerBaReqCandidate* halTriggerBACandidate;
12418 WDI_TriggerBAReqCandidateType* wdiTriggerBACandidate;
12419 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12420
12421 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012422 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012423 -------------------------------------------------------------------------*/
12424 if (( NULL == pEventData ) ||
12425 ( NULL == pEventData->pEventData ) ||
12426 ( NULL == pEventData->pCBfnc ))
12427 {
12428 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012429 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012430 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012431 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012432 }
12433
12434 pwdiTriggerBAParams = (WDI_TriggerBAReqParamsType*)pEventData->pEventData;
12435 wdiTriggerBARspCb = (WDI_TriggerBARspCb)pEventData->pCBfnc;
12436 /*-------------------------------------------------------------------------
12437 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070012438 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070012439 -------------------------------------------------------------------------*/
12440 wpalMutexAcquire(&pWDICtx->wptMutex);
12441
12442 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012443 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070012444 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012445 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
12446 pwdiTriggerBAParams->wdiTriggerBAInfoType.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070012447 &macBSSID))
12448 {
12449 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012450 "This station does not exist in the WDI Station Table %d",
12451 pwdiTriggerBAParams->wdiTriggerBAInfoType.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070012452 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070012453 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012454 }
12455
Jeff Johnsone7245742012-09-05 17:12:55 -070012456 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
12457 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070012458 {
Jeff Johnsone7245742012-09-05 17:12:55 -070012459 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
12460 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
12461 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070012462
12463 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070012464 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070012465 }
12466
12467 /*------------------------------------------------------------------------
12468 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070012469 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070012470 ------------------------------------------------------------------------*/
12471 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
12472 {
Jeff Johnsone7245742012-09-05 17:12:55 -070012473 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12474 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
12475 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070012476
Jeff Johnsone7245742012-09-05 17:12:55 -070012477 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070012478 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070012479 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070012480 }
12481
12482
12483 wpalMutexRelease(&pWDICtx->wptMutex);
12484 /*-----------------------------------------------------------------------
12485 Get message buffer
12486 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012487 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
12488 WDI_TRIGGER_BA_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012489 sizeof(halTriggerBAReq.triggerBAParams) +
Jeff Johnsone7245742012-09-05 17:12:55 -070012490 (sizeof(tTriggerBaReqCandidate) *
Jeff Johnson295189b2012-06-20 16:38:30 -070012491 pwdiTriggerBAParams->wdiTriggerBAInfoType.usBACandidateCnt),
12492 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070012493 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070012494 (usDataOffset + sizeof(halTriggerBAReq.triggerBAParams)+
Jeff Johnsone7245742012-09-05 17:12:55 -070012495 (sizeof(tTriggerBaReqCandidate) *
Jeff Johnson295189b2012-06-20 16:38:30 -070012496 pwdiTriggerBAParams->wdiTriggerBAInfoType.usBACandidateCnt) )))
12497 {
12498 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012499 "Unable to get send buffer in Trigger BA req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070012500 pEventData, pwdiTriggerBAParams, wdiTriggerBARspCb);
12501 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012502 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012503 }
12504
Jeff Johnsone7245742012-09-05 17:12:55 -070012505 halTriggerBAReq.triggerBAParams.baSessionID =
Jeff Johnson295189b2012-06-20 16:38:30 -070012506 pwdiTriggerBAParams->wdiTriggerBAInfoType.ucBASessionID;
Jeff Johnsone7245742012-09-05 17:12:55 -070012507 halTriggerBAReq.triggerBAParams.baCandidateCnt =
Jeff Johnson295189b2012-06-20 16:38:30 -070012508 pwdiTriggerBAParams->wdiTriggerBAInfoType.usBACandidateCnt;
12509
Jeff Johnsone7245742012-09-05 17:12:55 -070012510 wpalMemoryCopy( pSendBuffer+usDataOffset,
12511 &halTriggerBAReq.triggerBAParams,
12512 sizeof(halTriggerBAReq.triggerBAParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070012513
Jeff Johnsone7245742012-09-05 17:12:55 -070012514 wdiTriggerBACandidate =
Jeff Johnson295189b2012-06-20 16:38:30 -070012515 (WDI_TriggerBAReqCandidateType*)(pwdiTriggerBAParams + 1);
12516 halTriggerBACandidate = (tTriggerBaReqCandidate*)(pSendBuffer+usDataOffset+
12517 sizeof(halTriggerBAReq.triggerBAParams));
Jeff Johnsone7245742012-09-05 17:12:55 -070012518
12519 for(index = 0 ; index < halTriggerBAReq.triggerBAParams.baCandidateCnt ;
Jeff Johnson295189b2012-06-20 16:38:30 -070012520 index++)
12521 {
12522 halTriggerBACandidate->staIdx = wdiTriggerBACandidate->ucSTAIdx;
12523 halTriggerBACandidate->tidBitmap = wdiTriggerBACandidate->ucTidBitmap;
12524 halTriggerBACandidate++;
12525 wdiTriggerBACandidate++;
12526 }
12527
12528 pWDICtx->wdiReqStatusCB = pwdiTriggerBAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012529 pWDICtx->pReqStatusUserData = pwdiTriggerBAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012530
12531 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012532 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012533 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012534 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12535 wdiTriggerBARspCb, pEventData->pUserData,
12536 WDI_TRIGGER_BA_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012537}/*WDI_ProcessTriggerBAReq*/
12538
12539
12540
12541/**
12542 @brief Process Update Beacon Params Request function (called when Main FSM
12543 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012544
12545 @param pWDICtx: pointer to the WLAN DAL context
12546 pEventData: pointer to the event information structure
12547
Jeff Johnson295189b2012-06-20 16:38:30 -070012548 @see
12549 @return Result of the function call
12550*/
12551WDI_Status
12552WDI_ProcessUpdateBeaconParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012553(
Jeff Johnson295189b2012-06-20 16:38:30 -070012554 WDI_ControlBlockType* pWDICtx,
12555 WDI_EventInfoType* pEventData
12556)
12557{
12558 WDI_UpdateBeaconParamsType* pwdiUpdateBeaconParams;
12559 WDI_UpdateBeaconParamsRspCb wdiUpdateBeaconParamsRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070012560 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012561 wpt_uint16 usDataOffset = 0;
12562 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070012563 tUpdateBeaconParams halUpdateBeaconParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070012564 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12565
12566 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012567 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012568 -------------------------------------------------------------------------*/
12569 if (( NULL == pEventData ) ||
12570 ( NULL == pEventData->pEventData) ||
12571 ( NULL == pEventData->pCBfnc))
12572 {
12573 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012574 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012575 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012576 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012577 }
12578
12579 pwdiUpdateBeaconParams = (WDI_UpdateBeaconParamsType*)pEventData->pEventData;
12580 wdiUpdateBeaconParamsRspCb = (WDI_UpdateBeaconParamsRspCb)pEventData->pCBfnc;
12581 /*-----------------------------------------------------------------------
12582 Get message buffer
12583 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012584 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPD_BCON_PRMS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012585 sizeof(halUpdateBeaconParams),
12586 &pSendBuffer, &usDataOffset, &usSendSize))||
12587 ( usSendSize < (usDataOffset + sizeof(halUpdateBeaconParams) )))
12588 {
12589 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012590 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070012591 pEventData, pwdiUpdateBeaconParams, wdiUpdateBeaconParamsRspCb);
12592 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012593 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012594 }
12595
12596 /*BSS Index of the BSS*/
12597 halUpdateBeaconParams.bssIdx =
12598 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucBssIdx;
12599 /*shortPreamble mode. HAL should update all the STA rates when it
12600 receives this message*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012601 halUpdateBeaconParams.fShortPreamble =
Jeff Johnson295189b2012-06-20 16:38:30 -070012602 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucfShortPreamble;
12603 /* short Slot time.*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012604 halUpdateBeaconParams.fShortSlotTime =
Jeff Johnson295189b2012-06-20 16:38:30 -070012605 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucfShortSlotTime;
12606 /* Beacon Interval */
Jeff Johnsone7245742012-09-05 17:12:55 -070012607 halUpdateBeaconParams.beaconInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070012608 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.usBeaconInterval;
12609
12610 /*Protection related */
Jeff Johnsone7245742012-09-05 17:12:55 -070012611 halUpdateBeaconParams.llaCoexist =
Jeff Johnson295189b2012-06-20 16:38:30 -070012612 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucllaCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070012613 halUpdateBeaconParams.llbCoexist =
Jeff Johnson295189b2012-06-20 16:38:30 -070012614 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucllbCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070012615 halUpdateBeaconParams.llgCoexist =
Jeff Johnson295189b2012-06-20 16:38:30 -070012616 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucllgCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070012617 halUpdateBeaconParams.ht20MhzCoexist =
Jeff Johnson295189b2012-06-20 16:38:30 -070012618 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucHt20MhzCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070012619 halUpdateBeaconParams.llnNonGFCoexist =
Jeff Johnson295189b2012-06-20 16:38:30 -070012620 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucllnNonGFCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070012621 halUpdateBeaconParams.fLsigTXOPProtectionFullSupport =
Jeff Johnson295189b2012-06-20 16:38:30 -070012622 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucfLsigTXOPProtectionFullSupport;
12623 halUpdateBeaconParams.fRIFSMode =
12624 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucfRIFSMode;
Jeff Johnsone7245742012-09-05 17:12:55 -070012625 halUpdateBeaconParams.paramChangeBitmap =
Jeff Johnson295189b2012-06-20 16:38:30 -070012626 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.usChangeBitmap;
12627
Jeff Johnsone7245742012-09-05 17:12:55 -070012628 wpalMemoryCopy( pSendBuffer+usDataOffset, &halUpdateBeaconParams,
12629 sizeof(halUpdateBeaconParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070012630
12631 pWDICtx->wdiReqStatusCB = pwdiUpdateBeaconParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012632 pWDICtx->pReqStatusUserData = pwdiUpdateBeaconParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012633
12634 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012635 Send Del TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012636 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012637 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12638 wdiUpdateBeaconParamsRspCb, pEventData->pUserData, WDI_UPD_BCON_PRMS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012639}/*WDI_ProcessUpdateBeaconParamsReq*/
12640
12641
12642
12643/**
12644 @brief Process Send Beacon template Request function (called when Main FSM
12645 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012646
12647 @param pWDICtx: pointer to the WLAN DAL context
12648 pEventData: pointer to the event information structure
12649
Jeff Johnson295189b2012-06-20 16:38:30 -070012650 @see
12651 @return Result of the function call
12652*/
12653WDI_Status
12654WDI_ProcessSendBeaconParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012655(
Jeff Johnson295189b2012-06-20 16:38:30 -070012656 WDI_ControlBlockType* pWDICtx,
12657 WDI_EventInfoType* pEventData
12658)
12659{
12660 WDI_SendBeaconParamsType* pwdiSendBeaconParams;
12661 WDI_SendBeaconParamsRspCb wdiSendBeaconParamsRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070012662 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012663 wpt_uint16 usDataOffset = 0;
12664 wpt_uint16 usSendSize = 0;
12665 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12666
12667 tSendBeaconReqMsg halSendBeaconReq;
12668 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012669 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012670 -------------------------------------------------------------------------*/
12671 if (( NULL == pEventData ) ||
12672 ( NULL == pEventData->pEventData ) ||
12673 ( NULL == pEventData->pCBfnc ))
12674 {
12675 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012676 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012677 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012678 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012679 }
12680
12681 pwdiSendBeaconParams = (WDI_SendBeaconParamsType*)pEventData->pEventData;
12682 wdiSendBeaconParamsRspCb = (WDI_SendBeaconParamsRspCb)pEventData->pCBfnc;
12683 /*-----------------------------------------------------------------------
12684 Get message buffer
12685 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012686 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SND_BCON_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012687 sizeof(halSendBeaconReq.sendBeaconParam),
12688 &pSendBuffer, &usDataOffset, &usSendSize))||
12689 ( usSendSize < (usDataOffset + sizeof(halSendBeaconReq.sendBeaconParam) )))
12690 {
12691 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012692 "Unable to get send buffer in send beacon req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070012693 pEventData, pwdiSendBeaconParams, wdiSendBeaconParamsRspCb);
12694 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012695 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012696 }
12697
12698 wpalMemoryCopy(halSendBeaconReq.sendBeaconParam.bssId,
12699 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.macBSSID,
12700 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070012701 halSendBeaconReq.sendBeaconParam.beaconLength =
Jeff Johnson295189b2012-06-20 16:38:30 -070012702 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.beaconLength;
12703 wpalMemoryCopy(halSendBeaconReq.sendBeaconParam.beacon,
12704 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.beacon,
12705 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.beaconLength);
Jeff Johnsone7245742012-09-05 17:12:55 -070012706 halSendBeaconReq.sendBeaconParam.timIeOffset =
Jeff Johnson295189b2012-06-20 16:38:30 -070012707 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.timIeOffset;
Gopichand Nakkala81aef732013-03-22 11:15:19 +053012708 /* usP2PIeOffset should be atleast greater than timIeOffset */
12709 if ((pwdiSendBeaconParams->wdiSendBeaconParamsInfo.usP2PIeOffset != 0 ) &&
12710 (pwdiSendBeaconParams->wdiSendBeaconParamsInfo.usP2PIeOffset <
12711 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.timIeOffset))
12712 {
12713 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12714 "Invalid usP2PIeOffset %hu",
12715 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.usP2PIeOffset);
12716 WDI_ASSERT(0);
12717 return WDI_STATUS_E_FAILURE;
12718 }
12719
Jeff Johnsone7245742012-09-05 17:12:55 -070012720 halSendBeaconReq.sendBeaconParam.p2pIeOffset =
Jeff Johnson295189b2012-06-20 16:38:30 -070012721 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.usP2PIeOffset;
Jeff Johnson295189b2012-06-20 16:38:30 -070012722
Jeff Johnsone7245742012-09-05 17:12:55 -070012723 wpalMemoryCopy( pSendBuffer+usDataOffset,
12724 &halSendBeaconReq.sendBeaconParam,
12725 sizeof(halSendBeaconReq.sendBeaconParam));
Jeff Johnson295189b2012-06-20 16:38:30 -070012726
12727 pWDICtx->wdiReqStatusCB = pwdiSendBeaconParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012728 pWDICtx->pReqStatusUserData = pwdiSendBeaconParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012729
12730 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012731 Send Del TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012732 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012733 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12734 wdiSendBeaconParamsRspCb, pEventData->pUserData, WDI_SND_BCON_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012735}/*WDI_ProcessSendBeaconParamsReq*/
12736
12737/**
12738 @brief Process Update Beacon Params Request function (called when Main FSM
12739 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012740
12741 @param pWDICtx: pointer to the WLAN DAL context
12742 pEventData: pointer to the event information structure
12743
Jeff Johnson295189b2012-06-20 16:38:30 -070012744 @see
12745 @return Result of the function call
12746*/
12747WDI_Status
12748WDI_ProcessUpdateProbeRspTemplateReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012749(
Jeff Johnson295189b2012-06-20 16:38:30 -070012750 WDI_ControlBlockType* pWDICtx,
12751 WDI_EventInfoType* pEventData
12752)
12753{
12754 WDI_UpdateProbeRspTemplateParamsType* pwdiUpdateProbeRespTmplParams;
12755 WDI_UpdateProbeRspTemplateRspCb wdiUpdateProbeRespTmplRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070012756 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012757 wpt_uint16 usDataOffset = 0;
12758 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070012759 tSendProbeRespReqParams halUpdateProbeRspTmplParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070012760 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12761
12762 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012763 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012764 -------------------------------------------------------------------------*/
12765 if (( NULL == pEventData ) ||
12766 ( NULL == pEventData->pEventData) ||
12767 ( NULL == pEventData->pCBfnc))
12768 {
12769 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012770 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012771 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012772 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012773 }
12774
Jeff Johnsone7245742012-09-05 17:12:55 -070012775 pwdiUpdateProbeRespTmplParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070012776 (WDI_UpdateProbeRspTemplateParamsType*)pEventData->pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070012777 wdiUpdateProbeRespTmplRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070012778 (WDI_UpdateProbeRspTemplateRspCb)pEventData->pCBfnc;
12779 /*-----------------------------------------------------------------------
12780 Get message buffer
12781 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012782 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPD_PROBE_RSP_TEMPLATE_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012783 sizeof(halUpdateProbeRspTmplParams),
12784 &pSendBuffer, &usDataOffset, &usSendSize))||
12785 ( usSendSize < (usDataOffset + sizeof(halUpdateProbeRspTmplParams) )))
12786 {
12787 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012788 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070012789 pEventData, pwdiUpdateProbeRespTmplParams, wdiUpdateProbeRespTmplRspCb);
12790 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012791 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012792 }
12793
12794 wpalMemoryCopy(halUpdateProbeRspTmplParams.bssId,
Jeff Johnsone7245742012-09-05 17:12:55 -070012795 pwdiUpdateProbeRespTmplParams->wdiProbeRspTemplateInfo.macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -070012796 WDI_MAC_ADDR_LEN);
12797
Jeff Johnsone7245742012-09-05 17:12:55 -070012798 halUpdateProbeRspTmplParams.probeRespTemplateLen =
Jeff Johnson295189b2012-06-20 16:38:30 -070012799 pwdiUpdateProbeRespTmplParams->wdiProbeRspTemplateInfo.uProbeRespTemplateLen;
12800
12801 wpalMemoryCopy(halUpdateProbeRspTmplParams.pProbeRespTemplate,
12802 pwdiUpdateProbeRespTmplParams->wdiProbeRspTemplateInfo.pProbeRespTemplate,
Jeff Johnsone7245742012-09-05 17:12:55 -070012803 BEACON_TEMPLATE_SIZE);
Jeff Johnson295189b2012-06-20 16:38:30 -070012804
12805
12806 wpalMemoryCopy(halUpdateProbeRspTmplParams.ucProxyProbeReqValidIEBmap,
12807 pwdiUpdateProbeRespTmplParams->wdiProbeRspTemplateInfo.uaProxyProbeReqValidIEBmap,
12808 WDI_PROBE_REQ_BITMAP_IE_LEN);
12809
Jeff Johnsone7245742012-09-05 17:12:55 -070012810 wpalMemoryCopy( pSendBuffer+usDataOffset,
12811 &halUpdateProbeRspTmplParams,
12812 sizeof(halUpdateProbeRspTmplParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070012813
12814 pWDICtx->wdiReqStatusCB = pwdiUpdateProbeRespTmplParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012815 pWDICtx->pReqStatusUserData = pwdiUpdateProbeRespTmplParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012816
12817 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012818 Send Update Probe Resp Template Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012819 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012820 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12821 wdiUpdateProbeRespTmplRspCb, pEventData->pUserData,
12822 WDI_UPD_PROBE_RSP_TEMPLATE_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012823}/*WDI_ProcessUpdateProbeRspTemplateReq*/
12824
12825/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012826 @brief Process NV blob download function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070012827 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012828
12829 @param pWDICtx: pointer to the WLAN DAL context
12830 pEventData: pointer to the event information structure
12831
Jeff Johnson295189b2012-06-20 16:38:30 -070012832 @see
12833 @return Result of the function call
12834*/
12835WDI_Status
12836WDI_ProcessNvDownloadReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012837(
Jeff Johnson295189b2012-06-20 16:38:30 -070012838 WDI_ControlBlockType* pWDICtx,
12839 WDI_EventInfoType* pEventData
12840)
12841{
12842
12843 WDI_NvDownloadReqParamsType* pwdiNvDownloadReqParams = NULL;
12844 WDI_NvDownloadRspCb wdiNvDownloadRspCb = NULL;
12845
12846 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012847 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012848 -------------------------------------------------------------------------*/
12849 if (( NULL == pEventData ) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070012850 ( NULL == (pwdiNvDownloadReqParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070012851 (WDI_NvDownloadReqParamsType*)pEventData->pEventData)) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070012852 ( NULL == (wdiNvDownloadRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070012853 (WDI_NvDownloadRspCb)pEventData->pCBfnc)))
12854 {
12855 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012856 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012857 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012858 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012859 }
12860
12861 /*Intialize the Nv Blob Info */
Jeff Johnsone7245742012-09-05 17:12:55 -070012862 pWDICtx->wdiNvBlobInfo.usTotalFragment =
Jeff Johnson295189b2012-06-20 16:38:30 -070012863 TOTALFRAGMENTS(pwdiNvDownloadReqParams->wdiBlobInfo.uBlobSize);
12864
12865 /*cache the wdi nv request message here if the the first fragment
12866 * To issue the request to HAL for the next fragment */
12867 if( 0 == pWDICtx->wdiNvBlobInfo.usCurrentFragment)
12868 {
Jeff Johnsone7245742012-09-05 17:12:55 -070012869 wpalMemoryCopy(&pWDICtx->wdiCachedNvDownloadReq,
12870 pwdiNvDownloadReqParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070012871 sizeof(pWDICtx->wdiCachedNvDownloadReq));
12872
12873 pWDICtx->pfncRspCB = pEventData->pCBfnc;
12874 pWDICtx->pRspCBUserData = pEventData->pUserData;
12875 }
12876
12877 return WDI_SendNvBlobReq(pWDICtx,pEventData);
12878}
12879
12880/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012881 @brief Process Set Max Tx Power Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070012882 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012883
12884 @param pWDICtx: pointer to the WLAN DAL context
12885 pEventData: pointer to the event information structure
12886
Jeff Johnson295189b2012-06-20 16:38:30 -070012887 @see
12888 @return Result of the function call
12889*/
12890WDI_Status WDI_ProcessSetMaxTxPowerReq
12891(
12892 WDI_ControlBlockType* pWDICtx,
12893 WDI_EventInfoType* pEventData
12894)
12895{
12896 WDI_SetMaxTxPowerParamsType* pwdiSetMaxTxPowerParams = NULL;
12897 WDA_SetMaxTxPowerRspCb wdiSetMaxTxPowerRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070012898 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012899 wpt_uint16 usDataOffset = 0;
12900 wpt_uint16 usSendSize = 0;
12901 tSetMaxTxPwrReq halSetMaxTxPower;
12902 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12903
12904 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012905 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012906 -------------------------------------------------------------------------*/
12907 if (( NULL == pEventData ) ||
12908 ( NULL == pEventData->pEventData ) ||
12909 ( NULL == pEventData->pCBfnc ))
12910 {
12911 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012912 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012913 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012914 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012915 }
Jeff Johnsone7245742012-09-05 17:12:55 -070012916 pwdiSetMaxTxPowerParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070012917 (WDI_SetMaxTxPowerParamsType*)pEventData->pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070012918 wdiSetMaxTxPowerRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070012919 (WDA_SetMaxTxPowerRspCb)pEventData->pCBfnc;
12920
12921 /*-----------------------------------------------------------------------
12922 Get message buffer
12923 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012924if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_MAX_TX_POWER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012925 sizeof(halSetMaxTxPower.setMaxTxPwrParams),
12926 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070012927 ( usSendSize < (usDataOffset + sizeof(halSetMaxTxPower.setMaxTxPwrParams)
Jeff Johnson295189b2012-06-20 16:38:30 -070012928)))
12929 {
12930 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012931 "Unable to get Set Max Tx Power req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070012932 pEventData, pwdiSetMaxTxPowerParams, wdiSetMaxTxPowerRspCb);
12933 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012934 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012935 }
12936
12937 wpalMemoryCopy(halSetMaxTxPower.setMaxTxPwrParams.bssId,
12938 pwdiSetMaxTxPowerParams->wdiMaxTxPowerInfo.macBSSId,
12939 WDI_MAC_ADDR_LEN);
12940
12941 wpalMemoryCopy(halSetMaxTxPower.setMaxTxPwrParams.selfStaMacAddr,
12942 pwdiSetMaxTxPowerParams->wdiMaxTxPowerInfo.macSelfStaMacAddr,
12943 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070012944 halSetMaxTxPower.setMaxTxPwrParams.power =
Jeff Johnson295189b2012-06-20 16:38:30 -070012945 pwdiSetMaxTxPowerParams->wdiMaxTxPowerInfo.ucPower;
Jeff Johnsone7245742012-09-05 17:12:55 -070012946
12947 wpalMemoryCopy( pSendBuffer+usDataOffset,
12948 &halSetMaxTxPower.setMaxTxPwrParams,
12949 sizeof(halSetMaxTxPower.setMaxTxPwrParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070012950
12951 pWDICtx->wdiReqStatusCB = pwdiSetMaxTxPowerParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012952 pWDICtx->pReqStatusUserData = pwdiSetMaxTxPowerParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012953
12954 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012955 Send Del TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012956 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012957 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12958 wdiSetMaxTxPowerRspCb, pEventData->pUserData,
12959 WDI_SET_MAX_TX_POWER_RESP);
12960
Jeff Johnson295189b2012-06-20 16:38:30 -070012961}
12962
Arif Hussaina5ebce02013-08-09 15:09:58 -070012963/*
12964 @brief Process Set Max Tx Power Per Band Request function (called when Main
12965 FSM allows it)
12966
12967 @param pWDICtx: pointer to the WLAN DAL context
12968 pEventData: pointer to the event information structure
12969
12970 @see
12971 @return Result of the function call
12972*/
12973WDI_Status WDI_ProcessSetMaxTxPowerPerBandReq
12974(
12975 WDI_ControlBlockType* pWDICtx,
12976 WDI_EventInfoType* pEventData
12977)
12978{
12979 WDI_SetMaxTxPowerPerBandParamsType* pwdiSetMaxTxPowerPerBandParams = NULL;
12980 WDA_SetMaxTxPowerPerBandRspCb wdiSetMaxTxPowerPerBandRspCb;
12981 wpt_uint8* pSendBuffer = NULL;
12982 wpt_uint16 usDataOffset = 0;
12983 wpt_uint16 usSendSize = 0;
Arif Hussainf8f080c2014-04-03 09:48:36 -070012984 tpSetMaxTxPwrPerBandParams phalSetMxTxPwrPerBand = NULL;
Arif Hussaina5ebce02013-08-09 15:09:58 -070012985 WDI_Status rValue = WDI_STATUS_SUCCESS;
12986 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12987
12988 /*-------------------------------------------------------------------------
12989 Sanity check
12990 -------------------------------------------------------------------------*/
12991 if (( NULL == pEventData ) ||
12992 ( NULL == pEventData->pEventData ) ||
12993 ( NULL == pEventData->pCBfnc ))
12994 {
12995 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
12996 "%s: Invalid parameters", __func__);
12997 WDI_ASSERT(0);
12998 return WDI_STATUS_E_FAILURE;
12999 }
13000 pwdiSetMaxTxPowerPerBandParams = \
13001 (WDI_SetMaxTxPowerPerBandParamsType*)pEventData->pEventData;
13002
13003 wdiSetMaxTxPowerPerBandRspCb = \
13004 (WDA_SetMaxTxPowerPerBandRspCb)pEventData->pCBfnc;
13005
13006 /*-----------------------------------------------------------------------
13007 Get message buffer
13008 -----------------------------------------------------------------------*/
13009
13010 rValue = WDI_GetMessageBuffer(pWDICtx,
13011 WDI_SET_MAX_TX_POWER_PER_BAND_REQ,
13012 sizeof(tSetMaxTxPwrPerBandParams),
13013 &pSendBuffer, &usDataOffset, &usSendSize);
13014
13015 if ((WDI_STATUS_SUCCESS != rValue)|| (usSendSize <
13016 (usDataOffset + sizeof(tSetMaxTxPwrPerBandParams))))
13017 {
13018 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
13019 "Unable to get Set Max Tx Power Per Band req %p %p %p",
13020 pEventData, pwdiSetMaxTxPowerPerBandParams,
13021 wdiSetMaxTxPowerPerBandRspCb);
13022 WDI_ASSERT(0);
13023 return WDI_STATUS_E_FAILURE;
13024 }
13025
13026
Arif Hussainf8f080c2014-04-03 09:48:36 -070013027 phalSetMxTxPwrPerBand = (tpSetMaxTxPwrPerBandParams)(pSendBuffer + usDataOffset);
13028 phalSetMxTxPwrPerBand->bandInfo = \
Arif Hussaina5ebce02013-08-09 15:09:58 -070013029 pwdiSetMaxTxPowerPerBandParams->wdiMaxTxPowerPerBandInfo.bandInfo;
13030
Arif Hussainf8f080c2014-04-03 09:48:36 -070013031 phalSetMxTxPwrPerBand->power = \
Arif Hussaina5ebce02013-08-09 15:09:58 -070013032 pwdiSetMaxTxPowerPerBandParams->wdiMaxTxPowerPerBandInfo.ucPower;
13033
13034 pWDICtx->wdiReqStatusCB = pwdiSetMaxTxPowerPerBandParams->wdiReqStatusCB;
13035 pWDICtx->pReqStatusUserData = pwdiSetMaxTxPowerPerBandParams->pUserData;
13036
13037 /*-------------------------------------------------------------------------
13038 Send Set Max Tx Power Per Band Request to HAL
13039 -------------------------------------------------------------------------*/
13040 return WDI_SendMsg(pWDICtx, pSendBuffer, usSendSize,
13041 wdiSetMaxTxPowerPerBandRspCb, pEventData->pUserData,
13042 WDI_SET_MAX_TX_POWER_PER_BAND_RSP);
13043}
13044
schang86c22c42013-03-13 18:41:24 -070013045/**
13046 @brief Process Set Tx Power Request function (called when Main
13047 FSM allows it)
13048
13049 @param pWDICtx: pointer to the WLAN DAL context
13050 pEventData: pointer to the event information structure
13051
13052 @see
13053 @return Result of the function call
13054*/
13055WDI_Status WDI_ProcessSetTxPowerReq
13056(
13057 WDI_ControlBlockType* pWDICtx,
13058 WDI_EventInfoType* pEventData
13059)
13060{
13061 WDI_SetTxPowerParamsType* pwdiSetTxPowerParams = NULL;
13062 WDA_SetTxPowerRspCb wdiSetTxPowerRspCb;
13063 wpt_uint8* pSendBuffer = NULL;
13064 wpt_uint16 usDataOffset = 0;
13065 wpt_uint16 usSendSize = 0;
Leo Chang9a43db92013-03-25 17:39:58 -070013066 tSetTxPwrReqParams *halSetTxPower = NULL;
schang86c22c42013-03-13 18:41:24 -070013067 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13068
13069 /*-------------------------------------------------------------------------
13070 Sanity check
13071 -------------------------------------------------------------------------*/
13072 if (( NULL == pEventData ) ||
13073 ( NULL == pEventData->pEventData ) ||
13074 ( NULL == pEventData->pCBfnc ))
13075 {
13076 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
13077 "%s: Invalid parameters", __func__);
13078 WDI_ASSERT(0);
13079 return WDI_STATUS_E_FAILURE;
13080 }
13081
13082 pwdiSetTxPowerParams =
13083 (WDI_SetTxPowerParamsType*)pEventData->pEventData;
13084 wdiSetTxPowerRspCb =
13085 (WDA_SetTxPowerRspCb)pEventData->pCBfnc;
13086
13087 /*-----------------------------------------------------------------------
13088 Get message buffer
13089 -----------------------------------------------------------------------*/
13090 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_TX_POWER_REQ,
13091 sizeof(tSetTxPwrReqParams),
13092 &pSendBuffer, &usDataOffset, &usSendSize))||
13093 ( usSendSize < (usDataOffset + sizeof(tSetTxPwrReqParams)
13094 )))
13095 {
13096 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080013097 "Unable to get Set Max Tx Power req %p %p %p",
schang86c22c42013-03-13 18:41:24 -070013098 pEventData, pwdiSetTxPowerParams, wdiSetTxPowerRspCb);
13099 WDI_ASSERT(0);
13100 return WDI_STATUS_E_FAILURE;
13101 }
13102
Leo Chang9a43db92013-03-25 17:39:58 -070013103 halSetTxPower = (tSetTxPwrReqParams *)(pSendBuffer + usDataOffset);
13104 halSetTxPower->txPower = pwdiSetTxPowerParams->wdiTxPowerInfo.ucPower;
13105 halSetTxPower->bssIdx = pwdiSetTxPowerParams->wdiTxPowerInfo.bssIdx;
schang86c22c42013-03-13 18:41:24 -070013106
13107 pWDICtx->wdiReqStatusCB = pwdiSetTxPowerParams->wdiReqStatusCB;
13108 pWDICtx->pReqStatusUserData = pwdiSetTxPowerParams->pUserData;
13109
13110 /*-------------------------------------------------------------------------
13111 Send Set Tx Power Request to HAL
13112 -------------------------------------------------------------------------*/
13113 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13114 wdiSetTxPowerRspCb, pEventData->pUserData,
13115 WDI_SET_TX_POWER_RESP);
13116}
Jeff Johnson295189b2012-06-20 16:38:30 -070013117
13118/**
13119 @brief Process P2P Notice Of Absence Request function (called when Main FSM
13120 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013121
13122 @param pWDICtx: pointer to the WLAN DAL context
13123 pEventData: pointer to the event information structure
13124
Jeff Johnson295189b2012-06-20 16:38:30 -070013125 @see
13126 @return Result of the function call
13127*/
13128WDI_Status
13129WDI_ProcessP2PGONOAReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013130(
Jeff Johnson295189b2012-06-20 16:38:30 -070013131 WDI_ControlBlockType* pWDICtx,
13132 WDI_EventInfoType* pEventData
13133)
13134{
13135 WDI_SetP2PGONOAReqParamsType* pwdiP2PGONOAReqParams;
13136 WDI_SetP2PGONOAReqParamsRspCb wdiP2PGONOAReqRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070013137 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013138 wpt_uint16 usDataOffset = 0;
13139 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070013140 tSetP2PGONOAParams halSetP2PGONOAParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070013141 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13142
13143 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013144 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013145 -------------------------------------------------------------------------*/
13146 if (( NULL == pEventData ) ||
13147 ( NULL == pEventData->pEventData) ||
13148 ( NULL == pEventData->pCBfnc))
13149 {
13150 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013151 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013152 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013153 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013154 }
13155
Jeff Johnsone7245742012-09-05 17:12:55 -070013156 pwdiP2PGONOAReqParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070013157 (WDI_SetP2PGONOAReqParamsType*)pEventData->pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070013158 wdiP2PGONOAReqRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070013159 (WDI_SetP2PGONOAReqParamsRspCb)pEventData->pCBfnc;
13160 /*-----------------------------------------------------------------------
13161 Get message buffer
13162 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013163 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
13164 WDI_P2P_GO_NOTICE_OF_ABSENCE_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013165 sizeof(halSetP2PGONOAParams),
13166 &pSendBuffer, &usDataOffset, &usSendSize))||
13167 ( usSendSize < (usDataOffset + sizeof(halSetP2PGONOAParams) )))
13168 {
13169 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080013170 "Unable to get send buffer in set P2P GO NOA REQ %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070013171 pEventData, pwdiP2PGONOAReqParams, wdiP2PGONOAReqRspCb);
13172 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013173 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013174 }
13175
Jeff Johnsone7245742012-09-05 17:12:55 -070013176 halSetP2PGONOAParams.opp_ps =
Jeff Johnson295189b2012-06-20 16:38:30 -070013177 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.ucOpp_ps;
Jeff Johnsone7245742012-09-05 17:12:55 -070013178 halSetP2PGONOAParams.ctWindow =
Jeff Johnson295189b2012-06-20 16:38:30 -070013179 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.uCtWindow;
13180 halSetP2PGONOAParams.count = pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.ucCount;
Jeff Johnsone7245742012-09-05 17:12:55 -070013181 halSetP2PGONOAParams.duration =
Jeff Johnson295189b2012-06-20 16:38:30 -070013182 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.uDuration;
Jeff Johnsone7245742012-09-05 17:12:55 -070013183 halSetP2PGONOAParams.interval =
Jeff Johnson295189b2012-06-20 16:38:30 -070013184 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.uInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070013185 halSetP2PGONOAParams.single_noa_duration =
Jeff Johnson295189b2012-06-20 16:38:30 -070013186 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.uSingle_noa_duration;
Jeff Johnsone7245742012-09-05 17:12:55 -070013187 halSetP2PGONOAParams.psSelection =
Jeff Johnson295189b2012-06-20 16:38:30 -070013188 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.ucPsSelection;
13189
Jeff Johnsone7245742012-09-05 17:12:55 -070013190 wpalMemoryCopy( pSendBuffer+usDataOffset,
13191 &halSetP2PGONOAParams,
13192 sizeof(halSetP2PGONOAParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070013193
13194 pWDICtx->wdiReqStatusCB = pwdiP2PGONOAReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013195 pWDICtx->pReqStatusUserData = pwdiP2PGONOAReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013196
13197 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013198 Send Update Probe Resp Template Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013199 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013200 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13201 wdiP2PGONOAReqRspCb, pEventData->pUserData,
13202 WDI_P2P_GO_NOTICE_OF_ABSENCE_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013203}/*WDI_ProcessP2PGONOAReq*/
13204
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053013205#ifdef FEATURE_WLAN_TDLS
13206
13207/**
13208 @brief Process P2P Notice Of Absence Request function (called when Main FSM
13209 allows it)
13210
13211 @param pWDICtx: pointer to the WLAN DAL context
13212 pEventData: pointer to the event information structure
13213
13214 @see
13215 @return Result of the function call
13216*/
13217WDI_Status
13218WDI_ProcessTdlsLinkEstablishReq
13219(
13220 WDI_ControlBlockType* pWDICtx,
13221 WDI_EventInfoType* pEventData
13222)
13223{
13224 WDI_SetTDLSLinkEstablishReqParamsType* pwdiTDLSLinkEstablishReqParams;
13225 WDI_SetTDLSLinkEstablishReqParamsRspCb wdiTDLSLinkEstablishReqRspCb;
13226 wpt_uint8* pSendBuffer = NULL;
13227 wpt_uint16 usDataOffset = 0;
13228 wpt_uint16 usSendSize = 0;
13229
13230 tTDLSLinkEstablishedType halSetTDLSLinkEstablishParams;
13231 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13232
13233 /*-------------------------------------------------------------------------
13234 Sanity check
13235 -------------------------------------------------------------------------*/
13236 if (( NULL == pEventData ) ||
13237 ( NULL == pEventData->pEventData) ||
13238 ( NULL == pEventData->pCBfnc))
13239 {
13240 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13241 "%s: Invalid parameters", __func__);
13242 WDI_ASSERT(0);
13243 return WDI_STATUS_E_FAILURE;
13244 }
13245 pwdiTDLSLinkEstablishReqParams =
13246 (WDI_SetTDLSLinkEstablishReqParamsType*)pEventData->pEventData;
13247 wdiTDLSLinkEstablishReqRspCb =
13248 (WDI_SetTDLSLinkEstablishReqParamsRspCb)pEventData->pCBfnc;
13249
13250
13251 /*-----------------------------------------------------------------------
13252 Get message buffer
13253 -----------------------------------------------------------------------*/
13254 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
13255 WDI_TDLS_LINK_ESTABLISH_REQ,
13256 sizeof(halSetTDLSLinkEstablishParams),
13257 &pSendBuffer, &usDataOffset, &usSendSize))||
13258 ( usSendSize < (usDataOffset + sizeof(halSetTDLSLinkEstablishParams) )))
13259 {
13260 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080013261 "Unable to get send buffer in set P2P GO NOA REQ %p %p %p",
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053013262 pEventData, pwdiTDLSLinkEstablishReqParams, wdiTDLSLinkEstablishReqRspCb);
13263 WDI_ASSERT(0);
13264 return WDI_STATUS_E_FAILURE;
13265 }
13266
13267 halSetTDLSLinkEstablishParams.staIdx =
13268 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uStaIdx;
13269 halSetTDLSLinkEstablishParams.bIsResponder =
13270 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uIsResponder;
13271 halSetTDLSLinkEstablishParams.acVOUAPSDFlag =
13272 (pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uUapsdQueues & 0x08) >> 3;
13273 halSetTDLSLinkEstablishParams.acVIUAPSDFlag =
13274 (pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uUapsdQueues & 0x04) >> 2;
13275 halSetTDLSLinkEstablishParams.acBKUAPSDFlag =
13276 (pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uUapsdQueues & 0x02) >> 1;
13277 halSetTDLSLinkEstablishParams.acBEUAPSDFlag =
13278 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uUapsdQueues & 0x01;
13279 halSetTDLSLinkEstablishParams.aAck = 0;
13280 halSetTDLSLinkEstablishParams.maxServicePeriodLength = (pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uMaxSp & 0x03);
13281 halSetTDLSLinkEstablishParams.moreDataAck = 0;
13282 halSetTDLSLinkEstablishParams.TPUBufferStaSupport = pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uIsBufSta;
Naresh Jayaramc7cbd782014-02-04 17:38:23 +053013283 halSetTDLSLinkEstablishParams.tdlsOffChannelSupport =
13284 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uIsOffChannelSupported;
13285
13286 wpalMemoryCopy( halSetTDLSLinkEstablishParams.validChannels,
13287 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.validChannels,
13288 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.validChannelsLen);
13289 halSetTDLSLinkEstablishParams.validChannelsLen =
13290 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.validChannelsLen;
13291
13292 wpalMemoryCopy( halSetTDLSLinkEstablishParams.validOperClasses,
13293 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.validOperClasses,
13294 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.validOperClassesLen);
13295 halSetTDLSLinkEstablishParams.validOperClassesLen =
13296 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.validOperClassesLen;
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053013297
13298 wpalMemoryCopy( pSendBuffer+usDataOffset,
13299 &halSetTDLSLinkEstablishParams,
13300 sizeof(halSetTDLSLinkEstablishParams));
13301
13302 pWDICtx->wdiReqStatusCB = pwdiTDLSLinkEstablishReqParams->wdiReqStatusCB;
13303 pWDICtx->pReqStatusUserData = pwdiTDLSLinkEstablishReqParams->pUserData;
13304
13305 /*-------------------------------------------------------------------------
13306 Send Update Probe Resp Template Request to HAL
13307 -------------------------------------------------------------------------*/
13308 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13309 wdiTDLSLinkEstablishReqRspCb, pEventData->pUserData,
13310 WDI_TDLS_LINK_ESTABLISH_REQ_RESP);
13311 return 0;
13312}/*WDI_ProcessTdlsLinkEstablishReq*/
13313
13314
13315#endif
13316
Jeff Johnson295189b2012-06-20 16:38:30 -070013317
13318
13319/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013320 @brief Function to handle the ack from DXE once the power
Jeff Johnson295189b2012-06-20 16:38:30 -070013321 state is set.
Jeff Johnsone7245742012-09-05 17:12:55 -070013322 @param None
13323
13324 @see
13325 @return void
Jeff Johnson295189b2012-06-20 16:38:30 -070013326*/
13327void
13328WDI_SetPowerStateCb
13329(
13330 wpt_status status,
13331 unsigned int dxePhyAddr,
13332 void *pContext
13333)
13334{
13335 wpt_status wptStatus;
13336 WDI_ControlBlockType *pCB = NULL;
13337 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013338 /*
13339 * Trigger the event to bring the Enter BMPS req function to come
13340 * out of wait
Jeff Johnson295189b2012-06-20 16:38:30 -070013341*/
13342 if( NULL != pContext )
13343 {
Jeff Johnsone7245742012-09-05 17:12:55 -070013344 pCB = (WDI_ControlBlockType *)pContext;
Jeff Johnson295189b2012-06-20 16:38:30 -070013345 }
13346 else
13347 {
Jeff Johnsone7245742012-09-05 17:12:55 -070013348 //put an error msg
Jeff Johnson295189b2012-06-20 16:38:30 -070013349 pCB = &gWDICb;
13350 }
Mihir Shetea4306052014-03-25 00:02:54 +053013351
13352 if(eWLAN_PAL_STATUS_SUCCESS == status )
13353 {
13354 pCB->dxeRingsEmpty = eWLAN_PAL_TRUE;
13355 }
13356 else
13357 {
13358 pCB->dxeRingsEmpty = eWLAN_PAL_FALSE;
13359 }
Jeff Johnson295189b2012-06-20 16:38:30 -070013360 pCB->dxePhyAddr = dxePhyAddr;
13361 wptStatus = wpalEventSet(&pCB->setPowerStateEvent);
13362 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
13363 {
13364 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13365 "Failed to set an event");
13366
Jeff Johnsone7245742012-09-05 17:12:55 -070013367 WDI_ASSERT(0);
Jeff Johnson295189b2012-06-20 16:38:30 -070013368 }
13369 return;
13370}
13371
13372
13373/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013374 @brief Process Enter IMPS Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070013375 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013376
13377 @param pWDICtx: pointer to the WLAN DAL context
13378 pEventData: pointer to the event information structure
13379
Jeff Johnson295189b2012-06-20 16:38:30 -070013380 @see
13381 @return Result of the function call
13382*/
13383WDI_Status
13384WDI_ProcessEnterImpsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013385(
Jeff Johnson295189b2012-06-20 16:38:30 -070013386 WDI_ControlBlockType* pWDICtx,
13387 WDI_EventInfoType* pEventData
13388)
13389{
Jeff Johnson43971f52012-07-17 12:26:56 -070013390 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070013391 WDI_EnterImpsRspCb wdiEnterImpsRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013392 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013393 wpt_uint16 usDataOffset = 0;
13394 wpt_uint16 usSendSize = 0;
Mihir Shetea4306052014-03-25 00:02:54 +053013395 WDI_EnterImpsReqParamsType* pwdiEnterImpsReqParams = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013396 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13397
13398 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013399 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013400 -------------------------------------------------------------------------*/
Mihir Shetea4306052014-03-25 00:02:54 +053013401 if ((NULL == pEventData ) ||
13402 (NULL == (wdiEnterImpsRspCb = (WDI_EnterImpsRspCb)pEventData->pCBfnc)) ||
13403 (NULL == (pwdiEnterImpsReqParams =
13404 (WDI_EnterImpsReqParamsType*)pEventData->pEventData)))
Jeff Johnson295189b2012-06-20 16:38:30 -070013405 {
13406 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013407 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013408 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080013409 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070013410 }
13411
13412 /*-----------------------------------------------------------------------
13413 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013414 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013415 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013416 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ENTER_IMPS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013417 0,
13418 &pSendBuffer, &usDataOffset, &usSendSize))||
13419 ( usSendSize < (usDataOffset )))
13420 {
13421 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080013422 "Unable to get send buffer in Enter IMPS req %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070013423 pEventData, wdiEnterImpsRspCb);
13424 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080013425 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070013426 }
13427
13428 /* Reset the event to be not signalled */
Jeff Johnson43971f52012-07-17 12:26:56 -070013429 wptStatus = wpalEventReset(&pWDICtx->setPowerStateEvent);
13430 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070013431 {
13432 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13433 "WDI Init failed to reset an event");
13434
Jeff Johnsone7245742012-09-05 17:12:55 -070013435 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080013436 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -070013437 }
13438
13439 // notify DTS that we are entering IMPS
Ravali85acf6b2012-12-12 14:01:38 -080013440 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_IMPS, WDI_SetPowerStateCb);
13441 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus ) {
13442 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain9a5d5382013-11-17 22:05:35 -080013443 "WDTS_SetPowerState returned with status %d when trying to notify DTS that host is entering IMPS", wptStatus);
Ravali85acf6b2012-12-12 14:01:38 -080013444 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080013445 goto fail;
Ravali85acf6b2012-12-12 14:01:38 -080013446 }
Jeff Johnson295189b2012-06-20 16:38:30 -070013447
13448 /*
Jeff Johnsone7245742012-09-05 17:12:55 -070013449 * Wait for the event to be set once the ACK comes back from DXE
Jeff Johnson295189b2012-06-20 16:38:30 -070013450 */
Jeff Johnson43971f52012-07-17 12:26:56 -070013451 wptStatus = wpalEventWait(&pWDICtx->setPowerStateEvent,
13452 WDI_SET_POWER_STATE_TIMEOUT);
13453 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070013454 {
13455 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13456 "WDI Init failed to wait on an event");
13457
Jeff Johnsone7245742012-09-05 17:12:55 -070013458 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080013459 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -070013460 }
13461
Mihir Shetea4306052014-03-25 00:02:54 +053013462 if (pWDICtx->dxeRingsEmpty == eWLAN_PAL_FALSE)
13463 {
13464 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
13465 "%s: DXE Rings not empty, cannot enter IMPS",__func__);
13466
13467 goto fail;
13468 }
13469
13470 pWDICtx->wdiReqStatusCB = pwdiEnterImpsReqParams->wdiReqStatusCB;
13471 pWDICtx->pReqStatusUserData = pwdiEnterImpsReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013472 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013473 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013474 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013475 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13476 wdiEnterImpsRspCb, pEventData->pUserData, WDI_ENTER_IMPS_RESP);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080013477
13478fail:
13479 // Release the message buffer so we don't leak
13480 wpalMemoryFree(pSendBuffer);
13481
13482failRequest:
13483 //WDA should have failure check to avoid the memory leak
13484 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013485}/*WDI_ProcessEnterImpsReq*/
13486
13487/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013488 @brief Process Exit IMPS Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070013489 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013490
13491 @param pWDICtx: pointer to the WLAN DAL context
13492 pEventData: pointer to the event information structure
13493
Jeff Johnson295189b2012-06-20 16:38:30 -070013494 @see
13495 @return Result of the function call
13496*/
13497WDI_Status
13498WDI_ProcessExitImpsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013499(
Jeff Johnson295189b2012-06-20 16:38:30 -070013500 WDI_ControlBlockType* pWDICtx,
13501 WDI_EventInfoType* pEventData
13502)
13503{
13504 WDI_ExitImpsRspCb wdiExitImpsRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013505 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013506 wpt_uint16 usDataOffset = 0;
13507 wpt_uint16 usSendSize = 0;
13508 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13509
13510 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013511 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013512 -------------------------------------------------------------------------*/
13513 if (( NULL == pEventData ) ||
13514 ( NULL == (wdiExitImpsRspCb = (WDI_ExitImpsRspCb)pEventData->pCBfnc)))
13515 {
13516 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013517 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013518 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013519 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013520 }
13521
13522 /*-----------------------------------------------------------------------
13523 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013524 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013525 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013526 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_EXIT_IMPS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013527 0,
13528 &pSendBuffer, &usDataOffset, &usSendSize))||
13529 ( usSendSize < (usDataOffset )))
13530 {
13531 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080013532 "Unable to get send buffer in Exit IMPS req %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070013533 pEventData, wdiExitImpsRspCb);
13534 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013535 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013536 }
13537
13538 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013539 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013540 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013541 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13542 wdiExitImpsRspCb, pEventData->pUserData, WDI_EXIT_IMPS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013543}/*WDI_ProcessExitImpsReq*/
13544
13545/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013546 @brief Process Enter BMPS Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070013547 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013548
13549 @param pWDICtx: pointer to the WLAN DAL context
13550 pEventData: pointer to the event information structure
13551
Jeff Johnson295189b2012-06-20 16:38:30 -070013552 @see
13553 @return Result of the function call
13554*/
13555WDI_Status
13556WDI_ProcessEnterBmpsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013557(
Jeff Johnson295189b2012-06-20 16:38:30 -070013558 WDI_ControlBlockType* pWDICtx,
13559 WDI_EventInfoType* pEventData
13560)
13561{
13562 WDI_EnterBmpsReqParamsType* pwdiEnterBmpsReqParams = NULL;
13563 WDI_EnterBmpsRspCb wdiEnterBmpsRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013564 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013565 wpt_uint16 usDataOffset = 0;
13566 wpt_uint16 usSendSize = 0;
13567 tHalEnterBmpsReqParams enterBmpsReq;
Jeff Johnson43971f52012-07-17 12:26:56 -070013568 wpt_status wptStatus;
13569
Jeff Johnson295189b2012-06-20 16:38:30 -070013570 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13571
13572 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013573 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013574 -------------------------------------------------------------------------*/
13575 if (( NULL == pEventData ) ||
13576 ( NULL == (pwdiEnterBmpsReqParams = (WDI_EnterBmpsReqParamsType*)pEventData->pEventData)) ||
13577 ( NULL == (wdiEnterBmpsRspCb = (WDI_EnterBmpsRspCb)pEventData->pCBfnc)))
13578 {
13579 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013580 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013581 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080013582 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070013583 }
13584
13585 /*-----------------------------------------------------------------------
13586 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013587 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013588 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013589 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ENTER_BMPS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013590 sizeof(enterBmpsReq),
13591 &pSendBuffer, &usDataOffset, &usSendSize))||
13592 ( usSendSize < (usDataOffset + sizeof(enterBmpsReq) )))
13593 {
13594 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080013595 "Unable to get send buffer in Enter BMPS req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070013596 pEventData, pwdiEnterBmpsReqParams, wdiEnterBmpsRspCb);
13597 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080013598 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070013599 }
13600
13601 /* Reset the event to be not signalled */
Jeff Johnson43971f52012-07-17 12:26:56 -070013602 wptStatus = wpalEventReset(&pWDICtx->setPowerStateEvent);
13603 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070013604 {
13605 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13606 "WDI Init failed to reset an event");
13607
Jeff Johnsone7245742012-09-05 17:12:55 -070013608 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080013609 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -070013610 }
13611
13612 // notify DTS that we are entering BMPS
Ravali85acf6b2012-12-12 14:01:38 -080013613 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_BMPS, WDI_SetPowerStateCb);
13614 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
13615 {
13616 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain9a5d5382013-11-17 22:05:35 -080013617 "WDTS_SetPowerState returned with status %d when trying to notify DTS that we are entering BMPS", wptStatus);
Ravali85acf6b2012-12-12 14:01:38 -080013618 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080013619 goto fail;
Ravali85acf6b2012-12-12 14:01:38 -080013620 }
Jeff Johnson295189b2012-06-20 16:38:30 -070013621
13622/*
Jeff Johnsone7245742012-09-05 17:12:55 -070013623 * Wait for the event to be set once the ACK comes back from DXE
Jeff Johnson295189b2012-06-20 16:38:30 -070013624 */
Jeff Johnson43971f52012-07-17 12:26:56 -070013625 wptStatus = wpalEventWait(&pWDICtx->setPowerStateEvent,
13626 WDI_SET_POWER_STATE_TIMEOUT);
13627 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070013628 {
13629 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13630 "WDI Init failed to wait on an event");
13631
Jeff Johnsone7245742012-09-05 17:12:55 -070013632 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080013633 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -070013634 }
13635
13636 pWDICtx->bInBmps = eWLAN_PAL_TRUE;
13637
13638 enterBmpsReq.bssIdx = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.ucBssIdx;
13639 enterBmpsReq.tbtt = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.uTbtt;
13640 enterBmpsReq.dtimCount = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.ucDtimCount;
13641 enterBmpsReq.dtimPeriod = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.ucDtimPeriod;
13642
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -080013643 // For ESE and 11R Roaming
Jeff Johnson295189b2012-06-20 16:38:30 -070013644 enterBmpsReq.rssiFilterPeriod = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.rssiFilterPeriod;
13645 enterBmpsReq.numBeaconPerRssiAverage = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.numBeaconPerRssiAverage;
13646 enterBmpsReq.bRssiFilterEnable = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.bRssiFilterEnable;
13647
13648 wpalMemoryCopy( pSendBuffer+usDataOffset,
13649 &enterBmpsReq,
13650 sizeof(enterBmpsReq));
13651
13652 pWDICtx->wdiReqStatusCB = pwdiEnterBmpsReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013653 pWDICtx->pReqStatusUserData = pwdiEnterBmpsReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013654
13655 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013656 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013657 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013658 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13659 wdiEnterBmpsRspCb, pEventData->pUserData, WDI_ENTER_BMPS_RESP);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080013660
13661fail:
13662 // Release the message buffer so we don't leak
13663 wpalMemoryFree(pSendBuffer);
13664
13665failRequest:
13666 //WDA should have failure check to avoid the memory leak
13667 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013668}/*WDI_ProcessEnterBmpsReq*/
13669
13670/**
13671 @brief Process Exit BMPS Request function (called when Main FSM
13672 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013673
13674 @param pWDICtx: pointer to the WLAN DAL context
13675 pEventData: pointer to the event information structure
13676
Jeff Johnson295189b2012-06-20 16:38:30 -070013677 @see
13678 @return Result of the function call
13679*/
13680WDI_Status
13681WDI_ProcessExitBmpsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013682(
Jeff Johnson295189b2012-06-20 16:38:30 -070013683 WDI_ControlBlockType* pWDICtx,
13684 WDI_EventInfoType* pEventData
13685)
13686{
13687 WDI_ExitBmpsReqParamsType* pwdiExitBmpsReqParams = NULL;
13688 WDI_ExitBmpsRspCb wdiExitBmpsRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013689 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013690 wpt_uint16 usDataOffset = 0;
13691 wpt_uint16 usSendSize = 0;
13692 tHalExitBmpsReqParams exitBmpsReq;
13693 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13694
13695 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013696 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013697 -------------------------------------------------------------------------*/
13698 if (( NULL == pEventData ) ||
13699 ( NULL == (pwdiExitBmpsReqParams = (WDI_ExitBmpsReqParamsType*)pEventData->pEventData)) ||
13700 ( NULL == (wdiExitBmpsRspCb = (WDI_ExitBmpsRspCb)pEventData->pCBfnc)))
13701 {
13702 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013703 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013704 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013705 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013706 }
13707
13708 /*-----------------------------------------------------------------------
13709 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013710 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013711 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013712 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_EXIT_BMPS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013713 sizeof(exitBmpsReq),
13714 &pSendBuffer, &usDataOffset, &usSendSize))||
13715 ( usSendSize < (usDataOffset + sizeof(exitBmpsReq) )))
13716 {
13717 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080013718 "Unable to get send buffer in Exit BMPS req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070013719 pEventData, pwdiExitBmpsReqParams, wdiExitBmpsRspCb);
13720 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013721 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013722 }
13723 exitBmpsReq.sendDataNull = pwdiExitBmpsReqParams->wdiExitBmpsInfo.ucSendDataNull;
13724
Jeff Johnsone7245742012-09-05 17:12:55 -070013725 exitBmpsReq.bssIdx = pwdiExitBmpsReqParams->wdiExitBmpsInfo.bssIdx;
13726
Jeff Johnson295189b2012-06-20 16:38:30 -070013727 wpalMemoryCopy( pSendBuffer+usDataOffset,
13728 &exitBmpsReq,
13729 sizeof(exitBmpsReq));
13730
13731 pWDICtx->wdiReqStatusCB = pwdiExitBmpsReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013732 pWDICtx->pReqStatusUserData = pwdiExitBmpsReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013733
13734 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013735 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013736 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013737 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13738 wdiExitBmpsRspCb, pEventData->pUserData, WDI_EXIT_BMPS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013739}/*WDI_ProcessExitBmpsReq*/
13740
13741/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013742 @brief Process Enter UAPSD Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070013743 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013744
13745 @param pWDICtx: pointer to the WLAN DAL context
13746 pEventData: pointer to the event information structure
13747
Jeff Johnson295189b2012-06-20 16:38:30 -070013748 @see
13749 @return Result of the function call
13750*/
13751WDI_Status
13752WDI_ProcessEnterUapsdReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013753(
Jeff Johnson295189b2012-06-20 16:38:30 -070013754 WDI_ControlBlockType* pWDICtx,
13755 WDI_EventInfoType* pEventData
13756)
13757{
13758 WDI_EnterUapsdReqParamsType* pwdiEnterUapsdReqParams = NULL;
13759 WDI_EnterUapsdRspCb wdiEnterUapsdRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013760 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013761 wpt_uint16 usDataOffset = 0;
13762 wpt_uint16 usSendSize = 0;
13763 tUapsdReqParams enterUapsdReq;
13764 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13765
13766 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013767 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013768 -------------------------------------------------------------------------*/
13769 if (( NULL == pEventData ) ||
13770 ( NULL == (pwdiEnterUapsdReqParams = (WDI_EnterUapsdReqParamsType*)pEventData->pEventData)) ||
13771 ( NULL == (wdiEnterUapsdRspCb = (WDI_EnterUapsdRspCb)pEventData->pCBfnc)))
13772 {
13773 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013774 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013775 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013776 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013777 }
13778
13779 /*-----------------------------------------------------------------------
13780 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013781 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013782 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013783 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ENTER_UAPSD_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013784 sizeof(enterUapsdReq),
13785 &pSendBuffer, &usDataOffset, &usSendSize))||
13786 ( usSendSize < (usDataOffset + sizeof(enterUapsdReq) )))
13787 {
13788 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080013789 "Unable to get send buffer in Enter UAPSD req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070013790 pEventData, pwdiEnterUapsdReqParams, wdiEnterUapsdRspCb);
13791 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013792 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013793 }
13794
13795 enterUapsdReq.beDeliveryEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucBeDeliveryEnabled;
13796 enterUapsdReq.beTriggerEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucBeTriggerEnabled;
13797 enterUapsdReq.bkDeliveryEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucBkDeliveryEnabled;
13798 enterUapsdReq.bkTriggerEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucBkTriggerEnabled;
13799 enterUapsdReq.viDeliveryEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucViDeliveryEnabled;
13800 enterUapsdReq.viTriggerEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucViTriggerEnabled;
13801 enterUapsdReq.voDeliveryEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucVoDeliveryEnabled;
13802 enterUapsdReq.voTriggerEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucVoTriggerEnabled;
Jeff Johnsone7245742012-09-05 17:12:55 -070013803 enterUapsdReq.bssIdx = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.bssIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070013804
Jeff Johnsone7245742012-09-05 17:12:55 -070013805 wpalMemoryCopy( pSendBuffer+usDataOffset,
13806 &enterUapsdReq,
13807 sizeof(enterUapsdReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070013808
13809 pWDICtx->wdiReqStatusCB = pwdiEnterUapsdReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013810 pWDICtx->pReqStatusUserData = pwdiEnterUapsdReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013811
13812 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013813 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013814 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013815 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13816 wdiEnterUapsdRspCb, pEventData->pUserData, WDI_ENTER_UAPSD_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013817}/*WDI_ProcessEnterUapsdReq*/
13818
13819/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013820 @brief Process Exit UAPSD Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070013821 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013822
13823 @param pWDICtx: pointer to the WLAN DAL context
13824 pEventData: pointer to the event information structure
13825
Jeff Johnson295189b2012-06-20 16:38:30 -070013826 @see
13827 @return Result of the function call
13828*/
13829WDI_Status
13830WDI_ProcessExitUapsdReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013831(
Jeff Johnson295189b2012-06-20 16:38:30 -070013832 WDI_ControlBlockType* pWDICtx,
13833 WDI_EventInfoType* pEventData
13834)
13835{
13836 WDI_ExitUapsdRspCb wdiExitUapsdRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013837 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013838 wpt_uint16 usDataOffset = 0;
13839 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013840 WDI_ExitUapsdReqParamsType *pExitUapsdparams;
13841 wpt_uint8 bssIdx = 0;
13842
Jeff Johnson295189b2012-06-20 16:38:30 -070013843 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13844
13845 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013846 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013847 -------------------------------------------------------------------------*/
13848 if (( NULL == pEventData ) ||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013849 ( NULL == (pExitUapsdparams = (WDI_ExitUapsdReqParamsType *)pEventData->pEventData)) ||
Jeff Johnson295189b2012-06-20 16:38:30 -070013850 ( NULL == (wdiExitUapsdRspCb = (WDI_ExitUapsdRspCb)pEventData->pCBfnc)))
13851 {
13852 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013853 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013854 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013855 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013856 }
13857
13858 /*-----------------------------------------------------------------------
13859 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013860 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013861 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013862 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_EXIT_UAPSD_REQ,
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013863 sizeof(wpt_uint8),
Jeff Johnson295189b2012-06-20 16:38:30 -070013864 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013865 ( usSendSize < (usDataOffset + sizeof(wpt_uint8))))
Jeff Johnson295189b2012-06-20 16:38:30 -070013866 {
13867 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080013868 "Unable to get send buffer in Exit UAPSD req %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070013869 pEventData, wdiExitUapsdRspCb);
13870 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013871 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013872 }
13873
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013874 bssIdx = pExitUapsdparams->wdiExitUapsdInfo.bssIdx;
13875
13876 wpalMemoryCopy( pSendBuffer+usDataOffset,
13877 &bssIdx,
13878 sizeof(wpt_uint8));
13879
13880 pWDICtx->wdiReqStatusCB = pExitUapsdparams->wdiReqStatusCB;
13881 pWDICtx->pReqStatusUserData = pExitUapsdparams->pUserData;
13882
Jeff Johnson295189b2012-06-20 16:38:30 -070013883 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013884 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013885 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013886 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13887 wdiExitUapsdRspCb, pEventData->pUserData, WDI_EXIT_UAPSD_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013888}/*WDI_ProcessExitUapsdReq*/
13889
13890/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013891 @brief Process Set UAPSD params Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070013892 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013893
13894 @param pWDICtx: pointer to the WLAN DAL context
13895 pEventData: pointer to the event information structure
13896
Jeff Johnson295189b2012-06-20 16:38:30 -070013897 @see
13898 @return Result of the function call
13899*/
13900WDI_Status
13901WDI_ProcessSetUapsdAcParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013902(
Jeff Johnson295189b2012-06-20 16:38:30 -070013903 WDI_ControlBlockType* pWDICtx,
13904 WDI_EventInfoType* pEventData
13905)
13906{
13907 WDI_SetUapsdAcParamsReqParamsType* pwdiSetUapsdAcParams = NULL;
13908 WDI_SetUapsdAcParamsCb wdiSetUapsdAcParamsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013909 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013910 wpt_uint16 usDataOffset = 0;
13911 wpt_uint16 usSendSize = 0;
13912 tUapsdInfo uapsdAcParamsReq;
13913 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13914
13915 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013916 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013917 -------------------------------------------------------------------------*/
13918 if (( NULL == pEventData ) ||
13919 ( NULL == (pwdiSetUapsdAcParams = (WDI_SetUapsdAcParamsReqParamsType*)pEventData->pEventData)) ||
13920 ( NULL == (wdiSetUapsdAcParamsCb = (WDI_SetUapsdAcParamsCb)pEventData->pCBfnc)))
13921 {
13922 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013923 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013924 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013925 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013926 }
13927
13928 /*-----------------------------------------------------------------------
13929 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013930 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013931 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013932 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_UAPSD_PARAM_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013933 sizeof(uapsdAcParamsReq),
13934 &pSendBuffer, &usDataOffset, &usSendSize))||
13935 ( usSendSize < (usDataOffset + sizeof(uapsdAcParamsReq) )))
13936 {
13937 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080013938 "Unable to get send buffer in Set UAPSD params req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070013939 pEventData, pwdiSetUapsdAcParams, wdiSetUapsdAcParamsCb);
13940 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013941 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013942 }
13943
13944 uapsdAcParamsReq.ac = pwdiSetUapsdAcParams->wdiUapsdInfo.ucAc;
13945 uapsdAcParamsReq.staidx = pwdiSetUapsdAcParams->wdiUapsdInfo.ucSTAIdx;
13946 uapsdAcParamsReq.up = pwdiSetUapsdAcParams->wdiUapsdInfo.ucUp;
13947 uapsdAcParamsReq.delayInterval = pwdiSetUapsdAcParams->wdiUapsdInfo.uDelayInterval;
13948 uapsdAcParamsReq.srvInterval = pwdiSetUapsdAcParams->wdiUapsdInfo.uSrvInterval;
13949 uapsdAcParamsReq.susInterval = pwdiSetUapsdAcParams->wdiUapsdInfo.uSusInterval;
13950
Jeff Johnsone7245742012-09-05 17:12:55 -070013951 wpalMemoryCopy( pSendBuffer+usDataOffset,
13952 &uapsdAcParamsReq,
13953 sizeof(uapsdAcParamsReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070013954
13955 pWDICtx->wdiReqStatusCB = pwdiSetUapsdAcParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013956 pWDICtx->pReqStatusUserData = pwdiSetUapsdAcParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013957
13958 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013959 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013960 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013961 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13962 wdiSetUapsdAcParamsCb, pEventData->pUserData, WDI_SET_UAPSD_PARAM_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013963}/*WDI_ProcessSetUapsdAcParamsReq*/
13964
13965/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013966 @brief Process update UAPSD params Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070013967 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013968
13969 @param pWDICtx: pointer to the WLAN DAL context
13970 pEventData: pointer to the event information structure
13971
Jeff Johnson295189b2012-06-20 16:38:30 -070013972 @see
13973 @return Result of the function call
13974*/
13975WDI_Status
13976WDI_ProcessUpdateUapsdParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013977(
Jeff Johnson295189b2012-06-20 16:38:30 -070013978 WDI_ControlBlockType* pWDICtx,
13979 WDI_EventInfoType* pEventData
13980)
13981{
13982 WDI_UpdateUapsdReqParamsType* pwdiUpdateUapsdReqParams = NULL;
13983 WDI_UpdateUapsdParamsCb wdiUpdateUapsdParamsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013984 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013985 wpt_uint16 usDataOffset = 0;
13986 wpt_uint16 usSendSize = 0;
13987 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13988
13989 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013990 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013991 -------------------------------------------------------------------------*/
13992 if (( NULL == pEventData ) ||
13993 ( NULL == (pwdiUpdateUapsdReqParams = (WDI_UpdateUapsdReqParamsType*)pEventData->pEventData)) ||
13994 ( NULL == (wdiUpdateUapsdParamsCb = (WDI_UpdateUapsdParamsCb)pEventData->pCBfnc)))
13995 {
13996 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013997 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013998 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013999 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014000 }
14001
14002 /*-----------------------------------------------------------------------
14003 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014004 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014005 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014006 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_UAPSD_PARAM_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014007 sizeof(pwdiUpdateUapsdReqParams->wdiUpdateUapsdInfo),
14008 &pSendBuffer, &usDataOffset, &usSendSize))||
14009 ( usSendSize < (usDataOffset + sizeof(pwdiUpdateUapsdReqParams->wdiUpdateUapsdInfo) )))
14010 {
14011 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014012 "Unable to get send buffer in Update UAPSD params req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014013 pEventData, pwdiUpdateUapsdReqParams, wdiUpdateUapsdParamsCb);
14014 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014015 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014016 }
14017
Jeff Johnsone7245742012-09-05 17:12:55 -070014018 wpalMemoryCopy( pSendBuffer+usDataOffset,
14019 &pwdiUpdateUapsdReqParams->wdiUpdateUapsdInfo,
14020 sizeof(pwdiUpdateUapsdReqParams->wdiUpdateUapsdInfo));
Jeff Johnson295189b2012-06-20 16:38:30 -070014021
14022 pWDICtx->wdiReqStatusCB = pwdiUpdateUapsdReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014023 pWDICtx->pReqStatusUserData = pwdiUpdateUapsdReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014024
14025 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014026 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014027 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014028 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14029 wdiUpdateUapsdParamsCb, pEventData->pUserData, WDI_UPDATE_UAPSD_PARAM_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070014030}/*WDI_ProcessUpdateUapsdParamsReq*/
14031
14032/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014033 @brief Process Configure RXP filter Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070014034 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014035
14036 @param pWDICtx: pointer to the WLAN DAL context
14037 pEventData: pointer to the event information structure
14038
Jeff Johnson295189b2012-06-20 16:38:30 -070014039 @see
14040 @return Result of the function call
14041*/
14042WDI_Status
14043WDI_ProcessConfigureRxpFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014044(
Jeff Johnson295189b2012-06-20 16:38:30 -070014045 WDI_ControlBlockType* pWDICtx,
14046 WDI_EventInfoType* pEventData
14047)
14048{
14049 WDI_ConfigureRxpFilterReqParamsType* pwdiRxpFilterParams = NULL;
14050 WDI_ConfigureRxpFilterCb wdiConfigureRxpFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014051 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014052 wpt_uint16 usDataOffset = 0;
14053 wpt_uint16 usSendSize = 0;
14054 tHalConfigureRxpFilterReqParams halRxpFilterParams;
14055
14056 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14057
14058 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014059 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014060 -------------------------------------------------------------------------*/
14061 if (( NULL == pEventData ) ||
14062 ( NULL == (pwdiRxpFilterParams = (WDI_ConfigureRxpFilterReqParamsType*)pEventData->pEventData)) ||
14063 ( NULL == (wdiConfigureRxpFilterCb = (WDI_ConfigureRxpFilterCb)pEventData->pCBfnc)))
14064 {
14065 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014066 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014067 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014068 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014069 }
14070
14071 /*-----------------------------------------------------------------------
14072 Get message buffer
14073 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014074 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_CONFIGURE_RXP_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014075 sizeof(halRxpFilterParams),
14076 &pSendBuffer, &usDataOffset, &usSendSize))||
14077 ( usSendSize < (usDataOffset + sizeof(halRxpFilterParams) )))
14078 {
14079 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014080 "Unable to get send buffer in Set UAPSD params req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014081 pEventData, pwdiRxpFilterParams, wdiConfigureRxpFilterCb);
14082 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014083 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014084 }
14085
Jeff Johnsone7245742012-09-05 17:12:55 -070014086 halRxpFilterParams.setMcstBcstFilterSetting =
Jeff Johnson295189b2012-06-20 16:38:30 -070014087 pwdiRxpFilterParams->wdiRxpFilterParam.ucSetMcstBcstFilterSetting;
Jeff Johnsone7245742012-09-05 17:12:55 -070014088 halRxpFilterParams.setMcstBcstFilter =
Jeff Johnson295189b2012-06-20 16:38:30 -070014089 pwdiRxpFilterParams->wdiRxpFilterParam.ucSetMcstBcstFilter;
14090
Jeff Johnsone7245742012-09-05 17:12:55 -070014091 wpalMemoryCopy( pSendBuffer+usDataOffset,
14092 &halRxpFilterParams,
14093 sizeof(halRxpFilterParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070014094
14095 pWDICtx->wdiReqStatusCB = pwdiRxpFilterParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014096 pWDICtx->pReqStatusUserData = pwdiRxpFilterParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014097
14098 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014099 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014100 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014101 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14102 wdiConfigureRxpFilterCb, pEventData->pUserData, WDI_CONFIGURE_RXP_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070014103}/*WDI_ProcessConfigureRxpFilterReq*/
14104
14105/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014106 @brief Process set beacon filter Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070014107 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014108
14109 @param pWDICtx: pointer to the WLAN DAL context
14110 pEventData: pointer to the event information structure
14111
Jeff Johnson295189b2012-06-20 16:38:30 -070014112 @see
14113 @return Result of the function call
14114*/
14115WDI_Status
14116WDI_ProcessSetBeaconFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014117(
Jeff Johnson295189b2012-06-20 16:38:30 -070014118 WDI_ControlBlockType* pWDICtx,
14119 WDI_EventInfoType* pEventData
14120)
14121{
14122 WDI_BeaconFilterReqParamsType* pwdiBeaconFilterParams = NULL;
14123 WDI_SetBeaconFilterCb wdiBeaconFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014124 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014125 wpt_uint16 usDataOffset = 0;
14126 wpt_uint16 usSendSize = 0;
14127 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14128
14129 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014130 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014131 -------------------------------------------------------------------------*/
14132 if (( NULL == pEventData ) ||
14133 ( NULL == (pwdiBeaconFilterParams = (WDI_BeaconFilterReqParamsType*)pEventData->pEventData)) ||
14134 ( NULL == (wdiBeaconFilterCb = (WDI_SetBeaconFilterCb)pEventData->pCBfnc)))
14135 {
14136 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014137 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014138 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014139 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014140 }
14141
14142 /*-----------------------------------------------------------------------
14143 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014144 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014145 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014146 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_BEACON_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014147 sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo) + pwdiBeaconFilterParams->wdiBeaconFilterInfo.usIeNum * sizeof(tBeaconFilterIe),
14148 &pSendBuffer, &usDataOffset, &usSendSize))||
14149 ( usSendSize < (usDataOffset + sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo) )))
14150 {
14151 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014152 "Unable to get send buffer in Set beacon filter req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014153 pEventData, pwdiBeaconFilterParams, wdiBeaconFilterCb);
14154 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014155 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014156 }
14157
Jeff Johnsone7245742012-09-05 17:12:55 -070014158 wpalMemoryCopy( pSendBuffer+usDataOffset,
14159 &pwdiBeaconFilterParams->wdiBeaconFilterInfo,
14160 sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo));
14161 wpalMemoryCopy( pSendBuffer+usDataOffset+sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo),
14162 &pwdiBeaconFilterParams->aFilters[0],
14163 pwdiBeaconFilterParams->wdiBeaconFilterInfo.usIeNum * sizeof(tBeaconFilterIe));
Jeff Johnson295189b2012-06-20 16:38:30 -070014164
14165 pWDICtx->wdiReqStatusCB = pwdiBeaconFilterParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014166 pWDICtx->pReqStatusUserData = pwdiBeaconFilterParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014167
14168 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014169 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014170 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014171 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14172 wdiBeaconFilterCb, pEventData->pUserData, WDI_SET_BEACON_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070014173}/*WDI_ProcessSetBeaconFilterReq*/
14174
14175/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014176 @brief Process remove beacon filter Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070014177 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014178
14179 @param pWDICtx: pointer to the WLAN DAL context
14180 pEventData: pointer to the event information structure
14181
Jeff Johnson295189b2012-06-20 16:38:30 -070014182 @see
14183 @return Result of the function call
14184*/
14185WDI_Status
14186WDI_ProcessRemBeaconFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014187(
Jeff Johnson295189b2012-06-20 16:38:30 -070014188 WDI_ControlBlockType* pWDICtx,
14189 WDI_EventInfoType* pEventData
14190)
14191{
14192 WDI_RemBeaconFilterReqParamsType* pwdiBeaconFilterParams = NULL;
14193 WDI_RemBeaconFilterCb wdiBeaconFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014194 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014195 wpt_uint16 usDataOffset = 0;
14196 wpt_uint16 usSendSize = 0;
14197 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14198
14199 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014200 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014201 -------------------------------------------------------------------------*/
14202 if (( NULL == pEventData ) ||
14203 ( NULL == (pwdiBeaconFilterParams = (WDI_RemBeaconFilterReqParamsType*)pEventData->pEventData)) ||
14204 ( NULL == (wdiBeaconFilterCb = (WDI_RemBeaconFilterCb)pEventData->pCBfnc)))
14205 {
14206 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014207 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014208 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014209 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014210 }
14211
14212 /*-----------------------------------------------------------------------
14213 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014214 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014215 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014216 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_REM_BEACON_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014217 sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo),
14218 &pSendBuffer, &usDataOffset, &usSendSize))||
14219 ( usSendSize < (usDataOffset + sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo) )))
14220 {
14221 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014222 "Unable to get send buffer in remove beacon filter req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014223 pEventData, pwdiBeaconFilterParams, wdiBeaconFilterCb);
14224 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014225 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014226 }
14227
Jeff Johnsone7245742012-09-05 17:12:55 -070014228 wpalMemoryCopy( pSendBuffer+usDataOffset,
14229 &pwdiBeaconFilterParams->wdiBeaconFilterInfo,
14230 sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo));
Jeff Johnson295189b2012-06-20 16:38:30 -070014231
14232 pWDICtx->wdiReqStatusCB = pwdiBeaconFilterParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014233 pWDICtx->pReqStatusUserData = pwdiBeaconFilterParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014234
14235 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014236 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014237 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014238 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14239 wdiBeaconFilterCb, pEventData->pUserData, WDI_REM_BEACON_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070014240}
14241
14242/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014243 @brief Process set RSSI thresholds Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070014244 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014245
14246 @param pWDICtx: pointer to the WLAN DAL context
14247 pEventData: pointer to the event information structure
14248
Jeff Johnson295189b2012-06-20 16:38:30 -070014249 @see
14250 @return Result of the function call
14251*/
14252WDI_Status
14253WDI_ProcessSetRSSIThresholdsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014254(
Jeff Johnson295189b2012-06-20 16:38:30 -070014255 WDI_ControlBlockType* pWDICtx,
14256 WDI_EventInfoType* pEventData
14257)
14258{
14259 WDI_SetRSSIThresholdsReqParamsType* pwdiRSSIThresholdsParams = NULL;
14260 WDI_SetRSSIThresholdsCb wdiRSSIThresholdsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014261 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014262 wpt_uint16 usDataOffset = 0;
14263 wpt_uint16 usSendSize = 0;
14264 tHalRSSIThresholds rssiThresholdsReq;
14265 WDI_Status ret_status = 0;
14266 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14267
14268 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014269 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014270 -------------------------------------------------------------------------*/
14271 if (( NULL == pEventData ) ||
14272 ( NULL == (pwdiRSSIThresholdsParams = (WDI_SetRSSIThresholdsReqParamsType*)pEventData->pEventData)) ||
14273 ( NULL == (wdiRSSIThresholdsCb = (WDI_SetRSSIThresholdsCb)pEventData->pCBfnc)))
14274 {
14275 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014276 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014277 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014278 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014279 }
14280
14281 /*-----------------------------------------------------------------------
14282 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014283 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014284 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014285 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_RSSI_THRESHOLDS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014286 sizeof(rssiThresholdsReq),
14287 &pSendBuffer, &usDataOffset, &usSendSize))||
14288 ( usSendSize < (usDataOffset + sizeof(rssiThresholdsReq) )))
14289 {
14290 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014291 "Unable to get send buffer in remove beacon filter req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014292 pEventData, pwdiRSSIThresholdsParams, wdiRSSIThresholdsCb);
14293 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014294 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014295 }
14296
Jeff Johnsone7245742012-09-05 17:12:55 -070014297 rssiThresholdsReq.bReserved10 =
Jeff Johnson295189b2012-06-20 16:38:30 -070014298 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bReserved10;
Jeff Johnsone7245742012-09-05 17:12:55 -070014299 rssiThresholdsReq.bRssiThres1NegNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070014300 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres1NegNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070014301 rssiThresholdsReq.bRssiThres1PosNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070014302 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres1PosNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070014303 rssiThresholdsReq.bRssiThres2NegNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070014304 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres2NegNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070014305 rssiThresholdsReq.bRssiThres2PosNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070014306 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres2PosNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070014307 rssiThresholdsReq.bRssiThres3NegNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070014308 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres3NegNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070014309 rssiThresholdsReq.bRssiThres3PosNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070014310 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres3PosNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070014311 rssiThresholdsReq.ucRssiThreshold1 =
Jeff Johnson295189b2012-06-20 16:38:30 -070014312 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.ucRssiThreshold1;
Jeff Johnsone7245742012-09-05 17:12:55 -070014313 rssiThresholdsReq.ucRssiThreshold2 =
Jeff Johnson295189b2012-06-20 16:38:30 -070014314 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.ucRssiThreshold2;
Jeff Johnsone7245742012-09-05 17:12:55 -070014315 rssiThresholdsReq.ucRssiThreshold3 =
Jeff Johnson295189b2012-06-20 16:38:30 -070014316 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.ucRssiThreshold3;
14317
Jeff Johnsone7245742012-09-05 17:12:55 -070014318 wpalMemoryCopy( pSendBuffer+usDataOffset,
14319 &rssiThresholdsReq,
14320 sizeof(rssiThresholdsReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070014321
14322 pWDICtx->wdiReqStatusCB = pwdiRSSIThresholdsParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014323 pWDICtx->pReqStatusUserData = pwdiRSSIThresholdsParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014324
14325 /*-------------------------------------------------------------------------
14326 Send Set threshold req to HAL
14327 -------------------------------------------------------------------------*/
14328 if ((ret_status = WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14329 wdiRSSIThresholdsCb, pEventData->pUserData, WDI_SET_RSSI_THRESHOLDS_RESP)) == WDI_STATUS_SUCCESS)
14330 {
14331 // When we are in idle state WDI_STARTED_ST and we receive indication for threshold
14332 // req. Then as a result of processing the threshold cross ind, we trigger
14333 // a Set threshold req, then we need to indicate to WDI that it needs to
14334 // go to busy state as a result of the indication as we sent a req in the
14335 // same WDI context.
14336 // Hence expected state transition is to busy.
14337 pWDICtx->ucExpectedStateTransition = WDI_BUSY_ST;
14338 }
14339
14340 return ret_status;
14341}
14342
14343/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014344 @brief Process set RSSI thresholds Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070014345 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014346
14347 @param pWDICtx: pointer to the WLAN DAL context
14348 pEventData: pointer to the event information structure
14349
Jeff Johnson295189b2012-06-20 16:38:30 -070014350 @see
14351 @return Result of the function call
14352*/
14353WDI_Status
14354WDI_ProcessHostOffloadReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014355(
Jeff Johnson295189b2012-06-20 16:38:30 -070014356 WDI_ControlBlockType* pWDICtx,
14357 WDI_EventInfoType* pEventData
14358)
14359{
14360 WDI_HostOffloadReqParamsType* pwdiHostOffloadParams = NULL;
14361 WDI_HostOffloadCb wdiHostOffloadCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014362 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014363 wpt_uint16 usDataOffset = 0;
14364 wpt_uint16 usSendSize = 0;
14365 tHalHostOffloadReq hostOffloadParams;
14366 tHalNSOffloadParams nsOffloadParams;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014367 wpt_uint8 ucCurrentBSSSesIdx = 0;
14368 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014369
14370 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14371
14372 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014373 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014374 -------------------------------------------------------------------------*/
14375 if (( NULL == pEventData ) ||
14376 ( NULL == (pwdiHostOffloadParams = (WDI_HostOffloadReqParamsType*)pEventData->pEventData)) ||
14377 ( NULL == (wdiHostOffloadCb = (WDI_HostOffloadCb)pEventData->pCBfnc)))
14378 {
14379 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014380 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014381 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014382 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070014383 }
14384
14385 /*-----------------------------------------------------------------------
14386 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014387 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014388 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014389 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_HOST_OFFLOAD_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014390 sizeof(hostOffloadParams)+sizeof(nsOffloadParams),
14391 &pSendBuffer, &usDataOffset, &usSendSize))||
14392 ( usSendSize < (usDataOffset + sizeof(hostOffloadParams) + sizeof(nsOffloadParams) )))
14393 {
14394 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014395 "Unable to get send buffer in host offload req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014396 pEventData, pwdiHostOffloadParams, wdiHostOffloadCb);
14397 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014398 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070014399 }
14400
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014401 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
14402 pwdiHostOffloadParams->wdiHostOffloadInfo.bssId,
14403 &pBSSSes);
14404 if ( NULL == pBSSSes )
14405 {
14406 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Gopichand Nakkalac6c91902013-05-29 18:53:35 +053014407 " %s : Association for this BSSID does not exist " MAC_ADDRESS_STR,
14408 __func__, MAC_ADDR_ARRAY(pwdiHostOffloadParams->wdiHostOffloadInfo.bssId));
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014409 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014410 }
14411
Jeff Johnson295189b2012-06-20 16:38:30 -070014412 hostOffloadParams.offloadType = pwdiHostOffloadParams->wdiHostOffloadInfo.ucOffloadType;
14413 hostOffloadParams.enableOrDisable = pwdiHostOffloadParams->wdiHostOffloadInfo.ucEnableOrDisable;
Jeff Johnsone7245742012-09-05 17:12:55 -070014414
Jeff Johnson295189b2012-06-20 16:38:30 -070014415 if( HAL_IPV4_ARP_REPLY_OFFLOAD == hostOffloadParams.offloadType )
14416 {
14417 // ARP Offload
14418 wpalMemoryCopy(hostOffloadParams.params.hostIpv4Addr,
14419 pwdiHostOffloadParams->wdiHostOffloadInfo.params.aHostIpv4Addr,
14420 4);
14421 }
14422 else
14423 {
14424 // NS Offload
14425 wpalMemoryCopy(hostOffloadParams.params.hostIpv6Addr,
14426 pwdiHostOffloadParams->wdiHostOffloadInfo.params.aHostIpv6Addr,
14427 16);
14428
14429#ifdef WLAN_NS_OFFLOAD
14430 // copy pwdiHostOffloadParams->wdiNsOffloadParams into nsOffloadParams
14431 wpalMemoryCopy(nsOffloadParams.srcIPv6Addr,
14432 pwdiHostOffloadParams->wdiNsOffloadParams.srcIPv6Addr,
14433 16);
14434 wpalMemoryCopy(nsOffloadParams.selfIPv6Addr,
14435 pwdiHostOffloadParams->wdiNsOffloadParams.selfIPv6Addr,
14436 16);
14437 wpalMemoryCopy(nsOffloadParams.targetIPv6Addr1,
14438 pwdiHostOffloadParams->wdiNsOffloadParams.targetIPv6Addr1,
14439 16);
14440 wpalMemoryCopy(nsOffloadParams.targetIPv6Addr2,
14441 pwdiHostOffloadParams->wdiNsOffloadParams.targetIPv6Addr2,
14442 16);
14443 wpalMemoryCopy(nsOffloadParams.selfMacAddr,
14444 pwdiHostOffloadParams->wdiNsOffloadParams.selfMacAddr,
14445 6);
Gopichand Nakkala746a9452013-06-11 12:45:54 +053014446 nsOffloadParams.srcIPv6AddrValid =
14447 pwdiHostOffloadParams->wdiNsOffloadParams.srcIPv6AddrValid;
14448
14449 nsOffloadParams.targetIPv6Addr1Valid =
14450 pwdiHostOffloadParams->wdiNsOffloadParams.targetIPv6Addr1Valid;
14451
14452 nsOffloadParams.targetIPv6Addr2Valid =
14453 pwdiHostOffloadParams->wdiNsOffloadParams.targetIPv6Addr2Valid;
14454
14455 nsOffloadParams.slotIndex =
14456 pwdiHostOffloadParams->wdiNsOffloadParams.slotIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070014457
Jeff Johnson295189b2012-06-20 16:38:30 -070014458#endif // WLAN_NS_OFFLOAD
14459 }
14460
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014461 nsOffloadParams.bssIdx = pBSSSes->ucBSSIdx;
14462
Jeff Johnson295189b2012-06-20 16:38:30 -070014463 // copy hostOffloadParams into pSendBuffer
14464 wpalMemoryCopy( pSendBuffer+usDataOffset,
14465 &hostOffloadParams,
14466 sizeof(hostOffloadParams));
14467
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014468 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION) )
Jeff Johnson295189b2012-06-20 16:38:30 -070014469 {
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014470 // copy nsOffloadParams into pSendBuffer
14471 wpalMemoryCopy( pSendBuffer+usDataOffset+sizeof(hostOffloadParams),
Jeff Johnson295189b2012-06-20 16:38:30 -070014472 &nsOffloadParams,
14473 sizeof(nsOffloadParams));
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014474 }
14475 else
14476 {
14477#ifdef WLAN_NS_OFFLOAD
14478 if( HAL_IPV6_NS_OFFLOAD == hostOffloadParams.offloadType )
14479 {
14480 // copy nsOffloadParams into pSendBuffer
14481 wpalMemoryCopy( pSendBuffer+usDataOffset+sizeof(hostOffloadParams),
14482 &nsOffloadParams,
14483 sizeof(nsOffloadParams));
14484 }
14485#endif
14486 }
Jeff Johnson295189b2012-06-20 16:38:30 -070014487
14488 pWDICtx->wdiReqStatusCB = pwdiHostOffloadParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014489 pWDICtx->pReqStatusUserData = pwdiHostOffloadParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014490
14491 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014492 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014493 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014494 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14495 wdiHostOffloadCb, pEventData->pUserData, WDI_HOST_OFFLOAD_RESP);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014496
14497fail:
14498 // Release the message buffer so we don't leak
14499 wpalMemoryFree(pSendBuffer);
14500
14501failRequest:
14502 //WDA should have failure check to avoid the memory leak
14503 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014504}/*WDI_ProcessHostOffloadReq*/
14505
14506/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014507 @brief Process Keep Alive Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070014508 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014509
14510 @param pWDICtx: pointer to the WLAN DAL context
14511 pEventData: pointer to the event information structure
14512
Jeff Johnson295189b2012-06-20 16:38:30 -070014513 @see
14514 @return Result of the function call
14515*/
14516WDI_Status
14517WDI_ProcessKeepAliveReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014518(
Jeff Johnson295189b2012-06-20 16:38:30 -070014519 WDI_ControlBlockType* pWDICtx,
14520 WDI_EventInfoType* pEventData
14521)
14522{
14523 WDI_KeepAliveReqParamsType* pwdiKeepAliveParams = NULL;
14524 WDI_KeepAliveCb wdiKeepAliveCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014525 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014526 wpt_uint16 usDataOffset = 0;
14527 wpt_uint16 usSendSize = 0;
14528 tHalKeepAliveReq keepAliveReq;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014529 wpt_uint8 ucCurrentBSSSesIdx = 0;
14530 WDI_BSSSessionType* pBSSSes = NULL;
14531
Jeff Johnson295189b2012-06-20 16:38:30 -070014532 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14533
14534 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014535 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014536 -------------------------------------------------------------------------*/
14537 if (( NULL == pEventData ) ||
14538 ( NULL == (pwdiKeepAliveParams = (WDI_KeepAliveReqParamsType*)pEventData->pEventData)) ||
14539 ( NULL == (wdiKeepAliveCb = (WDI_KeepAliveCb)pEventData->pCBfnc)))
14540 {
14541 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
14542 "Invalid parameters in Keep Alive req");
14543 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014544 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070014545 }
14546
14547 /*-----------------------------------------------------------------------
14548 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014549 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014550 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014551 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_KEEP_ALIVE_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014552 sizeof(keepAliveReq),
14553 &pSendBuffer, &usDataOffset, &usSendSize))||
14554 ( usSendSize < (usDataOffset + sizeof(keepAliveReq) )))
14555 {
14556 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014557 "Unable to get send buffer in keep alive req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014558 pEventData, pwdiKeepAliveParams, wdiKeepAliveCb);
14559 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014560 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070014561 }
14562
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014563 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
14564 pwdiKeepAliveParams->wdiKeepAliveInfo.bssId,
14565 &pBSSSes);
14566 if ( NULL == pBSSSes )
14567 {
14568 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014569 " %s : Association for this BSSID does not exist",__func__);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014570 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014571 }
14572
Jeff Johnson295189b2012-06-20 16:38:30 -070014573 keepAliveReq.packetType = pwdiKeepAliveParams->wdiKeepAliveInfo.ucPacketType;
14574 keepAliveReq.timePeriod = pwdiKeepAliveParams->wdiKeepAliveInfo.ucTimePeriod;
14575
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014576 keepAliveReq.bssIdx = pBSSSes->ucBSSIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070014577
Jeff Johnson295189b2012-06-20 16:38:30 -070014578 if(pwdiKeepAliveParams->wdiKeepAliveInfo.ucPacketType == 2)
14579 {
14580 wpalMemoryCopy(keepAliveReq.hostIpv4Addr,
14581 pwdiKeepAliveParams->wdiKeepAliveInfo.aHostIpv4Addr,
14582 HAL_IPV4_ADDR_LEN);
14583 wpalMemoryCopy(keepAliveReq.destIpv4Addr,
14584 pwdiKeepAliveParams->wdiKeepAliveInfo.aDestIpv4Addr,
Jeff Johnsone7245742012-09-05 17:12:55 -070014585 HAL_IPV4_ADDR_LEN);
Jeff Johnson295189b2012-06-20 16:38:30 -070014586 wpalMemoryCopy(keepAliveReq.destMacAddr,
14587 pwdiKeepAliveParams->wdiKeepAliveInfo.aDestMacAddr,
14588 HAL_MAC_ADDR_LEN);
14589 }
Jeff Johnsone7245742012-09-05 17:12:55 -070014590
14591 wpalMemoryCopy( pSendBuffer+usDataOffset,
14592 &keepAliveReq,
14593 sizeof(keepAliveReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070014594
14595 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnson5b414462013-11-22 16:44:20 -080014596 "Process keep alive req %zu", sizeof(keepAliveReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070014597
14598 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnson5b414462013-11-22 16:44:20 -080014599 "Process keep alive req time period %d",
14600 keepAliveReq.timePeriod);
Jeff Johnson295189b2012-06-20 16:38:30 -070014601
14602 pWDICtx->wdiReqStatusCB = pwdiKeepAliveParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014603 pWDICtx->pReqStatusUserData = pwdiKeepAliveParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014604
14605 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
14606 "Sending keep alive req to HAL");
14607
14608 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014609 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014610 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014611 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14612 wdiKeepAliveCb, pEventData->pUserData, WDI_KEEP_ALIVE_RESP);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014613
14614fail:
14615 // Release the message buffer so we don't leak
14616 wpalMemoryFree(pSendBuffer);
14617
14618failRequest:
14619 //WDA should have failure check to avoid the memory leak
14620 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014621}/*WDI_ProcessKeepAliveReq*/
14622
14623
14624/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014625 @brief Process Wowl add bc ptrn Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070014626 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014627
14628 @param pWDICtx: pointer to the WLAN DAL context
14629 pEventData: pointer to the event information structure
14630
Jeff Johnson295189b2012-06-20 16:38:30 -070014631 @see
14632 @return Result of the function call
14633*/
14634WDI_Status
14635WDI_ProcessWowlAddBcPtrnReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014636(
Jeff Johnson295189b2012-06-20 16:38:30 -070014637 WDI_ControlBlockType* pWDICtx,
14638 WDI_EventInfoType* pEventData
14639)
14640{
14641 WDI_WowlAddBcPtrnReqParamsType* pwdiWowlAddBcPtrnParams = NULL;
14642 WDI_WowlAddBcPtrnCb wdiWowlAddBcPtrnCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014643 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014644 wpt_uint16 usDataOffset = 0;
14645 wpt_uint16 usSendSize = 0;
14646 tHalWowlAddBcastPtrn wowlAddBcPtrnReq;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014647 wpt_uint8 ucCurrentBSSSesIdx = 0;
14648 WDI_BSSSessionType* pBSSSes = NULL;
14649
Jeff Johnson295189b2012-06-20 16:38:30 -070014650 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14651
14652 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014653 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014654 -------------------------------------------------------------------------*/
14655 if (( NULL == pEventData ) ||
14656 ( NULL == (pwdiWowlAddBcPtrnParams = (WDI_WowlAddBcPtrnReqParamsType*)pEventData->pEventData)) ||
14657 ( NULL == (wdiWowlAddBcPtrnCb = (WDI_WowlAddBcPtrnCb)pEventData->pCBfnc)))
14658 {
14659 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014660 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014661 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014662 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070014663 }
14664
14665 /*-----------------------------------------------------------------------
14666 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014667 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014668 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014669 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_WOWL_ADD_BC_PTRN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014670 sizeof(wowlAddBcPtrnReq),
14671 &pSendBuffer, &usDataOffset, &usSendSize))||
14672 ( usSendSize < (usDataOffset + sizeof(wowlAddBcPtrnReq) )))
14673 {
14674 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014675 "Unable to get send buffer in Wowl add bc ptrn req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014676 pEventData, pwdiWowlAddBcPtrnParams, wdiWowlAddBcPtrnCb);
14677 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014678 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070014679 }
14680
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014681 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
14682 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.bssId,
14683 &pBSSSes);
14684 if ( NULL == pBSSSes )
14685 {
14686 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014687 " %s : Association for this BSSID does not exist",__func__);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014688 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014689 }
14690
Jeff Johnsone7245742012-09-05 17:12:55 -070014691 wowlAddBcPtrnReq.ucPatternId =
Jeff Johnson295189b2012-06-20 16:38:30 -070014692 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternId;
Jeff Johnsone7245742012-09-05 17:12:55 -070014693 wowlAddBcPtrnReq.ucPatternByteOffset =
Jeff Johnson295189b2012-06-20 16:38:30 -070014694 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternByteOffset;
Jeff Johnsone7245742012-09-05 17:12:55 -070014695 wowlAddBcPtrnReq.ucPatternMaskSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070014696 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMaskSize;
Jeff Johnsone7245742012-09-05 17:12:55 -070014697 wowlAddBcPtrnReq.ucPatternSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070014698 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternSize;
14699
14700 if (pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternSize <= HAL_WOWL_BCAST_PATTERN_MAX_SIZE)
14701 {
14702 wpalMemoryCopy(wowlAddBcPtrnReq.ucPattern,
14703 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPattern,
14704 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternSize);
14705 wpalMemoryCopy(wowlAddBcPtrnReq.ucPatternMask,
14706 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMask,
14707 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMaskSize);
14708 }
14709 else
14710 {
14711 wpalMemoryCopy(wowlAddBcPtrnReq.ucPattern,
14712 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPattern,
14713 HAL_WOWL_BCAST_PATTERN_MAX_SIZE);
14714 wpalMemoryCopy(wowlAddBcPtrnReq.ucPatternMask,
14715 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMask,
14716 HAL_WOWL_BCAST_PATTERN_MAX_SIZE);
14717
14718 wpalMemoryCopy(wowlAddBcPtrnReq.ucPattern,
14719 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPattern,
14720 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMaskSize - HAL_WOWL_BCAST_PATTERN_MAX_SIZE);
14721 wpalMemoryCopy(wowlAddBcPtrnReq.ucPatternMask,
14722 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMask,
14723 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMaskSize - HAL_WOWL_BCAST_PATTERN_MAX_SIZE);
14724 }
14725
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014726 wowlAddBcPtrnReq.bssIdx = pBSSSes->ucBSSIdx;
14727
Jeff Johnson295189b2012-06-20 16:38:30 -070014728 wpalMemoryCopy( pSendBuffer+usDataOffset,
14729 &wowlAddBcPtrnReq,
14730 sizeof(wowlAddBcPtrnReq));
14731
14732 pWDICtx->wdiReqStatusCB = pwdiWowlAddBcPtrnParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014733 pWDICtx->pReqStatusUserData = pwdiWowlAddBcPtrnParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014734
14735 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014736 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014737 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014738 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14739 wdiWowlAddBcPtrnCb, pEventData->pUserData, WDI_WOWL_ADD_BC_PTRN_RESP);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014740fail:
14741 // Release the message buffer so we don't leak
14742 wpalMemoryFree(pSendBuffer);
14743
14744failRequest:
14745 //WDA should have failure check to avoid the memory leak
14746 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014747}/*WDI_ProcessWowlAddBcPtrnReq*/
14748
14749/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014750 @brief Process Wowl delete bc ptrn Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070014751 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014752
14753 @param pWDICtx: pointer to the WLAN DAL context
14754 pEventData: pointer to the event information structure
14755
Jeff Johnson295189b2012-06-20 16:38:30 -070014756 @see
14757 @return Result of the function call
14758*/
14759WDI_Status
14760WDI_ProcessWowlDelBcPtrnReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014761(
Jeff Johnson295189b2012-06-20 16:38:30 -070014762 WDI_ControlBlockType* pWDICtx,
14763 WDI_EventInfoType* pEventData
14764)
14765{
14766 WDI_WowlDelBcPtrnReqParamsType* pwdiWowlDelBcPtrnParams = NULL;
14767 WDI_WowlDelBcPtrnCb wdiWowlDelBcPtrnCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014768 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014769 wpt_uint16 usDataOffset = 0;
14770 wpt_uint16 usSendSize = 0;
14771 tHalWowlDelBcastPtrn wowlDelBcPtrnReq;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014772 wpt_uint8 ucCurrentBSSSesIdx = 0;
14773 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014774 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14775
14776 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014777 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014778 -------------------------------------------------------------------------*/
14779 if (( NULL == pEventData ) ||
14780 ( NULL == (pwdiWowlDelBcPtrnParams = (WDI_WowlDelBcPtrnReqParamsType*)pEventData->pEventData)) ||
14781 ( NULL == (wdiWowlDelBcPtrnCb = (WDI_WowlDelBcPtrnCb)pEventData->pCBfnc)))
14782 {
14783 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014784 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014785 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014786 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070014787 }
14788
14789 /*-----------------------------------------------------------------------
14790 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014791 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014792 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014793 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_WOWL_DEL_BC_PTRN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014794 sizeof(wowlDelBcPtrnReq),
14795 &pSendBuffer, &usDataOffset, &usSendSize))||
14796 ( usSendSize < (usDataOffset + sizeof(wowlDelBcPtrnReq) )))
14797 {
14798 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014799 "Unable to get send buffer in Wowl del bc ptrn req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014800 pEventData, pwdiWowlDelBcPtrnParams, wdiWowlDelBcPtrnCb);
14801 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014802 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070014803 }
14804
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014805 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
14806 pwdiWowlDelBcPtrnParams->wdiWowlDelBcPtrnInfo.bssId,
14807 &pBSSSes);
14808 if ( NULL == pBSSSes )
14809 {
14810 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014811 " %s : Association for this BSSID does not exist",__func__);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014812 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014813 }
14814
Jeff Johnsone7245742012-09-05 17:12:55 -070014815 wowlDelBcPtrnReq.ucPatternId =
Jeff Johnson295189b2012-06-20 16:38:30 -070014816 pwdiWowlDelBcPtrnParams->wdiWowlDelBcPtrnInfo.ucPatternId;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014817
14818 wowlDelBcPtrnReq.bssIdx = pBSSSes->ucBSSIdx;
14819
Jeff Johnsone7245742012-09-05 17:12:55 -070014820 wpalMemoryCopy( pSendBuffer+usDataOffset,
14821 &wowlDelBcPtrnReq,
14822 sizeof(wowlDelBcPtrnReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070014823
14824 pWDICtx->wdiReqStatusCB = pwdiWowlDelBcPtrnParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014825 pWDICtx->pReqStatusUserData = pwdiWowlDelBcPtrnParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014826
14827 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014828 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014829 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014830 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14831 wdiWowlDelBcPtrnCb, pEventData->pUserData, WDI_WOWL_DEL_BC_PTRN_RESP);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014832
14833fail:
14834 // Release the message buffer so we don't leak
14835 wpalMemoryFree(pSendBuffer);
14836
14837failRequest:
14838 //WDA should have failure check to avoid the memory leak
14839 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014840}/*WDI_ProcessWowlDelBcPtrnReq*/
14841
14842/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014843 @brief Process Wowl enter Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070014844 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014845
14846 @param pWDICtx: pointer to the WLAN DAL context
14847 pEventData: pointer to the event information structure
14848
Jeff Johnson295189b2012-06-20 16:38:30 -070014849 @see
14850 @return Result of the function call
14851*/
14852WDI_Status
14853WDI_ProcessWowlEnterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014854(
Jeff Johnson295189b2012-06-20 16:38:30 -070014855 WDI_ControlBlockType* pWDICtx,
14856 WDI_EventInfoType* pEventData
14857)
14858{
14859 WDI_WowlEnterReqParamsType* pwdiWowlEnterParams = NULL;
14860 WDI_WowlEnterReqCb wdiWowlEnterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014861 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014862 wpt_uint16 usDataOffset = 0;
14863 wpt_uint16 usSendSize = 0;
14864 tHalWowlEnterParams wowlEnterReq;
14865 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14866
14867 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014868 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014869 -------------------------------------------------------------------------*/
14870 if (( NULL == pEventData ) ||
14871 ( NULL == (pwdiWowlEnterParams = (WDI_WowlEnterReqParamsType*)pEventData->pEventData)) ||
14872 ( NULL == (wdiWowlEnterCb = (WDI_WowlEnterReqCb)pEventData->pCBfnc)))
14873 {
14874 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014875 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014876 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014877 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014878 }
14879
14880 /*-----------------------------------------------------------------------
14881 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014882 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014883 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014884 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_WOWL_ENTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014885 sizeof(wowlEnterReq),
14886 &pSendBuffer, &usDataOffset, &usSendSize))||
14887 ( usSendSize < (usDataOffset + sizeof(wowlEnterReq) )))
14888 {
14889 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014890 "Unable to get send buffer in Wowl enter req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014891 pEventData, pwdiWowlEnterParams, wdiWowlEnterCb);
14892 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014893 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014894 }
14895
Kumar Anandaca924e2013-07-22 14:35:34 -070014896 wpalMemoryZero(&wowlEnterReq, sizeof(tHalWowlEnterParams));
14897
Jeff Johnsone7245742012-09-05 17:12:55 -070014898 wowlEnterReq.ucMagicPktEnable =
Jeff Johnson295189b2012-06-20 16:38:30 -070014899 pwdiWowlEnterParams->wdiWowlEnterInfo.ucMagicPktEnable;
Jeff Johnsone7245742012-09-05 17:12:55 -070014900 wowlEnterReq.ucPatternFilteringEnable =
Jeff Johnson295189b2012-06-20 16:38:30 -070014901 pwdiWowlEnterParams->wdiWowlEnterInfo.ucPatternFilteringEnable;
Jeff Johnsone7245742012-09-05 17:12:55 -070014902 wowlEnterReq.ucUcastPatternFilteringEnable =
Jeff Johnson295189b2012-06-20 16:38:30 -070014903 pwdiWowlEnterParams->wdiWowlEnterInfo.ucUcastPatternFilteringEnable;
Jeff Johnsone7245742012-09-05 17:12:55 -070014904 wowlEnterReq.ucWowChnlSwitchRcv =
Jeff Johnson295189b2012-06-20 16:38:30 -070014905 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowChnlSwitchRcv;
Jeff Johnsone7245742012-09-05 17:12:55 -070014906 wowlEnterReq.ucWowDeauthRcv =
Jeff Johnson295189b2012-06-20 16:38:30 -070014907 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowDeauthRcv;
Jeff Johnsone7245742012-09-05 17:12:55 -070014908 wowlEnterReq.ucWowDisassocRcv =
Jeff Johnson295189b2012-06-20 16:38:30 -070014909 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowDisassocRcv;
Jeff Johnsone7245742012-09-05 17:12:55 -070014910 wowlEnterReq.ucWowMaxMissedBeacons =
Jeff Johnson295189b2012-06-20 16:38:30 -070014911 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowMaxMissedBeacons;
Jeff Johnsone7245742012-09-05 17:12:55 -070014912 wowlEnterReq.ucWowMaxSleepUsec =
Jeff Johnson295189b2012-06-20 16:38:30 -070014913 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowMaxSleepUsec;
14914
14915#ifdef WLAN_WAKEUP_EVENTS
14916 wowlEnterReq.ucWoWEAPIDRequestEnable =
14917 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWoWEAPIDRequestEnable;
14918
14919 wowlEnterReq.ucWoWEAPOL4WayEnable =
14920 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWoWEAPOL4WayEnable;
14921
14922 wowlEnterReq.ucWowNetScanOffloadMatch =
14923 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowNetScanOffloadMatch;
14924
14925 wowlEnterReq.ucWowGTKRekeyError =
14926 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowGTKRekeyError;
14927
14928 wowlEnterReq.ucWoWBSSConnLoss =
14929 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWoWBSSConnLoss;
14930#endif // WLAN_WAKEUP_EVENTS
14931
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014932 wowlEnterReq.bssIdx = pwdiWowlEnterParams->wdiWowlEnterInfo.bssIdx;
14933
Jeff Johnson295189b2012-06-20 16:38:30 -070014934 wpalMemoryCopy(wowlEnterReq.magicPtrn,
14935 pwdiWowlEnterParams->wdiWowlEnterInfo.magicPtrn,
14936 sizeof(tSirMacAddr));
14937
Jeff Johnsone7245742012-09-05 17:12:55 -070014938 wpalMemoryCopy( pSendBuffer+usDataOffset,
14939 &wowlEnterReq,
14940 sizeof(wowlEnterReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070014941
14942 pWDICtx->wdiReqStatusCB = pwdiWowlEnterParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014943 pWDICtx->pReqStatusUserData = pwdiWowlEnterParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014944
14945 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014946 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014947 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014948 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14949 wdiWowlEnterCb, pEventData->pUserData, WDI_WOWL_ENTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070014950}/*WDI_ProcessWowlEnterReq*/
14951
14952/**
14953 @brief Process Wowl exit Request function (called when Main FSM
14954 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014955
14956 @param pWDICtx: pointer to the WLAN DAL context
14957 pEventData: pointer to the event information structure
14958
Jeff Johnson295189b2012-06-20 16:38:30 -070014959 @see
14960 @return Result of the function call
14961*/
14962WDI_Status
14963WDI_ProcessWowlExitReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014964(
Jeff Johnson295189b2012-06-20 16:38:30 -070014965 WDI_ControlBlockType* pWDICtx,
14966 WDI_EventInfoType* pEventData
14967)
14968{
14969 WDI_WowlExitReqCb wdiWowlExitCb = NULL;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014970 WDI_WowlExitReqParamsType* pwdiWowlExitParams = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014971 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014972 wpt_uint16 usDataOffset = 0;
14973 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014974 tHalWowlExitParams wowlExitparams;
Jeff Johnson295189b2012-06-20 16:38:30 -070014975 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14976
14977 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014978 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014979 -------------------------------------------------------------------------*/
14980 if (( NULL == pEventData ) ||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014981 ( NULL == (pwdiWowlExitParams = (WDI_WowlExitReqParamsType *)pEventData->pEventData)) ||
Jeff Johnson295189b2012-06-20 16:38:30 -070014982 ( NULL == (wdiWowlExitCb = (WDI_WowlExitReqCb)pEventData->pCBfnc)))
14983 {
14984 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014985 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014986 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014987 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014988 }
14989
14990 /*-----------------------------------------------------------------------
14991 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014992 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014993 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014994 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_WOWL_EXIT_REQ,
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014995 sizeof(wowlExitparams),
Jeff Johnson295189b2012-06-20 16:38:30 -070014996 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014997 ( usSendSize < (usDataOffset + sizeof(wowlExitparams))))
Jeff Johnson295189b2012-06-20 16:38:30 -070014998 {
14999 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080015000 "Unable to get send buffer in Wowl Exit req %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070015001 pEventData, wdiWowlExitCb);
15002 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015003 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015004 }
15005
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015006 wowlExitparams.bssIdx = pwdiWowlExitParams->wdiWowlExitInfo.bssIdx;
15007
15008 wpalMemoryCopy( pSendBuffer+usDataOffset,
15009 &wowlExitparams,
15010 sizeof(wowlExitparams));
Jeff Johnson295189b2012-06-20 16:38:30 -070015011 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015012 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070015013 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015014 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
15015 wdiWowlExitCb, pEventData->pUserData, WDI_WOWL_EXIT_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070015016}/*WDI_ProcessWowlExitReq*/
15017
15018/**
15019 @brief Process Configure Apps Cpu Wakeup State Request function
15020 (called when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070015021
15022 @param pWDICtx: pointer to the WLAN DAL context
15023 pEventData: pointer to the event information structure
15024
Jeff Johnson295189b2012-06-20 16:38:30 -070015025 @see
15026 @return Result of the function call
15027*/
15028WDI_Status
15029WDI_ProcessConfigureAppsCpuWakeupStateReq
Jeff Johnsone7245742012-09-05 17:12:55 -070015030(
Jeff Johnson295189b2012-06-20 16:38:30 -070015031 WDI_ControlBlockType* pWDICtx,
15032 WDI_EventInfoType* pEventData
15033)
15034{
15035 WDI_ConfigureAppsCpuWakeupStateReqParamsType* pwdiAppsCpuWakeupStateParams = NULL;
15036 WDI_ConfigureAppsCpuWakeupStateCb wdiConfigureAppsCpuWakeupStateCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070015037 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070015038 wpt_uint16 usDataOffset = 0;
15039 wpt_uint16 usSendSize = 0;
15040 tHalConfigureAppsCpuWakeupStateReqParams halCfgAppsCpuWakeupStateReqParams;
15041 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15042
15043 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015044 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015045 -------------------------------------------------------------------------*/
15046 if (( NULL == pEventData ) ||
15047 ( NULL == (pwdiAppsCpuWakeupStateParams = (WDI_ConfigureAppsCpuWakeupStateReqParamsType*)pEventData->pEventData)) ||
15048 ( NULL == (wdiConfigureAppsCpuWakeupStateCb = (WDI_ConfigureAppsCpuWakeupStateCb)pEventData->pCBfnc)))
15049 {
15050 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015051 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015052 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015053 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015054 }
15055
15056 /*-----------------------------------------------------------------------
15057 Get message buffer
15058 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015059 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070015060 sizeof(halCfgAppsCpuWakeupStateReqParams),
15061 &pSendBuffer, &usDataOffset, &usSendSize))||
15062 ( usSendSize < (usDataOffset + sizeof(pwdiAppsCpuWakeupStateParams->bIsAppsAwake) )))
15063 {
15064 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080015065 "Unable to get send buffer in Apps CPU Wakeup State req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070015066 pEventData, pwdiAppsCpuWakeupStateParams, wdiConfigureAppsCpuWakeupStateCb);
15067 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015068 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015069 }
15070
Jeff Johnsone7245742012-09-05 17:12:55 -070015071 halCfgAppsCpuWakeupStateReqParams.isAppsCpuAwake =
Jeff Johnson295189b2012-06-20 16:38:30 -070015072 pwdiAppsCpuWakeupStateParams->bIsAppsAwake;
15073
Jeff Johnsone7245742012-09-05 17:12:55 -070015074 wpalMemoryCopy( pSendBuffer+usDataOffset,
15075 &halCfgAppsCpuWakeupStateReqParams,
15076 sizeof(halCfgAppsCpuWakeupStateReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070015077
15078 pWDICtx->wdiReqStatusCB = pwdiAppsCpuWakeupStateParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070015079 pWDICtx->pReqStatusUserData = pwdiAppsCpuWakeupStateParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070015080
15081 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015082 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070015083 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015084 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
15085 wdiConfigureAppsCpuWakeupStateCb, pEventData->pUserData,
15086 WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070015087}/*WDI_ProcessConfigureAppsCpuWakeupStateReq*/
15088
15089#ifdef WLAN_FEATURE_VOWIFI_11R
15090/**
15091 @brief Process Aggregated Add TSpec Request function (called when Main FSM
15092 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070015093
15094 @param pWDICtx: pointer to the WLAN DAL context
15095 pEventData: pointer to the event information structure
15096
Jeff Johnson295189b2012-06-20 16:38:30 -070015097 @see
15098 @return Result of the function call
15099*/
15100WDI_Status
15101WDI_ProcessAggrAddTSpecReq
Jeff Johnsone7245742012-09-05 17:12:55 -070015102(
Jeff Johnson295189b2012-06-20 16:38:30 -070015103 WDI_ControlBlockType* pWDICtx,
15104 WDI_EventInfoType* pEventData
15105)
15106{
15107 WDI_AggrAddTSReqParamsType* pwdiAggrAddTSParams;
15108 WDI_AggrAddTsRspCb wdiAggrAddTSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070015109 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070015110 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070015111 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070015112 wpt_uint16 usDataOffset = 0;
15113 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070015114 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015115 wpt_macAddr macBSSID;
15116 tAggrAddTsReq halAggrAddTsReq;
15117 int i;
15118 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15119
15120 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015121 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015122 -------------------------------------------------------------------------*/
15123 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
15124 ( NULL == pEventData->pCBfnc ))
15125 {
15126 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015127 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015128 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015129 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015130 }
15131 wpalMemoryFill( &halAggrAddTsReq, sizeof(tAggrAddTsReq), 0 );
15132 pwdiAggrAddTSParams = (WDI_AggrAddTSReqParamsType*)pEventData->pEventData;
15133 wdiAggrAddTSRspCb = (WDI_AggrAddTsRspCb)pEventData->pCBfnc;
15134 /*-------------------------------------------------------------------------
15135 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070015136 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070015137 -------------------------------------------------------------------------*/
15138 wpalMutexAcquire(&pWDICtx->wptMutex);
15139
15140 /*------------------------------------------------------------------------
15141 Find the BSS for which the request is made and identify WDI session
15142 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015143 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
15144 pwdiAggrAddTSParams->wdiAggrTsInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070015145 &macBSSID))
15146 {
15147 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080015148 "This station does not exist in the WDI Station Table %d",
15149 pwdiAggrAddTSParams->wdiAggrTsInfo.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070015150 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070015151 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015152 }
15153
Jeff Johnsone7245742012-09-05 17:12:55 -070015154 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
15155 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070015156 {
Jeff Johnsone7245742012-09-05 17:12:55 -070015157 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15158 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
15159 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070015160
15161 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070015162 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070015163 }
Jeff Johnsone7245742012-09-05 17:12:55 -070015164
Jeff Johnson295189b2012-06-20 16:38:30 -070015165 /*------------------------------------------------------------------------
15166 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070015167 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070015168 ------------------------------------------------------------------------*/
15169 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
15170 {
Jeff Johnsone7245742012-09-05 17:12:55 -070015171 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
15172 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
15173 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070015174
Jeff Johnsone7245742012-09-05 17:12:55 -070015175 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070015176 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070015177 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070015178 }
15179
15180 wpalMutexRelease(&pWDICtx->wptMutex);
15181 /*-----------------------------------------------------------------------
15182 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070015183 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070015184 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015185 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_AGGR_ADD_TS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070015186 sizeof(tAggrAddTsParams),
15187 &pSendBuffer, &usDataOffset, &usSendSize))||
15188 ( usSendSize < (usDataOffset + sizeof(tAggrAddTsParams) )))
15189 {
15190 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080015191 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070015192 pEventData, pwdiAggrAddTSParams, wdiAggrAddTSRspCb);
15193 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015194 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015195 }
15196
Jeff Johnsone7245742012-09-05 17:12:55 -070015197 halAggrAddTsReq.aggrAddTsParam.staIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070015198 pwdiAggrAddTSParams->wdiAggrTsInfo.ucSTAIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015199 halAggrAddTsReq.aggrAddTsParam.tspecIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070015200 pwdiAggrAddTSParams->wdiAggrTsInfo.ucTspecIdx;
15201
15202 for( i = 0; i < WLAN_HAL_MAX_AC; i++ )
15203 {
Jeff Johnsone7245742012-09-05 17:12:55 -070015204 halAggrAddTsReq.aggrAddTsParam.tspec[i].type =
Jeff Johnson295189b2012-06-20 16:38:30 -070015205 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].ucType;
Jeff Johnsone7245742012-09-05 17:12:55 -070015206 halAggrAddTsReq.aggrAddTsParam.tspec[i].length =
Jeff Johnson295189b2012-06-20 16:38:30 -070015207 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].ucLength;
Jeff Johnsone7245742012-09-05 17:12:55 -070015208 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.ackPolicy =
Jeff Johnson295189b2012-06-20 16:38:30 -070015209 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
15210 ackPolicy;
Jeff Johnsone7245742012-09-05 17:12:55 -070015211 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.accessPolicy =
Jeff Johnson295189b2012-06-20 16:38:30 -070015212 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
15213 accessPolicy;
Jeff Johnsone7245742012-09-05 17:12:55 -070015214 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.userPrio =
Jeff Johnson295189b2012-06-20 16:38:30 -070015215 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
15216 userPrio;
Jeff Johnsone7245742012-09-05 17:12:55 -070015217 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.psb =
Jeff Johnson295189b2012-06-20 16:38:30 -070015218 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
15219 psb;
Jeff Johnsone7245742012-09-05 17:12:55 -070015220 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.aggregation =
Jeff Johnson295189b2012-06-20 16:38:30 -070015221 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
15222 aggregation;
Jeff Johnsone7245742012-09-05 17:12:55 -070015223 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.direction =
Jeff Johnson295189b2012-06-20 16:38:30 -070015224 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
15225 direction;
Jeff Johnsone7245742012-09-05 17:12:55 -070015226 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.tsid =
Jeff Johnson295189b2012-06-20 16:38:30 -070015227 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
15228 trafficType;
Jeff Johnsone7245742012-09-05 17:12:55 -070015229 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.tsid =
Jeff Johnson295189b2012-06-20 16:38:30 -070015230 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
15231 trafficType;
Jeff Johnsone7245742012-09-05 17:12:55 -070015232 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.schedule.rsvd =
Jeff Johnson295189b2012-06-20 16:38:30 -070015233 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiSchedule.rsvd;
Jeff Johnsone7245742012-09-05 17:12:55 -070015234 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.schedule.schedule =
Jeff Johnson295189b2012-06-20 16:38:30 -070015235 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiSchedule.schedule;
Jeff Johnsone7245742012-09-05 17:12:55 -070015236
15237
15238 halAggrAddTsReq.aggrAddTsParam.tspec[i].nomMsduSz =
Jeff Johnson295189b2012-06-20 16:38:30 -070015239 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].usNomMsduSz;
Jeff Johnsone7245742012-09-05 17:12:55 -070015240 halAggrAddTsReq.aggrAddTsParam.tspec[i].maxMsduSz =
Jeff Johnson295189b2012-06-20 16:38:30 -070015241 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].usMaxMsduSz;
Jeff Johnsone7245742012-09-05 17:12:55 -070015242 halAggrAddTsReq.aggrAddTsParam.tspec[i].minSvcInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070015243 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMinSvcInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070015244 halAggrAddTsReq.aggrAddTsParam.tspec[i].maxSvcInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070015245 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMaxSvcInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070015246 halAggrAddTsReq.aggrAddTsParam.tspec[i].inactInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070015247 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uInactInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070015248 halAggrAddTsReq.aggrAddTsParam.tspec[i].suspendInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070015249 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uSuspendInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070015250 halAggrAddTsReq.aggrAddTsParam.tspec[i].svcStartTime =
Jeff Johnson295189b2012-06-20 16:38:30 -070015251 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uSvcStartTime;
Jeff Johnsone7245742012-09-05 17:12:55 -070015252 halAggrAddTsReq.aggrAddTsParam.tspec[i].minDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070015253 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMinDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070015254 halAggrAddTsReq.aggrAddTsParam.tspec[i].meanDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070015255 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMeanDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070015256 halAggrAddTsReq.aggrAddTsParam.tspec[i].peakDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070015257 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uPeakDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070015258 halAggrAddTsReq.aggrAddTsParam.tspec[i].maxBurstSz =
Jeff Johnson295189b2012-06-20 16:38:30 -070015259 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMaxBurstSz;
Jeff Johnsone7245742012-09-05 17:12:55 -070015260 halAggrAddTsReq.aggrAddTsParam.tspec[i].delayBound =
Jeff Johnson295189b2012-06-20 16:38:30 -070015261 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uDelayBound;
Jeff Johnsone7245742012-09-05 17:12:55 -070015262 halAggrAddTsReq.aggrAddTsParam.tspec[i].minPhyRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070015263 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMinPhyRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070015264 halAggrAddTsReq.aggrAddTsParam.tspec[i].surplusBw =
Jeff Johnson295189b2012-06-20 16:38:30 -070015265 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].usSurplusBw;
Jeff Johnsone7245742012-09-05 17:12:55 -070015266 halAggrAddTsReq.aggrAddTsParam.tspec[i].mediumTime =
Jeff Johnson295189b2012-06-20 16:38:30 -070015267 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].usMediumTime;
15268 }
15269
Jeff Johnsone7245742012-09-05 17:12:55 -070015270 wpalMemoryCopy( pSendBuffer+usDataOffset,
15271 &halAggrAddTsReq,
15272 sizeof(halAggrAddTsReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070015273
15274 pWDICtx->wdiReqStatusCB = pwdiAggrAddTSParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070015275 pWDICtx->pReqStatusUserData = pwdiAggrAddTSParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070015276
15277 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015278 Send Add TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070015279 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015280 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070015281 wdiAggrAddTSRspCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -070015282 WDI_AGGR_ADD_TS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070015283}/*WDI_ProcessAggrAddTSpecReq*/
15284#endif /* WLAN_FEATURE_VOWIFI_11R */
15285
15286/**
15287 @brief Process Shutdown Request function (called when Main FSM
15288 allows it)
15289
15290 @param pWDICtx: pointer to the WLAN DAL context
15291 pEventData: pointer to the event information structure
15292
15293 @see
15294 @return Result of the function call
15295*/
15296WDI_Status
15297WDI_ProcessShutdownReq
15298(
15299 WDI_ControlBlockType* pWDICtx,
15300 WDI_EventInfoType* pEventData
15301 )
15302{
15303 wpt_status wptStatus;
15304
15305
15306 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15307
15308 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015309 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015310 -------------------------------------------------------------------------*/
15311 if ( NULL == pEventData )
15312 {
15313 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015314 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015315 WDI_ASSERT(0);
15316 return WDI_STATUS_E_FAILURE;
15317 }
15318
15319 wpalMutexAcquire(&pWDICtx->wptMutex);
15320
15321
15322 gWDIInitialized = eWLAN_PAL_FALSE;
15323 /*! TO DO: stop the data services */
15324 if ( eDRIVER_TYPE_MFG != pWDICtx->driverMode )
15325 {
15326 /*Stop the STA Table !UT- check this logic again
15327 It is safer to do it here than on the response - because a stop is imminent*/
15328 WDI_STATableStop(pWDICtx);
15329
15330 /* Stop Transport Driver, DXE */
15331 WDTS_Stop(pWDICtx);
15332 }
15333
15334 /*Clear all pending request*/
15335 WDI_ClearPendingRequests(pWDICtx);
15336 /* Close Data transport*/
15337 /* FTM mode does not open Data Path */
15338 if ( eDRIVER_TYPE_MFG != pWDICtx->driverMode )
15339 {
15340 WDTS_Close(pWDICtx);
15341 }
15342 /*Close the STA Table !UT- check this logic again*/
15343 WDI_STATableClose(pWDICtx);
15344 /*close the PAL */
15345 wptStatus = wpalClose(pWDICtx->pPALContext);
15346 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
15347 {
15348 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15349 "Failed to wpal Close %d", wptStatus);
15350 WDI_ASSERT(0);
15351 }
15352
15353 /*Transition back to init state*/
15354 WDI_STATE_TRANSITION( pWDICtx, WDI_INIT_ST);
15355
15356 wpalMutexRelease(&pWDICtx->wptMutex);
15357
15358 /*Make sure the expected state is properly defaulted to Init*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015359 pWDICtx->ucExpectedStateTransition = WDI_INIT_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -070015360
15361
Jeff Johnsone7245742012-09-05 17:12:55 -070015362 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015363}/*WDI_ProcessShutdownReq*/
15364
15365/*========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070015366 Main DAL Control Path Response Processing API
Jeff Johnson295189b2012-06-20 16:38:30 -070015367========================================================================*/
15368
15369/**
15370 @brief Process Start Response function (called when a response
15371 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015372
15373 @param pWDICtx: pointer to the WLAN DAL context
15374 pEventData: pointer to the event information structure
15375
Jeff Johnson295189b2012-06-20 16:38:30 -070015376 @see
15377 @return Result of the function call
15378*/
15379WDI_Status
15380WDI_ProcessStartRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015381(
Jeff Johnson295189b2012-06-20 16:38:30 -070015382 WDI_ControlBlockType* pWDICtx,
15383 WDI_EventInfoType* pEventData
15384)
15385{
15386 WDI_StartRspParamsType wdiRspParams;
15387 WDI_StartRspCb wdiStartRspCb = NULL;
15388
15389 tHalMacStartRspParams* startRspParams;
15390
15391#ifndef HAL_SELF_STA_PER_BSS
15392 WDI_AddStaParams wdiAddSTAParam = {0};
15393#endif
15394 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15395
Jeff Johnsone7245742012-09-05 17:12:55 -070015396 wdiStartRspCb = (WDI_StartRspCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070015397 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015398 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015399 -------------------------------------------------------------------------*/
15400 if (( NULL == pEventData ) ||
15401 ( NULL == pEventData->pEventData) ||
15402 ( NULL == wdiStartRspCb ))
15403 {
15404 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015405 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015406 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015407 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015408 }
15409
15410 /*-------------------------------------------------------------------------
15411 Extract response and send it to UMAC
15412 -------------------------------------------------------------------------*/
15413 if ( sizeof(tHalMacStartRspParams) > pEventData->uEventDataSize )
15414 {
15415 // not enough data was received
15416 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnson5b414462013-11-22 16:44:20 -080015417 "Invalid response length in Start Resp Expect %zx Rcvd %x",
Jeff Johnson295189b2012-06-20 16:38:30 -070015418 sizeof(tHalMacStartRspParams), pEventData->uEventDataSize);
15419 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015420 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015421 }
15422
15423 /*-------------------------------------------------------------------------
15424 Unpack HAL Response Message - the header was already extracted by the
Jeff Johnsone7245742012-09-05 17:12:55 -070015425 main Response Handling procedure
Jeff Johnson295189b2012-06-20 16:38:30 -070015426 -------------------------------------------------------------------------*/
15427 startRspParams = (tHalMacStartRspParams *) pEventData->pEventData;
15428
15429 wdiRspParams.ucMaxBssids = startRspParams->ucMaxBssids;
15430 wdiRspParams.ucMaxStations = startRspParams->ucMaxStations;
15431 wdiRspParams.wlanCompiledVersion.major = WLAN_HAL_VER_MAJOR;
15432 wdiRspParams.wlanCompiledVersion.minor = WLAN_HAL_VER_MINOR;
15433 wdiRspParams.wlanCompiledVersion.version = WLAN_HAL_VER_VERSION;
15434 wdiRspParams.wlanCompiledVersion.revision = WLAN_HAL_VER_REVISION;
15435 wdiRspParams.wlanReportedVersion.major =
15436 startRspParams->wcnssWlanVersion.major;
15437 wdiRspParams.wlanReportedVersion.minor =
15438 startRspParams->wcnssWlanVersion.minor;
15439 wdiRspParams.wlanReportedVersion.version =
15440 startRspParams->wcnssWlanVersion.version;
15441 wdiRspParams.wlanReportedVersion.revision =
15442 startRspParams->wcnssWlanVersion.revision;
15443 wpalMemoryCopy(wdiRspParams.wcnssSoftwareVersion,
15444 startRspParams->wcnssCrmVersionString,
15445 sizeof(wdiRspParams.wcnssSoftwareVersion));
15446 wpalMemoryCopy(wdiRspParams.wcnssHardwareVersion,
15447 startRspParams->wcnssWlanVersionString,
15448 sizeof(wdiRspParams.wcnssHardwareVersion));
15449 wdiRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(startRspParams->status);
15450
Pratik Bhalgatd4404592012-11-22 17:49:14 +053015451 /*Save the HAL Version*/
15452 pWDICtx->wlanVersion = wdiRspParams.wlanReportedVersion;
15453
Jeff Johnson295189b2012-06-20 16:38:30 -070015454 wpalMutexAcquire(&pWDICtx->wptMutex);
15455 if ( WDI_STATUS_SUCCESS == wdiRspParams.wdiStatus )
15456 {
15457 pWDICtx->ucExpectedStateTransition = WDI_STARTED_ST;
15458
15459 /*Cache the start response for further use*/
15460 wpalMemoryCopy( &pWDICtx->wdiCachedStartRspParams ,
Jeff Johnsone7245742012-09-05 17:12:55 -070015461 &wdiRspParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070015462 sizeof(pWDICtx->wdiCachedStartRspParams));
15463
15464 }
15465 else
15466 {
15467 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15468 "Failed to start device with status %s(%d)",
15469 WDI_getHALStatusMsgString(startRspParams->status),
15470 startRspParams->status);
15471
15472 /*Set the expected state transition to stopped - because the start has
15473 failed*/
15474 pWDICtx->ucExpectedStateTransition = WDI_STOPPED_ST;
15475
15476 wpalMutexRelease(&pWDICtx->wptMutex);
15477
15478 /*Notify UMAC*/
15479 wdiStartRspCb( &wdiRspParams, pWDICtx->pRspCBUserData);
Jeff Johnsone7245742012-09-05 17:12:55 -070015480
Jeff Johnson295189b2012-06-20 16:38:30 -070015481 WDI_DetectedDeviceError(pWDICtx, wdiRspParams.wdiStatus);
Katya Nigamf02ad012014-05-05 16:12:49 +053015482 wpalWlanReload();
Jeff Johnson295189b2012-06-20 16:38:30 -070015483
15484 /*Although the response is an error - it was processed by our function
15485 so as far as the caller is concerned this is a succesful reponse processing*/
15486 return WDI_STATUS_SUCCESS;
15487 }
Jeff Johnsone7245742012-09-05 17:12:55 -070015488
Jeff Johnson295189b2012-06-20 16:38:30 -070015489 wpalMutexRelease(&pWDICtx->wptMutex);
15490
15491 if(eDRIVER_TYPE_MFG == pWDICtx->driverMode)
15492 {
15493 /* FTM mode does not need to execute below */
15494 /* Notify UMAC */
15495 wdiStartRspCb( &wdiRspParams, pWDICtx->pRspCBUserData);
15496 return WDI_STATUS_SUCCESS;
15497 }
15498
15499 /* START the Data transport */
15500 WDTS_startTransport(pWDICtx);
15501
15502 /*Start the STA Table !- check this logic again*/
15503 WDI_STATableStart(pWDICtx);
15504
15505#ifndef HAL_SELF_STA_PER_BSS
15506 /* Store the Self STA Index */
15507 pWDICtx->ucSelfStaId = halStartRspMsg.startRspParams.selfStaIdx;
15508
15509 pWDICtx->usSelfStaDpuId = wdiRspParams.usSelfStaDpuId;
15510 wpalMemoryCopy(pWDICtx->macSelfSta, wdiRspParams.macSelfSta,
15511 WDI_MAC_ADDR_LEN);
15512
15513 /* At this point add the self-STA */
15514
15515 /*! TO DO: wdiAddSTAParam.bcastMgmtDpuSignature */
15516 /* !TO DO: wdiAddSTAParam.bcastDpuSignature */
15517 /*! TO DO: wdiAddSTAParam.dpuSig */
15518 /*! TO DO: wdiAddSTAParam.ucWmmEnabled */
15519 /*! TO DO: wdiAddSTAParam.ucHTCapable */
15520 /*! TO DO: wdiAddSTAParam.ucRmfEnabled */
15521
15522 //all DPU indices are the same for self STA
15523 wdiAddSTAParam.bcastDpuIndex = wdiRspParams.usSelfStaDpuId;
15524 wdiAddSTAParam.bcastMgmtDpuIndex = wdiRspParams.usSelfStaDpuId;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -070015525 wdiAddSTAParam.dpuIndex = wdiRspParams.usSelfStaDpuId;
Jeff Johnson295189b2012-06-20 16:38:30 -070015526 wpalMemoryCopy(wdiAddSTAParam.staMacAddr, wdiRspParams.macSelfSta,
15527 WDI_MAC_ADDR_LEN);
15528 wdiAddSTAParam.ucStaType = WDI_STA_ENTRY_SELF; /* 0 - self */
15529 wdiAddSTAParam.ucSTAIdx = halStartRspMsg.startRspParams.selfStaIdx;
15530
15531 /* Note: Since we don't get an explicit config STA request for self STA, we
15532 add the self STA upon receiving the Start response message. But the
15533 self STA entry in the table is deleted when WDI gets an explicit delete STA
15534 request */
15535 (void)WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
15536#endif
15537
15538 /*Notify UMAC*/
15539 wdiStartRspCb( &wdiRspParams, pWDICtx->pRspCBUserData);
15540
Jeff Johnsone7245742012-09-05 17:12:55 -070015541 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015542}/*WDI_ProcessStartRsp*/
15543
15544
15545/**
15546 @brief Process Stop Response function (called when a response
15547 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015548
15549 @param pWDICtx: pointer to the WLAN DAL context
15550 pEventData: pointer to the event information structure
15551
Jeff Johnson295189b2012-06-20 16:38:30 -070015552 @see
15553 @return Result of the function call
15554*/
15555WDI_Status
15556WDI_ProcessStopRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015557(
Jeff Johnson295189b2012-06-20 16:38:30 -070015558 WDI_ControlBlockType* pWDICtx,
15559 WDI_EventInfoType* pEventData
15560)
15561{
15562 WDI_Status wdiStatus;
15563 WDI_StopRspCb wdiStopRspCb = NULL;
15564
Jeff Johnsone7245742012-09-05 17:12:55 -070015565 tHalMacStopRspMsg halMacStopRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070015566 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15567
Jeff Johnsone7245742012-09-05 17:12:55 -070015568 wdiStopRspCb = (WDI_StopRspCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070015569 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015570 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015571 -------------------------------------------------------------------------*/
15572 if (( NULL == pEventData ) ||
15573 ( NULL == pEventData->pEventData) ||
15574 ( NULL == wdiStopRspCb ))
15575 {
15576 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015577 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015578 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015579 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015580 }
15581
15582 /*-------------------------------------------------------------------------
15583 Extract response and send it to UMAC
15584 -------------------------------------------------------------------------*/
15585 if ( sizeof(halMacStopRspMsg) < pEventData->uEventDataSize )
15586 {
15587 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080015588 "Invalid response length in Stop Resp %u",
Jeff Johnson295189b2012-06-20 16:38:30 -070015589 pEventData->uEventDataSize);
15590 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015591 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015592 }
15593
15594 /*-------------------------------------------------------------------------
15595 Unpack HAL Response Message - the header was already extracted by the
Jeff Johnsone7245742012-09-05 17:12:55 -070015596 main Response Handling procedure
Jeff Johnson295189b2012-06-20 16:38:30 -070015597 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015598 wpalMemoryCopy( &halMacStopRspMsg.stopRspParams,
15599 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070015600 sizeof(halMacStopRspMsg.stopRspParams));
15601
Jeff Johnsone7245742012-09-05 17:12:55 -070015602 wdiStatus = WDI_HAL_2_WDI_STATUS(halMacStopRspMsg.stopRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070015603
15604 wpalMutexAcquire(&pWDICtx->wptMutex);
15605
15606 /*--------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015607 Check to see if the stop went OK
Jeff Johnson295189b2012-06-20 16:38:30 -070015608 --------------------------------------------------------------------------*/
15609 if ( WDI_STATUS_SUCCESS != wdiStatus )
15610 {
15611 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15612 "Failed to stop the device with status %s (%d)",
15613 WDI_getHALStatusMsgString(halMacStopRspMsg.stopRspParams.status),
15614 halMacStopRspMsg.stopRspParams.status);
15615
Jeff Johnsone7245742012-09-05 17:12:55 -070015616 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
Katya Nigamf02ad012014-05-05 16:12:49 +053015617 wpalWlanReload();
Jeff Johnsone7245742012-09-05 17:12:55 -070015618
Jeff Johnson295189b2012-06-20 16:38:30 -070015619 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070015620 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015621 }
Jeff Johnsone7245742012-09-05 17:12:55 -070015622
Jeff Johnson295189b2012-06-20 16:38:30 -070015623 pWDICtx->ucExpectedStateTransition = WDI_STOPPED_ST;
15624
15625 /*Transition now as WDI may get preempted imediately after it sends
15626 up the Stop Response and it will not get to process the state transition
15627 from Main Rsp function*/
15628 WDI_STATE_TRANSITION( pWDICtx, pWDICtx->ucExpectedStateTransition);
15629 wpalMutexRelease(&pWDICtx->wptMutex);
15630
15631 /*! TO DO: - STOP the Data transport */
15632
15633 /*Notify UMAC*/
15634 wdiStopRspCb( wdiStatus, pWDICtx->pRspCBUserData);
15635
Jeff Johnsone7245742012-09-05 17:12:55 -070015636 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015637}/*WDI_ProcessStopRsp*/
15638
15639/**
15640 @brief Process Close Rsp function (called when a response
15641 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015642
15643 @param pWDICtx: pointer to the WLAN DAL context
15644 pEventData: pointer to the event information structure
15645
Jeff Johnson295189b2012-06-20 16:38:30 -070015646 @see
15647 @return Result of the function call
15648*/
15649WDI_Status
15650WDI_ProcessCloseRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015651(
Jeff Johnson295189b2012-06-20 16:38:30 -070015652 WDI_ControlBlockType* pWDICtx,
15653 WDI_EventInfoType* pEventData
15654)
15655{
15656 /*There is no close response comming from HAL - function just kept for
15657 simmetry */
15658 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015659 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015660}/*WDI_ProcessCloseRsp*/
15661
15662
15663/*============================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070015664 SCAN RESPONSE PROCESSING API
Jeff Johnson295189b2012-06-20 16:38:30 -070015665============================================================================*/
15666
15667/**
15668 @brief Process Init Scan Rsp function (called when a response
15669 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015670
15671 @param pWDICtx: pointer to the WLAN DAL context
15672 pEventData: pointer to the event information structure
15673
Jeff Johnson295189b2012-06-20 16:38:30 -070015674 @see
15675 @return Result of the function call
15676*/
15677WDI_Status
15678WDI_ProcessInitScanRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015679(
Jeff Johnson295189b2012-06-20 16:38:30 -070015680 WDI_ControlBlockType* pWDICtx,
15681 WDI_EventInfoType* pEventData
15682)
15683{
15684 WDI_Status wdiStatus;
15685 WDI_InitScanRspCb wdiInitScanRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070015686 tHalInitScanRspMsg halInitScanRspMsg;
Ravali85acf6b2012-12-12 14:01:38 -080015687 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070015688 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15689
15690 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015691 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015692 -------------------------------------------------------------------------*/
15693 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15694 ( NULL == pEventData->pEventData))
15695 {
15696 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015697 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015698 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015699 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015700 }
15701
15702 wdiInitScanRspCb = (WDI_InitScanRspCb)pWDICtx->pfncRspCB;
15703 if( NULL == wdiInitScanRspCb)
15704 {
15705 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015706 "%s: call back function is NULL", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015707 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015708 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015709 }
15710
15711 /*-------------------------------------------------------------------------
15712 Unpack HAL Response Message - the header was already extracted by the
Jeff Johnsone7245742012-09-05 17:12:55 -070015713 main Response Handling procedure
Jeff Johnson295189b2012-06-20 16:38:30 -070015714 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015715 wpalMemoryCopy( &halInitScanRspMsg.initScanRspParams,
15716 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070015717 sizeof(halInitScanRspMsg.initScanRspParams));
15718
Jeff Johnsone7245742012-09-05 17:12:55 -070015719 wdiStatus = WDI_HAL_2_WDI_STATUS(halInitScanRspMsg.initScanRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070015720
15721 if ( pWDICtx->bInBmps )
15722 {
15723 // notify DTS that we are entering Full power
Ravali85acf6b2012-12-12 14:01:38 -080015724 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
15725 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus ) {
15726 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain9a5d5382013-11-17 22:05:35 -080015727 "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 -080015728 WDI_ASSERT(0);
15729 }
Jeff Johnson295189b2012-06-20 16:38:30 -070015730 }
15731
15732 /*Notify UMAC*/
15733 wdiInitScanRspCb( wdiStatus, pWDICtx->pRspCBUserData);
15734
Jeff Johnsone7245742012-09-05 17:12:55 -070015735 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015736}/*WDI_ProcessInitScanRsp*/
15737
15738
15739/**
15740 @brief Process Start Scan Rsp function (called when a response
15741 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015742
15743 @param pWDICtx: pointer to the WLAN DAL context
15744 pEventData: pointer to the event information structure
15745
Jeff Johnson295189b2012-06-20 16:38:30 -070015746 @see
15747 @return Result of the function call
15748*/
15749WDI_Status
15750WDI_ProcessStartScanRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015751(
Jeff Johnson295189b2012-06-20 16:38:30 -070015752 WDI_ControlBlockType* pWDICtx,
15753 WDI_EventInfoType* pEventData
15754)
15755{
15756 WDI_StartScanRspParamsType wdiStartScanParams;
15757 WDI_StartScanRspCb wdiStartScanRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070015758
15759 tHalStartScanRspMsg halStartScanRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070015760 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15761
15762 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015763 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015764 -------------------------------------------------------------------------*/
15765 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15766 ( NULL == pEventData->pEventData))
15767 {
15768 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015769 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015770 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015771 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015772 }
15773
15774 wdiStartScanRspCb = (WDI_StartScanRspCb)pWDICtx->pfncRspCB;
15775 if( NULL == wdiStartScanRspCb)
15776 {
15777 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015778 "%s: call back function is NULL", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015779 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015780 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015781 }
15782
15783 /*-------------------------------------------------------------------------
15784 Extract response and send it to UMAC
15785 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015786 wpalMemoryCopy( &halStartScanRspMsg.startScanRspParams,
15787 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070015788 sizeof(halStartScanRspMsg.startScanRspParams));
15789
15790 wdiStartScanParams.wdiStatus = WDI_HAL_2_WDI_STATUS(
15791 halStartScanRspMsg.startScanRspParams.status);
15792#ifdef WLAN_FEATURE_VOWIFI
Jeff Johnsone7245742012-09-05 17:12:55 -070015793 wdiStartScanParams.ucTxMgmtPower =
Jeff Johnson295189b2012-06-20 16:38:30 -070015794 halStartScanRspMsg.startScanRspParams.txMgmtPower;
Jeff Johnsone7245742012-09-05 17:12:55 -070015795 wpalMemoryCopy( wdiStartScanParams.aStartTSF,
Jeff Johnson295189b2012-06-20 16:38:30 -070015796 halStartScanRspMsg.startScanRspParams.startTSF,
15797 2);
Jeff Johnsone7245742012-09-05 17:12:55 -070015798#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070015799
15800 if ( eHAL_STATUS_SUCCESS != halStartScanRspMsg.startScanRspParams.status )
15801 {
15802 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15803 "Start scan failed with status %s (%d)",
15804 WDI_getHALStatusMsgString(halStartScanRspMsg.startScanRspParams.status),
15805 halStartScanRspMsg.startScanRspParams.status);
15806 /* send the status to UMAC, don't return from here*/
15807 }
15808
15809 /*Notify UMAC*/
15810 wdiStartScanRspCb( &wdiStartScanParams, pWDICtx->pRspCBUserData);
15811
Jeff Johnsone7245742012-09-05 17:12:55 -070015812 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015813
15814}/*WDI_ProcessStartScanRsp*/
15815
15816
15817/**
Jeff Johnsone7245742012-09-05 17:12:55 -070015818 @brief Process End Scan Response function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070015819 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015820
15821 @param pWDICtx: pointer to the WLAN DAL context
15822 pEventData: pointer to the event information structure
15823
Jeff Johnson295189b2012-06-20 16:38:30 -070015824 @see
15825 @return Result of the function call
15826*/
15827WDI_Status
15828WDI_ProcessEndScanRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015829(
Jeff Johnson295189b2012-06-20 16:38:30 -070015830 WDI_ControlBlockType* pWDICtx,
15831 WDI_EventInfoType* pEventData
15832)
15833{
15834 WDI_Status wdiStatus;
15835 tHalEndScanRspMsg halEndScanRspMsg;
15836 WDI_EndScanRspCb wdiEndScanRspCb;
15837 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15838
15839 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015840 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015841 -------------------------------------------------------------------------*/
15842 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15843 ( NULL == pEventData->pEventData))
15844 {
15845 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015846 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015847 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015848 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015849 }
15850
15851 wdiEndScanRspCb = (WDI_EndScanRspCb)pWDICtx->pfncRspCB;
15852
15853 /*-------------------------------------------------------------------------
15854 Extract response and send it to UMAC
15855 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015856 wpalMemoryCopy( &halEndScanRspMsg.endScanRspParams,
15857 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070015858 sizeof(halEndScanRspMsg.endScanRspParams));
15859
Jeff Johnsone7245742012-09-05 17:12:55 -070015860 wdiStatus = WDI_HAL_2_WDI_STATUS(halEndScanRspMsg.endScanRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070015861
15862 if ( eHAL_STATUS_SUCCESS != halEndScanRspMsg.endScanRspParams.status )
15863 {
15864 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15865 "End Scan failed with status %s (%d )",
15866 WDI_getHALStatusMsgString(halEndScanRspMsg.endScanRspParams.status),
15867 halEndScanRspMsg.endScanRspParams.status);
15868 /* send the status to UMAC, don't return from here*/
15869 }
15870
15871 /*Notify UMAC*/
15872 wdiEndScanRspCb( wdiStatus, pWDICtx->pRspCBUserData);
15873
Jeff Johnsone7245742012-09-05 17:12:55 -070015874 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015875}/*WDI_ProcessEndScanRsp*/
15876
15877
15878/**
Jeff Johnsone7245742012-09-05 17:12:55 -070015879 @brief Process Finish Scan Response function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070015880 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015881
15882 @param pWDICtx: pointer to the WLAN DAL context
15883 pEventData: pointer to the event information structure
15884
Jeff Johnson295189b2012-06-20 16:38:30 -070015885 @see
15886 @return Result of the function call
15887*/
15888WDI_Status
15889WDI_ProcessFinishScanRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015890(
Jeff Johnson295189b2012-06-20 16:38:30 -070015891 WDI_ControlBlockType* pWDICtx,
15892 WDI_EventInfoType* pEventData
Jeff Johnsone7245742012-09-05 17:12:55 -070015893)
Jeff Johnson295189b2012-06-20 16:38:30 -070015894{
15895 WDI_Status wdiStatus;
15896 WDI_FinishScanRspCb wdiFinishScanRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070015897
15898 tHalFinishScanRspMsg halFinishScanRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070015899 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15900
15901 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015902 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015903 -------------------------------------------------------------------------*/
15904 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15905 ( NULL == pEventData->pEventData))
15906 {
15907 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015908 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015909 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015910 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015911 }
15912
15913 wdiFinishScanRspCb = (WDI_FinishScanRspCb)pWDICtx->pfncRspCB;
15914
15915 /*-------------------------------------------------------------------------
15916 Extract response and send it to UMAC
15917 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015918 wpalMemoryCopy( (void *)&halFinishScanRspMsg.finishScanRspParams.status,
15919 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070015920 sizeof(halFinishScanRspMsg.finishScanRspParams.status));
15921
Jeff Johnsone7245742012-09-05 17:12:55 -070015922 wdiStatus = WDI_HAL_2_WDI_STATUS(halFinishScanRspMsg.finishScanRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070015923
15924 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO_LOW,
Jeff Johnsone7245742012-09-05 17:12:55 -070015925 "Finish scan response reported status: %d",
Jeff Johnson295189b2012-06-20 16:38:30 -070015926 halFinishScanRspMsg.finishScanRspParams.status);
15927
15928 if (( eHAL_STATUS_SUCCESS != halFinishScanRspMsg.finishScanRspParams.status )&&
15929 ( eHAL_STATUS_NOTIFY_BSS_FAIL != halFinishScanRspMsg.finishScanRspParams.status ))
15930 {
15931 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15932 "Finish Scan failed with status %s (%d)",
15933 WDI_getHALStatusMsgString(halFinishScanRspMsg.finishScanRspParams.status),
15934 halFinishScanRspMsg.finishScanRspParams.status);
15935 /* send the status to UMAC, don't return from here*/
15936 }
15937
15938 /*Notify UMAC*/
15939 wdiFinishScanRspCb( wdiStatus, pWDICtx->pRspCBUserData);
15940
Jeff Johnsone7245742012-09-05 17:12:55 -070015941 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015942}/*WDI_ProcessFinishScanRsp*/
15943
15944/**
15945 @brief Process Join Response function (called when a response
15946 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015947
15948 @param pWDICtx: pointer to the WLAN DAL context
15949 pEventData: pointer to the event information structure
15950
Jeff Johnson295189b2012-06-20 16:38:30 -070015951 @see
15952 @return Result of the function call
15953*/
15954WDI_Status
15955WDI_ProcessJoinRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015956(
Jeff Johnson295189b2012-06-20 16:38:30 -070015957 WDI_ControlBlockType* pWDICtx,
15958 WDI_EventInfoType* pEventData
15959)
15960{
15961 WDI_Status wdiStatus;
15962 WDI_JoinRspCb wdiJoinRspCb;
15963 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070015964
15965 tHalJoinRspMsg halJoinRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070015966 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15967
15968 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015969 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015970 -------------------------------------------------------------------------*/
15971 if (( NULL == pWDICtx ) ||
15972 ( NULL == pWDICtx->pfncRspCB ) ||
15973 ( NULL == pEventData ) ||
15974 ( NULL == pEventData->pEventData))
15975 {
15976 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015977 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015978 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015979 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015980 }
15981
15982 wdiJoinRspCb = (WDI_JoinRspCb)pWDICtx->pfncRspCB;
15983
15984 /*-------------------------------------------------------------------------
15985 Extract response and send it to UMAC
15986 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015987 wpalMemoryCopy( &halJoinRspMsg.joinRspParams,
15988 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070015989 sizeof(halJoinRspMsg.joinRspParams));
15990
Jeff Johnsone7245742012-09-05 17:12:55 -070015991 wdiStatus = WDI_HAL_2_WDI_STATUS(halJoinRspMsg.joinRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070015992
15993 wpalMutexAcquire(&pWDICtx->wptMutex);
15994
15995 /*-----------------------------------------------------------------------
15996 Join response can only be received for an existing assoc that
Jeff Johnsone7245742012-09-05 17:12:55 -070015997 is current and in progress
Jeff Johnson295189b2012-06-20 16:38:30 -070015998 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015999 if (( !WDI_VALID_SESSION_IDX(pWDICtx->ucCurrentBSSSesIdx )) ||
Jeff Johnson295189b2012-06-20 16:38:30 -070016000 ( eWLAN_PAL_FALSE == pWDICtx->bAssociationInProgress ))
16001 {
16002 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070016003 "%s: Association sequence for this BSS does not yet exist (bssIdx %d) or "
16004 "association no longer in progress %d - mysterious HAL response",
16005 __func__, pWDICtx->ucCurrentBSSSesIdx, pWDICtx->bAssociationInProgress);
Jeff Johnson295189b2012-06-20 16:38:30 -070016006
Jeff Johnsone7245742012-09-05 17:12:55 -070016007 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
Jeff Johnson295189b2012-06-20 16:38:30 -070016008 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070016009 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070016010 }
16011
16012 pBSSSes = &pWDICtx->aBSSSessions[pWDICtx->ucCurrentBSSSesIdx];
16013
16014 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016015 Join Response is only allowed in init state
Jeff Johnson295189b2012-06-20 16:38:30 -070016016 -----------------------------------------------------------------------*/
16017 if ( WDI_ASSOC_JOINING_ST != pBSSSes->wdiAssocState)
16018 {
16019 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16020 "Join only allowed in Joining state - failure state is %d "
16021 "strange HAL response", pBSSSes->wdiAssocState);
16022
Jeff Johnsone7245742012-09-05 17:12:55 -070016023 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
16024
Jeff Johnson295189b2012-06-20 16:38:30 -070016025 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070016026 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070016027 }
16028
16029
16030 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016031 If assoc has failed the current session will be deleted
Jeff Johnson295189b2012-06-20 16:38:30 -070016032 -----------------------------------------------------------------------*/
16033 if ( WDI_STATUS_SUCCESS != wdiStatus )
16034 {
16035 /*Association was failed by HAL - remove session*/
16036 WDI_DeleteSession(pWDICtx, pBSSSes);
16037
16038 /*Association no longer in progress */
16039 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
16040
16041 /*Association no longer in progress - prepare pending assoc for processing*/
16042 WDI_DequeueAssocRequest(pWDICtx);
Jeff Johnsone7245742012-09-05 17:12:55 -070016043
Jeff Johnson295189b2012-06-20 16:38:30 -070016044 }
16045 else
16046 {
16047 /*Transition to state Joining - this may be redundant as we are supposed
16048 to be in this state already - but just to be safe*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016049 pBSSSes->wdiAssocState = WDI_ASSOC_JOINING_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -070016050 }
16051
16052 wpalMutexRelease(&pWDICtx->wptMutex);
16053
16054 /*Notify UMAC*/
16055 wdiJoinRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16056
Jeff Johnsone7245742012-09-05 17:12:55 -070016057 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016058}/*WDI_ProcessJoinRsp*/
16059
16060
16061/**
Jeff Johnsone7245742012-09-05 17:12:55 -070016062 @brief Process Config BSS Response function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070016063 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016064
16065 @param pWDICtx: pointer to the WLAN DAL context
16066 pEventData: pointer to the event information structure
16067
Jeff Johnson295189b2012-06-20 16:38:30 -070016068 @see
16069 @return Result of the function call
16070*/
16071WDI_Status
16072WDI_ProcessConfigBSSRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016073(
Jeff Johnson295189b2012-06-20 16:38:30 -070016074 WDI_ControlBlockType* pWDICtx,
16075 WDI_EventInfoType* pEventData
16076)
16077{
16078 WDI_ConfigBSSRspParamsType wdiConfigBSSParams;
16079 WDI_ConfigBSSRspCb wdiConfigBSSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070016080 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070016081 WDI_BSSSessionType* pBSSSes = NULL;
16082
Jeff Johnsone7245742012-09-05 17:12:55 -070016083 tConfigBssRspMsg halConfigBssRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070016084 WDI_AddStaParams wdiBcastAddSTAParam = {0};
16085 WDI_AddStaParams wdiAddSTAParam = {0};
Jeff Johnsone7245742012-09-05 17:12:55 -070016086
Jeff Johnson295189b2012-06-20 16:38:30 -070016087 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16088
16089 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016090 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016091 -------------------------------------------------------------------------*/
16092 if (( NULL == pEventData ) ||
16093 ( NULL == pEventData->pEventData))
16094 {
16095 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016096 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016097 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016098 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016099 }
16100
16101 wdiConfigBSSRspCb = (WDI_ConfigBSSRspCb)pWDICtx->pfncRspCB;
16102
16103 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016104 Extract response and send it to UMAC
Jeff Johnson295189b2012-06-20 16:38:30 -070016105 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016106 wpalMemoryCopy( &halConfigBssRspMsg.configBssRspParams,
16107 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016108 sizeof(halConfigBssRspMsg.configBssRspParams));
16109
16110 wdiConfigBSSParams.wdiStatus = WDI_HAL_2_WDI_STATUS(
16111 halConfigBssRspMsg.configBssRspParams.status);
16112 if(WDI_STATUS_SUCCESS == wdiConfigBSSParams.wdiStatus)
16113 {
Jeff Johnsone7245742012-09-05 17:12:55 -070016114 wpalMemoryCopy( wdiConfigBSSParams.macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -070016115 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.macBSSID,
16116 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070016117
Jeff Johnson295189b2012-06-20 16:38:30 -070016118 wdiConfigBSSParams.ucBSSIdx = halConfigBssRspMsg.configBssRspParams.bssIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016119
16120 wdiConfigBSSParams.ucBcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070016121 halConfigBssRspMsg.configBssRspParams.bcastDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070016122
16123 wdiConfigBSSParams.ucUcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070016124 halConfigBssRspMsg.configBssRspParams.ucastDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070016125
Jeff Johnson295189b2012-06-20 16:38:30 -070016126 wdiConfigBSSParams.ucSTAIdx = halConfigBssRspMsg.configBssRspParams.bssStaIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016127
Jeff Johnson295189b2012-06-20 16:38:30 -070016128 #ifdef WLAN_FEATURE_VOWIFI
Jeff Johnsone7245742012-09-05 17:12:55 -070016129 wdiConfigBSSParams.ucTxMgmtPower =
Jeff Johnson295189b2012-06-20 16:38:30 -070016130 halConfigBssRspMsg.configBssRspParams.txMgmtPower;
16131 #endif
16132 wpalMemoryCopy( wdiConfigBSSParams.macSTA,
16133 halConfigBssRspMsg.configBssRspParams.staMac,
16134 WDI_MAC_ADDR_LEN );
Jeff Johnsone7245742012-09-05 17:12:55 -070016135
Jeff Johnson295189b2012-06-20 16:38:30 -070016136 wpalMutexAcquire(&pWDICtx->wptMutex);
16137 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016138 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070016139 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016140 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
16141 wdiConfigBSSParams.macBSSID,
16142 &pBSSSes);
16143
Jeff Johnson295189b2012-06-20 16:38:30 -070016144 /*-----------------------------------------------------------------------
16145 Config BSS response can only be received for an existing assoc that
Jeff Johnsone7245742012-09-05 17:12:55 -070016146 is current and in progress
Jeff Johnson295189b2012-06-20 16:38:30 -070016147 -----------------------------------------------------------------------*/
16148 if ( NULL == pBSSSes )
16149 {
16150 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16151 "Association sequence for this BSS does not yet exist "
16152 "- mysterious HAL response");
Jeff Johnsone7245742012-09-05 17:12:55 -070016153
16154 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
16155
Jeff Johnson295189b2012-06-20 16:38:30 -070016156 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070016157 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070016158 }
Jeff Johnsone7245742012-09-05 17:12:55 -070016159
Jeff Johnson295189b2012-06-20 16:38:30 -070016160 /*Save data for this BSS*/
16161 pBSSSes->wdiBssType = pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiBSSType;
16162 pBSSSes->ucBSSIdx = halConfigBssRspMsg.configBssRspParams.bssIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016163 pBSSSes->bcastDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070016164 halConfigBssRspMsg.configBssRspParams.bcastDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016165 pBSSSes->bcastDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070016166 halConfigBssRspMsg.configBssRspParams.bcastDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070016167 pBSSSes->bcastMgmtDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070016168 halConfigBssRspMsg.configBssRspParams.mgmtDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016169 pBSSSes->bcastMgmtDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070016170 halConfigBssRspMsg.configBssRspParams.mgmtDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070016171 pBSSSes->ucRmfEnabled =
Jeff Johnson295189b2012-06-20 16:38:30 -070016172 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.ucRMFEnabled;
16173 pBSSSes->bcastStaIdx =
16174 halConfigBssRspMsg.configBssRspParams.bssBcastStaIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016175
Jeff Johnson295189b2012-06-20 16:38:30 -070016176 /* !TO DO: Shuould we be updating the RMF Capability of self STA here? */
Jeff Johnsone7245742012-09-05 17:12:55 -070016177
Jeff Johnson295189b2012-06-20 16:38:30 -070016178 /*-------------------------------------------------------------------------
16179 Add Peer STA
16180 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016181 wdiAddSTAParam.ucSTAIdx = halConfigBssRspMsg.configBssRspParams.bssStaIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070016182 wdiAddSTAParam.dpuIndex = halConfigBssRspMsg.configBssRspParams.dpuDescIndx;
16183 wdiAddSTAParam.dpuSig = halConfigBssRspMsg.configBssRspParams.ucastDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070016184
Jeff Johnson295189b2012-06-20 16:38:30 -070016185 /*This info can be retrieved from the cached initial request*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016186 wdiAddSTAParam.ucWmmEnabled =
Jeff Johnson295189b2012-06-20 16:38:30 -070016187 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiSTAContext.ucWMMEnabled;
Jeff Johnsone7245742012-09-05 17:12:55 -070016188 wdiAddSTAParam.ucHTCapable =
16189 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiSTAContext.ucHTCapable;
16190 wdiAddSTAParam.ucStaType =
16191 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiSTAContext.wdiSTAType;
16192
Jeff Johnson295189b2012-06-20 16:38:30 -070016193 /* MAC Address of STA */
Jeff Johnsone7245742012-09-05 17:12:55 -070016194 wpalMemoryCopy(wdiAddSTAParam.staMacAddr,
16195 halConfigBssRspMsg.configBssRspParams.staMac,
Jeff Johnson295189b2012-06-20 16:38:30 -070016196 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070016197
16198 wpalMemoryCopy(wdiAddSTAParam.macBSSID,
16199 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiSTAContext.macBSSID ,
16200 WDI_MAC_ADDR_LEN);
16201
Jeff Johnson295189b2012-06-20 16:38:30 -070016202 /*Add BSS specific parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016203 wdiAddSTAParam.bcastMgmtDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070016204 halConfigBssRspMsg.configBssRspParams.mgmtDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016205 wdiAddSTAParam.bcastMgmtDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070016206 halConfigBssRspMsg.configBssRspParams.mgmtDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070016207 wdiAddSTAParam.bcastDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070016208 halConfigBssRspMsg.configBssRspParams.bcastDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016209 wdiAddSTAParam.bcastDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070016210 halConfigBssRspMsg.configBssRspParams.bcastDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070016211 wdiAddSTAParam.ucRmfEnabled =
Jeff Johnson295189b2012-06-20 16:38:30 -070016212 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.ucRMFEnabled;
Jeff Johnsone7245742012-09-05 17:12:55 -070016213 wdiAddSTAParam.ucBSSIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070016214 halConfigBssRspMsg.configBssRspParams.bssIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016215
Jeff Johnson295189b2012-06-20 16:38:30 -070016216 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
16217 "Add STA to the table index: %d", wdiAddSTAParam.ucSTAIdx );
Jeff Johnsone7245742012-09-05 17:12:55 -070016218
Jeff Johnson295189b2012-06-20 16:38:30 -070016219 WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
16220 /*-------------------------------------------------------------------------
16221 Add Broadcast STA only in AP mode
16222 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016223 if( pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.ucOperMode ==
Ravi Joshid0699502013-07-08 15:48:47 -070016224 WDI_BSS_OPERATIONAL_MODE_AP || pBSSSes->wdiBssType == WDI_IBSS_MODE)
Jeff Johnson295189b2012-06-20 16:38:30 -070016225 {
16226 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
16227 "Add BCAST STA to table for index: %d",
16228 halConfigBssRspMsg.configBssRspParams.bssBcastStaIdx );
Jeff Johnsone7245742012-09-05 17:12:55 -070016229
16230 wpalMemoryCopy( &wdiBcastAddSTAParam, &wdiAddSTAParam,
Jeff Johnson295189b2012-06-20 16:38:30 -070016231 sizeof(WDI_AddStaParams) );
Jeff Johnsone7245742012-09-05 17:12:55 -070016232
Jeff Johnson295189b2012-06-20 16:38:30 -070016233 WDI_AddBcastSTAtoSTATable( pWDICtx, &wdiBcastAddSTAParam,
16234 halConfigBssRspMsg.configBssRspParams.bssBcastStaIdx );
16235 }
16236 wpalMutexRelease(&pWDICtx->wptMutex);
16237 }
16238 else
16239 {
16240 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16241 "Config BSS RSP failed with status : %s(%d)",
16242 WDI_getHALStatusMsgString(
Jeff Johnsone7245742012-09-05 17:12:55 -070016243 halConfigBssRspMsg.configBssRspParams.status),
Jeff Johnson295189b2012-06-20 16:38:30 -070016244 halConfigBssRspMsg.configBssRspParams.status);
16245
Jeff Johnsone7245742012-09-05 17:12:55 -070016246
Jeff Johnson295189b2012-06-20 16:38:30 -070016247 /*Association was failed by HAL - remove session*/
16248 WDI_DeleteSession(pWDICtx, pBSSSes);
16249
16250 /*Association no longer in progress */
16251 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
16252
16253 /*Association no longer in progress - prepare pending assoc for processing*/
16254 WDI_DequeueAssocRequest(pWDICtx);
16255
16256 }
16257
16258 /*Notify UMAC*/
16259 wdiConfigBSSRspCb( &wdiConfigBSSParams, pWDICtx->pRspCBUserData);
16260
Jeff Johnsone7245742012-09-05 17:12:55 -070016261 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016262}/*WDI_ProcessConfigBSSRsp*/
16263
16264
16265/**
16266 @brief Process Del BSS Response function (called when a response
16267 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016268
16269 @param pWDICtx: pointer to the WLAN DAL context
16270 pEventData: pointer to the event information structure
16271
Jeff Johnson295189b2012-06-20 16:38:30 -070016272 @see
16273 @return Result of the function call
16274*/
16275WDI_Status
16276WDI_ProcessDelBSSRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016277(
Jeff Johnson295189b2012-06-20 16:38:30 -070016278 WDI_ControlBlockType* pWDICtx,
16279 WDI_EventInfoType* pEventData
16280)
16281{
16282 WDI_DelBSSRspParamsType wdiDelBSSParams;
16283 WDI_DelBSSRspCb wdiDelBSSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070016284 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070016285 WDI_BSSSessionType* pBSSSes = NULL;
16286
Jeff Johnsone7245742012-09-05 17:12:55 -070016287 tDeleteBssRspMsg halDelBssRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070016288 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16289
16290 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016291 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016292 -------------------------------------------------------------------------*/
16293 if (( NULL == pEventData ) ||
16294 ( NULL == pEventData->pEventData))
16295 {
16296 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016297 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016298 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016299 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016300 }
16301
16302 wdiDelBSSRspCb = (WDI_DelBSSRspCb)pWDICtx->pfncRspCB;
16303
16304 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016305 Extract response and send it to UMAC
Jeff Johnson295189b2012-06-20 16:38:30 -070016306 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016307 wpalMemoryCopy( &halDelBssRspMsg.deleteBssRspParams,
16308 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016309 sizeof(halDelBssRspMsg.deleteBssRspParams));
16310
16311
16312 wdiDelBSSParams.wdiStatus = WDI_HAL_2_WDI_STATUS(
Jeff Johnsone7245742012-09-05 17:12:55 -070016313 halDelBssRspMsg.deleteBssRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070016314
16315 wpalMutexAcquire(&pWDICtx->wptMutex);
16316
16317 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016318 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070016319 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016320 ucCurrentBSSSesIdx = WDI_FindAssocSessionByBSSIdx( pWDICtx,
16321 halDelBssRspMsg.deleteBssRspParams.bssIdx,
16322 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070016323
16324 /*-----------------------------------------------------------------------
16325 Del BSS response can only be received for an existing assoc that
Jeff Johnsone7245742012-09-05 17:12:55 -070016326 is current and in progress
Jeff Johnson295189b2012-06-20 16:38:30 -070016327 -----------------------------------------------------------------------*/
16328 if ( NULL == pBSSSes )
16329 {
16330 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16331 "Association sequence for this BSS does not yet exist or "
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -080016332 "association no longer in progress - mysterious HAL response");
16333
16334 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
16335
16336 wpalMutexRelease(&pWDICtx->wptMutex);
16337 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070016338 }
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -080016339
16340 /*Extract BSSID for the response to UMAC*/
16341 wpalMemoryCopy(wdiDelBSSParams.macBSSID,
16342 pBSSSes->macBSSID, WDI_MAC_ADDR_LEN);
16343
16344 wdiDelBSSParams.ucBssIdx = halDelBssRspMsg.deleteBssRspParams.bssIdx;
16345
16346 /*-----------------------------------------------------------------------
16347 The current session will be deleted
16348 -----------------------------------------------------------------------*/
16349 WDI_DeleteSession(pWDICtx, pBSSSes);
16350
16351
16352 /* Delete the BCAST STA entry from the STA table if SAP/GO session is deleted */
krunal soni3fc26642013-10-08 22:41:42 -070016353 if(WDI_INFRA_AP_MODE == pBSSSes->wdiBssType ||
16354 pBSSSes->wdiBssType == WDI_IBSS_MODE)
Jeff Johnson295189b2012-06-20 16:38:30 -070016355 {
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -080016356 (void)WDI_STATableDelSta( pWDICtx, pBSSSes->bcastStaIdx );
Madan Mohan Koyyalamudif371f172012-10-31 16:35:43 -070016357 }
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -080016358
16359 /* Delete the STA's in this BSS */
16360 WDI_STATableBSSDelSta(pWDICtx, halDelBssRspMsg.deleteBssRspParams.bssIdx);
16361
Jeff Johnson295189b2012-06-20 16:38:30 -070016362 wpalMutexRelease(&pWDICtx->wptMutex);
16363
16364 /*Notify UMAC*/
16365 wdiDelBSSRspCb( &wdiDelBSSParams, pWDICtx->pRspCBUserData);
16366
Jeff Johnsone7245742012-09-05 17:12:55 -070016367 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016368}/*WDI_ProcessDelBSSRsp*/
16369
16370/**
16371 @brief Process Post Assoc Rsp function (called when a response
16372 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016373
16374 @param pWDICtx: pointer to the WLAN DAL context
16375 pEventData: pointer to the event information structure
16376
Jeff Johnson295189b2012-06-20 16:38:30 -070016377 @see
16378 @return Result of the function call
16379*/
16380WDI_Status
16381WDI_ProcessPostAssocRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016382(
Jeff Johnson295189b2012-06-20 16:38:30 -070016383 WDI_ControlBlockType* pWDICtx,
16384 WDI_EventInfoType* pEventData
16385)
16386{
16387 WDI_PostAssocRspParamsType wdiPostAssocParams;
16388 WDI_PostAssocRspCb wdiPostAssocRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070016389 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070016390 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070016391 tPostAssocRspMsg halPostAssocRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070016392 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16393
16394 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016395 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016396 -------------------------------------------------------------------------*/
16397 if (( NULL == pEventData ) ||
16398 ( NULL == pEventData->pEventData))
16399 {
16400 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016401 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016402 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016403 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016404 }
16405
16406 wdiPostAssocRspCb = (WDI_PostAssocRspCb)pWDICtx->pfncRspCB;
16407
16408 /*-------------------------------------------------------------------------
16409 Extract response and send it to UMAC
16410 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016411 wpalMemoryCopy( &halPostAssocRspMsg.postAssocRspParams,
16412 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016413 sizeof(halPostAssocRspMsg.postAssocRspParams));
16414
16415 /*Extract the Post Assoc STA Params */
16416
Jeff Johnsone7245742012-09-05 17:12:55 -070016417 wdiPostAssocParams.staParams.ucSTAIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070016418 halPostAssocRspMsg.postAssocRspParams.configStaRspParams.staIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016419 wdiPostAssocParams.staParams.ucUcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070016420 halPostAssocRspMsg.postAssocRspParams.configStaRspParams.ucUcastSig;
Jeff Johnsone7245742012-09-05 17:12:55 -070016421 wdiPostAssocParams.staParams.ucBcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070016422 halPostAssocRspMsg.postAssocRspParams.configStaRspParams.ucBcastSig;
16423
Jeff Johnsone7245742012-09-05 17:12:55 -070016424 wdiPostAssocParams.wdiStatus =
16425 WDI_HAL_2_WDI_STATUS(halPostAssocRspMsg.postAssocRspParams.configStaRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070016426
16427 /*Copy the MAC addresses from the cached storage in the WDI CB as they are not
16428 included in the response */
Jeff Johnsone7245742012-09-05 17:12:55 -070016429 wpalMemoryCopy( wdiPostAssocParams.staParams.macSTA,
16430 pWDICtx->wdiCachedPostAssocReq.wdiSTAParams.macSTA,
Jeff Johnson295189b2012-06-20 16:38:30 -070016431 WDI_MAC_ADDR_LEN);
16432
16433 /* Extract Post Assoc BSS Params */
16434
Jeff Johnsone7245742012-09-05 17:12:55 -070016435 wpalMemoryCopy( wdiPostAssocParams.bssParams.macBSSID,
16436 pWDICtx->wdiCachedPostAssocReq.wdiBSSParams.macBSSID,
16437 WDI_MAC_ADDR_LEN);
Jeff Johnson295189b2012-06-20 16:38:30 -070016438
16439 /*Copy the MAC addresses from the cached storage in the WDI CB as they are not
16440 included in the response */
Jeff Johnsone7245742012-09-05 17:12:55 -070016441 wpalMemoryCopy( wdiPostAssocParams.bssParams.macSTA,
Jeff Johnson295189b2012-06-20 16:38:30 -070016442 pWDICtx->wdiCachedPostAssocReq.wdiBSSParams.wdiSTAContext
16443 .macSTA, WDI_MAC_ADDR_LEN);
16444
Jeff Johnsone7245742012-09-05 17:12:55 -070016445 wdiPostAssocParams.bssParams.ucBcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070016446 halPostAssocRspMsg.postAssocRspParams.configStaRspParams.ucBcastSig;
16447
Jeff Johnsone7245742012-09-05 17:12:55 -070016448 wdiPostAssocParams.bssParams.ucUcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070016449 halPostAssocRspMsg.postAssocRspParams.configStaRspParams.ucUcastSig;
16450
16451 wdiPostAssocParams.bssParams.ucBSSIdx =
16452 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bssIdx;
16453
Jeff Johnsone7245742012-09-05 17:12:55 -070016454 wdiPostAssocParams.bssParams.ucSTAIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070016455 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bssStaIdx;
16456
16457 wpalMutexAcquire(&pWDICtx->wptMutex);
16458
16459 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016460 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070016461 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016462 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
Jeff Johnson295189b2012-06-20 16:38:30 -070016463 wdiPostAssocParams.bssParams.
Jeff Johnsone7245742012-09-05 17:12:55 -070016464 macBSSID, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070016465
16466 /*-----------------------------------------------------------------------
16467 Post assoc response can only be received for an existing assoc that
Jeff Johnsone7245742012-09-05 17:12:55 -070016468 is current and in progress
Jeff Johnson295189b2012-06-20 16:38:30 -070016469 -----------------------------------------------------------------------*/
16470 if (( NULL == pBSSSes ) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070016471 ( ucCurrentBSSSesIdx != pWDICtx->ucCurrentBSSSesIdx ) ||
Jeff Johnson295189b2012-06-20 16:38:30 -070016472 ( eWLAN_PAL_FALSE == pWDICtx->bAssociationInProgress ))
16473 {
16474 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16475 "Association sequence for this BSS does not yet exist or "
16476 "association no longer in progress - mysterious HAL response");
16477
Jeff Johnsone7245742012-09-05 17:12:55 -070016478 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
16479
Jeff Johnson295189b2012-06-20 16:38:30 -070016480 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070016481 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070016482 }
16483
16484 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016485 Post Assoc Request is only allowed in Joining state
Jeff Johnson295189b2012-06-20 16:38:30 -070016486 -----------------------------------------------------------------------*/
16487 if ( WDI_ASSOC_JOINING_ST != pBSSSes->wdiAssocState)
16488 {
16489 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16490 "Post Assoc not allowed before JOIN - failing request "
16491 "strange HAL response");
16492
Jeff Johnsone7245742012-09-05 17:12:55 -070016493 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
16494
Jeff Johnson295189b2012-06-20 16:38:30 -070016495 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070016496 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070016497 }
16498
16499 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016500 If assoc has failed the current session will be deleted
Jeff Johnson295189b2012-06-20 16:38:30 -070016501 -----------------------------------------------------------------------*/
16502 if ( WDI_STATUS_SUCCESS != wdiPostAssocParams.wdiStatus )
16503 {
16504 /*Association was failed by HAL - remove session*/
16505 WDI_DeleteSession(pWDICtx, pBSSSes);
16506 }
16507 else
16508 {
16509 /*Transition to state POST Assoc*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016510 pBSSSes->wdiAssocState = WDI_ASSOC_POST_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -070016511
16512 /*Save DPU Info*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016513 pBSSSes->bcastMgmtDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070016514 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.mgmtDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016515 pBSSSes->bcastMgmtDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070016516 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.mgmtDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070016517 pBSSSes->bcastDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070016518 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bcastDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016519 pBSSSes->bcastDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070016520 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bcastDpuSignature;
16521
Jeff Johnsone7245742012-09-05 17:12:55 -070016522 pBSSSes->ucBSSIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070016523 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bssIdx;
16524 }
16525
16526 /*Association no longer in progress */
16527 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
16528
16529 /*Association no longer in progress - prepare pending assoc for processing*/
16530 WDI_DequeueAssocRequest(pWDICtx);
16531
16532 wpalMutexRelease(&pWDICtx->wptMutex);
16533
16534 /*Notify UMAC*/
16535 wdiPostAssocRspCb( &wdiPostAssocParams, pWDICtx->pRspCBUserData);
16536
Jeff Johnsone7245742012-09-05 17:12:55 -070016537 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016538}/*WDI_ProcessPostAssocRsp*/
16539
16540/**
Jeff Johnsone7245742012-09-05 17:12:55 -070016541 @brief Process Del STA Rsp function (called when a response is
Jeff Johnson295189b2012-06-20 16:38:30 -070016542 being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016543
16544 @param pWDICtx: pointer to the WLAN DAL context
16545 pEventData: pointer to the event information structure
16546
Jeff Johnson295189b2012-06-20 16:38:30 -070016547 @see
16548 @return Result of the function call
16549*/
16550WDI_Status
16551WDI_ProcessDelSTARsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016552(
Jeff Johnson295189b2012-06-20 16:38:30 -070016553 WDI_ControlBlockType* pWDICtx,
16554 WDI_EventInfoType* pEventData
16555)
16556{
16557 WDI_DelSTARspParamsType wdiDelSTARsp;
16558 WDI_DelSTARspCb wdiDelSTARspCb;
16559 wpt_uint8 staType;
Jeff Johnsone7245742012-09-05 17:12:55 -070016560 tDeleteStaRspMsg halDelStaRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070016561 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16562
16563 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016564 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016565 -------------------------------------------------------------------------*/
16566 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16567 ( NULL == pEventData->pEventData))
16568 {
16569 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016570 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016571 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016572 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016573 }
16574
16575 wdiDelSTARspCb = (WDI_DelSTARspCb)pWDICtx->pfncRspCB;
16576
16577 /*-------------------------------------------------------------------------
16578 Extract response and send it to UMAC
16579 -------------------------------------------------------------------------*/
16580 wpalMemoryCopy( &halDelStaRspMsg.delStaRspParams,
Jeff Johnsone7245742012-09-05 17:12:55 -070016581 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016582 sizeof(halDelStaRspMsg.delStaRspParams));
16583
16584 wdiDelSTARsp.ucSTAIdx = halDelStaRspMsg.delStaRspParams.staId;
Jeff Johnsone7245742012-09-05 17:12:55 -070016585 wdiDelSTARsp.wdiStatus =
16586 WDI_HAL_2_WDI_STATUS(halDelStaRspMsg.delStaRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070016587
16588 WDI_STATableGetStaType(pWDICtx, wdiDelSTARsp.ucSTAIdx, &staType);
16589
16590 /* If the DEL STA request is for self STA do not delete it - Really weird!!What happens in concurrency */
16591 if(staType == WDI_STA_ENTRY_SELF)
16592 {
16593 WDI_StaStruct* pSTATable = (WDI_StaStruct*) pWDICtx->staTable;
16594
16595 /* At this point add the self-STA */
16596
16597 /*! TO DO: wdiAddSTAParam.ucWmmEnabled */
16598 /*! TO DO: wdiAddSTAParam.ucHTCapable */
16599 /*! TO DO: wdiAddSTAParam.ucRmfEnabled */
16600
16601#define WDI_DPU_SELF_STA_DEFAULT_IDX 0
16602#define WDI_DPU_SELF_STA_DEFAULT_SIG 0
16603
16604 //all DPU indices are the same for self STA
16605 pSTATable[wdiDelSTARsp.ucSTAIdx].dpuIndex = WDI_DPU_SELF_STA_DEFAULT_IDX;
16606 pSTATable[wdiDelSTARsp.ucSTAIdx].bcastDpuIndex = WDI_DPU_SELF_STA_DEFAULT_IDX;
16607 pSTATable[wdiDelSTARsp.ucSTAIdx].bcastMgmtDpuIndex = WDI_DPU_SELF_STA_DEFAULT_IDX;
16608 pSTATable[wdiDelSTARsp.ucSTAIdx].bcastDpuSignature = WDI_DPU_SELF_STA_DEFAULT_SIG;
16609 pSTATable[wdiDelSTARsp.ucSTAIdx].bcastMgmtDpuSignature = WDI_DPU_SELF_STA_DEFAULT_SIG;
16610 pSTATable[wdiDelSTARsp.ucSTAIdx].dpuSig = WDI_DPU_SELF_STA_DEFAULT_SIG;
Madan Mohan Koyyalamudi15a48f02012-10-05 17:13:53 -070016611
16612 pSTATable[wdiDelSTARsp.ucSTAIdx].bssIdx = WDI_BSS_INVALID_IDX;
Jeff Johnson295189b2012-06-20 16:38:30 -070016613 }
16614 else
16615 {
16616 //Delete the station in the table
16617 WDI_STATableDelSta( pWDICtx, wdiDelSTARsp.ucSTAIdx);
16618 }
16619
16620 /*Notify UMAC*/
16621 wdiDelSTARspCb( &wdiDelSTARsp, pWDICtx->pRspCBUserData);
16622
Jeff Johnsone7245742012-09-05 17:12:55 -070016623 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016624}/*WDI_ProcessDelSTARsp*/
16625
16626
16627/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070016628 Security Response Processing Functions
Jeff Johnson295189b2012-06-20 16:38:30 -070016629==========================================================================*/
16630
16631/**
16632 @brief Process Set BSS Key Rsp function (called when a response
16633 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016634
16635 @param pWDICtx: pointer to the WLAN DAL context
16636 pEventData: pointer to the event information structure
16637
Jeff Johnson295189b2012-06-20 16:38:30 -070016638 @see
16639 @return Result of the function call
16640*/
16641WDI_Status
16642WDI_ProcessSetBssKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016643(
Jeff Johnson295189b2012-06-20 16:38:30 -070016644 WDI_ControlBlockType* pWDICtx,
16645 WDI_EventInfoType* pEventData
16646)
16647{
16648 WDI_Status wdiStatus;
16649 eHalStatus halStatus;
16650 WDI_SetBSSKeyRspCb wdiSetBSSKeyRspCb;
16651 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16652
16653 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016654 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016655 -------------------------------------------------------------------------*/
16656 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16657 ( NULL == pEventData->pEventData))
16658 {
16659 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016660 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016661 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016662 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016663 }
16664
16665 wdiSetBSSKeyRspCb = (WDI_SetBSSKeyRspCb)pWDICtx->pfncRspCB;
16666
16667 /*-------------------------------------------------------------------------
16668 Extract response and send it to UMAC
16669 -------------------------------------------------------------------------*/
16670 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070016671 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016672
16673 if ( eHAL_STATUS_SUCCESS != halStatus )
16674 {
16675 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16676 "Set BSS Key failed with status %s (%d)",
16677 WDI_getHALStatusMsgString(halStatus),
16678 halStatus);
16679 /* send the status to UMAC, don't return from here*/
16680 }
16681
16682 /*Notify UMAC*/
16683 wdiSetBSSKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16684
Jeff Johnsone7245742012-09-05 17:12:55 -070016685 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016686}/*WDI_ProcessSetBssKeyRsp*/
16687
16688/**
16689 @brief Process Remove BSS Key Rsp function (called when a response
16690 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016691
16692 @param pWDICtx: pointer to the WLAN DAL context
16693 pEventData: pointer to the event information structure
16694
Jeff Johnson295189b2012-06-20 16:38:30 -070016695 @see
16696 @return Result of the function call
16697*/
16698WDI_Status
16699WDI_ProcessRemoveBssKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016700(
Jeff Johnson295189b2012-06-20 16:38:30 -070016701 WDI_ControlBlockType* pWDICtx,
16702 WDI_EventInfoType* pEventData
16703)
16704{
16705 WDI_Status wdiStatus;
16706 eHalStatus halStatus;
16707 WDI_RemoveBSSKeyRspCb wdiRemoveBSSKeyRspCb;
16708 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16709
16710 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016711 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016712 -------------------------------------------------------------------------*/
16713 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16714 ( NULL == pEventData->pEventData))
16715 {
16716 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016717 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016718 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016719 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016720 }
16721
16722 wdiRemoveBSSKeyRspCb = (WDI_RemoveBSSKeyRspCb)pWDICtx->pfncRspCB;
16723
16724 /*-------------------------------------------------------------------------
16725 Extract response and send it to UMAC
16726 -------------------------------------------------------------------------*/
16727 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070016728 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016729
16730 if ( eHAL_STATUS_SUCCESS != halStatus )
16731 {
16732 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16733 "Remove BSS Key failed with status %s (%d )",
16734 WDI_getHALStatusMsgString(halStatus),
16735 halStatus);
16736 /* send the status to UMAC, don't return from here*/
16737 }
16738
16739 /*Notify UMAC*/
16740 wdiRemoveBSSKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16741
Jeff Johnsone7245742012-09-05 17:12:55 -070016742 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016743}/*WDI_ProcessSetBssKeyRsp*/
16744
16745
16746/**
16747 @brief Process Set STA Key Rsp function (called when a response
16748 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016749
16750 @param pWDICtx: pointer to the WLAN DAL context
16751 pEventData: pointer to the event information structure
16752
Jeff Johnson295189b2012-06-20 16:38:30 -070016753 @see
16754 @return Result of the function call
16755*/
16756WDI_Status
16757WDI_ProcessSetStaKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016758(
Jeff Johnson295189b2012-06-20 16:38:30 -070016759 WDI_ControlBlockType* pWDICtx,
16760 WDI_EventInfoType* pEventData
16761)
16762{
16763 WDI_Status wdiStatus;
16764 eHalStatus halStatus;
16765 WDI_SetSTAKeyRspCb wdiSetSTAKeyRspCb;
16766 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16767
16768 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016769 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016770 -------------------------------------------------------------------------*/
16771 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16772 ( NULL == pEventData->pEventData))
16773 {
16774 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016775 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016776 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016777 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016778 }
16779
16780 wdiSetSTAKeyRspCb = (WDI_SetSTAKeyRspCb)pWDICtx->pfncRspCB;
16781
16782 /*-------------------------------------------------------------------------
16783 Extract response and send it to UMAC
16784 -------------------------------------------------------------------------*/
16785 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070016786 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016787
16788 if ( eHAL_STATUS_SUCCESS != halStatus )
16789 {
16790 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16791 "Set STA Key failed with status %s (%d)",
16792 WDI_getHALStatusMsgString(halStatus),
16793 halStatus);
16794 /* send the status to UMAC, don't return from here*/
16795 }
16796
16797 /*Notify UMAC*/
16798 wdiSetSTAKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16799
Jeff Johnsone7245742012-09-05 17:12:55 -070016800 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016801}/*WDI_ProcessSetSTAKeyRsp*/
16802
16803/**
Jeff Johnsone7245742012-09-05 17:12:55 -070016804 @brief Process Remove STA Key Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070016805 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016806
16807 @param pWDICtx: pointer to the WLAN DAL context
16808 pEventData: pointer to the event information structure
16809
Jeff Johnson295189b2012-06-20 16:38:30 -070016810 @see
16811 @return Result of the function call
16812*/
16813WDI_Status
16814WDI_ProcessRemoveStaKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016815(
Jeff Johnson295189b2012-06-20 16:38:30 -070016816 WDI_ControlBlockType* pWDICtx,
16817 WDI_EventInfoType* pEventData
16818)
16819{
16820 WDI_Status wdiStatus;
16821 eHalStatus halStatus;
16822 WDI_RemoveSTAKeyRspCb wdiRemoveSTAKeyRspCb;
16823 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16824
16825 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016826 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016827 -------------------------------------------------------------------------*/
16828 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16829 ( NULL == pEventData->pEventData))
16830 {
16831 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016832 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016833 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016834 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016835 }
16836
16837 wdiRemoveSTAKeyRspCb = (WDI_RemoveSTAKeyRspCb)pWDICtx->pfncRspCB;
16838
16839 /*-------------------------------------------------------------------------
16840 Extract response and send it to UMAC
16841 -------------------------------------------------------------------------*/
16842 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070016843 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016844
16845 if ( eHAL_STATUS_SUCCESS != halStatus )
16846 {
16847 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16848 "Remove STA Key failed with status %s (%d)",
16849 WDI_getHALStatusMsgString(halStatus),
16850 halStatus);
16851 /* send the status to UMAC, don't return from here*/
16852 }
16853
16854 /*Notify UMAC*/
16855 wdiRemoveSTAKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16856
Jeff Johnsone7245742012-09-05 17:12:55 -070016857 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016858}/*WDI_ProcessRemoveStaKeyRsp*/
16859
16860/**
Jeff Johnsone7245742012-09-05 17:12:55 -070016861 @brief Process Set STA Bcast Key Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070016862 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016863
16864 @param pWDICtx: pointer to the WLAN DAL context
16865 pEventData: pointer to the event information structure
16866
Jeff Johnson295189b2012-06-20 16:38:30 -070016867 @see
16868 @return Result of the function call
16869*/
16870WDI_Status
16871WDI_ProcessSetStaBcastKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016872(
Jeff Johnson295189b2012-06-20 16:38:30 -070016873 WDI_ControlBlockType* pWDICtx,
16874 WDI_EventInfoType* pEventData
16875)
16876{
16877 WDI_Status wdiStatus;
16878 eHalStatus halStatus;
16879 WDI_SetSTAKeyRspCb wdiSetSTABcastKeyRspCb;
16880 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16881
16882 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016883 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016884 -------------------------------------------------------------------------*/
16885 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16886 ( NULL == pEventData->pEventData))
16887 {
16888 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016889 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016890 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016891 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016892 }
16893
16894 wdiSetSTABcastKeyRspCb = (WDI_SetSTAKeyRspCb)pWDICtx->pfncRspCB;
16895
16896 /*-------------------------------------------------------------------------
16897 Extract response and send it to UMAC
16898 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016899 wpalMemoryCopy( &halStatus,
16900 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016901 sizeof(halStatus));
16902
Jeff Johnsone7245742012-09-05 17:12:55 -070016903 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016904
16905 if ( eHAL_STATUS_SUCCESS != halStatus )
16906 {
16907 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16908 "Set STA Key failed with status %s (%d)",
16909 WDI_getHALStatusMsgString(halStatus),
16910 halStatus);
16911 /* send the status to UMAC, don't return from here*/
16912 }
16913
16914 /*Notify UMAC*/
16915 wdiSetSTABcastKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16916
Jeff Johnsone7245742012-09-05 17:12:55 -070016917 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016918}/*WDI_ProcessSetSTABcastKeyRsp*/
16919
16920/**
16921 @brief Process Remove STA Bcast Key Rsp function (called when a
16922 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016923
16924 @param pWDICtx: pointer to the WLAN DAL context
16925 pEventData: pointer to the event information structure
16926
Jeff Johnson295189b2012-06-20 16:38:30 -070016927 @see
16928 @return Result of the function call
16929*/
16930WDI_Status
16931WDI_ProcessRemoveStaBcastKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016932(
Jeff Johnson295189b2012-06-20 16:38:30 -070016933 WDI_ControlBlockType* pWDICtx,
16934 WDI_EventInfoType* pEventData
16935)
16936{
16937 WDI_Status wdiStatus;
16938 eHalStatus halStatus;
16939 WDI_RemoveSTAKeyRspCb wdiRemoveSTABcastKeyRspCb;
16940 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16941
16942 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016943 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016944 -------------------------------------------------------------------------*/
16945 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16946 ( NULL == pEventData->pEventData))
16947 {
16948 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016949 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016950 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016951 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016952 }
16953
16954 wdiRemoveSTABcastKeyRspCb = (WDI_RemoveSTAKeyRspCb)pWDICtx->pfncRspCB;
16955
16956 /*-------------------------------------------------------------------------
16957 Extract response and send it to UMAC
16958 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016959 wpalMemoryCopy( &halStatus,
16960 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016961 sizeof(halStatus));
16962
Jeff Johnsone7245742012-09-05 17:12:55 -070016963 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016964
16965 if ( eHAL_STATUS_SUCCESS != halStatus )
16966 {
16967 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16968 "Remove STA Key failed with status %s (%d)",
16969 WDI_getHALStatusMsgString(halStatus),
16970 halStatus);
16971 /* send the status to UMAC, don't return from here*/
16972 }
16973
16974 /*Notify UMAC*/
16975 wdiRemoveSTABcastKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16976
Jeff Johnsone7245742012-09-05 17:12:55 -070016977 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016978}/*WDI_ProcessRemoveStaBcastKeyRsp*/
16979
16980
16981/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070016982 QoS and BA Response Processing Functions
Jeff Johnson295189b2012-06-20 16:38:30 -070016983==========================================================================*/
16984
16985/**
16986 @brief Process Add TSpec Rsp function (called when a response
16987 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016988
16989 @param pWDICtx: pointer to the WLAN DAL context
16990 pEventData: pointer to the event information structure
16991
Jeff Johnson295189b2012-06-20 16:38:30 -070016992 @see
16993 @return Result of the function call
16994*/
16995WDI_Status
16996WDI_ProcessAddTSpecRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016997(
Jeff Johnson295189b2012-06-20 16:38:30 -070016998 WDI_ControlBlockType* pWDICtx,
16999 WDI_EventInfoType* pEventData
17000)
17001{
17002 WDI_Status wdiStatus;
17003 eHalStatus halStatus;
17004 WDI_AddTsRspCb wdiAddTsRspCb;
17005 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17006
17007 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017008 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017009 -------------------------------------------------------------------------*/
17010 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17011 ( NULL == pEventData->pEventData))
17012 {
17013 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017014 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017015 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017016 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017017 }
17018
17019 wdiAddTsRspCb = (WDI_AddTsRspCb)pWDICtx->pfncRspCB;
17020
17021 /*-------------------------------------------------------------------------
17022 Extract response and send it to UMAC
17023 -------------------------------------------------------------------------*/
17024 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070017025 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017026
17027 /*Notify UMAC*/
17028 wdiAddTsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17029
Jeff Johnsone7245742012-09-05 17:12:55 -070017030 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017031}/*WDI_ProcessAddTSpecRsp*/
17032
17033
Sunil Duttbd736ed2014-05-26 21:19:41 +053017034
17035#ifdef WLAN_FEATURE_LINK_LAYER_STATS
17036
17037WDI_Status
17038WDI_ProcessLLStatsSetRsp
17039(
17040 WDI_ControlBlockType* pWDICtx,
17041 WDI_EventInfoType* pEventData
17042)
17043{
17044 WDI_LLStatsSetRspCb wdiLLStatsSetRspCb;
17045
17046 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17047 "%s: Enter ", __func__);
17048 /*-------------------------------------------------------------------------
17049 Sanity check
17050 -------------------------------------------------------------------------*/
17051 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17052 ( NULL == pEventData->pEventData))
17053 {
17054 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
17055 "%s: Invalid parameters", __func__);
17056 WDI_ASSERT(0);
17057 return WDI_STATUS_E_FAILURE;
17058 }
17059
17060 wdiLLStatsSetRspCb = (WDI_LLStatsSetRspCb)pWDICtx->pfncRspCB;
17061
17062 wdiLLStatsSetRspCb((void *) pEventData->pEventData, pWDICtx->pRspCBUserData);
17063
17064 return WDI_STATUS_SUCCESS;
17065}
17066
17067WDI_Status
17068WDI_ProcessLLStatsGetRsp
17069(
17070 WDI_ControlBlockType* pWDICtx,
17071 WDI_EventInfoType* pEventData
17072)
17073{
17074 WDI_LLStatsGetRspCb wdiLLStatsGetRspCb;
17075
17076 /*-------------------------------------------------------------------------
17077 Sanity check
17078 -------------------------------------------------------------------------*/
17079 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17080 ( NULL == pEventData->pEventData))
17081 {
17082 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
17083 "%s: Invalid parameters", __func__);
17084 WDI_ASSERT(0);
17085 return WDI_STATUS_E_FAILURE;
17086 }
17087 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17088 "%s: Enter ", __func__);
17089
17090 wdiLLStatsGetRspCb = (WDI_LLStatsGetRspCb)pWDICtx->pfncRspCB;
17091
17092 wdiLLStatsGetRspCb((void *) pEventData->pEventData, pWDICtx->pRspCBUserData);
17093
17094 return WDI_STATUS_SUCCESS;
17095}
17096
17097WDI_Status
17098WDI_ProcessLLStatsClearRsp
17099(
17100 WDI_ControlBlockType* pWDICtx,
17101 WDI_EventInfoType* pEventData
17102)
17103{
17104 WDI_LLStatsClearRspCb wdiLLStatsClearRspCb;
17105
17106 /*-------------------------------------------------------------------------
17107 Sanity check
17108 -------------------------------------------------------------------------*/
17109 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17110 ( NULL == pEventData->pEventData))
17111 {
17112 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
17113 "%s: Invalid parameters", __func__);
17114 WDI_ASSERT(0);
17115 return WDI_STATUS_E_FAILURE;
17116 }
17117
17118 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17119 "%s: CLEAR RESPONSE CALL BACK", __func__);
17120 wdiLLStatsClearRspCb = (WDI_LLStatsClearRspCb)pWDICtx->pfncRspCB;
17121
17122 wdiLLStatsClearRspCb((void *) pEventData->pEventData, pWDICtx->pRspCBUserData);
17123
17124 return WDI_STATUS_SUCCESS;
17125}
17126#endif /* WLAN_FEATURE_LINK_LAYER_STATS */
17127
Jeff Johnson295189b2012-06-20 16:38:30 -070017128/**
17129 @brief Process Del TSpec Rsp function (called when a response
17130 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017131
17132 @param pWDICtx: pointer to the WLAN DAL context
17133 pEventData: pointer to the event information structure
17134
Jeff Johnson295189b2012-06-20 16:38:30 -070017135 @see
17136 @return Result of the function call
17137*/
17138WDI_Status
17139WDI_ProcessDelTSpecRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017140(
Jeff Johnson295189b2012-06-20 16:38:30 -070017141 WDI_ControlBlockType* pWDICtx,
17142 WDI_EventInfoType* pEventData
17143)
17144{
17145 WDI_Status wdiStatus;
17146 eHalStatus halStatus;
17147 WDI_DelTsRspCb wdiDelTsRspCb;
17148 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17149
17150 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017151 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017152 -------------------------------------------------------------------------*/
17153 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17154 ( NULL == pEventData->pEventData))
17155 {
17156 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017157 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017158 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017159 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017160 }
17161
17162 wdiDelTsRspCb = (WDI_DelTsRspCb)pWDICtx->pfncRspCB;
17163
17164 /*-------------------------------------------------------------------------
17165 Extract response and send it to UMAC
17166 -------------------------------------------------------------------------*/
17167 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070017168 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017169
17170 /*Notify UMAC*/
17171 wdiDelTsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17172
Jeff Johnsone7245742012-09-05 17:12:55 -070017173 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017174}/*WDI_ProcessDelTSpecRsp*/
17175
17176/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017177 @brief Process Update EDCA Parameters Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070017178 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017179
17180 @param pWDICtx: pointer to the WLAN DAL context
17181 pEventData: pointer to the event information structure
17182
Jeff Johnson295189b2012-06-20 16:38:30 -070017183 @see
17184 @return Result of the function call
17185*/
17186WDI_Status
17187WDI_ProcessUpdateEDCAParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017188(
Jeff Johnson295189b2012-06-20 16:38:30 -070017189 WDI_ControlBlockType* pWDICtx,
17190 WDI_EventInfoType* pEventData
17191)
17192{
17193 WDI_Status wdiStatus;
17194 eHalStatus halStatus;
17195 WDI_UpdateEDCAParamsRspCb wdiUpdateEDCAParamsRspCb;
17196 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17197
17198 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017199 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017200 -------------------------------------------------------------------------*/
17201 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17202 ( NULL == pEventData->pEventData))
17203 {
17204 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017205 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017206 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017207 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017208 }
17209
17210 wdiUpdateEDCAParamsRspCb = (WDI_UpdateEDCAParamsRspCb)pWDICtx->pfncRspCB;
17211
17212 /*-------------------------------------------------------------------------
17213 Extract response and send it to UMAC
17214 -------------------------------------------------------------------------*/
17215 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070017216 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017217
17218 /*Notify UMAC*/
17219 wdiUpdateEDCAParamsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17220
Jeff Johnsone7245742012-09-05 17:12:55 -070017221 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017222}/*WDI_ProcessUpdateEDCAParamsRsp*/
17223
17224
17225/**
17226 @brief Process Add BA Rsp function (called when a response
17227 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017228
17229 @param pWDICtx: pointer to the WLAN DAL context
17230 pEventData: pointer to the event information structure
17231
Jeff Johnson295189b2012-06-20 16:38:30 -070017232 @see
17233 @return Result of the function call
17234*/
17235WDI_Status
17236WDI_ProcessAddBASessionRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017237(
Jeff Johnson295189b2012-06-20 16:38:30 -070017238 WDI_ControlBlockType* pWDICtx,
17239 WDI_EventInfoType* pEventData
17240)
17241{
17242 WDI_AddBASessionRspCb wdiAddBASessionRspCb;
17243
17244 tAddBASessionRspParams halBASessionRsp;
17245 WDI_AddBASessionRspParamsType wdiBASessionRsp;
17246
Jeff Johnsone7245742012-09-05 17:12:55 -070017247
Jeff Johnson295189b2012-06-20 16:38:30 -070017248 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17249
17250 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017251 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017252 -------------------------------------------------------------------------*/
17253 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17254 ( NULL == pEventData->pEventData))
17255 {
17256 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017257 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017258 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017259 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017260 }
17261
17262 wdiAddBASessionRspCb = (WDI_AddBASessionRspCb)pWDICtx->pfncRspCB;
17263
17264 /*-------------------------------------------------------------------------
17265 Extract response and send it to UMAC
17266 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017267 wpalMemoryCopy( &halBASessionRsp,
17268 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017269 sizeof(halBASessionRsp));
17270
17271 wdiBASessionRsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halBASessionRsp.status);
17272
Jeff Johnson43971f52012-07-17 12:26:56 -070017273 if ( WDI_STATUS_SUCCESS == wdiBASessionRsp.wdiStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070017274 {
17275 wdiBASessionRsp.ucBaDialogToken = halBASessionRsp.baDialogToken;
17276 wdiBASessionRsp.ucBaTID = halBASessionRsp.baTID;
17277 wdiBASessionRsp.ucBaBufferSize = halBASessionRsp.baBufferSize;
17278 wdiBASessionRsp.usBaSessionID = halBASessionRsp.baSessionID;
17279 wdiBASessionRsp.ucWinSize = halBASessionRsp.winSize;
17280 wdiBASessionRsp.ucSTAIdx = halBASessionRsp.STAID;
17281 wdiBASessionRsp.usBaSSN = halBASessionRsp.SSN;
17282 }
17283
17284 /*Notify UMAC*/
17285 wdiAddBASessionRspCb( &wdiBASessionRsp, pWDICtx->pRspCBUserData);
17286
Jeff Johnsone7245742012-09-05 17:12:55 -070017287 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017288}/*WDI_ProcessAddSessionBARsp*/
17289
17290
17291/**
17292 @brief Process Del BA Rsp function (called when a response
17293 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017294
17295 @param pWDICtx: pointer to the WLAN DAL context
17296 pEventData: pointer to the event information structure
17297
Jeff Johnson295189b2012-06-20 16:38:30 -070017298 @see
17299 @return Result of the function call
17300*/
17301WDI_Status
17302WDI_ProcessDelBARsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017303(
Jeff Johnson295189b2012-06-20 16:38:30 -070017304 WDI_ControlBlockType* pWDICtx,
17305 WDI_EventInfoType* pEventData
17306)
17307{
17308 WDI_Status wdiStatus;
17309 eHalStatus halStatus;
17310 WDI_DelBARspCb wdiDelBARspCb;
17311 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17312
17313 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017314 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017315 -------------------------------------------------------------------------*/
17316 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17317 ( NULL == pEventData->pEventData))
17318 {
17319 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017320 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017321 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017322 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017323 }
17324
17325 wdiDelBARspCb = (WDI_DelBARspCb)pWDICtx->pfncRspCB;
17326
17327 /*-------------------------------------------------------------------------
17328 Extract response and send it to UMAC
17329 -------------------------------------------------------------------------*/
17330 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070017331 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017332
17333 if ( eHAL_STATUS_SUCCESS == halStatus )
17334 {
17335 /*! TO DO: I should notify the DAL Data Path that the BA was deleted*/
17336 }
17337
17338 /*Notify UMAC*/
17339 wdiDelBARspCb( wdiStatus, pWDICtx->pRspCBUserData);
17340
Jeff Johnsone7245742012-09-05 17:12:55 -070017341 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017342}/*WDI_ProcessDelBARsp*/
17343
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -080017344#ifdef FEATURE_WLAN_ESE
Jeff Johnson295189b2012-06-20 16:38:30 -070017345/**
17346 @brief Process TSM Stats Rsp function (called when a response
17347 is being received over the bus from HAL)
17348
17349 @param pWDICtx: pointer to the WLAN DAL context
17350 pEventData: pointer to the event information structure
17351
17352 @see
17353 @return Result of the function call
17354*/
17355WDI_Status
17356WDI_ProcessTsmStatsRsp
17357(
17358 WDI_ControlBlockType* pWDICtx,
17359 WDI_EventInfoType* pEventData
17360)
17361{
17362 WDI_TsmRspCb wdiTsmStatsRspCb;
17363 tTsmStatsRspMsg halTsmStatsRspMsg;
17364 WDI_TSMStatsRspParamsType wdiTsmStatsRspParams;
17365 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17366
17367 /*-------------------------------------------------------------------------
17368 Sanity check
17369 -------------------------------------------------------------------------*/
17370 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17371 ( NULL == pEventData->pEventData))
17372 {
17373 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017374 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017375 WDI_ASSERT(0);
17376 return WDI_STATUS_E_FAILURE;
17377 }
17378
17379 wdiTsmStatsRspCb = (WDI_TsmRspCb)pWDICtx->pfncRspCB;
17380
17381 /*-------------------------------------------------------------------------
17382 Unpack HAL Response Message - the header was already extracted by the
17383 main Response Handling procedure
17384 -------------------------------------------------------------------------*/
17385 wpalMemoryCopy( &halTsmStatsRspMsg.tsmStatsRspParams,
17386 pEventData->pEventData,
17387 sizeof(halTsmStatsRspMsg.tsmStatsRspParams));
17388
17389 wdiTsmStatsRspParams.UplinkPktQueueDly = halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktQueueDly;
17390 wpalMemoryCopy( wdiTsmStatsRspParams.UplinkPktQueueDlyHist,
17391 halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktQueueDlyHist,
17392 sizeof(halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktQueueDlyHist)/
17393 sizeof(halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktQueueDlyHist[0]));
17394 wdiTsmStatsRspParams.UplinkPktTxDly = halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktTxDly;
17395 wdiTsmStatsRspParams.UplinkPktLoss = halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktLoss;
17396 wdiTsmStatsRspParams.UplinkPktCount = halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktCount;
17397 wdiTsmStatsRspParams.RoamingCount = halTsmStatsRspMsg.tsmStatsRspParams.RoamingCount;
17398 wdiTsmStatsRspParams.RoamingDly = halTsmStatsRspMsg.tsmStatsRspParams.RoamingDly;
17399 wdiTsmStatsRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(
17400 halTsmStatsRspMsg.tsmStatsRspParams.status);
17401
17402 /*Notify UMAC*/
17403 wdiTsmStatsRspCb( &wdiTsmStatsRspParams, pWDICtx->pRspCBUserData);
17404
17405 return WDI_STATUS_SUCCESS;
17406}/*WDI_ProcessTsmStatsRsp*/
17407
17408#endif
17409
17410
17411
17412/**
17413 @brief Process Flush AC Rsp function (called when a response
17414 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017415
17416 @param pWDICtx: pointer to the WLAN DAL context
17417 pEventData: pointer to the event information structure
17418
Jeff Johnson295189b2012-06-20 16:38:30 -070017419 @see
17420 @return Result of the function call
17421*/
17422WDI_Status
17423WDI_ProcessFlushAcRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017424(
Jeff Johnson295189b2012-06-20 16:38:30 -070017425 WDI_ControlBlockType* pWDICtx,
17426 WDI_EventInfoType* pEventData
17427)
17428{
17429 WDI_Status wdiStatus;
17430 eHalStatus halStatus;
17431 WDI_FlushAcRspCb wdiFlushAcRspCb;
17432 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17433
17434 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017435 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017436 -------------------------------------------------------------------------*/
17437 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17438 ( NULL == pEventData->pEventData))
17439 {
17440 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017441 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017442 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017443 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017444 }
17445
17446 wdiFlushAcRspCb = (WDI_FlushAcRspCb)pWDICtx->pfncRspCB;
17447
17448 /*-------------------------------------------------------------------------
17449 Extract response and send it to UMAC
17450 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017451 wpalMemoryCopy( &halStatus,
17452 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017453 sizeof(halStatus));
17454
Jeff Johnsone7245742012-09-05 17:12:55 -070017455 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017456
17457 /*Notify UMAC*/
17458 wdiFlushAcRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17459
Jeff Johnsone7245742012-09-05 17:12:55 -070017460 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017461}/*WDI_ProcessFlushAcRsp*/
17462
17463/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017464 @brief Process BT AMP event Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070017465 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017466
17467 @param pWDICtx: pointer to the WLAN DAL context
17468 pEventData: pointer to the event information structure
17469
Jeff Johnson295189b2012-06-20 16:38:30 -070017470 @see
17471 @return Result of the function call
17472*/
17473WDI_Status
17474WDI_ProcessBtAmpEventRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017475(
Jeff Johnson295189b2012-06-20 16:38:30 -070017476 WDI_ControlBlockType* pWDICtx,
17477 WDI_EventInfoType* pEventData
17478)
17479{
17480 WDI_Status wdiStatus;
17481 eHalStatus halStatus;
17482 WDI_BtAmpEventRspCb wdiBtAmpEventRspCb;
17483 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17484
17485 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017486 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017487 -------------------------------------------------------------------------*/
17488 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17489 ( NULL == pEventData->pEventData))
17490 {
17491 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017492 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017493 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017494 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017495 }
17496
17497 wdiBtAmpEventRspCb = (WDI_BtAmpEventRspCb)pWDICtx->pfncRspCB;
17498
17499 /*-------------------------------------------------------------------------
17500 Extract response and send it to UMAC
17501 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017502 wpalMemoryCopy( &halStatus,
17503 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017504 sizeof(halStatus));
17505
Jeff Johnsone7245742012-09-05 17:12:55 -070017506 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017507
17508 /*Notify UMAC*/
17509 wdiBtAmpEventRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17510
Jeff Johnsone7245742012-09-05 17:12:55 -070017511 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017512}/*WDI_ProcessBtAmpEventRsp*/
17513
17514
17515/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017516 @brief Process ADD STA SELF Rsp function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070017517 when a response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017518
17519 @param pWDICtx: pointer to the WLAN DAL context
17520 pEventData: pointer to the event information structure
17521
Jeff Johnson295189b2012-06-20 16:38:30 -070017522 @see
17523 @return Result of the function call
17524*/
17525WDI_Status
17526WDI_ProcessAddSTASelfRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017527(
Jeff Johnson295189b2012-06-20 16:38:30 -070017528 WDI_ControlBlockType* pWDICtx,
17529 WDI_EventInfoType* pEventData
17530)
17531{
17532 WDI_AddSTASelfRspParamsType wdiAddSTASelfParams;
17533 WDI_AddSTASelfParamsRspCb wdiAddSTASelfReqParamsRspCb;
17534 tAddStaSelfRspMsg halAddStaSelfRsp;
17535 WDI_AddStaParams wdiAddSTAParam = {0};
17536 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17537
17538 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017539 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017540 -------------------------------------------------------------------------*/
17541 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17542 ( NULL == pEventData->pEventData))
17543 {
17544 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017545 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017546 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017547 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017548 }
17549
Jeff Johnsone7245742012-09-05 17:12:55 -070017550 wdiAddSTASelfReqParamsRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070017551 (WDI_AddSTASelfParamsRspCb)pWDICtx->pfncRspCB;
17552
17553 /*-------------------------------------------------------------------------
17554 Extract response and send it to UMAC
17555 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017556 wpalMemoryCopy( &halAddStaSelfRsp.addStaSelfRspParams,
17557 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017558 sizeof(halAddStaSelfRsp.addStaSelfRspParams));
17559
17560
Jeff Johnsone7245742012-09-05 17:12:55 -070017561 wdiAddSTASelfParams.wdiStatus =
17562 WDI_HAL_2_WDI_STATUS(halAddStaSelfRsp.addStaSelfRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070017563
Jeff Johnsone7245742012-09-05 17:12:55 -070017564 wdiAddSTASelfParams.ucSTASelfIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070017565 halAddStaSelfRsp.addStaSelfRspParams.selfStaIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070017566 wdiAddSTASelfParams.dpuIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070017567 halAddStaSelfRsp.addStaSelfRspParams.dpuIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070017568 wdiAddSTASelfParams.dpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070017569 halAddStaSelfRsp.addStaSelfRspParams.dpuSignature;
17570
17571 wpalMemoryCopy(wdiAddSTASelfParams.macSelfSta,
17572 pWDICtx->wdiCacheAddSTASelfReq.wdiAddSTASelfInfo.selfMacAddr,
17573 WDI_MAC_ADDR_LEN);
17574
17575
17576#ifdef HAL_SELF_STA_PER_BSS
17577
17578 /* At this point add the self-STA */
17579
17580 /*! TO DO: wdiAddSTAParam.ucWmmEnabled */
17581 /*! TO DO: wdiAddSTAParam.ucHTCapable */
17582 /*! TO DO: wdiAddSTAParam.ucRmfEnabled */
17583
17584 //all DPU indices are the same for self STA
17585
17586 /*DPU Information*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017587 wdiAddSTAParam.dpuIndex = wdiAddSTASelfParams.dpuIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070017588 wdiAddSTAParam.dpuSig = wdiAddSTASelfParams.dpuSignature;
17589 wdiAddSTAParam.bcastDpuSignature = wdiAddSTASelfParams.dpuSignature;
17590 wdiAddSTAParam.bcastMgmtDpuSignature = wdiAddSTASelfParams.dpuSignature;
17591 wdiAddSTAParam.bcastDpuIndex = wdiAddSTASelfParams.dpuIdx;
17592 wdiAddSTAParam.bcastMgmtDpuIndex = wdiAddSTASelfParams.dpuIdx;
17593
17594 wpalMemoryCopy(wdiAddSTAParam.staMacAddr, wdiAddSTASelfParams.macSelfSta,
17595 WDI_MAC_ADDR_LEN);
17596
17597 wdiAddSTAParam.ucStaType = WDI_STA_ENTRY_SELF; /* 0 - self */
17598 wdiAddSTAParam.ucSTAIdx = wdiAddSTASelfParams.ucSTASelfIdx;
17599
Jeff Johnsone7245742012-09-05 17:12:55 -070017600 if(halAddStaSelfRsp.addStaSelfRspParams.status
Jeff Johnson295189b2012-06-20 16:38:30 -070017601 != eHAL_STATUS_ADD_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO)
17602 {
17603 (void)WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
17604 }
17605#endif
17606
17607 /*Notify UMAC*/
17608 wdiAddSTASelfReqParamsRspCb( &wdiAddSTASelfParams, pWDICtx->pRspCBUserData);
17609
Jeff Johnsone7245742012-09-05 17:12:55 -070017610 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017611}/*WDI_ProcessAddSTASelfRsp*/
17612
17613
17614
17615/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017616 @brief WDI_ProcessDelSTASelfRsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070017617 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017618
17619 @param pWDICtx: pointer to the WLAN DAL context
17620 pEventData: pointer to the event information structure
17621
Jeff Johnson295189b2012-06-20 16:38:30 -070017622 @see
17623 @return Result of the function call
17624*/
17625WDI_Status
17626WDI_ProcessDelSTASelfRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017627(
Jeff Johnson295189b2012-06-20 16:38:30 -070017628 WDI_ControlBlockType* pWDICtx,
17629 WDI_EventInfoType* pEventData
17630)
17631{
17632 WDI_DelSTASelfRspParamsType wdiDelStaSelfRspParams;
17633 WDI_DelSTASelfRspCb wdiDelStaSelfRspCb;
17634 tDelStaSelfRspParams delStaSelfRspParams;
17635 wpt_uint8 ucStaIdx;
17636
17637 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17638
17639 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017640 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017641 -------------------------------------------------------------------------*/
17642 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17643 ( NULL == pEventData->pEventData))
17644 {
17645 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017646 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017647 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017648 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017649 }
17650
17651 wdiDelStaSelfRspCb = (WDI_DelSTASelfRspCb)pWDICtx->pfncRspCB;
17652
17653 /*-------------------------------------------------------------------------
17654 Extract response and send it to UMAC
17655 -------------------------------------------------------------------------*/
17656
Jeff Johnsone7245742012-09-05 17:12:55 -070017657 wpalMemoryCopy( &delStaSelfRspParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070017658 (wpt_uint8*)pEventData->pEventData,
17659 sizeof(tDelStaSelfRspParams));
17660
Jeff Johnsone7245742012-09-05 17:12:55 -070017661 wdiDelStaSelfRspParams.wdiStatus =
17662 WDI_HAL_2_WDI_STATUS(delStaSelfRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070017663
Jeff Johnsone7245742012-09-05 17:12:55 -070017664 /* delStaSelfRspParams.status is not
Jeff Johnson295189b2012-06-20 16:38:30 -070017665 eHAL_STATUS_DEL_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO*/
17666 if( eHAL_STATUS_SUCCESS == delStaSelfRspParams.status )
17667 {
17668 WDI_Status wdiStatus;
Jeff Johnsone7245742012-09-05 17:12:55 -070017669 wdiStatus = WDI_STATableFindStaidByAddr(pWDICtx,
Jeff Johnson295189b2012-06-20 16:38:30 -070017670 delStaSelfRspParams.selfMacAddr,
17671 &ucStaIdx);
17672 if(WDI_STATUS_E_FAILURE == wdiStatus)
17673 {
17674 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017675 "%s: Unable to extract the STA Idx ", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017676 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017677 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017678 }
17679 WDI_STATableDelSta(pWDICtx, ucStaIdx);
17680 }
17681
17682 /*Notify UMAC*/
17683 wdiDelStaSelfRspCb(&wdiDelStaSelfRspParams, (void*) pWDICtx->pRspCBUserData);
17684
17685 return WDI_STATUS_SUCCESS;
17686}
17687
Jeff Johnsone7245742012-09-05 17:12:55 -070017688#ifdef FEATURE_OEM_DATA_SUPPORT
17689/**
17690 @brief Start Oem Data Rsp function (called when a
17691 response is being received over the bus from HAL)
Jeff Johnson295189b2012-06-20 16:38:30 -070017692
Jeff Johnsone7245742012-09-05 17:12:55 -070017693 @param pWDICtx: pointer to the WLAN DAL context
17694 pEventData: pointer to the event information structure
17695
17696 @see
17697 @return Result of the function call
17698*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017699
17700WDI_Status
17701WDI_ProcessStartOemDataRsp
17702(
17703 WDI_ControlBlockType* pWDICtx,
17704 WDI_EventInfoType* pEventData
17705)
17706{
17707 WDI_oemDataRspCb wdiOemDataRspCb;
17708 WDI_oemDataRspParamsType* wdiOemDataRspParams;
17709 tStartOemDataRspParams* halStartOemDataRspParams;
17710
17711 /*-------------------------------------------------------------------------
17712 Sanity check
17713 -------------------------------------------------------------------------*/
17714 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17715 ( NULL == pEventData->pEventData))
17716 {
17717 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017718 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070017719 WDI_ASSERT(0);
17720 return WDI_STATUS_E_FAILURE;
17721 }
17722
17723 wdiOemDataRspCb = (WDI_oemDataRspCb)pWDICtx->pfncRspCB;
17724
17725 /*-------------------------------------------------------------------------
17726 Extract response and send it to UMAC
17727 -------------------------------------------------------------------------*/
17728 halStartOemDataRspParams = (tStartOemDataRspParams *)pEventData->pEventData;
17729
17730
17731 //It is the responsibility of the application code to check for failure
17732 //conditions!
17733
17734 //Allocate memory for WDI OEM DATA RSP structure
17735 wdiOemDataRspParams = wpalMemoryAllocate(sizeof(WDI_oemDataRspParamsType)) ;
17736
17737 if(NULL == wdiOemDataRspParams)
17738 {
17739 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080017740 "Failed to allocate memory in OEM DATA Response %p %p %p ",
Jeff Johnsone7245742012-09-05 17:12:55 -070017741 pWDICtx, pEventData, pEventData->pEventData);
17742 WDI_ASSERT(0);
17743 return WDI_STATUS_E_FAILURE;
17744 }
17745
17746 /* Populate WDI structure members */
17747 wpalMemoryCopy(wdiOemDataRspParams->oemDataRsp, halStartOemDataRspParams->oemDataRsp, OEM_DATA_RSP_SIZE);
17748
17749 /*Notify UMAC*/
17750 wdiOemDataRspCb(wdiOemDataRspParams, pWDICtx->pRspCBUserData);
17751
17752 //Free memory allocated for WDI OEM_DATA MEAS RSP structure
17753 wpalMemoryFree(wdiOemDataRspParams);
17754
17755 return WDI_STATUS_SUCCESS;
17756}/*WDI_PrcoessStartOemDataRsp*/
17757#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070017758
17759/*===========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070017760 Miscellaneous Control Response Processing API
Jeff Johnson295189b2012-06-20 16:38:30 -070017761===========================================================================*/
17762
17763/**
17764 @brief Process Channel Switch Rsp function (called when a response
17765 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017766
17767 @param pWDICtx: pointer to the WLAN DAL context
17768 pEventData: pointer to the event information structure
17769
Jeff Johnson295189b2012-06-20 16:38:30 -070017770 @see
17771 @return Result of the function call
17772*/
17773WDI_Status
17774WDI_ProcessChannelSwitchRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017775(
Jeff Johnson295189b2012-06-20 16:38:30 -070017776 WDI_ControlBlockType* pWDICtx,
17777 WDI_EventInfoType* pEventData
17778)
17779{
17780 WDI_SwitchCHRspParamsType wdiSwitchChRsp;
17781 WDI_SwitchChRspCb wdiChSwitchRspCb;
17782 tSwitchChannelRspParams halSwitchChannelRsp;
17783 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17784
17785 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017786 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017787 -------------------------------------------------------------------------*/
17788 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17789 ( NULL == pEventData->pEventData))
17790 {
17791 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017792 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017793 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017794 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017795 }
17796
17797 wdiChSwitchRspCb = (WDI_SwitchChRspCb)pWDICtx->pfncRspCB;
17798
17799 /*-------------------------------------------------------------------------
17800 Extract response and send it to UMAC
17801 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017802 wpalMemoryCopy( &halSwitchChannelRsp,
Jeff Johnson295189b2012-06-20 16:38:30 -070017803 (wpt_uint8*)pEventData->pEventData,
17804 sizeof(halSwitchChannelRsp));
17805
Jeff Johnsone7245742012-09-05 17:12:55 -070017806 wdiSwitchChRsp.wdiStatus =
17807 WDI_HAL_2_WDI_STATUS(halSwitchChannelRsp.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070017808 wdiSwitchChRsp.ucChannel = halSwitchChannelRsp.channelNumber;
17809
17810#ifdef WLAN_FEATURE_VOWIFI
Jeff Johnsone7245742012-09-05 17:12:55 -070017811 wdiSwitchChRsp.ucTxMgmtPower = halSwitchChannelRsp.txMgmtPower;
Jeff Johnson295189b2012-06-20 16:38:30 -070017812#endif
17813
17814 /*Notify UMAC*/
17815 wdiChSwitchRspCb( &wdiSwitchChRsp, pWDICtx->pRspCBUserData);
17816
Jeff Johnsone7245742012-09-05 17:12:55 -070017817 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017818}/*WDI_ProcessChannelSwitchRsp*/
17819
Kalikinkar dhara1e83b772014-02-06 12:59:22 -080017820/**
17821 @brief Process Channel Switch Rsp function (called when a response
17822 is being received over the bus from HAL against
17823 WDI_ProcessChannelSwitchReq_V1)
17824
17825 @param pWDICtx: pointer to the WLAN DAL context
17826 pEventData: pointer to the event information structure
17827
17828 @see
17829 @return Result of the function call
17830*/
17831
17832WDI_Status
17833WDI_ProcessChannelSwitchRsp_V1
17834(
17835 WDI_ControlBlockType* pWDICtx,
17836 WDI_EventInfoType* pEventData
17837)
17838{
17839 WDI_SwitchChRspParamsType_V1 wdiSwitchChRsp;
17840 WDI_SwitchChRspCb_V1 wdiChSwitchRspCb;
17841 tSwitchChannelRspParams_V1 halSwitchChannelRsp;
17842 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17843
17844 /*-------------------------------------------------------------------------
17845 Sanity check
17846 -------------------------------------------------------------------------*/
17847 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17848 ( NULL == pEventData->pEventData))
17849 {
17850 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17851 "%s: Invalid parameters", __func__);
17852 WDI_ASSERT(0);
17853 return WDI_STATUS_E_FAILURE;
17854 }
17855
17856 wdiChSwitchRspCb = (WDI_SwitchChRspCb_V1)pWDICtx->pfncRspCB;
17857
17858 /*-------------------------------------------------------------------------
17859 Extract response and send it to UMAC
17860 -------------------------------------------------------------------------*/
17861 wpalMemoryCopy( &halSwitchChannelRsp,
17862 (wpt_uint8*)pEventData->pEventData,
17863 sizeof(halSwitchChannelRsp));
17864
17865 wdiSwitchChRsp.wdiStatus =
17866 WDI_HAL_2_WDI_STATUS(halSwitchChannelRsp.status);
17867 wdiSwitchChRsp.ucChannel = halSwitchChannelRsp.channelNumber;
17868
17869#ifdef WLAN_FEATURE_VOWIFI
17870 wdiSwitchChRsp.ucTxMgmtPower = halSwitchChannelRsp.txMgmtPower;
17871#endif
17872
17873 wdiSwitchChRsp.channelSwitchSrc = halSwitchChannelRsp.channelSwitchSrc;
17874 if (( NULL == wdiChSwitchRspCb ) )
17875 {
17876 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17877 "%s: ### Call back function is null", __func__);
17878 WDI_ASSERT(0);
17879 return WDI_STATUS_E_FAILURE;
17880 }
17881 /*Notify UMAC*/
17882 wdiChSwitchRspCb( &wdiSwitchChRsp, pWDICtx->pRspCBUserData);
17883
17884 return WDI_STATUS_SUCCESS;
17885}/*WDI_ProcessChannelSwitchRsp_V1*/
Jeff Johnson295189b2012-06-20 16:38:30 -070017886
17887/**
17888 @brief Process Config STA Rsp function (called when a response
17889 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017890
17891 @param pWDICtx: pointer to the WLAN DAL context
17892 pEventData: pointer to the event information structure
17893
Jeff Johnson295189b2012-06-20 16:38:30 -070017894 @see
17895 @return Result of the function call
17896*/
17897WDI_Status
17898WDI_ProcessConfigStaRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017899(
Jeff Johnson295189b2012-06-20 16:38:30 -070017900 WDI_ControlBlockType* pWDICtx,
17901 WDI_EventInfoType* pEventData
17902)
17903{
17904 WDI_ConfigSTARspParamsType wdiCfgSTAParams;
17905 WDI_ConfigSTARspCb wdiConfigSTARspCb;
17906 WDI_AddStaParams wdiAddSTAParam;
17907
17908 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070017909 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070017910
Jeff Johnsone7245742012-09-05 17:12:55 -070017911 tConfigStaRspMsg halConfigStaRsp;
Jeff Johnson295189b2012-06-20 16:38:30 -070017912 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17913
17914 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017915 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017916 -------------------------------------------------------------------------*/
17917 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17918 ( NULL == pEventData->pEventData))
17919 {
17920 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017921 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017922 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017923 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017924 }
17925
17926 wdiConfigSTARspCb = (WDI_ConfigSTARspCb)pWDICtx->pfncRspCB;
17927
17928 /*-------------------------------------------------------------------------
17929 Extract response and send it to UMAC
17930 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017931 wpalMemoryCopy( &halConfigStaRsp.configStaRspParams,
17932 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017933 sizeof(halConfigStaRsp.configStaRspParams));
17934
17935
17936 wdiCfgSTAParams.ucSTAIdx = halConfigStaRsp.configStaRspParams.staIdx;
17937 wdiCfgSTAParams.ucBssIdx = halConfigStaRsp.configStaRspParams.bssIdx;
17938 wdiCfgSTAParams.ucUcastSig = halConfigStaRsp.configStaRspParams.ucUcastSig;
17939 wdiCfgSTAParams.ucBcastSig = halConfigStaRsp.configStaRspParams.ucBcastSig;
17940 wdiCfgSTAParams.ucMgmtSig = halConfigStaRsp.configStaRspParams.ucMgmtSig;
17941
17942 /* MAC Address of STA - take from cache as it does not come back in the
17943 response*/
17944 wpalMemoryCopy( wdiCfgSTAParams.macSTA,
Jeff Johnsone7245742012-09-05 17:12:55 -070017945 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.macSTA,
Jeff Johnson295189b2012-06-20 16:38:30 -070017946 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070017947
17948 wdiCfgSTAParams.wdiStatus =
17949 WDI_HAL_2_WDI_STATUS(halConfigStaRsp.configStaRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070017950
17951 wdiCfgSTAParams.ucDpuIndex = halConfigStaRsp.configStaRspParams.dpuIndex;
17952 wdiCfgSTAParams.ucBcastDpuIndex = halConfigStaRsp.configStaRspParams.bcastDpuIndex;
17953 wdiCfgSTAParams.ucBcastMgmtDpuIdx = halConfigStaRsp.configStaRspParams.bcastMgmtDpuIdx;
17954
17955 if ( WDI_STATUS_SUCCESS == wdiCfgSTAParams.wdiStatus )
17956 {
17957 if ( WDI_ADD_STA == pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.wdiAction )
17958 {
17959 /* ADD STA to table */
Jeff Johnsone7245742012-09-05 17:12:55 -070017960 wdiAddSTAParam.ucSTAIdx = halConfigStaRsp.configStaRspParams.staIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070017961 wdiAddSTAParam.dpuSig = halConfigStaRsp.configStaRspParams.ucUcastSig;
17962 wdiAddSTAParam.dpuIndex = halConfigStaRsp.configStaRspParams.dpuIndex;
Jeff Johnsone7245742012-09-05 17:12:55 -070017963
Jeff Johnson295189b2012-06-20 16:38:30 -070017964 /*This info can be retrieved from the cached initial request*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017965 wdiAddSTAParam.ucWmmEnabled =
Jeff Johnson295189b2012-06-20 16:38:30 -070017966 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.ucWMMEnabled;
Jeff Johnsone7245742012-09-05 17:12:55 -070017967 wdiAddSTAParam.ucHTCapable =
17968 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.ucHTCapable;
17969 wdiAddSTAParam.ucStaType =
17970 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.wdiSTAType;
Chet Lanctot4b9abd72013-06-27 11:14:56 -070017971 wdiAddSTAParam.ucRmfEnabled =
17972 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.ucRMFEnabled;
Jeff Johnsone7245742012-09-05 17:12:55 -070017973
Jeff Johnson295189b2012-06-20 16:38:30 -070017974 /* MAC Address of STA */
Jeff Johnsone7245742012-09-05 17:12:55 -070017975 wpalMemoryCopy(wdiAddSTAParam.staMacAddr,
17976 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.macSTA,
Jeff Johnson295189b2012-06-20 16:38:30 -070017977 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070017978
17979 wpalMemoryCopy(wdiAddSTAParam.macBSSID,
17980 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.macBSSID ,
17981 WDI_MAC_ADDR_LEN);
17982
17983 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
17984 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.macBSSID,
17985 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070017986
17987 if ( NULL == pBSSSes )
17988 {
17989 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17990 "Association for this BSSID is not in place");
Jeff Johnsone7245742012-09-05 17:12:55 -070017991
Jeff Johnson295189b2012-06-20 16:38:30 -070017992 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017993 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070017994 }
17995
17996 /*Add BSS specific parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017997 wdiAddSTAParam.bcastMgmtDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070017998 halConfigStaRsp.configStaRspParams.bcastMgmtDpuIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070017999 wdiAddSTAParam.bcastMgmtDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070018000 halConfigStaRsp.configStaRspParams.ucMgmtSig;
Jeff Johnsone7245742012-09-05 17:12:55 -070018001 wdiAddSTAParam.bcastDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070018002 halConfigStaRsp.configStaRspParams.bcastDpuIndex;
Jeff Johnsone7245742012-09-05 17:12:55 -070018003 wdiAddSTAParam.bcastDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070018004 halConfigStaRsp.configStaRspParams.ucBcastSig;
Jeff Johnson295189b2012-06-20 16:38:30 -070018005 wdiAddSTAParam.ucBSSIdx = ucCurrentBSSSesIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070018006
Jeff Johnson295189b2012-06-20 16:38:30 -070018007 WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
18008 }
18009 if( WDI_UPDATE_STA == pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.wdiAction )
18010 {
18011 WDI_StaStruct* pSTATable = (WDI_StaStruct*) pWDICtx->staTable;
18012
Jeff Johnsone7245742012-09-05 17:12:55 -070018013 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bcastDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070018014 halConfigStaRsp.configStaRspParams.bcastDpuIndex;
Jeff Johnsone7245742012-09-05 17:12:55 -070018015 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bcastDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070018016 halConfigStaRsp.configStaRspParams.ucBcastSig;
Jeff Johnsone7245742012-09-05 17:12:55 -070018017 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bcastMgmtDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070018018 halConfigStaRsp.configStaRspParams.bcastMgmtDpuIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070018019 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bcastMgmtDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070018020 halConfigStaRsp.configStaRspParams.ucMgmtSig;
Jeff Johnsone7245742012-09-05 17:12:55 -070018021 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bssIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070018022 halConfigStaRsp.configStaRspParams.bssIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070018023 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].dpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070018024 halConfigStaRsp.configStaRspParams.dpuIndex;
Jeff Johnsone7245742012-09-05 17:12:55 -070018025 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].dpuSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070018026 halConfigStaRsp.configStaRspParams.ucUcastSig;
18027 }
18028 }
18029
18030 /*Notify UMAC*/
18031 wdiConfigSTARspCb( &wdiCfgSTAParams, pWDICtx->pRspCBUserData);
18032
Jeff Johnsone7245742012-09-05 17:12:55 -070018033 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018034}/*WDI_ProcessConfigStaRsp*/
18035
18036
18037/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018038 @brief Process Set Link State Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070018039 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018040
18041 @param pWDICtx: pointer to the WLAN DAL context
18042 pEventData: pointer to the event information structure
18043
Jeff Johnson295189b2012-06-20 16:38:30 -070018044 @see
18045 @return Result of the function call
18046*/
18047WDI_Status
18048WDI_ProcessSetLinkStateRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018049(
Jeff Johnson295189b2012-06-20 16:38:30 -070018050 WDI_ControlBlockType* pWDICtx,
18051 WDI_EventInfoType* pEventData
18052)
18053{
18054 WDI_Status wdiStatus;
18055 eHalStatus halStatus;
18056 WDI_SetLinkStateRspCb wdiSetLinkStateRspCb;
18057
18058 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070018059 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070018060 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18061
18062 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018063 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018064 -------------------------------------------------------------------------*/
18065 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18066 ( NULL == pEventData->pEventData))
18067 {
18068 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018069 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018070 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018071 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018072 }
18073
18074 wdiSetLinkStateRspCb = (WDI_SetLinkStateRspCb)pWDICtx->pfncRspCB;
18075
18076 wpalMutexAcquire(&pWDICtx->wptMutex);
18077
18078 /*If the link is being transitioned to idle - the BSS is to be deleted
18079 - this type of ending a session is possible when UMAC has failed an
18080 - association session during Join*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018081 if ( WDI_LINK_IDLE_STATE ==
Jeff Johnson295189b2012-06-20 16:38:30 -070018082 pWDICtx->wdiCacheSetLinkStReq.wdiLinkInfo.wdiLinkState )
18083 {
18084 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018085 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070018086 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018087 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
18088 pWDICtx->wdiCacheSetLinkStReq.wdiLinkInfo.macBSSID,
18089 &pBSSSes);
18090
Jeff Johnson295189b2012-06-20 16:38:30 -070018091 /*-----------------------------------------------------------------------
18092 Del BSS response can only be received for an existing assoc that
Jeff Johnsone7245742012-09-05 17:12:55 -070018093 is current and in progress
Jeff Johnson295189b2012-06-20 16:38:30 -070018094 -----------------------------------------------------------------------*/
18095 if ( NULL == pBSSSes )
18096 {
18097 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
18098 "Set link response received outside association session");
18099 }
18100 else
18101 {
18102 /* For BT AMP roles no need to delete the sessions if assoc fails. There
18103 will be del BSS coming after this to stop the beaconing & cleaning up the
18104 sessions*/
18105 if(( WDI_BTAMP_STA_MODE != pBSSSes->wdiBssType )&&
18106 ( WDI_BTAMP_AP_MODE != pBSSSes->wdiBssType ))
18107 {
18108 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018109 The current session will be deleted
Jeff Johnson295189b2012-06-20 16:38:30 -070018110 -----------------------------------------------------------------------*/
18111 WDI_DeleteSession(pWDICtx, pBSSSes);
18112
18113 /*-----------------------------------------------------------------------
18114 Check to see if this association is in progress - if so disable the
18115 flag as this has ended
18116 -----------------------------------------------------------------------*/
18117 if ( ucCurrentBSSSesIdx == pWDICtx->ucCurrentBSSSesIdx )
Jeff Johnsone7245742012-09-05 17:12:55 -070018118 {
Jeff Johnson295189b2012-06-20 16:38:30 -070018119 /*Association no longer in progress */
18120 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
18121 /*Association no longer in progress - prepare pending assoc for processing*/
18122 WDI_DequeueAssocRequest(pWDICtx);
18123 }
18124 }
18125 }
18126 }
18127 /* If the link state has been set to POST ASSOC, reset the "association in
18128 progress" flag */
Jeff Johnsone7245742012-09-05 17:12:55 -070018129 if ( WDI_LINK_POSTASSOC_STATE ==
Jeff Johnson295189b2012-06-20 16:38:30 -070018130 pWDICtx->wdiCacheSetLinkStReq.wdiLinkInfo.wdiLinkState )
18131 {
18132 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
18133 WDI_DequeueAssocRequest(pWDICtx);
18134 }
18135
18136 wpalMutexRelease(&pWDICtx->wptMutex);
18137
18138 /*-------------------------------------------------------------------------
18139 Extract response and send it to UMAC
18140 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018141 wpalMemoryCopy( &halStatus,
18142 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070018143 sizeof(halStatus));
18144
Jeff Johnsone7245742012-09-05 17:12:55 -070018145 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018146
18147 /*Notify UMAC*/
18148 wdiSetLinkStateRspCb( wdiStatus, pWDICtx->pRspCBUserData);
18149
Jeff Johnsone7245742012-09-05 17:12:55 -070018150 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018151}/*WDI_ProcessSetLinkStateRsp*/
18152
18153/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018154 @brief Process Get Stats Rsp function (called when a response is
Jeff Johnson295189b2012-06-20 16:38:30 -070018155 being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018156
18157 @param pWDICtx: pointer to the WLAN DAL context
18158 pEventData: pointer to the event information structure
18159
Jeff Johnson295189b2012-06-20 16:38:30 -070018160 @see
18161 @return Result of the function call
18162*/
18163WDI_Status
18164WDI_ProcessGetStatsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018165(
Jeff Johnson295189b2012-06-20 16:38:30 -070018166 WDI_ControlBlockType* pWDICtx,
18167 WDI_EventInfoType* pEventData
18168)
18169{
18170 WDI_GetStatsRspParamsType *wdiGetStatsRsp;
18171 WDI_GetStatsRspCb wdiGetStatsRspCb;
18172 tHalStatsRspParams* pHalStatsRspParams;
Jeff Johnsone7245742012-09-05 17:12:55 -070018173
Jeff Johnson295189b2012-06-20 16:38:30 -070018174 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18175
18176 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018177 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018178 -------------------------------------------------------------------------*/
18179 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18180 ( NULL == pEventData->pEventData))
18181 {
18182 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018183 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018184 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018185 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018186 }
18187
18188 /*-------------------------------------------------------------------------
18189 Extract response and send it to UMAC
18190 -------------------------------------------------------------------------*/
18191 pHalStatsRspParams = (tHalStatsRspParams *)pEventData->pEventData;
18192
18193 /*allocate the stats response buffer */
18194 wdiGetStatsRsp = (WDI_GetStatsRspParamsType *)wpalMemoryAllocate(
18195 pHalStatsRspParams->msgLen - sizeof(tHalStatsRspParams)
18196 + sizeof(WDI_GetStatsRspParamsType));
18197
18198 if(NULL == wdiGetStatsRsp)
18199 {
18200 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080018201 "Failed to allocate memory in Get Stats Response %p %p %p ",
Jeff Johnson295189b2012-06-20 16:38:30 -070018202 pWDICtx, pEventData, pEventData->pEventData);
18203 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018204 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018205 }
18206
18207 wdiGetStatsRspCb = (WDI_GetStatsRspCb)pWDICtx->pfncRspCB;
18208
18209 wpalMemoryZero(wdiGetStatsRsp, pHalStatsRspParams->msgLen);
18210 wdiGetStatsRsp->usMsgType = pHalStatsRspParams->msgType;
18211 wdiGetStatsRsp->usMsgLen = pHalStatsRspParams->msgLen;
18212 wdiGetStatsRsp->wdiStatus = WDI_HAL_2_WDI_STATUS(pHalStatsRspParams->status);
18213 wdiGetStatsRsp->ucSTAIdx = pHalStatsRspParams->staId;
18214 wdiGetStatsRsp->uStatsMask = pHalStatsRspParams->statsMask;
18215
18216 /* copy the stats from buffer at the end of the tHalStatsRspParams message */
18217 wpalMemoryCopy(wdiGetStatsRsp + 1,
18218 (wpt_uint8*)pEventData->pEventData + sizeof(tHalStatsRspParams),
18219 pHalStatsRspParams->msgLen - sizeof(tHalStatsRspParams));
18220
18221 /*Notify UMAC*/
18222 wdiGetStatsRspCb( wdiGetStatsRsp, pWDICtx->pRspCBUserData);
18223
18224 wpalMemoryFree(wdiGetStatsRsp);
18225
Jeff Johnsone7245742012-09-05 17:12:55 -070018226 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018227}/*WDI_ProcessGetStatsRsp*/
18228
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -080018229#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_ESE || defined(FEATURE_WLAN_LFR)
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -080018230/**
18231 @brief Process Get Roam Rssi Rsp function (called when a response is
18232 being received over the bus from HAL)
18233
18234 @param pWDICtx: pointer to the WLAN DAL context
18235 pEventData: pointer to the event information structure
18236
18237 @see
18238 @return Result of the function call
18239*/
18240WDI_Status
18241WDI_ProcessGetRoamRssiRsp
18242(
18243 WDI_ControlBlockType* pWDICtx,
18244 WDI_EventInfoType* pEventData
18245)
18246{
18247 WDI_GetRoamRssiRspParamsType wdiGetRoamRssiRsp;
18248 WDI_GetRoamRssiRspCb wdiGetRoamRssiRspCb;
18249 tHalGetRoamRssiRspMsg halRoamRssiRspParams;
18250 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18251
18252 /*-------------------------------------------------------------------------
18253 Sanity check
18254 -------------------------------------------------------------------------*/
18255 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18256 ( NULL == pEventData->pEventData))
18257 {
18258 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
18259 "%s: Invalid parameters", __func__);
18260 WDI_ASSERT(0);
18261 return WDI_STATUS_E_FAILURE;
18262 }
18263
18264 wdiGetRoamRssiRspCb = (WDI_GetRoamRssiRspCb)pWDICtx->pfncRspCB;
18265 if(NULL == wdiGetRoamRssiRspCb)
18266 {
18267 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
18268 "%s: call back function is NULL", __func__);
18269 WDI_ASSERT(0);
18270 return WDI_STATUS_E_FAILURE;
18271 }
18272
18273 /*-------------------------------------------------------------------------
18274 Extract response and send it to UMAC
18275 -------------------------------------------------------------------------*/
18276 wpalMemoryCopy( &halRoamRssiRspParams.roamRssiRspParams,
18277 pEventData->pEventData,
18278 sizeof(halRoamRssiRspParams.roamRssiRspParams));
18279
18280 wdiGetRoamRssiRsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halRoamRssiRspParams.roamRssiRspParams.status);
18281 wdiGetRoamRssiRsp.ucSTAIdx = halRoamRssiRspParams.roamRssiRspParams.staId;
18282 wdiGetRoamRssiRsp.rssi = halRoamRssiRspParams.roamRssiRspParams.rssi;
18283
18284 /*Notify UMAC*/
18285 wdiGetRoamRssiRspCb( &wdiGetRoamRssiRsp, pWDICtx->pRspCBUserData);
18286
18287 return WDI_STATUS_SUCCESS;
18288}/*WDI_ProcessGetRoamRssiRsp*/
18289#endif
18290
Jeff Johnson295189b2012-06-20 16:38:30 -070018291
18292/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018293 @brief Process Update Cfg Rsp function (called when a response is
Jeff Johnson295189b2012-06-20 16:38:30 -070018294 being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018295
18296 @param pWDICtx: pointer to the WLAN DAL context
18297 pEventData: pointer to the event information structure
18298
Jeff Johnson295189b2012-06-20 16:38:30 -070018299 @see
18300 @return Result of the function call
18301*/
18302WDI_Status
18303WDI_ProcessUpdateCfgRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018304(
Jeff Johnson295189b2012-06-20 16:38:30 -070018305 WDI_ControlBlockType* pWDICtx,
18306 WDI_EventInfoType* pEventData
18307)
18308{
18309 WDI_Status wdiStatus;
18310 eHalStatus halStatus;
18311 WDI_UpdateCfgRspCb wdiUpdateCfgRspCb;
18312 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18313
18314 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018315 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018316 -------------------------------------------------------------------------*/
18317 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18318 ( NULL == pEventData->pEventData))
18319 {
18320 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018321 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018322 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018323 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018324 }
18325
18326 wdiUpdateCfgRspCb = (WDI_UpdateCfgRspCb)pWDICtx->pfncRspCB;
18327
18328 /*-------------------------------------------------------------------------
18329 Extract response and send it to UMAC
18330 -------------------------------------------------------------------------*/
18331 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070018332 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018333
18334 /*Notify UMAC*/
18335 wdiUpdateCfgRspCb( wdiStatus, pWDICtx->pRspCBUserData);
18336
Jeff Johnsone7245742012-09-05 17:12:55 -070018337 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018338}/*WDI_ProcessUpdateCfgRsp*/
18339
18340
18341
18342/**
18343 @brief Process Add BA Rsp function (called when a response
18344 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018345
18346 @param pWDICtx: pointer to the WLAN DAL context
18347 pEventData: pointer to the event information structure
18348
Jeff Johnson295189b2012-06-20 16:38:30 -070018349 @see
18350 @return Result of the function call
18351*/
18352WDI_Status
18353WDI_ProcessAddBARsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018354(
Jeff Johnson295189b2012-06-20 16:38:30 -070018355 WDI_ControlBlockType* pWDICtx,
18356 WDI_EventInfoType* pEventData
18357)
18358{
18359 WDI_AddBARspCb wdiAddBARspCb;
18360
18361 tAddBARspParams halAddBARsp;
18362 WDI_AddBARspinfoType wdiAddBARsp;
18363
18364 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18365
18366 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018367 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018368 -------------------------------------------------------------------------*/
18369 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18370 ( NULL == pEventData->pEventData))
18371 {
18372 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018373 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018374 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018375 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018376 }
18377
18378 wdiAddBARspCb = (WDI_AddBARspCb)pWDICtx->pfncRspCB;
18379
18380 /*-------------------------------------------------------------------------
18381 Extract response and send it to UMAC
18382 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018383 wpalMemoryCopy( &halAddBARsp,
18384 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070018385 sizeof(halAddBARsp));
18386
18387 wdiAddBARsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halAddBARsp.status);
18388
Jeff Johnson43971f52012-07-17 12:26:56 -070018389 if ( WDI_STATUS_SUCCESS == wdiAddBARsp.wdiStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070018390 {
18391 wdiAddBARsp.ucBaDialogToken = halAddBARsp.baDialogToken;
18392 }
18393
18394 /*Notify UMAC*/
18395 wdiAddBARspCb( &wdiAddBARsp, pWDICtx->pRspCBUserData);
18396
Jeff Johnsone7245742012-09-05 17:12:55 -070018397 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018398}/*WDI_ProcessAddSessionBARsp*/
18399
18400/**
18401 @brief Process Add BA Rsp function (called when a response
18402 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018403
18404 @param pWDICtx: pointer to the WLAN DAL context
18405 pEventData: pointer to the event information structure
18406
Jeff Johnson295189b2012-06-20 16:38:30 -070018407 @see
18408 @return Result of the function call
18409*/
18410WDI_Status
18411WDI_ProcessTriggerBARsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018412(
Jeff Johnson295189b2012-06-20 16:38:30 -070018413 WDI_ControlBlockType* pWDICtx,
18414 WDI_EventInfoType* pEventData
18415)
18416{
18417 WDI_TriggerBARspCb wdiTriggerBARspCb;
18418
18419 tTriggerBARspParams* halTriggerBARsp;
18420 tTriggerBaRspCandidate* halBaCandidate;
18421 WDI_TriggerBARspParamsType* wdiTriggerBARsp;
18422 WDI_TriggerBARspCandidateType* wdiTriggerBARspCandidate;
18423 wpt_uint16 index;
18424 wpt_uint16 TidIndex;
Tushnim Bhattacharyyaf64c5dc2013-03-21 15:11:31 -070018425 WDI_Status halTriggerBARspStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070018426 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18427
18428 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018429 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018430 -------------------------------------------------------------------------*/
18431 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18432 ( NULL == pEventData->pEventData))
18433 {
18434 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018435 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018436 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018437 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018438 }
18439
18440 wdiTriggerBARspCb = (WDI_TriggerBARspCb)pWDICtx->pfncRspCB;
18441
18442 /*-------------------------------------------------------------------------
18443 Extract response and send it to UMAC
18444 -------------------------------------------------------------------------*/
18445 halTriggerBARsp = (tTriggerBARspParams *)pEventData->pEventData;
18446
Tushnim Bhattacharyyaf64c5dc2013-03-21 15:11:31 -070018447 halTriggerBARspStatus = WDI_HAL_2_WDI_STATUS(halTriggerBARsp->status);
18448
18449 if ( WDI_STATUS_SUCCESS == halTriggerBARspStatus)
18450 {
18451 wdiTriggerBARsp = wpalMemoryAllocate(sizeof(WDI_TriggerBARspParamsType) +
Jeff Johnsone7245742012-09-05 17:12:55 -070018452 halTriggerBARsp->baCandidateCnt *
Jeff Johnson295189b2012-06-20 16:38:30 -070018453 sizeof(WDI_TriggerBARspCandidateType));
Jeff Johnson295189b2012-06-20 16:38:30 -070018454
Tushnim Bhattacharyyaf64c5dc2013-03-21 15:11:31 -070018455 if(NULL == wdiTriggerBARsp)
18456 {
18457 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080018458 "Failed to allocate memory in Trigger BA Response %p %p %p ",
Tushnim Bhattacharyyaf64c5dc2013-03-21 15:11:31 -070018459 pWDICtx, pEventData, pEventData->pEventData);
18460 WDI_ASSERT(0);
18461 return WDI_STATUS_E_FAILURE;
18462 }
Jeff Johnson295189b2012-06-20 16:38:30 -070018463
Tushnim Bhattacharyyaf64c5dc2013-03-21 15:11:31 -070018464 wdiTriggerBARsp->wdiStatus = halTriggerBARspStatus;
18465
Jeff Johnson295189b2012-06-20 16:38:30 -070018466 wdiTriggerBARsp->usBaCandidateCnt = halTriggerBARsp->baCandidateCnt;
Jeff Johnsone7245742012-09-05 17:12:55 -070018467 wpalMemoryCopy(wdiTriggerBARsp->macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -070018468 halTriggerBARsp->bssId , WDI_MAC_ADDR_LEN);
18469
18470 wdiTriggerBARspCandidate = (WDI_TriggerBARspCandidateType*)(wdiTriggerBARsp + 1);
18471 halBaCandidate = (tTriggerBaRspCandidate*)(halTriggerBARsp + 1);
18472
18473 for(index = 0; index < wdiTriggerBARsp->usBaCandidateCnt; index++)
18474 {
Jeff Johnsone7245742012-09-05 17:12:55 -070018475 wpalMemoryCopy(wdiTriggerBARspCandidate->macSTA,
Jeff Johnson295189b2012-06-20 16:38:30 -070018476 halBaCandidate->staAddr, WDI_MAC_ADDR_LEN);
18477 for(TidIndex = 0; TidIndex < STA_MAX_TC; TidIndex++)
18478 {
Jeff Johnsone7245742012-09-05 17:12:55 -070018479 wdiTriggerBARspCandidate->wdiBAInfo[TidIndex].fBaEnable =
Jeff Johnson295189b2012-06-20 16:38:30 -070018480 halBaCandidate->baInfo[TidIndex].fBaEnable;
Jeff Johnsone7245742012-09-05 17:12:55 -070018481 wdiTriggerBARspCandidate->wdiBAInfo[TidIndex].startingSeqNum =
Jeff Johnson295189b2012-06-20 16:38:30 -070018482 halBaCandidate->baInfo[TidIndex].startingSeqNum;
18483 }
18484 wdiTriggerBARspCandidate++;
18485 halBaCandidate++;
18486 }
18487 }
Tushnim Bhattacharyyaf64c5dc2013-03-21 15:11:31 -070018488 else
18489 {
18490 wdiTriggerBARsp = wpalMemoryAllocate(sizeof(WDI_TriggerBARspParamsType));
18491
18492 if(NULL == wdiTriggerBARsp)
18493 {
18494 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080018495 "Failed to allocate memory in Trigger BA Response %p %p %p ",
Tushnim Bhattacharyyaf64c5dc2013-03-21 15:11:31 -070018496 pWDICtx, pEventData, pEventData->pEventData);
18497 WDI_ASSERT(0);
18498 return WDI_STATUS_E_FAILURE;
18499 }
18500
18501 wdiTriggerBARsp->wdiStatus = halTriggerBARspStatus;
18502
18503 }
Jeff Johnson295189b2012-06-20 16:38:30 -070018504
18505 /*Notify UMAC*/
18506 wdiTriggerBARspCb( wdiTriggerBARsp, pWDICtx->pRspCBUserData);
18507
18508 wpalMemoryFree(wdiTriggerBARsp);
Jeff Johnsone7245742012-09-05 17:12:55 -070018509 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018510}/*WDI_ProcessAddSessionBARsp*/
18511
18512/**
18513 @brief Process Update Beacon Params Rsp function (called when a response
18514 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018515
18516 @param pWDICtx: pointer to the WLAN DAL context
18517 pEventData: pointer to the event information structure
18518
Jeff Johnson295189b2012-06-20 16:38:30 -070018519 @see
18520 @return Result of the function call
18521*/
18522WDI_Status
18523WDI_ProcessUpdateBeaconParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018524(
Jeff Johnson295189b2012-06-20 16:38:30 -070018525 WDI_ControlBlockType* pWDICtx,
18526 WDI_EventInfoType* pEventData
18527)
18528{
18529 WDI_Status wdiStatus;
18530 eHalStatus halStatus;
18531 WDI_UpdateBeaconParamsRspCb wdiUpdateBeaconParamsRspCb;
18532 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18533
18534 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018535 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018536 -------------------------------------------------------------------------*/
18537 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18538 ( NULL == pEventData->pEventData))
18539 {
18540 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018541 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018542 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018543 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018544 }
18545
18546 wdiUpdateBeaconParamsRspCb = (WDI_UpdateBeaconParamsRspCb)pWDICtx->pfncRspCB;
18547
18548 /*-------------------------------------------------------------------------
18549 Extract response and send it to UMAC
18550 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018551 wpalMemoryCopy( &halStatus,
18552 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070018553 sizeof(halStatus));
18554
Jeff Johnsone7245742012-09-05 17:12:55 -070018555 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018556
18557 /*Notify UMAC*/
18558 wdiUpdateBeaconParamsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
18559
Jeff Johnsone7245742012-09-05 17:12:55 -070018560 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018561}/*WDI_ProcessUpdateBeaconParamsRsp*/
18562
18563/**
18564 @brief Process Send Beacon template Rsp function (called when a response
18565 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018566
18567 @param pWDICtx: pointer to the WLAN DAL context
18568 pEventData: pointer to the event information structure
18569
Jeff Johnson295189b2012-06-20 16:38:30 -070018570 @see
18571 @return Result of the function call
18572*/
18573WDI_Status
18574WDI_ProcessSendBeaconParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018575(
Jeff Johnson295189b2012-06-20 16:38:30 -070018576 WDI_ControlBlockType* pWDICtx,
18577 WDI_EventInfoType* pEventData
18578)
18579{
18580 WDI_Status wdiStatus;
18581 eHalStatus halStatus;
18582 WDI_SendBeaconParamsRspCb wdiSendBeaconParamsRspCb;
18583 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18584
18585 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018586 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018587 -------------------------------------------------------------------------*/
18588 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18589 ( NULL == pEventData->pEventData))
18590 {
18591 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018592 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018593 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018594 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018595 }
18596
18597 wdiSendBeaconParamsRspCb = (WDI_SendBeaconParamsRspCb)pWDICtx->pfncRspCB;
18598
18599 /*-------------------------------------------------------------------------
18600 Extract response and send it to UMAC
18601 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018602 wpalMemoryCopy( &halStatus,
18603 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070018604 sizeof(halStatus));
18605
Jeff Johnsone7245742012-09-05 17:12:55 -070018606 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018607
18608 /*Notify UMAC*/
18609 wdiSendBeaconParamsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
18610
Jeff Johnsone7245742012-09-05 17:12:55 -070018611 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018612}/*WDI_ProcessSendBeaconParamsRsp*/
18613
Jeff Johnsone7245742012-09-05 17:12:55 -070018614
Jeff Johnson295189b2012-06-20 16:38:30 -070018615/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018616 @brief Process Update Probe Resp Template Rsp function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070018617 when a response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018618
18619 @param pWDICtx: pointer to the WLAN DAL context
18620 pEventData: pointer to the event information structure
18621
Jeff Johnson295189b2012-06-20 16:38:30 -070018622 @see
18623 @return Result of the function call
18624*/
18625WDI_Status
18626WDI_ProcessUpdateProbeRspTemplateRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018627(
Jeff Johnson295189b2012-06-20 16:38:30 -070018628 WDI_ControlBlockType* pWDICtx,
18629 WDI_EventInfoType* pEventData
18630)
18631{
18632 WDI_Status wdiStatus;
18633 eHalStatus halStatus;
18634 WDI_UpdateProbeRspTemplateRspCb wdiUpdProbeRspTemplRspCb;
18635 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18636
18637 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018638 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018639 -------------------------------------------------------------------------*/
18640 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18641 ( NULL == pEventData->pEventData))
18642 {
18643 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018644 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018645 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018646 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018647 }
18648
18649 wdiUpdProbeRspTemplRspCb = (WDI_UpdateProbeRspTemplateRspCb)pWDICtx->pfncRspCB;
18650
18651 /*-------------------------------------------------------------------------
18652 Extract response and send it to UMAC
18653 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018654 wpalMemoryCopy( &halStatus,
18655 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070018656 sizeof(halStatus));
18657
Jeff Johnsone7245742012-09-05 17:12:55 -070018658 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018659
18660 /*Notify UMAC*/
18661 wdiUpdProbeRspTemplRspCb( wdiStatus, pWDICtx->pRspCBUserData);
18662
Jeff Johnsone7245742012-09-05 17:12:55 -070018663 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018664}/*WDI_ProcessUpdateProbeRspTemplateRsp*/
18665
18666 /**
18667 @brief Process Set Max Tx Power Rsp function (called when a response
18668 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018669
18670 @param pWDICtx: pointer to the WLAN DAL context
18671 pEventData: pointer to the event information structure
18672
Jeff Johnson295189b2012-06-20 16:38:30 -070018673 @see
18674 @return Result of the function call
18675*/
18676WDI_Status
18677WDI_ProcessSetMaxTxPowerRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018678(
Jeff Johnson295189b2012-06-20 16:38:30 -070018679 WDI_ControlBlockType* pWDICtx,
18680 WDI_EventInfoType* pEventData
18681)
18682{
18683 tSetMaxTxPwrRspMsg halTxpowerrsp;
Jeff Johnsone7245742012-09-05 17:12:55 -070018684
Jeff Johnson295189b2012-06-20 16:38:30 -070018685 WDI_SetMaxTxPowerRspMsg wdiSetMaxTxPowerRspMsg;
Jeff Johnsone7245742012-09-05 17:12:55 -070018686
Jeff Johnson295189b2012-06-20 16:38:30 -070018687 WDA_SetMaxTxPowerRspCb wdiReqStatusCb;
18688 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18689
18690 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018691 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018692 -------------------------------------------------------------------------*/
18693 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18694 ( NULL == pEventData->pEventData))
18695 {
18696 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018697 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018698 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018699 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018700 }
18701
18702 wdiReqStatusCb = (WDA_SetMaxTxPowerRspCb)pWDICtx->pfncRspCB;
18703
18704 /*-------------------------------------------------------------------------
18705 Extract response and send it to UMAC
18706 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018707 wpalMemoryCopy( &halTxpowerrsp.setMaxTxPwrRspParams,
18708 pEventData->pEventData,
18709 sizeof(halTxpowerrsp.setMaxTxPwrRspParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070018710
18711 if ( eHAL_STATUS_SUCCESS != halTxpowerrsp.setMaxTxPwrRspParams.status )
18712 {
18713 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
18714 "Error status returned in Set Max Tx Power Response ");
Jeff Johnsone7245742012-09-05 17:12:55 -070018715 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018716 }
18717
Jeff Johnsone7245742012-09-05 17:12:55 -070018718 wdiSetMaxTxPowerRspMsg.wdiStatus =
Jeff Johnson295189b2012-06-20 16:38:30 -070018719 WDI_HAL_2_WDI_STATUS(halTxpowerrsp.setMaxTxPwrRspParams.status);
Jeff Johnsone7245742012-09-05 17:12:55 -070018720 wdiSetMaxTxPowerRspMsg.ucPower = halTxpowerrsp.setMaxTxPwrRspParams.power;
Jeff Johnson295189b2012-06-20 16:38:30 -070018721
18722 /*Notify UMAC*/
18723 wdiReqStatusCb( &wdiSetMaxTxPowerRspMsg, pWDICtx->pRspCBUserData);
18724
Jeff Johnsone7245742012-09-05 17:12:55 -070018725 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018726}
18727
schang86c22c42013-03-13 18:41:24 -070018728 /**
18729 @brief Process Set Tx Power Rsp function (called when a response
18730 is being received over the bus from HAL)
18731
18732 @param pWDICtx: pointer to the WLAN DAL context
18733 pEventData: pointer to the event information structure
18734
18735 @see
18736 @return Result of the function call
18737*/
18738WDI_Status
18739WDI_ProcessSetTxPowerRsp
18740(
18741 WDI_ControlBlockType* pWDICtx,
18742 WDI_EventInfoType* pEventData
18743)
18744{
18745 tSetTxPwrRspMsg halTxpowerrsp;
18746 WDI_SetTxPowerRspMsg wdiSetTxPowerRspMsg;
18747 WDA_SetTxPowerRspCb wdiReqStatusCb;
18748 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18749
18750 /*-------------------------------------------------------------------------
18751 Sanity check
18752 -------------------------------------------------------------------------*/
18753 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18754 ( NULL == pEventData->pEventData))
18755 {
18756 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
18757 "%s: Invalid parameters", __func__);
18758 WDI_ASSERT(0);
18759 return WDI_STATUS_E_FAILURE;
18760 }
18761
18762 wdiReqStatusCb = (WDA_SetTxPowerRspCb)pWDICtx->pfncRspCB;
18763
18764 /*-------------------------------------------------------------------------
18765 Extract response and send it to UMAC
18766 -------------------------------------------------------------------------*/
18767 wpalMemoryCopy(&halTxpowerrsp.setTxPwrRspParams,
18768 pEventData->pEventData,
18769 sizeof(halTxpowerrsp.setTxPwrRspParams));
18770
18771 if (eHAL_STATUS_SUCCESS != halTxpowerrsp.setTxPwrRspParams.status)
18772 {
18773 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
18774 "Error status returned in Set Tx Power Response ");
18775 WDI_DetectedDeviceError(pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
18776 return WDI_STATUS_E_FAILURE;
18777 }
18778
18779 wdiSetTxPowerRspMsg.wdiStatus =
18780 WDI_HAL_2_WDI_STATUS(halTxpowerrsp.setTxPwrRspParams.status);
18781
18782 /*Notify UMAC*/
18783 wdiReqStatusCb(&wdiSetTxPowerRspMsg, pWDICtx->pRspCBUserData);
18784
18785 return WDI_STATUS_SUCCESS;
18786}
Arif Hussain935a8fb2014-01-31 12:12:28 -080018787
18788/**
18789 @brief Process Set Max Tx Power Per Band Rsp function (called when a response
18790 is being received over the bus from HAL)
18791
18792 @param pWDICtx: pointer to the WLAN DAL context
18793 pEventData: pointer to the event information structure
18794
18795 @see
18796 @return Result of the function call
18797*/
18798WDI_Status
18799WDI_ProcessSetMaxTxPowerPerBandRsp
18800(
18801 WDI_ControlBlockType* pWDICtx,
18802 WDI_EventInfoType* pEventData
18803)
18804{
18805 tSetMaxTxPwrPerBandRspMsg halMaxTxPowerPerBandRsp;
18806 WDI_SetMaxTxPowerPerBandRspMsg wdiSetTxPowerPerBandRspMsg;
18807 WDA_SetMaxTxPowerPerBandRspCb wdiReqStatusCb;
18808 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18809
18810 /*-------------------------------------------------------------------------
18811 Sanity check
18812 -------------------------------------------------------------------------*/
18813 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18814 ( NULL == pEventData->pEventData))
18815 {
18816 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
18817 "%s: Invalid parameters", __func__);
18818 WDI_ASSERT(0);
18819 return WDI_STATUS_E_FAILURE;
18820 }
18821
18822 wdiReqStatusCb = (WDA_SetMaxTxPowerPerBandRspCb)pWDICtx->pfncRspCB;
18823
18824 /*-------------------------------------------------------------------------
18825 Extract response and send it to UMAC
18826 -------------------------------------------------------------------------*/
18827 wpalMemoryCopy(&halMaxTxPowerPerBandRsp.setMaxTxPwrPerBandRspParams,
18828 pEventData->pEventData,
18829 sizeof(halMaxTxPowerPerBandRsp.setMaxTxPwrPerBandRspParams));
18830
18831 if (eHAL_STATUS_SUCCESS !=
18832 halMaxTxPowerPerBandRsp.setMaxTxPwrPerBandRspParams.status)
18833 {
18834 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
18835 "Error status returned in Set Max Tx Power Per Band Response");
18836 return WDI_STATUS_E_FAILURE;
18837 }
18838
18839 wdiSetTxPowerPerBandRspMsg.wdiStatus =
18840 WDI_HAL_2_WDI_STATUS(
18841 halMaxTxPowerPerBandRsp.setMaxTxPwrPerBandRspParams.status);
18842
18843 /* Notify UMAC */
18844 wdiReqStatusCb(&wdiSetTxPowerPerBandRspMsg, pWDICtx->pRspCBUserData);
18845
18846 return WDI_STATUS_SUCCESS;
18847}
18848
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053018849#ifdef FEATURE_WLAN_TDLS
18850/**
18851 @brief Process TDLS Link Establish Rsp function (called
18852 when a response is being received over the bus from HAL)
18853
18854 @param pWDICtx: pointer to the WLAN DAL context
18855 pEventData: pointer to the event information structure
18856
18857 @see
18858 @return Result of the function call
18859*/
18860WDI_Status
18861WDI_ProcessLinkEstablishReqRsp
18862(
18863 WDI_ControlBlockType* pWDICtx,
18864 WDI_EventInfoType* pEventData
18865)
18866{
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053018867 eHalStatus halStatus;
18868 WDI_SetTDLSLinkEstablishReqParamsRspCb wdiTDLSLinkEstablishReqParamsRspCb;
Gopichand Nakkala574f6d12013-06-27 19:38:43 +053018869 tTDLSLinkEstablishedRespMsg halTdlsLinkEstablishedRespMsg;
18870 WDI_SetTdlsLinkEstablishReqResp wdiSetTdlsLinkEstablishReqResp;
18871
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053018872 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18873
18874 /*-------------------------------------------------------------------------
18875 Sanity check
18876 -------------------------------------------------------------------------*/
18877 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18878 ( NULL == pEventData->pEventData))
18879 {
18880 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
18881 "%s: Invalid parameters", __func__);
18882 WDI_ASSERT(0);
18883 return WDI_STATUS_E_FAILURE;
18884 }
18885
Gopichand Nakkala574f6d12013-06-27 19:38:43 +053018886 /*-------------------------------------------------------------------------
18887 Extract indication and send it to UMAC
18888 -------------------------------------------------------------------------*/
18889 wpalMemoryCopy( &halTdlsLinkEstablishedRespMsg.TDLSLinkEstablishedRespParams,
18890 pEventData->pEventData,
18891 sizeof(halTdlsLinkEstablishedRespMsg.TDLSLinkEstablishedRespParams) );
18892
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053018893 wdiTDLSLinkEstablishReqParamsRspCb = (WDI_SetTDLSLinkEstablishReqParamsRspCb)pWDICtx->pfncRspCB;
18894
18895 /*-------------------------------------------------------------------------
18896 Extract response and send it to UMAC
18897 -------------------------------------------------------------------------*/
18898 wpalMemoryCopy( &halStatus,
18899 pEventData->pEventData,
18900 sizeof(halStatus));
18901
Gopichand Nakkala574f6d12013-06-27 19:38:43 +053018902 wdiSetTdlsLinkEstablishReqResp.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
18903 wdiSetTdlsLinkEstablishReqResp.uStaIdx = halTdlsLinkEstablishedRespMsg.TDLSLinkEstablishedRespParams.staIdx;
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053018904
18905 /*Notify UMAC*/
Gopichand Nakkala574f6d12013-06-27 19:38:43 +053018906 wdiTDLSLinkEstablishReqParamsRspCb( &wdiSetTdlsLinkEstablishReqResp, pWDICtx->pRspCBUserData);
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053018907
18908 return WDI_STATUS_SUCCESS;
18909}/*WDI_ProcessLinkEstablishReqRsp*/
18910#endif
schang86c22c42013-03-13 18:41:24 -070018911
Jeff Johnson295189b2012-06-20 16:38:30 -070018912/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018913 @brief Process P2P Group Owner Notice Of Absense Rsp function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070018914 when a response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018915
18916 @param pWDICtx: pointer to the WLAN DAL context
18917 pEventData: pointer to the event information structure
18918
Jeff Johnson295189b2012-06-20 16:38:30 -070018919 @see
18920 @return Result of the function call
18921*/
18922WDI_Status
18923WDI_ProcessP2PGONOARsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018924(
Jeff Johnson295189b2012-06-20 16:38:30 -070018925 WDI_ControlBlockType* pWDICtx,
18926 WDI_EventInfoType* pEventData
18927)
18928{
18929 WDI_Status wdiStatus;
18930 eHalStatus halStatus;
18931 WDI_SetP2PGONOAReqParamsRspCb wdiP2PGONOAReqParamsRspCb;
18932 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18933
18934 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018935 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018936 -------------------------------------------------------------------------*/
18937 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18938 ( NULL == pEventData->pEventData))
18939 {
18940 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018941 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018942 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018943 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018944 }
18945
18946 wdiP2PGONOAReqParamsRspCb = (WDI_SetP2PGONOAReqParamsRspCb)pWDICtx->pfncRspCB;
18947
18948 /*-------------------------------------------------------------------------
18949 Extract response and send it to UMAC
18950 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018951 wpalMemoryCopy( &halStatus,
18952 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070018953 sizeof(halStatus));
18954
Jeff Johnsone7245742012-09-05 17:12:55 -070018955 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018956
18957 /*Notify UMAC*/
18958 wdiP2PGONOAReqParamsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
18959
Jeff Johnsone7245742012-09-05 17:12:55 -070018960 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018961}/*WDI_ProcessP2PGONOARsp*/
Jeff Johnson295189b2012-06-20 16:38:30 -070018962/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018963 @brief Process Enter IMPS Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070018964 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018965
18966 @param pWDICtx: pointer to the WLAN DAL context
18967 pEventData: pointer to the event information structure
18968
Jeff Johnson295189b2012-06-20 16:38:30 -070018969 @see
18970 @return Result of the function call
18971*/
18972WDI_Status
18973WDI_ProcessEnterImpsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018974(
Jeff Johnson295189b2012-06-20 16:38:30 -070018975 WDI_ControlBlockType* pWDICtx,
18976 WDI_EventInfoType* pEventData
18977)
18978{
18979 WDI_Status wdiStatus;
18980 eHalStatus halStatus;
18981 WDI_EnterImpsRspCb wdiEnterImpsRspCb;
Ravali85acf6b2012-12-12 14:01:38 -080018982 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070018983 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18984
18985 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018986 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018987 -------------------------------------------------------------------------*/
18988 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18989 ( NULL == pEventData->pEventData))
18990 {
18991 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018992 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018993 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018994 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018995 }
18996
18997 wdiEnterImpsRspCb = (WDI_EnterImpsRspCb)pWDICtx->pfncRspCB;
18998
18999 /*-------------------------------------------------------------------------
19000 Extract response and send it to UMAC
19001 -------------------------------------------------------------------------*/
19002 halStatus = *((eHalStatus*)pEventData->pEventData);
19003
Jeff Johnsone7245742012-09-05 17:12:55 -070019004 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019005
Madan Mohan Koyyalamudi48e375a2012-09-24 13:19:17 -070019006 /* If IMPS req failed, riva is not power collapsed Put the DXE in FULL state.
19007 * Other module states are taken care by PMC.
19008 * TODO: How do we take care of the case where IMPS is success, but riva power collapse fails??
19009 */
19010 if (wdiStatus != WDI_STATUS_SUCCESS) {
19011
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070019012 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
19013 "WDI Process Enter IMPS RSP failed With HAL Status Code: %d",
19014 halStatus);
19015 /* Call Back is not required as we are putting the DXE in FULL
19016 * and riva is already in full (IMPS RSP Failed)*/
Ravali85acf6b2012-12-12 14:01:38 -080019017 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
19018
19019 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus ) {
19020 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain9a5d5382013-11-17 22:05:35 -080019021 "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 -080019022 WDI_ASSERT(0);
19023 }
Madan Mohan Koyyalamudi48e375a2012-09-24 13:19:17 -070019024 }
Jeff Johnson295189b2012-06-20 16:38:30 -070019025 /*Notify UMAC*/
19026 wdiEnterImpsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
19027
Jeff Johnsone7245742012-09-05 17:12:55 -070019028 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019029}/*WDI_ProcessEnterImpsRsp*/
19030
19031/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019032 @brief Process Exit IMPS Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070019033 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019034
19035 @param pWDICtx: pointer to the WLAN DAL context
19036 pEventData: pointer to the event information structure
19037
Jeff Johnson295189b2012-06-20 16:38:30 -070019038 @see
19039 @return Result of the function call
19040*/
19041WDI_Status
19042WDI_ProcessExitImpsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019043(
Jeff Johnson295189b2012-06-20 16:38:30 -070019044 WDI_ControlBlockType* pWDICtx,
19045 WDI_EventInfoType* pEventData
19046)
19047{
19048 WDI_Status wdiStatus;
19049 eHalStatus halStatus;
19050 WDI_ExitImpsRspCb wdiExitImpsRspCb;
Ravali85acf6b2012-12-12 14:01:38 -080019051 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070019052 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19053
19054 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019055 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019056 -------------------------------------------------------------------------*/
19057 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19058 ( NULL == pEventData->pEventData))
19059 {
19060 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019061 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019062 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019063 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019064 }
19065
19066 wdiExitImpsRspCb = (WDI_ExitImpsRspCb)pWDICtx->pfncRspCB;
19067
19068 /*-------------------------------------------------------------------------
19069 Extract response and send it to UMAC
19070 -------------------------------------------------------------------------*/
19071 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070019072 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019073
Gopichand Nakkalac6c91902013-05-29 18:53:35 +053019074 if (halStatus != eHAL_STATUS_SUCCESS)
19075 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
19076 "%s: Exit IMPS response is a failure with halStatus %d", __func__, halStatus);
19077
Jeff Johnson295189b2012-06-20 16:38:30 -070019078 // notify DTS that we are entering Full power
Ravali85acf6b2012-12-12 14:01:38 -080019079 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
19080 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
19081 {
19082 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain9a5d5382013-11-17 22:05:35 -080019083 "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 -080019084 WDI_ASSERT(0);
19085 }
Jeff Johnson295189b2012-06-20 16:38:30 -070019086 /*Notify UMAC*/
19087 wdiExitImpsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
19088
Jeff Johnsone7245742012-09-05 17:12:55 -070019089 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019090}/*WDI_ProcessExitImpsRsp*/
19091
19092/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019093 @brief Process Enter BMPS Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070019094 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019095
19096 @param pWDICtx: pointer to the WLAN DAL context
19097 pEventData: pointer to the event information structure
19098
Jeff Johnson295189b2012-06-20 16:38:30 -070019099 @see
19100 @return Result of the function call
19101*/
19102WDI_Status
19103WDI_ProcessEnterBmpsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019104(
Jeff Johnson295189b2012-06-20 16:38:30 -070019105 WDI_ControlBlockType* pWDICtx,
19106 WDI_EventInfoType* pEventData
19107)
19108{
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019109 eHalStatus halStatus = eHAL_STATUS_FAILURE;
19110 tHalEnterBmpsRspParams halEnterBmpsRsp;
19111 WDI_EnterBmpsRspCb wdiEnterBmpsRspCb;
19112 WDI_EnterBmpsRspParamsType wdiEnterBmpsRspparams;
Ravali85acf6b2012-12-12 14:01:38 -080019113 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070019114 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19115
19116 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019117 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019118 -------------------------------------------------------------------------*/
19119 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19120 ( NULL == pEventData->pEventData))
19121 {
19122 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019123 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019124 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019125 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019126 }
19127
Jeff Johnson295189b2012-06-20 16:38:30 -070019128 /*-------------------------------------------------------------------------
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019129 Extract response and send it to UMAC
19130 -------------------------------------------------------------------------*/
19131 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
19132 {
19133 wpalMemoryCopy( &halEnterBmpsRsp,
19134 pEventData->pEventData,
19135 sizeof(halEnterBmpsRsp));
19136
19137 //Used to print debug message
19138 halStatus = halEnterBmpsRsp.status;
19139 wdiEnterBmpsRspparams.wdiStatus = WDI_HAL_2_WDI_STATUS(halEnterBmpsRsp.status);
19140 wdiEnterBmpsRspparams.bssIdx = halEnterBmpsRsp.bssIdx;
19141 }
19142 else
19143 {
19144 halStatus = *((eHalStatus*)pEventData->pEventData);
19145 wdiEnterBmpsRspparams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
19146 }
19147
19148 wdiEnterBmpsRspCb = (WDI_EnterBmpsRspCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070019149
Madan Mohan Koyyalamudi48e375a2012-09-24 13:19:17 -070019150 /* If BMPS req failed, riva is not power collapsed put the DXE in FULL state.
19151 * Other module states are taken care by PMC.
19152 * TODO: How do we take care of the case where BMPS is success, but riva power collapse fails??
19153 */
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019154 if (wdiEnterBmpsRspparams.wdiStatus != WDI_STATUS_SUCCESS)
19155 {
Madan Mohan Koyyalamudi48e375a2012-09-24 13:19:17 -070019156
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019157 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070019158 "WDI Process Enter BMPS RSP failed With HAL Status Code: %d",
19159 halStatus);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019160 /* Call Back is not required as we are putting the DXE in FULL
19161 * and riva is already in FULL (BMPS RSP Failed)*/
Ravali85acf6b2012-12-12 14:01:38 -080019162 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
19163 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
19164 {
19165 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain9a5d5382013-11-17 22:05:35 -080019166 "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 -080019167 WDI_ASSERT(0);
19168 }
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019169 pWDICtx->bInBmps = eWLAN_PAL_FALSE;
Madan Mohan Koyyalamudi48e375a2012-09-24 13:19:17 -070019170 }
19171
Jeff Johnson295189b2012-06-20 16:38:30 -070019172 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019173 wdiEnterBmpsRspCb( &wdiEnterBmpsRspparams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070019174
Jeff Johnsone7245742012-09-05 17:12:55 -070019175 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019176}/*WDI_ProcessEnterBmpsRsp*/
19177
19178/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019179 @brief Process Exit BMPS Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070019180 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019181
19182 @param pWDICtx: pointer to the WLAN DAL context
19183 pEventData: pointer to the event information structure
19184
Jeff Johnson295189b2012-06-20 16:38:30 -070019185 @see
19186 @return Result of the function call
19187*/
19188WDI_Status
19189WDI_ProcessExitBmpsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019190(
Jeff Johnson295189b2012-06-20 16:38:30 -070019191 WDI_ControlBlockType* pWDICtx,
19192 WDI_EventInfoType* pEventData
19193)
19194{
Jeff Johnson295189b2012-06-20 16:38:30 -070019195 eHalStatus halStatus;
19196 WDI_ExitBmpsRspCb wdiExitBmpsRspCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019197 tHalExitBmpsRspParams halExitBmpsRsp;
Ravali85acf6b2012-12-12 14:01:38 -080019198 WDI_ExitBmpsRspParamsType wdiExitBmpsRspParams;
19199 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070019200 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19201
19202 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019203 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019204 -------------------------------------------------------------------------*/
19205 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19206 ( NULL == pEventData->pEventData))
19207 {
19208 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019209 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019210 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019211 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019212 }
19213
19214 wdiExitBmpsRspCb = (WDI_ExitBmpsRspCb)pWDICtx->pfncRspCB;
19215
19216 /*-------------------------------------------------------------------------
19217 Extract response and send it to UMAC
19218 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019219
19220 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
19221 {
19222 wpalMemoryCopy( &halExitBmpsRsp,
19223 pEventData->pEventData,
19224 sizeof(halExitBmpsRsp));
19225
19226 wdiExitBmpsRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halExitBmpsRsp.status);
19227 wdiExitBmpsRspParams.bssIdx = halExitBmpsRsp.bssIdx;
19228 }
19229 else
19230 {
19231 halStatus = *((eHalStatus*)pEventData->pEventData);
19232 wdiExitBmpsRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
19233 }
Jeff Johnson295189b2012-06-20 16:38:30 -070019234
19235 // notify DTS that we are entering Full power
Ravali85acf6b2012-12-12 14:01:38 -080019236 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
19237 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
19238 {
19239 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain9a5d5382013-11-17 22:05:35 -080019240 "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 -080019241 WDI_ASSERT(0);
19242 }
Jeff Johnson295189b2012-06-20 16:38:30 -070019243 pWDICtx->bInBmps = eWLAN_PAL_FALSE;
19244
19245 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019246 wdiExitBmpsRspCb( &wdiExitBmpsRspParams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070019247
Jeff Johnsone7245742012-09-05 17:12:55 -070019248 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019249}/*WDI_ProcessExitBmpsRsp*/
19250
19251/**
19252 @brief Process Enter UAPSD Rsp function (called when a response
19253 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019254
19255 @param pWDICtx: pointer to the WLAN DAL context
19256 pEventData: pointer to the event information structure
19257
Jeff Johnson295189b2012-06-20 16:38:30 -070019258 @see
19259 @return Result of the function call
19260*/
19261WDI_Status
19262WDI_ProcessEnterUapsdRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019263(
Jeff Johnson295189b2012-06-20 16:38:30 -070019264 WDI_ControlBlockType* pWDICtx,
19265 WDI_EventInfoType* pEventData
19266)
19267{
Jeff Johnson295189b2012-06-20 16:38:30 -070019268 eHalStatus halStatus;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019269 tUapsdRspParams halEnterUapsdRsp;
Jeff Johnson295189b2012-06-20 16:38:30 -070019270 WDI_EnterUapsdRspCb wdiEnterUapsdRspCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019271 WDI_EnterUapsdRspParamsType wdiEnterUapsdRspParams;
19272
Jeff Johnson295189b2012-06-20 16:38:30 -070019273 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19274
19275 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019276 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019277 -------------------------------------------------------------------------*/
19278 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19279 ( NULL == pEventData->pEventData))
19280 {
19281 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019282 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019283 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019284 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019285 }
19286
19287 wdiEnterUapsdRspCb = (WDI_EnterUapsdRspCb)pWDICtx->pfncRspCB;
19288
19289 /*-------------------------------------------------------------------------
19290 Extract response and send it to UMAC
19291 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019292 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
19293 {
19294 wpalMemoryCopy( &halEnterUapsdRsp,
19295 pEventData->pEventData,
19296 sizeof(halEnterUapsdRsp));
Jeff Johnson295189b2012-06-20 16:38:30 -070019297
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019298 wdiEnterUapsdRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halEnterUapsdRsp.status);
19299 wdiEnterUapsdRspParams.bssIdx = halEnterUapsdRsp.bssIdx;
19300 }
19301 else
19302 {
19303 halStatus = *((eHalStatus*)pEventData->pEventData);
19304 wdiEnterUapsdRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
19305 }
19306
19307 if(WDI_STATUS_SUCCESS == wdiEnterUapsdRspParams.wdiStatus)
Jeff Johnson295189b2012-06-20 16:38:30 -070019308 {
19309 // Set the DPU routing flag to the FW WQ, all the TX frames would be now pushed
19310 // from DPU to the FW-WQ (5) in UAPSD. FW would be in data path, monitoring
19311 // the traffic to decide when to suspend the trigger frames when there is no traffic
19312 // activity on the trigger enabled ACs
19313 pWDICtx->ucDpuRF = BMUWQ_FW_DPU_TX;
19314
19315#ifdef WLAN_PERF
19316 // Increment the BD signature to refresh the fast path BD utilization
19317 pWDICtx->uBdSigSerialNum++;
19318#endif
19319 }
19320
19321 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019322 wdiEnterUapsdRspCb( &wdiEnterUapsdRspParams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070019323
Jeff Johnsone7245742012-09-05 17:12:55 -070019324 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019325}/*WDI_ProcessEnterUapsdRsp*/
19326
19327/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019328 @brief Process Exit UAPSD Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070019329 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019330
19331 @param pWDICtx: pointer to the WLAN DAL context
19332 pEventData: pointer to the event information structure
19333
Jeff Johnson295189b2012-06-20 16:38:30 -070019334 @see
19335 @return Result of the function call
19336*/
19337WDI_Status
19338WDI_ProcessExitUapsdRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019339(
Jeff Johnson295189b2012-06-20 16:38:30 -070019340 WDI_ControlBlockType* pWDICtx,
19341 WDI_EventInfoType* pEventData
19342)
19343{
Jeff Johnson295189b2012-06-20 16:38:30 -070019344 eHalStatus halStatus;
19345 WDI_ExitUapsdRspCb wdiExitUapsdRspCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019346 tHalExitUapsdRspParams halExitUapsdRsp;
19347 WDI_ExitUapsdRspParamsType wdiExitUapsdRspParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070019348 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19349
19350 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019351 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019352 -------------------------------------------------------------------------*/
19353 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19354 ( NULL == pEventData->pEventData))
19355 {
19356 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019357 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019358 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019359 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019360 }
19361
19362 wdiExitUapsdRspCb = (WDI_ExitUapsdRspCb)pWDICtx->pfncRspCB;
19363
19364 /*-------------------------------------------------------------------------
19365 Extract response and send it to UMAC
19366 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019367 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
19368 {
19369 wpalMemoryCopy( &halExitUapsdRsp,
19370 pEventData->pEventData,
19371 sizeof(halExitUapsdRsp));
19372
19373 wdiExitUapsdRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halExitUapsdRsp.status);
19374 wdiExitUapsdRspParams.bssIdx = halExitUapsdRsp.bssIdx;
19375 }
19376 else
19377 {
19378 halStatus = *((eHalStatus*)pEventData->pEventData);
19379 wdiExitUapsdRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
19380 }
Jeff Johnson295189b2012-06-20 16:38:30 -070019381 // Restore back the DPU routing flag in the TxBD, for DPU to push the TxBDs to BTQM
19382 // directly instead of the FW WQ.
19383 pWDICtx->ucDpuRF = BMUWQ_BTQM_TX_MGMT;
19384
19385#ifdef WLAN_PERF
19386 // Increment the BD signature to refresh the fast path BD utilization
19387 pWDICtx->uBdSigSerialNum++;
19388#endif
19389
19390 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019391 wdiExitUapsdRspCb( &wdiExitUapsdRspParams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070019392
Jeff Johnsone7245742012-09-05 17:12:55 -070019393 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019394}/*WDI_ProcessExitUapsdRsp*/
19395
19396/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019397 @brief Process set UAPSD params Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070019398 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019399
19400 @param pWDICtx: pointer to the WLAN DAL context
19401 pEventData: pointer to the event information structure
19402
Jeff Johnson295189b2012-06-20 16:38:30 -070019403 @see
19404 @return Result of the function call
19405*/
19406WDI_Status
19407WDI_ProcessSetUapsdAcParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019408(
Jeff Johnson295189b2012-06-20 16:38:30 -070019409 WDI_ControlBlockType* pWDICtx,
19410 WDI_EventInfoType* pEventData
19411)
19412{
19413 WDI_Status wdiStatus;
19414 eHalStatus halStatus;
19415 WDI_SetUapsdAcParamsCb wdiSetUapsdAcParamsCb;
19416 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19417
19418 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019419 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019420 -------------------------------------------------------------------------*/
19421 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19422 ( NULL == pEventData->pEventData))
19423 {
19424 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019425 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019426 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019427 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019428 }
19429
19430 wdiSetUapsdAcParamsCb = (WDI_SetUapsdAcParamsCb)pWDICtx->pfncRspCB;
19431
19432 /*-------------------------------------------------------------------------
19433 Extract response and send it to UMAC
19434 -------------------------------------------------------------------------*/
19435 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070019436 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019437
19438 /*Notify UMAC*/
19439 wdiSetUapsdAcParamsCb( wdiStatus, pWDICtx->pRspCBUserData);
19440
Jeff Johnsone7245742012-09-05 17:12:55 -070019441 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019442}/*WDI_ProcessSetUapsdAcParamsRsp*/
19443
19444/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019445 @brief Process update UAPSD params Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070019446 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019447
19448 @param pWDICtx: pointer to the WLAN DAL context
19449 pEventData: pointer to the event information structure
19450
Jeff Johnson295189b2012-06-20 16:38:30 -070019451 @see
19452 @return Result of the function call
19453*/
19454WDI_Status
19455WDI_ProcessUpdateUapsdParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019456(
Jeff Johnson295189b2012-06-20 16:38:30 -070019457 WDI_ControlBlockType* pWDICtx,
19458 WDI_EventInfoType* pEventData
19459)
19460{
19461 WDI_Status wdiStatus;
19462 eHalStatus halStatus;
19463 WDI_UpdateUapsdParamsCb wdiUpdateUapsdParamsCb;
19464 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19465
19466 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019467 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019468 -------------------------------------------------------------------------*/
19469 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19470 ( NULL == pEventData->pEventData))
19471 {
19472 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019473 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019474 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019475 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019476 }
19477
19478 wdiUpdateUapsdParamsCb = (WDI_UpdateUapsdParamsCb)pWDICtx->pfncRspCB;
19479
19480 /*-------------------------------------------------------------------------
19481 Extract response and send it to UMAC
19482 -------------------------------------------------------------------------*/
19483 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070019484 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019485
19486 /*Notify UMAC*/
19487 wdiUpdateUapsdParamsCb( wdiStatus, pWDICtx->pRspCBUserData);
19488
Jeff Johnsone7245742012-09-05 17:12:55 -070019489 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019490}/*WDI_ProcessUpdateUapsdParamsRsp*/
19491
19492/**
19493 @brief Process Configure RXP filter Rsp function (called when a
19494 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019495
19496 @param pWDICtx: pointer to the WLAN DAL context
19497 pEventData: pointer to the event information structure
19498
Jeff Johnson295189b2012-06-20 16:38:30 -070019499 @see
19500 @return Result of the function call
19501*/
19502WDI_Status
19503WDI_ProcessConfigureRxpFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019504(
Jeff Johnson295189b2012-06-20 16:38:30 -070019505 WDI_ControlBlockType* pWDICtx,
19506 WDI_EventInfoType* pEventData
19507)
19508{
19509 WDI_Status wdiStatus;
19510 eHalStatus halStatus;
19511 WDI_ConfigureRxpFilterCb wdiConfigureRxpFilterCb;
19512 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19513
19514 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019515 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019516 -------------------------------------------------------------------------*/
19517 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19518 ( NULL == pEventData->pEventData))
19519 {
19520 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019521 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019522 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019523 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019524 }
19525
19526 wdiConfigureRxpFilterCb = (WDI_ConfigureRxpFilterCb)pWDICtx->pfncRspCB;
19527
19528 /*-------------------------------------------------------------------------
19529 Extract response and send it to UMAC
19530 -------------------------------------------------------------------------*/
19531 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070019532 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019533
19534 /*Notify UMAC*/
19535 wdiConfigureRxpFilterCb( wdiStatus, pWDICtx->pRspCBUserData);
19536
Jeff Johnsone7245742012-09-05 17:12:55 -070019537 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019538}/*WDI_ProcessConfigureRxpFilterRsp*/
19539
19540/**
19541 @brief Process Set beacon filter Rsp function (called when a
19542 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019543
19544 @param pWDICtx: pointer to the WLAN DAL context
19545 pEventData: pointer to the event information structure
19546
Jeff Johnson295189b2012-06-20 16:38:30 -070019547 @see
19548 @return Result of the function call
19549*/
19550WDI_Status
19551WDI_ProcessSetBeaconFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019552(
Jeff Johnson295189b2012-06-20 16:38:30 -070019553 WDI_ControlBlockType* pWDICtx,
19554 WDI_EventInfoType* pEventData
19555)
19556{
19557 WDI_Status wdiStatus;
19558 eHalStatus halStatus;
19559 WDI_SetBeaconFilterCb wdiBeaconFilterCb;
19560 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19561
19562 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019563 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019564 -------------------------------------------------------------------------*/
19565 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19566 ( NULL == pEventData->pEventData))
19567 {
19568 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019569 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019570 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019571 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019572 }
19573
19574 wdiBeaconFilterCb = (WDI_SetBeaconFilterCb)pWDICtx->pfncRspCB;
19575
19576 /*-------------------------------------------------------------------------
19577 Extract response and send it to UMAC
19578 -------------------------------------------------------------------------*/
19579 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070019580 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019581
19582 /*Notify UMAC*/
19583 wdiBeaconFilterCb( wdiStatus, pWDICtx->pRspCBUserData);
19584
Jeff Johnsone7245742012-09-05 17:12:55 -070019585 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019586}/*WDI_ProcessSetBeaconFilterRsp*/
19587
19588/**
19589 @brief Process remove beacon filter Rsp function (called when a
19590 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019591
19592 @param pWDICtx: pointer to the WLAN DAL context
19593 pEventData: pointer to the event information structure
19594
Jeff Johnson295189b2012-06-20 16:38:30 -070019595 @see
19596 @return Result of the function call
19597*/
19598WDI_Status
19599WDI_ProcessRemBeaconFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019600(
Jeff Johnson295189b2012-06-20 16:38:30 -070019601 WDI_ControlBlockType* pWDICtx,
19602 WDI_EventInfoType* pEventData
19603)
19604{
19605 WDI_Status wdiStatus;
19606 eHalStatus halStatus;
19607 WDI_RemBeaconFilterCb wdiBeaconFilterCb;
19608 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19609
19610 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019611 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019612 -------------------------------------------------------------------------*/
19613 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19614 ( NULL == pEventData->pEventData))
19615 {
19616 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019617 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019618 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019619 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019620 }
19621
19622 wdiBeaconFilterCb = (WDI_RemBeaconFilterCb)pWDICtx->pfncRspCB;
19623
19624 /*-------------------------------------------------------------------------
19625 Extract response and send it to UMAC
19626 -------------------------------------------------------------------------*/
19627 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070019628 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019629
19630 /*Notify UMAC*/
19631 wdiBeaconFilterCb( wdiStatus, pWDICtx->pRspCBUserData);
19632
Jeff Johnsone7245742012-09-05 17:12:55 -070019633 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019634}/*WDI_ProcessRemBeaconFilterRsp*/
19635
19636/**
19637 @brief Process set RSSI thresholds Rsp function (called when a
19638 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019639
19640 @param pWDICtx: pointer to the WLAN DAL context
19641 pEventData: pointer to the event information structure
19642
Jeff Johnson295189b2012-06-20 16:38:30 -070019643 @see
19644 @return Result of the function call
19645*/
19646WDI_Status
19647WDI_ProcessSetRSSIThresoldsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019648(
Jeff Johnson295189b2012-06-20 16:38:30 -070019649 WDI_ControlBlockType* pWDICtx,
19650 WDI_EventInfoType* pEventData
19651)
19652{
19653 WDI_Status wdiStatus;
19654 eHalStatus halStatus;
19655 WDI_SetRSSIThresholdsCb wdiRSSIThresholdsCb;
19656 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19657
19658 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019659 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019660 -------------------------------------------------------------------------*/
19661 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19662 ( NULL == pEventData->pEventData))
19663 {
19664 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019665 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019666 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019667 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019668 }
19669
19670 wdiRSSIThresholdsCb = (WDI_SetRSSIThresholdsCb)pWDICtx->pfncRspCB;
19671
19672 /*-------------------------------------------------------------------------
19673 Extract response and send it to UMAC
19674 -------------------------------------------------------------------------*/
19675 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070019676 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019677
19678 /*Notify UMAC*/
19679 wdiRSSIThresholdsCb( wdiStatus, pWDICtx->pRspCBUserData);
19680
Jeff Johnsone7245742012-09-05 17:12:55 -070019681 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019682}/*WDI_ProcessSetRSSIThresoldsRsp*/
19683
19684/**
19685 @brief Process host offload Rsp function (called when a
19686 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019687
19688 @param pWDICtx: pointer to the WLAN DAL context
19689 pEventData: pointer to the event information structure
19690
Jeff Johnson295189b2012-06-20 16:38:30 -070019691 @see
19692 @return Result of the function call
19693*/
19694WDI_Status
19695WDI_ProcessHostOffloadRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019696(
Jeff Johnson295189b2012-06-20 16:38:30 -070019697 WDI_ControlBlockType* pWDICtx,
19698 WDI_EventInfoType* pEventData
19699)
19700{
19701 WDI_Status wdiStatus;
19702 eHalStatus halStatus;
19703 WDI_HostOffloadCb wdiHostOffloadCb;
19704 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19705
19706 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019707 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019708 -------------------------------------------------------------------------*/
19709 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19710 ( NULL == pEventData->pEventData))
19711 {
19712 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019713 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019714 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019715 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019716 }
19717
19718 wdiHostOffloadCb = (WDI_HostOffloadCb)pWDICtx->pfncRspCB;
19719
19720 /*-------------------------------------------------------------------------
19721 Extract response and send it to UMAC
19722 -------------------------------------------------------------------------*/
19723 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070019724 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019725
19726 /*Notify UMAC*/
19727 wdiHostOffloadCb( wdiStatus, pWDICtx->pRspCBUserData);
19728
Jeff Johnsone7245742012-09-05 17:12:55 -070019729 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019730}/*WDI_ProcessHostOffloadRsp*/
19731
19732/**
19733 @brief Process keep alive Rsp function (called when a
19734 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019735
19736 @param pWDICtx: pointer to the WLAN DAL context
19737 pEventData: pointer to the event information structure
19738
Jeff Johnson295189b2012-06-20 16:38:30 -070019739 @see
19740 @return Result of the function call
19741*/
19742WDI_Status
19743WDI_ProcessKeepAliveRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019744(
Jeff Johnson295189b2012-06-20 16:38:30 -070019745 WDI_ControlBlockType* pWDICtx,
19746 WDI_EventInfoType* pEventData
19747)
19748{
19749 WDI_Status wdiStatus;
19750 eHalStatus halStatus;
19751 WDI_KeepAliveCb wdiKeepAliveCb;
19752 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19753 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
19754 "Received WDI_ProcessKeepAliveRsp Callback from HAL");
19755
19756
19757 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019758 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019759 -------------------------------------------------------------------------*/
19760 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19761 ( NULL == pEventData->pEventData))
19762 {
19763 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019764 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019765 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019766 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019767 }
19768
Jeff Johnsone7245742012-09-05 17:12:55 -070019769 wdiKeepAliveCb = (WDI_KeepAliveCb)pWDICtx->pfncRspCB;
19770
Jeff Johnson295189b2012-06-20 16:38:30 -070019771 /*-------------------------------------------------------------------------
19772 Extract response and send it to UMAC
19773 -------------------------------------------------------------------------*/
19774 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070019775 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019776
19777 /*Notify UMAC*/
19778 wdiKeepAliveCb( wdiStatus, pWDICtx->pRspCBUserData);
19779
Jeff Johnsone7245742012-09-05 17:12:55 -070019780 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019781}/*WDI_ProcessKeepAliveRsp*/
19782
19783/**
19784 @brief Process wowl add ptrn Rsp function (called when a
19785 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019786
19787 @param pWDICtx: pointer to the WLAN DAL context
19788 pEventData: pointer to the event information structure
19789
Jeff Johnson295189b2012-06-20 16:38:30 -070019790 @see
19791 @return Result of the function call
19792*/
19793WDI_Status
19794WDI_ProcessWowlAddBcPtrnRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019795(
Jeff Johnson295189b2012-06-20 16:38:30 -070019796 WDI_ControlBlockType* pWDICtx,
19797 WDI_EventInfoType* pEventData
19798)
19799{
Jeff Johnson295189b2012-06-20 16:38:30 -070019800 eHalStatus halStatus;
19801 WDI_WowlAddBcPtrnCb wdiWowlAddBcPtrnCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019802 tHalAddWowlBcastPtrnRspParams halAddWowlBcastPtrRsp;
19803 WDI_WowlAddBcPtrnRspParamsType wdiWowlAddBcPtrRsp;
19804
Jeff Johnson295189b2012-06-20 16:38:30 -070019805 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19806
19807 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019808 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019809 -------------------------------------------------------------------------*/
19810 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19811 ( NULL == pEventData->pEventData))
19812 {
19813 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019814 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019815 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019816 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019817 }
19818
19819 wdiWowlAddBcPtrnCb = (WDI_WowlAddBcPtrnCb)pWDICtx->pfncRspCB;
19820
19821 /*-------------------------------------------------------------------------
19822 Extract response and send it to UMAC
19823 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019824 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
19825 {
19826 wpalMemoryCopy( &halAddWowlBcastPtrRsp,
19827 pEventData->pEventData,
19828 sizeof(halAddWowlBcastPtrRsp));
19829
19830 wdiWowlAddBcPtrRsp.wdiStatus =
19831 WDI_HAL_2_WDI_STATUS(halAddWowlBcastPtrRsp.status);
19832 }
19833 else
19834 {
19835 halStatus = *((eHalStatus*)pEventData->pEventData);
19836 wdiWowlAddBcPtrRsp.wdiStatus =
19837 WDI_HAL_2_WDI_STATUS(halStatus);
19838 }
Jeff Johnson295189b2012-06-20 16:38:30 -070019839
19840 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019841 wdiWowlAddBcPtrnCb( &wdiWowlAddBcPtrRsp, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070019842
Jeff Johnsone7245742012-09-05 17:12:55 -070019843 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019844}/*WDI_ProcessWowlAddBcPtrnRsp*/
19845
19846/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019847 @brief Process wowl delete ptrn Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070019848 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019849
19850 @param pWDICtx: pointer to the WLAN DAL context
19851 pEventData: pointer to the event information structure
19852
Jeff Johnson295189b2012-06-20 16:38:30 -070019853 @see
19854 @return Result of the function call
19855*/
19856WDI_Status
19857WDI_ProcessWowlDelBcPtrnRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019858(
Jeff Johnson295189b2012-06-20 16:38:30 -070019859 WDI_ControlBlockType* pWDICtx,
19860 WDI_EventInfoType* pEventData
19861)
19862{
Jeff Johnson295189b2012-06-20 16:38:30 -070019863 eHalStatus halStatus;
19864 WDI_WowlDelBcPtrnCb wdiWowlDelBcPtrnCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019865 tHalDelWowlBcastPtrnRspParams halDelWowlBcastPtrRsp;
19866 WDI_WowlDelBcPtrnRspParamsType wdiWowlDelBcstPtrRsp;
Jeff Johnson295189b2012-06-20 16:38:30 -070019867 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19868
19869 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019870 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019871 -------------------------------------------------------------------------*/
19872 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19873 ( NULL == pEventData->pEventData))
19874 {
19875 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019876 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019877 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019878 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019879 }
19880
19881 wdiWowlDelBcPtrnCb = (WDI_WowlDelBcPtrnCb)pWDICtx->pfncRspCB;
19882
19883 /*-------------------------------------------------------------------------
19884 Extract response and send it to UMAC
19885 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019886 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
19887 {
19888 wpalMemoryCopy( &halDelWowlBcastPtrRsp,
19889 pEventData->pEventData,
19890 sizeof(halDelWowlBcastPtrRsp));
Jeff Johnson295189b2012-06-20 16:38:30 -070019891
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019892 wdiWowlDelBcstPtrRsp.wdiStatus =
19893 WDI_HAL_2_WDI_STATUS(halDelWowlBcastPtrRsp.status);
19894 }
19895 else
19896 {
19897 halStatus = *((eHalStatus*)pEventData->pEventData);
19898 wdiWowlDelBcstPtrRsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
19899 }
Jeff Johnson295189b2012-06-20 16:38:30 -070019900 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019901 wdiWowlDelBcPtrnCb( &wdiWowlDelBcstPtrRsp, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070019902
Jeff Johnsone7245742012-09-05 17:12:55 -070019903 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019904}/*WDI_ProcessWowlDelBcPtrnRsp*/
19905
19906/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019907 @brief Process wowl enter Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070019908 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019909
19910 @param pWDICtx: pointer to the WLAN DAL context
19911 pEventData: pointer to the event information structure
19912
Jeff Johnson295189b2012-06-20 16:38:30 -070019913 @see
19914 @return Result of the function call
19915*/
19916WDI_Status
19917WDI_ProcessWowlEnterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019918(
Jeff Johnson295189b2012-06-20 16:38:30 -070019919 WDI_ControlBlockType* pWDICtx,
19920 WDI_EventInfoType* pEventData
19921)
19922{
Jeff Johnson295189b2012-06-20 16:38:30 -070019923 eHalStatus halStatus;
19924 WDI_WowlEnterReqCb wdiWowlEnterCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019925 WDI_WowlEnterRspParamsType wdiwowlEnterRsp;
19926 tHalEnterWowlRspParams halEnterWowlRspParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070019927 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19928
19929 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019930 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019931 -------------------------------------------------------------------------*/
19932 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19933 ( NULL == pEventData->pEventData))
19934 {
19935 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019936 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019937 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019938 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019939 }
19940
19941 wdiWowlEnterCb = (WDI_WowlEnterReqCb)pWDICtx->pfncRspCB;
19942
19943 /*-------------------------------------------------------------------------
19944 Extract response and send it to UMAC
19945 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019946 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
19947 {
19948 wpalMemoryCopy( &halEnterWowlRspParams,
19949 (wpt_uint8*)pEventData->pEventData,
19950 sizeof(halEnterWowlRspParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070019951
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019952 wdiwowlEnterRsp.bssIdx = halEnterWowlRspParams.bssIdx;
19953 wdiwowlEnterRsp.status =
19954 WDI_HAL_2_WDI_STATUS(halEnterWowlRspParams.status);
19955 }
19956 else
19957 {
19958 halStatus = *((eHalStatus*)pEventData->pEventData);
19959 wdiwowlEnterRsp.status = WDI_HAL_2_WDI_STATUS(halStatus);
19960 }
Jeff Johnson295189b2012-06-20 16:38:30 -070019961 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019962 wdiWowlEnterCb( &wdiwowlEnterRsp, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070019963
Jeff Johnsone7245742012-09-05 17:12:55 -070019964 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019965}/*WDI_ProcessWowlEnterRsp*/
19966
19967/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019968 @brief Process wowl exit Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070019969 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019970
19971 @param pWDICtx: pointer to the WLAN DAL context
19972 pEventData: pointer to the event information structure
19973
Jeff Johnson295189b2012-06-20 16:38:30 -070019974 @see
19975 @return Result of the function call
19976*/
19977WDI_Status
19978WDI_ProcessWowlExitRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019979(
Jeff Johnson295189b2012-06-20 16:38:30 -070019980 WDI_ControlBlockType* pWDICtx,
19981 WDI_EventInfoType* pEventData
19982)
19983{
Jeff Johnson295189b2012-06-20 16:38:30 -070019984 eHalStatus halStatus;
19985 WDI_WowlExitReqCb wdiWowlExitCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019986 tHalExitWowlRspParams halExitWowlRspParams;
19987 WDI_WowlExitRspParamsType wdiWowlExitRsp;
19988
Jeff Johnson295189b2012-06-20 16:38:30 -070019989 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19990
19991 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019992 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019993 -------------------------------------------------------------------------*/
19994 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19995 ( NULL == pEventData->pEventData))
19996 {
19997 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019998 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019999 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020000 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020001 }
20002
20003 wdiWowlExitCb = (WDI_WowlExitReqCb)pWDICtx->pfncRspCB;
20004
20005 /*-------------------------------------------------------------------------
20006 Extract response and send it to UMAC
20007 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020008 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
20009 {
20010 wpalMemoryCopy( &halExitWowlRspParams,
20011 pEventData->pEventData,
20012 sizeof(halExitWowlRspParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070020013
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020014 wdiWowlExitRsp.status = WDI_HAL_2_WDI_STATUS(halExitWowlRspParams.status);
20015 wdiWowlExitRsp.bssIdx = halExitWowlRspParams.bssIdx;
20016
20017 }
20018 else
20019 {
20020 halStatus = *((eHalStatus*)pEventData->pEventData);
20021 wdiWowlExitRsp.status = WDI_HAL_2_WDI_STATUS(halStatus);
20022 }
Jeff Johnson295189b2012-06-20 16:38:30 -070020023 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020024 wdiWowlExitCb( &wdiWowlExitRsp, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070020025
Jeff Johnsone7245742012-09-05 17:12:55 -070020026 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020027}/*WDI_ProcessWowlExitRsp*/
20028
20029/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020030 @brief Process Configure Apps CPU wakeup State Rsp function
Jeff Johnson295189b2012-06-20 16:38:30 -070020031 (called when a response is being received over the bus
20032 from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020033
20034 @param pWDICtx: pointer to the WLAN DAL context
20035 pEventData: pointer to the event information structure
20036
Jeff Johnson295189b2012-06-20 16:38:30 -070020037 @see
20038 @return Result of the function call
20039*/
20040WDI_Status
20041WDI_ProcessConfigureAppsCpuWakeupStateRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020042(
Jeff Johnson295189b2012-06-20 16:38:30 -070020043 WDI_ControlBlockType* pWDICtx,
20044 WDI_EventInfoType* pEventData
20045)
20046{
20047 WDI_Status wdiStatus;
20048 eHalStatus halStatus;
20049 WDI_ConfigureAppsCpuWakeupStateCb wdiConfigureAppsCpuWakeupStateCb;
20050 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20051
20052 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020053 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020054 -------------------------------------------------------------------------*/
20055 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20056 ( NULL == pEventData->pEventData))
20057 {
20058 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020059 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020060 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020061 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020062 }
20063
20064 wdiConfigureAppsCpuWakeupStateCb = (WDI_ConfigureAppsCpuWakeupStateCb)pWDICtx->pfncRspCB;
20065
20066 /*-------------------------------------------------------------------------
20067 Extract response and send it to UMAC
20068 -------------------------------------------------------------------------*/
20069 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070020070 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070020071
20072 /*Notify UMAC*/
20073 wdiConfigureAppsCpuWakeupStateCb( wdiStatus, pWDICtx->pRspCBUserData);
20074
Jeff Johnsone7245742012-09-05 17:12:55 -070020075 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020076}/*WDI_ProcessConfigureAppsCpuWakeupStateRsp*/
20077
20078
20079/**
20080 @brief Process Nv download(called when a response
20081 is being received over the bus from HAL,will check if the responce is )
Jeff Johnsone7245742012-09-05 17:12:55 -070020082
20083 @param pWDICtx: pointer to the WLAN DAL context
20084 pEventData: pointer to the event information structure
20085
Jeff Johnson295189b2012-06-20 16:38:30 -070020086 @see
20087 @return Result of the function call
20088*/
20089WDI_Status
20090WDI_ProcessNvDownloadRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020091(
Jeff Johnson295189b2012-06-20 16:38:30 -070020092 WDI_ControlBlockType* pWDICtx,
20093 WDI_EventInfoType* pEventData
20094)
20095{
20096
20097 WDI_NvDownloadRspCb wdiNvDownloadRspCb;
20098 tHalNvImgDownloadRspParams halNvDownloadRsp;
20099 WDI_NvDownloadRspInfoType wdiNvDownloadRsp;
20100
20101 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020102 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020103 -------------------------------------------------------------------------*/
20104 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20105 ( NULL == pEventData->pEventData))
20106 {
20107 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020108 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020109 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020110 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020111 }
20112
20113 /*-------------------------------------------------------------------------
20114 Extract response and send it to UMAC
20115 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020116 wpalMemoryCopy( &halNvDownloadRsp,
20117 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070020118 sizeof(halNvDownloadRsp));
20119
20120 wdiNvDownloadRsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halNvDownloadRsp.status);
20121
20122 if((wdiNvDownloadRsp.wdiStatus == WDI_STATUS_SUCCESS) &&
Jeff Johnsone7245742012-09-05 17:12:55 -070020123 (pWDICtx->wdiNvBlobInfo.usCurrentFragment !=
20124 pWDICtx->wdiNvBlobInfo.usTotalFragment ))
Jeff Johnson295189b2012-06-20 16:38:30 -070020125 {
20126 WDI_NvDownloadReq(&pWDICtx->wdiCachedNvDownloadReq,
Jeff Johnsone7245742012-09-05 17:12:55 -070020127 (WDI_NvDownloadRspCb)pWDICtx->pfncRspCB, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070020128 }
20129 else
20130 {
20131 /*Reset the Nv related global information in WDI context information */
20132 pWDICtx->wdiNvBlobInfo.usTotalFragment = 0;
20133 pWDICtx->wdiNvBlobInfo.usFragmentSize = 0;
20134 pWDICtx->wdiNvBlobInfo.usCurrentFragment = 0;
20135 /*call WDA callback function for last fragment */
20136 wdiNvDownloadRspCb = (WDI_NvDownloadRspCb)pWDICtx->pfncRspCB;
20137 wdiNvDownloadRspCb( &wdiNvDownloadRsp, pWDICtx->pRspCBUserData);
20138 }
20139
Jeff Johnsone7245742012-09-05 17:12:55 -070020140 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020141}
20142#ifdef WLAN_FEATURE_VOWIFI_11R
20143/**
20144 @brief Process Add TSpec Rsp function (called when a response
20145 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020146
20147 @param pWDICtx: pointer to the WLAN DAL context
20148 pEventData: pointer to the event information structure
20149
Jeff Johnson295189b2012-06-20 16:38:30 -070020150 @see
20151 @return Result of the function call
20152*/
20153WDI_Status
20154WDI_ProcessAggrAddTSpecRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020155(
Jeff Johnson295189b2012-06-20 16:38:30 -070020156 WDI_ControlBlockType* pWDICtx,
20157 WDI_EventInfoType* pEventData
20158)
20159{
20160 WDI_Status wdiStatus;
20161 tAggrAddTsRspParams aggrAddTsRsp;
20162 WDI_AggrAddTsRspCb wdiAggrAddTsRspCb;
20163 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20164
20165 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020166 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020167 -------------------------------------------------------------------------*/
20168 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20169 ( NULL == pEventData->pEventData))
20170 {
20171 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020172 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020173 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020174 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020175 }
20176
20177 wdiAggrAddTsRspCb = (WDI_AddTsRspCb)pWDICtx->pfncRspCB;
20178
20179 /*-------------------------------------------------------------------------
20180 Extract response and send it to UMAC
20181 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020182 wpalMemoryCopy( &aggrAddTsRsp,
20183 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070020184 sizeof(aggrAddTsRsp));
20185
20186 /* What is the difference between status0 and status1? */
Jeff Johnsone7245742012-09-05 17:12:55 -070020187 wdiStatus = WDI_HAL_2_WDI_STATUS(aggrAddTsRsp.status0);
Jeff Johnson295189b2012-06-20 16:38:30 -070020188
20189 /*Notify UMAC*/
20190 wdiAggrAddTsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
20191
Jeff Johnsone7245742012-09-05 17:12:55 -070020192 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020193}/*WDI_ProcessAddTSpecRsp*/
20194#endif /* WLAN_FEATURE_VOWIFI_11R */
20195
20196/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020197 @brief WDI_ProcessHostResumeRsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070020198 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020199
20200 @param pWDICtx: pointer to the WLAN DAL context
20201 pEventData: pointer to the event information structure
20202
Jeff Johnson295189b2012-06-20 16:38:30 -070020203 @see
20204 @return Result of the function call
20205*/
20206WDI_Status
20207WDI_ProcessHostResumeRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020208(
Jeff Johnson295189b2012-06-20 16:38:30 -070020209 WDI_ControlBlockType* pWDICtx,
20210 WDI_EventInfoType* pEventData
20211)
20212{
20213 WDI_SuspendResumeRspParamsType wdiResumeRspParams;
20214 WDI_HostResumeEventRspCb wdiHostResumeRspCb;
20215 tHalHostResumeRspParams hostResumeRspMsg;
20216 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20217
20218 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020219 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020220 -------------------------------------------------------------------------*/
20221 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20222 ( NULL == pEventData->pEventData))
20223 {
20224 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020225 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020226 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020227 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020228 }
20229
20230 wdiHostResumeRspCb = (WDI_HostResumeEventRspCb)pWDICtx->pfncRspCB;
20231
20232 /*-------------------------------------------------------------------------
20233 Extract response and send it to UMAC
20234 -------------------------------------------------------------------------*/
20235
Jeff Johnsone7245742012-09-05 17:12:55 -070020236 wpalMemoryCopy( &hostResumeRspMsg,
Jeff Johnson295189b2012-06-20 16:38:30 -070020237 (wpt_uint8*)pEventData->pEventData,
20238 sizeof(hostResumeRspMsg));
20239
Jeff Johnsone7245742012-09-05 17:12:55 -070020240 wdiResumeRspParams.wdiStatus =
20241 WDI_HAL_2_WDI_STATUS(hostResumeRspMsg.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070020242
20243 /*Notify UMAC*/
20244 wdiHostResumeRspCb(&wdiResumeRspParams, (void*) pWDICtx->pRspCBUserData);
20245
20246 return WDI_STATUS_SUCCESS;
20247}
20248
20249/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020250 @brief Process Set Tx PER Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070020251 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020252
20253 @param pWDICtx: pointer to the WLAN DAL context
20254 pEventData: pointer to the event information structure
20255
Jeff Johnson295189b2012-06-20 16:38:30 -070020256 @see
20257 @return Result of the function call
20258*/
20259WDI_Status
20260WDI_ProcessSetTxPerTrackingRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020261(
Jeff Johnson295189b2012-06-20 16:38:30 -070020262 WDI_ControlBlockType* pWDICtx,
20263 WDI_EventInfoType* pEventData
20264)
20265{
20266 WDI_Status wdiStatus;
20267 eHalStatus halStatus;
20268 WDI_SetTxPerTrackingRspCb pwdiSetTxPerTrackingRspCb;
20269 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20270
20271 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020272 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020273 -------------------------------------------------------------------------*/
20274 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20275 ( NULL == pEventData->pEventData))
20276 {
20277 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020278 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020279 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020280 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020281 }
Jeff Johnsone7245742012-09-05 17:12:55 -070020282
20283 pwdiSetTxPerTrackingRspCb = (WDI_SetTxPerTrackingRspCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070020284
20285 /*-------------------------------------------------------------------------
20286 Extract response and send it to UMAC
20287 -------------------------------------------------------------------------*/
20288 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070020289 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070020290
20291 /*Notify UMAC*/
20292 pwdiSetTxPerTrackingRspCb( wdiStatus, pWDICtx->pRspCBUserData);
20293
Jeff Johnsone7245742012-09-05 17:12:55 -070020294 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020295}/*WDI_ProcessSetTxPerTrackingRsp*/
20296
20297/*==========================================================================
20298 Indications from HAL
20299 ==========================================================================*/
20300/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020301 @brief Process Low RSSI Indication function (called when an
Jeff Johnson295189b2012-06-20 16:38:30 -070020302 indication of this kind is being received over the bus
20303 from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020304
20305 @param pWDICtx: pointer to the WLAN DAL context
20306 pEventData: pointer to the event information structure
20307
Jeff Johnson295189b2012-06-20 16:38:30 -070020308 @see
20309 @return Result of the function call
20310*/
20311WDI_Status
20312WDI_ProcessLowRSSIInd
Jeff Johnsone7245742012-09-05 17:12:55 -070020313(
Jeff Johnson295189b2012-06-20 16:38:30 -070020314 WDI_ControlBlockType* pWDICtx,
20315 WDI_EventInfoType* pEventData
20316)
20317{
20318 WDI_LowLevelIndType wdiInd;
20319 tHalRSSINotificationIndMsg halRSSINotificationIndMsg;
20320 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20321
20322 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020323 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020324 -------------------------------------------------------------------------*/
20325 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20326 ( NULL == pEventData->pEventData))
20327 {
20328 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020329 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020330 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020331 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020332 }
20333
20334 /*-------------------------------------------------------------------------
20335 Extract indication and send it to UMAC
20336 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020337 wpalMemoryCopy( (void *)&halRSSINotificationIndMsg.rssiNotificationParams,
20338 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070020339 sizeof(tHalRSSINotification));
20340
20341 /*Fill in the indication parameters*/
20342 wdiInd.wdiIndicationType = WDI_RSSI_NOTIFICATION_IND;
20343 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres1PosCross =
20344 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres1PosCross;
20345 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres1NegCross =
20346 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres1NegCross;
20347 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres2PosCross =
20348 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres2PosCross;
20349 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres2NegCross =
20350 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres2NegCross;
20351 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres3PosCross =
20352 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres3PosCross;
20353 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres3NegCross =
20354 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres3NegCross;
Srinivasdaaec712012-12-12 15:59:44 -080020355 wdiInd.wdiIndicationData.wdiLowRSSIInfo.avgRssi =
20356 halRSSINotificationIndMsg.rssiNotificationParams.avgRssi;
Jeff Johnson295189b2012-06-20 16:38:30 -070020357
ltimariub77f24b2013-01-24 18:54:33 -080020358 if ( pWDICtx->wdiLowLevelIndCB )
20359 {
20360 /*Notify UMAC of indication*/
20361 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
20362 }
Jeff Johnsone7245742012-09-05 17:12:55 -070020363
20364 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020365}/*WDI_ProcessLowRSSIInd*/
20366
20367
20368/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020369 @brief Process Missed Beacon Indication function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070020370 an indication of this kind is being received over the
20371 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020372
20373 @param pWDICtx: pointer to the WLAN DAL context
20374 pEventData: pointer to the event information structure
20375
Jeff Johnson295189b2012-06-20 16:38:30 -070020376 @see
20377 @return Result of the function call
20378*/
20379WDI_Status
20380WDI_ProcessMissedBeaconInd
Jeff Johnsone7245742012-09-05 17:12:55 -070020381(
Jeff Johnson295189b2012-06-20 16:38:30 -070020382 WDI_ControlBlockType* pWDICtx,
20383 WDI_EventInfoType* pEventData
20384)
20385{
20386 WDI_Status wdiStatus;
20387 eHalStatus halStatus;
20388 WDI_LowLevelIndType wdiInd;
Leela Venkata Kiran Kumar Reddy Chirala3ca17902013-02-27 19:50:05 -080020389 tpHalMissedBeaconIndParams halMissedBeaconIndParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070020390 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20391
20392 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020393 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020394 -------------------------------------------------------------------------*/
20395 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20396 ( NULL == pEventData->pEventData))
20397 {
20398 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020399 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020400 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020401 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020402 }
Leela Venkata Kiran Kumar Reddy Chirala3ca17902013-02-27 19:50:05 -080020403 halMissedBeaconIndParams = (tpHalMissedBeaconIndParams)pEventData->pEventData;
Jeff Johnson295189b2012-06-20 16:38:30 -070020404 /*-------------------------------------------------------------------------
20405 Extract indication and send it to UMAC
20406 -------------------------------------------------------------------------*/
20407 /*! TO DO: Parameters need to be unpacked according to HAL struct*/
20408 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070020409 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070020410
20411 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020412 wdiInd.wdiIndicationType = WDI_MISSED_BEACON_IND;
Leela Venkata Kiran Kumar Reddy Chirala3ca17902013-02-27 19:50:05 -080020413 wdiInd.wdiIndicationData.wdiMissedBeaconInd.bssIdx =
20414 halMissedBeaconIndParams->bssIdx;
ltimariub77f24b2013-01-24 18:54:33 -080020415 if ( pWDICtx->wdiLowLevelIndCB )
20416 {
20417 /*Notify UMAC*/
20418 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
20419 }
Jeff Johnsone7245742012-09-05 17:12:55 -070020420
20421 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020422}/*WDI_ProcessMissedBeaconInd*/
20423
20424
20425/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020426 @brief Process Unk Addr Frame Indication function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070020427 an indication of this kind is being received over the
20428 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020429
20430 @param pWDICtx: pointer to the WLAN DAL context
20431 pEventData: pointer to the event information structure
20432
Jeff Johnson295189b2012-06-20 16:38:30 -070020433 @see
20434 @return Result of the function call
20435*/
20436WDI_Status
20437WDI_ProcessUnkAddrFrameInd
Jeff Johnsone7245742012-09-05 17:12:55 -070020438(
Jeff Johnson295189b2012-06-20 16:38:30 -070020439 WDI_ControlBlockType* pWDICtx,
20440 WDI_EventInfoType* pEventData
20441)
20442{
20443 WDI_Status wdiStatus;
20444 eHalStatus halStatus;
20445 WDI_LowLevelIndType wdiInd;
20446 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20447
20448 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020449 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020450 -------------------------------------------------------------------------*/
20451 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20452 ( NULL == pEventData->pEventData))
20453 {
20454 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020455 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020456 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020457 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020458 }
20459
20460 /*-------------------------------------------------------------------------
20461 Extract indication and send it to UMAC
20462 -------------------------------------------------------------------------*/
20463 /*! TO DO: Parameters need to be unpacked according to HAL struct*/
20464 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070020465 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070020466
20467 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020468 wdiInd.wdiIndicationType = WDI_UNKNOWN_ADDR2_FRAME_RX_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070020469 /* ! TO DO - fill in from HAL struct:
20470 wdiInd.wdiIndicationData.wdiUnkAddr2FrmInfo*/
20471
ltimariub77f24b2013-01-24 18:54:33 -080020472 if ( pWDICtx->wdiLowLevelIndCB )
20473 {
20474 /*Notify UMAC*/
20475 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
20476 }
Jeff Johnsone7245742012-09-05 17:12:55 -070020477
20478 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020479}/*WDI_ProcessUnkAddrFrameInd*/
20480
20481
20482/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020483 @brief Process MIC Failure Indication function (called when an
Jeff Johnson295189b2012-06-20 16:38:30 -070020484 indication of this kind is being received over the bus
20485 from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020486
20487 @param pWDICtx: pointer to the WLAN DAL context
20488 pEventData: pointer to the event information structure
20489
Jeff Johnson295189b2012-06-20 16:38:30 -070020490 @see
20491 @return Result of the function call
20492*/
20493WDI_Status
20494WDI_ProcessMicFailureInd
Jeff Johnsone7245742012-09-05 17:12:55 -070020495(
Jeff Johnson295189b2012-06-20 16:38:30 -070020496 WDI_ControlBlockType* pWDICtx,
20497 WDI_EventInfoType* pEventData
20498)
20499{
20500 WDI_LowLevelIndType wdiInd;
20501 tpSirMicFailureInd pHalMicFailureInd;
20502
20503 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20504
20505 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020506 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020507 -------------------------------------------------------------------------*/
20508 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20509 ( NULL == pEventData->pEventData))
20510 {
20511 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020512 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020513 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020514 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020515 }
Jeff Johnsone7245742012-09-05 17:12:55 -070020516
Jeff Johnson295189b2012-06-20 16:38:30 -070020517 pHalMicFailureInd = (tpSirMicFailureInd)pEventData->pEventData;
20518 /*-------------------------------------------------------------------------
20519 Extract indication and send it to UMAC
20520 -------------------------------------------------------------------------*/
20521
20522 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020523 wdiInd.wdiIndicationType = WDI_MIC_FAILURE_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070020524 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.bssId,
20525 pHalMicFailureInd->bssId, WDI_MAC_ADDR_LEN);
20526 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.macSrcAddr,
20527 pHalMicFailureInd->info.srcMacAddr, WDI_MAC_ADDR_LEN);
20528 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.macTaAddr,
20529 pHalMicFailureInd->info.taMacAddr, WDI_MAC_ADDR_LEN);
20530 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.macDstAddr,
20531 pHalMicFailureInd->info.dstMacAddr, WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070020532 wdiInd.wdiIndicationData.wdiMICFailureInfo.ucMulticast =
Jeff Johnson295189b2012-06-20 16:38:30 -070020533 pHalMicFailureInd->info.multicast;
Jeff Johnsone7245742012-09-05 17:12:55 -070020534 wdiInd.wdiIndicationData.wdiMICFailureInfo.ucIV1 =
Jeff Johnson295189b2012-06-20 16:38:30 -070020535 pHalMicFailureInd->info.IV1;
Jeff Johnsone7245742012-09-05 17:12:55 -070020536 wdiInd.wdiIndicationData.wdiMICFailureInfo.keyId=
Jeff Johnson295189b2012-06-20 16:38:30 -070020537 pHalMicFailureInd->info.keyId;
20538 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.TSC,
20539 pHalMicFailureInd->info.TSC,WDI_CIPHER_SEQ_CTR_SIZE);
20540 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.macRxAddr,
20541 pHalMicFailureInd->info.rxMacAddr, WDI_MAC_ADDR_LEN);
ltimariub77f24b2013-01-24 18:54:33 -080020542
20543 if ( pWDICtx->wdiLowLevelIndCB )
20544 {
20545 /*Notify UMAC*/
20546 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
20547 }
Jeff Johnsone7245742012-09-05 17:12:55 -070020548
20549 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020550}/*WDI_ProcessMicFailureInd*/
20551
20552
20553/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020554 @brief Process Fatal Failure Indication function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070020555 an indication of this kind is being received over the
20556 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020557
20558 @param pWDICtx: pointer to the WLAN DAL context
20559 pEventData: pointer to the event information structure
20560
Jeff Johnson295189b2012-06-20 16:38:30 -070020561 @see
20562 @return Result of the function call
20563*/
20564WDI_Status
20565WDI_ProcessFatalErrorInd
Jeff Johnsone7245742012-09-05 17:12:55 -070020566(
Jeff Johnson295189b2012-06-20 16:38:30 -070020567 WDI_ControlBlockType* pWDICtx,
20568 WDI_EventInfoType* pEventData
20569)
20570{
20571 WDI_Status wdiStatus;
20572 eHalStatus halStatus;
20573 WDI_LowLevelIndType wdiInd;
20574 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20575
20576 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020577 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020578 -------------------------------------------------------------------------*/
20579 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20580 ( NULL == pEventData->pEventData))
20581 {
20582 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020583 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020584 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020585 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020586 }
20587
20588 /*-------------------------------------------------------------------------
20589 Extract indication and send it to UMAC
20590 -------------------------------------------------------------------------*/
20591
20592 /*! TO DO: Parameters need to be unpacked according to HAL struct*/
20593 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070020594 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070020595
20596 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
20597 "Fatal failure received from device %d ", halStatus );
Jeff Johnsone7245742012-09-05 17:12:55 -070020598
Jeff Johnson295189b2012-06-20 16:38:30 -070020599 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020600 wdiInd.wdiIndicationType = WDI_FATAL_ERROR_IND;
20601 wdiInd.wdiIndicationData.usErrorCode = WDI_ERR_DEV_INTERNAL_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020602
ltimariub77f24b2013-01-24 18:54:33 -080020603 if ( pWDICtx->wdiLowLevelIndCB )
20604 {
20605 /*Notify UMAC*/
20606 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
20607 }
Jeff Johnsone7245742012-09-05 17:12:55 -070020608
20609 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020610}/*WDI_ProcessFatalErrorInd*/
20611
20612/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020613 @brief Process Delete STA Indication function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070020614 an indication of this kind is being received over the
20615 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020616
20617 @param pWDICtx: pointer to the WLAN DAL context
20618 pEventData: pointer to the event information structure
20619
Jeff Johnson295189b2012-06-20 16:38:30 -070020620 @see
20621 @return Result of the function call
20622*/
20623WDI_Status
20624WDI_ProcessDelSTAInd
Jeff Johnsone7245742012-09-05 17:12:55 -070020625(
Jeff Johnson295189b2012-06-20 16:38:30 -070020626 WDI_ControlBlockType* pWDICtx,
20627 WDI_EventInfoType* pEventData
20628)
20629{
20630 tDeleteStaContextParams halDelSTACtx;
20631 WDI_LowLevelIndType wdiInd;
20632 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20633
20634 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020635 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020636 -------------------------------------------------------------------------*/
20637 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20638 ( NULL == pEventData->pEventData))
20639 {
20640 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020641 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020642 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020643 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020644 }
20645
20646 /*-------------------------------------------------------------------------
20647 Extract indication and send it to UMAC
20648 -------------------------------------------------------------------------*/
20649
20650 /* Parameters need to be unpacked according to HAL struct*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020651 wpalMemoryCopy( &halDelSTACtx,
20652 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070020653 sizeof(halDelSTACtx));
20654
20655 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020656 wdiInd.wdiIndicationType = WDI_DEL_STA_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070020657
20658 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiDeleteSTAIndType.macADDR2,
20659 halDelSTACtx.addr2, WDI_MAC_ADDR_LEN);
20660 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiDeleteSTAIndType.macBSSID,
20661 halDelSTACtx.bssId, WDI_MAC_ADDR_LEN);
20662
Jeff Johnsone7245742012-09-05 17:12:55 -070020663 wdiInd.wdiIndicationData.wdiDeleteSTAIndType.usAssocId =
Jeff Johnson295189b2012-06-20 16:38:30 -070020664 halDelSTACtx.assocId;
Jeff Johnsone7245742012-09-05 17:12:55 -070020665 wdiInd.wdiIndicationData.wdiDeleteSTAIndType.ucSTAIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070020666 halDelSTACtx.staId;
Jeff Johnsone7245742012-09-05 17:12:55 -070020667 wdiInd.wdiIndicationData.wdiDeleteSTAIndType.wptReasonCode =
20668 halDelSTACtx.reasonCode;
Jeff Johnson295189b2012-06-20 16:38:30 -070020669
ltimariub77f24b2013-01-24 18:54:33 -080020670 if ( pWDICtx->wdiLowLevelIndCB )
20671 {
20672 /*Notify UMAC*/
20673 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
20674 }
Jeff Johnsone7245742012-09-05 17:12:55 -070020675
20676 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020677}/*WDI_ProcessDelSTAInd*/
20678
20679/**
20680*@brief Process Coex Indication function (called when
20681 an indication of this kind is being received over the
20682 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020683
20684 @param pWDICtx: pointer to the WLAN DAL context
20685 pEventData: pointer to the event information structure
20686
Jeff Johnson295189b2012-06-20 16:38:30 -070020687 @see
20688 @return Result of the function call
20689*/
20690WDI_Status
20691WDI_ProcessCoexInd
Jeff Johnsone7245742012-09-05 17:12:55 -070020692(
Jeff Johnson295189b2012-06-20 16:38:30 -070020693 WDI_ControlBlockType* pWDICtx,
20694 WDI_EventInfoType* pEventData
20695)
20696{
20697 WDI_LowLevelIndType wdiInd;
20698 tCoexIndMsg halCoexIndMsg;
20699 wpt_uint32 index;
20700 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20701
20702 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020703 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020704 -------------------------------------------------------------------------*/
20705 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20706 ( NULL == pEventData->pEventData ))
20707 {
20708 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020709 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020710 WDI_ASSERT( 0 );
Jeff Johnsone7245742012-09-05 17:12:55 -070020711 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020712 }
20713
20714 /*-------------------------------------------------------------------------
20715 Extract indication and send it to UMAC
20716 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020717 wpalMemoryCopy( &halCoexIndMsg.coexIndParams,
20718 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070020719 sizeof(halCoexIndMsg.coexIndParams) );
20720
20721 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020722 wdiInd.wdiIndicationType = WDI_COEX_IND;
20723 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndType = halCoexIndMsg.coexIndParams.coexIndType;
Jeff Johnson295189b2012-06-20 16:38:30 -070020724 for (index = 0; index < WDI_COEX_IND_DATA_SIZE; index++)
20725 {
Jeff Johnsone7245742012-09-05 17:12:55 -070020726 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[index] = halCoexIndMsg.coexIndParams.coexIndData[index];
Jeff Johnson295189b2012-06-20 16:38:30 -070020727 }
20728
20729 // DEBUG
20730 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
20731 "[COEX WDI] Coex Ind Type (%x) data (%x %x %x %x)",
Jeff Johnsone7245742012-09-05 17:12:55 -070020732 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndType,
20733 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[0],
20734 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[1],
20735 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[2],
20736 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[3] );
Jeff Johnson295189b2012-06-20 16:38:30 -070020737
ltimariub77f24b2013-01-24 18:54:33 -080020738 if ( pWDICtx->wdiLowLevelIndCB )
20739 {
20740 /*Notify UMAC*/
20741 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
20742 }
Jeff Johnsone7245742012-09-05 17:12:55 -070020743
20744 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020745}/*WDI_ProcessCoexInd*/
20746
20747/**
20748*@brief Process Tx Complete Indication function (called when
20749 an indication of this kind is being received over the
20750 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020751
20752 @param pWDICtx: pointer to the WLAN DAL context
20753 pEventData: pointer to the event information structure
20754
Jeff Johnson295189b2012-06-20 16:38:30 -070020755 @see
20756 @return Result of the function call
20757*/
20758WDI_Status
20759WDI_ProcessTxCompleteInd
Jeff Johnsone7245742012-09-05 17:12:55 -070020760(
Jeff Johnson295189b2012-06-20 16:38:30 -070020761 WDI_ControlBlockType* pWDICtx,
20762 WDI_EventInfoType* pEventData
20763)
20764{
20765 WDI_LowLevelIndType wdiInd;
20766 tTxComplIndMsg halTxComplIndMsg;
20767 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20768
20769 /*-------------------------------------------------------------------------
20770 Sanity check
20771 -------------------------------------------------------------------------*/
20772 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20773 ( NULL == pEventData->pEventData ))
20774 {
20775 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020776 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020777 WDI_ASSERT( 0 );
20778 return WDI_STATUS_E_FAILURE;
20779 }
20780
20781 /*-------------------------------------------------------------------------
20782 Extract indication and send it to UMAC
20783 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020784 wpalMemoryCopy( &halTxComplIndMsg.txComplParams,
20785 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070020786 sizeof(halTxComplIndMsg.txComplParams) );
20787
20788 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020789 wdiInd.wdiIndicationType = WDI_TX_COMPLETE_IND;
20790 wdiInd.wdiIndicationData.tx_complete_status
20791 = halTxComplIndMsg.txComplParams.status;
Jeff Johnson295189b2012-06-20 16:38:30 -070020792
ltimariub77f24b2013-01-24 18:54:33 -080020793 if ( pWDICtx->wdiLowLevelIndCB )
20794 {
20795 /*Notify UMAC*/
20796 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
20797 }
Jeff Johnsone7245742012-09-05 17:12:55 -070020798
20799 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020800}/*WDI_ProcessTxCompleteInd*/
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053020801#ifdef FEATURE_WLAN_TDLS
20802/**
20803*@brief Process TDLS Indication function (called when
20804 an indication of this kind is being received over the
20805 bus from HAL)
Jeff Johnson295189b2012-06-20 16:38:30 -070020806
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053020807 @param pWDICtx: pointer to the WLAN DAL context
20808 pEventData: pointer to the event information structure
20809
20810 @see
20811 @return Result of the function call
20812*/
20813WDI_Status
20814WDI_ProcessTdlsInd
20815(
20816 WDI_ControlBlockType* pWDICtx,
20817 WDI_EventInfoType* pEventData
20818)
20819{
20820 WDI_LowLevelIndType wdiInd;
20821 tTdlsIndMsg halTdlsIndMsg;
20822 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20823
20824 /*-------------------------------------------------------------------------
20825 Sanity check
20826 -------------------------------------------------------------------------*/
20827 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20828 ( NULL == pEventData->pEventData ))
20829 {
20830 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
20831 "%s: Invalid parameters", __func__);
20832 WDI_ASSERT( 0 );
20833 return WDI_STATUS_E_FAILURE;
20834 }
20835
20836 /*-------------------------------------------------------------------------
20837 Extract indication and send it to UMAC
20838 -------------------------------------------------------------------------*/
20839 wpalMemoryCopy( &halTdlsIndMsg.tdlsIndParams,
20840 pEventData->pEventData,
20841 sizeof(halTdlsIndMsg.tdlsIndParams) );
20842
20843 /*Fill in the indication parameters*/
20844 wdiInd.wdiIndicationType = WDI_TDLS_IND;
20845
20846 wdiInd.wdiIndicationData.wdiTdlsIndInfo.status
20847 = halTdlsIndMsg.tdlsIndParams.status;
20848
20849 wdiInd.wdiIndicationData.wdiTdlsIndInfo.staIdx
20850 = halTdlsIndMsg.tdlsIndParams.staIdx;
20851
20852 wdiInd.wdiIndicationData.wdiTdlsIndInfo.reasonCode
20853 = halTdlsIndMsg.tdlsIndParams.reasonCode;
20854
20855 /*Notify UMAC*/
20856 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
20857
20858 return WDI_STATUS_SUCCESS;
20859}/*WDI_ProcessTdlsInd*/
20860#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070020861/**
Viral Modid86bde22012-12-10 13:09:21 -080020862*@brief Process Noa Start Indication function (called when
20863 an indication of this kind is being received over the
20864 bus from HAL)
20865
20866 @param pWDICtx: pointer to the WLAN DAL context
20867 pEventData: pointer to the event information structure
20868
20869 @see
20870 @return Result of the function call
20871*/
20872WDI_Status
20873WDI_ProcessP2pNoaStartInd
20874(
20875 WDI_ControlBlockType* pWDICtx,
20876 WDI_EventInfoType* pEventData
20877)
20878{
20879 WDI_LowLevelIndType wdiInd;
20880 tNoaStartIndMsg halNoaStartIndMsg;
20881 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20882
20883 /*-------------------------------------------------------------------------
20884 Sanity check
20885 -------------------------------------------------------------------------*/
20886 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20887 ( NULL == pEventData->pEventData ))
20888 {
20889 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
20890 "%s: Invalid parameters", __func__);
20891 WDI_ASSERT( 0 );
20892 return WDI_STATUS_E_FAILURE;
20893 }
20894
20895 /*-------------------------------------------------------------------------
20896 Extract indication and send it to UMAC
20897 -------------------------------------------------------------------------*/
20898 wpalMemoryCopy( &halNoaStartIndMsg.noaStartIndParams,
20899 pEventData->pEventData,
20900 sizeof(halNoaStartIndMsg.noaStartIndParams) );
20901
20902 /*Fill in the indication parameters*/
20903 wdiInd.wdiIndicationType = WDI_P2P_NOA_START_IND;
20904
20905 wdiInd.wdiIndicationData.wdiP2pNoaStartInfo.status
20906 = halNoaStartIndMsg.noaStartIndParams.status;
20907
20908 wdiInd.wdiIndicationData.wdiP2pNoaStartInfo.bssIdx
20909 = halNoaStartIndMsg.noaStartIndParams.bssIdx;
20910
20911 /*Notify UMAC*/
20912 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
20913
20914 return WDI_STATUS_SUCCESS;
20915}/*WDI_ProcessNoaAttrInd*/
20916
20917/**
Jeff Johnson295189b2012-06-20 16:38:30 -070020918*@brief Process Noa Attr Indication function (called when
20919 an indication of this kind is being received over the
20920 bus from HAL)
20921
20922 @param pWDICtx: pointer to the WLAN DAL context
20923 pEventData: pointer to the event information structure
20924
20925 @see
20926 @return Result of the function call
20927*/
20928WDI_Status
20929WDI_ProcessP2pNoaAttrInd
20930(
20931 WDI_ControlBlockType* pWDICtx,
20932 WDI_EventInfoType* pEventData
20933)
20934{
20935 WDI_LowLevelIndType wdiInd;
20936 tNoaAttrIndMsg halNoaAttrIndMsg;
20937 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20938
20939 /*-------------------------------------------------------------------------
20940 Sanity check
20941 -------------------------------------------------------------------------*/
20942 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20943 ( NULL == pEventData->pEventData ))
20944 {
20945 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020946 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020947 WDI_ASSERT( 0 );
20948 return WDI_STATUS_E_FAILURE;
20949 }
20950
20951 /*-------------------------------------------------------------------------
20952 Extract indication and send it to UMAC
20953 -------------------------------------------------------------------------*/
20954 wpalMemoryCopy( &halNoaAttrIndMsg.noaAttrIndParams,
20955 pEventData->pEventData,
20956 sizeof(halNoaAttrIndMsg.noaAttrIndParams) );
20957
20958 /*Fill in the indication parameters*/
20959 wdiInd.wdiIndicationType = WDI_P2P_NOA_ATTR_IND;
Jeff Johnsone7245742012-09-05 17:12:55 -070020960
Jeff Johnson295189b2012-06-20 16:38:30 -070020961 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.status
20962 = halNoaAttrIndMsg.noaAttrIndParams.status;
Jeff Johnsone7245742012-09-05 17:12:55 -070020963
Jeff Johnson295189b2012-06-20 16:38:30 -070020964 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.ucIndex
20965 = halNoaAttrIndMsg.noaAttrIndParams.index;
20966 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.ucOppPsFlag
20967 = halNoaAttrIndMsg.noaAttrIndParams.oppPsFlag;
20968 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.usCtWin
20969 = halNoaAttrIndMsg.noaAttrIndParams.ctWin;
Jeff Johnsone7245742012-09-05 17:12:55 -070020970
Jeff Johnson295189b2012-06-20 16:38:30 -070020971 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.usNoa1IntervalCnt
20972 = halNoaAttrIndMsg.noaAttrIndParams.uNoa1IntervalCnt;
20973 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa1Duration
20974 = halNoaAttrIndMsg.noaAttrIndParams.uNoa1Duration;
20975 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa1Interval
20976 = halNoaAttrIndMsg.noaAttrIndParams.uNoa1Interval;
20977 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa1StartTime
20978 = halNoaAttrIndMsg.noaAttrIndParams.uNoa1StartTime;
Jeff Johnsone7245742012-09-05 17:12:55 -070020979
Jeff Johnson295189b2012-06-20 16:38:30 -070020980 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.usNoa2IntervalCnt
20981 = halNoaAttrIndMsg.noaAttrIndParams.uNoa2IntervalCnt;
20982 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa2Duration
20983 = halNoaAttrIndMsg.noaAttrIndParams.uNoa2Duration;
20984 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa2Interval
20985 = halNoaAttrIndMsg.noaAttrIndParams.uNoa2Interval;
20986 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa2StartTime
20987 = halNoaAttrIndMsg.noaAttrIndParams.uNoa2StartTime;
20988
ltimariub77f24b2013-01-24 18:54:33 -080020989 if ( pWDICtx->wdiLowLevelIndCB )
20990 {
20991 /*Notify UMAC*/
20992 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
20993 }
Jeff Johnson295189b2012-06-20 16:38:30 -070020994
20995 return WDI_STATUS_SUCCESS;
20996}/*WDI_ProcessNoaAttrInd*/
Jeff Johnson295189b2012-06-20 16:38:30 -070020997
20998/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020999 @brief Process Tx PER Hit Indication function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070021000 an indication of this kind is being received over the
21001 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070021002
21003 @param pWDICtx: pointer to the WLAN DAL context
21004 pEventData: pointer to the event information structure
21005
Jeff Johnson295189b2012-06-20 16:38:30 -070021006 @see
21007 @return Result of the function call
21008*/
21009WDI_Status
21010WDI_ProcessTxPerHitInd
Jeff Johnsone7245742012-09-05 17:12:55 -070021011(
Jeff Johnson295189b2012-06-20 16:38:30 -070021012 WDI_ControlBlockType* pWDICtx,
21013 WDI_EventInfoType* pEventData
21014)
21015{
21016 WDI_LowLevelIndType wdiInd;
21017 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Jeff Johnsone7245742012-09-05 17:12:55 -070021018
Jeff Johnson295189b2012-06-20 16:38:30 -070021019 /*-------------------------------------------------------------------------
21020 Extract indication and send it to UMAC
21021 -------------------------------------------------------------------------*/
21022 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021023 wdiInd.wdiIndicationType = WDI_TX_PER_HIT_IND;
21024
ltimariub77f24b2013-01-24 18:54:33 -080021025 if ( pWDICtx->wdiLowLevelIndCB )
21026 {
21027 /*Notify UMAC*/
21028 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
21029 }
Jeff Johnson295189b2012-06-20 16:38:30 -070021030
Jeff Johnsone7245742012-09-05 17:12:55 -070021031 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021032}/*WDI_ProcessTxPerHitInd*/
21033
Jeff Johnson295189b2012-06-20 16:38:30 -070021034/**
Yue Mab9c86f42013-08-14 15:59:08 -070021035 @brief Process Periodic Tx Pattern Fw Indication function
21036
21037 @param pWDICtx: pointer to the WLAN DAL context
21038 pEventData: pointer to the event information structure
21039
21040 @see
21041 @return Result of the function call
21042*/
21043WDI_Status
21044WDI_ProcessPeriodicTxPtrnFwInd
21045(
21046 WDI_ControlBlockType* pWDICtx,
21047 WDI_EventInfoType* pEventData
21048)
21049{
21050 WDI_LowLevelIndType wdiInd;
21051
21052 /*-------------------------------------------------------------------------
21053 Sanity check
21054 -------------------------------------------------------------------------*/
21055 if ((NULL == pWDICtx) || (NULL == pEventData) ||
21056 (NULL == pEventData->pEventData))
21057 {
21058 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
21059 "%s: Invalid parameters", __func__);
21060 WDI_ASSERT(0);
21061 return WDI_STATUS_E_FAILURE;
21062 }
21063
21064 /*-------------------------------------------------------------------------
21065 Extract indication and send it to UMAC
21066 -------------------------------------------------------------------------*/
21067 wpalMemoryCopy(&(wdiInd.wdiIndicationData.wdiPeriodicTxPtrnFwInd),
21068 (tHalPeriodicTxPtrnFwInd *)pEventData->pEventData,
21069 sizeof(tHalPeriodicTxPtrnFwInd));
21070
21071 if (pWDICtx->wdiLowLevelIndCB)
21072 {
21073 /*Notify UMAC*/
21074 pWDICtx->wdiLowLevelIndCB(&wdiInd, pWDICtx->pIndUserData);
21075 }
21076
21077 return WDI_STATUS_SUCCESS;
21078}
21079
21080/**
Jeff Johnson295189b2012-06-20 16:38:30 -070021081 @brief WDI_ProcessFTMCommandReq
21082 Process FTM Command, simply route to HAL
Jeff Johnsone7245742012-09-05 17:12:55 -070021083
21084 @param pWDICtx: pointer to the WLAN DAL context
21085 pEventData: pointer to the event information structure
21086
Jeff Johnson295189b2012-06-20 16:38:30 -070021087 @see
21088 @return Result of the function call
21089*/
21090WDI_Status
21091WDI_ProcessFTMCommandReq
Jeff Johnsone7245742012-09-05 17:12:55 -070021092(
Jeff Johnson295189b2012-06-20 16:38:30 -070021093 WDI_ControlBlockType* pWDICtx,
21094 WDI_EventInfoType* pEventData
21095)
21096{
21097 WDI_FTMCommandReqType *ftmCommandReq = NULL;
21098 wpt_uint8 *ftmCommandBuffer = NULL;
21099 wpt_uint16 dataOffset;
21100 wpt_uint16 bufferSize;
21101 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021102 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021103 -------------------------------------------------------------------------*/
21104 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21105 ( NULL == pEventData->pEventData))
21106
21107 {
21108 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021109 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021110 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021111 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021112 }
21113
21114 ftmCommandReq = (WDI_FTMCommandReqType *)pEventData->pEventData;
21115
21116 /* Get MSG Buffer */
21117 WDI_GetMessageBuffer(pWDICtx,
21118 WDI_FTM_CMD_REQ,
21119 ftmCommandReq->bodyLength,
21120 &ftmCommandBuffer,
21121 &dataOffset,
21122 &bufferSize);
21123
21124 wpalMemoryCopy(ftmCommandBuffer + dataOffset,
21125 ftmCommandReq->FTMCommandBody,
21126 ftmCommandReq->bodyLength);
21127
21128 /* Send MSG */
21129 return WDI_SendMsg(pWDICtx,
21130 ftmCommandBuffer,
21131 bufferSize,
21132 pEventData->pCBfnc,
21133 pEventData->pUserData,
21134 WDI_FTM_CMD_RESP);
21135}
21136
21137/**
21138 @brief WDI_ProcessFTMCommandRsp
21139 Process FTM Command Response from HAL, simply route to HDD FTM
Jeff Johnsone7245742012-09-05 17:12:55 -070021140
21141 @param pWDICtx: pointer to the WLAN DAL context
21142 pEventData: pointer to the event information structure
21143
Jeff Johnson295189b2012-06-20 16:38:30 -070021144 @see
21145 @return Result of the function call
21146*/
21147WDI_Status
21148WDI_ProcessFTMCommandRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070021149(
Jeff Johnson295189b2012-06-20 16:38:30 -070021150 WDI_ControlBlockType* pWDICtx,
21151 WDI_EventInfoType* pEventData
21152)
21153{
21154 WDI_FTMCommandRspCb ftmCMDRspCb;
21155 tProcessPttRspParams *ftmCMDRspData = NULL;
21156 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21157
21158 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021159 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021160 -------------------------------------------------------------------------*/
21161 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21162 ( NULL == pEventData->pEventData))
21163 {
21164 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021165 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021166 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021167 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021168 }
21169
21170 ftmCMDRspCb = (WDI_FTMCommandRspCb)pWDICtx->pfncRspCB;
21171
21172 ftmCMDRspData = (tProcessPttRspParams *)pEventData->pEventData;
21173
Jeff Johnsone7245742012-09-05 17:12:55 -070021174 wpalMemoryCopy((void *)pWDICtx->ucFTMCommandRspBuffer,
21175 (void *)&ftmCMDRspData->pttMsgBuffer,
Jeff Johnson295189b2012-06-20 16:38:30 -070021176 ftmCMDRspData->pttMsgBuffer.msgBodyLength);
21177
21178 /*Notify UMAC*/
21179 ftmCMDRspCb((void *)pWDICtx->ucFTMCommandRspBuffer, pWDICtx->pRspCBUserData);
21180
Jeff Johnsone7245742012-09-05 17:12:55 -070021181 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021182}
Jeff Johnson295189b2012-06-20 16:38:30 -070021183/**
21184 @brief WDI_ProcessHalDumpCmdReq
21185 Process hal dump Command, simply route to HAL
Jeff Johnsone7245742012-09-05 17:12:55 -070021186
21187 @param pWDICtx: pointer to the WLAN DAL context
21188 pEventData: pointer to the event information structure
21189
Jeff Johnson295189b2012-06-20 16:38:30 -070021190 @see
21191 @return Result of the function call
21192*/
21193WDI_Status
21194WDI_ProcessHALDumpCmdReq
Jeff Johnsone7245742012-09-05 17:12:55 -070021195(
Jeff Johnson295189b2012-06-20 16:38:30 -070021196 WDI_ControlBlockType* pWDICtx,
21197 WDI_EventInfoType* pEventData
21198)
21199{
21200 WDI_HALDumpCmdReqParamsType* pwdiHALDumpCmdParams = NULL;
21201 WDI_HALDumpCmdRspCb wdiHALDumpCmdRspCb = NULL;
21202 wpt_uint16 usDataOffset = 0;
21203 wpt_uint16 usSendSize = 0;
21204 tHalDumpCmdReqMsg halDumpCmdReqMsg;
Jeff Johnsone7245742012-09-05 17:12:55 -070021205 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070021206
21207 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021208 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021209 -------------------------------------------------------------------------*/
21210 if (( NULL == pEventData ) ||
21211 ( NULL == pEventData->pEventData) ||
21212 ( NULL == pEventData->pCBfnc ))
21213 {
21214 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021215 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021216 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021217 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021218 }
21219
21220 pwdiHALDumpCmdParams = (WDI_HALDumpCmdReqParamsType*)pEventData->pEventData;
21221 wdiHALDumpCmdRspCb = (WDI_HALDumpCmdRspCb)pEventData->pCBfnc;
21222
21223 /* Copying the HAL DUMP Command Information HAL Structure*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021224 halDumpCmdReqMsg.dumpCmdReqParams.argument1 =
Jeff Johnson295189b2012-06-20 16:38:30 -070021225 pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.command;
Jeff Johnsone7245742012-09-05 17:12:55 -070021226 halDumpCmdReqMsg.dumpCmdReqParams.argument2 =
Jeff Johnson295189b2012-06-20 16:38:30 -070021227 pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.argument1;
Jeff Johnsone7245742012-09-05 17:12:55 -070021228 halDumpCmdReqMsg.dumpCmdReqParams.argument3 =
Jeff Johnson295189b2012-06-20 16:38:30 -070021229 pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.argument2;
Jeff Johnsone7245742012-09-05 17:12:55 -070021230 halDumpCmdReqMsg.dumpCmdReqParams.argument4 =
Jeff Johnson295189b2012-06-20 16:38:30 -070021231 pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.argument3;
Jeff Johnsone7245742012-09-05 17:12:55 -070021232 halDumpCmdReqMsg.dumpCmdReqParams.argument5 =
Jeff Johnson295189b2012-06-20 16:38:30 -070021233 pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.argument4;
Jeff Johnsone7245742012-09-05 17:12:55 -070021234
Jeff Johnson295189b2012-06-20 16:38:30 -070021235 /*-----------------------------------------------------------------------
21236 Get message buffer
21237 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021238 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_HAL_DUMP_CMD_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070021239 sizeof(halDumpCmdReqMsg.dumpCmdReqParams),
21240 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070021241 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070021242 (usDataOffset + sizeof(halDumpCmdReqMsg.dumpCmdReqParams) )))
21243 {
21244 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080021245 "Unable to get send buffer in HAL Dump Command req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070021246 pEventData, pwdiHALDumpCmdParams, wdiHALDumpCmdRspCb);
21247 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021248 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021249 }
21250
Jeff Johnsone7245742012-09-05 17:12:55 -070021251 wpalMemoryCopy( pSendBuffer+usDataOffset,
21252 &halDumpCmdReqMsg.dumpCmdReqParams,
21253 sizeof(halDumpCmdReqMsg.dumpCmdReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070021254
21255 pWDICtx->wdiReqStatusCB = pwdiHALDumpCmdParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070021256 pWDICtx->pReqStatusUserData = pwdiHALDumpCmdParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070021257
21258 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021259 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070021260 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021261 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
21262 wdiHALDumpCmdRspCb, pEventData->pUserData,
21263 WDI_HAL_DUMP_CMD_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070021264}
21265
21266/**
21267 @brief WDI_ProcessHalDumpCmdRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070021268 Process hal Dump Command Response from HAL, simply route to HDD
21269
21270 @param pWDICtx: pointer to the WLAN DAL context
21271 pEventData: pointer to the event information structure
21272
Jeff Johnson295189b2012-06-20 16:38:30 -070021273 @see
21274 @return Result of the function call
21275*/
21276WDI_Status
21277WDI_ProcessHALDumpCmdRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070021278(
Jeff Johnson295189b2012-06-20 16:38:30 -070021279 WDI_ControlBlockType* pWDICtx,
21280 WDI_EventInfoType* pEventData
21281)
21282{
21283 WDI_HALDumpCmdRspCb wdiHALDumpCmdRspCb;
Gopichand Nakkalafab3fae2013-01-07 15:01:01 -080021284 tHalDumpCmdRspParams halDumpCmdRspParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070021285 WDI_HALDumpCmdRspParamsType wdiHALDumpCmdRsp;
21286
21287 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021288 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021289 -------------------------------------------------------------------------*/
21290 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21291 ( NULL == pEventData->pEventData))
21292 {
21293 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021294 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021295 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021296 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021297 }
21298
Jeff Johnsone7245742012-09-05 17:12:55 -070021299 wdiHALDumpCmdRspCb = (WDI_HALDumpCmdRspCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070021300
21301 /*Initialize the WDI Response structure */
21302 wdiHALDumpCmdRsp.usBufferLen = 0;
21303 wdiHALDumpCmdRsp.pBuffer = NULL;
21304
Gopichand Nakkalafab3fae2013-01-07 15:01:01 -080021305 wpalMemoryCopy( &halDumpCmdRspParams,
21306 pEventData->pEventData,
21307 sizeof(tHalDumpCmdRspParams));
Jeff Johnsone7245742012-09-05 17:12:55 -070021308
21309 wdiHALDumpCmdRsp.wdiStatus =
Gopichand Nakkalafab3fae2013-01-07 15:01:01 -080021310 WDI_HAL_2_WDI_STATUS(halDumpCmdRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070021311
21312 if (( wdiHALDumpCmdRsp.wdiStatus == WDI_STATUS_SUCCESS) &&
Gopichand Nakkalafab3fae2013-01-07 15:01:01 -080021313 (halDumpCmdRspParams.rspLength != 0))
Jeff Johnson295189b2012-06-20 16:38:30 -070021314 {
21315 /* Copy the response data */
Gopichand Nakkalafab3fae2013-01-07 15:01:01 -080021316 wdiHALDumpCmdRsp.usBufferLen = halDumpCmdRspParams.rspLength;
21317 wdiHALDumpCmdRsp.pBuffer = wpalMemoryAllocate(halDumpCmdRspParams.rspLength);
21318
21319 wpalMemoryCopy( wdiHALDumpCmdRsp.pBuffer,
21320 &halDumpCmdRspParams.rspBuffer,
Gopichand Nakkala089c2582013-04-04 15:40:10 +053021321 halDumpCmdRspParams.rspLength);
Jeff Johnson295189b2012-06-20 16:38:30 -070021322 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021323
Jeff Johnson295189b2012-06-20 16:38:30 -070021324 /*Notify UMAC*/
21325 wdiHALDumpCmdRspCb(&wdiHALDumpCmdRsp, pWDICtx->pRspCBUserData);
21326
21327 if(wdiHALDumpCmdRsp.pBuffer != NULL)
21328 {
21329 /* Free the allocated buffer */
21330 wpalMemoryFree(wdiHALDumpCmdRsp.pBuffer);
21331 }
21332 return WDI_STATUS_SUCCESS;
21333}
21334
21335/*==========================================================================
21336 CONTRL TRANSPORT INTERACTION
Jeff Johnsone7245742012-09-05 17:12:55 -070021337
Jeff Johnson295189b2012-06-20 16:38:30 -070021338 Callback function registered with the control transport - for receiving
Jeff Johnsone7245742012-09-05 17:12:55 -070021339 notifications and packets
Jeff Johnson295189b2012-06-20 16:38:30 -070021340==========================================================================*/
21341/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021342 @brief This callback is invoked by the control transport
Jeff Johnson295189b2012-06-20 16:38:30 -070021343 when it wishes to send up a notification like the ones
21344 mentioned above.
Jeff Johnsone7245742012-09-05 17:12:55 -070021345
Jeff Johnson295189b2012-06-20 16:38:30 -070021346 @param
Jeff Johnsone7245742012-09-05 17:12:55 -070021347
21348 wctsHandle: handle to the control transport service
Jeff Johnson295189b2012-06-20 16:38:30 -070021349 wctsEvent: the event being notified
Jeff Johnsone7245742012-09-05 17:12:55 -070021350 wctsNotifyCBData: the callback data of the user
21351
Jeff Johnson295189b2012-06-20 16:38:30 -070021352 @see WCTS_OpenTransport
Jeff Johnsone7245742012-09-05 17:12:55 -070021353
21354 @return None
Jeff Johnson295189b2012-06-20 16:38:30 -070021355*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021356void
Jeff Johnson295189b2012-06-20 16:38:30 -070021357WDI_NotifyMsgCTSCB
21358(
Jeff Johnsone7245742012-09-05 17:12:55 -070021359 WCTS_HandleType wctsHandle,
Jeff Johnson295189b2012-06-20 16:38:30 -070021360 WCTS_NotifyEventType wctsEvent,
21361 void* wctsNotifyCBData
21362)
21363{
Jeff Johnsone7245742012-09-05 17:12:55 -070021364 WDI_ControlBlockType* pWDICtx = (WDI_ControlBlockType*)wctsNotifyCBData;
Jeff Johnson295189b2012-06-20 16:38:30 -070021365 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21366
21367 if (NULL == pWDICtx )
21368 {
21369 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021370 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021371 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021372 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070021373 }
21374
21375 if (WDI_CONTROL_BLOCK_MAGIC != pWDICtx->magic)
21376 {
21377 /* callback presumably occurred after close */
21378 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021379 "%s: Invalid control block", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070021380 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070021381 }
21382
21383 if ( WCTS_EVENT_OPEN == wctsEvent )
21384 {
21385 /*Flag must be set atomically as it is checked from incoming request
21386 functions*/
21387 wpalMutexAcquire(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070021388 pWDICtx->bCTOpened = eWLAN_PAL_TRUE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021389
21390 /*Nothing to do - so try to dequeue any pending request that may have
21391 occurred while we were trying to establish this*/
21392 WDI_DequeuePendingReq(pWDICtx);
Jeff Johnsone7245742012-09-05 17:12:55 -070021393 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnson295189b2012-06-20 16:38:30 -070021394 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021395 else if ( WCTS_EVENT_CLOSE == wctsEvent )
Jeff Johnson295189b2012-06-20 16:38:30 -070021396 {
21397 /*Flag must be set atomically as it is checked from incoming request
21398 functions*/
21399 wpalMutexAcquire(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070021400 pWDICtx->bCTOpened = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021401
21402 /*No other request will be processed from now on - fail all*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021403 WDI_ClearPendingRequests(pWDICtx);
Jeff Johnson295189b2012-06-20 16:38:30 -070021404 wpalMutexRelease(&pWDICtx->wptMutex);
21405
21406 /*Notify that the Control Channel is closed */
21407 wpalEventSet(&pWDICtx->wctsActionEvent);
21408 }
21409
21410}/*WDI_NotifyMsgCTSCB*/
21411
21412
21413/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021414 @brief This callback is invoked by the control transport
Jeff Johnson295189b2012-06-20 16:38:30 -070021415 when it wishes to send up a packet received over the
21416 bus.
Jeff Johnsone7245742012-09-05 17:12:55 -070021417
Jeff Johnson295189b2012-06-20 16:38:30 -070021418 @param
Jeff Johnsone7245742012-09-05 17:12:55 -070021419
21420 wctsHandle: handle to the control transport service
Jeff Johnson295189b2012-06-20 16:38:30 -070021421 pMsg: the packet
21422 uLen: the packet length
Jeff Johnsone7245742012-09-05 17:12:55 -070021423 wctsRxMsgCBData: the callback data of the user
21424
Jeff Johnson295189b2012-06-20 16:38:30 -070021425 @see WCTS_OpenTransport
Jeff Johnsone7245742012-09-05 17:12:55 -070021426
21427 @return None
Jeff Johnson295189b2012-06-20 16:38:30 -070021428*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021429void
21430WDI_RXMsgCTSCB
Jeff Johnson295189b2012-06-20 16:38:30 -070021431(
Jeff Johnsone7245742012-09-05 17:12:55 -070021432 WCTS_HandleType wctsHandle,
Jeff Johnson295189b2012-06-20 16:38:30 -070021433 void* pMsg,
21434 wpt_uint32 uLen,
21435 void* wctsRxMsgCBData
21436)
21437{
Jeff Johnsone7245742012-09-05 17:12:55 -070021438 tHalMsgHeader *pHalMsgHeader;
21439 WDI_EventInfoType wdiEventData;
Jeff Johnson295189b2012-06-20 16:38:30 -070021440 WDI_ControlBlockType* pWDICtx = (WDI_ControlBlockType*)wctsRxMsgCBData;
21441 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
21442
21443 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021444 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021445 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021446 if ((NULL == pWDICtx ) || ( NULL == pMsg ) ||
Jeff Johnson295189b2012-06-20 16:38:30 -070021447 ( uLen < sizeof(tHalMsgHeader)))
21448 {
21449 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021450 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021451 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021452 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070021453 }
21454
21455 if (WDI_CONTROL_BLOCK_MAGIC != pWDICtx->magic)
21456 {
21457 /* callback presumably occurred after close */
21458 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021459 "%s: Invalid control block", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070021460 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070021461 }
21462
Jeff Johnsone7245742012-09-05 17:12:55 -070021463 /*The RX Callback is expected to be serialized in the proper control thread
Jeff Johnson295189b2012-06-20 16:38:30 -070021464 context - so no serialization is necessary here
21465 ! - revisit this assumption */
21466
21467 pHalMsgHeader = (tHalMsgHeader *)pMsg;
21468
21469 if ( uLen != pHalMsgHeader->msgLen )
21470 {
21471 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
21472 "Invalid packet received from HAL - catastrophic failure");
Jeff Johnsone7245742012-09-05 17:12:55 -070021473 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_INVALID_RSP_FMT);
Katya Nigamf02ad012014-05-05 16:12:49 +053021474 wpalWlanReload();
21475
Jeff Johnsone7245742012-09-05 17:12:55 -070021476 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070021477 }
21478
21479 wdiEventData.wdiResponse = HAL_2_WDI_RSP_TYPE( pHalMsgHeader->msgType );
21480
21481 /*The message itself starts after the header*/
21482 wdiEventData.pEventData = (wpt_uint8*)pMsg + sizeof(tHalMsgHeader);
21483 wdiEventData.uEventDataSize = pHalMsgHeader->msgLen - sizeof(tHalMsgHeader);
21484 wdiEventData.pCBfnc = gWDICb.pfncRspCB;
21485 wdiEventData.pUserData = gWDICb.pRspCBUserData;
21486
21487
21488 if ( wdiEventData.wdiResponse == pWDICtx->wdiExpectedResponse )
21489 {
21490 /*Stop the timer as the response was received */
21491 /*!UT - check for potential race conditions between stop and response */
21492 wpalTimerStop(&pWDICtx->wptResponseTimer);
21493 }
21494 /* Check if we receive a response message which is not expected */
21495 else if ( wdiEventData.wdiResponse < WDI_HAL_IND_MIN )
21496 {
21497 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
21498 "Received response %s (%d) when expecting %s (%d) - catastrophic failure",
21499 WDI_getRespMsgString(wdiEventData.wdiResponse),
Jeff Johnsone7245742012-09-05 17:12:55 -070021500 wdiEventData.wdiResponse,
Jeff Johnson295189b2012-06-20 16:38:30 -070021501 WDI_getRespMsgString(pWDICtx->wdiExpectedResponse),
21502 pWDICtx->wdiExpectedResponse);
Sameer Thalappil4bb20cb2013-11-15 14:50:51 -080021503
21504 if (gWDICb.bEnableSSR == false)
21505 {
21506 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
21507 "SSR is not enabled on WDI timeout");
21508 WDI_DetectedDeviceError(pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
21509 return;
21510 }
21511 wpalWcnssResetIntr();
21512 /* if this timer fires, it means Riva did not receive the FIQ */
21513 wpalTimerStart(&pWDICtx->ssrTimer, WDI_SSR_TIMEOUT);
21514
Jeff Johnson295189b2012-06-20 16:38:30 -070021515 return;
21516 }
21517
21518 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
21519 "Rx smth from HAL: %d", wdiEventData.wdiResponse);
21520
21521 /*Post response event to the state machine*/
21522 WDI_PostMainEvent(pWDICtx, WDI_RESPONSE_EVENT, &wdiEventData);
21523
21524}/*WDI_RXMsgCTSCB*/
21525
21526
21527/*========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070021528 Internal Helper Routines
Jeff Johnson295189b2012-06-20 16:38:30 -070021529========================================================================*/
21530
21531/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021532 @brief WDI_CleanCB - internal helper routine used to clean the
Jeff Johnson295189b2012-06-20 16:38:30 -070021533 WDI Main Control Block
Jeff Johnsone7245742012-09-05 17:12:55 -070021534
Jeff Johnson295189b2012-06-20 16:38:30 -070021535 @param pWDICtx - pointer to the control block
21536
21537 @return Result of the function call
21538*/
21539WPT_INLINE WDI_Status
21540WDI_CleanCB
21541(
21542 WDI_ControlBlockType* pWDICtx
21543)
21544{
21545 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
21546
21547 /*Clean the WDI Control Block*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021548 wpalMemoryZero( pWDICtx, sizeof(*pWDICtx));
Jeff Johnson295189b2012-06-20 16:38:30 -070021549
Jeff Johnsone7245742012-09-05 17:12:55 -070021550 pWDICtx->uGlobalState = WDI_MAX_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -070021551 pWDICtx->ucMaxBssids = WDI_MAX_SUPPORTED_BSS;
21552 pWDICtx->ucMaxStations = WDI_MAX_SUPPORTED_STAS;
21553
21554 WDI_ResetAssocSessions( pWDICtx );
21555
21556 return WDI_STATUS_SUCCESS;
21557}/*WDI_CleanCB*/
21558
21559
21560/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021561 @brief Process request helper function
Jeff Johnson295189b2012-06-20 16:38:30 -070021562
Jeff Johnsone7245742012-09-05 17:12:55 -070021563
21564 @param pWDICtx: pointer to the WLAN DAL context
21565 pEventData: pointer to the event information structure
21566
Jeff Johnson295189b2012-06-20 16:38:30 -070021567 @see
21568 @return Result of the function call
21569*/
21570WPT_INLINE WDI_Status
21571WDI_ProcessRequest
21572(
21573 WDI_ControlBlockType* pWDICtx,
21574 WDI_EventInfoType* pEventData
21575)
21576{
21577 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21578
Jeff Johnsone7245742012-09-05 17:12:55 -070021579 /*!! Skip sanity check as this is called from the FSM functionss which
Jeff Johnson295189b2012-06-20 16:38:30 -070021580 already checked these pointers*/
21581
21582 if (( pEventData->wdiRequest < WDI_MAX_UMAC_IND ) &&
21583 ( NULL != pfnReqProcTbl[pEventData->wdiRequest] ))
Jeff Johnsone7245742012-09-05 17:12:55 -070021584 {
Jeff Johnson295189b2012-06-20 16:38:30 -070021585 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080021586 "Calling request processing function for req %s (%d) %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070021587 WDI_getReqMsgString(pEventData->wdiRequest),
21588 pEventData->wdiRequest, pfnReqProcTbl[pEventData->wdiRequest]);
21589 return pfnReqProcTbl[pEventData->wdiRequest](pWDICtx, pEventData);
21590 }
21591 else
21592 {
21593 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070021594 "Operation %d is not yet implemented ",
Jeff Johnson295189b2012-06-20 16:38:30 -070021595 pEventData->wdiRequest);
21596 return WDI_STATUS_E_NOT_IMPLEMENT;
21597 }
21598}/*WDI_ProcessRequest*/
21599
21600
21601/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021602 @brief Get message helper function - it allocates memory for a
Jeff Johnson295189b2012-06-20 16:38:30 -070021603 message that is to be sent to HAL accross the bus and
Jeff Johnsone7245742012-09-05 17:12:55 -070021604 prefixes it with a send message header
21605
21606 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070021607 wdiReqType: type of the request being sent
21608 uBufferLen: message buffer len
21609 pMsgBuffer: resulting allocated buffer
21610 pusDataOffset: offset in the buffer where the caller
21611 can start copying its message data
21612 puBufferSize: the resulting buffer size (offset+buff
21613 len)
Jeff Johnsone7245742012-09-05 17:12:55 -070021614
Jeff Johnson295189b2012-06-20 16:38:30 -070021615 @see
21616 @return Result of the function call
21617*/
21618WDI_Status
21619WDI_GetMessageBuffer
Jeff Johnsone7245742012-09-05 17:12:55 -070021620(
21621 WDI_ControlBlockType* pWDICtx,
21622 WDI_RequestEnumType wdiReqType,
Jeff Johnson295189b2012-06-20 16:38:30 -070021623 wpt_uint16 usBufferLen,
Jeff Johnsone7245742012-09-05 17:12:55 -070021624 wpt_uint8** pMsgBuffer,
21625 wpt_uint16* pusDataOffset,
Jeff Johnson295189b2012-06-20 16:38:30 -070021626 wpt_uint16* pusBufferSize
21627)
21628{
21629 tHalMsgHeader halMsgHeader;
21630 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21631
Jeff Johnsone7245742012-09-05 17:12:55 -070021632 /*!! No sanity check here as we trust the called - ! check this assumption
Jeff Johnson295189b2012-06-20 16:38:30 -070021633 again*/
21634
21635 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021636 Try to allocate message buffer from PAL
Jeff Johnson295189b2012-06-20 16:38:30 -070021637 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021638 *pusBufferSize = sizeof(halMsgHeader) + usBufferLen;
Jeff Johnson295189b2012-06-20 16:38:30 -070021639 *pMsgBuffer = (wpt_uint8*)wpalMemoryAllocate(*pusBufferSize);
21640 if ( NULL == *pMsgBuffer )
21641 {
21642 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
21643 "Unable to allocate message buffer for req %s (%d)",
21644 WDI_getReqMsgString(wdiReqType),
Jeff Johnsone7245742012-09-05 17:12:55 -070021645 wdiReqType);
Jeff Johnson295189b2012-06-20 16:38:30 -070021646 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021647 return WDI_STATUS_MEM_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021648 }
21649
21650 /*-------------------------------------------------------------------------
21651 Fill in the message header
21652 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021653 halMsgHeader.msgType = WDI_2_HAL_REQ_TYPE(wdiReqType);
21654 /* Fill msgVersion */
21655#ifdef WLAN_FEATURE_11AC
21656 if (WDI_getFwWlanFeatCaps(DOT11AC))
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070021657 halMsgHeader.msgVersion = WLAN_HAL_MSG_VERSION1;
Jeff Johnsone7245742012-09-05 17:12:55 -070021658 else
21659#endif
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070021660 halMsgHeader.msgVersion = WLAN_HAL_MSG_VERSION0;
Jeff Johnson295189b2012-06-20 16:38:30 -070021661
Jeff Johnsone7245742012-09-05 17:12:55 -070021662 halMsgHeader.msgLen = sizeof(halMsgHeader) + usBufferLen;
21663 *pusDataOffset = sizeof(halMsgHeader);
21664 wpalMemoryCopy(*pMsgBuffer, &halMsgHeader, sizeof(halMsgHeader));
21665
21666 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021667}/*WDI_GetMessageBuffer*/
21668
21669
21670/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021671 @brief Send message helper function - sends a message over the
Jeff Johnson295189b2012-06-20 16:38:30 -070021672 bus using the control tranport and saves some info in
Jeff Johnsone7245742012-09-05 17:12:55 -070021673 the CB
21674
21675 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070021676 pSendBuffer: buffer to be sent
Jeff Johnsone7245742012-09-05 17:12:55 -070021677
Jeff Johnson295189b2012-06-20 16:38:30 -070021678 usSendSize size of the buffer to be sent
21679 pRspCb: response callback - save in the WDI
21680 CB
21681 pUserData: user data associated with the
21682 callback
21683 wdiExpectedResponse: the code of the response that is
21684 expected to be rx-ed for this request
Jeff Johnsone7245742012-09-05 17:12:55 -070021685
Jeff Johnson295189b2012-06-20 16:38:30 -070021686 @see
21687 @return Result of the function call
21688*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021689WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070021690WDI_SendMsg
Jeff Johnsone7245742012-09-05 17:12:55 -070021691(
21692 WDI_ControlBlockType* pWDICtx,
21693 wpt_uint8* pSendBuffer,
21694 wpt_uint32 usSendSize,
21695 void* pRspCb,
Jeff Johnson295189b2012-06-20 16:38:30 -070021696 void* pUserData,
21697 WDI_ResponseEnumType wdiExpectedResponse
21698)
21699{
Jeff Johnsond13512a2012-07-17 11:42:19 -070021700 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080021701 wpt_uint32 ret;
Jeff Johnson295189b2012-06-20 16:38:30 -070021702 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
21703
21704 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021705 Save needed info in the CB
Jeff Johnson295189b2012-06-20 16:38:30 -070021706 ------------------------------------------------------------------------*/
21707 pWDICtx->pRspCBUserData = pUserData;
Jeff Johnsone7245742012-09-05 17:12:55 -070021708 pWDICtx->pfncRspCB = pRspCb;
21709 pWDICtx->wdiExpectedResponse = wdiExpectedResponse;
Jeff Johnson295189b2012-06-20 16:38:30 -070021710
21711 /*-----------------------------------------------------------------------
21712 Call the CTS to send this message over - free message afterwards
21713 - notify transport failure
21714 Note: CTS is reponsible for freeing the message buffer.
21715 -----------------------------------------------------------------------*/
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080021716 ret = WCTS_SendMessage(pWDICtx->wctsHandle, (void*)pSendBuffer, usSendSize);
21717 if ((eWLAN_PAL_STATUS_SUCCESS != ret) &&
21718 (eWLAN_PAL_STATUS_E_RESOURCES != ret))
Jeff Johnson295189b2012-06-20 16:38:30 -070021719 {
Jeff Johnsond13512a2012-07-17 11:42:19 -070021720 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Siddharth Bhalceddd5d2014-03-21 15:00:19 +053021721 "Failed to send message with expected response %s (%d)"
21722 " over the bus - catastrophic failure",
21723 WDI_getRespMsgString(pWDICtx->wdiExpectedResponse),
21724 pWDICtx->wdiExpectedResponse);
Jeff Johnson295189b2012-06-20 16:38:30 -070021725
Jeff Johnsond13512a2012-07-17 11:42:19 -070021726 wdiStatus = WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021727 }
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080021728 else
21729 {
21730 /* even when message was placed in CTS deferred Q, we will treat it
21731 success but log this info
21732 */
21733 if (eWLAN_PAL_STATUS_E_RESOURCES == ret)
21734 {
21735 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
21736 "WDI_SendMsg: message placed in CTS deferred Q, expected "
21737 "response %s (%d)",
21738 WDI_getRespMsgString(pWDICtx->wdiExpectedResponse),
21739 pWDICtx->wdiExpectedResponse);
Gopichand Nakkala3c5b0632012-12-23 08:30:59 -080021740 WDI_ASSERT(0);
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080021741 }
21742 }
Jeff Johnson295189b2012-06-20 16:38:30 -070021743
Jeff Johnsond13512a2012-07-17 11:42:19 -070021744 /*Check if originator provided a request status callback*/
Jeff Johnson295189b2012-06-20 16:38:30 -070021745 if ( NULL != pWDICtx->wdiReqStatusCB )
21746 {
Jeff Johnsond13512a2012-07-17 11:42:19 -070021747 /*Inform originator whether request went through or not*/
21748 WDI_ReqStatusCb callback = pWDICtx->wdiReqStatusCB;
21749 void *callbackContext = pWDICtx->pReqStatusUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070021750 pWDICtx->wdiReqStatusCB = NULL;
21751 pWDICtx->pReqStatusUserData = NULL;
Jeff Johnsond13512a2012-07-17 11:42:19 -070021752 callback(wdiStatus, callbackContext);
21753
21754 /*For WDI requests which have registered a request callback,
21755 inform the WDA caller of the same via setting the return value
21756 (wdiStatus) to WDI_STATUS_PENDING. This makes sure that WDA doesnt
21757 end up repeating the functonality in the req callback for the
21758 WDI_STATUS_E_FAILURE case*/
21759 if (wdiStatus == WDI_STATUS_E_FAILURE)
21760 wdiStatus = WDI_STATUS_PENDING;
Jeff Johnson295189b2012-06-20 16:38:30 -070021761 }
21762
Jeff Johnsond13512a2012-07-17 11:42:19 -070021763 if ( wdiStatus == WDI_STATUS_SUCCESS )
21764 {
Jeff Johnson295189b2012-06-20 16:38:30 -070021765 /*Start timer for the expected response */
21766 wpalTimerStart(&pWDICtx->wptResponseTimer, WDI_RESPONSE_TIMEOUT);
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080021767
21768 /*cache current timestamp for debugging */
Gopichand Nakkala3c5b0632012-12-23 08:30:59 -080021769 pWDICtx->uTimeStampRspTmrStart = wpalGetSystemTime();
Arif Hussain6c8947a2013-11-27 13:57:14 -080021770 pWDICtx->uArchTimeStampRspTmrStart = wpalGetArchCounterTime();
Jeff Johnsond13512a2012-07-17 11:42:19 -070021771 }
21772 else
21773 {
Jeff Johnson902c9832012-12-10 14:28:09 -080021774 /*Inform upper stack layers that a transport fatal error occurred*/
Jeff Johnsond13512a2012-07-17 11:42:19 -070021775 WDI_DetectedDeviceError(pWDICtx, WDI_ERR_TRANSPORT_FAILURE);
21776 }
Jeff Johnson295189b2012-06-20 16:38:30 -070021777
Jeff Johnsond13512a2012-07-17 11:42:19 -070021778 return wdiStatus;
21779
Jeff Johnson295189b2012-06-20 16:38:30 -070021780}/*WDI_SendMsg*/
21781
21782
21783
21784/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021785 @brief Send indication helper function - sends a message over
Jeff Johnson295189b2012-06-20 16:38:30 -070021786 the bus using the control transport and saves some info
21787 in the CB
Jeff Johnsone7245742012-09-05 17:12:55 -070021788
21789 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070021790 pSendBuffer: buffer to be sent
21791 usSendSize: size of the buffer to be sent
Jeff Johnsone7245742012-09-05 17:12:55 -070021792
Jeff Johnson295189b2012-06-20 16:38:30 -070021793 @see
21794 @return Result of the function call
21795*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021796WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070021797WDI_SendIndication
Jeff Johnsone7245742012-09-05 17:12:55 -070021798(
21799 WDI_ControlBlockType* pWDICtx,
21800 wpt_uint8* pSendBuffer,
Jeff Johnson295189b2012-06-20 16:38:30 -070021801 wpt_uint32 usSendSize
21802)
21803{
21804 wpt_uint32 uStatus ;
21805 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
21806
21807 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021808 Call the CTS to send this message over
Jeff Johnson295189b2012-06-20 16:38:30 -070021809 Note: CTS is reponsible for freeing the message buffer.
21810 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021811 uStatus = WCTS_SendMessage( pWDICtx->wctsHandle,
Jeff Johnson295189b2012-06-20 16:38:30 -070021812 (void*)pSendBuffer, usSendSize );
21813
21814 /*Inform Upper MAC about the outcome of the request*/
21815 if ( NULL != pWDICtx->wdiReqStatusCB )
21816 {
21817 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
21818 "Send indication status : %d", uStatus);
21819
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080021820 /* even if CTS placed indication into its deferred Q, we treat it
21821 * as success and let CTS drain its queue as per smd interrupt to CTS
21822 */
21823 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 -070021824 pWDICtx->pReqStatusUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070021825 }
21826
21827 /*If sending of the message failed - it is considered catastrophic and
21828 indicates an error with the device*/
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080021829 if (( eWLAN_PAL_STATUS_SUCCESS != uStatus) &&
21830 ( eWLAN_PAL_STATUS_E_RESOURCES != uStatus))
21831
Jeff Johnson295189b2012-06-20 16:38:30 -070021832 {
21833 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnsone7245742012-09-05 17:12:55 -070021834 "Failed to send indication over the bus - catastrophic failure");
Jeff Johnson295189b2012-06-20 16:38:30 -070021835
21836 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_TRANSPORT_FAILURE);
21837 return WDI_STATUS_E_FAILURE;
21838 }
21839
Jeff Johnsone7245742012-09-05 17:12:55 -070021840 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021841}/*WDI_SendIndication*/
21842
21843
21844/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021845 @brief WDI_DetectedDeviceError - called internally by DAL when
21846 it has detected a failure in the device
21847
21848 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070021849 usErrorCode: error code detected by WDI or received
21850 from HAL
Jeff Johnsone7245742012-09-05 17:12:55 -070021851
Jeff Johnson295189b2012-06-20 16:38:30 -070021852 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070021853 @return None
Jeff Johnson295189b2012-06-20 16:38:30 -070021854*/
21855void
21856WDI_DetectedDeviceError
21857(
21858 WDI_ControlBlockType* pWDICtx,
21859 wpt_uint16 usErrorCode
21860)
21861{
21862 WDI_LowLevelIndType wdiInd;
21863 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
21864
21865 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
21866 "Device Error detected code: %d - transitioning to stopped state",
21867 usErrorCode);
21868
Katya Nigamf02ad012014-05-05 16:12:49 +053021869 pWDICtx->DeviceErrorReason = VOS_RETURN_ADDRESS;
21870
Jeff Johnson295189b2012-06-20 16:38:30 -070021871 wpalMutexAcquire(&pWDICtx->wptMutex);
21872
21873 WDI_STATableStop(pWDICtx);
21874
21875 WDI_ResetAssocSessions(pWDICtx);
21876
21877 /*Set the expected state transition to stopped - because the device
21878 experienced a failure*/
21879 pWDICtx->ucExpectedStateTransition = WDI_STOPPED_ST;
21880
21881 /*Transition to stopped to fail all incomming requests from this point on*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021882 WDI_STATE_TRANSITION( pWDICtx, WDI_STOPPED_ST);
Jeff Johnson295189b2012-06-20 16:38:30 -070021883
Jeff Johnsone7245742012-09-05 17:12:55 -070021884 WDI_ClearPendingRequests(pWDICtx);
Jeff Johnson295189b2012-06-20 16:38:30 -070021885
21886 /*TO DO: - there should be an attempt to reset the device here*/
21887
21888 wpalMutexRelease(&pWDICtx->wptMutex);
21889
21890 /*------------------------------------------------------------------------
21891 Notify UMAC if a handler is registered
21892 ------------------------------------------------------------------------*/
21893 if (pWDICtx->wdiLowLevelIndCB)
21894 {
Jeff Johnsone7245742012-09-05 17:12:55 -070021895 wdiInd.wdiIndicationType = WDI_FATAL_ERROR_IND;
21896 wdiInd.wdiIndicationData.usErrorCode = usErrorCode;
Jeff Johnson295189b2012-06-20 16:38:30 -070021897
21898 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData);
21899 }
21900}/*WDI_DetectedDeviceError*/
21901
21902/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021903 @brief This callback is invoked by the wpt when a timer that
Jeff Johnson295189b2012-06-20 16:38:30 -070021904 we started on send message has expire - this should
21905 never happen - it means device is stuck and cannot
Jeff Johnsone7245742012-09-05 17:12:55 -070021906 reply - trigger catastrophic failure
21907 @param
21908
Jeff Johnson295189b2012-06-20 16:38:30 -070021909 pUserData: the callback data of the user (ptr to WDI CB)
Jeff Johnsone7245742012-09-05 17:12:55 -070021910
21911 @see
21912 @return None
Jeff Johnson295189b2012-06-20 16:38:30 -070021913*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021914void
Jeff Johnson295189b2012-06-20 16:38:30 -070021915WDI_ResponseTimerCB
21916(
21917 void *pUserData
21918)
21919{
21920 WDI_ControlBlockType* pWDICtx = (WDI_ControlBlockType*)pUserData;
21921 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21922
Gopichand Nakkalae620d5a2013-04-26 05:45:57 -070021923 if (NULL == pWDICtx)
Jeff Johnson295189b2012-06-20 16:38:30 -070021924 {
Gopichand Nakkalae620d5a2013-04-26 05:45:57 -070021925 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021926 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021927 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021928 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070021929 }
21930
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080021931 /*cache current timestamp for debugging */
Gopichand Nakkala3c5b0632012-12-23 08:30:59 -080021932 pWDICtx->uTimeStampRspTmrExp = wpalGetSystemTime();
Arif Hussain6c8947a2013-11-27 13:57:14 -080021933 pWDICtx->uArchTimeStampRspTmrExp = wpalGetArchCounterTime();
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080021934
21935 /* If response timer is running at this time that means this timer
21936 * event is not for the last request but rather last-to-last request and
21937 * this timer event has come after we recevied respone for last-to-last
21938 * message
21939 */
21940 if (VOS_TIMER_STATE_RUNNING == wpalTimerGetCurStatus(&pWDICtx->wptResponseTimer))
21941 {
21942 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
21943 "WDI_ResponseTimerCB: timer in running state on timer event, "
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080021944 "ignore tmr event, timeStampTmrStart: %u, timeStampTmrExp: %u",
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080021945 pWDICtx->uTimeStampRspTmrStart, pWDICtx->uTimeStampRspTmrExp);
Arif Hussain6c8947a2013-11-27 13:57:14 -080021946 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
21947 "uArchTimeStampTmrStart: %llu seconds, "
21948 "uArchTimeStampTmrExp: %llu seconds",
21949 pWDICtx->uArchTimeStampRspTmrStart,
21950 pWDICtx->uArchTimeStampRspTmrExp);
21951
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080021952 return;
21953 }
21954
Gopichand Nakkalae620d5a2013-04-26 05:45:57 -070021955 if (WDI_MAX_RESP != pWDICtx->wdiExpectedResponse)
Jeff Johnson295189b2012-06-20 16:38:30 -070021956 {
21957
Gopichand Nakkalae620d5a2013-04-26 05:45:57 -070021958 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnson295189b2012-06-20 16:38:30 -070021959 "Timeout occurred while waiting for %s (%d) message from device "
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080021960 " - catastrophic failure, timeStampTmrStart: %u, timeStampTmrExp: %u",
Jeff Johnson295189b2012-06-20 16:38:30 -070021961 WDI_getRespMsgString(pWDICtx->wdiExpectedResponse),
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080021962 pWDICtx->wdiExpectedResponse, pWDICtx->uTimeStampRspTmrStart,
21963 pWDICtx->uTimeStampRspTmrExp);
Arif Hussain6c8947a2013-11-27 13:57:14 -080021964 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
21965 "uArchTimeStampTmrStart: %llu seconds, "
21966 "uArchTimeStampTmrExp: %llu seconds",
21967 pWDICtx->uArchTimeStampRspTmrStart,
21968 pWDICtx->uArchTimeStampRspTmrExp);
Gopichand Nakkalae620d5a2013-04-26 05:45:57 -070021969
21970 /* WDI timeout means Riva is not responding or SMD communication to Riva
21971 * is not happening. The only possible way to recover from this error
21972 * is to initiate SSR from APPS.
21973 * There is also an option to re-enable wifi, which will eventually
21974 * trigger SSR
21975 */
21976 if (gWDICb.bEnableSSR == false)
21977 {
21978 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
21979 "SSR is not enabled on WDI timeout");
21980 WDI_DetectedDeviceError(pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
21981 return;
21982 }
Madan Mohan Koyyalamudia2fc6412012-10-21 12:06:12 -070021983#ifndef WDI_RE_ENABLE_WIFI_ON_WDI_TIMEOUT
Gopichand Nakkalae620d5a2013-04-26 05:45:57 -070021984 wpalWcnssResetIntr();
Katya Nigam921bf202014-02-26 14:52:24 +053021985 if(wpalIsWDresetInProgress())
21986 {
21987 wpalDevicePanic();
21988 }
Gopichand Nakkalae620d5a2013-04-26 05:45:57 -070021989 /* if this timer fires, it means Riva did not receive the FIQ */
21990 wpalTimerStart(&pWDICtx->ssrTimer, WDI_SSR_TIMEOUT);
Madan Mohan Koyyalamudia2fc6412012-10-21 12:06:12 -070021991#else
Gopichand Nakkalae620d5a2013-04-26 05:45:57 -070021992 WDI_DetectedDeviceError(pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
21993 wpalWlanReload();
Madan Mohan Koyyalamudia2fc6412012-10-21 12:06:12 -070021994#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070021995 }
21996 else
21997 {
Gopichand Nakkalae620d5a2013-04-26 05:45:57 -070021998 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080021999 "Timeout occurred but not waiting for any response %d "
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080022000 "timeStampTmrStart: %u, timeStampTmrExp: %u",
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080022001 pWDICtx->wdiExpectedResponse, pWDICtx->uTimeStampRspTmrStart,
22002 pWDICtx->uTimeStampRspTmrExp);
Arif Hussain6c8947a2013-11-27 13:57:14 -080022003 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
22004 "uArchTimeStampTmrStart: %llu seconds, "
22005 "uArchTimeStampTmrExp: %llu seconds",
22006 pWDICtx->uArchTimeStampRspTmrStart,
22007 pWDICtx->uArchTimeStampRspTmrExp);
22008
Jeff Johnson295189b2012-06-20 16:38:30 -070022009 }
22010
22011 return;
22012
22013}/*WDI_ResponseTimerCB*/
22014
22015
22016/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022017 @brief Process response helper function
Jeff Johnson295189b2012-06-20 16:38:30 -070022018
Jeff Johnsone7245742012-09-05 17:12:55 -070022019
22020 @param pWDICtx: pointer to the WLAN DAL context
22021 pEventData: pointer to the event information structure
22022
Jeff Johnson295189b2012-06-20 16:38:30 -070022023 @see
22024 @return Result of the function call
22025*/
22026WPT_INLINE WDI_Status
22027WDI_ProcessResponse
22028(
22029 WDI_ControlBlockType* pWDICtx,
22030 WDI_EventInfoType* pEventData
22031)
22032{
22033 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
22034
Jeff Johnsone7245742012-09-05 17:12:55 -070022035 /* Skip sanity check as this is called from the FSM functions which
Jeff Johnson295189b2012-06-20 16:38:30 -070022036 already checked these pointers
22037 ! - revisit this assumption */
22038 if (( pEventData->wdiResponse < WDI_MAX_RESP ) &&
22039 ( NULL != pfnRspProcTbl[pEventData->wdiResponse] ))
Jeff Johnsone7245742012-09-05 17:12:55 -070022040 {
Jeff Johnson295189b2012-06-20 16:38:30 -070022041 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080022042 "Calling response processing function for resp %s (%d) %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070022043 WDI_getRespMsgString(pEventData->wdiResponse),
22044 pEventData->wdiResponse, pfnRspProcTbl[pEventData->wdiResponse]);
22045 return pfnRspProcTbl[pEventData->wdiResponse](pWDICtx, pEventData);
22046 }
22047 else
22048 {
22049 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070022050 "Operation %d is not yet implemented ",
Jeff Johnson295189b2012-06-20 16:38:30 -070022051 pEventData->wdiResponse);
22052 return WDI_STATUS_E_NOT_IMPLEMENT;
22053 }
22054}/*WDI_ProcessResponse*/
22055
22056
22057/*=========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070022058 QUEUE SUPPORT UTILITY FUNCTIONS
Jeff Johnson295189b2012-06-20 16:38:30 -070022059=========================================================================*/
22060
22061/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022062 @brief Utility function used by the DAL Core to help queue a
22063 request that cannot be processed right away.
22064 @param
22065
Jeff Johnson295189b2012-06-20 16:38:30 -070022066 pWDICtx: - pointer to the WDI control block
22067 pEventData: - pointer to the evnt info that needs to be
Jeff Johnsone7245742012-09-05 17:12:55 -070022068 queued
22069
22070 @see
22071 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070022072*/
22073WDI_Status
22074WDI_QueuePendingReq
22075(
22076 WDI_ControlBlockType* pWDICtx,
22077 WDI_EventInfoType* pEventData
22078)
22079{
Jeff Johnsone7245742012-09-05 17:12:55 -070022080 wpt_list_node* pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070022081 WDI_EventInfoType* pEventDataQueue = wpalMemoryAllocate(sizeof(*pEventData));
Jeff Johnsone7245742012-09-05 17:12:55 -070022082 void* pEventInfo = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070022083 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
22084
22085 if ( NULL == pEventDataQueue )
22086 {
22087 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070022088 "Cannot allocate memory for queueing");
Jeff Johnson295189b2012-06-20 16:38:30 -070022089 WDI_ASSERT(0);
22090 return WDI_STATUS_MEM_FAILURE;
22091 }
22092
22093 pEventDataQueue->pCBfnc = pEventData->pCBfnc;
22094 pEventDataQueue->pUserData = pEventData->pUserData;
22095 pEventDataQueue->uEventDataSize = pEventData->uEventDataSize;
22096 pEventDataQueue->wdiRequest = pEventData->wdiRequest;
Jeff Johnsone7245742012-09-05 17:12:55 -070022097 pEventDataQueue->wdiResponse = pEventData->wdiResponse;
Jeff Johnson295189b2012-06-20 16:38:30 -070022098
22099 if( pEventData->uEventDataSize != 0 && pEventData->pEventData != NULL )
22100 {
22101 pEventInfo = wpalMemoryAllocate(pEventData->uEventDataSize);
Jeff Johnsone7245742012-09-05 17:12:55 -070022102
Jeff Johnson295189b2012-06-20 16:38:30 -070022103 if ( NULL == pEventInfo )
22104 {
22105 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070022106 "Cannot allocate memory for queueing event data info");
Jeff Johnson295189b2012-06-20 16:38:30 -070022107 WDI_ASSERT(0);
22108 wpalMemoryFree(pEventDataQueue);
22109 return WDI_STATUS_MEM_FAILURE;
22110 }
Jeff Johnsone7245742012-09-05 17:12:55 -070022111
Jeff Johnson295189b2012-06-20 16:38:30 -070022112 wpalMemoryCopy(pEventInfo, pEventData->pEventData, pEventData->uEventDataSize);
22113
22114 }
22115 pEventDataQueue->pEventData = pEventInfo;
22116
22117 /*Send wpt a pointer to the node (this is the 1st element in the event data)*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022118 pNode = (wpt_list_node*)pEventDataQueue;
Jeff Johnson295189b2012-06-20 16:38:30 -070022119
Jeff Johnsone7245742012-09-05 17:12:55 -070022120 wpal_list_insert_back(&(pWDICtx->wptPendingQueue), pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070022121
22122 return WDI_STATUS_SUCCESS;
22123}/*WDI_QueuePendingReq*/
22124
22125/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022126 @brief Callback function for serializing queued message
Jeff Johnson295189b2012-06-20 16:38:30 -070022127 processing in the control context
Jeff Johnsone7245742012-09-05 17:12:55 -070022128 @param
22129
22130 pMsg - pointer to the message
22131
22132 @see
22133 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070022134*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022135void
Jeff Johnson295189b2012-06-20 16:38:30 -070022136WDI_PALCtrlMsgCB
22137(
22138 wpt_msg *pMsg
22139)
22140{
22141 WDI_EventInfoType* pEventData = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070022142 WDI_ControlBlockType* pWDICtx = NULL;
22143 WDI_Status wdiStatus;
22144 WDI_ReqStatusCb pfnReqStatusCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070022145 void* pUserData;
22146 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
22147
22148 if (( NULL == pMsg )||
22149 ( NULL == (pEventData = (WDI_EventInfoType*)pMsg->ptr)) ||
22150 ( NULL == (pWDICtx = (WDI_ControlBlockType*)pMsg->pContext )))
22151 {
22152 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070022153 "Invalid message received on serialize ctrl context API");
Jeff Johnson295189b2012-06-20 16:38:30 -070022154 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070022155 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070022156 }
22157
22158 /*Transition back to the state that we had before serialization
22159 - serialization transitions us to BUSY to stop any incomming requests
22160 ! TO DO L: possible race condition here if a request comes in between the
22161 state transition and the post function*/
22162
Jeff Johnsone7245742012-09-05 17:12:55 -070022163 WDI_STATE_TRANSITION( pWDICtx, pMsg->val);
Jeff Johnson295189b2012-06-20 16:38:30 -070022164
22165 /*-----------------------------------------------------------------------
22166 Check to see what type of event we are serializing
Jeff Johnsone7245742012-09-05 17:12:55 -070022167 - responses are never expected to come through here
Jeff Johnson295189b2012-06-20 16:38:30 -070022168 -----------------------------------------------------------------------*/
22169 switch ( pEventData->wdiRequest )
22170 {
22171
Jeff Johnsone7245742012-09-05 17:12:55 -070022172 case WDI_STOP_REQ:
Jeff Johnson295189b2012-06-20 16:38:30 -070022173 wdiStatus = WDI_PostMainEvent(&gWDICb, WDI_STOP_EVENT, pEventData);
22174 break;
22175
Jeff Johnson295189b2012-06-20 16:38:30 -070022176 case WDI_NV_DOWNLOAD_REQ:
22177 // When WDI State is WDI_STARTED_ST, send WDI request message with event type WDI_REQUEST_EVENT.
22178 // In this case, because this request is called from response process, we could call WDI_ProcessRequest() directly.
22179 if (pWDICtx->uGlobalState == WDI_STARTED_ST)
22180 {
22181 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022182 "%s: WDI_NV_DOWNLOAD_REQ called in WDI_STARTED_ST - send with WDI_REQUEST_EVENT", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070022183 wdiStatus = WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, pEventData);
22184 }
22185 else
22186 {
22187 wdiStatus = WDI_PostMainEvent(&gWDICb, WDI_START_EVENT, pEventData);
22188 }
22189
22190 break;
22191
22192 default:
22193 wdiStatus = WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, pEventData);
22194 break;
22195 }/*switch ( pEventData->wdiRequest )*/
22196
22197 if ( WDI_STATUS_SUCCESS != wdiStatus )
22198 {
22199 WDI_ExtractRequestCBFromEvent(pEventData, &pfnReqStatusCB, &pUserData);
22200
22201 if ( NULL != pfnReqStatusCB )
22202 {
22203 /*Fail the request*/
22204 pfnReqStatusCB( wdiStatus, pUserData);
22205 }
22206 }
22207
22208 /* Free data - that was allocated when queueing*/
22209 if( pEventData != NULL )
22210 {
22211 if( pEventData->pEventData != NULL )
22212 {
22213 wpalMemoryFree(pEventData->pEventData);
22214 }
22215 wpalMemoryFree(pEventData);
22216 }
22217
22218 if( pMsg != NULL )
22219 {
22220 wpalMemoryFree(pMsg);
22221 }
Jeff Johnsone7245742012-09-05 17:12:55 -070022222
Jeff Johnson295189b2012-06-20 16:38:30 -070022223}/*WDI_PALCtrlMsgCB*/
22224
22225/**
22226 @brief Utility function used by the DAL Core to help dequeue
Jeff Johnsone7245742012-09-05 17:12:55 -070022227 and schedule for execution a pending request
22228 @param
22229
Jeff Johnson295189b2012-06-20 16:38:30 -070022230 pWDICtx: - pointer to the WDI control block
22231 pEventData: - pointer to the evnt info that needs to be
Jeff Johnsone7245742012-09-05 17:12:55 -070022232 queued
22233
22234 @see
22235 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070022236*/
22237WDI_Status
22238WDI_DequeuePendingReq
22239(
22240 WDI_ControlBlockType* pWDICtx
22241)
22242{
Jeff Johnsone7245742012-09-05 17:12:55 -070022243 wpt_list_node* pNode = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070022244 WDI_EventInfoType* pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070022245 wpt_msg* palMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070022246 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
22247
Jeff Johnsone7245742012-09-05 17:12:55 -070022248 wpal_list_remove_front(&(pWDICtx->wptPendingQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070022249
22250 if ( NULL == pNode )
22251 {
22252 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -070022253 "List is empty - return");
Jeff Johnson295189b2012-06-20 16:38:30 -070022254 return WDI_STATUS_SUCCESS;
22255 }
22256
22257 /*The node actually points to the 1st element inside the Event Data struct -
22258 just cast it back to the struct*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022259 pEventData = (WDI_EventInfoType*)pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070022260
22261 /*Serialize processing in the control thread
22262 !TO DO: - check to see if these are all the messages params that need
22263 to be filled in*/
22264 palMsg = wpalMemoryAllocate(sizeof(wpt_msg));
22265
22266 if ( NULL == palMsg )
22267 {
22268 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070022269 "WDI_DequeuePendingReq: Cannot allocate memory for palMsg.");
Jeff Johnson295189b2012-06-20 16:38:30 -070022270 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070022271 return WDI_STATUS_MEM_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022272 }
Jeff Johnsone7245742012-09-05 17:12:55 -070022273 palMsg->pContext = pWDICtx;
Jeff Johnson295189b2012-06-20 16:38:30 -070022274 palMsg->callback = WDI_PALCtrlMsgCB;
22275 palMsg->ptr = pEventData;
22276
22277 /*Save the global state as we need it on the other side*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022278 palMsg->val = pWDICtx->uGlobalState;
Leo Chang0f24ca12013-12-17 13:35:00 -080022279 palMsg->type = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070022280
Jeff Johnson295189b2012-06-20 16:38:30 -070022281 /*Transition back to BUSY as we need to handle a queued request*/
22282 WDI_STATE_TRANSITION( pWDICtx, WDI_BUSY_ST);
Jeff Johnsone7245742012-09-05 17:12:55 -070022283
Jeff Johnson295189b2012-06-20 16:38:30 -070022284 wpalPostCtrlMsg(pWDICtx->pPALContext, palMsg);
22285
22286 return WDI_STATUS_PENDING;
22287}/*WDI_DequeuePendingReq*/
22288
22289
22290/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022291 @brief Utility function used by the DAL Core to help queue
Jeff Johnson295189b2012-06-20 16:38:30 -070022292 an association request that cannot be processed right
Jeff Johnsone7245742012-09-05 17:12:55 -070022293 away.- The assoc requests will be queued by BSSID
22294 @param
22295
Jeff Johnson295189b2012-06-20 16:38:30 -070022296 pWDICtx: - pointer to the WDI control block
22297 pEventData: pointer to the evnt info that needs to be queued
22298 macBSSID: bssid
Jeff Johnsone7245742012-09-05 17:12:55 -070022299
22300 @see
22301 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070022302*/
22303WDI_Status
22304WDI_QueueNewAssocRequest
22305(
22306 WDI_ControlBlockType* pWDICtx,
22307 WDI_EventInfoType* pEventData,
22308 wpt_macAddr macBSSID
22309)
22310{
Jeff Johnsone7245742012-09-05 17:12:55 -070022311 wpt_uint8 i;
22312 WDI_BSSSessionType* pSession = NULL;
22313 wpt_list_node* pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070022314 WDI_EventInfoType* pEventDataQueue;
Jeff Johnsone7245742012-09-05 17:12:55 -070022315 void* pEventInfo;
22316 WDI_NextSessionIdType* pSessionIdElement;
Jeff Johnson295189b2012-06-20 16:38:30 -070022317 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Jeff Johnson295189b2012-06-20 16:38:30 -070022318
Jeff Johnsone7245742012-09-05 17:12:55 -070022319
22320 /*------------------------------------------------------------------------
22321 Search for a session that matches the BSSID
Jeff Johnson295189b2012-06-20 16:38:30 -070022322 ------------------------------------------------------------------------*/
22323 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
22324 {
22325 if ( eWLAN_PAL_FALSE == pWDICtx->aBSSSessions[i].bInUse )
22326 {
22327 /*Found an empty session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022328 pSession = &pWDICtx->aBSSSessions[i];
22329 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070022330 }
22331 }
22332
22333 if ( i >= WDI_MAX_BSS_SESSIONS )
22334 {
22335 /*Cannot find any empty sessions*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022336 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022337 }
Jeff Johnsone7245742012-09-05 17:12:55 -070022338
Jeff Johnson295189b2012-06-20 16:38:30 -070022339 /*------------------------------------------------------------------------
22340 Fill in the BSSID for this session and set the usage flag
22341 ------------------------------------------------------------------------*/
22342 wpalMemoryCopy(pWDICtx->aBSSSessions[i].macBSSID, macBSSID, WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070022343 pWDICtx->aBSSSessions[i].bInUse = eWLAN_PAL_TRUE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022344
22345 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022346 Allocate memory for this and place it in the queue
Jeff Johnson295189b2012-06-20 16:38:30 -070022347 ------------------------------------------------------------------------*/
22348 pEventDataQueue = (WDI_EventInfoType*)wpalMemoryAllocate(sizeof(WDI_EventInfoType));
22349 if ( NULL == pEventDataQueue )
22350 {
22351 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022352 "%s: Cannot allocate memory for queue node", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070022353 WDI_ASSERT(0);
22354 return WDI_STATUS_MEM_FAILURE;
22355 }
22356
22357 pSessionIdElement = (WDI_NextSessionIdType*)wpalMemoryAllocate(sizeof(WDI_NextSessionIdType));
22358 if ( NULL == pSessionIdElement )
22359 {
22360 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022361 "%s: Cannot allocate memory for session ID", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070022362 WDI_ASSERT(0);
22363 wpalMemoryFree(pEventDataQueue);
22364 return WDI_STATUS_MEM_FAILURE;
22365 }
22366
22367 pEventInfo = wpalMemoryAllocate(pEventData->uEventDataSize);
22368 if ( NULL == pEventInfo )
22369 {
22370 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022371 "%s: Cannot allocate memory for event data info", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070022372 WDI_ASSERT(0);
22373 wpalMemoryFree(pSessionIdElement);
22374 wpalMemoryFree(pEventDataQueue);
22375 return WDI_STATUS_MEM_FAILURE;
22376 }
22377
22378 pEventDataQueue->pCBfnc = pEventData->pCBfnc;
22379 pEventDataQueue->pUserData = pEventData->pUserData;
22380 pEventDataQueue->uEventDataSize = pEventData->uEventDataSize;
22381 pEventDataQueue->wdiRequest = pEventData->wdiRequest;
Jeff Johnsone7245742012-09-05 17:12:55 -070022382 pEventDataQueue->wdiResponse = pEventData->wdiResponse;
Jeff Johnson295189b2012-06-20 16:38:30 -070022383
22384 wpalMemoryCopy(pEventInfo, pEventData->pEventData, pEventData->uEventDataSize);
22385 pEventDataQueue->pEventData = pEventInfo;
22386
22387 /*Send wpt a pointer to the node (this is the 1st element in the event data)*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022388 pNode = (wpt_list_node*)pEventDataQueue;
Jeff Johnson295189b2012-06-20 16:38:30 -070022389
22390 /*This association is currently being queued*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022391 pSession->bAssocReqQueued = eWLAN_PAL_TRUE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022392
Jeff Johnsone7245742012-09-05 17:12:55 -070022393 wpal_list_insert_back(&(pSession->wptPendingQueue), pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070022394
22395 /*We need to maintain a separate list that keeps track of the order in which
22396 the new assoc requests are being queued such that we can start processing
22397 them in the order that they had arrived*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022398 pSessionIdElement->ucIndex = i;
22399 pNode = (wpt_list_node*)pSessionIdElement;
Jeff Johnson295189b2012-06-20 16:38:30 -070022400
22401 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
22402 "Queueing up new assoc session : %d ", pSessionIdElement->ucIndex);
Jeff Johnsone7245742012-09-05 17:12:55 -070022403 wpal_list_insert_back(&pWDICtx->wptPendingAssocSessionIdQueue, pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070022404
22405 /*Return pending as this is what the status of the request is since it has
22406 been queued*/
22407 return WDI_STATUS_PENDING;
22408}/*WDI_QueueNewAssocRequest*/
22409
22410/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022411 @brief Utility function used by the DAL Core to help queue
Jeff Johnson295189b2012-06-20 16:38:30 -070022412 an association request that cannot be processed right
Jeff Johnsone7245742012-09-05 17:12:55 -070022413 away.- The assoc requests will be queued by BSSID
22414 @param
22415
Jeff Johnson295189b2012-06-20 16:38:30 -070022416 pWDICtx: - pointer to the WDI control block
22417 pSession: - session in which to queue
22418 pEventData: pointer to the event info that needs to be
22419 queued
Jeff Johnsone7245742012-09-05 17:12:55 -070022420
22421 @see
22422 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070022423*/
22424WDI_Status
22425WDI_QueueAssocRequest
22426(
22427 WDI_ControlBlockType* pWDICtx,
22428 WDI_BSSSessionType* pSession,
22429 WDI_EventInfoType* pEventData
22430)
22431{
Jeff Johnsone7245742012-09-05 17:12:55 -070022432 wpt_list_node* pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070022433 WDI_EventInfoType* pEventDataQueue;
Jeff Johnsone7245742012-09-05 17:12:55 -070022434 void* pEventInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070022435 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Jeff Johnsone7245742012-09-05 17:12:55 -070022436
22437 /*------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -070022438 Sanity check
22439 ------------------------------------------------------------------------*/
22440 if (( NULL == pSession ) || ( NULL == pWDICtx ))
22441 {
22442 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022443 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070022444
Jeff Johnsone7245742012-09-05 17:12:55 -070022445 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022446 }
22447
22448 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022449 Allocate memory for this and place it in the queue
Jeff Johnson295189b2012-06-20 16:38:30 -070022450 ------------------------------------------------------------------------*/
22451 pEventDataQueue = (WDI_EventInfoType*)wpalMemoryAllocate(sizeof(WDI_EventInfoType));
22452 if ( NULL == pEventDataQueue )
22453 {
22454 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022455 "%s: Cannot allocate memory for queueing", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070022456 WDI_ASSERT(0);
22457 return WDI_STATUS_MEM_FAILURE;
22458 }
22459
22460 pEventInfo = wpalMemoryAllocate(pEventData->uEventDataSize);
22461 if ( NULL == pEventInfo )
22462 {
22463 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
22464 "%s: Cannot allocate memory for queueing event data info",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022465 __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070022466 WDI_ASSERT(0);
22467 wpalMemoryFree(pEventDataQueue);
22468 return WDI_STATUS_MEM_FAILURE;
22469 }
22470
22471 pEventDataQueue->pCBfnc = pEventData->pCBfnc;
22472 pEventDataQueue->pUserData = pEventData->pUserData;
22473 pEventDataQueue->uEventDataSize = pEventData->uEventDataSize;
22474 pEventDataQueue->wdiRequest = pEventData->wdiRequest;
Jeff Johnsone7245742012-09-05 17:12:55 -070022475 pEventDataQueue->wdiResponse = pEventData->wdiResponse;
Jeff Johnson295189b2012-06-20 16:38:30 -070022476 pEventDataQueue->pEventData = pEventInfo;
22477
22478 wpalMemoryCopy(pEventInfo, pEventData->pEventData, pEventData->uEventDataSize);
22479
22480 /*Send wpt a pointer to the node (this is the 1st element in the event data)*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022481 pNode = (wpt_list_node*)pEventDataQueue;
Jeff Johnson295189b2012-06-20 16:38:30 -070022482
22483 /*This association is currently being queued*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022484 pSession->bAssocReqQueued = eWLAN_PAL_TRUE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022485
Jeff Johnsone7245742012-09-05 17:12:55 -070022486 wpal_list_insert_back(&(pSession->wptPendingQueue), pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070022487
22488 /*The result of this operation is pending because the request has been
22489 queued and it will be processed at a later moment in time */
22490 return WDI_STATUS_PENDING;
22491}/*WDI_QueueAssocRequest*/
22492
22493/**
22494 @brief Utility function used by the DAL Core to help dequeue
22495 an association request that was pending
22496 The request will be queued up in front of the main
22497 pending queue for imediate processing
Jeff Johnsone7245742012-09-05 17:12:55 -070022498 @param
22499
Jeff Johnson295189b2012-06-20 16:38:30 -070022500 pWDICtx: - pointer to the WDI control block
Jeff Johnsone7245742012-09-05 17:12:55 -070022501
22502
22503 @see
22504 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070022505*/
22506WDI_Status
22507WDI_DequeueAssocRequest
22508(
22509 WDI_ControlBlockType* pWDICtx
22510)
22511{
Jeff Johnsone7245742012-09-05 17:12:55 -070022512 wpt_list_node* pNode = NULL;
22513 WDI_NextSessionIdType* pSessionIdElement;
Jeff Johnson295189b2012-06-20 16:38:30 -070022514 WDI_BSSSessionType* pSession;
22515 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Jeff Johnsone7245742012-09-05 17:12:55 -070022516
22517 /*------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -070022518 Sanity check
22519 ------------------------------------------------------------------------*/
22520 if ( NULL == pWDICtx )
22521 {
22522 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022523 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070022524
Jeff Johnsone7245742012-09-05 17:12:55 -070022525 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022526 }
22527
22528 /*------------------------------------------------------------------------
22529 An association has been completed => a new association can occur
22530 Check to see if there are any pending associations ->
22531 If so , transfer all the pending requests into the busy queue for
22532 processing
22533 These requests have arrived prior to the requests in the busy queue
22534 (bc they needed to be processed in order to be placed in this queue)
22535 => they will be placed at the front of the busy queue
22536 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022537 wpal_list_remove_front(&(pWDICtx->wptPendingAssocSessionIdQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070022538
22539 if ( NULL == pNode )
22540 {
22541 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -070022542 "List is empty - return");
Jeff Johnson295189b2012-06-20 16:38:30 -070022543 return WDI_STATUS_SUCCESS;
22544 }
22545
22546 /*The node actually points to the 1st element inside the Session Id struct -
22547 just cast it back to the struct*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022548 pSessionIdElement = (WDI_NextSessionIdType*)pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070022549
22550 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
22551 "Dequeueing new assoc session : %d ", pSessionIdElement->ucIndex);
22552
22553 if ( pSessionIdElement->ucIndex < WDI_MAX_BSS_SESSIONS )
22554 {
22555 pSession = &pWDICtx->aBSSSessions[pSessionIdElement->ucIndex];
Jeff Johnsone7245742012-09-05 17:12:55 -070022556
Jeff Johnson295189b2012-06-20 16:38:30 -070022557 /*Transfer all the pending requests in this assoc queue to
Jeff Johnsone7245742012-09-05 17:12:55 -070022558 the front of the main waiting queue for subsequent execution*/
22559 wpal_list_remove_back(&(pSession->wptPendingQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070022560 while ( NULL != pNode )
22561 {
22562 /*Place it in front of the main pending list*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022563 wpal_list_insert_front( &(pWDICtx->wptPendingQueue), &pNode);
22564 wpal_list_remove_back(&(pSession->wptPendingQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070022565 }
Jeff Johnsone7245742012-09-05 17:12:55 -070022566 pSession->bAssocReqQueued = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022567 }
22568 else
22569 {
22570 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnsone7245742012-09-05 17:12:55 -070022571 "Invalid session id queued up for assoc");
Jeff Johnson295189b2012-06-20 16:38:30 -070022572 WPAL_ASSERT(0);
22573 wpalMemoryFree(pSessionIdElement);
Jeff Johnsone7245742012-09-05 17:12:55 -070022574 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022575 }
Jeff Johnsone7245742012-09-05 17:12:55 -070022576
Jeff Johnson295189b2012-06-20 16:38:30 -070022577 /*Clean this up as it is no longer needed in order to prevent memory leak*/
22578 wpalMemoryFree(pSessionIdElement);
22579 return WDI_STATUS_SUCCESS;
22580}/*WDI_DequeueAssocRequest*/
22581
22582/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022583 @brief Utility function used by the DAL Core to clear any
Jeff Johnson295189b2012-06-20 16:38:30 -070022584 pending requests - all req cb will be called with
22585 failure and the queue will be emptied.
Jeff Johnsone7245742012-09-05 17:12:55 -070022586 @param
22587
Jeff Johnson295189b2012-06-20 16:38:30 -070022588 pWDICtx: - pointer to the WDI control block
Jeff Johnsone7245742012-09-05 17:12:55 -070022589
22590 @see
22591 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070022592*/
22593WDI_Status
22594WDI_ClearPendingRequests
Jeff Johnsone7245742012-09-05 17:12:55 -070022595(
Jeff Johnson295189b2012-06-20 16:38:30 -070022596 WDI_ControlBlockType* pWDICtx
22597)
22598{
Jeff Johnsone7245742012-09-05 17:12:55 -070022599 wpt_list_node* pNode = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070022600 WDI_EventInfoType* pEventDataQueue = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070022601 WDI_ReqStatusCb pfnReqStatusCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070022602 void* pUserData;
22603 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
22604
Jeff Johnsone7245742012-09-05 17:12:55 -070022605 wpal_list_remove_front(&(pWDICtx->wptPendingQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070022606
22607 /*------------------------------------------------------------------------
22608 Go through all the requests and fail them - this will only be called
22609 when device is being stopped or an error was detected - either case the
Jeff Johnsone7245742012-09-05 17:12:55 -070022610 pending requests can no longer be sent down to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070022611 ------------------------------------------------------------------------*/
22612 while( pNode )
22613 {
22614 /*The node actually points to the 1st element inside the Event Data struct -
22615 just cast it back to the struct*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022616 pEventDataQueue = (WDI_EventInfoType*)pNode;
22617
Jeff Johnson295189b2012-06-20 16:38:30 -070022618 WDI_ExtractRequestCBFromEvent(pEventDataQueue, &pfnReqStatusCB, &pUserData);
22619 if ( NULL != pfnReqStatusCB )
22620 {
22621 /*Fail the request*/
22622 pfnReqStatusCB( WDI_STATUS_E_FAILURE, pUserData);
22623 }
22624 /* Free data - that was allocated when queueing */
22625 if ( pEventDataQueue->pEventData != NULL )
22626 {
22627 wpalMemoryFree(pEventDataQueue->pEventData);
22628 }
22629 wpalMemoryFree(pEventDataQueue);
22630
22631 if (wpal_list_remove_front(&(pWDICtx->wptPendingQueue), &pNode) != eWLAN_PAL_STATUS_SUCCESS)
22632 {
22633 break;
22634 }
Jeff Johnsone7245742012-09-05 17:12:55 -070022635 }
22636
Jeff Johnson295189b2012-06-20 16:38:30 -070022637 return WDI_STATUS_SUCCESS;
22638}/*WDI_ClearPendingRequests*/
22639
22640/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022641 @brief Helper routine used to init the BSS Sessions in the WDI control block
22642
22643
22644 @param pWDICtx: pointer to the WLAN DAL context
22645
Jeff Johnson295189b2012-06-20 16:38:30 -070022646 @see
22647*/
22648void
22649WDI_ResetAssocSessions
Jeff Johnsone7245742012-09-05 17:12:55 -070022650(
Jeff Johnson295189b2012-06-20 16:38:30 -070022651 WDI_ControlBlockType* pWDICtx
22652)
22653{
Jeff Johnsone7245742012-09-05 17:12:55 -070022654 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070022655 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
22656
22657 /*-------------------------------------------------------------------------
22658 No Sanity check
22659 -------------------------------------------------------------------------*/
22660 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
22661 {
Jeff Johnsone7245742012-09-05 17:12:55 -070022662 wpalMemoryZero( &pWDICtx->aBSSSessions[i], sizeof(WDI_BSSSessionType) );
Jeff Johnson295189b2012-06-20 16:38:30 -070022663 pWDICtx->aBSSSessions[i].wdiAssocState = WDI_ASSOC_INIT_ST;
22664 pWDICtx->aBSSSessions[i].bcastStaIdx = WDI_STA_INVALID_IDX;
22665 pWDICtx->aBSSSessions[i].ucBSSIdx = WDI_BSS_INVALID_IDX;
22666 }
22667}/*WDI_ResetAssocSessions*/
22668
22669/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022670 @brief Helper routine used to find a session based on the BSSID
22671
22672
22673 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070022674 macBSSID: BSSID of the session
Jeff Johnsone7245742012-09-05 17:12:55 -070022675 pSession: pointer to the session (if found)
22676
Jeff Johnson295189b2012-06-20 16:38:30 -070022677 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070022678 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070022679*/
22680wpt_uint8
22681WDI_FindAssocSession
Jeff Johnsone7245742012-09-05 17:12:55 -070022682(
Jeff Johnson295189b2012-06-20 16:38:30 -070022683 WDI_ControlBlockType* pWDICtx,
22684 wpt_macAddr macBSSID,
22685 WDI_BSSSessionType** ppSession
22686)
22687{
Jeff Johnsone7245742012-09-05 17:12:55 -070022688 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070022689 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
22690
22691 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022692 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070022693 -------------------------------------------------------------------------*/
22694 if ( NULL == ppSession )
22695 {
22696 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022697 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070022698 return WDI_MAX_BSS_SESSIONS;
Jeff Johnson295189b2012-06-20 16:38:30 -070022699 }
22700
Jeff Johnsone7245742012-09-05 17:12:55 -070022701 *ppSession = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070022702
Jeff Johnsone7245742012-09-05 17:12:55 -070022703 /*------------------------------------------------------------------------
22704 Search for a session that matches the BSSID
Jeff Johnson295189b2012-06-20 16:38:30 -070022705 ------------------------------------------------------------------------*/
22706 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
22707 {
Madan Mohan Koyyalamudi35287862012-10-22 14:52:46 -070022708 if ( (pWDICtx->aBSSSessions[i].bInUse == eWLAN_PAL_TRUE) &&
22709 (eWLAN_PAL_TRUE ==
22710 wpalMemoryCompare(pWDICtx->aBSSSessions[i].macBSSID, macBSSID,
22711 WDI_MAC_ADDR_LEN)) )
Jeff Johnson295189b2012-06-20 16:38:30 -070022712 {
22713 /*Found the session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022714 *ppSession = &pWDICtx->aBSSSessions[i];
Jeff Johnson295189b2012-06-20 16:38:30 -070022715 return i;
22716 }
22717 }
22718
Jeff Johnsone7245742012-09-05 17:12:55 -070022719 return i;
Jeff Johnson295189b2012-06-20 16:38:30 -070022720}/*WDI_FindAssocSession*/
22721
22722/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022723 @brief Helper routine used to find a session based on the BSSID
22724
22725
22726 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070022727 ucBSSIdx: BSS Index of the session
22728 ppSession: out pointer to the session (if found)
Jeff Johnsone7245742012-09-05 17:12:55 -070022729
Jeff Johnson295189b2012-06-20 16:38:30 -070022730 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070022731 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070022732*/
22733wpt_uint8
22734WDI_FindAssocSessionByBSSIdx
Jeff Johnsone7245742012-09-05 17:12:55 -070022735(
Jeff Johnson295189b2012-06-20 16:38:30 -070022736 WDI_ControlBlockType* pWDICtx,
22737 wpt_uint16 ucBSSIdx,
22738 WDI_BSSSessionType** ppSession
22739)
22740{
Jeff Johnsone7245742012-09-05 17:12:55 -070022741 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070022742 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
22743
22744 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022745 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070022746 -------------------------------------------------------------------------*/
22747 if ( NULL == ppSession )
22748 {
22749 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022750 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070022751 return WDI_MAX_BSS_SESSIONS;
Jeff Johnson295189b2012-06-20 16:38:30 -070022752 }
22753
Jeff Johnsone7245742012-09-05 17:12:55 -070022754 *ppSession = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070022755
Jeff Johnsone7245742012-09-05 17:12:55 -070022756 /*------------------------------------------------------------------------
22757 Search for a session that matches the BSSID
Jeff Johnson295189b2012-06-20 16:38:30 -070022758 ------------------------------------------------------------------------*/
22759 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
22760 {
22761 if ( ucBSSIdx == pWDICtx->aBSSSessions[i].ucBSSIdx )
22762 {
22763 /*Found the session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022764 *ppSession = &pWDICtx->aBSSSessions[i];
Jeff Johnson295189b2012-06-20 16:38:30 -070022765 return i;
22766 }
22767 }
22768
Jeff Johnsone7245742012-09-05 17:12:55 -070022769 return i;
Jeff Johnson295189b2012-06-20 16:38:30 -070022770}/*WDI_FindAssocSessionByBSSIdx*/
22771
22772/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022773 @brief Helper routine used to find a session based on the BSSID
22774
22775
22776 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070022777 ucBSSIdx: BSS Index of the session
22778 ppSession: out pointer to the session (if found)
Jeff Johnsone7245742012-09-05 17:12:55 -070022779
Jeff Johnson295189b2012-06-20 16:38:30 -070022780 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070022781 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070022782*/
22783wpt_uint8
22784WDI_FindAssocSessionByIdx
Jeff Johnsone7245742012-09-05 17:12:55 -070022785(
Jeff Johnson295189b2012-06-20 16:38:30 -070022786 WDI_ControlBlockType* pWDICtx,
22787 wpt_uint16 usIdx,
22788 WDI_BSSSessionType** ppSession
22789)
22790{
22791 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
22792
22793 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022794 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070022795 -------------------------------------------------------------------------*/
22796 if ( NULL == ppSession || usIdx >= WDI_MAX_BSS_SESSIONS )
22797 {
22798 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022799 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070022800 return WDI_MAX_BSS_SESSIONS;
Jeff Johnson295189b2012-06-20 16:38:30 -070022801 }
22802
22803 /*Found the session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022804 *ppSession = &pWDICtx->aBSSSessions[usIdx];
Jeff Johnson295189b2012-06-20 16:38:30 -070022805
22806 return usIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070022807
Jeff Johnson295189b2012-06-20 16:38:30 -070022808}/*WDI_FindAssocSessionByBSSIdx*/
22809
22810/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022811 @brief Helper routine used to find an empty session in the WDI
Jeff Johnson295189b2012-06-20 16:38:30 -070022812 CB
Jeff Johnsone7245742012-09-05 17:12:55 -070022813
22814
22815 @param pWDICtx: pointer to the WLAN DAL context
22816 pSession: pointer to the session (if found)
22817
Jeff Johnson295189b2012-06-20 16:38:30 -070022818 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070022819 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070022820*/
22821wpt_uint8
22822WDI_FindEmptySession
Jeff Johnsone7245742012-09-05 17:12:55 -070022823(
Jeff Johnson295189b2012-06-20 16:38:30 -070022824 WDI_ControlBlockType* pWDICtx,
22825 WDI_BSSSessionType** ppSession
22826)
22827{
Jeff Johnsone7245742012-09-05 17:12:55 -070022828 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070022829 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
22830 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022831 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070022832 -------------------------------------------------------------------------*/
22833 if ( NULL == ppSession )
22834 {
22835 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022836 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070022837 return WDI_MAX_BSS_SESSIONS;
Jeff Johnson295189b2012-06-20 16:38:30 -070022838 }
22839
Jeff Johnsone7245742012-09-05 17:12:55 -070022840 *ppSession = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070022841
Jeff Johnsone7245742012-09-05 17:12:55 -070022842 /*------------------------------------------------------------------------
22843 Search for a session that it is not in use
Jeff Johnson295189b2012-06-20 16:38:30 -070022844 ------------------------------------------------------------------------*/
22845 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
22846 {
22847 if ( ! pWDICtx->aBSSSessions[i].bInUse )
22848 {
22849 /*Found a session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022850 *ppSession = &pWDICtx->aBSSSessions[i];
Jeff Johnson295189b2012-06-20 16:38:30 -070022851 return i;
22852 }
22853 }
22854
Jeff Johnsone7245742012-09-05 17:12:55 -070022855 return i;
Jeff Johnson295189b2012-06-20 16:38:30 -070022856}/*WDI_FindEmptySession*/
22857
22858
22859/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022860 @brief Helper routine used to get the total count of active
Jeff Johnson295189b2012-06-20 16:38:30 -070022861 sessions
Jeff Johnsone7245742012-09-05 17:12:55 -070022862
22863
22864 @param pWDICtx: pointer to the WLAN DAL context
Hoonki Lee9af07cf2013-04-24 01:21:58 -070022865 macBSSID: pointer to BSSID. If NULL, get all the session.
22866 If not NULL, count ActiveSession by excluding (TRUE) or including (FALSE) skipBSSID.
22867 skipBSSID: if TRUE, get all the sessions except matching to macBSSID. If FALSE, get all session.
22868 This argument is ignored if macBSSID is NULL.
Jeff Johnson295189b2012-06-20 16:38:30 -070022869 @see
22870 @return Number of sessions in use
22871*/
22872wpt_uint8
22873WDI_GetActiveSessionsCount
Jeff Johnsone7245742012-09-05 17:12:55 -070022874(
Hoonki Lee9af07cf2013-04-24 01:21:58 -070022875 WDI_ControlBlockType* pWDICtx,
22876 wpt_macAddr macBSSID,
22877 wpt_boolean skipBSSID
Jeff Johnson295189b2012-06-20 16:38:30 -070022878)
22879{
Jeff Johnsone7245742012-09-05 17:12:55 -070022880 wpt_uint8 i, ucCount = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070022881 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022882
22883 /*------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -070022884 Count all sessions in use
22885 ------------------------------------------------------------------------*/
22886 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
22887 {
Hoonki Lee9af07cf2013-04-24 01:21:58 -070022888 if ( macBSSID && skipBSSID &&
22889 (eWLAN_PAL_TRUE ==
22890 wpalMemoryCompare(pWDICtx->aBSSSessions[i].macBSSID, macBSSID,
22891 WDI_MAC_ADDR_LEN)))
22892 {
22893 continue;
22894 }
22895 else if ( pWDICtx->aBSSSessions[i].bInUse )
22896 {
Jeff Johnson295189b2012-06-20 16:38:30 -070022897 ucCount++;
Hoonki Lee9af07cf2013-04-24 01:21:58 -070022898 }
Jeff Johnson295189b2012-06-20 16:38:30 -070022899 }
22900
Jeff Johnsone7245742012-09-05 17:12:55 -070022901 return ucCount;
Jeff Johnson295189b2012-06-20 16:38:30 -070022902}/*WDI_GetActiveSessionsCount*/
22903
22904/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022905 @brief Helper routine used to delete session in the WDI
Jeff Johnson295189b2012-06-20 16:38:30 -070022906 CB
Jeff Johnsone7245742012-09-05 17:12:55 -070022907
22908
22909 @param pWDICtx: pointer to the WLAN DAL context
22910 pSession: pointer to the session (if found)
22911
Jeff Johnson295189b2012-06-20 16:38:30 -070022912 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070022913 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070022914*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022915void
Jeff Johnson295189b2012-06-20 16:38:30 -070022916WDI_DeleteSession
Jeff Johnsone7245742012-09-05 17:12:55 -070022917(
Jeff Johnson295189b2012-06-20 16:38:30 -070022918 WDI_ControlBlockType* pWDICtx,
22919 WDI_BSSSessionType* ppSession
22920)
22921{
22922 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022923 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070022924 -------------------------------------------------------------------------*/
22925 if ( NULL == ppSession )
22926 {
22927 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022928 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070022929 return ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022930 }
22931
Jeff Johnsone7245742012-09-05 17:12:55 -070022932 /*------------------------------------------------------------------------
22933 Reset the entries int session
Jeff Johnson295189b2012-06-20 16:38:30 -070022934 ------------------------------------------------------------------------*/
22935 wpal_list_destroy(&ppSession->wptPendingQueue);
22936 wpalMemoryZero(ppSession, sizeof(*ppSession));
Jeff Johnsone7245742012-09-05 17:12:55 -070022937 ppSession->wdiAssocState = WDI_ASSOC_INIT_ST;
22938 ppSession->bInUse = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022939 ppSession->wdiBssType = WDI_INFRASTRUCTURE_MODE;
22940 wpal_list_init(&ppSession->wptPendingQueue);
22941
22942}/*WDI_DeleteSession*/
22943
22944/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022945 @brief Utility function to add the broadcast STA to the the STA table.
Jeff Johnson295189b2012-06-20 16:38:30 -070022946 The bcast STA ID is assigned by HAL and must be valid.
Jeff Johnsone7245742012-09-05 17:12:55 -070022947 @param
22948
Jeff Johnson295189b2012-06-20 16:38:30 -070022949 WDI_AddStaParams: - pointer to the WDI Add STA params
22950 usBcastStaIdx: - Broadcast STA index passed by HAL
Jeff Johnsone7245742012-09-05 17:12:55 -070022951
22952 @see
22953 @return void
Jeff Johnson295189b2012-06-20 16:38:30 -070022954*/
22955void
22956WDI_AddBcastSTAtoSTATable
22957(
22958 WDI_ControlBlockType* pWDICtx,
22959 WDI_AddStaParams * staParams,
22960 wpt_uint16 usBcastStaIdx
22961)
22962{
22963 WDI_AddStaParams wdiAddSTAParam = {0};
22964 wpt_macAddr bcastMacAddr = {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF};
22965 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
22966
22967 /*---------------------------------------------------------------------
22968 Sanity check
22969 ---------------------------------------------------------------------*/
22970 if ( NULL == staParams )
22971 {
22972 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022973 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070022974
Jeff Johnsone7245742012-09-05 17:12:55 -070022975 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070022976 }
22977
22978 wdiAddSTAParam.bcastDpuIndex = staParams->bcastDpuIndex;
22979 wdiAddSTAParam.bcastDpuSignature = staParams->bcastDpuSignature;
22980 wdiAddSTAParam.bcastMgmtDpuIndex = staParams->bcastMgmtDpuIndex;
22981 wdiAddSTAParam.bcastMgmtDpuSignature = staParams->bcastMgmtDpuSignature;
22982 wdiAddSTAParam.dpuIndex = staParams->dpuIndex;
22983 wdiAddSTAParam.dpuSig = staParams->dpuSig;
22984 wpalMemoryCopy( wdiAddSTAParam.macBSSID, staParams->macBSSID,
22985 WDI_MAC_ADDR_LEN );
22986 wpalMemoryCopy( wdiAddSTAParam.staMacAddr, bcastMacAddr, WDI_MAC_ADDR_LEN );
22987 wdiAddSTAParam.ucBSSIdx = staParams->ucBSSIdx;
22988 wdiAddSTAParam.ucHTCapable = staParams->ucHTCapable;
22989 wdiAddSTAParam.ucRmfEnabled = staParams->ucRmfEnabled;
22990 wdiAddSTAParam.ucStaType = WDI_STA_ENTRY_BCAST;
22991 wdiAddSTAParam.ucWmmEnabled = staParams->ucWmmEnabled;
22992 wdiAddSTAParam.ucSTAIdx = usBcastStaIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070022993
Jeff Johnson295189b2012-06-20 16:38:30 -070022994 (void)WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
22995}
22996
22997/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022998 @brief NV blob will be divided into fragments of size 4kb and
22999 Sent to HAL
23000
23001 @param pWDICtx: pointer to the WLAN DAL context
23002 pEventData: pointer to the event information structure
23003
Jeff Johnson295189b2012-06-20 16:38:30 -070023004 @see
23005 @return Result of the function call
23006 */
23007
23008WDI_Status WDI_SendNvBlobReq
Jeff Johnsone7245742012-09-05 17:12:55 -070023009(
Jeff Johnson295189b2012-06-20 16:38:30 -070023010 WDI_ControlBlockType* pWDICtx,
23011 WDI_EventInfoType* pEventData
23012)
23013{
23014
23015 tHalNvImgDownloadReqMsg halNvImgDownloadParam;
23016 wpt_uint8* pSendBuffer = NULL;
23017 wpt_uint16 usDataOffset = 0;
23018 wpt_uint16 usSendSize = 0;
23019 wpt_uint16 usCurrentFragmentSize =0;
23020 wpt_uint8* pSrcBuffer = NULL;
23021 WDI_NvDownloadReqParamsType* pwdiNvDownloadReqParams =NULL ;
23022 WDI_NvDownloadRspCb wdiNvDownloadRspCb;
23023
23024 wdiNvDownloadRspCb = (WDI_NvDownloadRspCb)pEventData->pCBfnc;
23025 WDI_ASSERT(NULL != wdiNvDownloadRspCb);
23026 pwdiNvDownloadReqParams = (WDI_NvDownloadReqParamsType*)pEventData->pEventData;
23027
Jeff Johnsone7245742012-09-05 17:12:55 -070023028 /* Sanity Check is done by the caller */
Jeff Johnson295189b2012-06-20 16:38:30 -070023029 pSrcBuffer =(wpt_uint8 *) pwdiNvDownloadReqParams->wdiBlobInfo.pBlobAddress;
23030
23031 /* Update the current Fragment Number */
23032 pWDICtx->wdiNvBlobInfo.usCurrentFragment += 1;
23033
23034 /*Update the HAL REQ structure */
23035 /*HAL maintaining the fragment count as 0,1,2...n where at WDI it is represented as 1,2,3.. n*/
23036 halNvImgDownloadParam.nvImageReqParams.fragNumber =
23037 pWDICtx->wdiNvBlobInfo.usCurrentFragment-1;
23038
23039 /* Divide the NV Image to size of 'FRAGMENT_SIZE' fragments and send it to HAL.
Jeff Johnsone7245742012-09-05 17:12:55 -070023040 If the size of the Image is less than 'FRAGMENT_SIZE' then in one iteration total
Jeff Johnson295189b2012-06-20 16:38:30 -070023041 image will be sent to HAL*/
23042
Jeff Johnsone7245742012-09-05 17:12:55 -070023043 if(pWDICtx->wdiNvBlobInfo.usTotalFragment
Jeff Johnson295189b2012-06-20 16:38:30 -070023044 == pWDICtx->wdiNvBlobInfo.usCurrentFragment)
Jeff Johnsone7245742012-09-05 17:12:55 -070023045 {
Jeff Johnson295189b2012-06-20 16:38:30 -070023046 /* Taking care of boundry condition */
Jeff Johnsone7245742012-09-05 17:12:55 -070023047 if( !(usCurrentFragmentSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070023048 pwdiNvDownloadReqParams->wdiBlobInfo.uBlobSize%FRAGMENT_SIZE ))
23049 usCurrentFragmentSize = FRAGMENT_SIZE;
23050
23051 /*Update the HAL REQ structure */
23052 halNvImgDownloadParam.nvImageReqParams.isLastFragment = 1;
23053 halNvImgDownloadParam.nvImageReqParams.nvImgBufferSize= usCurrentFragmentSize;
23054
23055 }
23056 else
Jeff Johnsone7245742012-09-05 17:12:55 -070023057 {
Jeff Johnson295189b2012-06-20 16:38:30 -070023058 usCurrentFragmentSize = FRAGMENT_SIZE;
23059
23060 /*Update the HAL REQ structure */
23061 halNvImgDownloadParam.nvImageReqParams.isLastFragment =0;
23062 halNvImgDownloadParam.nvImageReqParams.nvImgBufferSize = usCurrentFragmentSize;
23063 }
23064
23065 /*-----------------------------------------------------------------------
23066 Get message buffer
23067 -----------------------------------------------------------------------*/
23068 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,WDI_NV_DOWNLOAD_REQ,
23069 sizeof(halNvImgDownloadParam.nvImageReqParams)+ usCurrentFragmentSize,
23070 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070023071 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070023072 (usDataOffset + sizeof(halNvImgDownloadParam.nvImageReqParams) + usCurrentFragmentSize )))
23073 {
23074 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080023075 "Unable to get send buffer in NV Download req %p %p ",
Jeff Johnson295189b2012-06-20 16:38:30 -070023076 pEventData, pwdiNvDownloadReqParams);
23077 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070023078 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023079 }
23080
23081 /* Copying the Hal NV download REQ structure */
Jeff Johnsone7245742012-09-05 17:12:55 -070023082 wpalMemoryCopy(pSendBuffer + usDataOffset ,
Jeff Johnson295189b2012-06-20 16:38:30 -070023083 &halNvImgDownloadParam.nvImageReqParams ,sizeof(tHalNvImgDownloadReqParams));
23084
23085 /* Appending the NV image fragment */
23086 wpalMemoryCopy(pSendBuffer + usDataOffset + sizeof(tHalNvImgDownloadReqParams),
23087 (void *)(pSrcBuffer + halNvImgDownloadParam.nvImageReqParams.fragNumber * FRAGMENT_SIZE),
23088 usCurrentFragmentSize);
23089
23090 pWDICtx->wdiReqStatusCB = pwdiNvDownloadReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070023091 pWDICtx->pReqStatusUserData = pwdiNvDownloadReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070023092
Jeff Johnsone7245742012-09-05 17:12:55 -070023093 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
23094 wdiNvDownloadRspCb, pEventData->pUserData,
Jeff Johnson295189b2012-06-20 16:38:30 -070023095 WDI_NV_DOWNLOAD_RESP);
23096
23097}
Jeff Johnsone7245742012-09-05 17:12:55 -070023098/*============================================================================
23099 Helper inline functions for
Jeff Johnson295189b2012-06-20 16:38:30 -070023100 ============================================================================*/
23101/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023102 @brief Helper routine used to find a session based on the BSSID
23103 @param pContext: pointer to the WLAN DAL context
23104 @param pDPContext: pointer to the Datapath context
23105
Jeff Johnson295189b2012-06-20 16:38:30 -070023106 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070023107 @return
Jeff Johnson295189b2012-06-20 16:38:30 -070023108*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023109WPT_INLINE void
Jeff Johnson295189b2012-06-20 16:38:30 -070023110WDI_DS_AssignDatapathContext (void *pContext, void *pDPContext)
23111{
23112 WDI_ControlBlockType *pCB = (WDI_ControlBlockType *)pContext;
23113
23114 pCB->pDPContext = pDPContext;
23115 return;
23116}
23117
23118/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023119 @brief Helper routine used to find a session based on the BSSID
23120
23121
23122 @param pContext: pointer to the WLAN DAL context
23123
Jeff Johnson295189b2012-06-20 16:38:30 -070023124 @see
23125 @return pointer to Datapath context
23126*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023127WPT_INLINE void *
Jeff Johnson295189b2012-06-20 16:38:30 -070023128WDI_DS_GetDatapathContext (void *pContext)
23129{
23130 WDI_ControlBlockType *pCB = (WDI_ControlBlockType *)pContext;
23131 return pCB->pDPContext;
23132}
23133/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023134 @brief Helper routine used to find a session based on the BSSID
23135
23136
23137 @param pContext: pointer to the WLAN DAL context
23138 @param pDTDriverContext: pointer to the Transport Driver context
23139
Jeff Johnson295189b2012-06-20 16:38:30 -070023140 @see
23141 @return void
23142*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023143WPT_INLINE void
Jeff Johnson295189b2012-06-20 16:38:30 -070023144WDT_AssignTransportDriverContext (void *pContext, void *pDTDriverContext)
23145{
23146 WDI_ControlBlockType *pCB = (WDI_ControlBlockType *)pContext;
23147
23148 pCB->pDTDriverContext = pDTDriverContext;
Jeff Johnsone7245742012-09-05 17:12:55 -070023149 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070023150}
23151
23152/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023153 @brief Helper routine used to find a session based on the BSSID
23154
23155
23156 @param pWDICtx: pointer to the WLAN DAL context
23157
Jeff Johnson295189b2012-06-20 16:38:30 -070023158 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070023159 @return pointer to datapath context
Jeff Johnson295189b2012-06-20 16:38:30 -070023160*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023161WPT_INLINE void *
Jeff Johnson295189b2012-06-20 16:38:30 -070023162WDT_GetTransportDriverContext (void *pContext)
23163{
23164 WDI_ControlBlockType *pCB = (WDI_ControlBlockType *)pContext;
Jeff Johnsone7245742012-09-05 17:12:55 -070023165 return(pCB->pDTDriverContext);
Jeff Johnson295189b2012-06-20 16:38:30 -070023166}
23167
Jeff Johnsone7245742012-09-05 17:12:55 -070023168/*============================================================================
Jeff Johnson295189b2012-06-20 16:38:30 -070023169 Helper inline converters
23170 ============================================================================*/
23171/*Convert WDI driver type into HAL driver type*/
23172WPT_STATIC WPT_INLINE WDI_Status
23173WDI_HAL_2_WDI_STATUS
23174(
23175 eHalStatus halStatus
23176)
23177{
Jeff Johnsone7245742012-09-05 17:12:55 -070023178 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070023179 the chances of getting inlined*/
23180 switch( halStatus )
23181 {
23182 case eHAL_STATUS_SUCCESS:
23183 case eHAL_STATUS_ADD_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO:
23184 case eHAL_STATUS_DEL_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO:
23185 return WDI_STATUS_SUCCESS;
23186 case eHAL_STATUS_FAILURE:
23187 return WDI_STATUS_E_FAILURE;
23188 case eHAL_STATUS_FAILED_ALLOC:
Jeff Johnsone7245742012-09-05 17:12:55 -070023189 return WDI_STATUS_MEM_FAILURE;
23190 /*The rest of the HAL error codes must be kept hidden from the UMAC as
Jeff Johnson295189b2012-06-20 16:38:30 -070023191 they refer to specific internal modules of our device*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023192 default:
23193 return WDI_STATUS_DEV_INTERNAL_FAILURE;
23194 }
Jeff Johnson295189b2012-06-20 16:38:30 -070023195
Jeff Johnsone7245742012-09-05 17:12:55 -070023196 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023197}/*WDI_HAL_2_WDI_STATUS*/
23198
23199/*Convert WDI request type into HAL request type*/
23200WPT_STATIC WPT_INLINE tHalHostMsgType
23201WDI_2_HAL_REQ_TYPE
23202(
23203 WDI_RequestEnumType wdiReqType
23204)
23205{
Jeff Johnsone7245742012-09-05 17:12:55 -070023206 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070023207 the chances of getting inlined*/
23208 switch( wdiReqType )
Jeff Johnsone7245742012-09-05 17:12:55 -070023209 {
Jeff Johnson295189b2012-06-20 16:38:30 -070023210 case WDI_START_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023211 return WLAN_HAL_START_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023212 case WDI_STOP_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023213 return WLAN_HAL_STOP_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023214 case WDI_INIT_SCAN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023215 return WLAN_HAL_INIT_SCAN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023216 case WDI_START_SCAN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023217 return WLAN_HAL_START_SCAN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023218 case WDI_END_SCAN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023219 return WLAN_HAL_END_SCAN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023220 case WDI_FINISH_SCAN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023221 return WLAN_HAL_FINISH_SCAN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023222 case WDI_JOIN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023223 return WLAN_HAL_JOIN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023224 case WDI_CONFIG_BSS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023225 return WLAN_HAL_CONFIG_BSS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023226 case WDI_DEL_BSS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023227 return WLAN_HAL_DELETE_BSS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023228 case WDI_POST_ASSOC_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023229 return WLAN_HAL_POST_ASSOC_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023230 case WDI_DEL_STA_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023231 return WLAN_HAL_DELETE_STA_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023232 case WDI_SET_BSS_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023233 return WLAN_HAL_SET_BSSKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023234 case WDI_RMV_BSS_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023235 return WLAN_HAL_RMV_BSSKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023236 case WDI_SET_STA_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023237 return WLAN_HAL_SET_STAKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023238 case WDI_RMV_STA_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023239 return WLAN_HAL_RMV_STAKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023240 case WDI_SET_STA_BCAST_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023241 return WLAN_HAL_SET_BCASTKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023242 case WDI_RMV_STA_BCAST_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023243 //Some conflict in the old code - check this: return WLAN_HAL_RMV_BCASTKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023244 return WLAN_HAL_RMV_STAKEY_REQ;
23245 case WDI_ADD_TS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023246 return WLAN_HAL_ADD_TS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023247 case WDI_DEL_TS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023248 return WLAN_HAL_DEL_TS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023249 case WDI_UPD_EDCA_PRMS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023250 return WLAN_HAL_UPD_EDCA_PARAMS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023251 case WDI_ADD_BA_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023252 return WLAN_HAL_ADD_BA_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023253 case WDI_DEL_BA_REQ:
23254 return WLAN_HAL_DEL_BA_REQ;
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -080023255#ifdef FEATURE_WLAN_ESE
Jeff Johnson295189b2012-06-20 16:38:30 -070023256 case WDI_TSM_STATS_REQ:
23257 return WLAN_HAL_TSM_STATS_REQ;
23258#endif
23259 case WDI_CH_SWITCH_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023260 return WLAN_HAL_CH_SWITCH_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023261 case WDI_CONFIG_STA_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023262 return WLAN_HAL_CONFIG_STA_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023263 case WDI_SET_LINK_ST_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023264 return WLAN_HAL_SET_LINK_ST_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023265 case WDI_GET_STATS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023266 return WLAN_HAL_GET_STATS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023267 case WDI_UPDATE_CFG_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023268 return WLAN_HAL_UPDATE_CFG_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023269 case WDI_ADD_BA_SESSION_REQ:
23270 return WLAN_HAL_ADD_BA_SESSION_REQ;
23271 case WDI_TRIGGER_BA_REQ:
23272 return WLAN_HAL_TRIGGER_BA_REQ;
23273 case WDI_UPD_BCON_PRMS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023274 return WLAN_HAL_UPDATE_BEACON_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023275 case WDI_SND_BCON_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023276 return WLAN_HAL_SEND_BEACON_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023277 case WDI_UPD_PROBE_RSP_TEMPLATE_REQ:
23278 return WLAN_HAL_UPDATE_PROBE_RSP_TEMPLATE_REQ;
23279 case WDI_SET_MAX_TX_POWER_REQ:
23280 return WLAN_HAL_SET_MAX_TX_POWER_REQ;
Arif Hussaina5ebce02013-08-09 15:09:58 -070023281 case WDI_SET_MAX_TX_POWER_PER_BAND_REQ:
23282 return WLAN_HAL_SET_MAX_TX_POWER_PER_BAND_REQ;
schang86c22c42013-03-13 18:41:24 -070023283 case WDI_SET_TX_POWER_REQ:
23284 return WLAN_HAL_SET_TX_POWER_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023285 case WDI_P2P_GO_NOTICE_OF_ABSENCE_REQ:
23286 return WLAN_HAL_SET_P2P_GONOA_REQ;
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053023287#ifdef FEATURE_WLAN_TDLS
23288 case WDI_TDLS_LINK_ESTABLISH_REQ:
23289 return WLAN_HAL_TDLS_LINK_ESTABLISHED_REQ;
23290#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070023291 case WDI_ENTER_IMPS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023292 return WLAN_HAL_ENTER_IMPS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023293 case WDI_EXIT_IMPS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023294 return WLAN_HAL_EXIT_IMPS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023295 case WDI_ENTER_BMPS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023296 return WLAN_HAL_ENTER_BMPS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023297 case WDI_EXIT_BMPS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023298 return WLAN_HAL_EXIT_BMPS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023299 case WDI_ENTER_UAPSD_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023300 return WLAN_HAL_ENTER_UAPSD_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023301 case WDI_EXIT_UAPSD_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023302 return WLAN_HAL_EXIT_UAPSD_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023303 case WDI_SET_UAPSD_PARAM_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023304 return WLAN_HAL_SET_UAPSD_AC_PARAMS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023305 case WDI_UPDATE_UAPSD_PARAM_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023306 return WLAN_HAL_UPDATE_UAPSD_PARAM_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023307 case WDI_CONFIGURE_RXP_FILTER_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023308 return WLAN_HAL_CONFIGURE_RXP_FILTER_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023309 case WDI_SET_BEACON_FILTER_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023310 return WLAN_HAL_ADD_BCN_FILTER_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023311 case WDI_REM_BEACON_FILTER_REQ:
23312 return WLAN_HAL_REM_BCN_FILTER_REQ;
23313 case WDI_SET_RSSI_THRESHOLDS_REQ:
23314 return WLAN_HAL_SET_RSSI_THRESH_REQ;
23315 case WDI_HOST_OFFLOAD_REQ:
23316 return WLAN_HAL_HOST_OFFLOAD_REQ;
23317 case WDI_WOWL_ADD_BC_PTRN_REQ:
23318 return WLAN_HAL_ADD_WOWL_BCAST_PTRN;
23319 case WDI_WOWL_DEL_BC_PTRN_REQ:
23320 return WLAN_HAL_DEL_WOWL_BCAST_PTRN;
23321 case WDI_WOWL_ENTER_REQ:
23322 return WLAN_HAL_ENTER_WOWL_REQ;
23323 case WDI_WOWL_EXIT_REQ:
23324 return WLAN_HAL_EXIT_WOWL_REQ;
23325 case WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ:
23326 return WLAN_HAL_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ;
23327 case WDI_NV_DOWNLOAD_REQ:
23328 return WLAN_HAL_DOWNLOAD_NV_REQ;
23329 case WDI_FLUSH_AC_REQ:
23330 return WLAN_HAL_TL_HAL_FLUSH_AC_REQ;
23331 case WDI_BTAMP_EVENT_REQ:
23332 return WLAN_HAL_SIGNAL_BTAMP_EVENT_REQ;
23333#ifdef WLAN_FEATURE_VOWIFI_11R
23334 case WDI_AGGR_ADD_TS_REQ:
23335 return WLAN_HAL_AGGR_ADD_TS_REQ;
23336#endif /* WLAN_FEATURE_VOWIFI_11R */
Jeff Johnson295189b2012-06-20 16:38:30 -070023337 case WDI_FTM_CMD_REQ:
23338 return WLAN_HAL_PROCESS_PTT_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023339 case WDI_ADD_STA_SELF_REQ:
23340 return WLAN_HAL_ADD_STA_SELF_REQ;
23341 case WDI_DEL_STA_SELF_REQ:
23342 return WLAN_HAL_DEL_STA_SELF_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070023343#ifdef FEATURE_OEM_DATA_SUPPORT
23344 case WDI_START_OEM_DATA_REQ:
23345 return WLAN_HAL_START_OEM_DATA_REQ;
23346#endif /* FEATURE_OEM_DATA_SUPPORT */
Jeff Johnson295189b2012-06-20 16:38:30 -070023347 case WDI_HOST_RESUME_REQ:
23348 return WLAN_HAL_HOST_RESUME_REQ;
23349 case WDI_HOST_SUSPEND_IND:
23350 return WLAN_HAL_HOST_SUSPEND_IND;
Madan Mohan Koyyalamudi01cba042013-01-10 21:56:05 -080023351 case WDI_TRAFFIC_STATS_IND:
23352 return WLAN_HAL_CLASS_B_STATS_IND;
Chet Lanctot186b5732013-03-18 10:26:30 -070023353#ifdef WLAN_FEATURE_11W
23354 case WDI_EXCLUDE_UNENCRYPTED_IND:
23355 return WLAN_HAL_EXCLUDE_UNENCRYPTED_IND;
23356#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070023357 case WDI_KEEP_ALIVE_REQ:
23358 return WLAN_HAL_KEEP_ALIVE_REQ;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070023359#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070023360 case WDI_ROAM_SCAN_OFFLOAD_REQ:
23361 return WLAN_ROAM_SCAN_OFFLOAD_REQ;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070023362#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070023363#ifdef FEATURE_WLAN_SCAN_PNO
23364 case WDI_SET_PREF_NETWORK_REQ:
23365 return WLAN_HAL_SET_PREF_NETWORK_REQ;
23366 case WDI_SET_RSSI_FILTER_REQ:
23367 return WLAN_HAL_SET_RSSI_FILTER_REQ;
23368 case WDI_UPDATE_SCAN_PARAMS_REQ:
23369 return WLAN_HAL_UPDATE_SCAN_PARAM_REQ;
23370#endif // FEATURE_WLAN_SCAN_PNO
23371 case WDI_SET_TX_PER_TRACKING_REQ:
23372 return WLAN_HAL_SET_TX_PER_TRACKING_REQ;
23373#ifdef WLAN_FEATURE_PACKET_FILTERING
23374 case WDI_8023_MULTICAST_LIST_REQ:
23375 return WLAN_HAL_8023_MULTICAST_LIST_REQ;
23376 case WDI_RECEIVE_FILTER_SET_FILTER_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023377 return WLAN_HAL_SET_PACKET_FILTER_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023378 case WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ:
23379 return WLAN_HAL_PACKET_FILTER_MATCH_COUNT_REQ;
23380 case WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ:
23381 return WLAN_HAL_CLEAR_PACKET_FILTER_REQ;
23382#endif // WLAN_FEATURE_PACKET_FILTERING
23383 case WDI_HAL_DUMP_CMD_REQ:
23384 return WLAN_HAL_DUMP_COMMAND_REQ;
23385#ifdef WLAN_FEATURE_GTK_OFFLOAD
23386 case WDI_GTK_OFFLOAD_REQ:
23387 return WLAN_HAL_GTK_OFFLOAD_REQ;
23388 case WDI_GTK_OFFLOAD_GETINFO_REQ:
23389 return WLAN_HAL_GTK_OFFLOAD_GETINFO_REQ;
23390#endif /* WLAN_FEATURE_GTK_OFFLOAD */
23391
23392 case WDI_INIT_SCAN_CON_REQ:
23393 return WLAN_HAL_INIT_SCAN_CON_REQ;
23394 case WDI_SET_POWER_PARAMS_REQ:
23395 return WLAN_HAL_SET_POWER_PARAMS_REQ;
23396 case WDI_SET_TM_LEVEL_REQ:
23397 return WLAN_HAL_SET_THERMAL_MITIGATION_REQ;
23398 case WDI_FEATURE_CAPS_EXCHANGE_REQ:
23399 return WLAN_HAL_FEATURE_CAPS_EXCHANGE_REQ;
Mohit Khanna4a70d262012-09-11 16:30:12 -070023400#ifdef WLAN_FEATURE_11AC
23401 case WDI_UPDATE_VHT_OP_MODE_REQ:
23402 return WLAN_HAL_UPDATE_VHT_OP_MODE_REQ;
23403#endif
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -080023404 case WDI_GET_ROAM_RSSI_REQ:
23405 return WLAN_HAL_GET_ROAM_RSSI_REQ;
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +053023406 case WDI_DHCP_START_IND:
23407 return WLAN_HAL_DHCP_START_IND;
23408 case WDI_DHCP_STOP_IND:
23409 return WLAN_HAL_DHCP_STOP_IND;
Leo Chang9056f462013-08-01 19:21:11 -070023410#ifdef FEATURE_WLAN_LPHB
23411 case WDI_LPHB_CFG_REQ:
23412 return WLAN_HAL_LPHB_CFG_REQ;
23413#endif /* FEATURE_WLAN_LPHB */
Yue Mab9c86f42013-08-14 15:59:08 -070023414 case WDI_ADD_PERIODIC_TX_PATTERN_IND:
23415 return WLAN_HAL_ADD_PERIODIC_TX_PTRN_IND;
23416 case WDI_DEL_PERIODIC_TX_PATTERN_IND:
23417 return WLAN_HAL_DEL_PERIODIC_TX_PTRN_IND;
23418
Rajeev79dbe4c2013-10-05 11:03:42 +053023419#ifdef FEATURE_WLAN_BATCH_SCAN
23420 case WDI_SET_BATCH_SCAN_REQ:
23421 return WLAN_HAL_BATCHSCAN_SET_REQ;
23422 case WDI_STOP_BATCH_SCAN_IND:
23423 return WLAN_HAL_BATCHSCAN_STOP_IND;
23424 case WDI_TRIGGER_BATCH_SCAN_RESULT_IND:
23425 return WLAN_HAL_BATCHSCAN_TRIGGER_RESULT_IND;
23426#endif
Chittajit Mitraf5413a42013-10-18 14:20:08 -070023427 case WDI_RATE_UPDATE_IND:
23428 return WLAN_HAL_RATE_UPDATE_IND;
Sandeep Puligillac3450eb2014-03-06 18:10:57 +053023429 case WDI_START_HT40_OBSS_SCAN_IND:
23430 return WLAN_HAL_START_HT40_OBSS_SCAN_IND;
23431 case WDI_STOP_HT40_OBSS_SCAN_IND:
23432 return WLAN_HAL_STOP_HT40_OBSS_SCAN_IND;
Manjunathappa Prakash86f78ca2014-02-10 18:09:15 -080023433 case WDI_UPDATE_CHAN_REQ:
23434 return WLAN_HAL_UPDATE_CHANNEL_LIST_REQ;
Kalikinkar dhara1e83b772014-02-06 12:59:22 -080023435 case WDI_CH_SWITCH_REQ_V1:
23436 return WLAN_HAL_CH_SWITCH_V1_REQ;
c_hpothu92367912014-05-01 15:18:17 +053023437 case WDI_GET_BCN_MISS_RATE_REQ:
23438 return WLAN_HAL_GET_BCN_MISS_RATE_REQ;
Sunil Duttbd736ed2014-05-26 21:19:41 +053023439
23440#ifdef WLAN_FEATURE_LINK_LAYER_STATS
23441 case WDI_LL_STATS_SET_REQ:
23442 return WLAN_HAL_LL_SET_STATS_REQ;
23443 case WDI_LL_STATS_GET_REQ:
23444 return WLAN_HAL_LL_GET_STATS_REQ;
23445 case WDI_LL_STATS_CLEAR_REQ:
23446 return WLAN_HAL_LL_CLEAR_STATS_REQ;
23447#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070023448 default:
Jeff Johnsone7245742012-09-05 17:12:55 -070023449 return WLAN_HAL_MSG_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070023450 }
Jeff Johnsone7245742012-09-05 17:12:55 -070023451
Jeff Johnson295189b2012-06-20 16:38:30 -070023452}/*WDI_2_HAL_REQ_TYPE*/
23453
23454/*Convert WDI response type into HAL response type*/
23455WPT_STATIC WPT_INLINE WDI_ResponseEnumType
23456HAL_2_WDI_RSP_TYPE
23457(
23458 tHalHostMsgType halMsg
23459)
23460{
Jeff Johnsone7245742012-09-05 17:12:55 -070023461 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070023462 the chances of getting inlined*/
23463 switch( halMsg )
23464 {
23465 case WLAN_HAL_START_RSP:
23466 return WDI_START_RESP;
23467 case WLAN_HAL_STOP_RSP:
23468 return WDI_STOP_RESP;
23469 case WLAN_HAL_INIT_SCAN_RSP:
23470 return WDI_INIT_SCAN_RESP;
23471 case WLAN_HAL_START_SCAN_RSP:
23472 return WDI_START_SCAN_RESP;
23473 case WLAN_HAL_END_SCAN_RSP:
23474 return WDI_END_SCAN_RESP;
23475 case WLAN_HAL_FINISH_SCAN_RSP:
23476 return WDI_FINISH_SCAN_RESP;
23477 case WLAN_HAL_CONFIG_STA_RSP:
23478 return WDI_CONFIG_STA_RESP;
23479 case WLAN_HAL_DELETE_STA_RSP:
23480 return WDI_DEL_STA_RESP;
23481 case WLAN_HAL_CONFIG_BSS_RSP:
23482 return WDI_CONFIG_BSS_RESP;
23483 case WLAN_HAL_DELETE_BSS_RSP:
23484 return WDI_DEL_BSS_RESP;
23485 case WLAN_HAL_JOIN_RSP:
23486 return WDI_JOIN_RESP;
23487 case WLAN_HAL_POST_ASSOC_RSP:
23488 return WDI_POST_ASSOC_RESP;
23489 case WLAN_HAL_SET_BSSKEY_RSP:
23490 return WDI_SET_BSS_KEY_RESP;
23491 case WLAN_HAL_SET_STAKEY_RSP:
23492 return WDI_SET_STA_KEY_RESP;
23493 case WLAN_HAL_RMV_BSSKEY_RSP:
23494 return WDI_RMV_BSS_KEY_RESP;
23495 case WLAN_HAL_RMV_STAKEY_RSP:
23496 return WDI_RMV_STA_KEY_RESP;
23497 case WLAN_HAL_SET_BCASTKEY_RSP:
23498 return WDI_SET_STA_BCAST_KEY_RESP;
23499 //Some conflict in the old code - check this: case WLAN_HAL_RMV_BCASTKEY_RSP:
23500 // return WDI_RMV_STA_BCAST_KEY_RESP;
23501 case WLAN_HAL_ADD_TS_RSP:
23502 return WDI_ADD_TS_RESP;
23503 case WLAN_HAL_DEL_TS_RSP:
23504 return WDI_DEL_TS_RESP;
23505 case WLAN_HAL_UPD_EDCA_PARAMS_RSP:
23506 return WDI_UPD_EDCA_PRMS_RESP;
23507 case WLAN_HAL_ADD_BA_RSP:
23508 return WDI_ADD_BA_RESP;
23509 case WLAN_HAL_DEL_BA_RSP:
23510 return WDI_DEL_BA_RESP;
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -080023511#ifdef FEATURE_WLAN_ESE
Jeff Johnson295189b2012-06-20 16:38:30 -070023512 case WLAN_HAL_TSM_STATS_RSP:
23513 return WDI_TSM_STATS_RESP;
23514#endif
23515 case WLAN_HAL_CH_SWITCH_RSP:
23516 return WDI_CH_SWITCH_RESP;
23517 case WLAN_HAL_SET_LINK_ST_RSP:
23518 return WDI_SET_LINK_ST_RESP;
23519 case WLAN_HAL_GET_STATS_RSP:
23520 return WDI_GET_STATS_RESP;
23521 case WLAN_HAL_UPDATE_CFG_RSP:
23522 return WDI_UPDATE_CFG_RESP;
23523 case WLAN_HAL_ADD_BA_SESSION_RSP:
23524 return WDI_ADD_BA_SESSION_RESP;
23525 case WLAN_HAL_TRIGGER_BA_RSP:
23526 return WDI_TRIGGER_BA_RESP;
23527 case WLAN_HAL_UPDATE_BEACON_RSP:
23528 return WDI_UPD_BCON_PRMS_RESP;
23529 case WLAN_HAL_SEND_BEACON_RSP:
23530 return WDI_SND_BCON_RESP;
23531 case WLAN_HAL_UPDATE_PROBE_RSP_TEMPLATE_RSP:
23532 return WDI_UPD_PROBE_RSP_TEMPLATE_RESP;
23533 /*Indications*/
23534 case WLAN_HAL_RSSI_NOTIFICATION_IND:
23535 return WDI_HAL_RSSI_NOTIFICATION_IND;
23536 case WLAN_HAL_MISSED_BEACON_IND:
23537 return WDI_HAL_MISSED_BEACON_IND;
23538 case WLAN_HAL_UNKNOWN_ADDR2_FRAME_RX_IND:
23539 return WDI_HAL_UNKNOWN_ADDR2_FRAME_RX_IND;
23540 case WLAN_HAL_MIC_FAILURE_IND:
23541 return WDI_HAL_MIC_FAILURE_IND;
23542 case WLAN_HAL_FATAL_ERROR_IND:
23543 return WDI_HAL_FATAL_ERROR_IND;
23544 case WLAN_HAL_DELETE_STA_CONTEXT_IND:
23545 return WDI_HAL_DEL_STA_IND;
23546 case WLAN_HAL_COEX_IND:
23547 return WDI_HAL_COEX_IND;
23548 case WLAN_HAL_OTA_TX_COMPL_IND:
23549 return WDI_HAL_TX_COMPLETE_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070023550 case WLAN_HAL_P2P_NOA_ATTR_IND:
23551 return WDI_HAL_P2P_NOA_ATTR_IND;
Viral Modid86bde22012-12-10 13:09:21 -080023552 case WLAN_HAL_P2P_NOA_START_IND:
23553 return WDI_HAL_P2P_NOA_START_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070023554 case WLAN_HAL_TX_PER_HIT_IND:
23555 return WDI_HAL_TX_PER_HIT_IND;
23556 case WLAN_HAL_SET_MAX_TX_POWER_RSP:
23557 return WDI_SET_MAX_TX_POWER_RESP;
Arif Hussaina5ebce02013-08-09 15:09:58 -070023558 case WLAN_HAL_SET_MAX_TX_POWER_PER_BAND_RSP:
23559 return WDI_SET_MAX_TX_POWER_PER_BAND_RSP;
schang86c22c42013-03-13 18:41:24 -070023560 case WLAN_HAL_SET_TX_POWER_RSP:
23561 return WDI_SET_TX_POWER_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070023562 case WLAN_HAL_SET_P2P_GONOA_RSP:
23563 return WDI_P2P_GO_NOTICE_OF_ABSENCE_RESP;
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053023564#ifdef FEATURE_WLAN_TDLS
23565 case WLAN_HAL_TDLS_LINK_ESTABLISHED_RSP:
23566 return WDI_TDLS_LINK_ESTABLISH_REQ_RESP;
23567 case WLAN_HAL_TDLS_IND:
23568 return WDI_HAL_TDLS_IND;
23569#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070023570 case WLAN_HAL_ENTER_IMPS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070023571 return WDI_ENTER_IMPS_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070023572 case WLAN_HAL_EXIT_IMPS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070023573 return WDI_EXIT_IMPS_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070023574 case WLAN_HAL_ENTER_BMPS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070023575 return WDI_ENTER_BMPS_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070023576 case WLAN_HAL_EXIT_BMPS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070023577 return WDI_EXIT_BMPS_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070023578 case WLAN_HAL_ENTER_UAPSD_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070023579 return WDI_ENTER_UAPSD_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070023580 case WLAN_HAL_EXIT_UAPSD_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070023581 return WDI_EXIT_UAPSD_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070023582 case WLAN_HAL_SET_UAPSD_AC_PARAMS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070023583 return WDI_SET_UAPSD_PARAM_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070023584 case WLAN_HAL_UPDATE_UAPSD_PARAM_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070023585 return WDI_UPDATE_UAPSD_PARAM_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070023586 case WLAN_HAL_CONFIGURE_RXP_FILTER_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070023587 return WDI_CONFIGURE_RXP_FILTER_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070023588 case WLAN_HAL_ADD_BCN_FILTER_RSP:
23589 return WDI_SET_BEACON_FILTER_RESP;
23590 case WLAN_HAL_REM_BCN_FILTER_RSP:
23591 return WDI_REM_BEACON_FILTER_RESP;
23592 case WLAN_HAL_SET_RSSI_THRESH_RSP:
23593 return WDI_SET_RSSI_THRESHOLDS_RESP;
23594 case WLAN_HAL_HOST_OFFLOAD_RSP:
23595 return WDI_HOST_OFFLOAD_RESP;
23596 case WLAN_HAL_ADD_WOWL_BCAST_PTRN_RSP:
23597 return WDI_WOWL_ADD_BC_PTRN_RESP;
23598 case WLAN_HAL_DEL_WOWL_BCAST_PTRN_RSP:
23599 return WDI_WOWL_DEL_BC_PTRN_RESP;
23600 case WLAN_HAL_ENTER_WOWL_RSP:
23601 return WDI_WOWL_ENTER_RESP;
23602 case WLAN_HAL_EXIT_WOWL_RSP:
23603 return WDI_WOWL_EXIT_RESP;
23604 case WLAN_HAL_CONFIGURE_APPS_CPU_WAKEUP_STATE_RSP:
23605 return WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_RESP;
23606 case WLAN_HAL_DOWNLOAD_NV_RSP:
23607 return WDI_NV_DOWNLOAD_RESP;
23608 case WLAN_HAL_TL_HAL_FLUSH_AC_RSP:
23609 return WDI_FLUSH_AC_RESP;
23610 case WLAN_HAL_SIGNAL_BTAMP_EVENT_RSP:
23611 return WDI_BTAMP_EVENT_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070023612 case WLAN_HAL_PROCESS_PTT_RSP:
23613 return WDI_FTM_CMD_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070023614 case WLAN_HAL_ADD_STA_SELF_RSP:
23615 return WDI_ADD_STA_SELF_RESP;
23616case WLAN_HAL_DEL_STA_SELF_RSP:
23617 return WDI_DEL_STA_SELF_RESP;
Jeff Johnsone7245742012-09-05 17:12:55 -070023618#ifdef FEATURE_OEM_DATA_SUPPORT
23619 case WLAN_HAL_START_OEM_DATA_RSP:
23620 return WDI_START_OEM_DATA_RESP;
23621#endif /* FEATURE_OEM_DATA_SUPPORT */
Jeff Johnson295189b2012-06-20 16:38:30 -070023622 case WLAN_HAL_HOST_RESUME_RSP:
23623 return WDI_HOST_RESUME_RESP;
23624 case WLAN_HAL_KEEP_ALIVE_RSP:
23625 return WDI_KEEP_ALIVE_RESP;
23626#ifdef FEATURE_WLAN_SCAN_PNO
23627 case WLAN_HAL_SET_PREF_NETWORK_RSP:
23628 return WDI_SET_PREF_NETWORK_RESP;
23629 case WLAN_HAL_SET_RSSI_FILTER_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070023630 return WDI_SET_RSSI_FILTER_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070023631 case WLAN_HAL_UPDATE_SCAN_PARAM_RSP:
23632 return WDI_UPDATE_SCAN_PARAMS_RESP;
23633 case WLAN_HAL_PREF_NETW_FOUND_IND:
23634 return WDI_HAL_PREF_NETWORK_FOUND_IND;
23635#endif // FEATURE_WLAN_SCAN_PNO
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070023636#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070023637 case WLAN_ROAM_SCAN_OFFLOAD_RSP:
23638 return WDI_ROAM_SCAN_OFFLOAD_RESP;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070023639#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070023640 case WLAN_HAL_SET_TX_PER_TRACKING_RSP:
23641 return WDI_SET_TX_PER_TRACKING_RESP;
23642#ifdef WLAN_FEATURE_PACKET_FILTERING
23643 case WLAN_HAL_8023_MULTICAST_LIST_RSP:
23644 return WDI_8023_MULTICAST_LIST_RESP;
23645 case WLAN_HAL_SET_PACKET_FILTER_RSP:
23646 return WDI_RECEIVE_FILTER_SET_FILTER_RESP;
23647 case WLAN_HAL_PACKET_FILTER_MATCH_COUNT_RSP:
23648 return WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_RESP;
23649 case WLAN_HAL_CLEAR_PACKET_FILTER_RSP:
23650 return WDI_RECEIVE_FILTER_CLEAR_FILTER_RESP;
23651#endif // WLAN_FEATURE_PACKET_FILTERING
23652
23653 case WLAN_HAL_DUMP_COMMAND_RSP:
23654 return WDI_HAL_DUMP_CMD_RESP;
23655 case WLAN_HAL_SET_POWER_PARAMS_RSP:
23656 return WDI_SET_POWER_PARAMS_RESP;
23657#ifdef WLAN_FEATURE_VOWIFI_11R
23658 case WLAN_HAL_AGGR_ADD_TS_RSP:
23659 return WDI_AGGR_ADD_TS_RESP;
23660#endif
23661
23662#ifdef WLAN_FEATURE_GTK_OFFLOAD
23663 case WLAN_HAL_GTK_OFFLOAD_RSP:
23664 return WDI_GTK_OFFLOAD_RESP;
23665 case WLAN_HAL_GTK_OFFLOAD_GETINFO_RSP:
23666 return WDI_GTK_OFFLOAD_GETINFO_RESP;
23667#endif /* WLAN_FEATURE_GTK_OFFLOAD */
23668#ifdef WLAN_WAKEUP_EVENTS
23669 case WLAN_HAL_WAKE_REASON_IND:
23670 return WDI_HAL_WAKE_REASON_IND;
23671#endif // WLAN_WAKEUP_EVENTS
23672
23673 case WLAN_HAL_SET_THERMAL_MITIGATION_RSP:
23674 return WDI_SET_TM_LEVEL_RESP;
23675 case WLAN_HAL_FEATURE_CAPS_EXCHANGE_RSP:
23676 return WDI_FEATURE_CAPS_EXCHANGE_RESP;
Mohit Khanna4a70d262012-09-11 16:30:12 -070023677#ifdef WLAN_FEATURE_11AC
23678 case WLAN_HAL_UPDATE_VHT_OP_MODE_RSP:
23679 return WDI_UPDATE_VHT_OP_MODE_RESP;
23680#endif
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -080023681#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_ESE || defined(FEATURE_WLAN_LFR)
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -080023682 case WLAN_HAL_GET_ROAM_RSSI_RSP:
23683 return WDI_GET_ROAM_RSSI_RESP;
23684#endif
Ravi Joshid2ca7c42013-07-23 08:37:49 -070023685
Leo Chang9056f462013-08-01 19:21:11 -070023686#ifdef FEATURE_WLAN_LPHB
23687 case WLAN_HAL_LPHB_IND:
Leo Changd9df8aa2013-09-26 13:32:26 -070023688 return WDI_HAL_LPHB_IND;
Leo Chang9056f462013-08-01 19:21:11 -070023689 case WLAN_HAL_LPHB_CFG_RSP:
23690 return WDI_LPHB_CFG_RESP;
23691#endif /* FEATURE_WLAN_LPHB */
Ravi Joshid2ca7c42013-07-23 08:37:49 -070023692
23693 case WLAN_HAL_IBSS_PEER_INACTIVITY_IND:
23694 return WDI_HAL_IBSS_PEER_INACTIVITY_IND;
Yue Mab9c86f42013-08-14 15:59:08 -070023695 case WLAN_HAL_PERIODIC_TX_PTRN_FW_IND:
23696 return WDI_HAL_PERIODIC_TX_PTRN_FW_IND;
Ravi Joshid2ca7c42013-07-23 08:37:49 -070023697
Rajeev79dbe4c2013-10-05 11:03:42 +053023698#ifdef FEATURE_WLAN_BATCH_SCAN
23699 case WLAN_HAL_BATCHSCAN_SET_RSP:
23700 return WDI_SET_BATCH_SCAN_RESP;
23701 case WLAN_HAL_BATCHSCAN_RESULT_IND:
23702 return WDI_BATCHSCAN_RESULT_IND;
23703#endif // FEATURE_WLAN_BATCH_SCAN
23704
Leo Chang0b0e45a2013-12-15 15:18:55 -080023705#ifdef FEATURE_WLAN_CH_AVOID
23706 case WLAN_HAL_AVOID_FREQ_RANGE_IND:
23707 return WDI_HAL_CH_AVOID_IND;
23708#endif /* FEATURE_WLAN_CH_AVOID */
Manjunathappa Prakash86f78ca2014-02-10 18:09:15 -080023709 case WLAN_HAL_UPDATE_CHANNEL_LIST_RSP:
23710 return WDI_UPDATE_CHAN_RESP;
c_hpothu86041002014-04-14 19:06:51 +053023711 case WLAN_HAL_PRINT_REG_INFO_IND:
23712 return WDI_PRINT_REG_INFO_IND;
c_hpothu92367912014-05-01 15:18:17 +053023713 case WLAN_HAL_GET_BCN_MISS_RATE_RSP:
23714 return WDI_GET_BCN_MISS_RATE_RSP;
Sunil Duttbd736ed2014-05-26 21:19:41 +053023715#ifdef WLAN_FEATURE_LINK_LAYER_STATS
23716 case WLAN_HAL_LL_SET_STATS_RSP:
23717 return WDI_LL_STATS_SET_RSP;
23718 case WLAN_HAL_LL_GET_STATS_RSP:
23719 return WDI_LL_STATS_GET_RSP;
23720 case WLAN_HAL_LL_CLEAR_STATS_RSP:
23721 return WDI_LL_STATS_CLEAR_RSP;
23722 case WLAN_HAL_LL_NOTIFY_STATS:
23723 return WDI_HAL_LL_STATS_RESULTS_IND;
23724#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070023725 default:
Jeff Johnsone7245742012-09-05 17:12:55 -070023726 return eDRIVER_TYPE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070023727 }
23728
23729}/*HAL_2_WDI_RSP_TYPE*/
23730
23731
23732/*Convert WDI driver type into HAL driver type*/
23733WPT_STATIC WPT_INLINE tDriverType
23734WDI_2_HAL_DRV_TYPE
23735(
23736 WDI_DriverType wdiDriverType
23737)
23738{
Jeff Johnsone7245742012-09-05 17:12:55 -070023739 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070023740 the chances of getting inlined*/
23741 switch( wdiDriverType )
23742 {
23743 case WDI_DRIVER_TYPE_PRODUCTION:
23744 return eDRIVER_TYPE_PRODUCTION;
23745 case WDI_DRIVER_TYPE_MFG:
23746 return eDRIVER_TYPE_MFG;
23747 case WDI_DRIVER_TYPE_DVT:
23748 return eDRIVER_TYPE_DVT;
23749 }
23750
Jeff Johnsone7245742012-09-05 17:12:55 -070023751 return eDRIVER_TYPE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070023752}/*WDI_2_HAL_DRV_TYPE*/
23753
23754
23755/*Convert WDI stop reason into HAL stop reason*/
23756WPT_STATIC WPT_INLINE tHalStopType
23757WDI_2_HAL_STOP_REASON
23758(
23759 WDI_StopType wdiDriverType
23760)
23761{
Jeff Johnsone7245742012-09-05 17:12:55 -070023762 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070023763 the chances of getting inlined*/
23764 switch( wdiDriverType )
23765 {
23766 case WDI_STOP_TYPE_SYS_RESET:
23767 return HAL_STOP_TYPE_SYS_RESET;
Yue Mad8cac142013-03-28 11:33:46 -070023768 case WDI_STOP_TYPE_SYS_DEEP_SLEEP:
23769 return HAL_STOP_TYPE_SYS_DEEP_SLEEP;
Jeff Johnson295189b2012-06-20 16:38:30 -070023770 case WDI_STOP_TYPE_RF_KILL:
23771 return HAL_STOP_TYPE_RF_KILL;
23772 }
23773
Jeff Johnsone7245742012-09-05 17:12:55 -070023774 return HAL_STOP_TYPE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070023775}/*WDI_2_HAL_STOP_REASON*/
23776
23777
23778/*Convert WDI scan mode type into HAL scan mode type*/
23779WPT_STATIC WPT_INLINE eHalSysMode
23780WDI_2_HAL_SCAN_MODE
23781(
23782 WDI_ScanMode wdiScanMode
23783)
23784{
Jeff Johnsone7245742012-09-05 17:12:55 -070023785 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070023786 the chances of getting inlined*/
23787 switch( wdiScanMode )
23788 {
23789 case WDI_SCAN_MODE_NORMAL:
23790 return eHAL_SYS_MODE_NORMAL;
23791 case WDI_SCAN_MODE_LEARN:
23792 return eHAL_SYS_MODE_LEARN;
23793 case WDI_SCAN_MODE_SCAN:
23794 return eHAL_SYS_MODE_SCAN;
23795 case WDI_SCAN_MODE_PROMISC:
23796 return eHAL_SYS_MODE_PROMISC;
23797 case WDI_SCAN_MODE_SUSPEND_LINK:
23798 return eHAL_SYS_MODE_SUSPEND_LINK;
Madan Mohan Koyyalamudi9b876782012-10-11 16:22:51 -070023799 case WDI_SCAN_MODE_ROAM_SCAN:
23800 return eHAL_SYS_MODE_ROAM_SCAN;
23801 case WDI_SCAN_MODE_ROAM_SUSPEND_LINK:
23802 return eHAL_SYS_MODE_ROAM_SUSPEND_LINK;
Jeff Johnson295189b2012-06-20 16:38:30 -070023803 }
23804
Jeff Johnsone7245742012-09-05 17:12:55 -070023805 return eHAL_SYS_MODE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070023806}/*WDI_2_HAL_SCAN_MODE*/
23807
23808/*Convert WDI sec ch offset into HAL sec ch offset type*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023809WPT_STATIC WPT_INLINE ePhyChanBondState
Jeff Johnson295189b2012-06-20 16:38:30 -070023810WDI_2_HAL_SEC_CH_OFFSET
23811(
23812 WDI_HTSecondaryChannelOffset wdiSecChOffset
23813)
23814{
Jeff Johnsone7245742012-09-05 17:12:55 -070023815 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070023816 the chances of getting inlined*/
23817 switch( wdiSecChOffset )
23818 {
23819 case WDI_SECONDARY_CHANNEL_OFFSET_NONE:
Jeff Johnsone7245742012-09-05 17:12:55 -070023820 return PHY_SINGLE_CHANNEL_CENTERED;
Jeff Johnson295189b2012-06-20 16:38:30 -070023821 case WDI_SECONDARY_CHANNEL_OFFSET_UP:
Jeff Johnsone7245742012-09-05 17:12:55 -070023822 return PHY_DOUBLE_CHANNEL_LOW_PRIMARY;
Jeff Johnson295189b2012-06-20 16:38:30 -070023823 case WDI_SECONDARY_CHANNEL_OFFSET_DOWN:
Jeff Johnsone7245742012-09-05 17:12:55 -070023824 return PHY_DOUBLE_CHANNEL_HIGH_PRIMARY;
23825#ifdef WLAN_FEATURE_11AC
23826 case WDI_CHANNEL_20MHZ_LOW_40MHZ_CENTERED:
23827 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_CENTERED;
23828 case WDI_CHANNEL_20MHZ_CENTERED_40MHZ_CENTERED:
23829 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_CENTERED;
23830 case WDI_CHANNEL_20MHZ_HIGH_40MHZ_CENTERED:
23831 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_CENTERED;
23832 case WDI_CHANNEL_20MHZ_LOW_40MHZ_LOW:
23833 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_LOW;
23834 case WDI_CHANNEL_20MHZ_HIGH_40MHZ_LOW:
23835 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_LOW;
23836 case WDI_CHANNEL_20MHZ_LOW_40MHZ_HIGH:
23837 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_HIGH;
23838 case WDI_CHANNEL_20MHZ_HIGH_40MHZ_HIGH:
23839 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_HIGH;
23840#endif
23841 default:
23842 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070023843 }
23844
Jeff Johnsone7245742012-09-05 17:12:55 -070023845 return PHY_CHANNEL_BONDING_STATE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070023846}/*WDI_2_HAL_SEC_CH_OFFSET*/
23847
23848/*Convert WDI BSS type into HAL BSS type*/
23849WPT_STATIC WPT_INLINE tSirBssType
23850WDI_2_HAL_BSS_TYPE
23851(
23852 WDI_BssType wdiBSSType
23853)
23854{
Jeff Johnsone7245742012-09-05 17:12:55 -070023855 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070023856 the chances of getting inlined*/
23857 switch( wdiBSSType )
23858 {
23859 case WDI_INFRASTRUCTURE_MODE:
23860 return eSIR_INFRASTRUCTURE_MODE;
23861 case WDI_INFRA_AP_MODE:
23862 return eSIR_INFRA_AP_MODE;
23863 case WDI_IBSS_MODE:
23864 return eSIR_IBSS_MODE;
23865 case WDI_BTAMP_STA_MODE:
23866 return eSIR_BTAMP_STA_MODE;
23867 case WDI_BTAMP_AP_MODE:
Jeff Johnsone7245742012-09-05 17:12:55 -070023868 return eSIR_BTAMP_AP_MODE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023869 case WDI_BSS_AUTO_MODE:
23870 return eSIR_AUTO_MODE;
23871 }
23872
Jeff Johnsone7245742012-09-05 17:12:55 -070023873 return eSIR_DONOT_USE_BSS_TYPE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023874}/*WDI_2_HAL_BSS_TYPE*/
23875
23876/*Convert WDI NW type into HAL NW type*/
23877WPT_STATIC WPT_INLINE tSirNwType
23878WDI_2_HAL_NW_TYPE
23879(
23880 WDI_NwType wdiNWType
23881)
23882{
Jeff Johnsone7245742012-09-05 17:12:55 -070023883 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070023884 the chances of getting inlined*/
23885 switch( wdiNWType )
23886 {
23887 case WDI_11A_NW_TYPE:
23888 return eSIR_11A_NW_TYPE;
23889 case WDI_11B_NW_TYPE:
23890 return eSIR_11B_NW_TYPE;
23891 case WDI_11G_NW_TYPE:
23892 return eSIR_11G_NW_TYPE;
23893 case WDI_11N_NW_TYPE:
23894 return eSIR_11N_NW_TYPE;
23895 }
23896
Jeff Johnsone7245742012-09-05 17:12:55 -070023897 return eSIR_DONOT_USE_NW_TYPE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023898}/*WDI_2_HAL_NW_TYPE*/
23899
23900/*Convert WDI chanel bonding type into HAL cb type*/
23901WPT_STATIC WPT_INLINE ePhyChanBondState
23902WDI_2_HAL_CB_STATE
23903(
23904 WDI_PhyChanBondState wdiCbState
23905)
23906{
Jeff Johnsone7245742012-09-05 17:12:55 -070023907 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070023908 the chances of getting inlined*/
23909 switch ( wdiCbState )
23910 {
23911 case WDI_PHY_SINGLE_CHANNEL_CENTERED:
23912 return PHY_SINGLE_CHANNEL_CENTERED;
23913 case WDI_PHY_DOUBLE_CHANNEL_LOW_PRIMARY:
23914 return PHY_DOUBLE_CHANNEL_LOW_PRIMARY;
23915 case WDI_PHY_DOUBLE_CHANNEL_CENTERED:
23916 return PHY_DOUBLE_CHANNEL_CENTERED;
23917 case WDI_PHY_DOUBLE_CHANNEL_HIGH_PRIMARY:
23918 return PHY_DOUBLE_CHANNEL_HIGH_PRIMARY;
Jeff Johnsone7245742012-09-05 17:12:55 -070023919#ifdef WLAN_FEATURE_11AC
23920 case WDI_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_CENTERED:
23921 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_CENTERED;
23922 case WDI_QUADRUPLE_CHANNEL_20MHZ_CENTERED_40MHZ_CENTERED:
23923 return PHY_QUADRUPLE_CHANNEL_20MHZ_CENTERED_40MHZ_CENTERED;
23924 case WDI_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_CENTERED:
23925 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_CENTERED;
23926 case WDI_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_LOW:
23927 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_LOW;
23928 case WDI_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_LOW:
23929 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_LOW;
23930 case WDI_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_HIGH:
23931 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_HIGH;
23932 case WDI_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_HIGH:
23933 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_HIGH;
23934#endif
23935 case WDI_MAX_CB_STATE:
23936 default:
23937 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070023938 }
Jeff Johnsone7245742012-09-05 17:12:55 -070023939
Jeff Johnson295189b2012-06-20 16:38:30 -070023940 return PHY_CHANNEL_BONDING_STATE_MAX;
23941}/*WDI_2_HAL_CB_STATE*/
23942
23943/*Convert WDI chanel bonding type into HAL cb type*/
23944WPT_STATIC WPT_INLINE tSirMacHTOperatingMode
23945WDI_2_HAL_HT_OPER_MODE
23946(
23947 WDI_HTOperatingMode wdiHTOperMode
23948)
23949{
Jeff Johnsone7245742012-09-05 17:12:55 -070023950 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070023951 the chances of getting inlined*/
23952 switch ( wdiHTOperMode )
23953 {
23954 case WDI_HT_OP_MODE_PURE:
23955 return eSIR_HT_OP_MODE_PURE;
23956 case WDI_HT_OP_MODE_OVERLAP_LEGACY:
23957 return eSIR_HT_OP_MODE_OVERLAP_LEGACY;
23958 case WDI_HT_OP_MODE_NO_LEGACY_20MHZ_HT:
23959 return eSIR_HT_OP_MODE_NO_LEGACY_20MHZ_HT;
23960 case WDI_HT_OP_MODE_MIXED:
23961 return eSIR_HT_OP_MODE_MIXED;
23962 }
Jeff Johnsone7245742012-09-05 17:12:55 -070023963
Jeff Johnson295189b2012-06-20 16:38:30 -070023964 return eSIR_HT_OP_MODE_MAX;
23965}/*WDI_2_HAL_HT_OPER_MODE*/
23966
23967/*Convert WDI mimo PS type into HAL mimo PS type*/
23968WPT_STATIC WPT_INLINE tSirMacHTMIMOPowerSaveState
23969WDI_2_HAL_MIMO_PS
23970(
23971 WDI_HTMIMOPowerSaveState wdiHTOperMode
23972)
23973{
Jeff Johnsone7245742012-09-05 17:12:55 -070023974 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070023975 the chances of getting inlined*/
23976 switch ( wdiHTOperMode )
23977 {
23978 case WDI_HT_MIMO_PS_STATIC:
23979 return eSIR_HT_MIMO_PS_STATIC;
23980 case WDI_HT_MIMO_PS_DYNAMIC:
23981 return eSIR_HT_MIMO_PS_DYNAMIC;
23982 case WDI_HT_MIMO_PS_NA:
23983 return eSIR_HT_MIMO_PS_NA;
23984 case WDI_HT_MIMO_PS_NO_LIMIT:
23985 return eSIR_HT_MIMO_PS_NO_LIMIT;
23986 }
Jeff Johnsone7245742012-09-05 17:12:55 -070023987
Jeff Johnson295189b2012-06-20 16:38:30 -070023988 return eSIR_HT_MIMO_PS_MAX;
23989}/*WDI_2_HAL_MIMO_PS*/
23990
23991/*Convert WDI ENC type into HAL ENC type*/
23992WPT_STATIC WPT_INLINE tAniEdType
23993WDI_2_HAL_ENC_TYPE
23994(
23995 WDI_EncryptType wdiEncType
23996)
23997{
Jeff Johnsone7245742012-09-05 17:12:55 -070023998 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070023999 the chances of getting inlined*/
24000 switch ( wdiEncType )
24001 {
24002 case WDI_ENCR_NONE:
24003 return eSIR_ED_NONE;
24004
24005 case WDI_ENCR_WEP40:
24006 return eSIR_ED_WEP40;
24007
24008 case WDI_ENCR_WEP104:
24009 return eSIR_ED_WEP104;
24010
24011 case WDI_ENCR_TKIP:
24012 return eSIR_ED_TKIP;
24013
24014 case WDI_ENCR_CCMP:
24015 return eSIR_ED_CCMP;
24016
24017 case WDI_ENCR_AES_128_CMAC:
24018 return eSIR_ED_AES_128_CMAC;
24019#if defined(FEATURE_WLAN_WAPI)
24020 case WDI_ENCR_WPI:
24021 return eSIR_ED_WPI;
24022#endif
24023 default:
24024 return eSIR_ED_NOT_IMPLEMENTED;
24025 }
24026
24027}/*WDI_2_HAL_ENC_TYPE*/
24028
24029/*Convert WDI WEP type into HAL WEP type*/
24030WPT_STATIC WPT_INLINE tAniWepType
24031WDI_2_HAL_WEP_TYPE
24032(
24033 WDI_WepType wdiWEPType
24034)
24035{
Jeff Johnsone7245742012-09-05 17:12:55 -070024036 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070024037 the chances of getting inlined*/
24038 switch ( wdiWEPType )
24039 {
24040 case WDI_WEP_STATIC:
24041 return eSIR_WEP_STATIC;
24042
24043 case WDI_WEP_DYNAMIC:
24044 return eSIR_WEP_DYNAMIC;
24045 }
Jeff Johnsone7245742012-09-05 17:12:55 -070024046
Jeff Johnson295189b2012-06-20 16:38:30 -070024047 return eSIR_WEP_MAX;
24048}/*WDI_2_HAL_WEP_TYPE*/
24049
24050WPT_STATIC WPT_INLINE tSirLinkState
24051WDI_2_HAL_LINK_STATE
24052(
24053 WDI_LinkStateType wdiLinkState
24054)
24055{
Jeff Johnsone7245742012-09-05 17:12:55 -070024056 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070024057 the chances of getting inlined*/
24058 switch ( wdiLinkState )
24059 {
24060 case WDI_LINK_IDLE_STATE:
24061 return eSIR_LINK_IDLE_STATE;
24062
24063 case WDI_LINK_PREASSOC_STATE:
24064 return eSIR_LINK_PREASSOC_STATE;
24065
24066 case WDI_LINK_POSTASSOC_STATE:
24067 return eSIR_LINK_POSTASSOC_STATE;
24068
24069 case WDI_LINK_AP_STATE:
24070 return eSIR_LINK_AP_STATE;
24071
24072 case WDI_LINK_IBSS_STATE:
24073 return eSIR_LINK_IBSS_STATE;
24074
24075 case WDI_LINK_BTAMP_PREASSOC_STATE:
24076 return eSIR_LINK_BTAMP_PREASSOC_STATE;
24077
24078 case WDI_LINK_BTAMP_POSTASSOC_STATE:
24079 return eSIR_LINK_BTAMP_POSTASSOC_STATE;
24080
24081 case WDI_LINK_BTAMP_AP_STATE:
24082 return eSIR_LINK_BTAMP_AP_STATE;
24083
24084 case WDI_LINK_BTAMP_STA_STATE:
24085 return eSIR_LINK_BTAMP_STA_STATE;
24086
24087 case WDI_LINK_LEARN_STATE:
24088 return eSIR_LINK_LEARN_STATE;
24089
24090 case WDI_LINK_SCAN_STATE:
24091 return eSIR_LINK_SCAN_STATE;
24092
24093 case WDI_LINK_FINISH_SCAN_STATE:
24094 return eSIR_LINK_FINISH_SCAN_STATE;
24095
24096 case WDI_LINK_INIT_CAL_STATE:
24097 return eSIR_LINK_INIT_CAL_STATE;
24098
24099 case WDI_LINK_FINISH_CAL_STATE:
24100 return eSIR_LINK_FINISH_CAL_STATE;
24101
Jeff Johnson295189b2012-06-20 16:38:30 -070024102 case WDI_LINK_LISTEN_STATE:
24103 return eSIR_LINK_LISTEN_STATE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024104
Gopichand Nakkala924e4552013-05-08 19:18:14 +053024105 case WDI_LINK_SEND_ACTION_STATE:
24106 return eSIR_LINK_SEND_ACTION_STATE;
24107
Jeff Johnson295189b2012-06-20 16:38:30 -070024108 default:
24109 return eSIR_LINK_MAX;
Jeff Johnsone7245742012-09-05 17:12:55 -070024110 }
Jeff Johnson295189b2012-06-20 16:38:30 -070024111}
24112
Jeff Johnsone7245742012-09-05 17:12:55 -070024113/*Translate a STA Context from WDI into HAL*/
24114WPT_STATIC WPT_INLINE
Jeff Johnson295189b2012-06-20 16:38:30 -070024115void
24116WDI_CopyWDIStaCtxToHALStaCtx
Jeff Johnsone7245742012-09-05 17:12:55 -070024117(
Jeff Johnson295189b2012-06-20 16:38:30 -070024118 tConfigStaParams* phalConfigSta,
24119 WDI_ConfigStaReqInfoType* pwdiConfigSta
24120)
24121{
24122 wpt_uint8 i;
Jeff Johnsone7245742012-09-05 17:12:55 -070024123#ifdef WLAN_FEATURE_11AC
24124 /* Get the Version 1 Handler */
24125 tConfigStaParams_V1* phalConfigSta_V1 = NULL;
24126 if (WDI_getFwWlanFeatCaps(DOT11AC))
24127 {
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070024128 phalConfigSta_V1 = (tConfigStaParams_V1*)phalConfigSta;
Jeff Johnsone7245742012-09-05 17:12:55 -070024129 }
24130#endif
24131 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070024132 the chances of getting inlined*/
24133
Jeff Johnsone7245742012-09-05 17:12:55 -070024134 wpalMemoryCopy(phalConfigSta->bssId,
24135 pwdiConfigSta->macBSSID, WDI_MAC_ADDR_LEN);
24136
24137 wpalMemoryCopy(phalConfigSta->staMac,
24138 pwdiConfigSta->macSTA, WDI_MAC_ADDR_LEN);
Jeff Johnson295189b2012-06-20 16:38:30 -070024139
24140 phalConfigSta->assocId = pwdiConfigSta->usAssocId;
24141 phalConfigSta->staType = pwdiConfigSta->wdiSTAType;
24142 phalConfigSta->shortPreambleSupported = pwdiConfigSta->ucShortPreambleSupported;
24143 phalConfigSta->listenInterval = pwdiConfigSta->usListenInterval;
24144 phalConfigSta->wmmEnabled = pwdiConfigSta->ucWMMEnabled;
24145 phalConfigSta->htCapable = pwdiConfigSta->ucHTCapable;
24146 phalConfigSta->txChannelWidthSet = pwdiConfigSta->ucTXChannelWidthSet;
24147 phalConfigSta->rifsMode = pwdiConfigSta->ucRIFSMode;
24148 phalConfigSta->lsigTxopProtection = pwdiConfigSta->ucLSIGTxopProtection;
24149 phalConfigSta->maxAmpduSize = pwdiConfigSta->ucMaxAmpduSize;
24150 phalConfigSta->maxAmpduDensity = pwdiConfigSta->ucMaxAmpduDensity;
24151 phalConfigSta->maxAmsduSize = pwdiConfigSta->ucMaxAmsduSize;
24152 phalConfigSta->fShortGI40Mhz = pwdiConfigSta->ucShortGI40Mhz;
24153 phalConfigSta->fShortGI20Mhz = pwdiConfigSta->ucShortGI20Mhz;
24154 phalConfigSta->rmfEnabled = pwdiConfigSta->ucRMFEnabled;
24155 phalConfigSta->action = pwdiConfigSta->wdiAction;
24156 phalConfigSta->uAPSD = pwdiConfigSta->ucAPSD;
24157 phalConfigSta->maxSPLen = pwdiConfigSta->ucMaxSPLen;
24158 phalConfigSta->greenFieldCapable = pwdiConfigSta->ucGreenFieldCapable;
24159 phalConfigSta->delayedBASupport = pwdiConfigSta->ucDelayedBASupport;
24160 phalConfigSta->us32MaxAmpduDuration = pwdiConfigSta->us32MaxAmpduDuratio;
24161 phalConfigSta->fDsssCckMode40Mhz = pwdiConfigSta->ucDsssCckMode40Mhz;
24162 phalConfigSta->encryptType = pwdiConfigSta->ucEncryptType;
Jeff Johnsone7245742012-09-05 17:12:55 -070024163
Jeff Johnson295189b2012-06-20 16:38:30 -070024164 phalConfigSta->mimoPS = WDI_2_HAL_MIMO_PS(pwdiConfigSta->wdiMIMOPS);
24165
Jeff Johnsone7245742012-09-05 17:12:55 -070024166 phalConfigSta->supportedRates.opRateMode =
Jeff Johnson295189b2012-06-20 16:38:30 -070024167 pwdiConfigSta->wdiSupportedRates.opRateMode;
24168 for(i = 0; i < SIR_NUM_11B_RATES; i ++)
24169 {
Jeff Johnsone7245742012-09-05 17:12:55 -070024170 phalConfigSta->supportedRates.llbRates[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -070024171 pwdiConfigSta->wdiSupportedRates.llbRates[i];
24172 }
24173 for(i = 0; i < SIR_NUM_11A_RATES; i ++)
24174 {
Jeff Johnsone7245742012-09-05 17:12:55 -070024175 phalConfigSta->supportedRates.llaRates[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -070024176 pwdiConfigSta->wdiSupportedRates.llaRates[i];
24177 }
24178 for(i = 0; i < SIR_NUM_POLARIS_RATES; i ++)
24179 {
24180 phalConfigSta->supportedRates.aniLegacyRates[i] =
24181 pwdiConfigSta->wdiSupportedRates.aLegacyRates[i];
24182 }
Jeff Johnsone7245742012-09-05 17:12:55 -070024183 phalConfigSta->supportedRates.aniEnhancedRateBitmap =
Jeff Johnson295189b2012-06-20 16:38:30 -070024184 pwdiConfigSta->wdiSupportedRates.uEnhancedRateBitmap;
24185 for(i = 0; i < SIR_MAC_MAX_SUPPORTED_MCS_SET; i ++)
24186 {
Jeff Johnsone7245742012-09-05 17:12:55 -070024187 phalConfigSta->supportedRates.supportedMCSSet[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -070024188 pwdiConfigSta->wdiSupportedRates.aSupportedMCSSet[i];
24189 }
24190 phalConfigSta->supportedRates.rxHighestDataRate =
24191 pwdiConfigSta->wdiSupportedRates.aRxHighestDataRate;
24192
Jeff Johnsone7245742012-09-05 17:12:55 -070024193#ifdef WLAN_FEATURE_11AC
24194 if(phalConfigSta_V1 != NULL)
24195 {
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070024196 phalConfigSta_V1->supportedRates.vhtRxMCSMap = pwdiConfigSta->wdiSupportedRates.vhtRxMCSMap;
24197 phalConfigSta_V1->supportedRates.vhtRxHighestDataRate = pwdiConfigSta->wdiSupportedRates.vhtRxHighestDataRate;
24198 phalConfigSta_V1->supportedRates.vhtTxMCSMap = pwdiConfigSta->wdiSupportedRates.vhtTxMCSMap;
24199 phalConfigSta_V1->supportedRates.vhtTxHighestDataRate = pwdiConfigSta->wdiSupportedRates.vhtTxHighestDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070024200 }
24201#endif
24202
Jeff Johnson295189b2012-06-20 16:38:30 -070024203 phalConfigSta->p2pCapableSta = pwdiConfigSta->ucP2pCapableSta ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024204
Jeff Johnsone7245742012-09-05 17:12:55 -070024205#ifdef WLAN_FEATURE_11AC
24206 if(phalConfigSta_V1 != NULL)
24207 {
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070024208 phalConfigSta_V1->vhtCapable = pwdiConfigSta->ucVhtCapableSta;
24209 phalConfigSta_V1->vhtTxChannelWidthSet = pwdiConfigSta->ucVhtTxChannelWidthSet;
Shailender Karmuchi08f87c22013-01-17 12:51:24 -080024210 phalConfigSta_V1->vhtTxBFEnabled = pwdiConfigSta->ucVhtTxBFEnabled;
Gopichand Nakkalab2d2c312013-01-04 11:41:02 -080024211 phalConfigSta_V1->htLdpcEnabled = pwdiConfigSta->ucHtLdpcEnabled;
24212 phalConfigSta_V1->vhtLdpcEnabled = pwdiConfigSta->ucVhtLdpcEnabled;
24213
Jeff Johnsone7245742012-09-05 17:12:55 -070024214 }
24215#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070024216}/*WDI_CopyWDIStaCtxToHALStaCtx*/;
Jeff Johnsone7245742012-09-05 17:12:55 -070024217
24218/*Translate a Rate set info from WDI into HAL*/
24219WPT_STATIC WPT_INLINE void
Jeff Johnson295189b2012-06-20 16:38:30 -070024220WDI_CopyWDIRateSetToHALRateSet
Jeff Johnsone7245742012-09-05 17:12:55 -070024221(
Jeff Johnson295189b2012-06-20 16:38:30 -070024222 tSirMacRateSet* pHalRateSet,
24223 WDI_RateSet* pwdiRateSet
24224)
24225{
Jeff Johnsone7245742012-09-05 17:12:55 -070024226 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070024227 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
24228
24229 pHalRateSet->numRates = ( pwdiRateSet->ucNumRates <= SIR_MAC_RATESET_EID_MAX )?
24230 pwdiRateSet->ucNumRates:SIR_MAC_RATESET_EID_MAX;
24231
24232 for ( i = 0; i < pHalRateSet->numRates; i++ )
24233 {
24234 pHalRateSet->rate[i] = pwdiRateSet->aRates[i];
24235 }
Jeff Johnsone7245742012-09-05 17:12:55 -070024236
Jeff Johnson295189b2012-06-20 16:38:30 -070024237}/*WDI_CopyWDIRateSetToHALRateSet*/
24238
24239
24240/*Translate an EDCA Parameter Record from WDI into HAL*/
24241WPT_STATIC WPT_INLINE void
24242WDI_CopyWDIEDCAParamsToHALEDCAParams
Jeff Johnsone7245742012-09-05 17:12:55 -070024243(
Jeff Johnson295189b2012-06-20 16:38:30 -070024244 tSirMacEdcaParamRecord* phalEdcaParam,
24245 WDI_EdcaParamRecord* pWDIEdcaParam
24246)
24247{
Jeff Johnsone7245742012-09-05 17:12:55 -070024248 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070024249 the chances of getting inlined*/
24250
24251 phalEdcaParam->aci.rsvd = pWDIEdcaParam->wdiACI.rsvd;
24252 phalEdcaParam->aci.aci = pWDIEdcaParam->wdiACI.aci;
24253 phalEdcaParam->aci.acm = pWDIEdcaParam->wdiACI.acm;
24254 phalEdcaParam->aci.aifsn = pWDIEdcaParam->wdiACI.aifsn;
24255
24256 phalEdcaParam->cw.max = pWDIEdcaParam->wdiCW.max;
24257 phalEdcaParam->cw.min = pWDIEdcaParam->wdiCW.min;
24258 phalEdcaParam->txoplimit = pWDIEdcaParam->usTXOPLimit;
24259}/*WDI_CopyWDIEDCAParamsToHALEDCAParams*/
24260
24261
24262/*Copy a management frame header from WDI fmt into HAL fmt*/
24263WPT_STATIC WPT_INLINE void
24264WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr
24265(
24266 tSirMacMgmtHdr* pmacMgmtHdr,
24267 WDI_MacMgmtHdr* pwdiMacMgmtHdr
24268)
24269{
24270 pmacMgmtHdr->fc.protVer = pwdiMacMgmtHdr->fc.protVer;
24271 pmacMgmtHdr->fc.type = pwdiMacMgmtHdr->fc.type;
24272 pmacMgmtHdr->fc.subType = pwdiMacMgmtHdr->fc.subType;
24273 pmacMgmtHdr->fc.toDS = pwdiMacMgmtHdr->fc.toDS;
24274 pmacMgmtHdr->fc.fromDS = pwdiMacMgmtHdr->fc.fromDS;
24275 pmacMgmtHdr->fc.moreFrag = pwdiMacMgmtHdr->fc.moreFrag;
24276 pmacMgmtHdr->fc.retry = pwdiMacMgmtHdr->fc.retry;
24277 pmacMgmtHdr->fc.powerMgmt = pwdiMacMgmtHdr->fc.powerMgmt;
24278 pmacMgmtHdr->fc.moreData = pwdiMacMgmtHdr->fc.moreData;
24279 pmacMgmtHdr->fc.wep = pwdiMacMgmtHdr->fc.wep;
24280 pmacMgmtHdr->fc.order = pwdiMacMgmtHdr->fc.order;
24281
24282 pmacMgmtHdr->durationLo = pwdiMacMgmtHdr->durationLo;
24283 pmacMgmtHdr->durationHi = pwdiMacMgmtHdr->durationHi;
24284
Jeff Johnsone7245742012-09-05 17:12:55 -070024285 wpalMemoryCopy(pmacMgmtHdr->da,
Jeff Johnson295189b2012-06-20 16:38:30 -070024286 pwdiMacMgmtHdr->da, 6);
Jeff Johnsone7245742012-09-05 17:12:55 -070024287 wpalMemoryCopy(pmacMgmtHdr->sa,
Jeff Johnson295189b2012-06-20 16:38:30 -070024288 pwdiMacMgmtHdr->sa, 6);
Jeff Johnsone7245742012-09-05 17:12:55 -070024289 wpalMemoryCopy(pmacMgmtHdr->bssId,
Jeff Johnson295189b2012-06-20 16:38:30 -070024290 pwdiMacMgmtHdr->bssId, 6);
24291
24292 pmacMgmtHdr->seqControl.fragNum = pwdiMacMgmtHdr->seqControl.fragNum;
24293 pmacMgmtHdr->seqControl.seqNumLo = pwdiMacMgmtHdr->seqControl.seqNumLo;
24294 pmacMgmtHdr->seqControl.seqNumHi = pwdiMacMgmtHdr->seqControl.seqNumHi;
24295
24296}/*WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr*/
24297
24298
24299/*Copy config bss parameters from WDI fmt into HAL fmt*/
24300WPT_STATIC WPT_INLINE void
24301WDI_CopyWDIConfigBSSToHALConfigBSS
24302(
24303 tConfigBssParams* phalConfigBSS,
24304 WDI_ConfigBSSReqInfoType* pwdiConfigBSS
24305)
24306{
24307
24308 wpt_uint8 keyIndex = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070024309#ifdef WLAN_FEATURE_11AC
24310 /* Get the Version 1 Handler */
24311 tConfigBssParams_V1* phalConfigBSS_V1 = NULL;
24312 if (WDI_getFwWlanFeatCaps(DOT11AC))
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070024313 phalConfigBSS_V1 = (tConfigBssParams_V1*)phalConfigBSS;
Jeff Johnsone7245742012-09-05 17:12:55 -070024314#endif
24315
Jeff Johnson295189b2012-06-20 16:38:30 -070024316 wpalMemoryCopy( phalConfigBSS->bssId,
24317 pwdiConfigBSS->macBSSID,
24318 WDI_MAC_ADDR_LEN);
24319
24320#ifdef HAL_SELF_STA_PER_BSS
24321 wpalMemoryCopy( phalConfigBSS->selfMacAddr,
24322 pwdiConfigBSS->macSelfAddr,
24323 WDI_MAC_ADDR_LEN);
24324#endif
24325
24326 phalConfigBSS->bssType = WDI_2_HAL_BSS_TYPE(pwdiConfigBSS->wdiBSSType);
24327
24328 phalConfigBSS->operMode = pwdiConfigBSS->ucOperMode;
24329 phalConfigBSS->nwType = WDI_2_HAL_NW_TYPE(pwdiConfigBSS->wdiNWType);
24330
Jeff Johnsone7245742012-09-05 17:12:55 -070024331 phalConfigBSS->shortSlotTimeSupported =
Jeff Johnson295189b2012-06-20 16:38:30 -070024332 pwdiConfigBSS->ucShortSlotTimeSupported;
24333 phalConfigBSS->llaCoexist = pwdiConfigBSS->ucllaCoexist;
24334 phalConfigBSS->llbCoexist = pwdiConfigBSS->ucllbCoexist;
24335 phalConfigBSS->llgCoexist = pwdiConfigBSS->ucllgCoexist;
24336 phalConfigBSS->ht20Coexist = pwdiConfigBSS->ucHT20Coexist;
24337 phalConfigBSS->llnNonGFCoexist = pwdiConfigBSS->ucllnNonGFCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070024338 phalConfigBSS->fLsigTXOPProtectionFullSupport =
Jeff Johnson295189b2012-06-20 16:38:30 -070024339 pwdiConfigBSS->ucTXOPProtectionFullSupport;
24340 phalConfigBSS->fRIFSMode = pwdiConfigBSS->ucRIFSMode;
24341 phalConfigBSS->beaconInterval = pwdiConfigBSS->usBeaconInterval;
24342 phalConfigBSS->dtimPeriod = pwdiConfigBSS->ucDTIMPeriod;
24343 phalConfigBSS->txChannelWidthSet = pwdiConfigBSS->ucTXChannelWidthSet;
24344 phalConfigBSS->currentOperChannel = pwdiConfigBSS->ucCurrentOperChannel;
24345 phalConfigBSS->currentExtChannel = pwdiConfigBSS->ucCurrentExtChannel;
24346 phalConfigBSS->action = pwdiConfigBSS->wdiAction;
24347 phalConfigBSS->htCapable = pwdiConfigBSS->ucHTCapable;
24348 phalConfigBSS->obssProtEnabled = pwdiConfigBSS->ucObssProtEnabled;
24349 phalConfigBSS->rmfEnabled = pwdiConfigBSS->ucRMFEnabled;
24350
Jeff Johnsone7245742012-09-05 17:12:55 -070024351 phalConfigBSS->htOperMode =
24352 WDI_2_HAL_HT_OPER_MODE(pwdiConfigBSS->wdiHTOperMod);
Jeff Johnson295189b2012-06-20 16:38:30 -070024353
24354 phalConfigBSS->dualCTSProtection = pwdiConfigBSS->ucDualCTSProtection;
24355 phalConfigBSS->ucMaxProbeRespRetryLimit = pwdiConfigBSS->ucMaxProbeRespRetryLimit;
24356 phalConfigBSS->bHiddenSSIDEn = pwdiConfigBSS->bHiddenSSIDEn;
24357 phalConfigBSS->bProxyProbeRespEn = pwdiConfigBSS->bProxyProbeRespEn;
24358
24359#ifdef WLAN_FEATURE_VOWIFI
24360 phalConfigBSS->maxTxPower = pwdiConfigBSS->cMaxTxPower;
24361#endif
24362
24363 /*! Used 32 as magic number because that is how the ssid is declared inside the
24364 hal header - hal needs a macro for it */
Jeff Johnsone7245742012-09-05 17:12:55 -070024365 phalConfigBSS->ssId.length =
Jeff Johnson295189b2012-06-20 16:38:30 -070024366 (pwdiConfigBSS->wdiSSID.ucLength <= 32)?
24367 pwdiConfigBSS->wdiSSID.ucLength : 32;
24368 wpalMemoryCopy(phalConfigBSS->ssId.ssId,
Jeff Johnsone7245742012-09-05 17:12:55 -070024369 pwdiConfigBSS->wdiSSID.sSSID,
24370 phalConfigBSS->ssId.length);
Jeff Johnson295189b2012-06-20 16:38:30 -070024371
24372 WDI_CopyWDIStaCtxToHALStaCtx( &phalConfigBSS->staContext,
24373 &pwdiConfigBSS->wdiSTAContext);
Jeff Johnsone7245742012-09-05 17:12:55 -070024374
Jeff Johnson295189b2012-06-20 16:38:30 -070024375 WDI_CopyWDIRateSetToHALRateSet( &phalConfigBSS->rateSet,
24376 &pwdiConfigBSS->wdiRateSet);
24377
24378 phalConfigBSS->edcaParamsValid = pwdiConfigBSS->ucEDCAParamsValid;
24379
24380 if(phalConfigBSS->edcaParamsValid)
24381 {
24382 WDI_CopyWDIEDCAParamsToHALEDCAParams( &phalConfigBSS->acbe,
24383 &pwdiConfigBSS->wdiBEEDCAParams);
24384 WDI_CopyWDIEDCAParamsToHALEDCAParams( &phalConfigBSS->acbk,
24385 &pwdiConfigBSS->wdiBKEDCAParams);
24386 WDI_CopyWDIEDCAParamsToHALEDCAParams( &phalConfigBSS->acvi,
24387 &pwdiConfigBSS->wdiVIEDCAParams);
24388 WDI_CopyWDIEDCAParamsToHALEDCAParams( &phalConfigBSS->acvo,
24389 &pwdiConfigBSS->wdiVOEDCAParams);
24390 }
24391
Jeff Johnsone7245742012-09-05 17:12:55 -070024392 phalConfigBSS->halPersona = pwdiConfigBSS->ucPersona;
Jeff Johnson295189b2012-06-20 16:38:30 -070024393
24394 phalConfigBSS->bSpectrumMgtEnable = pwdiConfigBSS->bSpectrumMgtEn;
24395
24396#ifdef WLAN_FEATURE_VOWIFI_11R
24397
Jeff Johnsone7245742012-09-05 17:12:55 -070024398 phalConfigBSS->extSetStaKeyParamValid =
Jeff Johnson295189b2012-06-20 16:38:30 -070024399 pwdiConfigBSS->bExtSetStaKeyParamValid;
Jeff Johnsone7245742012-09-05 17:12:55 -070024400
Jeff Johnson295189b2012-06-20 16:38:30 -070024401 if( phalConfigBSS->extSetStaKeyParamValid )
24402 {
24403 /*-----------------------------------------------------------------------
24404 Copy the STA Key parameters into the HAL message
24405 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024406 phalConfigBSS->extSetStaKeyParam.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -070024407 WDI_2_HAL_ENC_TYPE (pwdiConfigBSS->wdiExtSetKeyParam.wdiEncType);
24408
Jeff Johnsone7245742012-09-05 17:12:55 -070024409 phalConfigBSS->extSetStaKeyParam.wepType =
Jeff Johnson295189b2012-06-20 16:38:30 -070024410 WDI_2_HAL_WEP_TYPE (pwdiConfigBSS->wdiExtSetKeyParam.wdiWEPType );
24411
24412 phalConfigBSS->extSetStaKeyParam.staIdx = pwdiConfigBSS->wdiExtSetKeyParam.ucSTAIdx;
24413
24414 phalConfigBSS->extSetStaKeyParam.defWEPIdx = pwdiConfigBSS->wdiExtSetKeyParam.ucDefWEPIdx;
24415
24416 phalConfigBSS->extSetStaKeyParam.singleTidRc = pwdiConfigBSS->wdiExtSetKeyParam.ucSingleTidRc;
24417
Jeff Johnson295189b2012-06-20 16:38:30 -070024418 for(keyIndex = 0; keyIndex < pwdiConfigBSS->wdiExtSetKeyParam.ucNumKeys ;
24419 keyIndex++)
24420 {
Jeff Johnsone7245742012-09-05 17:12:55 -070024421 phalConfigBSS->extSetStaKeyParam.key[keyIndex].keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -070024422 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].keyId;
24423 phalConfigBSS->extSetStaKeyParam.key[keyIndex].unicast =
24424 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].unicast;
24425 phalConfigBSS->extSetStaKeyParam.key[keyIndex].keyDirection =
24426 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].keyDirection;
24427 wpalMemoryCopy(phalConfigBSS->extSetStaKeyParam.key[keyIndex].keyRsc,
Jeff Johnsone7245742012-09-05 17:12:55 -070024428 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].keyRsc,
Jeff Johnson295189b2012-06-20 16:38:30 -070024429 WDI_MAX_KEY_RSC_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070024430 phalConfigBSS->extSetStaKeyParam.key[keyIndex].paeRole =
Jeff Johnson295189b2012-06-20 16:38:30 -070024431 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].paeRole;
Jeff Johnsone7245742012-09-05 17:12:55 -070024432 phalConfigBSS->extSetStaKeyParam.key[keyIndex].keyLength =
Jeff Johnson295189b2012-06-20 16:38:30 -070024433 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].keyLength;
24434 wpalMemoryCopy(phalConfigBSS->extSetStaKeyParam.key[keyIndex].key,
Jeff Johnsone7245742012-09-05 17:12:55 -070024435 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].key,
Jeff Johnson295189b2012-06-20 16:38:30 -070024436 WDI_MAX_KEY_LENGTH);
24437 }
Jeff Johnson295189b2012-06-20 16:38:30 -070024438 }
24439 else/* phalConfigBSS->extSetStaKeyParamValid is not set */
24440 {
Jeff Johnsone7245742012-09-05 17:12:55 -070024441 wpalMemoryZero( &phalConfigBSS->extSetStaKeyParam,
Jeff Johnson295189b2012-06-20 16:38:30 -070024442 sizeof(phalConfigBSS->extSetStaKeyParam) );
24443 }
24444
24445#endif /*WLAN_FEATURE_VOWIFI_11R*/
24446
Jeff Johnsone7245742012-09-05 17:12:55 -070024447#ifdef WLAN_FEATURE_11AC
24448 if(phalConfigBSS_V1 != NULL)
24449 {
24450 phalConfigBSS_V1->vhtCapable = pwdiConfigBSS->ucVhtCapableSta;
24451 phalConfigBSS_V1->vhtTxChannelWidthSet = pwdiConfigBSS->ucVhtTxChannelWidthSet;
24452 }
24453#endif
24454
Jeff Johnson295189b2012-06-20 16:38:30 -070024455}/*WDI_CopyWDIConfigBSSToHALConfigBSS*/
24456
24457
Jeff Johnsone7245742012-09-05 17:12:55 -070024458/*Extract the request CB function and user data from a request structure
Jeff Johnson295189b2012-06-20 16:38:30 -070024459 pointed to by user data */
24460WPT_STATIC WPT_INLINE void
24461WDI_ExtractRequestCBFromEvent
24462(
24463 WDI_EventInfoType* pEvent,
Jeff Johnsone7245742012-09-05 17:12:55 -070024464 WDI_ReqStatusCb* ppfnReqCB,
Jeff Johnson295189b2012-06-20 16:38:30 -070024465 void** ppUserData
24466)
24467{
24468 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
24469 switch ( pEvent->wdiRequest )
24470 {
24471 case WDI_START_REQ:
24472 *ppfnReqCB = ((WDI_StartReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24473 *ppUserData = ((WDI_StartReqParamsType*)pEvent->pEventData)->pUserData;
24474 break;
24475 case WDI_STOP_REQ:
24476 *ppfnReqCB = ((WDI_StopReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24477 *ppUserData = ((WDI_StopReqParamsType*)pEvent->pEventData)->pUserData;
24478 break;
24479 case WDI_INIT_SCAN_REQ:
24480 *ppfnReqCB = ((WDI_InitScanReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24481 *ppUserData = ((WDI_InitScanReqParamsType*)pEvent->pEventData)->pUserData;
24482 break;
24483 case WDI_START_SCAN_REQ:
24484 *ppfnReqCB = ((WDI_StartScanReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24485 *ppUserData = ((WDI_StartScanReqParamsType*)pEvent->pEventData)->pUserData;
24486 break;
24487 case WDI_END_SCAN_REQ:
24488 *ppfnReqCB = ((WDI_EndScanReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24489 *ppUserData = ((WDI_EndScanReqParamsType*)pEvent->pEventData)->pUserData;
24490 break;
24491 case WDI_FINISH_SCAN_REQ:
24492 *ppfnReqCB = ((WDI_FinishScanReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24493 *ppUserData = ((WDI_FinishScanReqParamsType*)pEvent->pEventData)->pUserData;
24494 break;
24495 case WDI_JOIN_REQ:
24496 *ppfnReqCB = ((WDI_JoinReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24497 *ppUserData = ((WDI_JoinReqParamsType*)pEvent->pEventData)->pUserData;
24498 break;
24499 case WDI_CONFIG_BSS_REQ:
24500 *ppfnReqCB = ((WDI_ConfigBSSReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24501 *ppUserData = ((WDI_ConfigBSSReqParamsType*)pEvent->pEventData)->pUserData;
24502 break;
24503 case WDI_DEL_BSS_REQ:
24504 *ppfnReqCB = ((WDI_DelBSSReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24505 *ppUserData = ((WDI_DelBSSReqParamsType*)pEvent->pEventData)->pUserData;
24506 break;
24507 case WDI_POST_ASSOC_REQ:
24508 *ppfnReqCB = ((WDI_PostAssocReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24509 *ppUserData = ((WDI_PostAssocReqParamsType*)pEvent->pEventData)->pUserData;
24510 break;
24511 case WDI_DEL_STA_REQ:
24512 *ppfnReqCB = ((WDI_DelSTAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24513 *ppUserData = ((WDI_DelSTAReqParamsType*)pEvent->pEventData)->pUserData;
24514 break;
24515 case WDI_DEL_STA_SELF_REQ:
24516 *ppfnReqCB = ((WDI_DelSTASelfReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24517 *ppUserData = ((WDI_DelSTASelfReqParamsType*)pEvent->pEventData)->pUserData;
24518 break;
24519
24520 case WDI_SET_BSS_KEY_REQ:
24521 *ppfnReqCB = ((WDI_SetBSSKeyReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24522 *ppUserData = ((WDI_SetBSSKeyReqParamsType*)pEvent->pEventData)->pUserData;
24523 break;
24524 case WDI_RMV_BSS_KEY_REQ:
24525 *ppfnReqCB = ((WDI_RemoveBSSKeyReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24526 *ppUserData = ((WDI_RemoveBSSKeyReqParamsType*)pEvent->pEventData)->pUserData;
24527 break;
24528 case WDI_SET_STA_KEY_REQ:
24529 *ppfnReqCB = ((WDI_SetSTAKeyReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24530 *ppUserData = ((WDI_SetSTAKeyReqParamsType*)pEvent->pEventData)->pUserData;
24531 break;
24532 case WDI_RMV_STA_KEY_REQ:
24533 *ppfnReqCB = ((WDI_RemoveSTAKeyReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24534 *ppUserData = ((WDI_RemoveSTAKeyReqParamsType*)pEvent->pEventData)->pUserData;
24535 break;
24536 case WDI_ADD_TS_REQ:
24537 *ppfnReqCB = ((WDI_AddTSReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24538 *ppUserData = ((WDI_AddTSReqParamsType*)pEvent->pEventData)->pUserData;
24539 break;
24540 case WDI_DEL_TS_REQ:
24541 *ppfnReqCB = ((WDI_DelTSReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24542 *ppUserData = ((WDI_DelTSReqParamsType*)pEvent->pEventData)->pUserData;
24543 break;
24544 case WDI_UPD_EDCA_PRMS_REQ:
24545 *ppfnReqCB = ((WDI_UpdateEDCAParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24546 *ppUserData = ((WDI_UpdateEDCAParamsType*)pEvent->pEventData)->pUserData;
24547 break;
24548 case WDI_ADD_BA_SESSION_REQ:
24549 *ppfnReqCB = ((WDI_AddBASessionReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24550 *ppUserData = ((WDI_AddBASessionReqParamsType*)pEvent->pEventData)->pUserData;
24551 break;
24552 case WDI_DEL_BA_REQ:
24553 *ppfnReqCB = ((WDI_DelBAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24554 *ppUserData = ((WDI_DelBAReqParamsType*)pEvent->pEventData)->pUserData;
24555 break;
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -080024556#ifdef FEATURE_WLAN_ESE
Jeff Johnson295189b2012-06-20 16:38:30 -070024557 case WDI_TSM_STATS_REQ:
24558 *ppfnReqCB = ((WDI_TSMStatsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24559 *ppUserData = ((WDI_TSMStatsReqParamsType*)pEvent->pEventData)->pUserData;
24560 break;
24561#endif
24562 case WDI_CH_SWITCH_REQ:
24563 *ppfnReqCB = ((WDI_SwitchChReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24564 *ppUserData = ((WDI_SwitchChReqParamsType*)pEvent->pEventData)->pUserData;
24565 break;
Kalikinkar dhara1e83b772014-02-06 12:59:22 -080024566 case WDI_CH_SWITCH_REQ_V1:
24567 *ppfnReqCB = ((WDI_SwitchChReqParamsType_V1*)pEvent->pEventData)->wdiReqStatusCB;
24568 *ppUserData = ((WDI_SwitchChReqParamsType_V1*)pEvent->pEventData)->pUserData;
24569 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070024570 case WDI_CONFIG_STA_REQ:
24571 *ppfnReqCB = ((WDI_ConfigSTAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24572 *ppUserData = ((WDI_ConfigSTAReqParamsType*)pEvent->pEventData)->pUserData;
24573 break;
24574 case WDI_SET_LINK_ST_REQ:
24575 *ppfnReqCB = ((WDI_SetLinkReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24576 *ppUserData = ((WDI_SetLinkReqParamsType*)pEvent->pEventData)->pUserData;
24577 break;
24578 case WDI_GET_STATS_REQ:
24579 *ppfnReqCB = ((WDI_GetStatsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24580 *ppUserData = ((WDI_GetStatsReqParamsType*)pEvent->pEventData)->pUserData;
24581 break;
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -080024582#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_ESE || defined(FEATURE_WLAN_LFR)
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -080024583 case WDI_GET_ROAM_RSSI_REQ:
24584 *ppfnReqCB = ((WDI_GetRoamRssiReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24585 *ppUserData = ((WDI_GetRoamRssiReqParamsType*)pEvent->pEventData)->pUserData;
24586 break;
24587#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070024588 case WDI_UPDATE_CFG_REQ:
24589 *ppfnReqCB = ((WDI_UpdateCfgReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24590 *ppUserData = ((WDI_UpdateCfgReqParamsType*)pEvent->pEventData)->pUserData;
24591 break;
24592 case WDI_ADD_BA_REQ:
24593 *ppfnReqCB = ((WDI_AddBAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24594 *ppUserData = ((WDI_AddBAReqParamsType*)pEvent->pEventData)->pUserData;
24595 break;
24596 case WDI_TRIGGER_BA_REQ:
24597 *ppfnReqCB = ((WDI_TriggerBAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24598 *ppUserData = ((WDI_TriggerBAReqParamsType*)pEvent->pEventData)->pUserData;
24599 break;
24600 case WDI_UPD_BCON_PRMS_REQ:
24601 *ppfnReqCB = ((WDI_UpdateBeaconParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24602 *ppUserData = ((WDI_UpdateBeaconParamsType*)pEvent->pEventData)->pUserData;
24603 break;
24604 case WDI_SND_BCON_REQ:
24605 *ppfnReqCB = ((WDI_SendBeaconParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24606 *ppUserData = ((WDI_SendBeaconParamsType*)pEvent->pEventData)->pUserData;
24607 break;
24608 case WDI_ENTER_BMPS_REQ:
24609 *ppfnReqCB = ((WDI_EnterBmpsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24610 *ppUserData = ((WDI_EnterBmpsReqParamsType*)pEvent->pEventData)->pUserData;
24611 break;
24612 case WDI_EXIT_BMPS_REQ:
24613 *ppfnReqCB = ((WDI_ExitBmpsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24614 *ppUserData = ((WDI_ExitBmpsReqParamsType*)pEvent->pEventData)->pUserData;
24615 break;
Mihir Shetea4306052014-03-25 00:02:54 +053024616 case WDI_ENTER_IMPS_REQ:
24617 *ppfnReqCB = ((WDI_EnterImpsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24618 *ppUserData = ((WDI_EnterImpsReqParamsType*)pEvent->pEventData)->pUserData;
24619 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070024620 case WDI_ENTER_UAPSD_REQ:
24621 *ppfnReqCB = ((WDI_EnterUapsdReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24622 *ppUserData = ((WDI_EnterUapsdReqParamsType*)pEvent->pEventData)->pUserData;
24623 break;
Yue Ma7f44bbe2013-04-12 11:47:39 -070024624 case WDI_EXIT_UAPSD_REQ:
24625 *ppfnReqCB = ((WDI_ExitUapsdReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24626 *ppUserData = ((WDI_ExitUapsdReqParamsType*)pEvent->pEventData)->pUserData;
24627 break;
24628 case WDI_SET_UAPSD_PARAM_REQ:
24629 *ppfnReqCB = ((WDI_SetUapsdAcParamsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24630 *ppUserData = ((WDI_SetUapsdAcParamsReqParamsType*)pEvent->pEventData)->pUserData;
24631 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070024632 case WDI_UPDATE_UAPSD_PARAM_REQ:
24633 *ppfnReqCB = ((WDI_UpdateUapsdReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24634 *ppUserData = ((WDI_UpdateUapsdReqParamsType*)pEvent->pEventData)->pUserData;
24635 break;
24636 case WDI_CONFIGURE_RXP_FILTER_REQ:
24637 *ppfnReqCB = ((WDI_ConfigureRxpFilterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24638 *ppUserData = ((WDI_ConfigureRxpFilterReqParamsType*)pEvent->pEventData)->pUserData;
24639 break;
24640 case WDI_SET_BEACON_FILTER_REQ:
24641 *ppfnReqCB = ((WDI_BeaconFilterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24642 *ppUserData = ((WDI_BeaconFilterReqParamsType*)pEvent->pEventData)->pUserData;
24643 break;
24644 case WDI_REM_BEACON_FILTER_REQ:
24645 *ppfnReqCB = ((WDI_RemBeaconFilterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24646 *ppUserData = ((WDI_RemBeaconFilterReqParamsType*)pEvent->pEventData)->pUserData;
Jeff Johnsone7245742012-09-05 17:12:55 -070024647 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070024648 case WDI_SET_RSSI_THRESHOLDS_REQ:
24649 *ppfnReqCB = ((WDI_SetRSSIThresholdsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24650 *ppUserData = ((WDI_SetRSSIThresholdsReqParamsType*)pEvent->pEventData)->pUserData;
24651 break;
24652 case WDI_HOST_OFFLOAD_REQ:
24653 *ppfnReqCB = ((WDI_HostOffloadReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24654 *ppUserData = ((WDI_HostOffloadReqParamsType*)pEvent->pEventData)->pUserData;
24655 break;
24656 case WDI_WOWL_ADD_BC_PTRN_REQ:
24657 *ppfnReqCB = ((WDI_WowlAddBcPtrnReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24658 *ppUserData = ((WDI_WowlAddBcPtrnReqParamsType*)pEvent->pEventData)->pUserData;
24659 break;
24660 case WDI_WOWL_DEL_BC_PTRN_REQ:
24661 *ppfnReqCB = ((WDI_WowlDelBcPtrnReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24662 *ppUserData = ((WDI_WowlDelBcPtrnReqParamsType*)pEvent->pEventData)->pUserData;
24663 break;
24664 case WDI_WOWL_ENTER_REQ:
24665 *ppfnReqCB = ((WDI_WowlEnterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24666 *ppUserData = ((WDI_WowlEnterReqParamsType*)pEvent->pEventData)->pUserData;
24667 break;
Yue Ma7f44bbe2013-04-12 11:47:39 -070024668 case WDI_WOWL_EXIT_REQ:
24669 *ppfnReqCB = ((WDI_WowlExitReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24670 *ppUserData = ((WDI_WowlExitReqParamsType*)pEvent->pEventData)->pUserData;
24671 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070024672 case WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ:
24673 *ppfnReqCB = ((WDI_ConfigureAppsCpuWakeupStateReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24674 *ppUserData = ((WDI_ConfigureAppsCpuWakeupStateReqParamsType*)pEvent->pEventData)->pUserData;
24675 break;
24676 case WDI_FLUSH_AC_REQ:
24677 *ppfnReqCB = ((WDI_FlushAcReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24678 *ppUserData = ((WDI_FlushAcReqParamsType*)pEvent->pEventData)->pUserData;
24679 break;
24680 case WDI_BTAMP_EVENT_REQ:
24681 *ppfnReqCB = ((WDI_BtAmpEventParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24682 *ppUserData = ((WDI_BtAmpEventParamsType*)pEvent->pEventData)->pUserData;
24683 break;
24684 case WDI_KEEP_ALIVE_REQ:
24685 *ppfnReqCB = ((WDI_KeepAliveReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24686 *ppUserData = ((WDI_KeepAliveReqParamsType*)pEvent->pEventData)->pUserData;
24687 break;
Yue Ma7f44bbe2013-04-12 11:47:39 -070024688#if defined FEATURE_WLAN_SCAN_PNO
24689 case WDI_SET_PREF_NETWORK_REQ:
24690 *ppfnReqCB = ((WDI_PNOScanReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24691 *ppUserData = ((WDI_PNOScanReqParamsType*)pEvent->pEventData)->pUserData;
24692 break;
24693 case WDI_SET_RSSI_FILTER_REQ:
24694 *ppfnReqCB = ((WDI_SetRssiFilterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24695 *ppUserData = ((WDI_SetRssiFilterReqParamsType*)pEvent->pEventData)->pUserData;
24696 break;
24697 case WDI_UPDATE_SCAN_PARAMS_REQ:
24698 *ppfnReqCB = ((WDI_UpdateScanParamsInfoType*)pEvent->pEventData)->wdiReqStatusCB;
24699 *ppUserData = ((WDI_UpdateScanParamsInfoType*)pEvent->pEventData)->pUserData;
24700 break;
24701#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070024702 case WDI_SET_TX_PER_TRACKING_REQ:
24703 *ppfnReqCB = ((WDI_SetTxPerTrackingReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24704 *ppUserData = ((WDI_SetTxPerTrackingReqParamsType*)pEvent->pEventData)->pUserData;
Tushnim Bhattacharyya4858ab62013-03-08 10:15:42 -080024705 break;
Yue Ma7f44bbe2013-04-12 11:47:39 -070024706#if defined WLAN_FEATURE_PACKET_FILTERING
24707 case WDI_8023_MULTICAST_LIST_REQ:
24708 *ppfnReqCB = ((WDI_RcvFltPktSetMcListReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24709 *ppUserData = ((WDI_RcvFltPktSetMcListReqParamsType*)pEvent->pEventData)->pUserData;
24710 break;
Tushnim Bhattacharyya4858ab62013-03-08 10:15:42 -080024711 case WDI_RECEIVE_FILTER_SET_FILTER_REQ:
24712 *ppfnReqCB = ((WDI_SetRcvPktFilterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24713 *ppUserData = ((WDI_SetRcvPktFilterReqParamsType*)pEvent->pEventData)->pUserData;
24714 break;
24715 case WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ:
24716 *ppfnReqCB = ((WDI_RcvFltPktMatchCntReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24717 *ppUserData = ((WDI_RcvFltPktMatchCntReqParamsType*)pEvent->pEventData)->pUserData;
24718 break;
24719 case WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ:
24720 *ppfnReqCB = ((WDI_RcvFltPktClearReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24721 *ppUserData = ((WDI_RcvFltPktClearReqParamsType*)pEvent->pEventData)->pUserData;
24722 break;
Yue Ma7f44bbe2013-04-12 11:47:39 -070024723#endif
24724 case WDI_SET_POWER_PARAMS_REQ:
24725 *ppfnReqCB = ((WDI_SetPowerParamsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24726 *ppUserData = ((WDI_SetPowerParamsReqParamsType*)pEvent->pEventData)->pUserData;
24727 break;
24728#if defined WLAN_FEATURE_GTK_OFFLOAD
24729 case WDI_GTK_OFFLOAD_REQ:
24730 *ppfnReqCB = ((WDI_GtkOffloadReqMsg*)pEvent->pEventData)->wdiReqStatusCB;
24731 *ppUserData = ((WDI_GtkOffloadReqMsg*)pEvent->pEventData)->pUserData;
24732 break;
24733 case WDI_GTK_OFFLOAD_GETINFO_REQ:
24734 *ppfnReqCB = ((WDI_GtkOffloadGetInfoReqMsg*)pEvent->pEventData)->wdiReqStatusCB;
24735 *ppUserData = ((WDI_GtkOffloadGetInfoReqMsg*)pEvent->pEventData)->pUserData;
24736 break;
24737#endif
Tushnim Bhattacharyya4858ab62013-03-08 10:15:42 -080024738
Jeff Johnson295189b2012-06-20 16:38:30 -070024739 default:
24740 *ppfnReqCB = NULL;
24741 *ppUserData = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070024742 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070024743 }
24744}/*WDI_ExtractRequestCBFromEvent*/
24745
24746
24747/**
Jeff Johnsone7245742012-09-05 17:12:55 -070024748 @brief WDI_IsHwFrameTxTranslationCapable checks to see if HW
Jeff Johnson295189b2012-06-20 16:38:30 -070024749 frame xtl is enabled for a particular STA.
24750
24751 WDI_PostAssocReq must have been called.
24752
Jeff Johnsone7245742012-09-05 17:12:55 -070024753 @param uSTAIdx: STA index
24754
Jeff Johnson295189b2012-06-20 16:38:30 -070024755 @see WDI_PostAssocReq
24756 @return Result of the function call
24757*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024758wpt_boolean
Jeff Johnson295189b2012-06-20 16:38:30 -070024759WDI_IsHwFrameTxTranslationCapable
24760(
24761 wpt_uint8 uSTAIdx
24762)
24763{
Jeff Johnsone7245742012-09-05 17:12:55 -070024764 /*!! FIX ME - this must eventually be per station - for now just feedback
Jeff Johnson295189b2012-06-20 16:38:30 -070024765 uma value*/
24766 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024767 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070024768 ------------------------------------------------------------------------*/
24769 if ( eWLAN_PAL_FALSE == gWDIInitialized )
24770 {
24771 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
24772 "WDI API call before module is initialized - Fail request");
24773
Jeff Johnsone7245742012-09-05 17:12:55 -070024774 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070024775 }
24776
Gopichand Nakkala976e3252013-01-03 15:45:56 -080024777#ifdef WLAN_SOFTAP_VSTA_FEATURE
24778 if (IS_VSTA_IDX(uSTAIdx))
24779 {
24780 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
24781 "STA %d is a Virtual STA, "
24782 "HW frame translation disabled", uSTAIdx);
24783 return eWLAN_PAL_FALSE;
24784 }
24785#endif
Jeff Johnsone7245742012-09-05 17:12:55 -070024786
Jeff Johnson295189b2012-06-20 16:38:30 -070024787 return gWDICb.bFrameTransEnabled;
24788}/*WDI_IsHwFrameTxTranslationCapable*/
24789
Katya Nigam6201c3e2014-05-27 17:51:42 +053024790
24791/**
24792 @brief WDI_IsSelfSTA - check if staid is self sta index
24793
24794
24795 @param pWDICtx: pointer to the WLAN DAL context
24796 ucSTAIdx: station index
24797
24798 @return Result of the function call
24799*/
24800wpt_boolean WDI_IsSelfSTA( void* pWDICtx, wpt_uint8 ucSTAIdx )
24801{
24802 wpt_uint8 ucSTAType;
24803
24804 if( WDI_STATableGetStaType( (WDI_ControlBlockType*)pWDICtx,
24805 ucSTAIdx,&ucSTAType) == WDI_STATUS_SUCCESS)
24806 {
24807 if( ucSTAType == WDI_STA_ENTRY_SELF )
24808 return eWLAN_PAL_TRUE;
24809 }
24810
24811 return eWLAN_PAL_FALSE;
24812}
24813
24814
24815
Jeff Johnson295189b2012-06-20 16:38:30 -070024816#ifdef FEATURE_WLAN_SCAN_PNO
24817/**
24818 @brief WDI_SetPreferredNetworkList
24819
Jeff Johnsone7245742012-09-05 17:12:55 -070024820 @param pwdiPNOScanReqParams: the Set PNO as specified
Jeff Johnson295189b2012-06-20 16:38:30 -070024821 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -070024822
Jeff Johnson295189b2012-06-20 16:38:30 -070024823 wdiPNOScanCb: callback for passing back the response
24824 of the Set PNO operation received from the
24825 device
Jeff Johnsone7245742012-09-05 17:12:55 -070024826
Jeff Johnson295189b2012-06-20 16:38:30 -070024827 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -070024828 callback
24829
Jeff Johnson295189b2012-06-20 16:38:30 -070024830 @return Result of the function call
24831*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024832WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070024833WDI_SetPreferredNetworkReq
24834(
24835 WDI_PNOScanReqParamsType* pwdiPNOScanReqParams,
24836 WDI_PNOScanCb wdiPNOScanCb,
24837 void* pUserData
24838)
24839{
24840 WDI_EventInfoType wdiEventData = {{0}};
24841 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
24842
24843 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024844 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070024845 ------------------------------------------------------------------------*/
24846 if ( eWLAN_PAL_FALSE == gWDIInitialized )
24847 {
24848 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
24849 "WDI API call before module is initialized - Fail request");
24850
Jeff Johnsone7245742012-09-05 17:12:55 -070024851 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070024852 }
24853
24854 /*------------------------------------------------------------------------
24855 Fill in Event data and post to the Main FSM
24856 ------------------------------------------------------------------------*/
24857 wdiEventData.wdiRequest = WDI_SET_PREF_NETWORK_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070024858 wdiEventData.pEventData = pwdiPNOScanReqParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070024859 wdiEventData.uEventDataSize = sizeof(*pwdiPNOScanReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -070024860 wdiEventData.pCBfnc = wdiPNOScanCb;
Jeff Johnson295189b2012-06-20 16:38:30 -070024861 wdiEventData.pUserData = pUserData;
24862
24863 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
24864}
24865
24866
24867/**
24868 @brief WDI_SetRssiFilterReq
24869
Jeff Johnsone7245742012-09-05 17:12:55 -070024870 @param pwdiRssiFilterReqParams: the Set RSSI Filter as
Jeff Johnson295189b2012-06-20 16:38:30 -070024871 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -070024872
Jeff Johnson295189b2012-06-20 16:38:30 -070024873 wdiRssiFilterCb: callback for passing back the response
24874 of the Set RSSI Filter operation received from the
24875 device
Jeff Johnsone7245742012-09-05 17:12:55 -070024876
Jeff Johnson295189b2012-06-20 16:38:30 -070024877 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -070024878 callback
24879
Jeff Johnson295189b2012-06-20 16:38:30 -070024880 @return Result of the function call
24881*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024882WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070024883WDI_SetRssiFilterReq
24884(
24885 WDI_SetRssiFilterReqParamsType* pwdiRssiFilterReqParams,
24886 WDI_RssiFilterCb wdiRssiFilterCb,
24887 void* pUserData
24888)
24889{
24890 WDI_EventInfoType wdiEventData = {{0}};
24891 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
24892
24893 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024894 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070024895 ------------------------------------------------------------------------*/
24896 if ( eWLAN_PAL_FALSE == gWDIInitialized )
24897 {
24898 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
24899 "WDI API call before module is initialized - Fail request");
24900
Jeff Johnsone7245742012-09-05 17:12:55 -070024901 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070024902 }
24903
24904 /*------------------------------------------------------------------------
24905 Fill in Event data and post to the Main FSM
24906 ------------------------------------------------------------------------*/
24907 wdiEventData.wdiRequest = WDI_SET_RSSI_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070024908 wdiEventData.pEventData = pwdiRssiFilterReqParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070024909 wdiEventData.uEventDataSize = sizeof(*pwdiRssiFilterReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -070024910 wdiEventData.pCBfnc = wdiRssiFilterCb;
Jeff Johnson295189b2012-06-20 16:38:30 -070024911 wdiEventData.pUserData = pUserData;
24912
24913 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
24914}/*WDI_SetRssiFilterReq*/
24915
24916/**
24917 @brief WDI_UpdateScanParamsReq
24918
Jeff Johnsone7245742012-09-05 17:12:55 -070024919 @param pwdiUpdateScanParamsInfoType: the Update Scan Params as specified
Jeff Johnson295189b2012-06-20 16:38:30 -070024920 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -070024921
Jeff Johnson295189b2012-06-20 16:38:30 -070024922 wdiUpdateScanParamsCb: callback for passing back the response
24923 of the Set PNO operation received from the
24924 device
Jeff Johnsone7245742012-09-05 17:12:55 -070024925
Jeff Johnson295189b2012-06-20 16:38:30 -070024926 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -070024927 callback
24928
Jeff Johnson295189b2012-06-20 16:38:30 -070024929 @return Result of the function call
24930*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024931WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070024932WDI_UpdateScanParamsReq
24933(
24934 WDI_UpdateScanParamsInfoType* pwdiUpdateScanParamsInfoType,
24935 WDI_UpdateScanParamsCb wdiUpdateScanParamsCb,
24936 void* pUserData
24937)
24938{
24939 WDI_EventInfoType wdiEventData = {{0}};
24940 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
24941
24942 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024943 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070024944 ------------------------------------------------------------------------*/
24945 if ( eWLAN_PAL_FALSE == gWDIInitialized )
24946 {
24947 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
24948 "WDI API call before module is initialized - Fail request");
24949
Jeff Johnsone7245742012-09-05 17:12:55 -070024950 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070024951 }
24952
24953 /*------------------------------------------------------------------------
24954 Fill in Event data and post to the Main FSM
24955 ------------------------------------------------------------------------*/
24956 wdiEventData.wdiRequest = WDI_UPDATE_SCAN_PARAMS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070024957 wdiEventData.pEventData = pwdiUpdateScanParamsInfoType;
Jeff Johnson295189b2012-06-20 16:38:30 -070024958 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateScanParamsInfoType);
Jeff Johnsone7245742012-09-05 17:12:55 -070024959 wdiEventData.pCBfnc = wdiUpdateScanParamsCb;
Jeff Johnson295189b2012-06-20 16:38:30 -070024960 wdiEventData.pUserData = pUserData;
24961
24962 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
24963}
24964
24965/**
Jeff Johnsone7245742012-09-05 17:12:55 -070024966 @brief Helper function to pack Set Preferred Network List
Jeff Johnson295189b2012-06-20 16:38:30 -070024967 Request parameters
Jeff Johnsone7245742012-09-05 17:12:55 -070024968
24969 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070024970 pwdiPNOScanReqParams: pointer to the info received
24971 from upper layers
24972 ppSendBuffer, pSize - out pointers of the packed buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070024973 and its size
24974
Jeff Johnson295189b2012-06-20 16:38:30 -070024975 @return Result of the function call
24976*/
24977
24978WDI_Status
24979WDI_PackPreferredNetworkList
24980(
24981 WDI_ControlBlockType* pWDICtx,
24982 WDI_PNOScanReqParamsType* pwdiPNOScanReqParams,
24983 wpt_uint8** ppSendBuffer,
24984 wpt_uint16* pSize
24985)
24986{
Jeff Johnsone7245742012-09-05 17:12:55 -070024987 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070024988 wpt_uint16 usDataOffset = 0;
24989 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024990 tpPrefNetwListParams pPrefNetwListParams = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070024991 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070024992 /*-----------------------------------------------------------------------
24993 Get message buffer
24994 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024995 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_PREF_NETWORK_REQ,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024996 sizeof(tPrefNetwListParams),
Jeff Johnson295189b2012-06-20 16:38:30 -070024997 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024998 ( usSendSize < (usDataOffset + sizeof(tPrefNetwListParams) )))
Jeff Johnson295189b2012-06-20 16:38:30 -070024999 {
25000 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080025001 "Unable to get send buffer in Set PNO req %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070025002 pwdiPNOScanReqParams);
25003 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070025004 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025005 }
25006
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025007 pPrefNetwListParams = (tpPrefNetwListParams)(pSendBuffer + usDataOffset);
25008
Jeff Johnson295189b2012-06-20 16:38:30 -070025009 /*-------------------------------------------------------------------------
25010 Fill prefNetwListParams from pwdiPNOScanReqParams->wdiPNOScanInfo
25011 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025012 pPrefNetwListParams->enable =
Jeff Johnson295189b2012-06-20 16:38:30 -070025013 pwdiPNOScanReqParams->wdiPNOScanInfo.bEnable;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025014 pPrefNetwListParams->modePNO =
Jeff Johnson295189b2012-06-20 16:38:30 -070025015 pwdiPNOScanReqParams->wdiPNOScanInfo.wdiModePNO;
25016
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025017 pPrefNetwListParams->ucNetworksCount =
Jeff Johnsone7245742012-09-05 17:12:55 -070025018 (pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount <
Jeff Johnson295189b2012-06-20 16:38:30 -070025019 WLAN_HAL_PNO_MAX_SUPP_NETWORKS)?
Jeff Johnsone7245742012-09-05 17:12:55 -070025020 pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount :
Jeff Johnson295189b2012-06-20 16:38:30 -070025021 WLAN_HAL_PNO_MAX_SUPP_NETWORKS;
25022
25023 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070025024 "WDI SET PNO: Enable %d, Mode %d, Netw Count %d",
Jeff Johnson295189b2012-06-20 16:38:30 -070025025 pwdiPNOScanReqParams->wdiPNOScanInfo.bEnable,
25026 pwdiPNOScanReqParams->wdiPNOScanInfo.wdiModePNO,
25027 pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount);
25028
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025029 for ( i = 0; i < pPrefNetwListParams->ucNetworksCount; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070025030 {
25031 /*SSID of the BSS*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025032 pPrefNetwListParams->aNetworks[i].ssId.length
Jeff Johnson295189b2012-06-20 16:38:30 -070025033 = pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ssId.ucLength;
25034
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025035 wpalMemoryCopy( pPrefNetwListParams->aNetworks[i].ssId.ssId,
Jeff Johnson295189b2012-06-20 16:38:30 -070025036 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ssId.sSSID,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025037 pPrefNetwListParams->aNetworks[i].ssId.length);
Jeff Johnson295189b2012-06-20 16:38:30 -070025038
25039 /*Authentication type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025040 pPrefNetwListParams->aNetworks[i].authentication =
Jeff Johnsone7245742012-09-05 17:12:55 -070025041 (tAuthType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiAuth;
Jeff Johnson295189b2012-06-20 16:38:30 -070025042
25043 /*Encryption type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025044 pPrefNetwListParams->aNetworks[i].encryption =
Jeff Johnsone7245742012-09-05 17:12:55 -070025045 (tEdType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiEncryption;
Jeff Johnson295189b2012-06-20 16:38:30 -070025046
Jeff Johnsone7245742012-09-05 17:12:55 -070025047 /*Indicate the channel on which the Network can be found
Jeff Johnson295189b2012-06-20 16:38:30 -070025048 0 - if all channels */
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025049 pPrefNetwListParams->aNetworks[i].ucChannelCount =
Madan Mohan Koyyalamudia208d102012-10-15 15:18:18 -070025050 (pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ucChannelCount <
25051 WLAN_HAL_PNO_MAX_NETW_CHANNELS)?
25052 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ucChannelCount :
25053 WLAN_HAL_PNO_MAX_NETW_CHANNELS;
Jeff Johnson295189b2012-06-20 16:38:30 -070025054
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025055 wpalMemoryCopy(pPrefNetwListParams->aNetworks[i].aChannels,
Jeff Johnson295189b2012-06-20 16:38:30 -070025056 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].aChannels,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025057 pPrefNetwListParams->aNetworks[i].ucChannelCount);
Jeff Johnson295189b2012-06-20 16:38:30 -070025058
25059 /*Indicates the RSSI threshold for the network to be considered*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025060 pPrefNetwListParams->aNetworks[i].rssiThreshold =
Jeff Johnson295189b2012-06-20 16:38:30 -070025061 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].rssiThreshold;
25062
25063 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070025064 "WDI SET PNO: SSID %d %s",
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025065 pPrefNetwListParams->aNetworks[i].ssId.length,
25066 pPrefNetwListParams->aNetworks[i].ssId.ssId);
Jeff Johnson295189b2012-06-20 16:38:30 -070025067 }
25068
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025069 pPrefNetwListParams->scanTimers.ucScanTimersCount =
Jeff Johnsone7245742012-09-05 17:12:55 -070025070 (pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.ucScanTimersCount <
Jeff Johnson295189b2012-06-20 16:38:30 -070025071 WLAN_HAL_PNO_MAX_SCAN_TIMERS)?
25072 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.ucScanTimersCount :
25073 WLAN_HAL_PNO_MAX_SCAN_TIMERS;
25074
25075 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070025076 "WDI SET PNO: Scan timers count %d 24G P %d 5G Probe %d",
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025077 pPrefNetwListParams->scanTimers.ucScanTimersCount,
Jeff Johnson295189b2012-06-20 16:38:30 -070025078 pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize,
25079 pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize);
25080
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025081 for ( i = 0; i < pPrefNetwListParams->scanTimers.ucScanTimersCount; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070025082 {
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025083 pPrefNetwListParams->scanTimers.aTimerValues[i].uTimerValue =
Jeff Johnson295189b2012-06-20 16:38:30 -070025084 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.aTimerValues[i].uTimerValue;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025085 pPrefNetwListParams->scanTimers.aTimerValues[i].uTimerRepeat =
Jeff Johnson295189b2012-06-20 16:38:30 -070025086 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.aTimerValues[i].uTimerRepeat;
25087 }
25088
25089 /*Copy the probe template*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025090 pPrefNetwListParams->us24GProbeSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070025091 (pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize<
25092 WLAN_HAL_PNO_MAX_PROBE_SIZE)?
25093 pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize:
Jeff Johnsone7245742012-09-05 17:12:55 -070025094 WLAN_HAL_PNO_MAX_PROBE_SIZE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025095
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025096 wpalMemoryCopy(pPrefNetwListParams->a24GProbeTemplate,
Jeff Johnsone7245742012-09-05 17:12:55 -070025097 pwdiPNOScanReqParams->wdiPNOScanInfo.a24GProbeTemplate,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025098 pPrefNetwListParams->us24GProbeSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070025099
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025100 pPrefNetwListParams->us5GProbeSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070025101 (pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize <
25102 WLAN_HAL_PNO_MAX_PROBE_SIZE)?
25103 pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize:
Jeff Johnsone7245742012-09-05 17:12:55 -070025104 WLAN_HAL_PNO_MAX_PROBE_SIZE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025105
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025106 wpalMemoryCopy(pPrefNetwListParams->a5GProbeTemplate,
Jeff Johnsone7245742012-09-05 17:12:55 -070025107 pwdiPNOScanReqParams->wdiPNOScanInfo.a5GProbeTemplate,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025108 pPrefNetwListParams->us5GProbeSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070025109
25110 /*Set the output values*/
25111 *ppSendBuffer = pSendBuffer;
Jeff Johnsone7245742012-09-05 17:12:55 -070025112 *pSize = usSendSize;
Jeff Johnson295189b2012-06-20 16:38:30 -070025113
25114 return WDI_STATUS_SUCCESS;
25115}/*WDI_PackPreferredNetworkList*/
25116
25117/**
Jeff Johnsone7245742012-09-05 17:12:55 -070025118 @brief Helper function to pack Set Preferred Network List
Jeff Johnson295189b2012-06-20 16:38:30 -070025119 Request parameters
Jeff Johnsone7245742012-09-05 17:12:55 -070025120
25121 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070025122 pwdiPNOScanReqParams: pointer to the info received
25123 from upper layers
25124 ppSendBuffer, pSize - out pointers of the packed buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070025125 and its size
25126
Jeff Johnson295189b2012-06-20 16:38:30 -070025127 @return Result of the function call
25128*/
25129
25130WDI_Status
25131WDI_PackPreferredNetworkListNew
25132(
25133 WDI_ControlBlockType* pWDICtx,
25134 WDI_PNOScanReqParamsType* pwdiPNOScanReqParams,
25135 wpt_uint8** ppSendBuffer,
25136 wpt_uint16* pSize
25137)
25138{
Jeff Johnsone7245742012-09-05 17:12:55 -070025139 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070025140 wpt_uint16 usDataOffset = 0;
25141 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025142 tpPrefNetwListParamsNew pPrefNetwListParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070025143 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070025144
25145 /*-----------------------------------------------------------------------
25146 Get message buffer
25147 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025148 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_PREF_NETWORK_REQ,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025149 sizeof(tPrefNetwListParamsNew),
Jeff Johnson295189b2012-06-20 16:38:30 -070025150 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025151 ( usSendSize < (usDataOffset + sizeof(tPrefNetwListParamsNew) )))
Jeff Johnson295189b2012-06-20 16:38:30 -070025152 {
25153 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080025154 "Unable to get send buffer in Set PNO req %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070025155 pwdiPNOScanReqParams);
25156 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070025157 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025158 }
25159
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025160 pPrefNetwListParams = (tpPrefNetwListParamsNew)(pSendBuffer + usDataOffset);
25161
Jeff Johnson295189b2012-06-20 16:38:30 -070025162 /*-------------------------------------------------------------------------
25163 Fill prefNetwListParams from pwdiPNOScanReqParams->wdiPNOScanInfo
25164 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025165 pPrefNetwListParams->enable =
Jeff Johnson295189b2012-06-20 16:38:30 -070025166 pwdiPNOScanReqParams->wdiPNOScanInfo.bEnable;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025167 pPrefNetwListParams->modePNO =
Jeff Johnson295189b2012-06-20 16:38:30 -070025168 pwdiPNOScanReqParams->wdiPNOScanInfo.wdiModePNO;
25169
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025170 pPrefNetwListParams->ucNetworksCount =
Jeff Johnsone7245742012-09-05 17:12:55 -070025171 (pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount <
Jeff Johnson295189b2012-06-20 16:38:30 -070025172 WLAN_HAL_PNO_MAX_SUPP_NETWORKS)?
Jeff Johnsone7245742012-09-05 17:12:55 -070025173 pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount :
Jeff Johnson295189b2012-06-20 16:38:30 -070025174 WLAN_HAL_PNO_MAX_SUPP_NETWORKS;
25175
25176 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070025177 "WDI SET PNO: Enable %d, Mode %d, Netw Count %d",
Jeff Johnson295189b2012-06-20 16:38:30 -070025178 pwdiPNOScanReqParams->wdiPNOScanInfo.bEnable,
25179 pwdiPNOScanReqParams->wdiPNOScanInfo.wdiModePNO,
25180 pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount);
25181
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025182 for ( i = 0; i < pPrefNetwListParams->ucNetworksCount; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070025183 {
25184 /*SSID of the BSS*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025185 pPrefNetwListParams->aNetworks[i].ssId.length
Jeff Johnson295189b2012-06-20 16:38:30 -070025186 = pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ssId.ucLength;
25187
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025188 wpalMemoryCopy( pPrefNetwListParams->aNetworks[i].ssId.ssId,
Jeff Johnson295189b2012-06-20 16:38:30 -070025189 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ssId.sSSID,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025190 pPrefNetwListParams->aNetworks[i].ssId.length);
Jeff Johnson295189b2012-06-20 16:38:30 -070025191
25192 /*Authentication type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025193 pPrefNetwListParams->aNetworks[i].authentication =
Jeff Johnsone7245742012-09-05 17:12:55 -070025194 (tAuthType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiAuth;
Jeff Johnson295189b2012-06-20 16:38:30 -070025195
25196 /*Encryption type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025197 pPrefNetwListParams->aNetworks[i].encryption =
Jeff Johnsone7245742012-09-05 17:12:55 -070025198 (tEdType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiEncryption;
Jeff Johnson295189b2012-06-20 16:38:30 -070025199
25200 /*SSID bcast type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025201 pPrefNetwListParams->aNetworks[i].bcastNetworkType =
Jeff Johnsone7245742012-09-05 17:12:55 -070025202 (tSSIDBcastType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiBcastNetworkType;
Jeff Johnson295189b2012-06-20 16:38:30 -070025203
Jeff Johnsone7245742012-09-05 17:12:55 -070025204 /*Indicate the channel on which the Network can be found
Jeff Johnson295189b2012-06-20 16:38:30 -070025205 0 - if all channels */
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025206 pPrefNetwListParams->aNetworks[i].ucChannelCount =
Jeff Johnson295189b2012-06-20 16:38:30 -070025207 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ucChannelCount;
25208
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025209 wpalMemoryCopy(pPrefNetwListParams->aNetworks[i].aChannels,
Jeff Johnson295189b2012-06-20 16:38:30 -070025210 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].aChannels,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025211 pPrefNetwListParams->aNetworks[i].ucChannelCount);
Jeff Johnson295189b2012-06-20 16:38:30 -070025212
25213 /*Indicates the RSSI threshold for the network to be considered*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025214 pPrefNetwListParams->aNetworks[i].rssiThreshold =
Jeff Johnson295189b2012-06-20 16:38:30 -070025215 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].rssiThreshold;
25216
25217 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070025218 "WDI SET PNO: SSID %d %s",
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025219 pPrefNetwListParams->aNetworks[i].ssId.length,
25220 pPrefNetwListParams->aNetworks[i].ssId.ssId);
Jeff Johnson295189b2012-06-20 16:38:30 -070025221 }
25222
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025223 pPrefNetwListParams->scanTimers.ucScanTimersCount =
Jeff Johnsone7245742012-09-05 17:12:55 -070025224 (pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.ucScanTimersCount <
Jeff Johnson295189b2012-06-20 16:38:30 -070025225 WLAN_HAL_PNO_MAX_SCAN_TIMERS)?
25226 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.ucScanTimersCount :
25227 WLAN_HAL_PNO_MAX_SCAN_TIMERS;
25228
25229 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070025230 "WDI SET PNO: Scan timers count %d 24G P %d 5G Probe %d",
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025231 pPrefNetwListParams->scanTimers.ucScanTimersCount,
Jeff Johnson295189b2012-06-20 16:38:30 -070025232 pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize,
25233 pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize);
25234
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025235 for ( i = 0; i < pPrefNetwListParams->scanTimers.ucScanTimersCount; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070025236 {
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025237 pPrefNetwListParams->scanTimers.aTimerValues[i].uTimerValue =
Jeff Johnson295189b2012-06-20 16:38:30 -070025238 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.aTimerValues[i].uTimerValue;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025239 pPrefNetwListParams->scanTimers.aTimerValues[i].uTimerRepeat =
Jeff Johnson295189b2012-06-20 16:38:30 -070025240 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.aTimerValues[i].uTimerRepeat;
25241 }
25242
25243 /*Copy the probe template*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025244 pPrefNetwListParams->us24GProbeSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070025245 (pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize<
25246 WLAN_HAL_PNO_MAX_PROBE_SIZE)?
25247 pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize:
Jeff Johnsone7245742012-09-05 17:12:55 -070025248 WLAN_HAL_PNO_MAX_PROBE_SIZE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025249
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025250 wpalMemoryCopy(pPrefNetwListParams->a24GProbeTemplate,
Jeff Johnsone7245742012-09-05 17:12:55 -070025251 pwdiPNOScanReqParams->wdiPNOScanInfo.a24GProbeTemplate,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025252 pPrefNetwListParams->us24GProbeSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070025253
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025254 pPrefNetwListParams->us5GProbeSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070025255 (pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize <
25256 WLAN_HAL_PNO_MAX_PROBE_SIZE)?
25257 pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize:
Jeff Johnsone7245742012-09-05 17:12:55 -070025258 WLAN_HAL_PNO_MAX_PROBE_SIZE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025259
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025260 wpalMemoryCopy(pPrefNetwListParams->a5GProbeTemplate,
Jeff Johnsone7245742012-09-05 17:12:55 -070025261 pwdiPNOScanReqParams->wdiPNOScanInfo.a5GProbeTemplate,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025262 pPrefNetwListParams->us5GProbeSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070025263
Jeff Johnson295189b2012-06-20 16:38:30 -070025264
25265 /*Set the output values*/
25266 *ppSendBuffer = pSendBuffer;
Jeff Johnsone7245742012-09-05 17:12:55 -070025267 *pSize = usSendSize;
Jeff Johnson295189b2012-06-20 16:38:30 -070025268
25269 return WDI_STATUS_SUCCESS;
25270}/*WDI_PackPreferredNetworkListNew*/
25271
25272/**
25273 @brief Process Set Preferred Network List Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070025274
25275 @param pWDICtx: pointer to the WLAN DAL context
25276 pEventData: pointer to the event information structure
25277
Jeff Johnson295189b2012-06-20 16:38:30 -070025278 @return Result of the function call
25279*/
25280WDI_Status
25281WDI_ProcessSetPreferredNetworkReq
Jeff Johnsone7245742012-09-05 17:12:55 -070025282(
Jeff Johnson295189b2012-06-20 16:38:30 -070025283 WDI_ControlBlockType* pWDICtx,
25284 WDI_EventInfoType* pEventData
25285)
25286{
25287 WDI_PNOScanReqParamsType* pwdiPNOScanReqParams = NULL;
25288 WDI_PNOScanCb wdiPNOScanCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070025289 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070025290 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070025291 WDI_Status wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070025292
25293 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025294 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070025295 -------------------------------------------------------------------------*/
25296 if (( NULL == pEventData ) ||
25297 ( NULL == (pwdiPNOScanReqParams = (WDI_PNOScanReqParamsType*)pEventData->pEventData)) ||
25298 ( NULL == (wdiPNOScanCb = (WDI_PNOScanCb)pEventData->pCBfnc)))
25299 {
25300 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025301 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025302 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070025303 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025304 }
25305
Mahesh A Saptasagar3604e792014-04-23 20:47:26 +053025306 /*----------------------------------------------------------------------
25307 Avoid Enable PNO during any active session or an ongoing session
25308 ----------------------------------------------------------------------*/
25309 if ( (pwdiPNOScanReqParams->wdiPNOScanInfo.bEnable &&
25310 WDI_GetActiveSessionsCount(pWDICtx, NULL, eWLAN_PAL_FALSE)) )
25311 {
25312 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25313 "%s:(Active/Ongoing Session) - Fail request", __func__);
25314
25315 return WDI_STATUS_E_FAILURE;
25316 }
25317
Jeff Johnson295189b2012-06-20 16:38:30 -070025318 /*-------------------------------------------------------------------------
25319 Pack the PNO request structure based on version
25320 -------------------------------------------------------------------------*/
25321 if ( pWDICtx->wdiPNOVersion > 0 )
25322 {
25323 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025324 "%s: PNO new version %d ", __func__,
Jeff Johnson295189b2012-06-20 16:38:30 -070025325 pWDICtx->wdiPNOVersion);
25326
25327 wdiStatus = WDI_PackPreferredNetworkListNew( pWDICtx, pwdiPNOScanReqParams,
25328 &pSendBuffer, &usSendSize);
25329 }
25330 else
25331 {
25332 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025333 "%s: PNO old version %d ", __func__,
Jeff Johnson295189b2012-06-20 16:38:30 -070025334 pWDICtx->wdiPNOVersion);
25335
25336 wdiStatus = WDI_PackPreferredNetworkList( pWDICtx, pwdiPNOScanReqParams,
25337 &pSendBuffer, &usSendSize);
25338 }
25339
25340 if (( WDI_STATUS_SUCCESS != wdiStatus )||
25341 ( NULL == pSendBuffer )||( 0 == usSendSize ))
25342 {
25343 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025344 "%s: failed to pack request parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025345 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070025346 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070025347 }
25348
25349 pWDICtx->wdiReqStatusCB = pwdiPNOScanReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070025350 pWDICtx->pReqStatusUserData = pwdiPNOScanReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070025351
25352 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025353 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070025354 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025355 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
25356 wdiPNOScanCb, pEventData->pUserData, WDI_SET_PREF_NETWORK_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070025357}
25358
25359/**
25360 @brief Process Set RSSI Filter Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070025361
25362 @param pWDICtx: pointer to the WLAN DAL context
25363 pEventData: pointer to the event information structure
25364
Jeff Johnson295189b2012-06-20 16:38:30 -070025365 @see
25366 @return Result of the function call
25367*/
25368WDI_Status
25369WDI_ProcessSetRssiFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070025370(
Jeff Johnson295189b2012-06-20 16:38:30 -070025371 WDI_ControlBlockType* pWDICtx,
25372 WDI_EventInfoType* pEventData
25373)
25374{
25375 WDI_SetRssiFilterReqParamsType* pwdiRssiFilterReqParams = NULL;
25376 WDI_RssiFilterCb wdiRssiFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070025377 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070025378 wpt_uint16 usDataOffset = 0;
25379 wpt_uint16 usSendSize = 0;
25380 wpt_uint8 ucRssiThreshold;
25381
25382 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025383 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070025384 -------------------------------------------------------------------------*/
25385 if (( NULL == pEventData ) ||
25386 ( NULL == (pwdiRssiFilterReqParams = (WDI_SetRssiFilterReqParamsType*)pEventData->pEventData)) ||
25387 ( NULL == (wdiRssiFilterCb = (WDI_RssiFilterCb)pEventData->pCBfnc)))
25388 {
25389 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025390 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025391 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070025392 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025393 }
25394
25395 /*-----------------------------------------------------------------------
25396 Get message buffer
25397 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025398 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_PREF_NETWORK_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070025399 sizeof(ucRssiThreshold),
25400 &pSendBuffer, &usDataOffset, &usSendSize))||
25401 ( usSendSize < (usDataOffset + sizeof(ucRssiThreshold) )))
25402 {
25403 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080025404 "Unable to get send buffer in Set PNO req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070025405 pEventData, pwdiRssiFilterReqParams, wdiRssiFilterCb);
25406 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070025407 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025408 }
25409
25410 ucRssiThreshold = pwdiRssiFilterReqParams->rssiThreshold;
25411
Jeff Johnsone7245742012-09-05 17:12:55 -070025412 wpalMemoryCopy( pSendBuffer+usDataOffset,
25413 &ucRssiThreshold,
25414 sizeof(ucRssiThreshold));
Jeff Johnson295189b2012-06-20 16:38:30 -070025415
25416 pWDICtx->wdiReqStatusCB = pwdiRssiFilterReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070025417 pWDICtx->pReqStatusUserData = pwdiRssiFilterReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070025418
25419 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025420 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070025421 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025422 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
25423 wdiRssiFilterCb, pEventData->pUserData, WDI_SET_RSSI_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070025424}
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025425#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
25426/**
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025427 @brief WDI_RoamScanOffloadReq
Jeff Johnson295189b2012-06-20 16:38:30 -070025428
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025429 @param pwdiRoamScanOffloadReqParams: the LookupReq as specified
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025430 by the Device Interface
25431
25432 wdiRoamOffloadScancb: callback for passing back the response
25433 of the Roam Candidate Lookup Req operation received from the
25434 device
25435
25436 pUserData: user data will be passed back with the
25437 callback
25438 @return Result of the function call
25439*/
25440WDI_Status
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025441WDI_RoamScanOffloadReq
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025442(
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025443 WDI_RoamScanOffloadReqParamsType* pwdiRoamScanOffloadReqParams,
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025444 WDI_RoamOffloadScanCb wdiRoamOffloadScancb,
25445 void* pUserData
25446)
25447{
25448 WDI_EventInfoType wdiEventData = {{0}};
25449 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25450
25451 /*------------------------------------------------------------------------
25452 Sanity Check
25453 ------------------------------------------------------------------------*/
25454 if ( eWLAN_PAL_FALSE == gWDIInitialized )
25455 {
25456 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25457 "WDI API call before module is initialized - Fail request");
25458
25459 return WDI_STATUS_E_NOT_ALLOWED;
25460 }
25461
25462 /*------------------------------------------------------------------------
25463 Fill in Event data and post to the Main FSM
25464 ------------------------------------------------------------------------*/
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025465 wdiEventData.wdiRequest = WDI_ROAM_SCAN_OFFLOAD_REQ;
25466 wdiEventData.pEventData = pwdiRoamScanOffloadReqParams;
25467 wdiEventData.uEventDataSize = sizeof(*pwdiRoamScanOffloadReqParams);
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025468 wdiEventData.pCBfnc = wdiRoamOffloadScancb;
25469 wdiEventData.pUserData = pUserData;
25470
25471 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
25472}
25473
25474void
25475WDI_wdiEdTypeEncToEdTypeEnc(tEdType *EdType, WDI_EdType wdiEdType)
25476{
25477 switch (wdiEdType)
25478 {
25479 case WDI_ED_NONE:
25480 *EdType = eED_NONE;
25481 break;
25482 case WDI_ED_WEP40:
25483 case WDI_ED_WEP104:
25484 *EdType = eED_WEP;
25485 break;
25486 case WDI_ED_TKIP:
25487 *EdType = eED_TKIP;
25488 break;
25489 case WDI_ED_CCMP:
25490#ifdef WLAN_FEATURE_11W
25491 case WDI_ED_AES_128_CMAC:
25492#endif
25493 *EdType = eED_CCMP;
25494 break;
25495#ifdef FEATURE_WLAN_WAPI
25496 case WDI_ED_WPI:
25497 *EdType = eED_WPI;
25498 break;
25499#endif
25500 case WDI_ED_ANY:
25501 *EdType = eED_ANY;
25502 break;
25503
25504 default:
25505 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
25506 "%s: Unknown Encryption Type", __func__);
25507 break;
25508 }
25509}
25510
25511/**
25512 @brief Helper function to pack Start Roam Candidate Lookup
25513 Request parameters
25514
25515 @param pWDICtx: pointer to the WLAN DAL context
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025516 pwdiRoamScanOffloadReqParams: pointer to the info received
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025517 from upper layers
25518 ppSendBuffer, pSize - out pointers of the packed buffer
25519 and its size
25520
25521 @return Result of the function call
25522*/
25523
25524WDI_Status
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025525WDI_PackRoamScanOffloadParams
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025526(
25527 WDI_ControlBlockType* pWDICtx,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025528 WDI_RoamScanOffloadReqParamsType* pwdiRoamScanOffloadReqParams,
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025529 wpt_uint8** ppSendBuffer,
25530 wpt_uint16* pSize
25531)
25532{
25533 wpt_uint8* pSendBuffer = NULL;
25534 wpt_uint16 usDataOffset = 0;
25535 wpt_uint16 usSendSize = 0;
25536 tpRoamCandidateListParams pRoamCandidateListParams = NULL;
25537 wpt_uint8 i;
25538 /*-----------------------------------------------------------------------
25539 Get message buffer
25540 -----------------------------------------------------------------------*/
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025541 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ROAM_SCAN_OFFLOAD_REQ,
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025542 sizeof(tRoamCandidateListParams),
25543 &pSendBuffer, &usDataOffset, &usSendSize))||
Varun Reddy Yeturu83952072013-06-03 11:31:52 -070025544 ( usSendSize < (usDataOffset + sizeof(tRoamCandidateListParams) )))
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025545 {
25546 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080025547 "Unable to get send buffer in Start Roam Candidate Lookup Req %p",
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025548 pwdiRoamScanOffloadReqParams);
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025549 WDI_ASSERT(0);
25550 return WDI_STATUS_E_FAILURE;
25551 }
25552 pRoamCandidateListParams = (tpRoamCandidateListParams)(pSendBuffer + usDataOffset);
Varun Reddy Yeturu83952072013-06-03 11:31:52 -070025553 wpalMemoryZero(pRoamCandidateListParams, sizeof(tRoamCandidateListParams));
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025554 pRoamCandidateListParams->RoamScanOffloadEnabled = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.RoamScanOffloadEnabled;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025555 wpalMemoryCopy(pRoamCandidateListParams->ConnectedNetwork.currAPbssid,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025556 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.currAPbssid,
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025557 HAL_MAC_ADDR_LEN);
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025558 pRoamCandidateListParams->ConnectedNetwork.authentication = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.authentication;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025559 WDI_wdiEdTypeEncToEdTypeEnc(&pRoamCandidateListParams->ConnectedNetwork.encryption,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025560 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.encryption);
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025561 WDI_wdiEdTypeEncToEdTypeEnc(&pRoamCandidateListParams->ConnectedNetwork.mcencryption,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025562 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.mcencryption);
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025563
25564 pRoamCandidateListParams->ConnectedNetwork.ssId.length
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025565 = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.ssId.ucLength;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025566 wpalMemoryCopy( pRoamCandidateListParams->ConnectedNetwork.ssId.ssId,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025567 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.ssId.sSSID,
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025568 pRoamCandidateListParams->ConnectedNetwork.ssId.length);
25569 wpalMemoryCopy(pRoamCandidateListParams->ConnectedNetwork.ChannelCache,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025570 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.ChannelCache,
25571 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.ChannelCount );
25572 pRoamCandidateListParams->ConnectedNetwork.ChannelCount = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.ChannelCount;
25573 pRoamCandidateListParams->ChannelCacheType = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ChannelCacheType ;
25574 pRoamCandidateListParams->LookupThreshold = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.LookupThreshold;
Varun Reddy Yeturu6c5e25c2014-01-09 21:55:37 -080025575 pRoamCandidateListParams->RxSensitivityThreshold = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.RxSensitivityThreshold;
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025576 pRoamCandidateListParams->RoamRssiDiff = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.RoamRssiDiff ;
Sameer Thalappil4ae66ec2013-11-05 14:17:35 -080025577 pRoamCandidateListParams->MAWCEnabled = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.MAWCEnabled ;
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025578 pRoamCandidateListParams->Command = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.Command ;
25579 pRoamCandidateListParams->StartScanReason = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.StartScanReason ;
25580 pRoamCandidateListParams->NeighborScanTimerPeriod = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.NeighborScanTimerPeriod ;
25581 pRoamCandidateListParams->NeighborRoamScanRefreshPeriod = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.NeighborRoamScanRefreshPeriod ;
25582 pRoamCandidateListParams->NeighborScanChannelMinTime = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.NeighborScanChannelMinTime ;
25583 pRoamCandidateListParams->NeighborScanChannelMaxTime = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.NeighborScanChannelMaxTime ;
25584 pRoamCandidateListParams->EmptyRefreshScanPeriod = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.EmptyRefreshScanPeriod ;
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -080025585 pRoamCandidateListParams->IsESEEnabled = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.IsESEEnabled ;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025586 wpalMemoryCopy(pRoamCandidateListParams->ValidChannelList,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025587 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ValidChannelList,
25588 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ValidChannelCount);
25589 pRoamCandidateListParams->ValidChannelCount = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ValidChannelCount;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025590
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025591 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO_HIGH,
25592 "Values are ssid = %s, RoamOffloadScan=%d,Command=%d,"
25593 "StartScanReason=%d,NeighborScanTimerPeriod=%d,"
25594 "NeighborRoamScanRefreshPeriod=%d,NeighborScanChannelMinTime=%d,"
25595 "NeighborScanChannelMaxTime = %d,EmptyRefreshScanPeriod=%d,"
25596 "mdiePresent=%d,MDID=%d, auth=%d, uce=%d, mce=%d, nProbes=%d,"
Arif Hussain9a5d5382013-11-17 22:05:35 -080025597 "HomeAwayTime=%d",
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025598 pRoamCandidateListParams->ConnectedNetwork.ssId.ssId,
25599 pRoamCandidateListParams->RoamScanOffloadEnabled,
25600 pRoamCandidateListParams->Command,
25601 pRoamCandidateListParams->StartScanReason,
25602 pRoamCandidateListParams->NeighborScanTimerPeriod,
25603 pRoamCandidateListParams->NeighborRoamScanRefreshPeriod,
25604 pRoamCandidateListParams->NeighborScanChannelMinTime,
25605 pRoamCandidateListParams->NeighborScanChannelMaxTime,
25606 pRoamCandidateListParams->EmptyRefreshScanPeriod,
25607 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.MDID.mdiePresent,
25608 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.MDID.mobilityDomain,
25609 pRoamCandidateListParams->ConnectedNetwork.authentication,
25610 pRoamCandidateListParams->ConnectedNetwork.encryption,
25611 pRoamCandidateListParams->ConnectedNetwork.mcencryption,
25612 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.nProbes,
25613 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.HomeAwayTime);
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025614 pRoamCandidateListParams->us24GProbeSize =
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025615 (pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.us24GProbeSize<
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025616 WLAN_HAL_ROAM_SCAN_MAX_PROBE_SIZE)?
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025617 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.us24GProbeSize:
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025618 WLAN_HAL_ROAM_SCAN_MAX_PROBE_SIZE;
25619 wpalMemoryCopy(pRoamCandidateListParams->a24GProbeTemplate,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025620 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.a24GProbeTemplate,
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025621 pRoamCandidateListParams->us24GProbeSize);
25622 pRoamCandidateListParams->us5GProbeSize =
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025623 (pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.us5GProbeSize<
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025624 WLAN_HAL_ROAM_SCAN_MAX_PROBE_SIZE)?
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025625 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.us5GProbeSize:
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025626 WLAN_HAL_ROAM_SCAN_MAX_PROBE_SIZE;
25627 wpalMemoryCopy(pRoamCandidateListParams->a5GProbeTemplate,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025628 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.a5GProbeTemplate,
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025629 pRoamCandidateListParams->us5GProbeSize);
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025630 pRoamCandidateListParams->MDID.mdiePresent = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.MDID.mdiePresent;
25631 pRoamCandidateListParams->MDID.mobilityDomain = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.MDID.mobilityDomain;
25632 pRoamCandidateListParams->nProbes =
25633 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.nProbes;
25634 pRoamCandidateListParams->HomeAwayTime =
25635 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.HomeAwayTime;
25636 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO_HIGH,"Valid Channel List");
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025637 for (i=0; i<pRoamCandidateListParams->ValidChannelCount ; i++)
25638 {
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025639 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO_HIGH,"%d", pRoamCandidateListParams->ValidChannelList[i]);
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025640 }
25641
25642
25643 /*Set the output values*/
25644 *ppSendBuffer = pSendBuffer;
25645 *pSize = usSendSize;
25646 return WDI_STATUS_SUCCESS;
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025647}/*WDI_PackRoamScanOffloadParams*/
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025648
25649/**
25650 @brief Process Start Roam Candidate Lookup Request function
25651
25652 @param pWDICtx: pointer to the WLAN DAL context
25653 pEventData: pointer to the event information structure
25654
25655 @return Result of the function call
25656*/
25657WDI_Status
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025658WDI_ProcessRoamScanOffloadReq
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025659(
25660 WDI_ControlBlockType* pWDICtx,
25661 WDI_EventInfoType* pEventData
25662)
25663{
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025664 WDI_RoamScanOffloadReqParamsType* pwdiRoamScanOffloadReqParams = NULL;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025665 WDI_RoamOffloadScanCb wdiRoamOffloadScancb = NULL;
25666 wpt_uint8* pSendBuffer = NULL;
25667 wpt_uint16 usSendSize = 0;
25668 WDI_Status wdiStatus;
25669 /*-------------------------------------------------------------------------
25670 Sanity check
25671 -------------------------------------------------------------------------*/
25672 if (( NULL == pEventData ) ||
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025673 ( NULL == (pwdiRoamScanOffloadReqParams = (WDI_RoamScanOffloadReqParamsType*)pEventData->pEventData)) ||
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025674 ( NULL == (wdiRoamOffloadScancb = (WDI_RoamOffloadScanCb)pEventData->pCBfnc)))
25675 {
25676 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
25677 "%s: Invalid parameters", __func__);
25678 WDI_ASSERT(0);
25679 return WDI_STATUS_E_FAILURE;
25680 }
25681
25682 /*-------------------------------------------------------------------------
25683 Pack the Start Roam Candidate Lookup request structure based on version
25684 -------------------------------------------------------------------------*/
25685 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
25686 "%s: Packing Roam Candidate Lookup request ", __func__);
25687
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025688 wdiStatus = WDI_PackRoamScanOffloadParams( pWDICtx, pwdiRoamScanOffloadReqParams,
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025689 &pSendBuffer, &usSendSize);
25690
25691 if (( WDI_STATUS_SUCCESS != wdiStatus )||
25692 ( NULL == pSendBuffer )||( 0 == usSendSize ))
25693 {
25694 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
25695 "%s: failed to pack request parameters", __func__);
25696 WDI_ASSERT(0);
25697 return wdiStatus;
25698 }
25699
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025700 pWDICtx->wdiReqStatusCB = pwdiRoamScanOffloadReqParams->wdiReqStatusCB;
25701 pWDICtx->pReqStatusUserData = pwdiRoamScanOffloadReqParams->pUserData;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025702
25703 /*-------------------------------------------------------------------------
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025704 Send WDI_ROAM_SCAN_OFFLOAD_REQ to HAL
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025705 -------------------------------------------------------------------------*/
25706 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025707 wdiRoamOffloadScancb, pEventData->pUserData, WDI_ROAM_SCAN_OFFLOAD_RESP);
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025708}
25709
25710/**
25711 @brief Process Start Roam Candidate Lookup Rsp function (called when a
25712 response is being received over the bus from HAL)
25713
25714 @param pWDICtx: pointer to the WLAN DAL context
25715 pEventData: pointer to the event information structure
25716
25717 @see
25718 @return Result of the function call
25719*/
25720WDI_Status
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025721WDI_ProcessRoamScanOffloadRsp
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025722(
25723 WDI_ControlBlockType* pWDICtx,
25724 WDI_EventInfoType* pEventData
25725)
25726{
25727 WDI_Status wdiStatus;
25728 eHalStatus halStatus;
25729 WDI_RoamOffloadScanCb wdiRoamOffloadScancb = NULL;
25730
25731 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25732
25733 /*-------------------------------------------------------------------------
25734 Sanity check
25735 -------------------------------------------------------------------------*/
25736 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
25737 ( NULL == pEventData->pEventData ))
25738 {
25739 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
25740 "%s: Invalid parameters", __func__);
25741 WDI_ASSERT(0);
25742 return WDI_STATUS_E_FAILURE;
25743 }
25744
25745 wdiRoamOffloadScancb = (WDI_RoamOffloadScanCb)pWDICtx->pfncRspCB;
25746
25747 /*-------------------------------------------------------------------------
25748 Extract response and send it to UMAC
25749 -------------------------------------------------------------------------*/
25750 halStatus = *((eHalStatus*)pEventData->pEventData);
25751 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
25752
25753 /*Notify UMAC*/
25754 wdiRoamOffloadScancb(wdiStatus, pWDICtx->pRspCBUserData);
25755
25756 return WDI_STATUS_SUCCESS;
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025757}/* WDI_ProcessRoamScanOffloadRsp */
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025758#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070025759
25760/**
25761 @brief Process Update Scan Params function
Jeff Johnsone7245742012-09-05 17:12:55 -070025762
25763 @param pWDICtx: pointer to the WLAN DAL context
25764 pEventData: pointer to the event information structure
25765
Jeff Johnson295189b2012-06-20 16:38:30 -070025766 @see
25767 @return Result of the function call
25768*/
25769WDI_Status
Pratik Bhalgatd4404592012-11-22 17:49:14 +053025770WDI_PackUpdateScanParamsReq
25771(
25772 WDI_ControlBlockType* pWDICtx,
25773 WDI_UpdateScanParamsInfoType* pwdiUpdateScanParams,
25774 wpt_uint8** ppSendBuffer,
25775 wpt_uint16* pSize
25776)
25777{
25778 wpt_uint8* pSendBuffer = NULL;
25779 wpt_uint16 usDataOffset = 0;
25780 wpt_uint16 usSendSize = 0;
25781 tUpdateScanParams updateScanParams = {0};
25782
25783
Varun Reddy Yeturuf68abd62013-02-11 14:05:06 -080025784 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Pratik Bhalgatd4404592012-11-22 17:49:14 +053025785 "Begin WDI Update Scan Parameters Old Style Params");
25786 /*-----------------------------------------------------------------------
25787 Get message buffer
25788 -----------------------------------------------------------------------*/
25789 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_SCAN_PARAMS_REQ,
25790 sizeof(updateScanParams),
25791 &pSendBuffer, &usDataOffset, &usSendSize))||
25792 ( usSendSize < (usDataOffset + sizeof(updateScanParams) )))
25793 {
25794 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080025795 "Unable to get send buffer in Update Scan Params req %p",
Pratik Bhalgatd4404592012-11-22 17:49:14 +053025796 pwdiUpdateScanParams);
25797 WDI_ASSERT(0);
25798 return WDI_STATUS_E_FAILURE;
25799 }
25800
25801 //
25802 // Fill updateScanParams from pwdiUpdateScanParams->wdiUpdateScanParamsInfo
25803 //
25804
25805 updateScanParams.b11dEnabled = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.b11dEnabled;
25806 updateScanParams.b11dResolved = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.b11dResolved;
25807
25808 updateScanParams.ucChannelCount =
25809 (pwdiUpdateScanParams->wdiUpdateScanParamsInfo.ucChannelCount <
25810 WLAN_HAL_PNO_MAX_NETW_CHANNELS)?
25811 pwdiUpdateScanParams->wdiUpdateScanParamsInfo.ucChannelCount :
25812 WLAN_HAL_PNO_MAX_NETW_CHANNELS;
25813
25814 wpalMemoryCopy( updateScanParams.aChannels,
25815 pwdiUpdateScanParams->wdiUpdateScanParamsInfo.aChannels,
25816 updateScanParams.ucChannelCount);
25817
25818
25819 updateScanParams.usActiveMinChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usActiveMinChTime;
25820 updateScanParams.usActiveMaxChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usActiveMaxChTime;
25821 updateScanParams.usPassiveMinChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usPassiveMinChTime;
25822 updateScanParams.usPassiveMaxChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usPassiveMaxChTime;
25823 updateScanParams.cbState = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.cbState;
25824
25825 wpalMemoryCopy( pSendBuffer+usDataOffset,
25826 &updateScanParams,
25827 sizeof(updateScanParams));
25828
25829 pWDICtx->wdiReqStatusCB = pwdiUpdateScanParams->wdiReqStatusCB;
25830 pWDICtx->pReqStatusUserData = pwdiUpdateScanParams->pUserData;
25831
Varun Reddy Yeturuf68abd62013-02-11 14:05:06 -080025832 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Pratik Bhalgatd4404592012-11-22 17:49:14 +053025833 "End Update Scan Parameters Old Style");
25834
25835 /*Set the output values*/
25836 *ppSendBuffer = pSendBuffer;
25837 *pSize = usSendSize;
25838
25839 return WDI_STATUS_SUCCESS;
25840}
25841
25842/**
25843 @brief Process Update Scan Params function
25844
25845 @param pWDICtx: pointer to the WLAN DAL context
25846 pEventData: pointer to the event information structure
25847
25848 @see
25849 @return Result of the function call
25850*/
25851WDI_Status
25852WDI_PackUpdateScanParamsReqEx
25853(
25854 WDI_ControlBlockType* pWDICtx,
25855 WDI_UpdateScanParamsInfoType* pwdiUpdateScanParams,
25856 wpt_uint8** ppSendBuffer,
25857 wpt_uint16* pSize
25858)
25859{
25860 wpt_uint8* pSendBuffer = NULL;
25861 wpt_uint16 usDataOffset = 0;
25862 wpt_uint16 usSendSize = 0;
25863 tUpdateScanParamsEx updateScanParams = {0};
25864
25865
Pratik Bhalgatd4404592012-11-22 17:49:14 +053025866 /*-----------------------------------------------------------------------
25867 Get message buffer
25868 -----------------------------------------------------------------------*/
25869 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_SCAN_PARAMS_REQ,
25870 sizeof(updateScanParams),
25871 &pSendBuffer, &usDataOffset, &usSendSize))||
25872 ( usSendSize < (usDataOffset + sizeof(updateScanParams) )))
25873 {
25874 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080025875 "Unable to get send buffer in Update Scan Params Ex req %p",
Pratik Bhalgatd4404592012-11-22 17:49:14 +053025876 pwdiUpdateScanParams);
25877 WDI_ASSERT(0);
25878 return WDI_STATUS_E_FAILURE;
25879 }
25880
25881 //
25882 // Fill updateScanParams from pwdiUpdateScanParams->wdiUpdateScanParamsInfo
25883 //
25884
25885 updateScanParams.b11dEnabled = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.b11dEnabled;
25886 updateScanParams.b11dResolved = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.b11dResolved;
25887
25888 updateScanParams.ucChannelCount =
25889 (pwdiUpdateScanParams->wdiUpdateScanParamsInfo.ucChannelCount <
25890 WLAN_HAL_PNO_MAX_NETW_CHANNELS_EX)?
25891 pwdiUpdateScanParams->wdiUpdateScanParamsInfo.ucChannelCount :
25892 WLAN_HAL_PNO_MAX_NETW_CHANNELS_EX;
25893
25894 wpalMemoryCopy( updateScanParams.aChannels,
25895 pwdiUpdateScanParams->wdiUpdateScanParamsInfo.aChannels,
25896 updateScanParams.ucChannelCount);
25897
25898
25899 updateScanParams.usActiveMinChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usActiveMinChTime;
25900 updateScanParams.usActiveMaxChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usActiveMaxChTime;
25901 updateScanParams.usPassiveMinChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usPassiveMinChTime;
25902 updateScanParams.usPassiveMaxChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usPassiveMaxChTime;
25903 updateScanParams.cbState = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.cbState;
25904
25905 wpalMemoryCopy( pSendBuffer+usDataOffset,
25906 &updateScanParams,
25907 sizeof(updateScanParams));
25908
25909 pWDICtx->wdiReqStatusCB = pwdiUpdateScanParams->wdiReqStatusCB;
25910 pWDICtx->pReqStatusUserData = pwdiUpdateScanParams->pUserData;
25911
Pratik Bhalgatd4404592012-11-22 17:49:14 +053025912 /*Set the output values*/
25913 *ppSendBuffer = pSendBuffer;
25914 *pSize = usSendSize;
25915
25916 return WDI_STATUS_SUCCESS;
25917}
25918
25919/**
25920 @brief Process Update Scan Params function
25921
25922 @param pWDICtx: pointer to the WLAN DAL context
25923 pEventData: pointer to the event information structure
25924
25925 @see
25926 @return Result of the function call
25927*/
25928WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070025929WDI_ProcessUpdateScanParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070025930(
Jeff Johnson295189b2012-06-20 16:38:30 -070025931 WDI_ControlBlockType* pWDICtx,
25932 WDI_EventInfoType* pEventData
25933)
25934{
25935 WDI_UpdateScanParamsInfoType* pwdiUpdateScanParams = NULL;
25936 WDI_UpdateScanParamsCb wdiUpdateScanParamsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070025937 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070025938 wpt_uint16 usSendSize = 0;
Pullela Naga Venkata Sai Ravaliab91c6b2012-12-27 17:31:42 -080025939 WDI_Status wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070025940
25941 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025942 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070025943 -------------------------------------------------------------------------*/
25944 if (( NULL == pEventData ) ||
25945 ( NULL == (pwdiUpdateScanParams = (WDI_UpdateScanParamsInfoType*)pEventData->pEventData)) ||
25946 ( NULL == (wdiUpdateScanParamsCb = (WDI_UpdateScanParamsCb)pEventData->pCBfnc)))
25947 {
25948 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025949 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025950 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070025951 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025952 }
25953
25954 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
25955 "Begin WDI Update Scan Parameters");
Jeff Johnson295189b2012-06-20 16:38:30 -070025956
25957 //
25958 // Fill updateScanParams from pwdiUpdateScanParams->wdiUpdateScanParamsInfo
25959 //
Pratik Bhalgatd4404592012-11-22 17:49:14 +053025960 if ( pWDICtx->wlanVersion.revision < 1 )
25961 {
Pullela Naga Venkata Sai Ravaliab91c6b2012-12-27 17:31:42 -080025962 wdiStatus = WDI_PackUpdateScanParamsReq( pWDICtx, pwdiUpdateScanParams,
Pratik Bhalgatd4404592012-11-22 17:49:14 +053025963 &pSendBuffer, &usSendSize);
25964 }
25965 else
25966 {
Pullela Naga Venkata Sai Ravaliab91c6b2012-12-27 17:31:42 -080025967 wdiStatus = WDI_PackUpdateScanParamsReqEx( pWDICtx, pwdiUpdateScanParams,
25968 &pSendBuffer, &usSendSize);
25969 }
25970
25971 if(WDI_STATUS_SUCCESS != wdiStatus)
25972 {
25973 //memory allocation failed
25974 return WDI_STATUS_E_FAILURE;
Pratik Bhalgatd4404592012-11-22 17:49:14 +053025975 }
Jeff Johnson295189b2012-06-20 16:38:30 -070025976
Jeff Johnson295189b2012-06-20 16:38:30 -070025977 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025978 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070025979 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025980 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Pratik Bhalgatd4404592012-11-22 17:49:14 +053025981 wdiUpdateScanParamsCb, pEventData->pUserData,
25982 WDI_UPDATE_SCAN_PARAMS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070025983}
25984
25985/**
Manjunathappa Prakash86f78ca2014-02-10 18:09:15 -080025986 @brief Process Update Channel Params function
25987
25988 @param pWDICtx: pointer to the WLAN DAL context
25989 pEventData: pointer to the event information structure
25990
25991 @see
25992 @return Result of the function call
25993*/
25994WDI_Status
25995WDI_ProcessUpdateChannelParamsReq
25996(
25997 WDI_ControlBlockType* pWDICtx,
25998 WDI_EventInfoType* pEventData
25999)
26000{
26001 WDI_UpdateChReqParamsType *pwdiUpdateChanListParams = NULL;
26002 WDI_UpdateChannelRspCb wdiUpdateChanParamsCb = NULL;
26003 wpt_uint8* pSendBuffer = NULL;
26004 wpt_uint16 usDataOffset = 0;
26005 wpt_uint16 usSendSize = 0;
26006 tUpdateChannelReqType *updateChannelParams;
26007 wpt_uint32 usUpdateChanParamSize;
26008 wpt_uint8 num_channels = 0;
26009
26010 /*-------------------------------------------------------------------------
26011 Sanity check
26012 -------------------------------------------------------------------------*/
26013 if (( NULL == pEventData ) ||
26014 ( NULL == (pwdiUpdateChanListParams = (WDI_UpdateChReqParamsType*)pEventData->pEventData)) ||
26015 ( NULL == (wdiUpdateChanParamsCb = (WDI_UpdateChannelRspCb)pEventData->pCBfnc)))
26016 {
26017 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
26018 "%s: Invalid parameters", __func__);
26019 WDI_ASSERT(0);
26020 return WDI_STATUS_E_FAILURE;
26021 }
26022 num_channels = pwdiUpdateChanListParams->wdiUpdateChanParams.numchan;
26023 usUpdateChanParamSize = (sizeof(tUpdateChannelReqType) -
26024 ((WLAN_HAL_ROAM_SCAN_MAX_CHANNELS - num_channels) *
26025 sizeof(tUpdateChannelParam)));
26026
26027 /*-----------------------------------------------------------------------
26028 Get message buffer
26029 -----------------------------------------------------------------------*/
26030 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
26031 WDI_UPDATE_CHAN_REQ, usUpdateChanParamSize,
26032 &pSendBuffer, &usDataOffset, &usSendSize))||
26033 ( usSendSize < (usDataOffset + usUpdateChanParamSize)))
26034 {
26035 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
26036 "Unable to get send buffer in Update Channel Params req %p",
26037 pwdiUpdateChanListParams);
26038 WDI_ASSERT(0);
26039 return WDI_STATUS_E_FAILURE;
26040 }
26041 updateChannelParams = (tUpdateChannelReqType *)(pSendBuffer + usDataOffset);
26042
26043 updateChannelParams->numChan = num_channels;
26044 wpalMemoryCopy(&updateChannelParams->chanParam,
26045 pwdiUpdateChanListParams->wdiUpdateChanParams.pchanParam,
26046 sizeof(WDI_UpdateChannelReqinfoType) * num_channels);
26047
26048 pWDICtx->wdiReqStatusCB = pwdiUpdateChanListParams->wdiReqStatusCB;
26049 pWDICtx->pReqStatusUserData = pwdiUpdateChanListParams->pUserData;
26050
26051 /*-------------------------------------------------------------------------
26052 Send Update channel request to fw
26053 -------------------------------------------------------------------------*/
26054 return WDI_SendMsg(pWDICtx, pSendBuffer, usSendSize,
26055 wdiUpdateChanParamsCb, pEventData->pUserData,
26056 WDI_UPDATE_CHAN_RESP);
26057}
26058
26059/**
Jeff Johnson295189b2012-06-20 16:38:30 -070026060 @brief Process Preferred Network Found Indication function
Jeff Johnsone7245742012-09-05 17:12:55 -070026061
26062 @param pWDICtx: pointer to the WLAN DAL context
26063 pEventData: pointer to the event information structure
26064
Jeff Johnson295189b2012-06-20 16:38:30 -070026065 @see
26066 @return Result of the function call
26067*/
26068WDI_Status
26069WDI_ProcessPrefNetworkFoundInd
Jeff Johnsone7245742012-09-05 17:12:55 -070026070(
Jeff Johnson295189b2012-06-20 16:38:30 -070026071 WDI_ControlBlockType* pWDICtx,
26072 WDI_EventInfoType* pEventData
26073)
26074{
Srikant Kuppa066904f2013-05-07 13:56:02 -070026075 WDI_LowLevelIndType wdiInd;
26076 tpPrefNetwFoundParams pNetwFoundParams;
26077 wpt_uint32 msgsize;
Jeff Johnson295189b2012-06-20 16:38:30 -070026078
26079
26080 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026081 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070026082 -------------------------------------------------------------------------*/
26083 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
26084 ( NULL == pEventData->pEventData ))
26085 {
26086 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026087 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026088 WDI_ASSERT( 0 );
Jeff Johnsone7245742012-09-05 17:12:55 -070026089 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026090 }
26091
26092 /*-------------------------------------------------------------------------
26093 Extract indication and send it to UMAC
26094 -------------------------------------------------------------------------*/
Srikant Kuppa066904f2013-05-07 13:56:02 -070026095 pNetwFoundParams = (tpPrefNetwFoundParams)(pEventData->pEventData);
26096
26097 msgsize = sizeof(tPrefNetwFoundParams) + pNetwFoundParams->frameLength;
26098 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.pData =
26099 (wpt_uint8 *)wpalMemoryAllocate(msgsize);
26100
26101 if (NULL == wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.pData)
26102 {
26103 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
26104 "%s: fail to allocate memory", __func__);
26105 return WDI_STATUS_MEM_FAILURE;
26106 }
26107
26108 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.ucLength =
26109 (pNetwFoundParams->ssId.length < 32 )?
26110 pNetwFoundParams->ssId.length : 32;
26111 wpalMemoryCopy( wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.sSSID,
26112 pNetwFoundParams->ssId.ssId,
26113 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.ucLength);
26114 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.rssi = pNetwFoundParams->rssi;
26115 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.frameLength =
26116 pNetwFoundParams->frameLength;
26117 wpalMemoryCopy( wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.pData,
26118 (wpt_uint8 *)pEventData->pEventData + sizeof(tPrefNetwFoundParams),
26119 pNetwFoundParams->frameLength);
Jeff Johnson295189b2012-06-20 16:38:30 -070026120
26121 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070026122 wdiInd.wdiIndicationType = WDI_PREF_NETWORK_FOUND_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070026123
Jeff Johnson295189b2012-06-20 16:38:30 -070026124 // DEBUG
26125 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Wilson Yang56002a22013-08-28 17:55:56 -070026126 "[PNO WDI] PREF_NETWORK_FOUND_IND Type (%x) data (SSID=%.*s, LENGTH=%u, RSSI=%u)",
Jeff Johnson295189b2012-06-20 16:38:30 -070026127 wdiInd.wdiIndicationType,
Wilson Yang56002a22013-08-28 17:55:56 -070026128 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.ucLength,
Jeff Johnson295189b2012-06-20 16:38:30 -070026129 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.sSSID,
Wilson Yang56002a22013-08-28 17:55:56 -070026130 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.ucLength,
Jeff Johnson295189b2012-06-20 16:38:30 -070026131 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.rssi );
26132
ltimariub77f24b2013-01-24 18:54:33 -080026133 if ( pWDICtx->wdiLowLevelIndCB )
26134 {
26135 /*Notify UMAC*/
26136 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
26137 }
Jeff Johnsone7245742012-09-05 17:12:55 -070026138
26139 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070026140}
26141
26142/**
26143 @brief Process PNO Rsp function (called when a
26144 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070026145
26146 @param pWDICtx: pointer to the WLAN DAL context
26147 pEventData: pointer to the event information structure
26148
Jeff Johnson295189b2012-06-20 16:38:30 -070026149 @see
26150 @return Result of the function call
26151*/
26152WDI_Status
26153WDI_ProcessSetPreferredNetworkRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070026154(
Jeff Johnson295189b2012-06-20 16:38:30 -070026155 WDI_ControlBlockType* pWDICtx,
26156 WDI_EventInfoType* pEventData
26157)
26158{
26159 WDI_Status wdiStatus;
26160 eHalStatus halStatus;
26161 WDI_PNOScanCb wdiPNOScanCb = NULL;
26162 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26163
26164 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026165 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070026166 -------------------------------------------------------------------------*/
26167 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
26168 ( NULL == pEventData->pEventData ))
26169 {
26170 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026171 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026172 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026173 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026174 }
26175
26176
Jeff Johnsone7245742012-09-05 17:12:55 -070026177 wdiPNOScanCb = (WDI_PNOScanCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070026178
26179 /*-------------------------------------------------------------------------
26180 Extract response and send it to UMAC
26181 -------------------------------------------------------------------------*/
26182 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070026183 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070026184
26185 /*Notify UMAC*/
26186 wdiPNOScanCb(wdiStatus, pWDICtx->pRspCBUserData);
26187
Jeff Johnsone7245742012-09-05 17:12:55 -070026188 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070026189}/*WDI_ProcessSetPreferredNetworkRsp*/
26190
26191/**
26192 @brief Process RSSI Filter Rsp function (called when a
26193 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070026194
26195 @param pWDICtx: pointer to the WLAN DAL context
26196 pEventData: pointer to the event information structure
26197
Jeff Johnson295189b2012-06-20 16:38:30 -070026198 @see
26199 @return Result of the function call
26200*/
26201WDI_Status
26202WDI_ProcessSetRssiFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070026203(
Jeff Johnson295189b2012-06-20 16:38:30 -070026204 WDI_ControlBlockType* pWDICtx,
26205 WDI_EventInfoType* pEventData
26206)
26207{
26208 WDI_Status wdiStatus;
26209 eHalStatus halStatus;
26210 WDI_RssiFilterCb wdiRssiFilterCb;
26211 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26212
26213 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026214 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070026215 -------------------------------------------------------------------------*/
26216 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
26217 ( NULL == pEventData->pEventData ))
26218 {
26219 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026220 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026221 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026222 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026223 }
26224
Jeff Johnsone7245742012-09-05 17:12:55 -070026225 wdiRssiFilterCb = (WDI_RssiFilterCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070026226
26227 /*-------------------------------------------------------------------------
26228 Extract response and send it to UMAC
26229 -------------------------------------------------------------------------*/
26230 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070026231 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070026232
26233 /*Notify UMAC*/
26234 wdiRssiFilterCb(wdiStatus, pWDICtx->pRspCBUserData);
26235
Jeff Johnsone7245742012-09-05 17:12:55 -070026236 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070026237}/*WDI_ProcessSetRssiFilterRsp*/
26238
26239/**
26240 @brief Process Update Scan Params Rsp function (called when a
26241 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070026242
26243 @param pWDICtx: pointer to the WLAN DAL context
26244 pEventData: pointer to the event information structure
26245
Jeff Johnson295189b2012-06-20 16:38:30 -070026246 @see
26247 @return Result of the function call
26248*/
26249WDI_Status
26250WDI_ProcessUpdateScanParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070026251(
Jeff Johnson295189b2012-06-20 16:38:30 -070026252 WDI_ControlBlockType* pWDICtx,
26253 WDI_EventInfoType* pEventData
26254)
26255{
26256 WDI_Status wdiStatus;
Jeff Johnsone7245742012-09-05 17:12:55 -070026257 tUpdateScanParamsResp halUpdScanParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070026258 WDI_UpdateScanParamsCb wdiUpdateScanParamsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070026259 wpt_uint32 uStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070026260 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26261
26262 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026263 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070026264 -------------------------------------------------------------------------*/
26265 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
26266 ( NULL == pEventData->pEventData ))
26267 {
26268 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026269 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026270 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026271 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026272 }
26273
26274 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080026275 "%s: Process UPD scan params ptr : %p",
26276 __func__, pEventData->pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070026277
Jeff Johnsone7245742012-09-05 17:12:55 -070026278 wdiUpdateScanParamsCb = (WDI_UpdateScanParamsCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070026279
26280 /*-------------------------------------------------------------------------
26281 Extract response and send it to UMAC
26282 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070026283 wpalMemoryCopy( (void *)&halUpdScanParams.status,
26284 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070026285 sizeof(halUpdScanParams.status));
26286
26287 uStatus = halUpdScanParams.status;
26288
26289 /*Extract PNO version - 1st bit of the status */
Jeff Johnsone7245742012-09-05 17:12:55 -070026290 pWDICtx->wdiPNOVersion = (uStatus & WDI_PNO_VERSION_MASK)? 1:0;
Jeff Johnson295189b2012-06-20 16:38:30 -070026291
26292 /*Remove version bit*/
Jeff Johnsone7245742012-09-05 17:12:55 -070026293 uStatus = uStatus & ( ~(WDI_PNO_VERSION_MASK));
Jeff Johnson295189b2012-06-20 16:38:30 -070026294
Jeff Johnsone7245742012-09-05 17:12:55 -070026295 wdiStatus = WDI_HAL_2_WDI_STATUS(uStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070026296
26297 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070026298 "UPD Scan Parameters rsp with status: %d",
Jeff Johnson295189b2012-06-20 16:38:30 -070026299 halUpdScanParams.status);
26300
26301 /*Notify UMAC*/
26302 wdiUpdateScanParamsCb(wdiStatus, pWDICtx->pRspCBUserData);
26303
Jeff Johnsone7245742012-09-05 17:12:55 -070026304 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070026305}
26306#endif // FEATURE_WLAN_SCAN_PNO
26307
26308#ifdef WLAN_FEATURE_PACKET_FILTERING
Jeff Johnsone7245742012-09-05 17:12:55 -070026309WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070026310WDI_8023MulticastListReq
26311(
26312 WDI_RcvFltPktSetMcListReqParamsType* pwdiRcvFltPktSetMcListReqInfo,
26313 WDI_8023MulticastListCb wdi8023MulticastListCallback,
26314 void* pUserData
26315)
26316{
26317 WDI_EventInfoType wdiEventData;
26318 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26319
26320 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026321 "%s", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026322
26323 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026324 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070026325 ------------------------------------------------------------------------*/
26326 if ( eWLAN_PAL_FALSE == gWDIInitialized )
26327 {
26328 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
26329 "WDI API call before module is initialized - Fail request");
26330
Jeff Johnsone7245742012-09-05 17:12:55 -070026331 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070026332 }
26333
26334 /*------------------------------------------------------------------------
26335 Fill in Event data and post to the Main FSM
26336 ------------------------------------------------------------------------*/
26337 wdiEventData.wdiRequest = WDI_8023_MULTICAST_LIST_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070026338 wdiEventData.pEventData = pwdiRcvFltPktSetMcListReqInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070026339 wdiEventData.uEventDataSize = sizeof(*pwdiRcvFltPktSetMcListReqInfo);
Jeff Johnsone7245742012-09-05 17:12:55 -070026340 wdiEventData.pCBfnc = wdi8023MulticastListCallback;
Jeff Johnson295189b2012-06-20 16:38:30 -070026341 wdiEventData.pUserData = pUserData;
26342
26343 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
26344}
26345
Jeff Johnsone7245742012-09-05 17:12:55 -070026346WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070026347WDI_ReceiveFilterSetFilterReq
26348(
26349 WDI_SetRcvPktFilterReqParamsType* pwdiSetRcvPktFilterReqInfo,
26350 WDI_ReceiveFilterSetFilterCb wdiReceiveFilterSetFilterCallback,
26351 void* pUserData
26352)
26353{
26354 WDI_EventInfoType wdiEventData;
26355 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26356
26357 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026358 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026359
26360 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026361 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070026362 ------------------------------------------------------------------------*/
26363 if ( eWLAN_PAL_FALSE == gWDIInitialized )
26364 {
26365 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
26366 "WDI API call before module is initialized - Fail request");
26367
Jeff Johnsone7245742012-09-05 17:12:55 -070026368 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070026369 }
26370
26371 /*------------------------------------------------------------------------
26372 Fill in Event data and post to the Main FSM
26373 ------------------------------------------------------------------------*/
26374 wdiEventData.wdiRequest = WDI_RECEIVE_FILTER_SET_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070026375 wdiEventData.pEventData = pwdiSetRcvPktFilterReqInfo;
26376 wdiEventData.uEventDataSize = sizeof(*pwdiSetRcvPktFilterReqInfo) +
Yue Ma13cf95c2013-03-18 18:05:27 -070026377 (pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams - 1)
26378 * sizeof(WDI_RcvPktFilterFieldParams);
Jeff Johnsone7245742012-09-05 17:12:55 -070026379 wdiEventData.pCBfnc = wdiReceiveFilterSetFilterCallback;
Jeff Johnson295189b2012-06-20 16:38:30 -070026380 wdiEventData.pUserData = pUserData;
26381
26382
26383 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
26384}
26385
Jeff Johnsone7245742012-09-05 17:12:55 -070026386WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070026387WDI_FilterMatchCountReq
26388(
26389 WDI_RcvFltPktMatchCntReqParamsType* pwdiRcvFltPktMatchCntReqInfo,
26390 WDI_FilterMatchCountCb wdiFilterMatchCountCallback,
26391 void* pUserData
26392)
26393{
26394 WDI_EventInfoType wdiEventData;
26395 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26396
26397 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026398 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026399
26400 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026401 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070026402 ------------------------------------------------------------------------*/
26403 if ( eWLAN_PAL_FALSE == gWDIInitialized )
26404 {
26405 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
26406 "WDI API call before module is initialized - Fail request");
26407
Jeff Johnsone7245742012-09-05 17:12:55 -070026408 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070026409 }
26410
26411 /*------------------------------------------------------------------------
26412 Fill in Event data and post to the Main FSM
26413 ------------------------------------------------------------------------*/
26414 wdiEventData.wdiRequest = WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070026415 wdiEventData.pEventData = pwdiRcvFltPktMatchCntReqInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070026416 wdiEventData.uEventDataSize = sizeof(*pwdiRcvFltPktMatchCntReqInfo);
Jeff Johnsone7245742012-09-05 17:12:55 -070026417 wdiEventData.pCBfnc = wdiFilterMatchCountCallback;
Jeff Johnson295189b2012-06-20 16:38:30 -070026418 wdiEventData.pUserData = pUserData;
26419
26420
26421 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
26422}
26423
Jeff Johnsone7245742012-09-05 17:12:55 -070026424WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070026425WDI_ReceiveFilterClearFilterReq
26426(
26427 WDI_RcvFltPktClearReqParamsType* pwdiRcvFltPktClearReqInfo,
26428 WDI_ReceiveFilterClearFilterCb wdiReceiveFilterClearFilterCallback,
26429 void* pUserData
26430)
26431{
26432 WDI_EventInfoType wdiEventData;
26433 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26434
26435 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026436 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026437
26438 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026439 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070026440 ------------------------------------------------------------------------*/
26441 if ( eWLAN_PAL_FALSE == gWDIInitialized )
26442 {
26443 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
26444 "WDI API call before module is initialized - Fail request");
26445
Jeff Johnsone7245742012-09-05 17:12:55 -070026446 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070026447 }
26448
26449 /*------------------------------------------------------------------------
26450 Fill in Event data and post to the Main FSM
26451 ------------------------------------------------------------------------*/
26452 wdiEventData.wdiRequest = WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070026453 wdiEventData.pEventData = pwdiRcvFltPktClearReqInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070026454 wdiEventData.uEventDataSize = sizeof(*pwdiRcvFltPktClearReqInfo);
Jeff Johnsone7245742012-09-05 17:12:55 -070026455 wdiEventData.pCBfnc = wdiReceiveFilterClearFilterCallback;
Jeff Johnson295189b2012-06-20 16:38:30 -070026456 wdiEventData.pUserData = pUserData;
26457
26458
26459 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
26460}
26461
26462/**
26463 @brief Process 8023 Multicast List Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070026464
26465 @param pWDICtx: pointer to the WLAN DAL context
26466 pEventData: pointer to the event information structure
26467
Jeff Johnson295189b2012-06-20 16:38:30 -070026468 @see
26469 @return Result of the function call
26470*/
26471WDI_Status
26472WDI_Process8023MulticastListReq
Jeff Johnsone7245742012-09-05 17:12:55 -070026473(
Jeff Johnson295189b2012-06-20 16:38:30 -070026474 WDI_ControlBlockType* pWDICtx,
26475 WDI_EventInfoType* pEventData
26476)
26477{
26478 WDI_RcvFltPktSetMcListReqParamsType* pwdiFltPktSetMcListReqParamsType = NULL;
26479 WDI_8023MulticastListCb wdi8023MulticastListCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070026480 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070026481 wpt_uint16 usDataOffset = 0;
26482 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026483 tpHalRcvFltMcAddrListType pRcvFltMcAddrListType;
Jeff Johnson295189b2012-06-20 16:38:30 -070026484 wpt_uint8 i;
Jeff Johnsone7245742012-09-05 17:12:55 -070026485 wpt_uint8 ucCurrentBSSSesIdx = 0;
26486 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070026487
26488 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026489 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026490
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026491 pRcvFltMcAddrListType = wpalMemoryAllocate(sizeof(tHalRcvFltMcAddrListType)) ;
26492 if( NULL == pRcvFltMcAddrListType )
26493 {
26494 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
26495 "Failed to alloc in WDI_Process8023MulticastListReq");
26496 return WDI_STATUS_E_FAILURE;
26497 }
26498
Jeff Johnson295189b2012-06-20 16:38:30 -070026499 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026500 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070026501 -------------------------------------------------------------------------*/
26502 if (( NULL == pEventData ) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070026503 ( NULL == (pwdiFltPktSetMcListReqParamsType =
Jeff Johnson295189b2012-06-20 16:38:30 -070026504 (WDI_RcvFltPktSetMcListReqParamsType*)pEventData->pEventData)) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070026505 ( NULL == (wdi8023MulticastListCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070026506 (WDI_8023MulticastListCb)pEventData->pCBfnc)))
26507 {
26508 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026509 "%s: Invalid parameters", __func__);
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026510 wpalMemoryFree(pRcvFltMcAddrListType);
Jeff Johnson295189b2012-06-20 16:38:30 -070026511 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026512 return WDI_STATUS_E_FAILURE;
26513 }
26514
26515 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
26516 pwdiFltPktSetMcListReqParamsType->mcAddrList.bssId,
26517 &pBSSSes);
26518 if ( NULL == pBSSSes )
26519 {
26520 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026521 " %s : Association for this BSSID does not exist",__func__);
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026522 wpalMemoryFree(pRcvFltMcAddrListType);
Jeff Johnsone7245742012-09-05 17:12:55 -070026523 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026524 }
26525
26526 /*-----------------------------------------------------------------------
26527 Get message buffer
26528 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070026529 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
26530 WDI_8023_MULTICAST_LIST_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070026531 sizeof(tHalRcvFltMcAddrListType),
26532 &pSendBuffer, &usDataOffset, &usSendSize))||
26533 ( usSendSize < (usDataOffset + sizeof(tHalRcvFltMcAddrListType))))
26534 {
26535 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
26536 "Unable to get send buffer in "
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080026537 "WDI_Process8023MulticastListReq() %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070026538 pEventData, pwdiFltPktSetMcListReqParamsType,
26539 wdi8023MulticastListCb);
Yue Mad8cac142013-03-28 11:33:46 -070026540 wpalMemoryFree(pRcvFltMcAddrListType);
Jeff Johnson295189b2012-06-20 16:38:30 -070026541 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026542 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026543 }
26544
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026545 pRcvFltMcAddrListType->cMulticastAddr =
Jeff Johnsone7245742012-09-05 17:12:55 -070026546 pwdiFltPktSetMcListReqParamsType->mcAddrList.ulMulticastAddrCnt;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026547 for( i = 0; i < pRcvFltMcAddrListType->cMulticastAddr; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070026548 {
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026549 wpalMemoryCopy(pRcvFltMcAddrListType->multicastAddr[i],
Jeff Johnson295189b2012-06-20 16:38:30 -070026550 pwdiFltPktSetMcListReqParamsType->mcAddrList.multicastAddr[i],
26551 sizeof(tSirMacAddr));
26552 }
26553
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026554 pRcvFltMcAddrListType->bssIdx = pBSSSes->ucBSSIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070026555 wpalMemoryCopy( pSendBuffer+usDataOffset,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026556 pRcvFltMcAddrListType,
26557 sizeof(tHalRcvFltMcAddrListType));
Jeff Johnson295189b2012-06-20 16:38:30 -070026558
26559 pWDICtx->wdiReqStatusCB = pwdiFltPktSetMcListReqParamsType->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070026560 pWDICtx->pReqStatusUserData = pwdiFltPktSetMcListReqParamsType->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070026561
26562
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026563 wpalMemoryFree(pRcvFltMcAddrListType);
Jeff Johnson295189b2012-06-20 16:38:30 -070026564 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026565 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070026566 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070026567 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070026568 wdi8023MulticastListCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -070026569 WDI_8023_MULTICAST_LIST_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070026570}
26571
26572/**
26573 @brief Process Receive Filter Set Filter Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070026574
26575 @param pWDICtx: pointer to the WLAN DAL context
26576 pEventData: pointer to the event information structure
26577
Jeff Johnson295189b2012-06-20 16:38:30 -070026578 @see
26579 @return Result of the function call
26580*/
26581WDI_Status
26582WDI_ProcessReceiveFilterSetFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070026583(
Jeff Johnson295189b2012-06-20 16:38:30 -070026584 WDI_ControlBlockType* pWDICtx,
26585 WDI_EventInfoType* pEventData
26586)
26587{
26588 WDI_SetRcvPktFilterReqParamsType* pwdiSetRcvPktFilterReqInfo = NULL;
26589 WDI_ReceiveFilterSetFilterCb wdiReceiveFilterSetFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070026590 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070026591 wpt_uint16 usDataOffset = 0;
26592 wpt_uint16 usSendSize = 0;
26593 wpt_uint32 usRcvPktFilterCfgSize;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026594 tHalRcvPktFilterCfgType *pRcvPktFilterCfg = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070026595 wpt_uint8 i;
Jeff Johnsone7245742012-09-05 17:12:55 -070026596 wpt_uint8 ucCurrentBSSSesIdx = 0;
26597 WDI_BSSSessionType* pBSSSes = NULL;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026598 tHalSessionizedRcvPktFilterCfgType *pSessRcvPktFilterCfg = NULL;
26599 wpt_uint32 usSessRcvPktFilterCfgSize;
Jeff Johnson295189b2012-06-20 16:38:30 -070026600
26601 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026602 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026603
26604 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026605 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070026606 -------------------------------------------------------------------------*/
26607 if (( NULL == pEventData ) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070026608 ( NULL == (pwdiSetRcvPktFilterReqInfo =
Jeff Johnson295189b2012-06-20 16:38:30 -070026609 (WDI_SetRcvPktFilterReqParamsType*)pEventData->pEventData)) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070026610 ( NULL == (wdiReceiveFilterSetFilterCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070026611 (WDI_ReceiveFilterSetFilterCb)pEventData->pCBfnc)))
26612 {
26613 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026614 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026615 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026616 return WDI_STATUS_E_FAILURE;
26617 }
26618
26619 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
26620 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.bssId,
26621 &pBSSSes);
26622 if ( NULL == pBSSSes )
26623 {
26624 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026625 " %s : Association for this BSSID does not exist",__func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070026626 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026627 }
26628
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026629 if( WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION) )
26630 {
Jeff Johnson295189b2012-06-20 16:38:30 -070026631
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026632 usSessRcvPktFilterCfgSize = sizeof(tHalSessionizedRcvPktFilterCfgType) +
26633 ((pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams - 1)
26634 * sizeof(tHalSessionizedRcvPktFilterCfgType));
26635
26636 pSessRcvPktFilterCfg = (tHalSessionizedRcvPktFilterCfgType *)wpalMemoryAllocate(
26637 usSessRcvPktFilterCfgSize);
26638
26639 if(NULL == pSessRcvPktFilterCfg)
26640 {
26641 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
26642 "%s: Failed to allocate memory for "
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080026643 "tHalRcvPktFilterCfgType: %p %p %p ",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026644 __func__, pWDICtx, pEventData, pEventData->pEventData);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026645 WDI_ASSERT(0);
26646 return WDI_STATUS_E_FAILURE;
26647 }
26648
26649 wpalMemoryZero(pSessRcvPktFilterCfg, usSessRcvPktFilterCfgSize);
26650
26651 /*-----------------------------------------------------------------------
26652 Get message buffer
26653 -----------------------------------------------------------------------*/
26654
26655 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_RECEIVE_FILTER_SET_FILTER_REQ,
26656 usSessRcvPktFilterCfgSize,
26657 &pSendBuffer, &usDataOffset, &usSendSize))||
26658 ( usSendSize < (usDataOffset + usSessRcvPktFilterCfgSize)))
26659 {
26660 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
26661 "Unable to get send buffer in "
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080026662 "WDI_ProcessReceiveFilterSetFilterReq() %p %p %p",
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026663 pEventData, pwdiSetRcvPktFilterReqInfo,
26664 wdiReceiveFilterSetFilterCb);
26665 WDI_ASSERT(0);
26666 wpalMemoryFree(pSessRcvPktFilterCfg);
26667 return WDI_STATUS_E_FAILURE;
26668 }
26669
26670 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080026671 "UsData Off %d UsSend %d cfg %p",usDataOffset,
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026672 usSendSize,pSessRcvPktFilterCfg);
26673
26674 pSessRcvPktFilterCfg->filterId = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.filterId;
26675 pSessRcvPktFilterCfg->filterType = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.filterType;
26676 pSessRcvPktFilterCfg->numParams = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams;
26677 pSessRcvPktFilterCfg->coleasceTime = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.coalesceTime;
26678
26679 pSessRcvPktFilterCfg->bssIdx = pBSSSes->ucBSSIdx;
26680
26681 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
26682 "Out: FID %d FT %d",pSessRcvPktFilterCfg->filterId,
26683 pSessRcvPktFilterCfg->filterType);
26684 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
26685 "NParams %d CT %d",pSessRcvPktFilterCfg->numParams,
26686 pSessRcvPktFilterCfg->coleasceTime);
26687
26688 for ( i = 0; i < pSessRcvPktFilterCfg->numParams; i++ )
26689 {
26690 pSessRcvPktFilterCfg->paramsData[i].protocolLayer =
26691 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].protocolLayer;
26692 pSessRcvPktFilterCfg->paramsData[i].cmpFlag =
26693 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].cmpFlag;
26694 pSessRcvPktFilterCfg->paramsData[i].dataOffset =
26695 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataOffset;
26696 pSessRcvPktFilterCfg->paramsData[i].dataLength =
26697 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataLength;
26698
26699 wpalMemoryCopy(&pSessRcvPktFilterCfg->paramsData[i].compareData,
26700 &pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].compareData,
26701 8);
26702 wpalMemoryCopy(&pSessRcvPktFilterCfg->paramsData[i].dataMask,
26703 &pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataMask,
26704 8);
26705
26706 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Arif Hussain9a5d5382013-11-17 22:05:35 -080026707 "Out:Proto %d Comp Flag %d",
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026708 pSessRcvPktFilterCfg->paramsData[i].protocolLayer,
26709 pSessRcvPktFilterCfg->paramsData[i].cmpFlag);
26710
26711 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Arif Hussain9a5d5382013-11-17 22:05:35 -080026712 "Data Offset %d Data Len %d",
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026713 pSessRcvPktFilterCfg->paramsData[i].dataOffset,
26714 pSessRcvPktFilterCfg->paramsData[i].dataLength);
26715
26716 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Arif Hussain9a5d5382013-11-17 22:05:35 -080026717 "CData: %d:%d:%d:%d:%d:%d",
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026718 pSessRcvPktFilterCfg->paramsData[i].compareData[0],
26719 pSessRcvPktFilterCfg->paramsData[i].compareData[1],
26720 pSessRcvPktFilterCfg->paramsData[i].compareData[2],
26721 pSessRcvPktFilterCfg->paramsData[i].compareData[3],
26722 pSessRcvPktFilterCfg->paramsData[i].compareData[4],
26723 pSessRcvPktFilterCfg->paramsData[i].compareData[5]);
26724
26725 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Arif Hussain9a5d5382013-11-17 22:05:35 -080026726 "MData: %d:%d:%d:%d:%d:%d",
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026727 pSessRcvPktFilterCfg->paramsData[i].dataMask[0],
26728 pSessRcvPktFilterCfg->paramsData[i].dataMask[1],
26729 pSessRcvPktFilterCfg->paramsData[i].dataMask[2],
26730 pSessRcvPktFilterCfg->paramsData[i].dataMask[3],
26731 pSessRcvPktFilterCfg->paramsData[i].dataMask[4],
26732 pSessRcvPktFilterCfg->paramsData[i].dataMask[5]);
26733 }
26734
26735 wpalMemoryCopy( pSendBuffer+usDataOffset,
26736 pSessRcvPktFilterCfg,
26737 usSessRcvPktFilterCfgSize);
26738
26739
26740 pWDICtx->wdiReqStatusCB = pwdiSetRcvPktFilterReqInfo->wdiReqStatusCB;
26741 pWDICtx->pReqStatusUserData = pwdiSetRcvPktFilterReqInfo->pUserData;
26742
26743 wpalMemoryFree(pSessRcvPktFilterCfg);
26744
26745 }
26746 /*If SLM_SESSIONIZATION is not supported then do this */
26747 else
26748 {
26749 usRcvPktFilterCfgSize = sizeof(tHalRcvPktFilterCfgType) +
26750 ((pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams - 1)
26751 * sizeof(tHalRcvPktFilterParams));
26752
26753 pRcvPktFilterCfg = (tHalRcvPktFilterCfgType *)wpalMemoryAllocate(
Jeff Johnson295189b2012-06-20 16:38:30 -070026754 usRcvPktFilterCfgSize);
26755
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026756 if(NULL == pRcvPktFilterCfg)
26757 {
26758 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
26759 "%s: Failed to allocate memory for "
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080026760 "tHalRcvPktFilterCfgType: %p %p %p ",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026761 __func__, pWDICtx, pEventData, pEventData->pEventData);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026762 WDI_ASSERT(0);
26763 return WDI_STATUS_E_FAILURE;
26764 }
Jeff Johnson295189b2012-06-20 16:38:30 -070026765
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026766 wpalMemoryZero(pRcvPktFilterCfg, usRcvPktFilterCfgSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070026767
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026768 /*-----------------------------------------------------------------------
26769 Get message buffer
26770 -----------------------------------------------------------------------*/
26771 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_RECEIVE_FILTER_SET_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070026772 usRcvPktFilterCfgSize,
26773 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026774 ( usSendSize < (usDataOffset + usRcvPktFilterCfgSize)))
26775 {
26776 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson295189b2012-06-20 16:38:30 -070026777 "Unable to get send buffer in "
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080026778 "WDI_ProcessReceiveFilterSetFilterReq() %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070026779 pEventData, pwdiSetRcvPktFilterReqInfo,
26780 wdiReceiveFilterSetFilterCb);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026781 WDI_ASSERT(0);
26782 wpalMemoryFree(pRcvPktFilterCfg);
26783 return WDI_STATUS_E_FAILURE;
26784 }
Jeff Johnson295189b2012-06-20 16:38:30 -070026785
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026786 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070026787 "UsData Off %d UsSend %d cfg %d",usDataOffset,
Jeff Johnson295189b2012-06-20 16:38:30 -070026788 usSendSize,usRcvPktFilterCfgSize);
26789
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026790 pRcvPktFilterCfg->filterId = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.filterId;
26791 pRcvPktFilterCfg->filterType = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.filterType;
26792 pRcvPktFilterCfg->numParams = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams;
26793 pRcvPktFilterCfg->coalesceTime = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.coalesceTime;
Jeff Johnson295189b2012-06-20 16:38:30 -070026794
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026795 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070026796 "Out: FID %d FT %d",pRcvPktFilterCfg->filterId,
Jeff Johnson295189b2012-06-20 16:38:30 -070026797 pRcvPktFilterCfg->filterType);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026798 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnson295189b2012-06-20 16:38:30 -070026799 "NParams %d CT %d",pRcvPktFilterCfg->numParams,
Jeff Johnsone7245742012-09-05 17:12:55 -070026800 pRcvPktFilterCfg->coalesceTime);
Jeff Johnson295189b2012-06-20 16:38:30 -070026801
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026802 for ( i = 0; i < pRcvPktFilterCfg->numParams; i++ )
26803 {
26804 pRcvPktFilterCfg->paramsData[i].protocolLayer =
26805 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].protocolLayer;
26806 pRcvPktFilterCfg->paramsData[i].cmpFlag =
26807 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].cmpFlag;
26808 pRcvPktFilterCfg->paramsData[i].dataOffset =
26809 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataOffset;
26810 pRcvPktFilterCfg->paramsData[i].dataLength =
26811 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataLength;
Jeff Johnson295189b2012-06-20 16:38:30 -070026812
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026813 wpalMemoryCopy(&pRcvPktFilterCfg->paramsData[i].compareData,
Jeff Johnson295189b2012-06-20 16:38:30 -070026814 &pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].compareData,
26815 8);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026816 wpalMemoryCopy(&pRcvPktFilterCfg->paramsData[i].dataMask,
Jeff Johnson295189b2012-06-20 16:38:30 -070026817 &pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataMask,
26818 8);
26819
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026820 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Arif Hussain9a5d5382013-11-17 22:05:35 -080026821 "Out:Proto %d Comp Flag %d",
Jeff Johnsone7245742012-09-05 17:12:55 -070026822 pRcvPktFilterCfg->paramsData[i].protocolLayer,
Jeff Johnson295189b2012-06-20 16:38:30 -070026823 pRcvPktFilterCfg->paramsData[i].cmpFlag);
26824
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026825 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Arif Hussain9a5d5382013-11-17 22:05:35 -080026826 "Data Offset %d Data Len %d",
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026827 pRcvPktFilterCfg->paramsData[i].dataOffset,
26828 pRcvPktFilterCfg->paramsData[i].dataLength);
Jeff Johnson295189b2012-06-20 16:38:30 -070026829
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026830 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Arif Hussain9a5d5382013-11-17 22:05:35 -080026831 "CData: %d:%d:%d:%d:%d:%d",
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026832 pRcvPktFilterCfg->paramsData[i].compareData[0],
26833 pRcvPktFilterCfg->paramsData[i].compareData[1],
26834 pRcvPktFilterCfg->paramsData[i].compareData[2],
26835 pRcvPktFilterCfg->paramsData[i].compareData[3],
26836 pRcvPktFilterCfg->paramsData[i].compareData[4],
26837 pRcvPktFilterCfg->paramsData[i].compareData[5]);
Jeff Johnson295189b2012-06-20 16:38:30 -070026838
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026839 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Arif Hussain9a5d5382013-11-17 22:05:35 -080026840 "MData: %d:%d:%d:%d:%d:%d",
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026841 pRcvPktFilterCfg->paramsData[i].dataMask[0],
26842 pRcvPktFilterCfg->paramsData[i].dataMask[1],
26843 pRcvPktFilterCfg->paramsData[i].dataMask[2],
26844 pRcvPktFilterCfg->paramsData[i].dataMask[3],
26845 pRcvPktFilterCfg->paramsData[i].dataMask[4],
26846 pRcvPktFilterCfg->paramsData[i].dataMask[5]);
26847 }
Jeff Johnson295189b2012-06-20 16:38:30 -070026848
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026849 wpalMemoryCopy( pSendBuffer+usDataOffset,
Jeff Johnsone7245742012-09-05 17:12:55 -070026850 pRcvPktFilterCfg,
26851 usRcvPktFilterCfgSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070026852
26853
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026854 pWDICtx->wdiReqStatusCB = pwdiSetRcvPktFilterReqInfo->wdiReqStatusCB;
26855 pWDICtx->pReqStatusUserData = pwdiSetRcvPktFilterReqInfo->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070026856
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026857 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026858 "%s",__func__);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026859 wpalMemoryFree(pRcvPktFilterCfg);
26860 }
Jeff Johnson295189b2012-06-20 16:38:30 -070026861 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026862 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070026863 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070026864 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070026865 wdiReceiveFilterSetFilterCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -070026866 WDI_RECEIVE_FILTER_SET_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070026867}
26868
26869/**
26870 @brief Process Packet Filter Match Count Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070026871
26872 @param pWDICtx: pointer to the WLAN DAL context
26873 pEventData: pointer to the event information structure
26874
Jeff Johnson295189b2012-06-20 16:38:30 -070026875 @see
26876 @return Result of the function call
26877*/
26878WDI_Status
26879WDI_ProcessFilterMatchCountReq
Jeff Johnsone7245742012-09-05 17:12:55 -070026880(
Jeff Johnson295189b2012-06-20 16:38:30 -070026881 WDI_ControlBlockType* pWDICtx,
26882 WDI_EventInfoType* pEventData
26883)
26884{
26885 WDI_RcvFltPktMatchCntReqParamsType* pwdiRcvFltPktMatchCntReqParamsType =
26886 NULL;
26887 WDI_FilterMatchCountCb wdiFilterMatchCountCb =
26888 NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070026889 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070026890 wpt_uint16 usDataOffset = 0;
26891 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026892 tHalRcvFltPktMatchCntReqParams rcvFltPktMatchCntReqParam = {0};
26893 wpt_uint8 ucCurrentBSSSesIdx = 0;
26894 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070026895
26896 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026897 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026898
26899 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026900 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070026901 -------------------------------------------------------------------------*/
26902 if (( NULL == pEventData ) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070026903 ( NULL == (pwdiRcvFltPktMatchCntReqParamsType =
Jeff Johnson295189b2012-06-20 16:38:30 -070026904 (WDI_RcvFltPktMatchCntReqParamsType*)pEventData->pEventData)) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070026905 ( NULL == (wdiFilterMatchCountCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070026906 (WDI_FilterMatchCountCb)pEventData->pCBfnc)))
26907 {
26908 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026909 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026910 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026911 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026912 }
26913
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026914 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
26915 pwdiRcvFltPktMatchCntReqParamsType->bssId,
26916 &pBSSSes);
26917 if ( NULL == pBSSSes )
26918 {
26919 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026920 " %s : Association for this BSSID does not exist",__func__);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026921 return WDI_STATUS_E_FAILURE;
26922 }
26923
Jeff Johnson295189b2012-06-20 16:38:30 -070026924 /*-----------------------------------------------------------------------
26925 Get message buffer
26926 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070026927 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
26928 WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ,
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026929 sizeof(tHalRcvFltPktMatchCntReqParams),
Jeff Johnson295189b2012-06-20 16:38:30 -070026930 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026931 ( usSendSize < (usDataOffset + sizeof(tHalRcvFltPktMatchCntReqParams))))
Jeff Johnson295189b2012-06-20 16:38:30 -070026932 {
26933 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
26934 "Unable to get send buffer in "
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080026935 "WDI_ProcessFilterMatchCountReq() %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070026936 pEventData, pwdiRcvFltPktMatchCntReqParamsType,
26937 wdiFilterMatchCountCb);
26938 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026939 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026940 }
26941
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026942 rcvFltPktMatchCntReqParam.bssIdx = pBSSSes->ucBSSIdx;
26943 wpalMemoryCopy( pSendBuffer+usDataOffset,
26944 &rcvFltPktMatchCntReqParam,
26945 sizeof(rcvFltPktMatchCntReqParam));
26946
Jeff Johnson295189b2012-06-20 16:38:30 -070026947 //
26948 // Don't need to fill send buffer other than header
26949 //
26950 pWDICtx->wdiReqStatusCB = pwdiRcvFltPktMatchCntReqParamsType->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070026951 pWDICtx->pReqStatusUserData = pwdiRcvFltPktMatchCntReqParamsType->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070026952
26953
26954 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026955 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070026956 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070026957 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
26958 wdiFilterMatchCountCb,
26959 pEventData->pUserData,
26960 WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070026961}
26962
26963/**
26964 @brief Process Receive Filter Clear Filter Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070026965
26966 @param pWDICtx: pointer to the WLAN DAL context
26967 pEventData: pointer to the event information structure
26968
Jeff Johnson295189b2012-06-20 16:38:30 -070026969 @see
26970 @return Result of the function call
26971*/
26972WDI_Status
26973WDI_ProcessReceiveFilterClearFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070026974(
Jeff Johnson295189b2012-06-20 16:38:30 -070026975 WDI_ControlBlockType* pWDICtx,
26976 WDI_EventInfoType* pEventData
26977)
Jeff Johnsone7245742012-09-05 17:12:55 -070026978{
Jeff Johnson295189b2012-06-20 16:38:30 -070026979 WDI_RcvFltPktClearReqParamsType* pwdiRcvFltPktClearReqParamsType = NULL;
26980 WDI_ReceiveFilterClearFilterCb wdiRcvFltPktClearFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070026981 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070026982 wpt_uint16 usDataOffset = 0;
26983 wpt_uint16 usSendSize = 0;
26984 tHalRcvFltPktClearParam rcvFltPktClearParam;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026985 wpt_uint8 ucCurrentSessionId = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070026986 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070026987
26988 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026989 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026990
26991 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026992 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070026993 -------------------------------------------------------------------------*/
26994 if (( NULL == pEventData ) ||
26995 ( NULL == (pwdiRcvFltPktClearReqParamsType =
26996 (WDI_RcvFltPktClearReqParamsType*)pEventData->pEventData)) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070026997 ( NULL == (wdiRcvFltPktClearFilterCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070026998 (WDI_ReceiveFilterClearFilterCb)pEventData->pCBfnc)))
26999 {
27000 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027001 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027002 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070027003 return WDI_STATUS_E_FAILURE;
27004 }
27005
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027006 ucCurrentSessionId = WDI_FindAssocSession( pWDICtx,
Jeff Johnsone7245742012-09-05 17:12:55 -070027007 pwdiRcvFltPktClearReqParamsType->filterClearParam.bssId,
27008 &pBSSSes);
27009 if ( NULL == pBSSSes )
27010 {
27011 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027012 " %s : Association for this BSSID does not exist",__func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070027013 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070027014 }
27015
27016 /*-----------------------------------------------------------------------
27017 Get message buffer
27018 -----------------------------------------------------------------------*/
27019 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
Jeff Johnsone7245742012-09-05 17:12:55 -070027020 WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070027021 sizeof(tHalRcvFltPktClearParam),
27022 &pSendBuffer, &usDataOffset, &usSendSize))||
27023 ( usSendSize < (usDataOffset + sizeof(tHalRcvFltPktClearParam))))
27024 {
27025 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
27026 "Unable to get send buffer in "
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080027027 "WDI_ProcessReceiveFilterClearFilterReq() %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070027028 pEventData, pwdiRcvFltPktClearReqParamsType,
27029 wdiRcvFltPktClearFilterCb);
27030 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070027031 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070027032 }
27033
27034
27035 rcvFltPktClearParam.status = pwdiRcvFltPktClearReqParamsType->
Jeff Johnsone7245742012-09-05 17:12:55 -070027036 filterClearParam.status;
Jeff Johnson295189b2012-06-20 16:38:30 -070027037 rcvFltPktClearParam.filterId = pwdiRcvFltPktClearReqParamsType->
Jeff Johnsone7245742012-09-05 17:12:55 -070027038 filterClearParam.filterId;
Jeff Johnson295189b2012-06-20 16:38:30 -070027039
Jeff Johnsone7245742012-09-05 17:12:55 -070027040 rcvFltPktClearParam.bssIdx = pBSSSes->ucBSSIdx;
27041 wpalMemoryCopy( pSendBuffer+usDataOffset,
27042 &rcvFltPktClearParam,
27043 sizeof(rcvFltPktClearParam));
Jeff Johnson295189b2012-06-20 16:38:30 -070027044
27045 pWDICtx->wdiReqStatusCB = pwdiRcvFltPktClearReqParamsType->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070027046 pWDICtx->pReqStatusUserData = pwdiRcvFltPktClearReqParamsType->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070027047
27048
27049 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027050 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070027051 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070027052 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070027053 wdiRcvFltPktClearFilterCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -070027054 WDI_RECEIVE_FILTER_CLEAR_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070027055}
27056
27057/**
27058 @brief Process 8023 Multicast List Response function
Jeff Johnsone7245742012-09-05 17:12:55 -070027059
27060 @param pWDICtx: pointer to the WLAN DAL context
27061 pEventData: pointer to the event information structure
27062
Jeff Johnson295189b2012-06-20 16:38:30 -070027063 @see
27064 @return Result of the function call
27065*/
27066WDI_Status
27067WDI_Process8023MulticastListRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070027068(
Jeff Johnson295189b2012-06-20 16:38:30 -070027069 WDI_ControlBlockType* pWDICtx,
27070 WDI_EventInfoType* pEventData
27071)
27072{
Jeff Johnson295189b2012-06-20 16:38:30 -070027073 eHalStatus halStatus;
27074 WDI_8023MulticastListCb wdi8023MulticastListCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027075 tHalRcvFltPktSetMcListRspType halRcvFltPktSetMcListRsp;
27076 WDI_RcvFltPktSetMcListRspParamsType wdiRcvFltPktSetMcListRspInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070027077 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27078
27079 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027080 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027081
27082 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027083 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070027084 -------------------------------------------------------------------------*/
27085 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
27086 ( NULL == pEventData->pEventData ))
27087 {
27088 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027089 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027090 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070027091 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070027092 }
27093
Jeff Johnsone7245742012-09-05 17:12:55 -070027094 wdi8023MulticastListCb = (WDI_8023MulticastListCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070027095
27096 /*-------------------------------------------------------------------------
27097 Extract response and send it to UMAC
27098 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027099 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
27100 {
27101 wpalMemoryCopy( &halRcvFltPktSetMcListRsp,
27102 pEventData->pEventData,
27103 sizeof(halRcvFltPktSetMcListRsp));
27104
27105 wdiRcvFltPktSetMcListRspInfo.wdiStatus =
27106 WDI_HAL_2_WDI_STATUS(halRcvFltPktSetMcListRsp.status);
27107 wdiRcvFltPktSetMcListRspInfo.bssIdx =
27108 halRcvFltPktSetMcListRsp.bssIdx;
27109 }
27110 else
27111 {
27112 halStatus = *((eHalStatus*)pEventData->pEventData);
27113 wdiRcvFltPktSetMcListRspInfo.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
27114 }
Jeff Johnson295189b2012-06-20 16:38:30 -070027115
27116 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027117 wdi8023MulticastListCb(&wdiRcvFltPktSetMcListRspInfo, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070027118
Jeff Johnsone7245742012-09-05 17:12:55 -070027119 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070027120}
27121
27122/**
27123 @brief Process Set Rsp function (called when a
27124 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070027125
27126 @param pWDICtx: pointer to the WLAN DAL context
27127 pEventData: pointer to the event information structure
27128
Jeff Johnson295189b2012-06-20 16:38:30 -070027129 @see
27130 @return Result of the function call
27131*/
27132WDI_Status
27133WDI_ProcessReceiveFilterSetFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070027134(
Jeff Johnson295189b2012-06-20 16:38:30 -070027135 WDI_ControlBlockType* pWDICtx,
27136 WDI_EventInfoType* pEventData
27137)
27138{
Jeff Johnson295189b2012-06-20 16:38:30 -070027139 eHalStatus halStatus;
27140 WDI_ReceiveFilterSetFilterCb wdiReceiveFilterSetFilterCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027141 tHalSetPktFilterRspParams halSetPktFilterRspParams;
27142 WDI_SetRcvPktFilterRspParamsType wdiSetRcvPktFilterRspInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070027143 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27144
27145 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027146 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027147
27148 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027149 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070027150 -------------------------------------------------------------------------*/
27151 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
27152 ( NULL == pEventData->pEventData ))
27153 {
27154 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027155 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027156 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070027157 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070027158 }
27159
27160 wdiReceiveFilterSetFilterCb = (WDI_ReceiveFilterSetFilterCb)pWDICtx->
Jeff Johnsone7245742012-09-05 17:12:55 -070027161 pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070027162
27163 /*-------------------------------------------------------------------------
27164 Extract response and send it to UMAC
27165 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027166 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
27167 {
27168 wpalMemoryCopy( &halSetPktFilterRspParams,
27169 pEventData->pEventData,
27170 sizeof(halSetPktFilterRspParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070027171
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027172 wdiSetRcvPktFilterRspInfo.bssIdx = halSetPktFilterRspParams.bssIdx;
27173 wdiSetRcvPktFilterRspInfo.wdiStatus = WDI_HAL_2_WDI_STATUS(halSetPktFilterRspParams.status);
27174 }
27175 else
27176 {
27177 halStatus = *((eHalStatus*)pEventData->pEventData);
27178 wdiSetRcvPktFilterRspInfo.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
27179 }
Jeff Johnson295189b2012-06-20 16:38:30 -070027180 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027181 wdiReceiveFilterSetFilterCb(&wdiSetRcvPktFilterRspInfo, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070027182
Jeff Johnsone7245742012-09-05 17:12:55 -070027183 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070027184}
27185
27186/**
27187 @brief Process Packet Filter Match Count Response function
Jeff Johnsone7245742012-09-05 17:12:55 -070027188
27189 @param pWDICtx: pointer to the WLAN DAL context
27190 pEventData: pointer to the event information structure
27191
Jeff Johnson295189b2012-06-20 16:38:30 -070027192 @see
27193 @return Result of the function call
27194*/
27195WDI_Status
27196WDI_ProcessFilterMatchCountRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070027197(
Jeff Johnson295189b2012-06-20 16:38:30 -070027198 WDI_ControlBlockType* pWDICtx,
27199 WDI_EventInfoType* pEventData
27200)
27201{
Jeff Johnson295189b2012-06-20 16:38:30 -070027202 eHalStatus halStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070027203 WDI_FilterMatchCountCb wdiFilterMatchCountCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027204 tHalRcvFltPktMatchRspParams halRcvFltrPktMatachRsp;
27205 WDI_RcvFltPktMatchCntRspParamsType wdiRcvFltPktMatchRspParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070027206
27207 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27208
27209 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027210 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027211
27212 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027213 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070027214 -------------------------------------------------------------------------*/
27215 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
27216 ( NULL == pEventData->pEventData ))
27217 {
27218 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027219 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027220 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070027221 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070027222 }
27223
Jeff Johnsone7245742012-09-05 17:12:55 -070027224 wdiFilterMatchCountCb = (WDI_FilterMatchCountCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070027225
27226 /*-------------------------------------------------------------------------
27227 Extract response and send it to UMAC
27228 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027229 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
27230 {
27231 wpalMemoryCopy( &halRcvFltrPktMatachRsp,
27232 pEventData->pEventData,
27233 sizeof(halRcvFltrPktMatachRsp));
27234
27235 wdiRcvFltPktMatchRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halRcvFltrPktMatachRsp.status);
27236 wdiRcvFltPktMatchRspParams.bssIdx = halRcvFltrPktMatachRsp.bssIdx;
27237 }
27238 else
27239 {
27240 halStatus = *((eHalStatus*)pEventData->pEventData);
27241 wdiRcvFltPktMatchRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
27242 }
Jeff Johnson295189b2012-06-20 16:38:30 -070027243
27244 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027245 wdiFilterMatchCountCb(&wdiRcvFltPktMatchRspParams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070027246
Jeff Johnsone7245742012-09-05 17:12:55 -070027247 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070027248}
27249
27250/**
27251 @brief Process Receive Filter Clear Filter Response function
Jeff Johnsone7245742012-09-05 17:12:55 -070027252
27253 @param pWDICtx: pointer to the WLAN DAL context
27254 pEventData: pointer to the event information structure
27255
Jeff Johnson295189b2012-06-20 16:38:30 -070027256 @see
27257 @return Result of the function call
27258*/
27259WDI_Status
27260WDI_ProcessReceiveFilterClearFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070027261(
Jeff Johnson295189b2012-06-20 16:38:30 -070027262 WDI_ControlBlockType* pWDICtx,
27263 WDI_EventInfoType* pEventData
27264)
27265{
Jeff Johnson295189b2012-06-20 16:38:30 -070027266 eHalStatus halStatus;
27267 WDI_ReceiveFilterClearFilterCb wdiReceiveFilterClearFilterCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027268 tHalRcvFltPktClearParam halRcvFltPktClearRspMsg;
27269 WDI_RcvFltPktClearRspParamsType wdiRcvFltPktClearRspParamsType;
Jeff Johnson295189b2012-06-20 16:38:30 -070027270 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27271
27272 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027273 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027274
27275 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027276 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070027277 -------------------------------------------------------------------------*/
27278 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
27279 ( NULL == pEventData->pEventData ))
27280 {
27281 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027282 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027283 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070027284 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070027285 }
27286
27287 wdiReceiveFilterClearFilterCb = (WDI_ReceiveFilterClearFilterCb)pWDICtx->
Jeff Johnsone7245742012-09-05 17:12:55 -070027288 pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070027289
27290 /*-------------------------------------------------------------------------
27291 Extract response and send it to UMAC
27292 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027293 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
27294 {
27295 wpalMemoryCopy( &halRcvFltPktClearRspMsg,
27296 pEventData->pEventData,
27297 sizeof(halRcvFltPktClearRspMsg));
27298
27299 wdiRcvFltPktClearRspParamsType.wdiStatus =
27300 WDI_HAL_2_WDI_STATUS(halRcvFltPktClearRspMsg.status);
27301 wdiRcvFltPktClearRspParamsType.bssIdx =
27302 halRcvFltPktClearRspMsg.bssIdx;
27303 }
27304 else
27305 {
27306 halStatus = *((eHalStatus*)pEventData->pEventData);
27307 wdiRcvFltPktClearRspParamsType.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
27308 }
Jeff Johnson295189b2012-06-20 16:38:30 -070027309
27310 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027311 wdiReceiveFilterClearFilterCb(&wdiRcvFltPktClearRspParamsType, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070027312
Jeff Johnsone7245742012-09-05 17:12:55 -070027313 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070027314}
27315#endif // WLAN_FEATURE_PACKET_FILTERING
27316
27317/**
27318 @brief Process Shutdown Rsp function
27319 There is no shutdown response comming from HAL
27320 - function just kept for simmetry
Jeff Johnsone7245742012-09-05 17:12:55 -070027321
Jeff Johnson295189b2012-06-20 16:38:30 -070027322 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnsone7245742012-09-05 17:12:55 -070027323 pEventData: pointer to the event information structure
Jeff Johnson295189b2012-06-20 16:38:30 -070027324
27325 @see
27326 @return Result of the function call
27327*/
27328WDI_Status
27329WDI_ProcessShutdownRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070027330(
Jeff Johnson295189b2012-06-20 16:38:30 -070027331 WDI_ControlBlockType* pWDICtx,
27332 WDI_EventInfoType* pEventData
27333)
27334{
27335 /*There is no shutdown response comming from HAL - function just kept for
27336 simmetry */
27337 WDI_ASSERT(0);
27338 return WDI_STATUS_SUCCESS;
27339}/*WDI_ProcessShutdownRsp*/
27340
27341/**
27342 @brief WDI_SetPowerParamsReq
27343
Jeff Johnsone7245742012-09-05 17:12:55 -070027344 @param pwdiPowerParamsReqParams: the Set Power Params as
Jeff Johnson295189b2012-06-20 16:38:30 -070027345 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -070027346
Jeff Johnson295189b2012-06-20 16:38:30 -070027347 wdiPowerParamsCb: callback for passing back the response
27348 of the Set Power Params operation received from the
27349 device
Jeff Johnsone7245742012-09-05 17:12:55 -070027350
Jeff Johnson295189b2012-06-20 16:38:30 -070027351 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -070027352 callback
27353
Jeff Johnson295189b2012-06-20 16:38:30 -070027354 @return Result of the function call
27355*/
Jeff Johnsone7245742012-09-05 17:12:55 -070027356WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070027357WDI_SetPowerParamsReq
27358(
27359 WDI_SetPowerParamsReqParamsType* pwdiPowerParamsReqParams,
27360 WDI_SetPowerParamsCb wdiPowerParamsCb,
27361 void* pUserData
27362)
27363{
27364 WDI_EventInfoType wdiEventData;
27365 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27366
27367 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027368 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070027369 ------------------------------------------------------------------------*/
27370 if ( eWLAN_PAL_FALSE == gWDIInitialized )
27371 {
27372 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
27373 "WDI API call before module is initialized - Fail request");
27374
Jeff Johnsone7245742012-09-05 17:12:55 -070027375 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070027376 }
27377
27378 /*------------------------------------------------------------------------
27379 Fill in Event data and post to the Main FSM
27380 ------------------------------------------------------------------------*/
27381 wdiEventData.wdiRequest = WDI_SET_POWER_PARAMS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070027382 wdiEventData.pEventData = pwdiPowerParamsReqParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070027383 wdiEventData.uEventDataSize = sizeof(*pwdiPowerParamsReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -070027384 wdiEventData.pCBfnc = wdiPowerParamsCb;
Jeff Johnson295189b2012-06-20 16:38:30 -070027385 wdiEventData.pUserData = pUserData;
27386
27387 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
27388}/*WDI_SetPowerParamsReq*/
27389
27390/**
27391 @brief Process Set Power Params Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070027392
27393 @param pWDICtx: pointer to the WLAN DAL context
27394 pEventData: pointer to the event information structure
27395
Jeff Johnson295189b2012-06-20 16:38:30 -070027396 @see
27397 @return Result of the function call
27398*/
27399WDI_Status
27400WDI_ProcessSetPowerParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070027401(
Jeff Johnson295189b2012-06-20 16:38:30 -070027402 WDI_ControlBlockType* pWDICtx,
27403 WDI_EventInfoType* pEventData
27404)
27405{
27406 WDI_SetPowerParamsReqParamsType* pwdiPowerParamsReqParams = NULL;
27407 WDI_SetPowerParamsCb wdiPowerParamsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070027408 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070027409 wpt_uint16 usDataOffset = 0;
27410 wpt_uint16 usSendSize = 0;
27411 tSetPowerParamsType powerParams;
27412
27413 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027414 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070027415 -------------------------------------------------------------------------*/
27416 if (( NULL == pEventData ) ||
27417 ( NULL == (pwdiPowerParamsReqParams = (WDI_SetPowerParamsReqParamsType*)pEventData->pEventData)) ||
27418 ( NULL == (wdiPowerParamsCb = (WDI_SetPowerParamsCb)pEventData->pCBfnc)))
27419 {
27420 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027421 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027422 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070027423 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070027424 }
27425
27426 /*-----------------------------------------------------------------------
27427 Get message buffer
27428 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070027429 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_POWER_PARAMS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070027430 sizeof(powerParams),
27431 &pSendBuffer, &usDataOffset, &usSendSize))||
27432 ( usSendSize < (usDataOffset + sizeof(powerParams) )))
27433 {
27434 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080027435 "Unable to get send buffer in Set PNO req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070027436 pEventData, pwdiPowerParamsReqParams, wdiPowerParamsCb);
27437 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070027438 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070027439 }
27440
27441 /* Ignore DTIM */
Jeff Johnsone7245742012-09-05 17:12:55 -070027442 powerParams.uIgnoreDTIM =
Jeff Johnson295189b2012-06-20 16:38:30 -070027443 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uIgnoreDTIM;
27444
27445 /*DTIM Period*/
Jeff Johnsone7245742012-09-05 17:12:55 -070027446 powerParams.uDTIMPeriod =
Jeff Johnson295189b2012-06-20 16:38:30 -070027447 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uDTIMPeriod;
27448
27449 /* Listen Interval */
Jeff Johnsone7245742012-09-05 17:12:55 -070027450 powerParams.uListenInterval=
Jeff Johnson295189b2012-06-20 16:38:30 -070027451 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uListenInterval;
27452
27453 /* Broadcast Multicas Filter */
Jeff Johnsone7245742012-09-05 17:12:55 -070027454 powerParams.uBcastMcastFilter =
Jeff Johnson295189b2012-06-20 16:38:30 -070027455 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uBcastMcastFilter;
27456
27457 /* Beacon Early Termination */
Jeff Johnsone7245742012-09-05 17:12:55 -070027458 powerParams.uEnableBET =
Jeff Johnson295189b2012-06-20 16:38:30 -070027459 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uEnableBET;
27460
27461 /* Beacon Early Termination Interval */
Jeff Johnsone7245742012-09-05 17:12:55 -070027462 powerParams.uBETInterval =
27463 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uBETInterval;
Jeff Johnson295189b2012-06-20 16:38:30 -070027464
Yue Mac24062f2013-05-13 17:01:29 -070027465 /* MAX LI for modulated DTIM */
27466 powerParams.uMaxLIModulatedDTIM =
27467 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uMaxLIModulatedDTIM;
Jeff Johnsone7245742012-09-05 17:12:55 -070027468
27469 wpalMemoryCopy( pSendBuffer+usDataOffset,
27470 &powerParams,
27471 sizeof(powerParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070027472
27473 pWDICtx->wdiReqStatusCB = pwdiPowerParamsReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070027474 pWDICtx->pReqStatusUserData = pwdiPowerParamsReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070027475
27476 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027477 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070027478 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070027479 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
27480 wdiPowerParamsCb, pEventData->pUserData, WDI_SET_POWER_PARAMS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070027481}
27482
27483/**
27484 @brief Process Power Params Rsp function (called when a
27485 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070027486
27487 @param pWDICtx: pointer to the WLAN DAL context
27488 pEventData: pointer to the event information structure
27489
Jeff Johnson295189b2012-06-20 16:38:30 -070027490 @see
27491 @return Result of the function call
27492*/
27493WDI_Status
27494WDI_ProcessSetPowerParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070027495(
Jeff Johnson295189b2012-06-20 16:38:30 -070027496 WDI_ControlBlockType* pWDICtx,
27497 WDI_EventInfoType* pEventData
27498)
27499{
27500 WDI_Status wdiStatus;
27501 eHalStatus halStatus;
27502 WDI_SetPowerParamsCb wdiPowerParamsCb;
27503 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27504
27505 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027506 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070027507 -------------------------------------------------------------------------*/
27508 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
27509 ( NULL == pEventData->pEventData ))
27510 {
27511 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027512 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027513 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070027514 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070027515 }
27516
Jeff Johnsone7245742012-09-05 17:12:55 -070027517 wdiPowerParamsCb = (WDI_SetPowerParamsCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070027518
27519 /*-------------------------------------------------------------------------
27520 Extract response and send it to UMAC
27521 -------------------------------------------------------------------------*/
27522 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070027523 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070027524
27525 /*Notify UMAC*/
27526 wdiPowerParamsCb(wdiStatus, pWDICtx->pRspCBUserData);
27527
Jeff Johnsone7245742012-09-05 17:12:55 -070027528 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070027529}/*WDI_ProcessSetPowerParamsRsp*/
27530
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +053027531/**
27532 @brief WDI_dhcpStartInd
27533 Host will send an event to the FW when DHCP is initiated
27534
27535 @param
27536 WDI_DHCPInd: DHCP Indication
27537 @see
27538 @return Result of the function call
27539*/
27540WDI_Status
27541WDI_dhcpStartInd
27542(
27543 WDI_DHCPInd *wdiDHCPInd
27544)
27545{
27546 WDI_EventInfoType wdiEventData;
27547
27548 /*------------------------------------------------------------------------
27549 Sanity Check
27550 ------------------------------------------------------------------------*/
27551 if ( eWLAN_PAL_FALSE == gWDIInitialized )
27552 {
27553 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
27554 "WDI API call before module is initialized - Fail request");
27555
27556 return WDI_STATUS_E_NOT_ALLOWED;
27557 }
27558
27559 wdiEventData.wdiRequest = WDI_DHCP_START_IND;
27560 wdiEventData.pEventData = wdiDHCPInd;
c_hpothu0b0cab72014-02-13 21:52:40 +053027561 wdiEventData.uEventDataSize = sizeof(WDI_DHCPInd);
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +053027562 wdiEventData.pCBfnc = NULL;
27563 wdiEventData.pUserData = NULL;
27564
27565 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
27566}
27567
27568
27569/**
27570 @brief WDI_dhcpStopInd
27571 Host will send an event to the FW when DHCP is completed
27572
27573 @param
27574 WDI_DHCPInd: DHCP Indication
27575 @see
27576 @return Result of the function call
27577*/
27578WDI_Status
27579WDI_dhcpStopInd
27580(
27581 WDI_DHCPInd *wdiDHCPInd
27582)
27583{
27584 WDI_EventInfoType wdiEventData;
27585
27586 /*------------------------------------------------------------------------
27587 Sanity Check
27588 ------------------------------------------------------------------------*/
27589 if ( eWLAN_PAL_FALSE == gWDIInitialized )
27590 {
27591 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
27592 "WDI API call before module is initialized - Fail request");
27593
27594 return WDI_STATUS_E_NOT_ALLOWED;
27595 }
27596
27597 wdiEventData.wdiRequest = WDI_DHCP_STOP_IND;
27598 wdiEventData.pEventData = wdiDHCPInd;
c_hpothu0b0cab72014-02-13 21:52:40 +053027599 wdiEventData.uEventDataSize = sizeof(WDI_DHCPInd);
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +053027600 wdiEventData.pCBfnc = NULL;
27601 wdiEventData.pUserData = NULL;
27602
27603 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
27604}
27605
27606
27607/**
27608 @brief Process DHCP Start Indication message and post it to HAL
27609
27610 @param pWDICtx: pointer to the WLAN DAL context
27611 pEventData: pointer to the event information structure
27612
27613 @see
27614 @return Result of the function call
27615*/
27616WDI_Status
27617WDI_ProcessDHCPStartInd
27618(
27619 WDI_ControlBlockType* pWDICtx,
27620 WDI_EventInfoType* pEventData
27621)
27622{
27623 wpt_uint8* pSendBuffer = NULL;
27624 wpt_uint16 usDataOffset = 0;
27625 wpt_uint16 usSendSize = 0;
27626 wpt_uint16 usLen = 0;
27627 WDI_DHCPInd* pwdiDHCPInd = NULL;
27628 tDHCPInfo* pDHCPInfo;
Sandeep Puligillaee789512014-02-13 19:14:52 +053027629 WDI_Status wdiStatus;
27630
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +053027631
27632 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27633
27634 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
27635 "%s", __func__);
27636
27637 /*-------------------------------------------------------------------------
27638 Sanity check
27639 -------------------------------------------------------------------------*/
27640 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
27641 {
27642 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
27643 "%s: Invalid parameters", __func__);
27644 WDI_ASSERT(0);
27645 return WDI_STATUS_E_FAILURE;
27646 }
27647 pwdiDHCPInd = (WDI_DHCPInd*)pEventData->pEventData;
27648 /*-----------------------------------------------------------------------
27649 Get message buffer
27650 -----------------------------------------------------------------------*/
27651
27652 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
27653 WDI_DHCP_START_IND,
27654 sizeof(tDHCPInfo),
27655 &pSendBuffer, &usDataOffset, &usSendSize))||
27656 ( usSendSize < (usDataOffset + usLen )))
27657 {
27658 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
27659 "Unable to get send buffer in DHCP Start req %p ",
27660 pEventData);
27661 WDI_ASSERT(0);
27662 return WDI_STATUS_E_FAILURE;
27663 }
27664
Sandeep Puligillaee789512014-02-13 19:14:52 +053027665 pDHCPInfo = (tDHCPInfo*)(pSendBuffer+usDataOffset);
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +053027666 pDHCPInfo->device_mode = pwdiDHCPInd->device_mode;
27667 wpalMemoryCopy(pDHCPInfo->macAddr, pwdiDHCPInd->macAddr,
27668 WDI_MAC_ADDR_LEN);
27669
27670 pWDICtx->pReqStatusUserData = NULL;
27671 pWDICtx->pfncRspCB = NULL;
27672
27673 /*-------------------------------------------------------------------------
27674 Send DHCP Start Indication to HAL
27675 -------------------------------------------------------------------------*/
Sandeep Puligillaee789512014-02-13 19:14:52 +053027676 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
27677 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus:WDI_STATUS_SUCCESS_SYNC;
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +053027678}/*WDI_ProcessDHCPStartInd*/
27679
27680/**
27681 @brief Process DHCP Stop indication message and post it to HAL
27682
27683 @param pWDICtx: pointer to the WLAN DAL context
27684 pEventData: pointer to the event information structure
27685
27686 @see
27687 @return Result of the function call
27688*/
27689WDI_Status
27690WDI_ProcessDHCPStopInd
27691(
27692 WDI_ControlBlockType* pWDICtx,
27693 WDI_EventInfoType* pEventData
27694)
27695{
27696 wpt_uint8* pSendBuffer = NULL;
27697 wpt_uint16 usDataOffset = 0;
27698 wpt_uint16 usSendSize = 0;
27699 wpt_uint16 usLen = 0;
27700 WDI_DHCPInd* pwdiDHCPInd = NULL;
27701 tDHCPInfo* pDHCPInfo;
Sandeep Puligillaee789512014-02-13 19:14:52 +053027702 WDI_Status wdiStatus;
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +053027703
27704 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27705
27706 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
27707 "%s", __func__);
27708
27709 /*-------------------------------------------------------------------------
27710 Sanity check
27711 -------------------------------------------------------------------------*/
27712
27713 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
27714 {
27715 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
27716 "%s: Invalid parameters", __func__);
27717 WDI_ASSERT(0);
27718 return WDI_STATUS_E_FAILURE;
27719 }
27720 pwdiDHCPInd = (WDI_DHCPInd*)pEventData->pEventData;
27721 /*-----------------------------------------------------------------------
27722 Get message buffer
27723 -----------------------------------------------------------------------*/
27724
27725 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
27726 WDI_DHCP_STOP_IND,
27727 sizeof(tDHCPInfo),
27728 &pSendBuffer, &usDataOffset, &usSendSize))||
27729 ( usSendSize < (usDataOffset + usLen )))
27730 {
27731 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
27732 "Unable to get send buffer in DHCP Start req %p ",
27733 pEventData);
27734 WDI_ASSERT(0);
27735 return WDI_STATUS_E_FAILURE;
27736 }
27737
Sandeep Puligillaee789512014-02-13 19:14:52 +053027738 pDHCPInfo = (tDHCPInfo*)(pSendBuffer+usDataOffset);
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +053027739 pDHCPInfo->device_mode = pwdiDHCPInd->device_mode;
27740 wpalMemoryCopy(pDHCPInfo->macAddr, pwdiDHCPInd->macAddr,
27741 WDI_MAC_ADDR_LEN);
27742
27743 pWDICtx->pReqStatusUserData = NULL;
27744 pWDICtx->pfncRspCB = NULL;
27745 /*-------------------------------------------------------------------------
27746 Send DHCP Stop indication to HAL
27747 -------------------------------------------------------------------------*/
Sandeep Puligillaee789512014-02-13 19:14:52 +053027748 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
27749 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus:WDI_STATUS_SUCCESS_SYNC;
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +053027750
27751}/*WDI_ProcessDHCPStopInd*/
27752
27753
Jeff Johnson295189b2012-06-20 16:38:30 -070027754#ifdef WLAN_FEATURE_GTK_OFFLOAD
27755/**
27756 @brief WDI_GTKOffloadReq will be called when the upper MAC
27757 wants to set GTK Rekey Counter while in power save. Upon
27758 the call of this API the WLAN DAL will pack and send a
27759 HAL GTK offload request message to the lower RIVA
27760 sub-system if DAL is in state STARTED.
27761
27762 In state BUSY this request will be queued. Request won't
27763 be allowed in any other state.
27764
27765 WDI_PostAssocReq must have been called.
27766
27767 @param pwdiGtkOffloadParams: the GTK offload as specified
27768 by the Device Interface
27769
27770 wdiGtkOffloadCb: callback for passing back the response
27771 of the GTK offload operation received from the device
27772
27773 pUserData: user data will be passed back with the
27774 callback
27775
27776 @see WDI_PostAssocReq
27777 @return Result of the function call
27778*/
27779WDI_Status
27780WDI_GTKOffloadReq
27781(
27782 WDI_GtkOffloadReqMsg* pwdiGtkOffloadReqMsg,
27783 WDI_GtkOffloadCb wdiGtkOffloadCb,
27784 void* pUserData
27785)
27786{
Gopichand Nakkala870cbae2013-03-15 21:16:09 +053027787 WDI_EventInfoType wdiEventData;
Jeff Johnson295189b2012-06-20 16:38:30 -070027788 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27789
27790 /*------------------------------------------------------------------------
27791 Sanity Check
27792 ------------------------------------------------------------------------*/
27793 if ( eWLAN_PAL_FALSE == gWDIInitialized )
27794 {
27795 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
27796 "WDI API call before module is initialized - Fail request");
27797
27798 return WDI_STATUS_E_NOT_ALLOWED;
27799 }
27800
27801 /*------------------------------------------------------------------------
27802 Fill in Event data and post to the Main FSM
27803 ------------------------------------------------------------------------*/
27804 wdiEventData.wdiRequest = WDI_GTK_OFFLOAD_REQ;
27805 wdiEventData.pEventData = pwdiGtkOffloadReqMsg;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -070027806 wdiEventData.uEventDataSize = sizeof(*pwdiGtkOffloadReqMsg);
Jeff Johnson295189b2012-06-20 16:38:30 -070027807 wdiEventData.pCBfnc = wdiGtkOffloadCb;
27808 wdiEventData.pUserData = pUserData;
27809
27810 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
27811}
27812
27813
27814/**
27815 @brief WDI_GTKOffloadGetInfoReq will be called when the upper
27816 MAC wants to get GTK Rekey Counter while in power save.
27817 Upon the call of this API the WLAN DAL will pack and
27818 send a HAL GTK offload request message to the lower RIVA
27819 sub-system if DAL is in state STARTED.
27820
27821 In state BUSY this request will be queued. Request won't
27822 be allowed in any other state.
27823
27824 WDI_PostAssocReq must have been called.
27825
27826 @param pwdiGtkOffloadGetInfoReqMsg: the GTK Offload
27827 Information Message as specified by the
27828 Device Interface
27829
27830 wdiGtkOffloadGetInfoCb: callback for passing back the
27831 response of the GTK offload operation received from the
27832 device
27833
27834 pUserData: user data will be passed back with the
27835 callback
27836
27837 @see WDI_PostAssocReq
27838 @return Result of the function call
27839*/
27840WDI_Status
27841WDI_GTKOffloadGetInfoReq
27842(
27843 WDI_GtkOffloadGetInfoReqMsg* pwdiGtkOffloadGetInfoReqMsg,
27844 WDI_GtkOffloadGetInfoCb wdiGtkOffloadGetInfoCb,
27845 void* pUserData
27846)
27847{
Gopichand Nakkala870cbae2013-03-15 21:16:09 +053027848 WDI_EventInfoType wdiEventData;
Jeff Johnson295189b2012-06-20 16:38:30 -070027849 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27850
27851 /*------------------------------------------------------------------------
27852 Sanity Check
27853 ------------------------------------------------------------------------*/
27854 if ( eWLAN_PAL_FALSE == gWDIInitialized )
27855 {
27856 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
27857 "WDI API call before module is initialized - Fail request");
27858
27859 return WDI_STATUS_E_NOT_ALLOWED;
27860 }
27861
27862 /*------------------------------------------------------------------------
27863 Fill in Event data and post to the Main FSM
27864 ------------------------------------------------------------------------*/
27865 wdiEventData.wdiRequest = WDI_GTK_OFFLOAD_GETINFO_REQ;
27866 wdiEventData.pEventData = pwdiGtkOffloadGetInfoReqMsg;
27867 wdiEventData.uEventDataSize = sizeof(*pwdiGtkOffloadGetInfoReqMsg);
27868 wdiEventData.pCBfnc = wdiGtkOffloadGetInfoCb;
27869 wdiEventData.pUserData = pUserData;
27870
27871 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
27872}
27873
27874
27875/**
27876 @brief Process set GTK Offload Request function
27877
27878 @param pWDICtx: pointer to the WLAN DAL context
27879 pEventData: pointer to the event information structure
27880
27881 @see
27882 @return Result of the function call
27883*/
27884WDI_Status
27885WDI_ProcessGTKOffloadReq
27886(
27887 WDI_ControlBlockType* pWDICtx,
27888 WDI_EventInfoType* pEventData
27889)
27890{
27891 WDI_GtkOffloadReqMsg* pwdiGtkOffloadReqMsg = NULL;
27892 WDI_GtkOffloadCb wdiGtkOffloadCb = NULL;
27893 wpt_uint8* pSendBuffer = NULL;
27894 wpt_uint16 usDataOffset = 0;
27895 wpt_uint16 usSendSize = 0;
27896 tHalGtkOffloadReqParams gtkOffloadReqParams = {0};
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027897 wpt_uint8 ucCurrentSessionId = 0;
27898 WDI_BSSSessionType* pBSSSes = NULL;
27899
Jeff Johnson295189b2012-06-20 16:38:30 -070027900 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27901
27902 /*-------------------------------------------------------------------------
27903 Sanity check
27904 -------------------------------------------------------------------------*/
27905 if (( NULL == pEventData ) ||
27906 ( NULL == (pwdiGtkOffloadReqMsg = (WDI_GtkOffloadReqMsg*)pEventData->pEventData)) ||
27907 ( NULL == (wdiGtkOffloadCb = (WDI_GtkOffloadCb)pEventData->pCBfnc)))
27908 {
27909 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027910 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027911 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080027912 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070027913 }
27914
27915 /*-----------------------------------------------------------------------
27916 Get message buffer
27917 -----------------------------------------------------------------------*/
27918 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_GTK_OFFLOAD_REQ,
27919 sizeof(gtkOffloadReqParams),
27920 &pSendBuffer, &usDataOffset, &usSendSize))||
27921 ( usSendSize < (usDataOffset + sizeof(gtkOffloadReqParams) )))
27922 {
27923 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080027924 "Unable to get send buffer in GTK offload req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070027925 pEventData, pwdiGtkOffloadReqMsg, wdiGtkOffloadCb);
27926 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080027927 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070027928 }
27929
27930 //
27931 // Fill gtkOffloadReqParams from pwdiGtkOffloadReqMsg->gtkOffloadReqParams
27932 //
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027933 ucCurrentSessionId = WDI_FindAssocSession( pWDICtx,
27934 pwdiGtkOffloadReqMsg->gtkOffloadReqParams.bssId,
27935 &pBSSSes);
27936 if ( NULL == pBSSSes )
27937 {
27938 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027939 " %s : Association for this BSSID does not exist", __func__);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080027940 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027941 }
27942
27943 gtkOffloadReqParams.bssIdx = pBSSSes->ucBSSIdx;
27944
Jeff Johnson295189b2012-06-20 16:38:30 -070027945 gtkOffloadReqParams.ulFlags = pwdiGtkOffloadReqMsg->gtkOffloadReqParams.ulFlags;
27946 // Copy KCK
27947 wpalMemoryCopy(&(gtkOffloadReqParams.aKCK[0]), &(pwdiGtkOffloadReqMsg->gtkOffloadReqParams.aKCK[0]), 16);
27948 // Copy KEK
27949 wpalMemoryCopy(&(gtkOffloadReqParams.aKEK[0]), &(pwdiGtkOffloadReqMsg->gtkOffloadReqParams.aKEK[0]), 16);
27950 // Copy KeyReplayCounter
27951 wpalMemoryCopy(&(gtkOffloadReqParams.ullKeyReplayCounter), &(pwdiGtkOffloadReqMsg->gtkOffloadReqParams.ullKeyReplayCounter), sizeof(v_U64_t));
27952
27953 wpalMemoryCopy( pSendBuffer+usDataOffset,
27954 &gtkOffloadReqParams,
27955 sizeof(gtkOffloadReqParams));
27956
27957 pWDICtx->wdiReqStatusCB = pwdiGtkOffloadReqMsg->wdiReqStatusCB;
27958 pWDICtx->pReqStatusUserData = pwdiGtkOffloadReqMsg->pUserData;
27959
27960 /*-------------------------------------------------------------------------
27961 Send Get STA Request to HAL
27962 -------------------------------------------------------------------------*/
27963 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
27964 wdiGtkOffloadCb, pEventData->pUserData, WDI_GTK_OFFLOAD_RESP);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080027965
27966fail:
27967 // Release the message buffer so we don't leak
27968 wpalMemoryFree(pSendBuffer);
27969
27970failRequest:
27971 //WDA should have failure check to avoid the memory leak
27972 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070027973}
27974
27975
27976/**
27977 @brief Process GTK Offload Get Information Request function
27978
27979 @param pWDICtx: pointer to the WLAN DAL context
27980 pEventData: pointer to the event information structure
27981
27982 @see
27983 @return Result of the function call
27984*/
27985WDI_Status
27986WDI_ProcessGTKOffloadGetInfoReq
27987(
27988 WDI_ControlBlockType* pWDICtx,
27989 WDI_EventInfoType* pEventData
27990)
27991{
27992 WDI_GtkOffloadGetInfoReqMsg* pwdiGtkOffloadGetInfoReqMsg = NULL;
27993 WDI_GtkOffloadGetInfoCb wdiGtkOffloadGetInfoCb = NULL;
27994 wpt_uint8* pSendBuffer = NULL;
27995 wpt_uint16 usDataOffset = 0;
27996 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027997 tHalGtkOffloadGetInfoReqParams halGtkOffloadGetInfoReqParams;
27998 wpt_uint8 ucCurrentSessionId = 0;
27999 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070028000
28001 /*-------------------------------------------------------------------------
28002 Sanity check
28003 -------------------------------------------------------------------------*/
28004 if (( NULL == pEventData ) ||
28005 ( NULL == (pwdiGtkOffloadGetInfoReqMsg = (WDI_GtkOffloadGetInfoReqMsg*)pEventData->pEventData)) ||
28006 ( NULL == (wdiGtkOffloadGetInfoCb = (WDI_GtkOffloadGetInfoCb)pEventData->pCBfnc)))
28007 {
28008 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028009 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028010 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080028011 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070028012 }
28013
28014 /*-----------------------------------------------------------------------
28015 Get message buffer
28016 -----------------------------------------------------------------------*/
28017 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_GTK_OFFLOAD_GETINFO_REQ,
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028018 sizeof(halGtkOffloadGetInfoReqParams),
Jeff Johnson295189b2012-06-20 16:38:30 -070028019 &pSendBuffer, &usDataOffset, &usSendSize))||
Gopichand Nakkala870cbae2013-03-15 21:16:09 +053028020 ( usSendSize < ( usDataOffset + sizeof(halGtkOffloadGetInfoReqParams))))
Jeff Johnson295189b2012-06-20 16:38:30 -070028021 {
28022 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080028023 "Unable to get send buffer in WDI_ProcessGTKOffloadGetInfoReq() %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070028024 pEventData, pwdiGtkOffloadGetInfoReqMsg, wdiGtkOffloadGetInfoCb);
28025 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080028026 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070028027 }
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028028 ucCurrentSessionId = WDI_FindAssocSession( pWDICtx,
28029 pwdiGtkOffloadGetInfoReqMsg->WDI_GtkOffloadGetInfoReqParams.bssId,
28030 &pBSSSes);
28031 if ( NULL == pBSSSes )
28032 {
28033 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028034 " %s : Association for this BSSID does not exist",__func__);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080028035 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028036 }
28037 halGtkOffloadGetInfoReqParams.bssIdx = pBSSSes->ucBSSIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070028038
28039 //
28040 // Don't need to fill send buffer other than header
28041 //
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028042 wpalMemoryCopy( pSendBuffer+usDataOffset,
28043 &halGtkOffloadGetInfoReqParams,
28044 sizeof(halGtkOffloadGetInfoReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070028045
28046 pWDICtx->wdiReqStatusCB = pwdiGtkOffloadGetInfoReqMsg->wdiReqStatusCB;
28047 pWDICtx->pReqStatusUserData = pwdiGtkOffloadGetInfoReqMsg->pUserData;
28048
28049 /*-------------------------------------------------------------------------
28050 Send Get STA Request to HAL
28051 -------------------------------------------------------------------------*/
28052 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
28053 wdiGtkOffloadGetInfoCb, pEventData->pUserData, WDI_GTK_OFFLOAD_GETINFO_RESP);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080028054fail:
28055 // Release the message buffer so we don't leak
28056 wpalMemoryFree(pSendBuffer);
28057
28058failRequest:
28059 //WDA should have failure check to avoid the memory leak
28060 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070028061}
28062
28063/**
28064 @brief Process host offload Rsp function (called when a
28065 response is being received over the bus from HAL)
28066
28067 @param pWDICtx: pointer to the WLAN DAL context
28068 pEventData: pointer to the event information structure
28069
28070 @see
28071 @return Result of the function call
28072*/
28073WDI_Status
28074WDI_ProcessGtkOffloadRsp
28075(
28076 WDI_ControlBlockType* pWDICtx,
28077 WDI_EventInfoType* pEventData
28078)
28079{
Jeff Johnson295189b2012-06-20 16:38:30 -070028080 eHalStatus halStatus;
28081 WDI_GtkOffloadCb wdiGtkOffloadCb = NULL;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028082 tHalGtkOffloadRspParams halGtkOffloadRspParams;
28083 WDI_GtkOffloadRspParams wdiGtkOffloadRsparams;
Jeff Johnson295189b2012-06-20 16:38:30 -070028084
28085 /*-------------------------------------------------------------------------
28086 Sanity check
28087 -------------------------------------------------------------------------*/
28088 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
28089 ( NULL == pEventData->pEventData))
28090 {
28091 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028092 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028093 WDI_ASSERT(0);
28094 return WDI_STATUS_E_FAILURE;
28095 }
28096
Wilson Yang00256342013-10-10 23:13:38 -070028097 wdiGtkOffloadCb = (WDI_GtkOffloadCb)pWDICtx->pfncRspCB;
28098
Jeff Johnson295189b2012-06-20 16:38:30 -070028099 /*-------------------------------------------------------------------------
28100 Extract response and send it to UMAC
28101 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028102 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
28103 {
28104 wpalMemoryCopy( &halGtkOffloadRspParams,
28105 pEventData->pEventData,
28106 sizeof(halGtkOffloadRspParams));
28107
28108 wdiGtkOffloadRsparams.ulStatus =
Gopichand Nakkala870cbae2013-03-15 21:16:09 +053028109 WDI_HAL_2_WDI_STATUS(halGtkOffloadRspParams.ulStatus);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028110 wdiGtkOffloadRsparams.bssIdx =
28111 halGtkOffloadRspParams.bssIdx;
28112 }
28113 else
28114 {
28115 halStatus = *((eHalStatus*)pEventData->pEventData);
28116 wdiGtkOffloadRsparams.ulStatus = WDI_HAL_2_WDI_STATUS(halStatus);
28117 }
Jeff Johnson295189b2012-06-20 16:38:30 -070028118
28119 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028120 wdiGtkOffloadCb( &wdiGtkOffloadRsparams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070028121
28122 return WDI_STATUS_SUCCESS;
28123}
28124
28125/**
28126 @brief Process GTK Offload Get Information Response function
28127
28128 @param pWDICtx: pointer to the WLAN DAL context
28129 pEventData: pointer to the event information structure
28130
28131 @see
28132 @return Result of the function call
28133*/
28134WDI_Status
28135WDI_ProcessGTKOffloadGetInfoRsp
28136(
28137 WDI_ControlBlockType* pWDICtx,
28138 WDI_EventInfoType* pEventData
28139)
28140{
Jeff Johnson295189b2012-06-20 16:38:30 -070028141 eHalStatus halStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070028142 WDI_GtkOffloadGetInfoCb wdiGtkOffloadGetInfoCb = NULL;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028143 tHalGtkOffloadGetInfoRspParams halGtkOffloadGetInfoRspParams;
28144 WDI_GtkOffloadGetInfoRspParams wdiGtkOffloadGetInfoRsparams;
Gopichand Nakkala870cbae2013-03-15 21:16:09 +053028145 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070028146
Jeff Johnson295189b2012-06-20 16:38:30 -070028147
28148 /*-------------------------------------------------------------------------
28149 Sanity check
28150 -------------------------------------------------------------------------*/
28151 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
28152 ( NULL == pEventData->pEventData ))
28153 {
28154 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028155 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028156 WDI_ASSERT(0);
28157 return WDI_STATUS_E_FAILURE;
28158 }
28159
Wilson Yang00256342013-10-10 23:13:38 -070028160 wdiGtkOffloadGetInfoCb = (WDI_GtkOffloadGetInfoCb)pWDICtx->pfncRspCB;
28161
28162 /*-------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -070028163 Extract response and send it to UMAC
28164 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028165 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
28166 {
28167 wpalMemoryCopy( &halGtkOffloadGetInfoRspParams,
28168 pEventData->pEventData,
28169 sizeof(halGtkOffloadGetInfoRspParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070028170
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028171 wdiGtkOffloadGetInfoRsparams.ulStatus =
Gopichand Nakkala870cbae2013-03-15 21:16:09 +053028172 WDI_HAL_2_WDI_STATUS(halGtkOffloadGetInfoRspParams.ulStatus);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028173 wdiGtkOffloadGetInfoRsparams.ullKeyReplayCounter =
28174 halGtkOffloadGetInfoRspParams.ullKeyReplayCounter;
28175 wdiGtkOffloadGetInfoRsparams.ulTotalRekeyCount =
28176 halGtkOffloadGetInfoRspParams.ulTotalRekeyCount;
28177 wdiGtkOffloadGetInfoRsparams.ulGTKRekeyCount =
28178 halGtkOffloadGetInfoRspParams.ulGTKRekeyCount;
28179 wdiGtkOffloadGetInfoRsparams.ulIGTKRekeyCount =
28180 halGtkOffloadGetInfoRspParams.ulIGTKRekeyCount;
Gopichand Nakkala870cbae2013-03-15 21:16:09 +053028181
28182 wpalMutexAcquire(&pWDICtx->wptMutex);
28183 WDI_FindAssocSessionByBSSIdx(pWDICtx, halGtkOffloadGetInfoRspParams.bssIdx,
28184 &pBSSSes);
28185
28186 if ( NULL == pBSSSes )
28187 {
28188 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
28189 "Association sequence for this BSS does not exist or "
28190 "association no longer in progress - mysterious HAL response");
28191 wpalMutexRelease(&pWDICtx->wptMutex);
28192 return WDI_STATUS_E_NOT_ALLOWED;
28193 }
28194
28195 wpalMemoryCopy(wdiGtkOffloadGetInfoRsparams.bssId, pBSSSes->macBSSID,
28196 sizeof (wpt_macAddr));
28197 wpalMutexRelease(&pWDICtx->wptMutex);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028198 }
28199 else
28200 {
28201 halStatus = *((eHalStatus*)pEventData->pEventData);
28202 wdiGtkOffloadGetInfoRsparams.ulStatus = WDI_HAL_2_WDI_STATUS(halStatus);
28203 }
Jeff Johnson295189b2012-06-20 16:38:30 -070028204 /*Notify UMAC*/
28205 //wdiUpdateScanParamsCb(wdiStatus, pWDICtx->pRspCBUserData);
28206 //wdiReceiveFilterClearFilterCb(wdiStatus, pWDICtx->pRspCBUserData);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028207 wdiGtkOffloadGetInfoCb(&wdiGtkOffloadGetInfoRsparams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070028208
28209 return WDI_STATUS_SUCCESS;
28210}
28211#endif // WLAN_FEATURE_GTK_OFFLOAD
28212
28213#ifdef WLAN_WAKEUP_EVENTS
28214WDI_Status
28215WDI_ProcessWakeReasonInd
28216(
28217 WDI_ControlBlockType* pWDICtx,
28218 WDI_EventInfoType* pEventData
28219)
28220{
28221 WDI_LowLevelIndType *pWdiInd;
28222 tpWakeReasonParams pWakeReasonParams;
28223 wpt_uint32 allocSize = 0;
28224
28225 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028226 "+%s", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028227
28228 /*-------------------------------------------------------------------------
28229 Sanity check
28230 -------------------------------------------------------------------------*/
28231 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
28232 ( NULL == pEventData->pEventData ))
28233 {
28234 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028235 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028236 WDI_ASSERT( 0 );
28237 return WDI_STATUS_E_FAILURE;
28238 }
28239
28240 /*-------------------------------------------------------------------------
28241 Extract indication and send it to UMAC
28242 -------------------------------------------------------------------------*/
28243 pWakeReasonParams = (tpWakeReasonParams)(pEventData->pEventData);
28244
28245 allocSize = sizeof(WDI_LowLevelIndType) + (pWakeReasonParams->ulStoredDataLen - 1);
28246
28247 //Allocate memory for WDI_WakeReasonIndType structure
28248 pWdiInd = wpalMemoryAllocate(allocSize) ;
28249
28250 if(NULL == pWdiInd)
28251 {
28252 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080028253 "%s: Failed to allocate memory for WDI_WakeReasonIndType: %p %p %p ",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028254 __func__, pWDICtx, pEventData, pEventData->pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070028255 WDI_ASSERT(0);
28256 return WDI_STATUS_E_FAILURE;
28257 }
28258
28259 wpalMemoryZero(pWdiInd, allocSize);
28260
28261 /* Fill in the indication parameters*/
28262 // Fill wdiInd.wdiIndicationData.wakeReasonInd structure from wakeReasonInd.wakeReasonParams
28263 pWdiInd->wdiIndicationType = WDI_WAKE_REASON_IND;
28264 pWdiInd->wdiIndicationData.wdiWakeReasonInd.ulReason = pWakeReasonParams->ulReason;
28265 pWdiInd->wdiIndicationData.wdiWakeReasonInd.ulReasonArg = pWakeReasonParams->ulReasonArg;
28266 pWdiInd->wdiIndicationData.wdiWakeReasonInd.ulStoredDataLen = pWakeReasonParams->ulStoredDataLen;
28267 pWdiInd->wdiIndicationData.wdiWakeReasonInd.ulActualDataLen = pWakeReasonParams->ulActualDataLen;
28268 wpalMemoryCopy( (void *)&(pWdiInd->wdiIndicationData.wdiWakeReasonInd.aDataStart[0]),
28269 &(pWakeReasonParams->aDataStart[0]),
28270 pWakeReasonParams->ulStoredDataLen);
28271
ltimariub77f24b2013-01-24 18:54:33 -080028272
28273 if ( pWDICtx->wdiLowLevelIndCB )
28274 {
28275 /*Notify UMAC*/
28276 pWDICtx->wdiLowLevelIndCB( pWdiInd, pWDICtx->pIndUserData );
28277 }
Jeff Johnson295189b2012-06-20 16:38:30 -070028278
28279 //Free memory allocated for WDI_WakeReasonIndType structure
28280 wpalMemoryFree(pWdiInd);
28281
28282 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028283 "-%s", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028284
28285 return WDI_STATUS_SUCCESS;
28286}
28287#endif // WLAN_WAKEUP_EVENTS
28288
28289void WDI_GetWcnssCompiledApiVersion
28290(
28291 WDI_WlanVersionType *pWcnssApiVersion
28292)
28293{
28294 pWcnssApiVersion->major = WLAN_HAL_VER_MAJOR;
28295 pWcnssApiVersion->minor = WLAN_HAL_VER_MINOR;
28296 pWcnssApiVersion->version = WLAN_HAL_VER_VERSION;
28297 pWcnssApiVersion->revision = WLAN_HAL_VER_REVISION;
28298}
28299
28300/**
28301 @brief Process Set TM Level Rsp function (called when a
28302 response is being received over the bus from HAL)
28303
28304 @param pWDICtx: pointer to the WLAN DAL context
28305 pEventData: pointer to the event information structure
28306
28307 @see
28308 @return Result of the function call
28309*/
28310WDI_Status
28311WDI_ProcessSetTmLevelRsp
28312(
28313 WDI_ControlBlockType* pWDICtx,
28314 WDI_EventInfoType* pEventData
28315)
28316{
28317 WDI_Status wdiStatus;
28318 eHalStatus halStatus;
28319 WDI_SetTmLevelCb wdiSetTmLevelCb;
28320 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28321
28322 /*-------------------------------------------------------------------------
28323 Sanity check
28324 -------------------------------------------------------------------------*/
28325 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
28326 ( NULL == pEventData->pEventData ))
28327 {
28328 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028329 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028330 WDI_ASSERT(0);
28331 return WDI_STATUS_E_FAILURE;
28332 }
28333
28334 wdiSetTmLevelCb = (WDI_SetPowerParamsCb)pWDICtx->pfncRspCB;
28335
28336 /*-------------------------------------------------------------------------
28337 Extract response and send it to UMAC
28338 -------------------------------------------------------------------------*/
28339 halStatus = *((eHalStatus*)pEventData->pEventData);
28340 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
28341
28342 /*Notify UMAC*/
28343 wdiSetTmLevelCb(wdiStatus, pWDICtx->pRspCBUserData);
28344
28345 return WDI_STATUS_SUCCESS;
28346}/*WDI_ProcessSetTmLevelRsp*/
28347
28348/**
28349 @brief Process Set Thermal Mitigation level Changed request
28350
28351 @param pWDICtx: pointer to the WLAN DAL context
28352 pEventData: pointer to the event information structure
28353
28354 @see
28355 @return Result of the function call
28356*/
28357WDI_Status
28358WDI_ProcessSetTmLevelReq
28359(
28360 WDI_ControlBlockType* pWDICtx,
28361 WDI_EventInfoType* pEventData
28362)
28363{
28364 WDI_SetTmLevelReqType *pwdiSetTmLevelReq = NULL;
28365 WDI_SetTmLevelCb wdiSetTmLevelCb = NULL;
28366 wpt_uint8* pSendBuffer = NULL;
28367 wpt_uint16 usDataOffset = 0;
28368 wpt_uint16 usSendSize = 0;
28369 tSetThermalMitgationType halTmMsg;
28370
28371 /*-------------------------------------------------------------------------
28372 Sanity check
28373 -------------------------------------------------------------------------*/
28374 if (( NULL == pEventData ) ||
28375 ( NULL == (pwdiSetTmLevelReq = (WDI_SetTmLevelReqType*)pEventData->pEventData)) ||
28376 ( NULL == (wdiSetTmLevelCb = (WDI_SetTmLevelCb)pEventData->pCBfnc)))
28377 {
28378 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028379 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028380 WDI_ASSERT(0);
28381 return WDI_STATUS_E_FAILURE;
28382 }
28383
28384 /*-----------------------------------------------------------------------
28385 Get message buffer
28386 -----------------------------------------------------------------------*/
28387 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_TM_LEVEL_REQ,
28388 sizeof(halTmMsg),
28389 &pSendBuffer, &usDataOffset, &usSendSize))||
28390 ( usSendSize < (usDataOffset + sizeof(halTmMsg) )))
28391 {
28392 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080028393 "Unable to get send buffer in Set PNO req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070028394 pEventData, pwdiSetTmLevelReq, wdiSetTmLevelCb);
28395 WDI_ASSERT(0);
28396 return WDI_STATUS_E_FAILURE;
28397 }
28398
28399 halTmMsg.thermalMitMode = pwdiSetTmLevelReq->tmMode;
28400 halTmMsg.thermalMitLevel = pwdiSetTmLevelReq->tmLevel;
28401
28402 wpalMemoryCopy( pSendBuffer+usDataOffset,
28403 &halTmMsg,
28404 sizeof(halTmMsg));
28405
28406 pWDICtx->pReqStatusUserData = pwdiSetTmLevelReq->pUserData;
28407 pWDICtx->pfncRspCB = NULL;
28408 /*-------------------------------------------------------------------------
28409 Send Get STA Request to HAL
28410 -------------------------------------------------------------------------*/
28411 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
28412 wdiSetTmLevelCb, pEventData->pUserData, WDI_SET_TM_LEVEL_RESP);
28413}
28414
28415/* Fill the value from the global features enabled array to the global capabilities
28416 * bitmap struct
28417 */
28418static void
28419FillAllFeatureCaps(tWlanFeatCaps *fCaps, placeHolderInCapBitmap *enabledFeat, wpt_int8 len)
28420{
28421 wpt_int8 i;
28422 for (i=0; i<len; i++)
28423 {
28424 setFeatCaps(fCaps, enabledFeat[i]);
28425 }
28426}
28427
28428/**
28429 @brief WDI_featureCapsExchangeReq
28430 Post feature capability bitmap exchange event.
28431 Host will send its own capability to FW in this req and
28432 expect FW to send its capability back as a bitmap in Response
28433
28434 @param
28435
28436 wdiFeatureCapsExchangeCb: callback called on getting the response.
28437 It is kept to mantain similarity between WDI reqs and if needed, can
28438 be used in future. Currently, It is set to NULL
28439
28440 pUserData: user data will be passed back with the
28441 callback
28442
28443 @see
28444 @return Result of the function call
28445*/
28446WDI_Status
28447WDI_featureCapsExchangeReq
28448(
28449 WDI_featureCapsExchangeCb wdiFeatureCapsExchangeCb,
28450 void* pUserData
28451)
28452{
28453 WDI_EventInfoType wdiEventData;
28454 wpt_int32 fCapsStructSize;
28455
28456 /*------------------------------------------------------------------------
28457 Sanity Check
28458 ------------------------------------------------------------------------*/
28459 if ( eWLAN_PAL_FALSE == gWDIInitialized )
28460 {
28461 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
28462 "WDI API call before module is initialized - Fail request");
28463
28464 return WDI_STATUS_E_NOT_ALLOWED;
28465 }
28466
28467 /* Allocate memory separately for global variable carrying FW caps */
28468 fCapsStructSize = sizeof(tWlanFeatCaps);
28469 gpHostWlanFeatCaps = wpalMemoryAllocate(fCapsStructSize);
28470 if ( NULL == gpHostWlanFeatCaps )
28471 {
28472 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Arif Hussain9a5d5382013-11-17 22:05:35 -080028473 "Cannot allocate memory for host capability info");
Jeff Johnson295189b2012-06-20 16:38:30 -070028474 WDI_ASSERT(0);
28475 return WDI_STATUS_MEM_FAILURE;
28476 }
28477
28478 wpalMemoryZero(gpHostWlanFeatCaps, fCapsStructSize);
28479
28480 /*------------------------------------------------------------------------
28481 Fill in Event data and post to the Main FSM
28482 ------------------------------------------------------------------------*/
28483 FillAllFeatureCaps(gpHostWlanFeatCaps, supportEnabledFeatures,
28484 (sizeof(supportEnabledFeatures)/sizeof(supportEnabledFeatures[0])));
Madan Mohan Koyyalamudif8d3b3f2013-07-30 19:10:54 +053028485 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Arif Hussain9a5d5382013-11-17 22:05:35 -080028486 "Host caps %x %x %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -070028487 gpHostWlanFeatCaps->featCaps[0],
28488 gpHostWlanFeatCaps->featCaps[1],
28489 gpHostWlanFeatCaps->featCaps[2],
28490 gpHostWlanFeatCaps->featCaps[3]
28491 );
Madan Mohan Koyyalamudif8d3b3f2013-07-30 19:10:54 +053028492 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR, "Host Capability");
28493 WDI_TraceHostFWCapabilities(gpHostWlanFeatCaps->featCaps);
Jeff Johnson295189b2012-06-20 16:38:30 -070028494 wdiEventData.wdiRequest = WDI_FEATURE_CAPS_EXCHANGE_REQ;
28495 wdiEventData.pEventData = gpHostWlanFeatCaps;
28496 wdiEventData.uEventDataSize = fCapsStructSize;
28497 wdiEventData.pCBfnc = wdiFeatureCapsExchangeCb;
28498 wdiEventData.pUserData = pUserData;
28499
28500 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
28501}
28502
28503/**
Yathish9f22e662012-12-10 14:21:35 -080028504 @brief Disable Active mode offload in Host
28505
28506 @param void
28507 @see
28508 @return void
28509*/
28510void
28511WDI_disableCapablityFeature(wpt_uint8 feature_index)
28512{
28513 supportEnabledFeatures[feature_index] = 0;
28514 return;
28515}
28516
28517/**
Jeff Johnson295189b2012-06-20 16:38:30 -070028518 @brief Process Host-FW Capability Exchange Request function
28519
28520 @param pWDICtx: pointer to the WLAN DAL context
28521 pEventData: pointer to the event information structure
28522
28523 @see
28524 @return Result of the function call
28525*/
28526WDI_Status
28527WDI_ProcessFeatureCapsExchangeReq
28528(
28529 WDI_ControlBlockType* pWDICtx,
28530 WDI_EventInfoType* pEventData
28531)
28532{
28533 wpt_uint8* pSendBuffer = NULL;
28534 wpt_uint16 usDataOffset = 0;
28535 wpt_uint16 usSendSize = 0;
28536 wpt_uint16 usLen = 0;
28537
28538 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28539
28540 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028541 "%s", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028542
28543 /*-------------------------------------------------------------------------
28544 Sanity check
28545 -------------------------------------------------------------------------*/
28546 /* Call back function is NULL since not required for cap exchange req */
28547 if (( NULL == pEventData ) ||
28548 ( NULL == (tWlanFeatCaps *)pEventData->pEventData))
28549 {
28550 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028551 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028552 WDI_ASSERT(0);
28553 return WDI_STATUS_E_FAILURE;
28554 }
28555
28556 /*-----------------------------------------------------------------------
28557 Get message buffer
28558 -----------------------------------------------------------------------*/
28559 usLen = sizeof(tWlanFeatCaps);
28560
28561 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
28562 WDI_FEATURE_CAPS_EXCHANGE_REQ,
28563 usLen,
28564 &pSendBuffer, &usDataOffset, &usSendSize))||
28565 ( usSendSize < (usDataOffset + usLen )))
28566 {
28567 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080028568 "Unable to get send buffer in feat caps exchange req %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070028569 pEventData, (tWlanFeatCaps *)pEventData->pEventData);
28570 WDI_ASSERT(0);
28571 return WDI_STATUS_E_FAILURE;
28572 }
28573
28574 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Arif Hussain9a5d5382013-11-17 22:05:35 -080028575 "Host Caps - %x %x %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -070028576 ((tWlanFeatCaps *)pEventData->pEventData)->featCaps[0],
28577 ((tWlanFeatCaps *)pEventData->pEventData)->featCaps[1],
28578 ((tWlanFeatCaps *)pEventData->pEventData)->featCaps[2],
28579 ((tWlanFeatCaps *)pEventData->pEventData)->featCaps[3]
28580 );
28581
28582 /* Copy host caps after the offset in the send buffer */
28583 wpalMemoryCopy( pSendBuffer+usDataOffset,
28584 (tWlanFeatCaps *)pEventData->pEventData,
28585 usLen);
28586
28587 /*-------------------------------------------------------------------------
28588 Send Start Request to HAL
28589 -------------------------------------------------------------------------*/
28590 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
28591 (WDI_StartRspCb)pEventData->pCBfnc,
28592 pEventData->pUserData, WDI_FEATURE_CAPS_EXCHANGE_RESP);
28593
28594}/*WDI_ProcessFeatureCapsExchangeReq*/
28595
28596/**
28597 @brief Process Host-FW Capability Exchange Response function
28598
28599 @param pWDICtx: pointer to the WLAN DAL context
28600 pEventData: pointer to the event information structure
28601
28602 @see
28603 @return Result of the function call
28604*/
28605WDI_Status
28606WDI_ProcessFeatureCapsExchangeRsp
28607(
28608 WDI_ControlBlockType* pWDICtx,
28609 WDI_EventInfoType* pEventData
28610)
28611{
28612 WDI_featureCapsExchangeCb wdiFeatureCapsExchangeCb;
28613 wpt_int32 fCapsStructSize;
28614 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28615
28616 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028617 "%s", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028618
28619 /*-------------------------------------------------------------------------
28620 Sanity check
28621 -------------------------------------------------------------------------*/
28622 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
28623 ( NULL == pEventData->pEventData ))
28624 {
28625 /* It will go here when riva is old (doesn't understand this msg) and host is new */
28626 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028627 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028628 WDI_ASSERT(0);
28629 return WDI_STATUS_E_FAILURE;
28630 }
28631
28632 /* Allocate memory separately for global variable carrying FW caps */
28633 fCapsStructSize = sizeof(tWlanFeatCaps);
28634 gpFwWlanFeatCaps = wpalMemoryAllocate(fCapsStructSize);
28635 if ( NULL == gpFwWlanFeatCaps )
28636 {
28637 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Arif Hussain9a5d5382013-11-17 22:05:35 -080028638 "Cannot allocate memory for host capability info");
Jeff Johnson295189b2012-06-20 16:38:30 -070028639 WDI_ASSERT(0);
28640 return WDI_STATUS_MEM_FAILURE;
28641 }
28642
28643 /*-------------------------------------------------------------------------
28644 Unpack HAL Response Message - the header was already extracted by the
28645 main Response Handling procedure
28646 -------------------------------------------------------------------------*/
28647 /*-------------------------------------------------------------------------
28648 Extract response and send it to UMAC
28649 -------------------------------------------------------------------------*/
28650
28651 wpalMemoryCopy(gpFwWlanFeatCaps,(tWlanFeatCaps *) pEventData -> pEventData,
28652 fCapsStructSize);
Madan Mohan Koyyalamudif8d3b3f2013-07-30 19:10:54 +053028653 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Arif Hussain9a5d5382013-11-17 22:05:35 -080028654 "FW caps %x %x %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -070028655 gpFwWlanFeatCaps->featCaps[0],
28656 gpFwWlanFeatCaps->featCaps[1],
28657 gpFwWlanFeatCaps->featCaps[2],
28658 gpFwWlanFeatCaps->featCaps[3]
Madan Mohan Koyyalamudif8d3b3f2013-07-30 19:10:54 +053028659 );
28660 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR, "Firmware Capability");
28661 WDI_TraceHostFWCapabilities(gpFwWlanFeatCaps->featCaps);
Jeff Johnson295189b2012-06-20 16:38:30 -070028662 wdiFeatureCapsExchangeCb = (WDI_featureCapsExchangeCb) pWDICtx -> pfncRspCB;
28663
28664 /*Notify UMAC - there is no callback right now but can be used in future if reqd */
28665 if (wdiFeatureCapsExchangeCb != NULL)
28666 wdiFeatureCapsExchangeCb(NULL, NULL);
28667
28668 return WDI_STATUS_SUCCESS;
28669}
28670
Mohit Khanna4a70d262012-09-11 16:30:12 -070028671#ifdef WLAN_FEATURE_11AC
28672WDI_Status
28673WDI_ProcessUpdateVHTOpModeRsp
28674(
28675 WDI_ControlBlockType* pWDICtx,
28676 WDI_EventInfoType* pEventData
28677)
28678{
28679 WDI_UpdateVHTOpModeCb wdiVHTOpModeCb = NULL;
28680 WDI_Status wdiStatus;
28681 eHalStatus halStatus;
28682
28683 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28684
28685 /*-------------------------------------------------------------------------
28686 Sanity check
28687 -------------------------------------------------------------------------*/
28688 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
28689 ( NULL == pEventData->pEventData))
28690 {
28691 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028692 "%s: Invalid parameters", __func__);
Mohit Khanna4a70d262012-09-11 16:30:12 -070028693 WDI_ASSERT(0);
28694 return WDI_STATUS_E_FAILURE;
28695 }
28696 wdiVHTOpModeCb = (WDI_UpdateVHTOpModeCb)pEventData->pCBfnc;
28697
28698 /*-------------------------------------------------------------------------
28699 Extract response and send it to UMAC
28700 -------------------------------------------------------------------------*/
28701 halStatus = *((eHalStatus*)pEventData->pEventData);
28702 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
28703
28704 /*Notify UMAC*/
28705 wdiVHTOpModeCb( wdiStatus, pEventData->pUserData);
28706
28707 return WDI_STATUS_SUCCESS;
28708}
28709#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070028710/**
28711 @brief WDI_getHostWlanFeatCaps
28712 WDI API that returns whether the feature passed to it as enum value in
28713 "placeHolderInCapBitmap" is supported by Host or not. It uses WDI global
28714 variable storing host capability bitmap to find this. This can be used by
28715 other moduels to decide certain things like call different APIs based on
28716 whether a particular feature is supported.
28717
28718 @param
28719
28720 feat_enum_value: enum value for the feature as in placeHolderInCapBitmap in wlan_hal_msg.h.
28721
28722 @see
28723 @return
28724 0 - if the feature is NOT supported in host
28725 any non-zero value - if the feature is SUPPORTED in host.
28726*/
28727wpt_uint8 WDI_getHostWlanFeatCaps(wpt_uint8 feat_enum_value)
28728{
28729 wpt_uint8 featSupported = 0;
28730 if (gpHostWlanFeatCaps != NULL)
28731 {
28732 getFeatCaps(gpHostWlanFeatCaps, feat_enum_value, featSupported);
28733 }
28734 else
28735 {
Madan Mohan Koyyalamudi8b7f1e62012-10-05 14:56:51 -070028736 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi8bdd3112012-09-24 13:55:14 -070028737 "Caps exchange feature NOT supported. Return NOT SUPPORTED for %u feature", feat_enum_value);
Jeff Johnson295189b2012-06-20 16:38:30 -070028738 }
28739 return featSupported;
28740}
28741
28742/**
28743 @brief WDI_getFwWlanFeatCaps
28744 WDI API that returns whether the feature passed to it as enum value in
28745 "placeHolderInCapBitmap" is supported by FW or not. It uses WDI global
28746 variable storing host capability bitmap to find this. This can be used by
28747 other moduels to decide certain things like call different APIs based on
28748 whether a particular feature is supported.
28749
28750 @param
28751
28752 feat_enum_value: enum value for the feature as in placeHolderInCapBitmap
28753 in wlan_hal_msg.h.
28754
28755 @see
28756 @return
28757 0 - if the feature is NOT supported in FW
28758 any non-zero value - if the feature is SUPPORTED in FW.
28759*/
28760wpt_uint8 WDI_getFwWlanFeatCaps(wpt_uint8 feat_enum_value)
28761{
28762 wpt_uint8 featSupported = 0;
28763 if (gpFwWlanFeatCaps != NULL)
28764 {
28765 getFeatCaps(gpFwWlanFeatCaps, feat_enum_value, featSupported);
28766 }
28767 else
28768 {
Madan Mohan Koyyalamudi8b7f1e62012-10-05 14:56:51 -070028769 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi8bdd3112012-09-24 13:55:14 -070028770 "Caps exchange feature NOT supported. Return NOT SUPPORTED for %u feature", feat_enum_value);
Jeff Johnson295189b2012-06-20 16:38:30 -070028771 }
28772 return featSupported;
28773}
Mohit Khanna4a70d262012-09-11 16:30:12 -070028774
28775#ifdef WLAN_FEATURE_11AC
28776WDI_Status
28777WDI_ProcessUpdateVHTOpModeReq
28778(
28779 WDI_ControlBlockType* pWDICtx,
28780 WDI_EventInfoType* pEventData
28781)
28782{
28783 WDI_UpdateVHTOpMode* pwdiVHTOpModeParams = NULL;
28784 WDI_UpdateVHTOpModeCb wdiVHTOpModeCb = NULL;
28785 wpt_uint8* pSendBuffer = NULL;
28786 wpt_uint16 usDataOffset = 0;
28787 wpt_uint16 usSendSize = 0;
28788
28789 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28790
28791 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028792 "%s", __func__);
Mohit Khanna4a70d262012-09-11 16:30:12 -070028793
28794 /*-------------------------------------------------------------------------
28795 Sanity check
28796 -------------------------------------------------------------------------*/
28797 if (( NULL == pEventData ) ||
28798 ( NULL == (pwdiVHTOpModeParams = (WDI_UpdateVHTOpMode*)pEventData->pEventData)) ||
28799 ( NULL == (wdiVHTOpModeCb = (WDI_UpdateVHTOpModeCb)pEventData->pCBfnc)))
28800 {
28801 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028802 "%s: Invalid parameters", __func__);
Mohit Khanna4a70d262012-09-11 16:30:12 -070028803 WDI_ASSERT(0);
28804 return WDI_STATUS_E_FAILURE;
28805 }
28806
28807 /*-----------------------------------------------------------------------
28808 Get message buffer
28809 -----------------------------------------------------------------------*/
28810 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_VHT_OP_MODE_REQ,
28811 sizeof(WDI_UpdateVHTOpMode),
28812 &pSendBuffer, &usDataOffset, &usSendSize))||
28813 ( usSendSize < (usDataOffset + sizeof(WDI_UpdateVHTOpMode) )))
28814 {
28815 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
28816 "Unable to get send buffer in update vht opMode req");
28817 WDI_ASSERT(0);
28818 return WDI_STATUS_E_FAILURE;
28819 }
28820
28821 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Arif Hussain9a5d5382013-11-17 22:05:35 -080028822 "pwdiVHTOpModeParams->opMode=%d, pwdiVHTOpModeParams->staId=%d", pwdiVHTOpModeParams->opMode, pwdiVHTOpModeParams->staId);
Mohit Khanna4a70d262012-09-11 16:30:12 -070028823
28824 wpalMemoryCopy( pSendBuffer+usDataOffset, pwdiVHTOpModeParams,
28825 sizeof(WDI_UpdateVHTOpMode));
28826
28827 /*-------------------------------------------------------------------------
28828 Send Start Request to HAL
28829 -------------------------------------------------------------------------*/
28830 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
28831 wdiVHTOpModeCb,
28832 pEventData->pUserData, WDI_UPDATE_VHT_OP_MODE_RESP);
28833
28834}
28835
28836WDI_Status
28837WDI_UpdateVHTOpModeReq
28838(
28839 WDI_UpdateVHTOpMode *pData,
28840 WDI_UpdateVHTOpModeCb wdiUpdateVHTOpModeCb,
28841 void* pUserData
28842)
28843{
28844 WDI_EventInfoType wdiEventData;
28845
28846 /*------------------------------------------------------------------------
28847 Sanity Check
28848 ------------------------------------------------------------------------*/
28849 if ( eWLAN_PAL_FALSE == gWDIInitialized )
28850 {
28851 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
28852 "WDI API call before module is initialized - Fail request");
28853
28854 return WDI_STATUS_E_NOT_ALLOWED;
28855 }
28856
28857 /*------------------------------------------------------------------------
28858 Fill in Event data and post to the Main FSM
28859 ------------------------------------------------------------------------*/
28860 wdiEventData.wdiRequest = WDI_UPDATE_VHT_OP_MODE_REQ;
28861 wdiEventData.pEventData = pData;
28862 wdiEventData.uEventDataSize = sizeof(WDI_UpdateVHTOpMode);
28863 wdiEventData.pCBfnc = wdiUpdateVHTOpModeCb;
28864 wdiEventData.pUserData = pUserData;
28865
28866 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Arif Hussain9a5d5382013-11-17 22:05:35 -080028867 "pData->opMode=%d, pData->staId=%d", pData->opMode, pData->staId);
Mohit Khanna4a70d262012-09-11 16:30:12 -070028868
28869 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
28870
28871}
28872#endif
Madan Mohan Koyyalamudi8cb53982012-09-28 14:34:47 -070028873
28874/**
28875 @brief WDI_TransportChannelDebug -
28876 Display DXE Channel debugging information
28877 User may request to display DXE channel snapshot
28878 Or if host driver detects any abnormal stcuk may display
Madan Mohan Koyyalamudi8b7f1e62012-10-05 14:56:51 -070028879
Jeff Johnsonb88db982012-12-10 13:34:59 -080028880 @param displaySnapshot : Display DXE snapshot option
Mihir Shete40a55652014-03-02 14:14:47 +053028881 @param debugFlags : Enable stall detect features
28882 defined by WPAL_DeviceDebugFlags
28883 These features may effect
28884 data performance.
Madan Mohan Koyyalamudi8cb53982012-09-28 14:34:47 -070028885 @see
28886 @return none
28887*/
28888void WDI_TransportChannelDebug
28889(
28890 wpt_boolean displaySnapshot,
Mihir Shete40a55652014-03-02 14:14:47 +053028891 wpt_uint8 debugFlags
Madan Mohan Koyyalamudi8cb53982012-09-28 14:34:47 -070028892)
28893{
Mihir Shete40a55652014-03-02 14:14:47 +053028894 WDTS_ChannelDebug(displaySnapshot, debugFlags);
Madan Mohan Koyyalamudi8cb53982012-09-28 14:34:47 -070028895 return;
Madan Mohan Koyyalamudi3352adb2012-09-28 14:57:24 -070028896}
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -070028897/**
28898 @brief WDI_SsrTimerCB
28899 Callback function for SSR timer, if this is called then the graceful
28900 shutdown for Riva did not happen.
28901
28902 @param pUserData : user data to timer
28903
28904 @see
28905 @return none
28906*/
28907void
28908WDI_SsrTimerCB
28909(
28910 void *pUserData
28911)
28912{
28913 WDI_ControlBlockType* pWDICtx = (WDI_ControlBlockType*)pUserData;
28914 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28915
28916 if (NULL == pWDICtx )
28917 {
28918 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028919 "%s: Invalid parameters", __func__);
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -070028920 WDI_ASSERT(0);
28921 return;
28922 }
28923 wpalRivaSubystemRestart();
28924
28925 return;
28926
28927}/*WDI_SsrTimerCB*/
Gopichand Nakkalae620d5a2013-04-26 05:45:57 -070028928
28929/**
28930 @brief WDI_SetEnableSSR -
28931 This API is called to enable/disable SSR on WDI timeout.
28932
28933 @param enableSSR : enable/disable SSR
28934
28935 @see
28936 @return none
28937*/
28938void WDI_SetEnableSSR(wpt_boolean enableSSR)
28939{
28940 gWDICb.bEnableSSR = enableSSR;
28941}
Leo Chang9056f462013-08-01 19:21:11 -070028942
28943
28944#ifdef FEATURE_WLAN_LPHB
28945/**
Leo Changd9df8aa2013-09-26 13:32:26 -070028946 @brief WDI_ProcessLphbInd -
Leo Chang9056f462013-08-01 19:21:11 -070028947 This function will be invoked when FW detects low power
28948 heart beat failure
28949
28950 @param pWDICtx : wdi context
28951 pEventData : indication data
Leo Chang9056f462013-08-01 19:21:11 -070028952 @see
28953 @return Result of the function call
28954*/
28955WDI_Status
Leo Changd9df8aa2013-09-26 13:32:26 -070028956WDI_ProcessLphbInd
Leo Chang9056f462013-08-01 19:21:11 -070028957(
28958 WDI_ControlBlockType* pWDICtx,
28959 WDI_EventInfoType* pEventData
28960)
28961{
28962 WDI_LowLevelIndType wdiInd;
Leo Changd9df8aa2013-09-26 13:32:26 -070028963 tHalLowPowerHeartBeatIndParam lphbIndicationParam;
Leo Chang9056f462013-08-01 19:21:11 -070028964 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28965
28966 /*-------------------------------------------------------------------------
28967 Sanity check
28968 -------------------------------------------------------------------------*/
28969 if ((NULL == pWDICtx) || (NULL == pEventData) ||
28970 (NULL == pEventData->pEventData))
28971 {
28972 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
28973 "%s: Invalid parameters", __func__);
28974 WDI_ASSERT(0);
28975 return WDI_STATUS_E_FAILURE;
28976 }
28977
28978 /*-------------------------------------------------------------------------
28979 Extract indication and send it to UMAC
28980 -------------------------------------------------------------------------*/
Leo Changd9df8aa2013-09-26 13:32:26 -070028981 wpalMemoryCopy(&lphbIndicationParam,
28982 pEventData->pEventData,
28983 sizeof(tHalLowPowerHeartBeatIndParam));
Leo Chang9056f462013-08-01 19:21:11 -070028984
Leo Changd9df8aa2013-09-26 13:32:26 -070028985 wdiInd.wdiIndicationType = WDI_LPHB_IND;
Leo Chang9056f462013-08-01 19:21:11 -070028986 wdiInd.wdiIndicationData.wdiLPHBTimeoutInd.bssIdx =
Leo Changd9df8aa2013-09-26 13:32:26 -070028987 lphbIndicationParam.bssIdx;
Leo Chang9056f462013-08-01 19:21:11 -070028988 wdiInd.wdiIndicationData.wdiLPHBTimeoutInd.sessionIdx =
Leo Changd9df8aa2013-09-26 13:32:26 -070028989 lphbIndicationParam.sessionIdx;
Leo Chang9056f462013-08-01 19:21:11 -070028990 wdiInd.wdiIndicationData.wdiLPHBTimeoutInd.protocolType =
Leo Changd9df8aa2013-09-26 13:32:26 -070028991 lphbIndicationParam.protocolType;
Leo Chang9056f462013-08-01 19:21:11 -070028992 wdiInd.wdiIndicationData.wdiLPHBTimeoutInd.eventReason =
Leo Changd9df8aa2013-09-26 13:32:26 -070028993 lphbIndicationParam.eventReason;
Leo Chang9056f462013-08-01 19:21:11 -070028994 /*Notify UMAC*/
28995 if (pWDICtx->wdiLowLevelIndCB)
28996 {
28997 pWDICtx->wdiLowLevelIndCB(&wdiInd, pWDICtx->pIndUserData);
28998 }
28999
29000 return WDI_STATUS_SUCCESS;
29001}
29002
29003/**
29004 @brief WDI_ProcessLphbCfgRsp -
29005 LPHB configuration response from FW
29006
29007 @param pWDICtx : wdi context
29008 pEventData : indication data
29009
29010 @see
29011 @return Result of the function call
29012*/
29013WDI_Status WDI_ProcessLphbCfgRsp
29014(
29015 WDI_ControlBlockType* pWDICtx,
29016 WDI_EventInfoType* pEventData
29017)
29018{
29019 WDI_Status wdiStatus;
29020 eHalStatus halStatus;
29021 WDI_LphbCfgCb wdiLphbCfgCb;
29022 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
29023
29024 /*-------------------------------------------------------------------------
29025 Sanity check
29026 -------------------------------------------------------------------------*/
29027 if ((NULL == pWDICtx) || (NULL == pEventData) ||
29028 (NULL == pEventData->pEventData))
29029 {
29030 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
29031 "%s: Invalid parameters", __func__);
29032 WDI_ASSERT(0);
29033 return WDI_STATUS_E_FAILURE;
29034 }
29035
29036 wdiLphbCfgCb = (WDI_LphbCfgCb)pWDICtx->pfncRspCB;
29037
29038 /*-------------------------------------------------------------------------
29039 Extract response and send it to UMAC
29040 -------------------------------------------------------------------------*/
29041 halStatus = *((eHalStatus*)pEventData->pEventData);
29042 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
29043
29044 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
29045 "LPHB Cfg Rsp Return status %d", wdiStatus);
29046 /*Notify UMAC*/
29047 if (NULL != wdiLphbCfgCb)
29048 {
29049 wdiLphbCfgCb(wdiStatus, pWDICtx->pRspCBUserData);
29050 }
29051
29052 return WDI_STATUS_SUCCESS;
29053}
29054
29055/**
29056 @brief WDI_ProcessLPHBConfReq -
29057 LPHB configuration request to FW
29058
29059 @param pWDICtx : wdi context
29060 pEventData : indication data
29061
29062 @see
29063 @return none
29064*/
29065WDI_Status WDI_ProcessLPHBConfReq
29066(
29067 WDI_ControlBlockType* pWDICtx,
29068 WDI_EventInfoType* pEventData
29069)
29070{
29071 WDI_LPHBReq *pLphbReqParams;
29072 WDI_Status wdiStatus;
29073 wpt_uint8* pSendBuffer = NULL;
29074 wpt_uint16 usDataOffset = 0;
29075 wpt_uint16 usSendSize = 0;
29076 tHalLowPowerHeartBeatReq *halLphbReqRarams;
29077 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
29078
29079 /*-------------------------------------------------------------------------
29080 Sanity check
29081 -------------------------------------------------------------------------*/
29082 if ((NULL == pEventData) || (NULL == pEventData->pEventData))
29083 {
29084 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
29085 "%s: Invalid parameters in Suspend ind",__func__);
29086 WDI_ASSERT(0);
29087 return WDI_STATUS_E_FAILURE;
29088 }
29089
29090 pLphbReqParams = (WDI_LPHBReq *)pEventData->pEventData;
29091
29092 /*-----------------------------------------------------------------------
29093 Get message buffer
29094 -----------------------------------------------------------------------*/
29095 if ((WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(pWDICtx,
29096 WDI_LPHB_CFG_REQ,
29097 sizeof(tHalLowPowerHeartBeatReqMsg),
29098 &pSendBuffer, &usDataOffset, &usSendSize))||
29099 (usSendSize < (usDataOffset + sizeof(tHalLowPowerHeartBeatReqMsg))))
29100 {
29101 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
29102 "Unable to get send buffer in LPHB Ind ");
29103 WDI_ASSERT(0);
29104 return WDI_STATUS_E_FAILURE;
29105 }
29106
29107 halLphbReqRarams = (tHalLowPowerHeartBeatReq *)(pSendBuffer + usDataOffset);
29108 wpalMemoryZero(halLphbReqRarams, sizeof(tHalLowPowerHeartBeatReq));
29109
29110 halLphbReqRarams->lowPowerHeartBeatCmdType =
29111 (tANI_U16)(++pLphbReqParams->cmd);
29112 switch ((tANI_U16)pLphbReqParams->cmd)
29113 {
29114 case WDI_LPHB_SET_EN_PARAMS_INDID:
29115 halLphbReqRarams->sessionIdx =
29116 pLphbReqParams->params.lphbEnableReq.session;
29117 halLphbReqRarams->options.control.heartBeatEnable =
29118 pLphbReqParams->params.lphbEnableReq.enable;
29119 halLphbReqRarams->options.control.heartBeatType =
29120 pLphbReqParams->params.lphbEnableReq.item;
29121 break;
29122
29123 case WDI_LPHB_SET_TCP_PARAMS_INDID:
29124 halLphbReqRarams->sessionIdx =
29125 pLphbReqParams->params.lphbTcpParamReq.session;
29126 halLphbReqRarams->options.tcpParams.timeOutSec =
29127 pLphbReqParams->params.lphbTcpParamReq.timeout;
29128 wpalMemoryCopy(&halLphbReqRarams->options.tcpParams.hostIpv4Addr,
29129 &pLphbReqParams->params.lphbTcpParamReq.dev_ip,
29130 sizeof(v_U32_t));
29131 wpalMemoryCopy(&halLphbReqRarams->options.tcpParams.destIpv4Addr,
29132 &pLphbReqParams->params.lphbTcpParamReq.srv_ip,
29133 sizeof(v_U32_t));
29134
29135 wpalMemoryCopy(halLphbReqRarams->options.tcpParams.gatewayMacAddr,
29136 pLphbReqParams->params.lphbTcpParamReq.gateway_mac,
29137 WDI_MAC_ADDR_LEN);
29138
29139 halLphbReqRarams->options.tcpParams.hostPort =
29140 pLphbReqParams->params.lphbTcpParamReq.src_port;
29141 halLphbReqRarams->options.tcpParams.destPort =
29142 pLphbReqParams->params.lphbTcpParamReq.dst_port;
Leo Changd9df8aa2013-09-26 13:32:26 -070029143 halLphbReqRarams->options.tcpParams.timePeriodSec =
29144 pLphbReqParams->params.lphbTcpParamReq.timePeriodSec;
29145 halLphbReqRarams->options.tcpParams.tcpSn =
29146 pLphbReqParams->params.lphbTcpParamReq.tcpSn;
Leo Chang9056f462013-08-01 19:21:11 -070029147 break;
29148
29149 case WDI_LPHB_SET_TCP_PKT_FILTER_INDID:
29150 halLphbReqRarams->sessionIdx =
29151 pLphbReqParams->params.lphbTcpFilterReq.session;
29152 halLphbReqRarams->options.tcpUdpFilter.offset =
29153 pLphbReqParams->params.lphbTcpFilterReq.offset;
29154 halLphbReqRarams->options.tcpUdpFilter.filterLength =
29155 pLphbReqParams->params.lphbTcpFilterReq.length;
29156 wpalMemoryCopy(halLphbReqRarams->options.tcpUdpFilter.filter,
29157 pLphbReqParams->params.lphbTcpFilterReq.filter,
29158 WDI_LPHB_FILTER_LEN);
29159 break;
29160
29161 case WDI_LPHB_SET_UDP_PARAMS_INDID:
29162 halLphbReqRarams->sessionIdx =
29163 pLphbReqParams->params.lphbUdpParamReq.session;
29164 halLphbReqRarams->options.udpParams.timeOutSec =
29165 pLphbReqParams->params.lphbUdpParamReq.timeout;
29166 halLphbReqRarams->options.udpParams.timePeriodSec =
29167 pLphbReqParams->params.lphbUdpParamReq.interval;
29168 wpalMemoryCopy(&halLphbReqRarams->options.udpParams.hostIpv4Addr,
29169 &pLphbReqParams->params.lphbUdpParamReq.dev_ip,
29170 sizeof(v_U32_t));
29171 wpalMemoryCopy(&halLphbReqRarams->options.udpParams.destIpv4Addr,
29172 &pLphbReqParams->params.lphbUdpParamReq.srv_ip,
29173 sizeof(v_U32_t));
29174
29175 wpalMemoryCopy(halLphbReqRarams->options.udpParams.gatewayMacAddr,
29176 pLphbReqParams->params.lphbUdpParamReq.gateway_mac,
29177 WDI_MAC_ADDR_LEN);
29178
29179 halLphbReqRarams->options.udpParams.hostPort =
29180 pLphbReqParams->params.lphbUdpParamReq.src_port;
29181 halLphbReqRarams->options.udpParams.destPort =
29182 pLphbReqParams->params.lphbUdpParamReq.dst_port;
29183 break;
29184
29185 case WDI_LPHB_SET_UDP_PKT_FILTER_INDID:
29186 halLphbReqRarams->sessionIdx =
29187 pLphbReqParams->params.lphbUdpFilterReq.session;
29188 halLphbReqRarams->options.tcpUdpFilter.offset =
29189 pLphbReqParams->params.lphbUdpFilterReq.offset;
29190 halLphbReqRarams->options.tcpUdpFilter.filterLength =
29191 pLphbReqParams->params.lphbUdpFilterReq.length;
29192 wpalMemoryCopy(halLphbReqRarams->options.tcpUdpFilter.filter,
29193 pLphbReqParams->params.lphbUdpFilterReq.filter,
29194 WDI_LPHB_FILTER_LEN);
29195 break;
29196
29197 case WDI_LPHB_SET_NETWORK_INFO_INDID:
29198 /* NA */
29199 break;
29200
29201 default:
29202 break;
29203 }
29204
29205 /*-------------------------------------------------------------------------
29206 Send Suspend Request to HAL
29207 -------------------------------------------------------------------------*/
29208 pWDICtx->pfncRspCB = pEventData->pCBfnc;
29209 pWDICtx->pReqStatusUserData = pEventData->pUserData;
29210
29211 wdiStatus = WDI_SendMsg(pWDICtx, pSendBuffer,
29212 usSendSize, pWDICtx->pfncRspCB,
29213 pWDICtx->pReqStatusUserData,
29214 WDI_LPHB_CFG_RESP);
29215
29216 return wdiStatus;
29217}
29218
29219/**
29220 @brief WDI_LPHBConfReq -
29221 LPHB configuration request API
29222
29223 @param lphbconfParam : configuration parameter
29224 usrData : client context
29225 lphbCfgCb : callback function pointer
29226
29227 @see
29228 @return Success or fail status code
29229*/
29230WDI_Status WDI_LPHBConfReq(void *lphbconfParam,
29231 void *usrData, WDI_LphbCfgCb lphbCfgCb)
29232{
29233 WDI_EventInfoType wdiEventData;
29234
29235 /*------------------------------------------------------------------------
29236 Sanity Check
29237 ------------------------------------------------------------------------*/
29238 if (eWLAN_PAL_FALSE == gWDIInitialized)
29239 {
29240 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
29241 "WDI API call before module is initialized - Fail request");
29242
29243 return WDI_STATUS_E_NOT_ALLOWED;
29244 }
29245
29246 /*------------------------------------------------------------------------
29247 Fill in Event data and post to the Main FSM
29248 ------------------------------------------------------------------------*/
29249 wdiEventData.wdiRequest = WDI_LPHB_CFG_REQ;
29250 wdiEventData.pEventData = lphbconfParam;
29251 wdiEventData.uEventDataSize = sizeof(WDI_LPHBReq);
29252 wdiEventData.pCBfnc = lphbCfgCb;
29253 wdiEventData.pUserData = usrData;
29254
29255 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
29256}
29257#endif /* FEATURE_WLAN_LPHB */
29258
Ravi Joshid2ca7c42013-07-23 08:37:49 -070029259/**
29260 @brief WDI_ProcessIbssPeerInactivityInd
29261 Process peer inactivity indication coming from HAL
29262
29263 @param pWDICtx: pointer to the WLAN DAL context
29264 pEventData: pointer to the event information structure
29265 @see
29266 @return Result of the function call
29267*/
29268WDI_Status
29269WDI_ProcessIbssPeerInactivityInd
29270(
29271 WDI_ControlBlockType* pWDICtx,
29272 WDI_EventInfoType* pEventData
29273)
29274{
29275 WDI_LowLevelIndType wdiInd;
29276 tIbssPeerInactivityIndMsg halIbssIndMsg;
29277
29278 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
29279
29280 /*-------------------------------------------------------------------------
29281 Sanity check
29282 -------------------------------------------------------------------------*/
29283 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
29284 ( NULL == pEventData->pEventData ))
29285 {
29286 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
29287 "%s: Invalid parameters", __func__);
29288 WDI_ASSERT( 0 );
29289 return WDI_STATUS_E_FAILURE;
29290 }
29291
29292 /*-------------------------------------------------------------------------
29293 Extract indication and send it to UMAC
29294 -------------------------------------------------------------------------*/
29295 wpalMemoryCopy( &halIbssIndMsg.ibssPeerInactivityIndParams,
29296 pEventData->pEventData,
29297 sizeof(halIbssIndMsg.ibssPeerInactivityIndParams) );
29298
29299 /*Fill in the indication parameters*/
29300 wdiInd.wdiIndicationType = WDI_IBSS_PEER_INACTIVITY_IND;
29301
29302 wdiInd.wdiIndicationData.wdiIbssPeerInactivityInd.bssIdx
29303 = halIbssIndMsg.ibssPeerInactivityIndParams.bssIdx;
29304
29305 wdiInd.wdiIndicationData.wdiIbssPeerInactivityInd.staIdx
29306 = halIbssIndMsg.ibssPeerInactivityIndParams.staIdx;
29307
29308 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiIbssPeerInactivityInd.staMacAddr,
29309 halIbssIndMsg.ibssPeerInactivityIndParams.staAddr,
29310 sizeof(tSirMacAddr));
29311
29312 /*Notify UMAC*/
29313 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
29314
29315 return WDI_STATUS_SUCCESS;
29316
29317} /*WDI_ProcessIbssPeerInactivityInd*/
Rajeev79dbe4c2013-10-05 11:03:42 +053029318
Chittajit Mitraf5413a42013-10-18 14:20:08 -070029319/**
29320*@brief WDI_RateUpdateInd will be called when the upper MAC
29321 requests the device to set rates.
Rajeev79dbe4c2013-10-05 11:03:42 +053029322
Chittajit Mitraf5413a42013-10-18 14:20:08 -070029323
29324 @param wdiRateUpdateIndParams:
29325
29326
29327 @see
29328 @return Result of the function call
29329*/
29330WDI_Status
29331WDI_RateUpdateInd
29332(
29333 WDI_RateUpdateIndParams *wdiRateUpdateIndParams
29334)
29335{
29336 WDI_EventInfoType wdiEventData;
29337 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
29338
29339 /*------------------------------------------------------------------------
29340 Sanity Check
29341 ------------------------------------------------------------------------*/
29342 if ( eWLAN_PAL_FALSE == gWDIInitialized )
29343 {
29344 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
29345 "WDI API call before module is initialized - Fail request");
29346
29347 return WDI_STATUS_E_NOT_ALLOWED;
29348 }
29349
29350 /*------------------------------------------------------------------------
29351 Fill in Event data and post to the Main FSM
29352 ------------------------------------------------------------------------*/
29353 wdiEventData.wdiRequest = WDI_RATE_UPDATE_IND;
29354 wdiEventData.pEventData = wdiRateUpdateIndParams;
29355 wdiEventData.uEventDataSize = sizeof(WDI_RateUpdateIndParams);
29356 wdiEventData.pCBfnc = NULL;
29357 wdiEventData.pUserData = NULL;
29358
29359 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
29360
29361}/* WDI_RateUpdateInd */
29362
29363/**
29364 @brief Process Rate Update Indication and post it to HAL
29365
29366 @param pWDICtx: pointer to the WLAN DAL context
29367 pEventData: pointer to the event information structure
29368
29369 @see
29370 @return Result of the function call
29371*/
29372WDI_Status
29373WDI_ProcessRateUpdateInd
29374(
29375 WDI_ControlBlockType* pWDICtx,
29376 WDI_EventInfoType* pEventData
29377)
29378{
29379 wpt_uint8* pSendBuffer = NULL;
29380 wpt_uint16 usDataOffset = 0;
29381 wpt_uint16 usSendSize = 0;
29382 WDI_RateUpdateIndParams *pwdiRateUpdateInd = NULL;
29383 tHalRateUpdateInd *pRateUpdateInd;
29384 WDI_Status wdiStatus;
29385
29386 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
29387
29388 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
29389 "%s", __func__);
29390
29391 /*-------------------------------------------------------------------------
29392 Sanity check
29393 -------------------------------------------------------------------------*/
29394 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
29395 {
29396 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
29397 "%s: Invalid parameters", __func__);
29398 WDI_ASSERT(0);
29399 return WDI_STATUS_E_FAILURE;
29400 }
29401 pwdiRateUpdateInd = (WDI_RateUpdateIndParams *)pEventData->pEventData;
29402 /*-----------------------------------------------------------------------
29403 Get message buffer
29404 -----------------------------------------------------------------------*/
29405
29406 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
29407 WDI_RATE_UPDATE_IND,
29408 sizeof(tHalRateUpdateParams),
29409 &pSendBuffer, &usDataOffset, &usSendSize))||
29410 ( usSendSize < (usDataOffset +
29411 sizeof(tHalRateUpdateParams) )))
29412 {
29413 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
29414 "Unable to get send buffer in Rate Update Indication %p ",
29415 pEventData);
29416 WDI_ASSERT(0);
29417 return WDI_STATUS_E_FAILURE;
29418 }
29419
29420 pRateUpdateInd = (tHalRateUpdateInd *)pSendBuffer;
29421
29422 /* Copy the bssid */
29423 wpalMemoryCopy(pRateUpdateInd->halRateUpdateParams.bssid,
29424 pwdiRateUpdateInd->bssid, WDI_MAC_ADDR_LEN);
29425
29426 /* Copy the tx flags */
29427 pRateUpdateInd->halRateUpdateParams.ucastDataRateTxFlag =
29428 pwdiRateUpdateInd->ucastDataRateTxFlag;
29429 pRateUpdateInd->halRateUpdateParams.reliableMcastDataRateTxFlag =
29430 pwdiRateUpdateInd->reliableMcastDataRateTxFlag;
29431 pRateUpdateInd->halRateUpdateParams.mcastDataRate24GHzTxFlag =
29432 pwdiRateUpdateInd->mcastDataRate24GHzTxFlag;
29433 pRateUpdateInd->halRateUpdateParams.mcastDataRate5GHzTxFlag =
29434 pwdiRateUpdateInd->mcastDataRate5GHzTxFlag;
29435
29436 /* Copy the tx rates */
29437 pRateUpdateInd->halRateUpdateParams.ucastDataRate =
29438 pwdiRateUpdateInd->ucastDataRate;
29439 pRateUpdateInd->halRateUpdateParams.reliableMcastDataRate =
29440 pwdiRateUpdateInd->reliableMcastDataRate;
29441 pRateUpdateInd->halRateUpdateParams.mcastDataRate24GHz =
29442 pwdiRateUpdateInd->mcastDataRate24GHz;
29443 pRateUpdateInd->halRateUpdateParams.mcastDataRate5GHz =
29444 pwdiRateUpdateInd->mcastDataRate5GHz;
29445
29446 /*-------------------------------------------------------------------------
29447 Send Rate Update Indication to HAL
29448 -------------------------------------------------------------------------*/
29449 pWDICtx->wdiReqStatusCB = pwdiRateUpdateInd->wdiReqStatusCB;
29450 pWDICtx->pReqStatusUserData = pwdiRateUpdateInd->pUserData;
29451
29452 wdiStatus = WDI_SendIndication(pWDICtx, pSendBuffer, usSendSize);
29453
29454 return (wdiStatus != WDI_STATUS_SUCCESS) ?
29455 wdiStatus : WDI_STATUS_SUCCESS_SYNC;
29456
29457} /* WDI_ProcessRateUpdateInd */
29458
29459#ifdef FEATURE_WLAN_BATCH_SCAN
Rajeev79dbe4c2013-10-05 11:03:42 +053029460/**
29461 @brief Process stop batch indication from WDA
29462
29463 @param pWDICtx: pointer to the WLAN DAL context
29464 pEventData: pointer to the event information structure
29465
29466 @see
29467 @return Result of the function call
29468*/
29469WDI_Status
29470WDI_ProcessStopBatchScanInd
29471(
29472 WDI_ControlBlockType* pWDICtx,
29473 WDI_EventInfoType* pEventData
29474)
29475{
29476 wpt_uint8* pSendBuffer = NULL;
29477 wpt_uint16 usDataOffset = 0;
29478 wpt_uint16 usSendSize = 0;
29479 WDI_Status wdiStatus;
29480 tHalBatchScanStopIndParam *pHalInd = NULL;
29481 WDI_StopBatchScanIndType *pWdiInd = NULL;
29482
29483
29484 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
29485
29486 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
29487 "%s", __func__);
29488
29489 /*-------------------------------------------------------------------------
29490 Sanity check
29491 -------------------------------------------------------------------------*/
29492
29493 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
29494 {
29495 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
29496 "%s: Invalid parameters", __func__);
29497 WDI_ASSERT(0);
29498 return WDI_STATUS_E_FAILURE;
29499 }
29500 pWdiInd = (WDI_StopBatchScanIndType *)pEventData->pEventData;
29501 /*-----------------------------------------------------------------------
29502 Get message buffer
29503 -----------------------------------------------------------------------*/
29504
29505 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
29506 WDI_STOP_BATCH_SCAN_IND,
29507 sizeof(tHalBatchScanStopIndParam),
29508 &pSendBuffer, &usDataOffset, &usSendSize))||
29509 ( usSendSize < (usDataOffset + sizeof(tHalBatchScanStopIndParam))))
29510 {
29511 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
29512 "Unable to get send buffer in stop batch scan ind %p ",
29513 pEventData);
29514 WDI_ASSERT(0);
29515 return WDI_STATUS_E_FAILURE;
29516 }
29517
29518 pHalInd = (tHalBatchScanStopIndParam *)(pSendBuffer + usDataOffset);
29519 pHalInd->param = pWdiInd->param;
29520
29521 pWDICtx->pReqStatusUserData = NULL;
29522 pWDICtx->pfncRspCB = NULL;
29523 /*-------------------------------------------------------------------------
29524 Send Stop batch scan indication to HAL
29525 -------------------------------------------------------------------------*/
29526 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
29527 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus:WDI_STATUS_SUCCESS_SYNC;
29528}
29529
29530/**
29531 @brief This API is called to trigger batch scan results from FW
29532
29533 @param pWDICtx: pointer to the WLAN DAL context
29534 pEventData: pointer to the event information structure
29535
29536 @see
29537 @return Result of the function call
29538*/
29539WDI_Status
29540WDI_ProcessTriggerBatchScanResultInd
29541(
29542 WDI_ControlBlockType* pWDICtx,
29543 WDI_EventInfoType* pEventData
29544)
29545{
29546 WDI_Status wdiStatus;
29547 wpt_uint8* pSendBuffer = NULL;
29548 wpt_uint16 usDataOffset = 0;
29549 wpt_uint16 usSendSize = 0;
29550 tHalBatchScanTriggerResultParam *pHalInd = NULL;
29551 WDI_TriggerBatchScanResultIndType *pWdiInd = NULL;
29552
29553
29554 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
29555
29556 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
29557 "%s", __func__);
29558
29559 /*-------------------------------------------------------------------------
29560 Sanity check
29561 -------------------------------------------------------------------------*/
29562
29563 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
29564 {
29565 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
29566 "%s: Invalid parameters", __func__);
29567 WDI_ASSERT(0);
29568 return WDI_STATUS_E_FAILURE;
29569 }
29570 pWdiInd = (WDI_TriggerBatchScanResultIndType *)pEventData->pEventData;
29571 /*-----------------------------------------------------------------------
29572 Get message buffer
29573 -----------------------------------------------------------------------*/
29574
29575 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
29576 WDI_TRIGGER_BATCH_SCAN_RESULT_IND,
29577 sizeof(tHalBatchScanTriggerResultParam),
29578 &pSendBuffer, &usDataOffset, &usSendSize))||
29579 ( usSendSize < (usDataOffset + sizeof(tHalBatchScanTriggerResultParam))))
29580 {
29581 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
29582 "Unable to get send buffer in stop batch scan ind %p ",
29583 pEventData);
29584 WDI_ASSERT(0);
29585 return WDI_STATUS_E_FAILURE;
29586 }
29587
29588 pHalInd = (tHalBatchScanTriggerResultParam *)(pSendBuffer + usDataOffset);
29589 pHalInd->param = pWdiInd->param;
29590
29591 pWDICtx->pReqStatusUserData = NULL;
29592 pWDICtx->pfncRspCB = NULL;
29593 /*-------------------------------------------------------------------------
29594 Send trigger batch scan result indication to HAL
29595 -------------------------------------------------------------------------*/
29596 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
29597 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus:WDI_STATUS_SUCCESS_SYNC;
29598}
29599
29600
29601/**
29602 @brief Process set batch scan response from FW
29603
29604 @param pWDICtx: pointer to the WLAN DAL context
29605 pEventData: pointer to the event information structure
29606
29607 @see
29608 @return Result of the function call
29609*/
29610WDI_Status
29611WDI_ProcessSetBatchScanRsp
29612(
29613 WDI_ControlBlockType* pWDICtx,
29614 WDI_EventInfoType* pEventData
29615)
29616{
29617 WDI_SetBatchScanCb wdiSetBatchScanCb;
29618 WDI_SetBatchScanRspType *pSetBatchScanRsp;
29619
29620 tHalBatchScanSetRspParam *pHalSetBatchScanRsp;
29621 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
29622
29623 /*sanity check*/
29624 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
29625 ( NULL == pEventData->pEventData))
29626 {
29627 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
29628 "%s: Invalid parameters", __func__);
29629 WDI_ASSERT(0);
29630 return WDI_STATUS_E_FAILURE;
29631 }
29632
29633 wdiSetBatchScanCb = (WDI_SetBatchScanCb)pWDICtx->pfncRspCB;
29634 if ( NULL == wdiSetBatchScanCb)
29635 {
29636 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
29637 "%s: call back function is NULL", __func__);
29638 WDI_ASSERT(0);
29639 return WDI_STATUS_E_FAILURE;
29640 }
29641
29642 pSetBatchScanRsp = wpalMemoryAllocate(sizeof(WDI_SetBatchScanRspType));
29643
29644 if (NULL == pSetBatchScanRsp)
29645 {
29646 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080029647 "Failed to allocate memory in set batch scan response %p %p %p ",
Rajeev79dbe4c2013-10-05 11:03:42 +053029648 pWDICtx, pEventData, pEventData->pEventData);
29649 WDI_ASSERT(0);
29650 return WDI_STATUS_E_FAILURE;
29651 }
29652
Sunil Duttbd736ed2014-05-26 21:19:41 +053029653 /* extract response and send it to UMAC */
Rajeev79dbe4c2013-10-05 11:03:42 +053029654 pHalSetBatchScanRsp = (tHalBatchScanSetRspParam *)pEventData->pEventData;
29655
29656 pSetBatchScanRsp->nScansToBatch = pHalSetBatchScanRsp->supportedMscan;
29657
Sunil Duttbd736ed2014-05-26 21:19:41 +053029658 /* Notify UMAC */
Rajeev79dbe4c2013-10-05 11:03:42 +053029659 wdiSetBatchScanCb(pSetBatchScanRsp, pWDICtx->pRspCBUserData);
29660
29661 wpalMemoryFree(pSetBatchScanRsp);
29662
29663 return WDI_STATUS_SUCCESS;
Sunil Duttbd736ed2014-05-26 21:19:41 +053029664}/* WDI_ProcessSetBatchScanRsp */
Rajeev79dbe4c2013-10-05 11:03:42 +053029665
29666/**
29667 @brief Process batch scan result indication from FW
29668
29669 @param pWDICtx: pointer to the WLAN DAL context
29670 pEventData: pointer to the event information structure
29671
29672 @see
29673 @return Result of the function call
29674*/
29675WDI_Status
29676WDI_ProcessBatchScanResultInd
29677(
29678 WDI_ControlBlockType* pWDICtx,
29679 WDI_EventInfoType* pEventData
29680)
29681{
29682 void *pBatchScanResultInd;
29683 WDI_LowLevelIndType wdiInd;
29684 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
29685
Sunil Duttbd736ed2014-05-26 21:19:41 +053029686 /* sanity check */
Rajeev79dbe4c2013-10-05 11:03:42 +053029687 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
29688 ( NULL == pEventData->pEventData))
29689 {
29690 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
29691 "%s: Invalid parameters", __func__);
29692 WDI_ASSERT(0);
29693 return WDI_STATUS_E_FAILURE;
29694 }
29695
Sunil Duttbd736ed2014-05-26 21:19:41 +053029696 /* extract response and send it to UMAC */
Rajeev79dbe4c2013-10-05 11:03:42 +053029697 pBatchScanResultInd = (void *)pEventData->pEventData;
29698
Sunil Duttbd736ed2014-05-26 21:19:41 +053029699 /* Fill in the indication parameters */
Rajeev79dbe4c2013-10-05 11:03:42 +053029700 wdiInd.wdiIndicationType = WDI_BATCH_SCAN_RESULT_IND;
29701
29702 wdiInd.wdiIndicationData.pBatchScanResult = pBatchScanResultInd;
29703
Sunil Duttbd736ed2014-05-26 21:19:41 +053029704 /* Notify UMAC */
Rajeev79dbe4c2013-10-05 11:03:42 +053029705 if (pWDICtx->wdiLowLevelIndCB)
29706 {
29707 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
29708 }
29709 else
29710 {
29711 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
29712 "%s: WDILowLevelIndCb is null", __func__);
29713 WDI_ASSERT(0);
29714 return WDI_STATUS_E_FAILURE;
29715 }
29716
29717 return WDI_STATUS_SUCCESS;
29718} /*End of WDI_ProcessBatchScanResultInd*/
29719
Sunil Duttbd736ed2014-05-26 21:19:41 +053029720#ifdef WLAN_FEATURE_LINK_LAYER_STATS
29721/**
29722 @brief Process Link Layer Statistics Result indication from FW
29723
29724 @param pWDICtx: pointer to the WLAN DAL context
29725 pEventData: pointer to the event information structure
29726
29727 @see
29728 @return Result of the function call
29729*/
29730WDI_Status
29731WDI_ProcessLinkLayerStatsResultsInd
29732(
29733 WDI_ControlBlockType* pWDICtx,
29734 WDI_EventInfoType* pEventData
29735)
29736{
29737 void *pLinkLayerStatsInd;
29738 WDI_LowLevelIndType wdiInd;
29739 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
29740
29741 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
29742 "%s: Event RESULTS Indication", __func__);
29743
29744 /* sanity check */
29745 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
29746 ( NULL == pEventData->pEventData))
29747 {
29748 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
29749 "%s: Invalid parameters", __func__);
29750 WDI_ASSERT(0);
29751 return WDI_STATUS_E_FAILURE;
29752 }
29753
29754 /* extract response and send it to UMAC */
29755 pLinkLayerStatsInd = (void *)pEventData->pEventData;
29756
29757 /* Fill in the indication parameters */
29758 wdiInd.wdiIndicationType = WDI_LL_STATS_RESULTS_IND;
29759
29760 wdiInd.wdiIndicationData.pLinkLayerStatsResults = pLinkLayerStatsInd;
29761
29762 /* Notify UMAC */
29763 if (pWDICtx->wdiLowLevelIndCB)
29764 {
29765 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
29766 }
29767 else
29768 {
29769 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
29770 "%s: WDILowLevelIndCb is null", __func__);
29771 WDI_ASSERT(0);
29772 return WDI_STATUS_E_FAILURE;
29773 }
29774
29775 return WDI_STATUS_SUCCESS;
29776} /* End of WDI_ProcessLinkLayerStatsResultsInd */
29777#endif /* WLAN_FEATURE_LINK_LAYER_STATS */
29778
Rajeev79dbe4c2013-10-05 11:03:42 +053029779/**
29780 @brief WDI_ProcessSetBatchScanReq -
29781 Set batch scan request to FW
29782
29783 @param pWDICtx : wdi context
29784 pEventData : indication data
29785
29786 @see
29787 @return none
29788*/
29789WDI_Status WDI_ProcessSetBatchScanReq
29790(
29791 WDI_ControlBlockType* pWDICtx,
29792 WDI_EventInfoType* pEventData
29793)
29794{
29795 WDI_SetBatchScanReqType *pWdiReq;
29796 WDI_Status wdiStatus;
29797 wpt_uint8* pSendBuffer = NULL;
29798 wpt_uint16 usDataOffset = 0;
29799 wpt_uint16 usSendSize = 0;
29800 tHalBatchScanSetParams *pHalReq;
29801 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
29802
29803 /*sanity check*/
29804 if ((NULL == pEventData) || (NULL == pEventData->pEventData))
29805 {
29806 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
29807 "%s: Invalid parameters in set batch scan request", __func__);
29808 WDI_ASSERT(0);
29809 return WDI_STATUS_E_FAILURE;
29810 }
29811
29812
29813 pWdiReq = (WDI_SetBatchScanReqType *)pEventData->pEventData;
29814
29815
29816 /*get message buffer*/
29817 if ((WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(pWDICtx,
29818 WDI_SET_BATCH_SCAN_REQ,
29819 sizeof(tHalBatchScanSetParams),
29820 &pSendBuffer, &usDataOffset, &usSendSize))||
29821 (usSendSize < (usDataOffset + sizeof(tHalBatchScanSetParams))))
29822 {
29823 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
29824 "Unable to get send buffer for SET_BATCH_SCAN_REQ ");
29825 WDI_ASSERT(0);
29826 return WDI_STATUS_E_FAILURE;
29827 }
29828
29829 pHalReq = (tHalBatchScanSetParams *)(pSendBuffer + usDataOffset);
29830
29831 pHalReq->rtt = pWdiReq->rtt;
29832 pHalReq->rfBand = pWdiReq->rfBand;
29833 pHalReq->bestNetworks = pWdiReq->bestNetwork;
29834 pHalReq->scanInterval = pWdiReq->scanFrequency;
29835 pHalReq->numScan2Batch = pWdiReq->numberOfScansToBatch;
29836
29837 /*send set batch scan request to fw*/
29838 pWDICtx->pfncRspCB = pEventData->pCBfnc;
29839 pWDICtx->pReqStatusUserData = pEventData->pUserData;
29840
29841 wdiStatus = WDI_SendMsg(pWDICtx, pSendBuffer,
29842 usSendSize, pWDICtx->pfncRspCB,
29843 pWDICtx->pReqStatusUserData,
29844 WDI_SET_BATCH_SCAN_RESP);
29845
29846 return wdiStatus;
29847}
29848
29849/**
29850 @brief WDI_SetBatchScanReq
29851 This API is called to set batch scan request in FW
29852
29853 @param pBatchScanReqParam : pointer to set batch scan re param
29854 usrData : Client context
29855 setBatchScanRspCb : set batch scan resp callback
29856 @see
29857 @return SUCCESS or FAIL
29858*/
29859WDI_Status WDI_SetBatchScanReq
29860(
29861 void *pBatchScanReqParam,
29862 void *usrData,
29863 WDI_SetBatchScanCb setBatchScanRspCb
29864)
29865{
29866 WDI_EventInfoType wdiEventData;
29867
29868 /*sanity check*/
29869 if (eWLAN_PAL_FALSE == gWDIInitialized)
29870 {
29871 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
29872 "WDI API call before module is initialized - Fail request");
29873
29874 return WDI_STATUS_E_NOT_ALLOWED;
29875 }
29876
29877 /* fill in event data and post to the main FSM */
29878 wdiEventData.wdiRequest = WDI_SET_BATCH_SCAN_REQ;
29879 wdiEventData.pEventData = pBatchScanReqParam;
29880 wdiEventData.uEventDataSize = sizeof(WDI_SetBatchScanReqType);
29881 wdiEventData.pCBfnc = setBatchScanRspCb;
29882 wdiEventData.pUserData = usrData;
29883
29884 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
29885}
29886
29887/**
29888 @brief WDI_StopbatchScanInd: Send stop batch scan indication to FW
29889
29890 @param None
29891
29892 @see
29893
29894 @return Status of the request
29895*/
29896WDI_Status
29897WDI_StopBatchScanInd(WDI_StopBatchScanIndType *pWdiReq)
29898{
29899 WDI_EventInfoType wdiEventData;
29900
29901 /*-------------------------------------------------------------------------
29902 Sanity Check
29903 ------------------------------------------------------------------------*/
29904 if (eWLAN_PAL_FALSE == gWDIInitialized)
29905 {
29906 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
29907 "WDI API call before module is initialized - Fail request!");
29908
29909 return WDI_STATUS_E_NOT_ALLOWED;
29910 }
29911
29912 /*-------------------------------------------------------------------------
29913 Fill in Event data and post to the Main FSM
29914 ------------------------------------------------------------------------*/
29915 wdiEventData.wdiRequest = WDI_STOP_BATCH_SCAN_IND;
29916 wdiEventData.pEventData = pWdiReq;
29917 wdiEventData.uEventDataSize = sizeof(WDI_StopBatchScanIndType);
29918 wdiEventData.pCBfnc = NULL;
29919 wdiEventData.pUserData = NULL;
29920
29921 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
29922}
29923
29924/**
29925 @brief WDI_TriggerBatchScanResultInd
29926 This API is called to pull batch scan result from FW
29927
29928 @param pWdiReq : pointer to get batch scan ind param
29929 @see
29930 @return SUCCESS or FAIL
29931*/
29932WDI_Status WDI_TriggerBatchScanResultInd
29933(
29934 WDI_TriggerBatchScanResultIndType *pWdiReq
29935)
29936{
29937 WDI_EventInfoType wdiEventData;
29938 /*-------------------------------------------------------------------------
29939 Sanity Check
29940 ------------------------------------------------------------------------*/
29941 if (eWLAN_PAL_FALSE == gWDIInitialized)
29942 {
29943 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
29944 "WDI API call before module is initialized - Fail request!");
29945
29946 return WDI_STATUS_E_NOT_ALLOWED;
29947 }
29948
29949 /*-------------------------------------------------------------------------
29950 Fill in Event data and post to the Main FSM
29951 ------------------------------------------------------------------------*/
29952 wdiEventData.wdiRequest = WDI_TRIGGER_BATCH_SCAN_RESULT_IND;
29953 wdiEventData.pEventData = pWdiReq;
29954 wdiEventData.uEventDataSize = sizeof(WDI_TriggerBatchScanResultIndType);
29955 wdiEventData.pCBfnc = NULL;
29956 wdiEventData.pUserData = NULL;
29957
29958 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
29959}
Rajeev79dbe4c2013-10-05 11:03:42 +053029960#endif /*FEATURE_WLAN_BATCH_SCAN*/
Leo Chang0b0e45a2013-12-15 15:18:55 -080029961
Manjunathappa Prakash86f78ca2014-02-10 18:09:15 -080029962/**
29963 @brief Process Update Channel Rsp function (called when a response is
29964 being received over the bus from HAL)
29965
29966 @param pWDICtx: pointer to the WLAN DAL context
29967 pEventData: pointer to the event information structure
29968
29969 @see
29970 @return Result of the function call
29971*/
29972WDI_Status
29973WDI_ProcessUpdateChanRsp
29974(
29975 WDI_ControlBlockType* pWDICtx,
29976 WDI_EventInfoType* pEventData
29977)
29978{
29979 WDI_Status wdiStatus;
29980 eHalStatus halStatus;
29981 WDI_UpdateChannelRspCb wdiUpdateChanRspCb;
29982 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
29983
29984 /*-------------------------------------------------------------------------
29985 Sanity check
29986 -------------------------------------------------------------------------*/
29987 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
29988 ( NULL == pEventData->pEventData))
29989 {
29990 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
29991 "%s: Invalid parameters", __func__);
29992 WDI_ASSERT(0);
29993 return WDI_STATUS_E_FAILURE;
29994 }
29995
29996 wdiUpdateChanRspCb = (WDI_UpdateChannelRspCb)pWDICtx->pfncRspCB;
29997
29998 /*-------------------------------------------------------------------------
29999 Extract response and send it to UMAC
30000 -------------------------------------------------------------------------*/
30001 halStatus = *((eHalStatus*)pEventData->pEventData);
30002 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
30003
30004 wdiUpdateChanRspCb( wdiStatus, pWDICtx->pRspCBUserData);
30005
30006 return WDI_STATUS_SUCCESS;
30007}/*WDI_ProcessUpdateChanRsp*/
30008
Leo Chang0b0e45a2013-12-15 15:18:55 -080030009#ifdef FEATURE_WLAN_CH_AVOID
30010/**
30011 @brief v -WDI_ProcessChAvoidInd
30012
30013
30014 @param pWDICtx : wdi context
30015 pEventData : indication data
30016 @see
30017 @return Result of the function call
30018*/
30019WDI_Status
30020WDI_ProcessChAvoidInd
30021(
30022 WDI_ControlBlockType* pWDICtx,
30023 WDI_EventInfoType* pEventData
30024)
30025{
30026 WDI_LowLevelIndType wdiInd;
30027 tHalAvoidFreqRangeIndParams chAvoidIndicationParam;
30028 wpt_uint16 rangeLoop;
30029 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
30030
30031 /*-------------------------------------------------------------------------
30032 Sanity check
30033 -------------------------------------------------------------------------*/
30034 if ((NULL == pWDICtx) || (NULL == pEventData) ||
30035 (NULL == pEventData->pEventData))
30036 {
30037 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
30038 "%s: Invalid parameters", __func__);
30039 WDI_ASSERT(0);
30040 return WDI_STATUS_E_FAILURE;
30041 }
30042
30043 /*-------------------------------------------------------------------------
30044 Extract indication and send it to UMAC
30045 -------------------------------------------------------------------------*/
30046 wpalMemoryCopy(&chAvoidIndicationParam,
30047 pEventData->pEventData,
30048 sizeof(tHalAvoidFreqRangeIndParams));
30049
30050 wdiInd.wdiIndicationType = WDI_CH_AVOID_IND;
30051 wdiInd.wdiIndicationData.wdiChAvoidInd.avoidRangeCount =
30052 chAvoidIndicationParam.avoidCnt;
30053 wpalMemoryCopy((void *)wdiInd.wdiIndicationData.wdiChAvoidInd.avoidFreqRange,
30054 (void *)chAvoidIndicationParam.avoidRange,
30055 wdiInd.wdiIndicationData.wdiChAvoidInd.avoidRangeCount *
30056 sizeof(WDI_ChAvoidFreqType));
30057 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
30058 "%s: band count %d", __func__,
30059 wdiInd.wdiIndicationData.wdiChAvoidInd.avoidRangeCount);
30060 for (rangeLoop = 0; rangeLoop < chAvoidIndicationParam.avoidCnt; rangeLoop++)
30061 {
30062 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
30063 "%s: srart freq %d, end freq %d", __func__,
30064 wdiInd.wdiIndicationData.wdiChAvoidInd.avoidFreqRange[rangeLoop].startFreq,
30065 wdiInd.wdiIndicationData.wdiChAvoidInd.avoidFreqRange[rangeLoop].endFreq);
30066 }
30067
30068 /*Notify UMAC*/
30069 if (pWDICtx->wdiLowLevelIndCB)
30070 {
30071 pWDICtx->wdiLowLevelIndCB(&wdiInd, pWDICtx->pIndUserData);
30072 }
30073
30074 return WDI_STATUS_SUCCESS;
30075}
30076#endif /* FEATURE_WLAN_CH_AVOID */
30077
Sandeep Puligilla8b8b74b2014-02-10 16:39:05 +053030078/**
30079 @brief Process OBSS Start scan result indication
30080
30081 @param pWDICtx: pointer to the WLAN DAL context
30082 pEventData: pointer to the event information structure
30083
30084 @see
30085 @return Result of the function call
30086*/
30087WDI_Status
30088WDI_ProcessHT40OBSSScanInd
30089(
30090 WDI_ControlBlockType* pWDICtx,
30091 WDI_EventInfoType* pEventData
30092)
30093{
30094 wpt_uint8* pSendBuffer = NULL;
30095 wpt_uint16 usDataOffset = 0;
30096 wpt_uint16 usSendSize = 0;
30097 wpt_uint16 usLen = 0;
30098 WDI_HT40ObssScanIndType *pwdiHT40OBSSScanInd = NULL;
30099 WDI_HT40ObssScanParamsType *pwdiHT40OBSSScanParams = NULL;
30100 tHT40ObssScanIndType* pHT40ObssScanInd = NULL;
30101 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
30102
30103 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
30104
30105 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
30106 "%s", __func__);
30107
30108 /*-------------------------------------------------------------------------
30109 Sanity check
30110 -------------------------------------------------------------------------*/
30111 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
30112 {
30113 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
30114 "%s: Invalid parameters", __func__);
30115 WDI_ASSERT(0);
30116 return WDI_STATUS_E_FAILURE;
30117 }
30118 pwdiHT40OBSSScanParams = (WDI_HT40ObssScanParamsType*)pEventData->pEventData;
30119
30120 pwdiHT40OBSSScanInd = &pwdiHT40OBSSScanParams->wdiHT40ObssScanParam;
30121 /*-----------------------------------------------------------------------
30122 Get message buffer
30123 -----------------------------------------------------------------------*/
30124
30125 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
30126 WDI_START_HT40_OBSS_SCAN_IND,
30127 sizeof(tHT40ObssScanIndType),
30128 &pSendBuffer, &usDataOffset, &usSendSize))||
30129 ( usSendSize < (usDataOffset + usLen )))
30130 {
30131 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
30132 "Unable to get send buffer in HT40 OBSS Start req %p ",
30133 pEventData);
30134 WDI_ASSERT(0);
30135 return WDI_STATUS_E_FAILURE;
30136 }
30137 pHT40ObssScanInd = (tHT40ObssScanIndType*)(pSendBuffer+usDataOffset);
30138 pHT40ObssScanInd->cmdType = pwdiHT40OBSSScanInd->cmdType;
30139 pHT40ObssScanInd->scanType = pwdiHT40OBSSScanInd->scanType;
30140 pHT40ObssScanInd->OBSSScanPassiveDwellTime =
30141 pwdiHT40OBSSScanInd->OBSSScanPassiveDwellTime;
30142 pHT40ObssScanInd->OBSSScanActiveDwellTime =
30143 pwdiHT40OBSSScanInd->OBSSScanActiveDwellTime;
30144 pHT40ObssScanInd->BSSChannelWidthTriggerScanInterval =
30145 pwdiHT40OBSSScanInd->BSSChannelWidthTriggerScanInterval;
30146 pHT40ObssScanInd->OBSSScanPassiveTotalPerChannel =
30147 pwdiHT40OBSSScanInd->OBSSScanPassiveTotalPerChannel;
30148 pHT40ObssScanInd->OBSSScanActiveTotalPerChannel =
30149 pwdiHT40OBSSScanInd->OBSSScanActiveTotalPerChannel;
30150 pHT40ObssScanInd->BSSWidthChannelTransitionDelayFactor =
30151 pwdiHT40OBSSScanInd->BSSWidthChannelTransitionDelayFactor;
30152 pHT40ObssScanInd->OBSSScanActivityThreshold =
30153 pwdiHT40OBSSScanInd->OBSSScanActivityThreshold;
30154 pHT40ObssScanInd->selfStaIdx =
30155 pwdiHT40OBSSScanInd->selfStaIdx;
30156 pHT40ObssScanInd->bssIdx =
30157 pwdiHT40OBSSScanInd->bssIdx;
30158 pHT40ObssScanInd->fortyMHZIntolerent =
30159 pwdiHT40OBSSScanInd->fortyMHZIntolerent;
30160 pHT40ObssScanInd->channelCount =
30161 pwdiHT40OBSSScanInd->channelCount;
30162
30163 wpalMemoryCopy(pHT40ObssScanInd->channels, pwdiHT40OBSSScanInd->channels,
30164 WDI_ROAM_SCAN_MAX_CHANNELS);
30165 pHT40ObssScanInd->ieFieldLen =
30166 pwdiHT40OBSSScanInd->ieFieldLen;
30167
30168 wpalMemoryCopy(pHT40ObssScanInd->ieField, pwdiHT40OBSSScanInd->ieField,
30169 WDI_ROAM_SCAN_MAX_PROBE_SIZE);
30170 pWDICtx->pReqStatusUserData = NULL;
30171 pWDICtx->pfncRspCB = NULL;
30172
30173 pWDICtx->wdiReqStatusCB = pwdiHT40OBSSScanParams->wdiReqStatusCB;
30174 pWDICtx->pReqStatusUserData = pwdiHT40OBSSScanParams->pUserData;
30175
30176 /*-------------------------------------------------------------------------
30177 Send OBSS Start Indication to HAL
30178 -------------------------------------------------------------------------*/
30179 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
30180 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus:WDI_STATUS_SUCCESS_SYNC;
30181
30182} /*End of WDI_ProcessHT40OBSSStartScanInd*/
30183
30184
30185/**
30186 @brief wdi_HT40OBSSScanInd
30187 This API is called to start OBSS scan
30188
30189 @param pWdiReq : pointer to get ind param
30190 @see
30191 @return SUCCESS or FAIL
30192*/
30193WDI_Status WDI_HT40OBSSScanInd
30194(
30195 WDI_HT40ObssScanParamsType *pWdiReq
30196)
30197{
30198 WDI_EventInfoType wdiEventData;
30199
30200 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
30201 "%s", __func__);
30202 /*-------------------------------------------------------------------------
30203 Sanity Check
30204 ------------------------------------------------------------------------*/
30205 if (eWLAN_PAL_FALSE == gWDIInitialized)
30206 {
30207 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
30208 "WDI API call before module is initialized - Fail request!");
30209
30210 return WDI_STATUS_E_NOT_ALLOWED;
30211 }
30212
30213 /*-------------------------------------------------------------------------
30214 Fill in Event data and post to the Main FSM
30215 ------------------------------------------------------------------------*/
30216 wdiEventData.wdiRequest = WDI_START_HT40_OBSS_SCAN_IND;
30217 wdiEventData.pEventData = pWdiReq;
30218 wdiEventData.uEventDataSize = sizeof(WDI_HT40ObssScanParamsType);
30219 wdiEventData.pCBfnc = NULL;
30220 wdiEventData.pUserData = NULL;
30221
30222
30223 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
30224}
30225
30226/**
30227 @brief Process OBSS Stop scan result
30228
30229 @param pWDICtx: pointer to the WLAN DAL context
30230 pEventData: pointer to the event information structure
30231
30232 @see
30233 @return Result of the function call
30234*/
30235WDI_Status
30236WDI_ProcessHT40OBSSStopScanInd
30237(
30238 WDI_ControlBlockType* pWDICtx,
30239 WDI_EventInfoType* pEventData
30240)
30241{
30242 wpt_uint8* pSendBuffer = NULL;
30243 wpt_uint16 usDataOffset = 0;
30244 wpt_uint16 usSendSize = 0;
30245 wpt_uint16 usLen = 0;
30246 wpt_uint8 *wdiBssIdx = 0;
30247 tANI_U8 *bssIdx = 0;
30248 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
30249
30250 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
30251
30252 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
30253 "%s", __func__);
30254
30255 /*-------------------------------------------------------------------------
30256 Sanity check
30257 -------------------------------------------------------------------------*/
30258 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
30259 {
30260 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
30261 "%s: Invalid parameters", __func__);
30262 WDI_ASSERT(0);
30263 return WDI_STATUS_E_FAILURE;
30264 }
30265 bssIdx = (wpt_uint8*)pEventData->pEventData;
30266 /*-----------------------------------------------------------------------
30267 Get message buffer
30268 -----------------------------------------------------------------------*/
30269
30270 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
30271 WDI_STOP_HT40_OBSS_SCAN_IND,
30272 sizeof(tANI_U8),
30273 &pSendBuffer, &usDataOffset, &usSendSize))||
30274 ( usSendSize < (usDataOffset + usLen )))
30275 {
30276 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
30277 "Unable to get send buffer in HT40 OBSS Start req %p ",
30278 pEventData);
30279 WDI_ASSERT(0);
30280 return WDI_STATUS_E_FAILURE;
30281 }
30282
30283 bssIdx = (tANI_U8*)pSendBuffer+usDataOffset;
30284 bssIdx = wdiBssIdx;
30285
30286 pWDICtx->pReqStatusUserData = NULL;
30287 pWDICtx->pfncRspCB = NULL;
30288
30289 /*-------------------------------------------------------------------------
30290 Send DHCP Start Indication to HAL
30291 -------------------------------------------------------------------------*/
30292 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
30293 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus:WDI_STATUS_SUCCESS_SYNC;
30294} /*End of WDI_ProcessHT40OBSSStopScanInd*/
30295
30296/**
30297 @brief WDI_HT40OBSSStopScanInd
30298 This API is called to start OBSS scan
30299 @param pWdiReq : pointer to get ind param
30300 @see
30301 @return SUCCESS or FAIL
30302*/
30303WDI_Status WDI_HT40OBSSStopScanInd
30304(
30305 wpt_uint8 bssIdx
30306)
30307{
30308 WDI_EventInfoType wdiEventData;
30309
30310 /*-------------------------------------------------------------------------
30311 Sanity Check
30312 ------------------------------------------------------------------------*/
30313 if (eWLAN_PAL_FALSE == gWDIInitialized)
30314 {
30315 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
30316 "WDI API call before module is initialized - Fail request!");
30317
30318 return WDI_STATUS_E_NOT_ALLOWED;
30319 }
30320
30321 /*-------------------------------------------------------------------------
30322 Fill in Event data and post to the Main FSM
30323 ------------------------------------------------------------------------*/
30324 wdiEventData.wdiRequest = WDI_STOP_HT40_OBSS_SCAN_IND;
30325 wdiEventData.pEventData = &bssIdx;
30326 wdiEventData.uEventDataSize = sizeof(wpt_uint8);
30327 wdiEventData.pCBfnc = NULL;
30328 wdiEventData.pUserData = NULL;
30329
30330 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
30331}
30332
c_hpothu86041002014-04-14 19:06:51 +053030333WDI_Status
30334WDI_printRegInfo
30335(
30336 WDI_ControlBlockType* pWDICtx,
30337 WDI_EventInfoType* pEventData
30338)
30339{
30340 tHalRegDebugInfo *pRegTable;
30341 tHalRegDebugInfoParams *pRegParams;
30342 uint32 cnt=0;
30343
30344 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
30345 "%s: ", __func__);
30346 /*-------------------------------------------------------------------------
30347 Sanity check
30348 -------------------------------------------------------------------------*/
30349 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
30350 ( NULL == pEventData->pEventData))
30351 {
30352 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
30353 "%s: Invalid parameters", __func__);
30354 WDI_ASSERT(0);
30355 return WDI_STATUS_E_FAILURE;
30356 }
30357
30358 pRegParams = (tHalRegDebugInfoParams *)pEventData->pEventData;
30359
30360 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
30361 "%s: regCount: %x scenario: %x reasonCode: %x", __func__,
30362 pRegParams->regCount, pRegParams->scenario, pRegParams->reasonCode);
30363
30364 pRegTable = (tHalRegDebugInfo *)(pRegParams+1); //data starts after regParams
30365
30366 if (pRegParams->regCount <= 0)
30367 {
30368 WPAL_TRACE (eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
30369 "%s incorrect parameters passed", __func__);
30370 return WDI_STATUS_E_FAILURE;
30371 }
30372
30373 while(pRegParams->regCount--)
30374 {
30375 WPAL_TRACE (eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
30376 "%x: %x", pRegTable[cnt].regAddr, pRegTable[cnt].regValue);
30377 cnt++;
30378 }
30379
30380 return WDI_STATUS_SUCCESS;
30381}
c_hpothu92367912014-05-01 15:18:17 +053030382
30383/*
30384 * FUNCTION: WDI_ProcessGetBcnMissRateRsp
30385 * send the response to PE with beacon miss count
30386 * received from WDI.
30387 */
30388WDI_Status
30389WDI_ProcessGetBcnMissRateRsp
30390(
30391 WDI_ControlBlockType* pWDICtx,
30392 WDI_EventInfoType* pEventData
30393)
30394{
30395 WDI_GetBcnMissRateCb wdiGetBcnMissRateCb;
30396 tpHalBcnMissRateRspParams pHalBcnMissRateRsp;
30397
30398 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
30399 "In %s",__func__);
30400 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
30401
30402 /*-------------------------------------------------------------------------
30403 Sanity check
30404 -------------------------------------------------------------------------*/
30405 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
30406 ( NULL == pEventData->pEventData))
30407 {
30408 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
30409 "%s: Invalid parameters", __func__);
30410 WDI_ASSERT(0);
30411 return WDI_STATUS_E_FAILURE;
30412 }
30413
30414 pHalBcnMissRateRsp = (tHalBcnMissRateRspParams *)pEventData->pEventData;
30415 wdiGetBcnMissRateCb = (WDI_GetBcnMissRateCb)pWDICtx->pfncRspCB;
30416
30417 /*Notify UMAC*/
30418 wdiGetBcnMissRateCb(pHalBcnMissRateRsp->status,
30419 pHalBcnMissRateRsp->bcnMissCnt, pWDICtx->pRspCBUserData);
30420 return WDI_STATUS_SUCCESS;
30421}
30422
30423/*
30424 * FUNCTION: WDI_ProcessGetBcnMissRateReq
30425 * Request to WDI to get missed beacon rate.
30426 */
30427WDI_Status
30428WDI_ProcessGetBcnMissRateReq
30429(
30430 WDI_ControlBlockType* pWDICtx,
30431 WDI_EventInfoType* pEventData
30432)
30433{
30434 wpt_uint8* pSendBuffer = NULL;
30435 wpt_uint16 usDataOffset = 0;
30436 wpt_uint16 usSendSize = 0;
30437 wpt_uint8 ucCurrentBSSSesIdx = 0;
30438 WDI_BSSSessionType* pBSSSes = NULL;
30439 wpt_macAddr macBSSID;
30440 WDI_GetBcnMissRateCb *wdiGetBcnMissRateCb;
30441 tHalBcnMissRateReqParams halBcnMissRateReq;
30442
30443/*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
30444
30445 /*-------------------------------------------------------------------------
30446 Sanity check
30447 -------------------------------------------------------------------------*/
30448 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData) ||
30449 ( NULL == pEventData->pCBfnc ) )
30450 {
30451 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
30452 "%s: Invalid parameters", __func__);
30453 WDI_ASSERT(0);
30454 return WDI_STATUS_E_FAILURE;
30455 }
30456
30457 wdiGetBcnMissRateCb = (WDI_GetBcnMissRateCb *)pEventData->pCBfnc;
30458
30459 wpalMutexAcquire(&pWDICtx->wptMutex);
30460
30461 ucCurrentBSSSesIdx = WDI_FindAssocSession(pWDICtx,
30462 pEventData->pEventData, &pBSSSes);
30463 if ( NULL == pBSSSes )
30464 {
30465 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
30466 "%s: Association sequence for this BSS does not yet exist. macBSSID"
30467 MAC_ADDRESS_STR, __func__, MAC_ADDR_ARRAY(macBSSID));
30468 wpalMutexRelease(&pWDICtx->wptMutex);
30469 return WDI_STATUS_E_NOT_ALLOWED;
30470 }
30471 wpalMutexRelease(&pWDICtx->wptMutex);
30472
30473 /*-----------------------------------------------------------------------
30474 Get message buffer
30475 -----------------------------------------------------------------------*/
30476 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
30477 pWDICtx, WDI_GET_BCN_MISS_RATE_REQ,
30478 sizeof(tHalBcnMissRateReqParams),
30479 &pSendBuffer, &usDataOffset, &usSendSize)) ||
30480 ( usSendSize < (usDataOffset + sizeof(tHalBcnMissRateReqParams))))
30481 {
30482 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
30483 "Unable to get send buffer in get WDI_GET_BCN_MISS_RATE_REQ %p",
30484 pEventData);
30485 WDI_ASSERT(0);
30486 return WDI_STATUS_E_FAILURE;
30487 }
30488
30489 pWDICtx->wdiReqStatusCB = NULL;
30490 pWDICtx->pReqStatusUserData = pEventData->pUserData;
30491
30492 halBcnMissRateReq.bssIdx = ucCurrentBSSSesIdx;
30493
30494 wpalMemoryCopy( pSendBuffer+usDataOffset,
30495 &halBcnMissRateReq,
30496 sizeof(tHalBcnMissRateReqParams));
30497 /*-------------------------------------------------------------------------
30498 Send Get STA Request to HAL
30499 -------------------------------------------------------------------------*/
30500 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize, wdiGetBcnMissRateCb,
30501 pEventData->pUserData, WDI_GET_BCN_MISS_RATE_RSP);
30502}
30503
30504/**
30505 @brief WDI_GetBcnMissRate
30506
30507 @param pUserData: user data will be passed back with the
30508 callback
30509 WDI_GetBcnMissRateCb: callback for passing back the response
30510 of the get stats operation received from the device
30511 bssid: bssid, to send bssIdx to FW
30512
30513 @return SUCCESS or FAIL
30514*/
30515WDI_Status WDI_GetBcnMissRate( void *pUserData,
30516 WDI_GetBcnMissRateCb wdiGetBcnMissRateCb,
30517 tANI_U8 *bssid )
30518{
30519 WDI_EventInfoType wdiEventData;
30520
30521 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
30522
30523 /*------------------------------------------------------------------------
30524 Sanity Check
30525 ------------------------------------------------------------------------*/
30526 if ( eWLAN_PAL_FALSE == gWDIInitialized )
30527 {
30528 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
30529 "WDI API call before module is initialized - Fail request");
30530
30531 return WDI_STATUS_E_NOT_ALLOWED;
30532 }
30533
30534 /*------------------------------------------------------------------------
30535 Fill in Event data and post to the Main FSM
30536 ------------------------------------------------------------------------*/
30537 wdiEventData.wdiRequest = WDI_GET_BCN_MISS_RATE_REQ;
30538 wdiEventData.pEventData = bssid;
30539 wdiEventData.uEventDataSize = sizeof(tSirMacAddr);
30540 wdiEventData.pCBfnc = wdiGetBcnMissRateCb;
30541 wdiEventData.pUserData = pUserData;
30542
30543 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
30544}
Sunil Duttbd736ed2014-05-26 21:19:41 +053030545#ifdef WLAN_FEATURE_LINK_LAYER_STATS
30546
30547/**
30548 @brief WDI_LLStatsSetReq
30549 This API is called to set link layer stats request in FW
30550
30551 @param pwdiLLStatsSetReqParams : pointer to set link layer request params
30552 wdiLLStatsSetRspCb : set link layer stats resp callback
30553 usrData : Client context
30554 @see
30555 @return SUCCESS or FAIL
30556*/
30557WDI_Status
30558WDI_LLStatsSetReq(WDI_LLStatsSetReqType* pwdiLLStatsSetReqParams,
30559 WDI_LLStatsSetRspCb wdiLLStatsSetRspCb,
30560 void* pUserData)
30561{
30562 WDI_EventInfoType wdiEventData;
30563
30564 /*------------------------------------------------------------------------
30565 Sanity Check
30566 ------------------------------------------------------------------------*/
30567 if ( eWLAN_PAL_FALSE == gWDIInitialized )
30568 {
30569 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
30570 "WDI API call before module is initialized - Fail request");
30571
30572 return WDI_STATUS_E_NOT_ALLOWED;
30573 }
30574
30575 wdiEventData.wdiRequest = WDI_LL_STATS_SET_REQ;
30576 wdiEventData.pEventData = pwdiLLStatsSetReqParams;
30577 wdiEventData.uEventDataSize = sizeof(*pwdiLLStatsSetReqParams);
30578 wdiEventData.pCBfnc = wdiLLStatsSetRspCb;
30579 wdiEventData.pUserData = pUserData;
30580
30581 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
30582}
30583
30584/**
30585 @brief WDI_ProcessLLStatsSetReq -
30586 Set Link Layer Stats request to FW
30587
30588 @param pWDICtx : wdi context
30589 pEventData : indication data
30590
30591 @see
30592 @return none
30593*/
30594WDI_Status
30595WDI_ProcessLLStatsSetReq
30596(
30597 WDI_ControlBlockType* pWDICtx,
30598 WDI_EventInfoType* pEventData
30599)
30600{
30601 WDI_LLStatsSetReqType* pwdiLLStatsSetReqParams;
30602 WDI_LLStatsSetRspCb wdiLLStatsSetCb;
30603 wpt_uint8* pSendBuffer = NULL;
30604 wpt_uint16 usSendSize = 0;
30605 wpt_uint16 usDataOffset = 0;
30606 tHalMacLlSetStatsReqParams halLLStatsSetParams;
30607
30608 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
30609 ( NULL == pEventData->pCBfnc ))
30610 {
30611 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
30612 "%s: Invalid parameters", __func__);
30613 WDI_ASSERT(0);
30614 return WDI_STATUS_E_FAILURE;
30615 }
30616
30617 pwdiLLStatsSetReqParams = (WDI_LLStatsSetReqType*)pEventData->pEventData;
30618 wdiLLStatsSetCb = (WDI_LLStatsSetRspCb)pEventData->pCBfnc;
30619
30620 /*-----------------------------------------------------------------------
30621 Get message buffer
30622 ! TO DO : proper conversion into the HAL Message Request Format
30623 -----------------------------------------------------------------------*/
30624 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
30625 pWDICtx,
30626 WDI_LL_STATS_SET_REQ,
30627 sizeof(tHalMacLlSetStatsReqParams),
30628 &pSendBuffer, &usDataOffset,
30629 &usSendSize))||
30630 ( usSendSize < (usDataOffset + sizeof(halLLStatsSetParams) )))
30631 {
30632 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
30633 "Unable to get send buffer in %s %p %p %p", __func__,
30634 pEventData, pwdiLLStatsSetReqParams, wdiLLStatsSetCb);
30635 WDI_ASSERT(0);
30636 return WDI_STATUS_E_FAILURE;
30637 }
30638
30639
30640
30641 halLLStatsSetParams.req_id = pwdiLLStatsSetReqParams->reqId;
30642 halLLStatsSetParams.sta_id = pwdiLLStatsSetReqParams->staId;
30643 halLLStatsSetParams.mpdu_size_threshold =
30644 pwdiLLStatsSetReqParams->mpduSizeThreshold;
30645 halLLStatsSetParams.aggressive_statistics_gathering =
30646 pwdiLLStatsSetReqParams->aggressiveStatisticsGathering;
30647
30648 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
30649 " halLLStatsSetParams.req_id = %u",
30650 halLLStatsSetParams.req_id);
30651 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
30652 " halLLStatsSetParams.sta_id = %u",
30653 halLLStatsSetParams.sta_id);
30654 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
30655 " halLLStatsSetParams.mpdu_size_threshold = %u",
30656 halLLStatsSetParams.mpdu_size_threshold);
30657 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
30658 " halLLStatsSetParams.aggressive_statistics_gathering = %u",
30659 halLLStatsSetParams.aggressive_statistics_gathering);
30660
30661 wpalMemoryCopy(pSendBuffer+usDataOffset,
30662 &halLLStatsSetParams,
30663 sizeof(halLLStatsSetParams));
30664
30665 pWDICtx->pReqStatusUserData = pEventData->pUserData;
30666
30667 /*-------------------------------------------------------------------------
30668 Send Clear Link Layer Stats Request to HAL
30669 -------------------------------------------------------------------------*/
30670 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
30671 wdiLLStatsSetCb, pEventData->pUserData,
30672 WDI_LL_STATS_SET_RSP);
30673}
30674
30675/**
30676 @brief WDI_LLStatsGetReq
30677 This API is called to get link layer stats request in FW
30678
30679 @param pwdiLLStatsGetReqParams : pointer to set link layer request params
30680 wdiLLStatsGetRspCb : get link layer stats resp callback
30681 usrData : Client context
30682 @see
30683 @return SUCCESS or FAIL
30684*/
30685WDI_Status
30686WDI_LLStatsGetReq(WDI_LLStatsGetReqType* pwdiLLStatsGetReqParams,
30687 WDI_LLStatsGetRspCb wdiLLStatsGetRspCb,
30688 void* pUserData)
30689{
30690 WDI_EventInfoType wdiEventData;
30691
30692 /*------------------------------------------------------------------------
30693 Sanity Check
30694 ------------------------------------------------------------------------*/
30695 if ( eWLAN_PAL_FALSE == gWDIInitialized )
30696 {
30697 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
30698 "WDI API call before module is initialized - Fail request");
30699
30700 return WDI_STATUS_E_NOT_ALLOWED;
30701 }
30702
30703 wdiEventData.wdiRequest = WDI_LL_STATS_GET_REQ;
30704 wdiEventData.pEventData = pwdiLLStatsGetReqParams;
30705 wdiEventData.uEventDataSize = sizeof(*pwdiLLStatsGetReqParams);
30706 wdiEventData.pCBfnc = wdiLLStatsGetRspCb;
30707 wdiEventData.pUserData = pUserData;
30708
30709 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
30710}
30711
30712/**
30713 @brief WDI_ProcessLLStatsGetReq -
30714 Get Link Layer Stats request to FW
30715
30716 @param pWDICtx : wdi context
30717 pEventData : indication data
30718
30719 @see
30720 @return none
30721*/
30722WDI_Status
30723WDI_ProcessLLStatsGetReq
30724(
30725 WDI_ControlBlockType* pWDICtx,
30726 WDI_EventInfoType* pEventData
30727)
30728{
30729 WDI_LLStatsGetReqType* pwdiLLStatsGetReqParams;
30730 WDI_LLStatsGetRspCb wdiLLStatsGetCb;
30731 wpt_uint8* pSendBuffer = NULL;
30732 wpt_uint16 usSendSize = 0;
30733 wpt_uint16 usDataOffset = 0;
30734 tHalMacLlGetStatsReqParams halLLStatsGetParams;
30735
30736 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
30737 ( NULL == pEventData->pCBfnc ))
30738 {
30739 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
30740 "%s: Invalid parameters", __func__);
30741 WDI_ASSERT(0);
30742 return WDI_STATUS_E_FAILURE;
30743 }
30744
30745 pwdiLLStatsGetReqParams = (WDI_LLStatsGetReqType*)pEventData->pEventData;
30746 wdiLLStatsGetCb = (WDI_LLStatsGetRspCb)pEventData->pCBfnc;
30747
30748 /*-----------------------------------------------------------------------
30749 Get message buffer
30750 ! TO DO : proper conversion into the HAL Message Request Format
30751 -----------------------------------------------------------------------*/
30752 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
30753 pWDICtx,
30754 WDI_LL_STATS_GET_REQ,
30755 sizeof(tHalMacLlGetStatsReqParams),
30756 &pSendBuffer, &usDataOffset,
30757 &usSendSize))||
30758 ( usSendSize < (usDataOffset + sizeof(halLLStatsGetParams) )))
30759 {
30760 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
30761 "Unable to get send buffer in %s %p %p %p", __func__,
30762 pEventData, pwdiLLStatsGetReqParams, wdiLLStatsGetCb);
30763 WDI_ASSERT(0);
30764 return WDI_STATUS_E_FAILURE;
30765 }
30766
30767 halLLStatsGetParams.req_id = pwdiLLStatsGetReqParams->reqId;
30768 halLLStatsGetParams.sta_id = pwdiLLStatsGetReqParams->staId;
30769 halLLStatsGetParams.param_id_mask = pwdiLLStatsGetReqParams->paramIdMask;
30770
30771 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
30772 " halLLStatsGetParams.req_id = %u",
30773 halLLStatsGetParams.req_id);
30774 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
30775 " halLLStatsGetParams.staId = %u",
30776 halLLStatsGetParams.sta_id);
30777 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
30778 " halLLStatsGetParams.Mask = %u",
30779 halLLStatsGetParams.param_id_mask);
30780
30781 wpalMemoryCopy(pSendBuffer+usDataOffset,
30782 &halLLStatsGetParams,
30783 sizeof(halLLStatsGetParams));
30784
30785 pWDICtx->pReqStatusUserData = pEventData->pUserData;
30786
30787 /*-------------------------------------------------------------------------
30788 Send Clear Link Layer Stats Request to HAL
30789 -------------------------------------------------------------------------*/
30790 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
30791 wdiLLStatsGetCb, pEventData->pUserData,
30792 WDI_LL_STATS_GET_RSP);
30793}
30794
30795/**
30796 @brief WDI_LLStatsClearReq
30797 This API is called to clear link layer stats request in FW
30798
30799 @param pwdiLLStatsClearReqParams : pointer to clear link layer request params
30800 wdiLLStatsSetRspCb : clear link layer stats resp callback
30801 usrData : Client context
30802 @see
30803 @return SUCCESS or FAIL
30804*/
30805WDI_Status
30806WDI_LLStatsClearReq(WDI_LLStatsClearReqType* pwdiLLStatsClearReqParams,
30807 WDI_LLStatsClearRspCb wdiLLStatsClearRspCb,
30808 void* pUserData)
30809{
30810 WDI_EventInfoType wdiEventData;
30811
30812 /*------------------------------------------------------------------------
30813 Sanity Check
30814 ------------------------------------------------------------------------*/
30815 if ( eWLAN_PAL_FALSE == gWDIInitialized )
30816 {
30817 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
30818 "WDI API call before module is initialized - Fail request");
30819
30820 return WDI_STATUS_E_NOT_ALLOWED;
30821 }
30822
30823 wdiEventData.wdiRequest = WDI_LL_STATS_CLEAR_REQ;
30824 wdiEventData.pEventData = pwdiLLStatsClearReqParams;
30825 wdiEventData.uEventDataSize = sizeof(*pwdiLLStatsClearReqParams);
30826 wdiEventData.pCBfnc = wdiLLStatsClearRspCb;
30827 wdiEventData.pUserData = pUserData;
30828
30829 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
30830 "%s:%d Enter", __func__, __LINE__);
30831
30832 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
30833}
30834
30835/**
30836 @brief WDI_ProcessLLStatsClearReq -
30837 Clear Link Layer Stats request to FW
30838
30839 @param pWDICtx : wdi context
30840 pEventData : indication data
30841
30842 @see
30843 @return none
30844*/
30845WDI_Status
30846WDI_ProcessLLStatsClearReq
30847(
30848 WDI_ControlBlockType* pWDICtx,
30849 WDI_EventInfoType* pEventData
30850)
30851{
30852 WDI_LLStatsClearReqType* pwdiLLStatsClearReqParams;
30853 WDI_LLStatsClearRspCb wdiLLStatsClearCb;
30854 wpt_uint8* pSendBuffer = NULL;
30855 wpt_uint16 usSendSize = 0;
30856 wpt_uint16 usDataOffset = 0;
30857 tHalMacLlClearStatsReqParams halLLStatsClearParams;
30858
30859 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
30860 ( NULL == pEventData->pCBfnc ))
30861 {
30862 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
30863 "%s: Invalid parameters", __func__);
30864 WDI_ASSERT(0);
30865 return WDI_STATUS_E_FAILURE;
30866 }
30867
30868 pwdiLLStatsClearReqParams = (WDI_LLStatsClearReqType*)pEventData->pEventData;
30869 wdiLLStatsClearCb = (WDI_LLStatsClearRspCb)pEventData->pCBfnc;
30870
30871 /*-----------------------------------------------------------------------
30872 Get message buffer
30873 ! TO DO : proper conversion into the HAL Message Request Format
30874 -----------------------------------------------------------------------*/
30875 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
30876 pWDICtx,
30877 WDI_LL_STATS_CLEAR_REQ,
30878 sizeof(tHalMacLlClearStatsReqParams),
30879 &pSendBuffer, &usDataOffset,
30880 &usSendSize))||
30881 ( usSendSize < (usDataOffset + sizeof(halLLStatsClearParams) )))
30882 {
30883 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
30884 "Unable to get send buffer in %s %p %p %p", __func__,
30885 pEventData, pwdiLLStatsClearReqParams, wdiLLStatsClearCb);
30886 WDI_ASSERT(0);
30887 return WDI_STATUS_E_FAILURE;
30888 }
30889
30890 halLLStatsClearParams.req_id = pwdiLLStatsClearReqParams->reqId;
30891 halLLStatsClearParams.sta_id = pwdiLLStatsClearReqParams->staId;
30892 halLLStatsClearParams.stats_clear_req_mask =
30893 pwdiLLStatsClearReqParams->statsClearReqMask;
30894 halLLStatsClearParams.stop_req = pwdiLLStatsClearReqParams->stopReq;
30895
30896 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
30897 "%s:HAL req_id = %d", __func__, halLLStatsClearParams.req_id);
30898 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
30899 "%s: HAL sta_id = %d", __func__, halLLStatsClearParams.sta_id);
30900 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
30901 "%s: HAL stats_clear_req_mask = 0x%X", __func__,
30902 halLLStatsClearParams.stats_clear_req_mask);
30903 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
30904 "%s: HAL stop_req = %d", __func__, halLLStatsClearParams.stop_req);
30905
30906 wpalMemoryCopy(pSendBuffer+usDataOffset,
30907 &halLLStatsClearParams,
30908 sizeof(halLLStatsClearParams));
30909
30910 pWDICtx->pReqStatusUserData = pEventData->pUserData;
30911
30912 /*-------------------------------------------------------------------------
30913 Send Clear Link Layer Stats Request to HAL
30914 -------------------------------------------------------------------------*/
30915 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
30916 wdiLLStatsClearCb, pEventData->pUserData,
30917 WDI_LL_STATS_CLEAR_RSP);
30918}
30919#endif /* WLAN_FEATURE_LINK_LAYER_STATS */