blob: 3483dc54f7beccac19ef3724be7f54ad0a073a98 [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
Kalikinkar dhara1e83b772014-02-06 12:59:22 -0800170
Kanchanapally, Vidyullathaf9426e52013-12-24 17:28:54 +0530171};
Jeff Johnson295189b2012-06-20 16:38:30 -0700172
173/*--------------------------------------------------------------------------
174 WLAN DAL State Machine
175 --------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700176WPT_STATIC const WDI_MainFsmEntryType wdiMainFSM[WDI_MAX_ST] =
Jeff Johnson295189b2012-06-20 16:38:30 -0700177{
178 /*WDI_INIT_ST*/
179 {{
180 WDI_MainStart, /*WDI_START_EVENT*/
181 NULL, /*WDI_STOP_EVENT*/
182 WDI_MainReqBusy, /*WDI_REQUEST_EVENT*/
183 WDI_MainRspInit, /*WDI_RESPONSE_EVENT*/
184 WDI_MainClose, /*WDI_CLOSE_EVENT*/
185 WDI_MainShutdown /*WDI_SHUTDOWN_EVENT*/
186 }},
187
188 /*WDI_STARTED_ST*/
189 {{
190 WDI_MainStartStarted, /*WDI_START_EVENT*/
191 WDI_MainStopStarted, /*WDI_STOP_EVENT*/
192 WDI_MainReqStarted, /*WDI_REQUEST_EVENT*/
193 WDI_MainRsp, /*WDI_RESPONSE_EVENT*/
194 NULL, /*WDI_CLOSE_EVENT*/
195 WDI_MainShutdown /*WDI_SHUTDOWN_EVENT*/
196 }},
197
198 /*WDI_STOPPED_ST*/
199 {{
200 WDI_MainStart, /*WDI_START_EVENT*/
201 WDI_MainStopStopped, /*WDI_STOP_EVENT*/
202 NULL, /*WDI_REQUEST_EVENT*/
203 WDI_MainRsp, /*WDI_RESPONSE_EVENT*/
204 WDI_MainClose, /*WDI_CLOSE_EVENT*/
Madan Mohan Koyyalamudia2fc6412012-10-21 12:06:12 -0700205 WDI_MainShutdown /*WDI_SHUTDOWN_EVENT*/
Jeff Johnson295189b2012-06-20 16:38:30 -0700206 }},
207
208 /*WDI_BUSY_ST*/
209 {{
210 WDI_MainStartBusy, /*WDI_START_EVENT*/
211 WDI_MainStopBusy, /*WDI_STOP_EVENT*/
212 WDI_MainReqBusy, /*WDI_REQUEST_EVENT*/
213 WDI_MainRsp, /*WDI_RESPONSE_EVENT*/
214 WDI_MainCloseBusy, /*WDI_CLOSE_EVENT*/
215 WDI_MainShutdownBusy /*WDI_SHUTDOWN_EVENT*/
216 }}
217};
218
Jeff Johnsone7245742012-09-05 17:12:55 -0700219/*---------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -0700220 DAL Request Processing Array - the functions in this table will only be
221 called when the processing of the specific request is allowed by the
Jeff Johnsone7245742012-09-05 17:12:55 -0700222 Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -0700223 ---------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700224WDI_ReqProcFuncType pfnReqProcTbl[WDI_MAX_UMAC_IND] =
Jeff Johnson295189b2012-06-20 16:38:30 -0700225{
226 /*INIT*/
227 WDI_ProcessStartReq, /* WDI_START_REQ */
228 WDI_ProcessStopReq, /* WDI_STOP_REQ */
229 WDI_ProcessCloseReq, /* WDI_CLOSE_REQ */
230
231 /*SCAN*/
232 WDI_ProcessInitScanReq, /* WDI_INIT_SCAN_REQ */
233 WDI_ProcessStartScanReq, /* WDI_START_SCAN_REQ */
234 WDI_ProcessEndScanReq, /* WDI_END_SCAN_REQ */
235 WDI_ProcessFinishScanReq, /* WDI_FINISH_SCAN_REQ */
236
237 /*ASSOCIATION*/
238 WDI_ProcessJoinReq, /* WDI_JOIN_REQ */
239 WDI_ProcessConfigBSSReq, /* WDI_CONFIG_BSS_REQ */
240 WDI_ProcessDelBSSReq, /* WDI_DEL_BSS_REQ */
241 WDI_ProcessPostAssocReq, /* WDI_POST_ASSOC_REQ */
242 WDI_ProcessDelSTAReq, /* WDI_DEL_STA_REQ */
243
244 /* Security */
245 WDI_ProcessSetBssKeyReq, /* WDI_SET_BSS_KEY_REQ */
246 WDI_ProcessRemoveBssKeyReq, /* WDI_RMV_BSS_KEY_REQ */
247 WDI_ProcessSetStaKeyReq, /* WDI_SET_STA_KEY_REQ */
248 WDI_ProcessRemoveStaKeyReq, /* WDI_RMV_BSS_KEY_REQ */
249
250 /* QoS and BA APIs */
251 WDI_ProcessAddTSpecReq, /* WDI_ADD_TS_REQ */
252 WDI_ProcessDelTSpecReq, /* WDI_DEL_TS_REQ */
253 WDI_ProcessUpdateEDCAParamsReq, /* WDI_UPD_EDCA_PRMS_REQ */
254 WDI_ProcessAddBASessionReq, /* WDI_ADD_BA_SESSION_REQ */
255 WDI_ProcessDelBAReq, /* WDI_DEL_BA_REQ */
256
257 /* Miscellaneous Control APIs */
258 WDI_ProcessChannelSwitchReq, /* WDI_CH_SWITCH_REQ */
259 WDI_ProcessConfigStaReq, /* WDI_CONFIG_STA_REQ */
260 WDI_ProcessSetLinkStateReq, /* WDI_SET_LINK_ST_REQ */
261 WDI_ProcessGetStatsReq, /* WDI_GET_STATS_REQ */
262 WDI_ProcessUpdateCfgReq, /* WDI_UPDATE_CFG_REQ */
263
264 /*BA APIs*/
265 WDI_ProcessAddBAReq, /* WDI_ADD_BA_REQ */
266 WDI_ProcessTriggerBAReq, /* WDI_TRIGGER_BA_REQ */
267
268 /*Beacon processing APIs*/
269 WDI_ProcessUpdateBeaconParamsReq, /* WDI_UPD_BCON_PRMS_REQ */
270 WDI_ProcessSendBeaconParamsReq, /* WDI_SND_BCON_REQ */
271
272 WDI_ProcessUpdateProbeRspTemplateReq, /* WDI_UPD_PROBE_RSP_TEMPLATE_REQ */
273 WDI_ProcessSetStaBcastKeyReq, /* WDI_SET_STA_BCAST_KEY_REQ */
274 WDI_ProcessRemoveStaBcastKeyReq, /* WDI_RMV_STA_BCAST_KEY_REQ */
275 WDI_ProcessSetMaxTxPowerReq, /*WDI_SET_MAX_TX_POWER_REQ*/
Jeff Johnson295189b2012-06-20 16:38:30 -0700276 WDI_ProcessP2PGONOAReq, /* WDI_P2P_GO_NOTICE_OF_ABSENCE_REQ */
Jeff Johnson295189b2012-06-20 16:38:30 -0700277 /* PowerSave APIs */
278 WDI_ProcessEnterImpsReq, /* WDI_ENTER_IMPS_REQ */
279 WDI_ProcessExitImpsReq, /* WDI_EXIT_IMPS_REQ */
280 WDI_ProcessEnterBmpsReq, /* WDI_ENTER_BMPS_REQ */
281 WDI_ProcessExitBmpsReq, /* WDI_EXIT_BMPS_REQ */
282 WDI_ProcessEnterUapsdReq, /* WDI_ENTER_UAPSD_REQ */
283 WDI_ProcessExitUapsdReq, /* WDI_EXIT_UAPSD_REQ */
284 WDI_ProcessSetUapsdAcParamsReq, /* WDI_SET_UAPSD_PARAM_REQ */
285 WDI_ProcessUpdateUapsdParamsReq, /* WDI_UPDATE_UAPSD_PARAM_REQ */
286 WDI_ProcessConfigureRxpFilterReq, /* WDI_CONFIGURE_RXP_FILTER_REQ */
287 WDI_ProcessSetBeaconFilterReq, /* WDI_SET_BEACON_FILTER_REQ */
288 WDI_ProcessRemBeaconFilterReq, /* WDI_REM_BEACON_FILTER_REQ */
289 WDI_ProcessSetRSSIThresholdsReq, /* WDI_SET_RSSI_THRESHOLDS_REQ */
290 WDI_ProcessHostOffloadReq, /* WDI_HOST_OFFLOAD_REQ */
291 WDI_ProcessWowlAddBcPtrnReq, /* WDI_WOWL_ADD_BC_PTRN_REQ */
292 WDI_ProcessWowlDelBcPtrnReq, /* WDI_WOWL_DEL_BC_PTRN_REQ */
293 WDI_ProcessWowlEnterReq, /* WDI_WOWL_ENTER_REQ */
294 WDI_ProcessWowlExitReq, /* WDI_WOWL_EXIT_REQ */
295 WDI_ProcessConfigureAppsCpuWakeupStateReq, /* WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ */
296 /*NV Download APIs*/
297 WDI_ProcessNvDownloadReq, /* WDI_NV_DOWNLOAD_REQ*/
298 WDI_ProcessFlushAcReq, /* WDI_FLUSH_AC_REQ */
299 WDI_ProcessBtAmpEventReq, /* WDI_BTAMP_EVENT_REQ */
300#ifdef WLAN_FEATURE_VOWIFI_11R
301 WDI_ProcessAggrAddTSpecReq, /* WDI_AGGR_ADD_TS_REQ */
302#else
303 NULL,
304#endif /* WLAN_FEATURE_VOWIFI_11R */
305 WDI_ProcessAddSTASelfReq, /* WDI_ADD_STA_SELF_REQ */
306 WDI_ProcessDelSTASelfReq, /* WDI DEL STA SELF REQ */
Jeff Johnson295189b2012-06-20 16:38:30 -0700307 WDI_ProcessFTMCommandReq, /* WDI_FTM_CMD_REQ */
Jeff Johnsone7245742012-09-05 17:12:55 -0700308
309#ifdef FEATURE_OEM_DATA_SUPPORT
310 WDI_ProcessStartOemDataReq, /*WDI_START_OEM_DATA_REQ*/
311#else
Jeff Johnson295189b2012-06-20 16:38:30 -0700312 NULL,
Jeff Johnsone7245742012-09-05 17:12:55 -0700313#endif /*FEATURE_OEM_DATA_SUPPORT*/
Jeff Johnson295189b2012-06-20 16:38:30 -0700314 WDI_ProcessHostResumeReq, /*WDI_HOST_RESUME_REQ*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700315
316 WDI_ProcessKeepAliveReq, /* WDI_KEEP_ALIVE_REQ */
Jeff Johnson295189b2012-06-20 16:38:30 -0700317
318#ifdef FEATURE_WLAN_SCAN_PNO
319 WDI_ProcessSetPreferredNetworkReq, /* WDI_SET_PREF_NETWORK_REQ */
320 WDI_ProcessSetRssiFilterReq, /* WDI_SET_RSSI_FILTER_REQ */
321 WDI_ProcessUpdateScanParamsReq, /* WDI_UPDATE_SCAN_PARAMS_REQ */
322#else
323 NULL,
324 NULL,
325 NULL,
326#endif /* FEATURE_WLAN_SCAN_PNO */
327
328 WDI_ProcessSetTxPerTrackingReq, /* WDI_SET_TX_PER_TRACKING_REQ */
Jeff Johnsone7245742012-09-05 17:12:55 -0700329
Jeff Johnson295189b2012-06-20 16:38:30 -0700330#ifdef WLAN_FEATURE_PACKET_FILTERING
331 /* WDI_8023_MULTICAST_LIST_REQ */
Jeff Johnsone7245742012-09-05 17:12:55 -0700332 WDI_Process8023MulticastListReq,
Jeff Johnson295189b2012-06-20 16:38:30 -0700333 /* WDI_RECEIVE_FILTER_SET_FILTER_REQ */
Jeff Johnsone7245742012-09-05 17:12:55 -0700334 WDI_ProcessReceiveFilterSetFilterReq,
Jeff Johnson295189b2012-06-20 16:38:30 -0700335 /* WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ */
Jeff Johnsone7245742012-09-05 17:12:55 -0700336 WDI_ProcessFilterMatchCountReq,
Jeff Johnson295189b2012-06-20 16:38:30 -0700337 /* WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ */
Jeff Johnsone7245742012-09-05 17:12:55 -0700338 WDI_ProcessReceiveFilterClearFilterReq,
Jeff Johnson295189b2012-06-20 16:38:30 -0700339#else
340 NULL,
341 NULL,
342 NULL,
343 NULL,
344#endif // WLAN_FEATURE_PACKET_FILTERING
Jeff Johnsone7245742012-09-05 17:12:55 -0700345 WDI_ProcessInitScanReq, /* WDI_INIT_SCAN_CON_REQ */
Jeff Johnson295189b2012-06-20 16:38:30 -0700346 WDI_ProcessHALDumpCmdReq, /*WDI_HAL_DUMP_CMD_REQ */
347 WDI_ProcessShutdownReq, /* WDI_SHUTDOWN_REQ */
348
349 WDI_ProcessSetPowerParamsReq, /*WDI_SET_POWER_PARAMS_REQ*/
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -0800350#ifdef FEATURE_WLAN_ESE
Jeff Johnson295189b2012-06-20 16:38:30 -0700351 WDI_ProcessTSMStatsReq, /* WDI_TSM_STATS_REQ */
352#else
353 NULL,
354#endif
355
356#ifdef WLAN_FEATURE_GTK_OFFLOAD
357 WDI_ProcessGTKOffloadReq, /* WDI_GTK_OFFLOAD_REQ */
358 WDI_ProcessGTKOffloadGetInfoReq, /* WDI_GTK_OFFLOAD_GETINFO_REQ */
359#else
360 NULL,
361 NULL,
362#endif // WLAN_FEATURE_GTK_OFFLOAD
363
364 WDI_ProcessSetTmLevelReq, /*WDI_SET_TM_LEVEL_REQ*/
365 WDI_ProcessFeatureCapsExchangeReq, /* WDI_FEATURE_CAPS_EXCHANGE_REQ */
Mohit Khanna4a70d262012-09-11 16:30:12 -0700366#ifdef WLAN_FEATURE_11AC
367 WDI_ProcessUpdateVHTOpModeReq, /* WDI_UPDATE_VHT_OP_MODE_REQ */
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -0800368#else
369 NULL,
Mohit Khanna4a70d262012-09-11 16:30:12 -0700370#endif
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -0800371#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_ESE || defined(FEATURE_WLAN_LFR)
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -0800372 WDI_ProcessGetRoamRssiReq, /* WDI_GET_ROAM_RSSI_REQ */
373#else
schang86c22c42013-03-13 18:41:24 -0700374 NULL,
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -0800375#endif
schang86c22c42013-03-13 18:41:24 -0700376 WDI_ProcessSetTxPowerReq, /* WDI_SET_TX_POWER_REQ*/
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -0700377#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
Varun Reddy Yeturu920df212013-05-22 08:07:23 -0700378 WDI_ProcessRoamScanOffloadReq, /* WDI_ROAM_SCAN_OFFLOAD_REQ */
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -0700379#else
380 NULL,
381#endif /* WLAN_FEATURE_ROAM_SCAN_OFFLOAD */
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +0530382#ifdef FEATURE_WLAN_TDLS
383 WDI_ProcessTdlsLinkEstablishReq, /* WDI_TDLS_LINK_ESTABLISH_REQ */
384#else
385 NULL,
386#endif
Leo Chang9056f462013-08-01 19:21:11 -0700387#ifdef FEATURE_WLAN_LPHB
388 WDI_ProcessLPHBConfReq, /* WDI_LPHB_CFG_REQ */
389#else
390 NULL,
391#endif /* FEATURE_WLAN_LPHB */
Rajeev79dbe4c2013-10-05 11:03:42 +0530392
393#ifdef FEATURE_WLAN_BATCH_SCAN
394 WDI_ProcessSetBatchScanReq, /* WDI_SET_BATCH_SCAN_REQ */
395#else
396 NULL,
397#endif /* FEATURE_WLAN_BATCH_SCAN */
398
Arif Hussaina5ebce02013-08-09 15:09:58 -0700399 WDI_ProcessSetMaxTxPowerPerBandReq, /* WDI_SET_MAX_TX_POWER_PER_BAND_REQ*/
Manjunathappa Prakash86f78ca2014-02-10 18:09:15 -0800400
401 WDI_ProcessUpdateChannelParamsReq, /* WDI_UPDATE_CHAN_REQ */
schang86c22c42013-03-13 18:41:24 -0700402 /*-------------------------------------------------------------------------
403 Indications
404 -------------------------------------------------------------------------*/
Jeff Johnson295189b2012-06-20 16:38:30 -0700405 WDI_ProcessHostSuspendInd, /* WDI_HOST_SUSPEND_IND*/
Madan Mohan Koyyalamudi01cba042013-01-10 21:56:05 -0800406 WDI_ProcessTrafficStatsInd, /* WDI_TRAFFIC_STATS_IND*/
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +0530407 WDI_ProcessDHCPStartInd, /* WDI_DHCP_START_IND*/
408 WDI_ProcessDHCPStopInd, /* WDI_DHCP_STOP_IND*/
Chet Lanctot186b5732013-03-18 10:26:30 -0700409#ifdef WLAN_FEATURE_11W
410 WDI_ProcessExcludeUnencryptInd, /* WDI_EXCLUDE_UNENCRYPTED_IND */
411#else
412 NULL,
413#endif
Yue Mab9c86f42013-08-14 15:59:08 -0700414 WDI_ProcessAddPeriodicTxPtrnInd, /* WDI_ADD_PERIODIC_TX_PATTERN_IND */
415 WDI_ProcessDelPeriodicTxPtrnInd, /* WDI_DEL_PERIODIC_TX_PATTERN_IND */
Rajeev79dbe4c2013-10-05 11:03:42 +0530416#ifdef FEATURE_WLAN_BATCH_SCAN
417 WDI_ProcessStopBatchScanInd, /* WDI_STOP_BATCH_SCAN_IND */
418 WDI_ProcessTriggerBatchScanResultInd, /* WDI_TRIGGER_BATCH_SCAN_RESULT_IND */
419#else
420 NULL,
421 NULL,
422#endif /* FEATURE_WLAN_BATCH_SCAN */
Chittajit Mitraf5413a42013-10-18 14:20:08 -0700423 WDI_ProcessRateUpdateInd, /* WDI_RATE_UPDATE_IND */
Kalikinkar dhara1e83b772014-02-06 12:59:22 -0800424
Sandeep Puligilla8b8b74b2014-02-10 16:39:05 +0530425 WDI_ProcessHT40OBSSScanInd, /*WDI_START_HT40_OBSS_SCAN_IND */
Kalikinkar dhara1e83b772014-02-06 12:59:22 -0800426 WDI_ProcessHT40OBSSStopScanInd, /*WDI_STOP_HT40_OBSS_SCAN_IND */
427
428 WDI_ProcessChannelSwitchReq_V1, /* WDI_CH_SWITCH_REQ_V1*/
Sandeep Puligilla8b8b74b2014-02-10 16:39:05 +0530429
Jeff Johnson295189b2012-06-20 16:38:30 -0700430};
431
432
Jeff Johnsone7245742012-09-05 17:12:55 -0700433/*---------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -0700434 DAL Request Processing Array - the functions in this table will only be
435 called when the processing of the specific request is allowed by the
Jeff Johnsone7245742012-09-05 17:12:55 -0700436 Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -0700437 ---------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700438WDI_RspProcFuncType pfnRspProcTbl[WDI_MAX_RESP] =
Jeff Johnson295189b2012-06-20 16:38:30 -0700439{
440 /*INIT*/
441 WDI_ProcessStartRsp, /* WDI_START_RESP */
442 WDI_ProcessStopRsp, /* WDI_STOP_RESP */
443 WDI_ProcessCloseRsp, /* WDI_CLOSE_RESP */
444
445 /*SCAN*/
446 WDI_ProcessInitScanRsp, /* WDI_INIT_SCAN_RESP */
447 WDI_ProcessStartScanRsp, /* WDI_START_SCAN_RESP */
448 WDI_ProcessEndScanRsp, /* WDI_END_SCAN_RESP */
449 WDI_ProcessFinishScanRsp, /* WDI_FINISH_SCAN_RESP */
450
451 /* ASSOCIATION*/
452 WDI_ProcessJoinRsp, /* WDI_JOIN_RESP */
453 WDI_ProcessConfigBSSRsp, /* WDI_CONFIG_BSS_RESP */
454 WDI_ProcessDelBSSRsp, /* WDI_DEL_BSS_RESP */
455 WDI_ProcessPostAssocRsp, /* WDI_POST_ASSOC_RESP */
456 WDI_ProcessDelSTARsp, /* WDI_DEL_STA_RESP */
457
458 /* Security */
459 WDI_ProcessSetBssKeyRsp, /* WDI_SET_BSS_KEY_RESP */
460 WDI_ProcessRemoveBssKeyRsp, /* WDI_RMV_BSS_KEY_RESP */
461 WDI_ProcessSetStaKeyRsp, /* WDI_SET_STA_KEY_RESP */
462 WDI_ProcessRemoveStaKeyRsp, /* WDI_RMV_BSS_KEY_RESP */
463
464 /* QoS and BA APIs */
465 WDI_ProcessAddTSpecRsp, /* WDI_ADD_TS_RESP */
466 WDI_ProcessDelTSpecRsp, /* WDI_DEL_TS_RESP */
467 WDI_ProcessUpdateEDCAParamsRsp, /* WDI_UPD_EDCA_PRMS_RESP */
468 WDI_ProcessAddBASessionRsp, /* WDI_ADD_BA_SESSION_RESP */
469 WDI_ProcessDelBARsp, /* WDI_DEL_BA_RESP */
470
471 /* Miscellaneous Control APIs */
472 WDI_ProcessChannelSwitchRsp, /* WDI_CH_SWITCH_RESP */
473 WDI_ProcessConfigStaRsp, /* WDI_CONFIG_STA_RESP */
474 WDI_ProcessSetLinkStateRsp, /* WDI_SET_LINK_ST_RESP */
475 WDI_ProcessGetStatsRsp, /* WDI_GET_STATS_RESP */
476 WDI_ProcessUpdateCfgRsp, /* WDI_UPDATE_CFG_RESP */
477
478 /* BA APIs*/
479 WDI_ProcessAddBARsp, /* WDI_ADD_BA_RESP */
480 WDI_ProcessTriggerBARsp, /* WDI_TRIGGER_BA_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700481
Jeff Johnson295189b2012-06-20 16:38:30 -0700482 /* IBSS APIs*/
483 WDI_ProcessUpdateBeaconParamsRsp, /* WDI_UPD_BCON_PRMS_RSP */
484 WDI_ProcessSendBeaconParamsRsp, /* WDI_SND_BCON_RSP */
485
486 /*Soft AP APIs*/
487 WDI_ProcessUpdateProbeRspTemplateRsp,/*WDI_UPD_PROBE_RSP_TEMPLATE_RESP */
488 WDI_ProcessSetStaBcastKeyRsp, /*WDI_SET_STA_BCAST_KEY_RESP */
489 WDI_ProcessRemoveStaBcastKeyRsp, /*WDI_RMV_STA_BCAST_KEY_RESP */
490 WDI_ProcessSetMaxTxPowerRsp, /*WDI_SET_MAX_TX_POWER_RESP */
491
492 /* PowerSave APIs */
493 WDI_ProcessEnterImpsRsp, /* WDI_ENTER_IMPS_RESP */
494 WDI_ProcessExitImpsRsp, /* WDI_EXIT_IMPS_RESP */
495 WDI_ProcessEnterBmpsRsp, /* WDI_ENTER_BMPS_RESP */
496 WDI_ProcessExitBmpsRsp, /* WDI_EXIT_BMPS_RESP */
497 WDI_ProcessEnterUapsdRsp, /* WDI_ENTER_UAPSD_RESP */
498 WDI_ProcessExitUapsdRsp, /* WDI_EXIT_UAPSD_RESP */
499 WDI_ProcessSetUapsdAcParamsRsp, /* WDI_SET_UAPSD_PARAM_RESP */
500 WDI_ProcessUpdateUapsdParamsRsp, /* WDI_UPDATE_UAPSD_PARAM_RESP */
501 WDI_ProcessConfigureRxpFilterRsp,/* WDI_CONFIGURE_RXP_FILTER_RESP */
502 WDI_ProcessSetBeaconFilterRsp, /* WDI_SET_BEACON_FILTER_RESP */
503 WDI_ProcessRemBeaconFilterRsp, /* WDI_REM_BEACON_FILTER_RESP */
504 WDI_ProcessSetRSSIThresoldsRsp, /* WDI_SET_RSSI_THRESHOLDS_RESP */
505 WDI_ProcessHostOffloadRsp, /* WDI_HOST_OFFLOAD_RESP */
506 WDI_ProcessWowlAddBcPtrnRsp, /* WDI_WOWL_ADD_BC_PTRN_RESP */
507 WDI_ProcessWowlDelBcPtrnRsp, /* WDI_WOWL_DEL_BC_PTRN_RESP */
508 WDI_ProcessWowlEnterRsp, /* WDI_WOWL_ENTER_RESP */
509 WDI_ProcessWowlExitRsp, /* WDI_WOWL_EXIT_RESP */
510 WDI_ProcessConfigureAppsCpuWakeupStateRsp, /* WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700511
Jeff Johnson295189b2012-06-20 16:38:30 -0700512
513 WDI_ProcessNvDownloadRsp, /* WDI_NV_DOWNLOAD_RESP*/
514
515 WDI_ProcessFlushAcRsp, /* WDI_FLUSH_AC_RESP */
516 WDI_ProcessBtAmpEventRsp, /* WDI_BTAMP_EVENT_RESP */
517#ifdef WLAN_FEATURE_VOWIFI_11R
518 WDI_ProcessAggrAddTSpecRsp, /* WDI_AGGR_ADD_TS_RESP */
519#else
520 NULL,
521#endif /* WLAN_FEATURE_VOWIFI_11R */
522 WDI_ProcessAddSTASelfRsp, /* WDI_ADD_STA_SELF_RESP */
523 WDI_ProcessDelSTASelfRsp, /* WDI_DEL_STA_SELF_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700524#ifdef FEATURE_OEM_DATA_SUPPORT
525 WDI_ProcessStartOemDataRsp, /*WDI_START_OEM_DATA_RESP*/
526#else
Jeff Johnson295189b2012-06-20 16:38:30 -0700527 NULL,
Jeff Johnsone7245742012-09-05 17:12:55 -0700528#endif /*FEATURE_OEM_DATA_SUPPORT*/
Jeff Johnson295189b2012-06-20 16:38:30 -0700529 WDI_ProcessHostResumeRsp, /*WDI_HOST_RESUME_RESP*/
530
Jeff Johnson295189b2012-06-20 16:38:30 -0700531 WDI_ProcessP2PGONOARsp, /*WDI_P2P_GO_NOTICE_OF_ABSENCE_RESP */
Jeff Johnson295189b2012-06-20 16:38:30 -0700532
Jeff Johnson295189b2012-06-20 16:38:30 -0700533 WDI_ProcessFTMCommandRsp, /* WDI_FTM_CMD_RESP */
Jeff Johnson295189b2012-06-20 16:38:30 -0700534
Jeff Johnsone7245742012-09-05 17:12:55 -0700535 WDI_ProcessKeepAliveRsp, /* WDI_KEEP_ALIVE_RESP */
536
Jeff Johnson295189b2012-06-20 16:38:30 -0700537#ifdef FEATURE_WLAN_SCAN_PNO
538 WDI_ProcessSetPreferredNetworkRsp, /* WDI_SET_PREF_NETWORK_RESP */
539 WDI_ProcessSetRssiFilterRsp, /* WDI_SET_RSSI_FILTER_RESP */
540 WDI_ProcessUpdateScanParamsRsp, /* WDI_UPDATE_SCAN_PARAMS_RESP */
541#else
542 NULL,
543 NULL,
544 NULL,
545#endif // FEATURE_WLAN_SCAN_PNO
546
547 WDI_ProcessSetTxPerTrackingRsp, /* WDI_SET_TX_PER_TRACKING_RESP */
548
549 /*---------------------------------------------------------------------
550 Indications
551 ---------------------------------------------------------------------*/
552#ifdef WLAN_FEATURE_PACKET_FILTERING
553 /* WDI_8023_MULTICAST_LIST_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700554 WDI_Process8023MulticastListRsp,
Jeff Johnson295189b2012-06-20 16:38:30 -0700555 /* WDI_RECEIVE_FILTER_SET_FILTER_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700556 WDI_ProcessReceiveFilterSetFilterRsp,
Jeff Johnson295189b2012-06-20 16:38:30 -0700557 /* WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700558 WDI_ProcessFilterMatchCountRsp,
Jeff Johnson295189b2012-06-20 16:38:30 -0700559 /* WDI_RECEIVE_FILTER_CLEAR_FILTER_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700560 WDI_ProcessReceiveFilterClearFilterRsp,
Jeff Johnson295189b2012-06-20 16:38:30 -0700561#else
562 NULL,
563 NULL,
564 NULL,
565 NULL,
566#endif // WLAN_FEATURE_PACKET_FILTERING
567
568 WDI_ProcessHALDumpCmdRsp, /* WDI_HAL_DUMP_CMD_RESP */
569 WDI_ProcessShutdownRsp, /* WDI_SHUTDOWN_RESP */
570
571 WDI_ProcessSetPowerParamsRsp, /*WDI_SET_POWER_PARAMS_RESP*/
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -0800572#ifdef FEATURE_WLAN_ESE
Jeff Johnson295189b2012-06-20 16:38:30 -0700573 WDI_ProcessTsmStatsRsp, /* WDI_TSM_STATS_RESP */
574#else
575 NULL,
576#endif
577
578#ifdef WLAN_FEATURE_GTK_OFFLOAD
Jeff Johnsone7245742012-09-05 17:12:55 -0700579 WDI_ProcessGtkOffloadRsp, /* WDI_GTK_OFFLOAD_RESP */
580 WDI_ProcessGTKOffloadGetInfoRsp, /* WDI_GTK_OFFLOAD_GETINFO_RESP */
Jeff Johnson295189b2012-06-20 16:38:30 -0700581#else
582 NULL,
583 NULL,
584#endif // WLAN_FEATURE_GTK_OFFLOAD
Jeff Johnsone7245742012-09-05 17:12:55 -0700585 WDI_ProcessSetTmLevelRsp, /* WDI_SET_TM_LEVEL_RESP */
586 WDI_ProcessFeatureCapsExchangeRsp, /* WDI_FEATURE_CAPS_EXCHANGE_RESP */
Mohit Khanna4a70d262012-09-11 16:30:12 -0700587#ifdef WLAN_FEATURE_11AC
588 WDI_ProcessUpdateVHTOpModeRsp, /* WDI_UPDATE_VHT_OP_MODE_RESP */
schang86c22c42013-03-13 18:41:24 -0700589#else
590 NULL,
Mohit Khanna4a70d262012-09-11 16:30:12 -0700591#endif
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -0800592#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_ESE || defined(FEATURE_WLAN_LFR)
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -0800593 WDI_ProcessGetRoamRssiRsp, /* WDI_GET_ROAM_RSSI_RESP */
594#else
595 NULL,
596#endif
schang86c22c42013-03-13 18:41:24 -0700597 WDI_ProcessSetTxPowerRsp, /* WDI_SET_TX_POWER_RESP */
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -0700598#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
Varun Reddy Yeturu920df212013-05-22 08:07:23 -0700599 WDI_ProcessRoamScanOffloadRsp, /* WDI_ROAM_SCAN_OFFLOAD_RESP */
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -0700600#else
601 NULL,
602#endif
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +0530603#ifdef FEATURE_WLAN_TDLS
604 WDI_ProcessLinkEstablishReqRsp, /*WDI_TDLS_LINK_ESTABLISH_REQ_RESP*/
605#else
606 NULL,
607#endif
Leo Chang9056f462013-08-01 19:21:11 -0700608#ifdef FEATURE_WLAN_LPHB
609 WDI_ProcessLphbCfgRsp, /* WDI_LPHB_CFG_RESP */
610#else
611 NULL,
612#endif /* FEATURE_WLAN_LPHB */
Rajeev79dbe4c2013-10-05 11:03:42 +0530613
614#ifdef FEATURE_WLAN_BATCH_SCAN
615 WDI_ProcessSetBatchScanRsp, /* WDI_SET_BATCH_SCAN_RESP */
616#else
617 NULL,
618#endif /*FEATURE_WLAN_BATCH_SCAN*/
Arif Hussain935a8fb2014-01-31 12:12:28 -0800619 WDI_ProcessSetMaxTxPowerPerBandRsp, /* WDI_SET_MAX_TX_POWER_PER_BAND_RSP */
Rajeev79dbe4c2013-10-05 11:03:42 +0530620
Manjunathappa Prakash86f78ca2014-02-10 18:09:15 -0800621 WDI_ProcessUpdateChanRsp, /* WDI_UPDATE_CHAN_RESP */
622
Kalikinkar dhara1e83b772014-02-06 12:59:22 -0800623 WDI_ProcessChannelSwitchRsp_V1, /* WDI_CH_SWITCH_RESP_V1 */
624
Jeff Johnson295189b2012-06-20 16:38:30 -0700625 /*---------------------------------------------------------------------
626 Indications
627 ---------------------------------------------------------------------*/
628 WDI_ProcessLowRSSIInd, /* Just threshold crossing not really low WDI_HAL_RSSI_NOTIFICATION_IND */
629 WDI_ProcessMissedBeaconInd, /* WDI_HAL_MISSED_BEACON_IND */
630 WDI_ProcessUnkAddrFrameInd, /* WDI_HAL_UNKNOWN_ADDR2_FRAME_RX_IND */
631 WDI_ProcessMicFailureInd, /* WDI_HAL_MIC_FAILURE_IND */
632 WDI_ProcessFatalErrorInd, /* WDI_HAL_FATAL_ERROR_IND */
633 WDI_ProcessDelSTAInd, /* WDI_HAL_DEL_STA_IND */
634
635 WDI_ProcessCoexInd, /* WDI_HAL_COEX_IND */
636
637 WDI_ProcessTxCompleteInd, /* WDI_HAL_TX_COMPLETE_IND */
638
Jeff Johnson295189b2012-06-20 16:38:30 -0700639 WDI_ProcessP2pNoaAttrInd, /*WDI_HOST_NOA_ATTR_IND*/
Jeff Johnson295189b2012-06-20 16:38:30 -0700640
641#ifdef FEATURE_WLAN_SCAN_PNO
642 WDI_ProcessPrefNetworkFoundInd, /* WDI_HAL_PREF_NETWORK_FOUND_IND */
643#else
644 NULL,
645#endif // FEATURE_WLAN_SCAN_PNO
646
647#ifdef WLAN_WAKEUP_EVENTS
648 WDI_ProcessWakeReasonInd, /* WDI_WAKE_REASON_IND */
649#else // WLAN_WAKEUP_EVENTS
650 NULL,
651#endif // WLAN_WAKEUP_EVENTS
652
653 WDI_ProcessTxPerHitInd, /* WDI_HAL_TX_PER_HIT_IND */
Viral Modid86bde22012-12-10 13:09:21 -0800654
Viral Modid86bde22012-12-10 13:09:21 -0800655 WDI_ProcessP2pNoaStartInd, /* WDI_NOA_START_IND */
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +0530656#ifdef FEATURE_WLAN_TDLS
657 WDI_ProcessTdlsInd, /* WDI_HAL_TDLS_IND */
658#else
659 NULL,
660#endif
Leo Chang9056f462013-08-01 19:21:11 -0700661
662#ifdef FEATURE_WLAN_LPHB
Leo Changd9df8aa2013-09-26 13:32:26 -0700663 WDI_ProcessLphbInd, /* WDI_HAL_LPHB_IND */
Leo Chang9056f462013-08-01 19:21:11 -0700664#else
665 NULL,
666#endif /* FEATURE_WLAN_LPHB */
Ravi Joshid2ca7c42013-07-23 08:37:49 -0700667
668 WDI_ProcessIbssPeerInactivityInd, /* WDI_HAL_IBSS_PEER_INACTIVITY_IND */
Yue Mab9c86f42013-08-14 15:59:08 -0700669
670 WDI_ProcessPeriodicTxPtrnFwInd, /* WDI_HAL_PERIODIC_TX_PTRN_FW_IND */
Rajeev79dbe4c2013-10-05 11:03:42 +0530671
672#ifdef FEATURE_WLAN_BATCH_SCAN
673 WDI_ProcessBatchScanResultInd, /* WDI_BATCHSCAN_RESULT_IND */
674#else
675 NULL,
676#endif
677
Leo Chang0b0e45a2013-12-15 15:18:55 -0800678#ifdef FEATURE_WLAN_CH_AVOID
679 WDI_ProcessChAvoidInd, /* WDI_LBP_UPDATE_IND_TO_HOST */
680#else
681 NULL,
682#endif /* FEATURE_WLAN_CH_AVOID */
683
Jeff Johnson295189b2012-06-20 16:38:30 -0700684};
685
686
Jeff Johnsone7245742012-09-05 17:12:55 -0700687/*---------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -0700688 WLAN DAL Global Control Block
689 ---------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700690WDI_ControlBlockType gWDICb;
Jeff Johnson295189b2012-06-20 16:38:30 -0700691static wpt_uint8 gWDIInitialized = eWLAN_PAL_FALSE;
692
Jeff Johnsone7245742012-09-05 17:12:55 -0700693const wpt_uint8 szTransportChName[] = "WLAN_CTRL";
Jeff Johnson295189b2012-06-20 16:38:30 -0700694
695/*Helper routine for retrieving the PAL Context from WDI*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700696WPT_INLINE
Jeff Johnson295189b2012-06-20 16:38:30 -0700697void* WDI_GET_PAL_CTX( void )
698{
Jeff Johnsone7245742012-09-05 17:12:55 -0700699 return gWDICb.pPALContext;
Jeff Johnson295189b2012-06-20 16:38:30 -0700700}/*WDI_GET_PAL_CTX*/
701
Jeff Johnsone7245742012-09-05 17:12:55 -0700702/*============================================================================
Jeff Johnson295189b2012-06-20 16:38:30 -0700703 Helper inline converters
704 ============================================================================*/
705/*Convert WDI driver type into HAL driver type*/
706WPT_STATIC WPT_INLINE WDI_Status
707WDI_HAL_2_WDI_STATUS
708(
709 eHalStatus halStatus
710);
711
712/*Convert WDI request type into HAL request type*/
713WPT_STATIC WPT_INLINE tHalHostMsgType
714WDI_2_HAL_REQ_TYPE
715(
716 WDI_RequestEnumType wdiReqType
717);
718
719/*Convert WDI response type into HAL response type*/
720WPT_STATIC WPT_INLINE WDI_ResponseEnumType
721HAL_2_WDI_RSP_TYPE
722(
723 tHalHostMsgType halMsg
724);
725
726/*Convert WDI driver type into HAL driver type*/
727WPT_STATIC WPT_INLINE tDriverType
728WDI_2_HAL_DRV_TYPE
729(
730 WDI_DriverType wdiDriverType
731);
732
733/*Convert WDI stop reason into HAL stop reason*/
734WPT_STATIC WPT_INLINE tHalStopType
735WDI_2_HAL_STOP_REASON
736(
737 WDI_StopType wdiStopType
738);
739
740/*Convert WDI scan mode type into HAL scan mode type*/
741WPT_STATIC WPT_INLINE eHalSysMode
742WDI_2_HAL_SCAN_MODE
743(
744 WDI_ScanMode wdiScanMode
745);
746
747/*Convert WDI sec ch offset into HAL sec ch offset type*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700748WPT_STATIC WPT_INLINE ePhyChanBondState
Jeff Johnson295189b2012-06-20 16:38:30 -0700749WDI_2_HAL_SEC_CH_OFFSET
750(
751 WDI_HTSecondaryChannelOffset wdiSecChOffset
752);
753
754/*Convert WDI BSS type into HAL BSS type*/
755WPT_STATIC WPT_INLINE tSirBssType
756WDI_2_HAL_BSS_TYPE
757(
758 WDI_BssType wdiBSSType
759);
760
761/*Convert WDI NW type into HAL NW type*/
762WPT_STATIC WPT_INLINE tSirNwType
763WDI_2_HAL_NW_TYPE
764(
765 WDI_NwType wdiNWType
766);
767
768/*Convert WDI chanel bonding type into HAL cb type*/
769WPT_STATIC WPT_INLINE ePhyChanBondState
770WDI_2_HAL_CB_STATE
771(
772 WDI_PhyChanBondState wdiCbState
773);
774
775/*Convert WDI chanel bonding type into HAL cb type*/
776WPT_STATIC WPT_INLINE tSirMacHTOperatingMode
777WDI_2_HAL_HT_OPER_MODE
778(
779 WDI_HTOperatingMode wdiHTOperMode
780);
781
782/*Convert WDI mimo PS type into HAL mimo PS type*/
783WPT_STATIC WPT_INLINE tSirMacHTMIMOPowerSaveState
784WDI_2_HAL_MIMO_PS
785(
786 WDI_HTMIMOPowerSaveState wdiHTOperMode
787);
788
789/*Convert WDI ENC type into HAL ENC type*/
790WPT_STATIC WPT_INLINE tAniEdType
791WDI_2_HAL_ENC_TYPE
792(
793 WDI_EncryptType wdiEncType
794);
795
796/*Convert WDI WEP type into HAL WEP type*/
797WPT_STATIC WPT_INLINE tAniWepType
798WDI_2_HAL_WEP_TYPE
799(
800 WDI_WepType wdiWEPType
801);
802
803/*Convert WDI Link State into HAL Link State*/
804WPT_STATIC WPT_INLINE tSirLinkState
805WDI_2_HAL_LINK_STATE
806(
807 WDI_LinkStateType wdiLinkState
808);
809
Jeff Johnsone7245742012-09-05 17:12:55 -0700810/*Translate a STA Context from WDI into HAL*/
811WPT_STATIC WPT_INLINE
Jeff Johnson295189b2012-06-20 16:38:30 -0700812void
813WDI_CopyWDIStaCtxToHALStaCtx
Jeff Johnsone7245742012-09-05 17:12:55 -0700814(
Jeff Johnson295189b2012-06-20 16:38:30 -0700815 tConfigStaParams* phalConfigSta,
816 WDI_ConfigStaReqInfoType* pwdiConfigSta
817);
Jeff Johnsone7245742012-09-05 17:12:55 -0700818
819/*Translate a Rate set info from WDI into HAL*/
820WPT_STATIC WPT_INLINE void
Jeff Johnson295189b2012-06-20 16:38:30 -0700821WDI_CopyWDIRateSetToHALRateSet
Jeff Johnsone7245742012-09-05 17:12:55 -0700822(
Jeff Johnson295189b2012-06-20 16:38:30 -0700823 tSirMacRateSet* pHalRateSet,
824 WDI_RateSet* pwdiRateSet
825);
826
827/*Translate an EDCA Parameter Record from WDI into HAL*/
828WPT_STATIC WPT_INLINE void
829WDI_CopyWDIEDCAParamsToHALEDCAParams
Jeff Johnsone7245742012-09-05 17:12:55 -0700830(
Jeff Johnson295189b2012-06-20 16:38:30 -0700831 tSirMacEdcaParamRecord* phalEdcaParam,
832 WDI_EdcaParamRecord* pWDIEdcaParam
833);
834
835/*Copy a management frame header from WDI fmt into HAL fmt*/
836WPT_STATIC WPT_INLINE void
837WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr
838(
839 tSirMacMgmtHdr* pmacMgmtHdr,
840 WDI_MacMgmtHdr* pwdiMacMgmtHdr
841);
842
843/*Copy config bss parameters from WDI fmt into HAL fmt*/
844WPT_STATIC WPT_INLINE void
845WDI_CopyWDIConfigBSSToHALConfigBSS
846(
847 tConfigBssParams* phalConfigBSS,
848 WDI_ConfigBSSReqInfoType* pwdiConfigBSS
849);
850
Jeff Johnsone7245742012-09-05 17:12:55 -0700851/*Extract the request CB function and user data from a request structure
Jeff Johnson295189b2012-06-20 16:38:30 -0700852 pointed to by user data */
853WPT_STATIC WPT_INLINE void
854WDI_ExtractRequestCBFromEvent
855(
856 WDI_EventInfoType* pEvent,
Jeff Johnsone7245742012-09-05 17:12:55 -0700857 WDI_ReqStatusCb* ppfnReqCB,
Jeff Johnson295189b2012-06-20 16:38:30 -0700858 void** ppUserData
859);
860
861wpt_uint8
862WDI_FindEmptySession
Jeff Johnsone7245742012-09-05 17:12:55 -0700863(
Jeff Johnson295189b2012-06-20 16:38:30 -0700864 WDI_ControlBlockType* pWDICtx,
865 WDI_BSSSessionType** ppSession
866);
867
868void
869WDI_AddBcastSTAtoSTATable
870(
871 WDI_ControlBlockType* pWDICtx,
872 WDI_AddStaParams * staParams,
873 wpt_uint16 usBcastStaIdx
874);
875
876WDI_Status WDI_SendNvBlobReq
Jeff Johnsone7245742012-09-05 17:12:55 -0700877(
Jeff Johnson295189b2012-06-20 16:38:30 -0700878 WDI_ControlBlockType* pWDICtx,
879 WDI_EventInfoType* pEventData
880);
881
882void
883WDI_SetPowerStateCb
884(
885 wpt_status status,
886 unsigned int dxePhyAddr,
887 void *pContext
888);
889
Jeff Johnson295189b2012-06-20 16:38:30 -0700890/**
891 @brief WDI_getReqMsgString prints the WDI request message in string.
Jeff Johnsone7245742012-09-05 17:12:55 -0700892
893 @param wdiReqMsgId: WDI Message request Id
894
895 @see
Jeff Johnson295189b2012-06-20 16:38:30 -0700896 @return Result of the function call
897*/
898static char *WDI_getReqMsgString(wpt_uint16 wdiReqMsgId)
899{
900 switch (wdiReqMsgId)
901 {
902 CASE_RETURN_STRING( WDI_START_REQ );
903 CASE_RETURN_STRING( WDI_STOP_REQ );
904 CASE_RETURN_STRING( WDI_CLOSE_REQ );
905 CASE_RETURN_STRING( WDI_INIT_SCAN_REQ );
906 CASE_RETURN_STRING( WDI_START_SCAN_REQ );
907 CASE_RETURN_STRING( WDI_END_SCAN_REQ );
908 CASE_RETURN_STRING( WDI_FINISH_SCAN_REQ );
909 CASE_RETURN_STRING( WDI_JOIN_REQ );
910 CASE_RETURN_STRING( WDI_CONFIG_BSS_REQ );
911 CASE_RETURN_STRING( WDI_DEL_BSS_REQ );
912 CASE_RETURN_STRING( WDI_POST_ASSOC_REQ );
913 CASE_RETURN_STRING( WDI_DEL_STA_REQ );
914 CASE_RETURN_STRING( WDI_SET_BSS_KEY_REQ );
915 CASE_RETURN_STRING( WDI_RMV_BSS_KEY_REQ );
916 CASE_RETURN_STRING( WDI_SET_STA_KEY_REQ );
917 CASE_RETURN_STRING( WDI_RMV_STA_KEY_REQ );
918 CASE_RETURN_STRING( WDI_ADD_TS_REQ );
919 CASE_RETURN_STRING( WDI_DEL_TS_REQ );
920 CASE_RETURN_STRING( WDI_UPD_EDCA_PRMS_REQ );
921 CASE_RETURN_STRING( WDI_ADD_BA_SESSION_REQ );
922 CASE_RETURN_STRING( WDI_DEL_BA_REQ );
923 CASE_RETURN_STRING( WDI_CH_SWITCH_REQ );
Kalikinkar dhara1e83b772014-02-06 12:59:22 -0800924 CASE_RETURN_STRING( WDI_CH_SWITCH_REQ_V1);
Jeff Johnson295189b2012-06-20 16:38:30 -0700925 CASE_RETURN_STRING( WDI_CONFIG_STA_REQ );
926 CASE_RETURN_STRING( WDI_SET_LINK_ST_REQ );
927 CASE_RETURN_STRING( WDI_GET_STATS_REQ );
928 CASE_RETURN_STRING( WDI_UPDATE_CFG_REQ );
929 CASE_RETURN_STRING( WDI_ADD_BA_REQ );
930 CASE_RETURN_STRING( WDI_TRIGGER_BA_REQ );
931 CASE_RETURN_STRING( WDI_UPD_BCON_PRMS_REQ );
932 CASE_RETURN_STRING( WDI_SND_BCON_REQ );
933 CASE_RETURN_STRING( WDI_UPD_PROBE_RSP_TEMPLATE_REQ );
934 CASE_RETURN_STRING( WDI_SET_STA_BCAST_KEY_REQ );
935 CASE_RETURN_STRING( WDI_RMV_STA_BCAST_KEY_REQ );
936 CASE_RETURN_STRING( WDI_SET_MAX_TX_POWER_REQ );
Arif Hussaina5ebce02013-08-09 15:09:58 -0700937 CASE_RETURN_STRING( WDI_SET_MAX_TX_POWER_PER_BAND_REQ );
Jeff Johnson295189b2012-06-20 16:38:30 -0700938 CASE_RETURN_STRING( WDI_P2P_GO_NOTICE_OF_ABSENCE_REQ );
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +0530939#ifdef FEATURE_WLAN_TDLS
940 CASE_RETURN_STRING( WDI_TDLS_LINK_ESTABLISH_REQ );
941#endif
Jeff Johnson295189b2012-06-20 16:38:30 -0700942 CASE_RETURN_STRING( WDI_ENTER_IMPS_REQ );
943 CASE_RETURN_STRING( WDI_EXIT_IMPS_REQ );
944 CASE_RETURN_STRING( WDI_ENTER_BMPS_REQ );
945 CASE_RETURN_STRING( WDI_EXIT_BMPS_REQ );
946 CASE_RETURN_STRING( WDI_ENTER_UAPSD_REQ );
947 CASE_RETURN_STRING( WDI_EXIT_UAPSD_REQ );
948 CASE_RETURN_STRING( WDI_SET_UAPSD_PARAM_REQ );
949 CASE_RETURN_STRING( WDI_UPDATE_UAPSD_PARAM_REQ );
950 CASE_RETURN_STRING( WDI_CONFIGURE_RXP_FILTER_REQ );
951 CASE_RETURN_STRING( WDI_SET_BEACON_FILTER_REQ);
952 CASE_RETURN_STRING( WDI_REM_BEACON_FILTER_REQ );
953 CASE_RETURN_STRING( WDI_SET_RSSI_THRESHOLDS_REQ );
954 CASE_RETURN_STRING( WDI_HOST_OFFLOAD_REQ );
955 CASE_RETURN_STRING( WDI_WOWL_ADD_BC_PTRN_REQ );
956 CASE_RETURN_STRING( WDI_WOWL_DEL_BC_PTRN_REQ );
957 CASE_RETURN_STRING( WDI_WOWL_ENTER_REQ );
958 CASE_RETURN_STRING( WDI_WOWL_EXIT_REQ );
959 CASE_RETURN_STRING( WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ );
960 CASE_RETURN_STRING( WDI_NV_DOWNLOAD_REQ );
961 CASE_RETURN_STRING( WDI_FLUSH_AC_REQ );
962 CASE_RETURN_STRING( WDI_BTAMP_EVENT_REQ );
963 CASE_RETURN_STRING( WDI_AGGR_ADD_TS_REQ );
964 CASE_RETURN_STRING( WDI_ADD_STA_SELF_REQ );
965 CASE_RETURN_STRING( WDI_DEL_STA_SELF_REQ );
966 CASE_RETURN_STRING( WDI_FTM_CMD_REQ );
Jeff Johnsone7245742012-09-05 17:12:55 -0700967 CASE_RETURN_STRING( WDI_START_OEM_DATA_REQ );
Jeff Johnson295189b2012-06-20 16:38:30 -0700968 CASE_RETURN_STRING( WDI_HOST_RESUME_REQ );
969 CASE_RETURN_STRING( WDI_KEEP_ALIVE_REQ);
970 #ifdef FEATURE_WLAN_SCAN_PNO
971 CASE_RETURN_STRING( WDI_SET_PREF_NETWORK_REQ );
972 CASE_RETURN_STRING( WDI_SET_RSSI_FILTER_REQ );
973 CASE_RETURN_STRING( WDI_UPDATE_SCAN_PARAMS_REQ );
974 #endif
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -0700975#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
Varun Reddy Yeturu920df212013-05-22 08:07:23 -0700976 CASE_RETURN_STRING( WDI_ROAM_SCAN_OFFLOAD_REQ );
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -0700977#endif
Jeff Johnson295189b2012-06-20 16:38:30 -0700978 CASE_RETURN_STRING( WDI_SET_TX_PER_TRACKING_REQ );
979 CASE_RETURN_STRING( WDI_8023_MULTICAST_LIST_REQ );
980 CASE_RETURN_STRING( WDI_RECEIVE_FILTER_SET_FILTER_REQ );
981 CASE_RETURN_STRING( WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ );
982 CASE_RETURN_STRING( WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ );
983 CASE_RETURN_STRING( WDI_INIT_SCAN_CON_REQ );
984 CASE_RETURN_STRING( WDI_HAL_DUMP_CMD_REQ );
985 CASE_RETURN_STRING( WDI_SHUTDOWN_REQ );
986 CASE_RETURN_STRING( WDI_SET_POWER_PARAMS_REQ );
Madan Mohan Koyyalamudi01cba042013-01-10 21:56:05 -0800987 CASE_RETURN_STRING( WDI_TRAFFIC_STATS_IND );
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -0800988 CASE_RETURN_STRING( WDI_GET_ROAM_RSSI_REQ );
Chet Lanctot186b5732013-03-18 10:26:30 -0700989#ifdef WLAN_FEATURE_11W
990 CASE_RETURN_STRING( WDI_EXCLUDE_UNENCRYPTED_IND );
991#endif
Rajeev79dbe4c2013-10-05 11:03:42 +0530992#ifdef FEATURE_WLAN_BATCH_SCAN
993 CASE_RETURN_STRING( WDI_SET_BATCH_SCAN_REQ);
994 CASE_RETURN_STRING( WDI_STOP_BATCH_SCAN_IND );
995 CASE_RETURN_STRING( WDI_TRIGGER_BATCH_SCAN_RESULT_IND);
996#endif
Sandeep Puligilla8b8b74b2014-02-10 16:39:05 +0530997 CASE_RETURN_STRING(WDI_START_HT40_OBSS_SCAN_IND);
998 CASE_RETURN_STRING(WDI_STOP_HT40_OBSS_SCAN_IND);
Manjunathappa Prakash86f78ca2014-02-10 18:09:15 -0800999 CASE_RETURN_STRING(WDI_UPDATE_CHAN_REQ);
Jeff Johnson295189b2012-06-20 16:38:30 -07001000 default:
1001 return "Unknown WDI MessageId";
1002 }
1003}
1004
1005
1006
1007/**
1008 @brief WDI_getRespMsgString prints the WDI resonse message in string.
Jeff Johnsone7245742012-09-05 17:12:55 -07001009
1010 @param wdiRespMsgId: WDI Message response Id
1011
1012 @see
Jeff Johnson295189b2012-06-20 16:38:30 -07001013 @return Result of the function call
1014*/
1015static char *WDI_getRespMsgString(wpt_uint16 wdiRespMsgId)
1016{
1017 switch (wdiRespMsgId)
1018 {
1019 CASE_RETURN_STRING( WDI_START_RESP );
1020 CASE_RETURN_STRING( WDI_STOP_RESP );
1021 CASE_RETURN_STRING( WDI_CLOSE_RESP );
1022 CASE_RETURN_STRING( WDI_INIT_SCAN_RESP );
1023 CASE_RETURN_STRING( WDI_START_SCAN_RESP );
1024 CASE_RETURN_STRING( WDI_END_SCAN_RESP );
1025 CASE_RETURN_STRING( WDI_FINISH_SCAN_RESP );
1026 CASE_RETURN_STRING( WDI_JOIN_RESP );
1027 CASE_RETURN_STRING( WDI_CONFIG_BSS_RESP );
1028 CASE_RETURN_STRING( WDI_DEL_BSS_RESP );
1029 CASE_RETURN_STRING( WDI_POST_ASSOC_RESP );
1030 CASE_RETURN_STRING( WDI_DEL_STA_RESP );
1031 CASE_RETURN_STRING( WDI_SET_BSS_KEY_RESP );
1032 CASE_RETURN_STRING( WDI_RMV_BSS_KEY_RESP );
1033 CASE_RETURN_STRING( WDI_SET_STA_KEY_RESP );
1034 CASE_RETURN_STRING( WDI_RMV_STA_KEY_RESP );
1035 CASE_RETURN_STRING( WDI_ADD_TS_RESP );
1036 CASE_RETURN_STRING( WDI_DEL_TS_RESP );
1037 CASE_RETURN_STRING( WDI_UPD_EDCA_PRMS_RESP );
1038 CASE_RETURN_STRING( WDI_ADD_BA_SESSION_RESP );
1039 CASE_RETURN_STRING( WDI_DEL_BA_RESP );
1040 CASE_RETURN_STRING( WDI_CH_SWITCH_RESP );
1041 CASE_RETURN_STRING( WDI_CONFIG_STA_RESP );
1042 CASE_RETURN_STRING( WDI_SET_LINK_ST_RESP );
1043 CASE_RETURN_STRING( WDI_GET_STATS_RESP );
1044 CASE_RETURN_STRING( WDI_UPDATE_CFG_RESP );
1045 CASE_RETURN_STRING( WDI_ADD_BA_RESP );
1046 CASE_RETURN_STRING( WDI_TRIGGER_BA_RESP );
1047 CASE_RETURN_STRING( WDI_UPD_BCON_PRMS_RESP );
1048 CASE_RETURN_STRING( WDI_SND_BCON_RESP );
1049 CASE_RETURN_STRING( WDI_UPD_PROBE_RSP_TEMPLATE_RESP );
1050 CASE_RETURN_STRING( WDI_SET_STA_BCAST_KEY_RESP );
1051 CASE_RETURN_STRING( WDI_RMV_STA_BCAST_KEY_RESP );
1052 CASE_RETURN_STRING( WDI_SET_MAX_TX_POWER_RESP );
1053 CASE_RETURN_STRING( WDI_P2P_GO_NOTICE_OF_ABSENCE_RESP );
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +05301054#ifdef FEATURE_WLAN_TDLS
1055 CASE_RETURN_STRING( WDI_TDLS_LINK_ESTABLISH_REQ_RESP );
1056 CASE_RETURN_STRING( WDI_HAL_TDLS_IND );
1057#endif
Jeff Johnson295189b2012-06-20 16:38:30 -07001058 CASE_RETURN_STRING( WDI_ENTER_IMPS_RESP );
1059 CASE_RETURN_STRING( WDI_EXIT_IMPS_RESP );
1060 CASE_RETURN_STRING( WDI_ENTER_BMPS_RESP );
1061 CASE_RETURN_STRING( WDI_EXIT_BMPS_RESP );
1062 CASE_RETURN_STRING( WDI_ENTER_UAPSD_RESP );
1063 CASE_RETURN_STRING( WDI_EXIT_UAPSD_RESP );
1064 CASE_RETURN_STRING( WDI_SET_UAPSD_PARAM_RESP );
1065 CASE_RETURN_STRING( WDI_UPDATE_UAPSD_PARAM_RESP );
1066 CASE_RETURN_STRING( WDI_CONFIGURE_RXP_FILTER_RESP );
1067 CASE_RETURN_STRING( WDI_SET_BEACON_FILTER_RESP);
1068 CASE_RETURN_STRING( WDI_REM_BEACON_FILTER_RESP );
1069 CASE_RETURN_STRING( WDI_SET_RSSI_THRESHOLDS_RESP );
1070 CASE_RETURN_STRING( WDI_HOST_OFFLOAD_RESP );
1071 CASE_RETURN_STRING( WDI_WOWL_ADD_BC_PTRN_RESP );
1072 CASE_RETURN_STRING( WDI_WOWL_DEL_BC_PTRN_RESP );
1073 CASE_RETURN_STRING( WDI_WOWL_ENTER_RESP );
1074 CASE_RETURN_STRING( WDI_WOWL_EXIT_RESP );
1075 CASE_RETURN_STRING( WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_RESP );
1076 CASE_RETURN_STRING( WDI_NV_DOWNLOAD_RESP );
1077 CASE_RETURN_STRING( WDI_FLUSH_AC_RESP );
1078 CASE_RETURN_STRING( WDI_BTAMP_EVENT_RESP );
1079 CASE_RETURN_STRING( WDI_AGGR_ADD_TS_RESP );
1080 CASE_RETURN_STRING( WDI_ADD_STA_SELF_RESP );
1081 CASE_RETURN_STRING( WDI_DEL_STA_SELF_RESP );
1082 CASE_RETURN_STRING( WDI_FTM_CMD_RESP );
Jeff Johnsone7245742012-09-05 17:12:55 -07001083 CASE_RETURN_STRING( WDI_START_OEM_DATA_RESP );
Jeff Johnson295189b2012-06-20 16:38:30 -07001084 CASE_RETURN_STRING( WDI_HOST_RESUME_RESP );
1085 CASE_RETURN_STRING( WDI_KEEP_ALIVE_RESP);
1086 #ifdef FEATURE_WLAN_SCAN_PNO
1087 CASE_RETURN_STRING( WDI_SET_PREF_NETWORK_RESP );
1088 CASE_RETURN_STRING( WDI_SET_RSSI_FILTER_RESP );
1089 CASE_RETURN_STRING( WDI_UPDATE_SCAN_PARAMS_RESP );
1090 #endif
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -07001091#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
Varun Reddy Yeturu920df212013-05-22 08:07:23 -07001092 CASE_RETURN_STRING( WDI_ROAM_SCAN_OFFLOAD_RESP );
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -07001093#endif
Jeff Johnson295189b2012-06-20 16:38:30 -07001094 CASE_RETURN_STRING( WDI_SET_TX_PER_TRACKING_RESP );
1095 CASE_RETURN_STRING( WDI_8023_MULTICAST_LIST_RESP );
1096 CASE_RETURN_STRING( WDI_RECEIVE_FILTER_SET_FILTER_RESP );
1097 CASE_RETURN_STRING( WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_RESP );
1098 CASE_RETURN_STRING( WDI_RECEIVE_FILTER_CLEAR_FILTER_RESP );
1099 CASE_RETURN_STRING( WDI_HAL_DUMP_CMD_RESP );
1100 CASE_RETURN_STRING( WDI_SHUTDOWN_RESP );
1101 CASE_RETURN_STRING( WDI_SET_POWER_PARAMS_RESP );
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -08001102 CASE_RETURN_STRING( WDI_GET_ROAM_RSSI_RESP );
Rajeev79dbe4c2013-10-05 11:03:42 +05301103#ifdef FEATURE_WLAN_BATCH_SCAN
1104 CASE_RETURN_STRING( WDI_SET_BATCH_SCAN_RESP);
1105#endif
Manjunathappa Prakash86f78ca2014-02-10 18:09:15 -08001106 CASE_RETURN_STRING( WDI_UPDATE_CHAN_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07001107 default:
1108 return "Unknown WDI MessageId";
1109 }
1110}
1111
1112/**
Madan Mohan Koyyalamudif8d3b3f2013-07-30 19:10:54 +05301113 @brief WDI_TraceHostFWCapabilities - Parses both host and Firmware
1114 Capability bitmap array.
Abhishek Singh08b60122014-02-04 18:05:23 +05301115 @param capabilityBitmap - Base address of a 4 element Bitmap array
1116 of type tANI_U32.
Madan Mohan Koyyalamudif8d3b3f2013-07-30 19:10:54 +05301117 @see
1118 @returns None
1119 */
1120void WDI_TraceHostFWCapabilities(tANI_U32 *capabilityBitmap)
1121{
Abhishek Singh08b60122014-02-04 18:05:23 +05301122 int i,j;
Madan Mohan Koyyalamudif8d3b3f2013-07-30 19:10:54 +05301123 char capStr[512];
1124 char *pCapStr = capStr;
Abhishek Singh08b60122014-02-04 18:05:23 +05301125 for (j = 0; j < 4; j++) {
1126 for (i = 0; i < 32; i++) {
1127 if ((*(capabilityBitmap + j) & (1 << i))) {
1128 switch(i + (j * 32)) {
Madan Mohan Koyyalamudif8d3b3f2013-07-30 19:10:54 +05301129 case MCC: snprintf(pCapStr, sizeof("MCC"), "%s", "MCC");
1130 pCapStr += strlen("MCC");
1131 break;
1132 case P2P: snprintf(pCapStr, sizeof("P2P"), "%s", "P2P");
1133 pCapStr += strlen("P2P");
1134 break;
1135 case DOT11AC: snprintf(pCapStr, sizeof("DOT11AC") , "%s", "DOT11AC");
1136 pCapStr += strlen("DOT11AC");
1137 break;
1138 case SLM_SESSIONIZATION: snprintf(pCapStr, sizeof("SLM_SESSIONIZATION"), "%s", "SLM_SESSIONIZATION");
1139 pCapStr += strlen("SLM_SESSIONIZATION");
1140 break;
1141 case DOT11AC_OPMODE: snprintf(pCapStr, sizeof("DOT11AC_OPMODE"), "%s", "DOT11AC_OPMODE");
1142 pCapStr += strlen("DOT11AC_OPMODE");
1143 break;
1144 case SAP32STA: snprintf(pCapStr, sizeof("SAP32STA"), "%s", "SAP32STA");
1145 pCapStr += strlen("SAP32STA");
1146 break;
1147 case TDLS: snprintf(pCapStr, sizeof("TDLS"), "%s", "TDLS");
1148 pCapStr += strlen("TDLS");
1149 break;
1150 case P2P_GO_NOA_DECOUPLE_INIT_SCAN: snprintf(pCapStr, sizeof("P2P_GO_NOA_DECOUPLE_INIT_SCAN"), "%s", "P2P_GO_NOA_DECOUPLE_INIT_SCAN");
1151 pCapStr += strlen("P2P_GO_NOA_DECOUPLE_INIT_SCAN");
1152 break;
1153 case WLANACTIVE_OFFLOAD: snprintf(pCapStr, sizeof("WLANACTIVE_OFFLOAD"), "%s", "WLANACTIVE_OFFLOAD");
1154 pCapStr += strlen("WLANACTIVE_OFFLOAD");
1155 break;
1156 case BEACON_OFFLOAD: snprintf(pCapStr, sizeof("BEACON_OFFLOAD"), "%s","BEACON_OFFLOAD");
1157 pCapStr += strlen("BEACON_OFFLOAD");
1158 break;
1159 case SCAN_OFFLOAD: snprintf(pCapStr, sizeof("SCAN_OFFLOAD"), "%s", "SCAN_OFFLOAD");
1160 pCapStr += strlen("SCAN_OFFLOAD");
1161 break;
1162 case ROAM_OFFLOAD: snprintf(pCapStr, sizeof("ROAM_OFFLOAD"), "%s", "ROAM_OFFLOAD");
1163 pCapStr += strlen("ROAM_OFFLOAD");
1164 break;
1165 case BCN_MISS_OFFLOAD: snprintf(pCapStr, sizeof("BCN_MISS_OFFLOAD"), "%s", "BCN_MISS_OFFLOAD");
1166 pCapStr += strlen("BCN_MISS_OFFLOAD");
1167 break;
1168 case STA_POWERSAVE: snprintf(pCapStr, sizeof("STA_POWERSAVE"), "%s", "STA_POWERSAVE");
1169 pCapStr += strlen("STA_POWERSAVE");
1170 break;
1171 case AP_UAPSD: snprintf(pCapStr, sizeof("AP_UAPSD"), "%s", "AP_UAPSD");
1172 pCapStr += strlen("AP_UAPSD");
1173 break;
1174 case AP_DFS: snprintf(pCapStr, sizeof("AP_DFS"), "%s", "AP_DFS");
1175 pCapStr += strlen("AP_DFS");
1176 break;
1177 case BLOCKACK: snprintf(pCapStr, sizeof("BLOCKACK"), "%s", "BLOCKACK");
1178 pCapStr += strlen("BLOCKACK");
1179 break;
1180 case PHY_ERR: snprintf(pCapStr, sizeof("PHY_ERR"), "%s", "PHY_ERR");
1181 pCapStr += strlen("PHY_ERR");
1182 break;
1183 case BCN_FILTER: snprintf(pCapStr, sizeof("BCN_FILTER"), "%s", "BCN_FILTER");
1184 pCapStr += strlen("BCN_FILTER");
1185 break;
1186 case RTT: snprintf(pCapStr, sizeof("RTT"), "%s", "RTT");
1187 pCapStr += strlen("RTT");
1188 break;
1189 case RATECTRL: snprintf(pCapStr, sizeof("RATECTRL"), "%s", "RATECTRL");
1190 pCapStr += strlen("RATECTRL");
1191 break;
1192 case WOW: snprintf(pCapStr, sizeof("WOW"), "%s", "WOW");
1193 pCapStr += strlen("WOW");
1194 break;
1195 case WLAN_ROAM_SCAN_OFFLOAD: snprintf(pCapStr, sizeof("WLAN_ROAM_SCAN_OFFLOAD"), "%s", "WLAN_ROAM_SCAN_OFFLOAD");
1196 pCapStr += strlen("WLAN_ROAM_SCAN_OFFLOAD");
1197 break;
Kanchanapally, Vidyullathaf9426e52013-12-24 17:28:54 +05301198 case FW_IN_TX_PATH: snprintf(pCapStr, sizeof("FW_IN_TX_PATH"), "%s", "FW_IN_TX_PATH");
1199 pCapStr += strlen("FW_IN_TX_PATH");
1200 break;
Sandeep Puligilla60342762014-01-30 21:05:37 +05301201 case HT40_OBSS_SCAN:
1202 snprintf(pCapStr, sizeof("HT40_OBSS_SCAN"),
1203 "%s", "HT40_OBSS_SCAN");
1204 pCapStr += strlen("HT40_OBSS_SCAN");
1205 break;
Hardik Kantilal Patele1760e12014-01-21 15:57:21 +05301206 case EXTENDED_NSOFFLOAD_SLOT: snprintf(pCapStr,
1207 sizeof("EXTENDED_NSOFFLOAD_SLOT"),
1208 "%s", "EXTENDED_NSOFFLOAD_SLOT");
1209 pCapStr += strlen("EXTENDED_NSOFFLOAD_SLOT");
1210 break;
1211
Abhishek Singh08b60122014-02-04 18:05:23 +05301212 }
1213 *pCapStr++ = ',';
1214 *pCapStr++ = ' ';
1215 }
Madan Mohan Koyyalamudif8d3b3f2013-07-30 19:10:54 +05301216 }
1217 }
Madan Mohan Koyyalamudic2bf6172013-08-07 14:19:18 +05301218 pCapStr -= 2;
1219 *pCapStr = '\0';
Madan Mohan Koyyalamudif8d3b3f2013-07-30 19:10:54 +05301220 pCapStr = capStr;
Madan Mohan Koyyalamudic2bf6172013-08-07 14:19:18 +05301221 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR, "\t\t%s", pCapStr);
Madan Mohan Koyyalamudif8d3b3f2013-07-30 19:10:54 +05301222}
1223
1224/**
Jeff Johnson295189b2012-06-20 16:38:30 -07001225 @brief WDI_getHALStatusMsgString prints the HAL status in string.
Jeff Johnsone7245742012-09-05 17:12:55 -07001226
1227 @param halStatusId: HAL status Id
1228
1229 @see
Jeff Johnson295189b2012-06-20 16:38:30 -07001230 @return Result of the function call
1231*/
1232static char *WDI_getHALStatusMsgString(wpt_uint16 halStatusId)
1233{
1234 switch (halStatusId)
1235 {
1236 CASE_RETURN_STRING( eHAL_STATUS_SUCCESS );
1237 CASE_RETURN_STRING( PAL_STATUS_INVAL );
1238 CASE_RETURN_STRING( PAL_STATUS_ALREADY );
1239 CASE_RETURN_STRING( PAL_STATUS_EMPTY );
1240 CASE_RETURN_STRING( PAL_STATUS_FAILURE );
1241 CASE_RETURN_STRING( eHAL_STATUS_FAILURE );
1242 CASE_RETURN_STRING( eHAL_STATUS_INVALID_PARAMETER );
1243 CASE_RETURN_STRING( eHAL_STATUS_INVALID_STAIDX );
1244 CASE_RETURN_STRING( eHAL_STATUS_DPU_DESCRIPTOR_TABLE_FULL );
1245 CASE_RETURN_STRING( eHAL_STATUS_NO_INTERRUPTS );
1246 CASE_RETURN_STRING( eHAL_STATUS_INTERRUPT_PRESENT );
1247 CASE_RETURN_STRING( eHAL_STATUS_STA_TABLE_FULL );
1248 CASE_RETURN_STRING( eHAL_STATUS_DUPLICATE_STA );
1249 CASE_RETURN_STRING( eHAL_STATUS_BSSID_INVALID );
1250 CASE_RETURN_STRING( eHAL_STATUS_STA_INVALID );
1251 CASE_RETURN_STRING( eHAL_STATUS_DUPLICATE_BSSID );
1252 CASE_RETURN_STRING( eHAL_STATUS_INVALID_BSSIDX );
1253 CASE_RETURN_STRING( eHAL_STATUS_BSSID_TABLE_FULL );
1254 CASE_RETURN_STRING( eHAL_STATUS_INVALID_SIGNATURE );
1255 CASE_RETURN_STRING( eHAL_STATUS_INVALID_KEYID );
1256 CASE_RETURN_STRING( eHAL_STATUS_SET_CHAN_ALREADY_ON_REQUESTED_CHAN );
1257 CASE_RETURN_STRING( eHAL_STATUS_UMA_DESCRIPTOR_TABLE_FULL );
1258 CASE_RETURN_STRING( eHAL_STATUS_DPU_MICKEY_TABLE_FULL );
1259 CASE_RETURN_STRING( eHAL_STATUS_BA_RX_BUFFERS_FULL );
1260 CASE_RETURN_STRING( eHAL_STATUS_BA_RX_MAX_SESSIONS_REACHED );
1261 CASE_RETURN_STRING( eHAL_STATUS_BA_RX_INVALID_SESSION_ID );
1262 CASE_RETURN_STRING( eHAL_STATUS_TIMER_START_FAILED );
1263 CASE_RETURN_STRING( eHAL_STATUS_TIMER_STOP_FAILED );
1264 CASE_RETURN_STRING( eHAL_STATUS_FAILED_ALLOC );
1265 CASE_RETURN_STRING( eHAL_STATUS_NOTIFY_BSS_FAIL );
1266 CASE_RETURN_STRING( eHAL_STATUS_DEL_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO );
1267 CASE_RETURN_STRING( eHAL_STATUS_ADD_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO );
1268 CASE_RETURN_STRING( eHAL_STATUS_FW_SEND_MSG_FAILED );
1269 default:
1270 return "Unknown HAL status";
1271 }
1272}
1273
Jeff Johnsone7245742012-09-05 17:12:55 -07001274/*========================================================================
1275
Jeff Johnson295189b2012-06-20 16:38:30 -07001276 INITIALIZATION APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07001277
Jeff Johnson295189b2012-06-20 16:38:30 -07001278==========================================================================*/
1279
1280/**
1281 @brief WDI_Init is used to initialize the DAL.
Jeff Johnsone7245742012-09-05 17:12:55 -07001282
Jeff Johnson295189b2012-06-20 16:38:30 -07001283 DAL will allocate all the resources it needs. It will open PAL, it will also
1284 open both the data and the control transport which in their turn will open
Jeff Johnsone7245742012-09-05 17:12:55 -07001285 DXE/SMD or any other drivers that they need.
1286
Arun Kumar Khandavalliebb19482014-03-25 13:56:53 +05301287 @param devHandle: pointer to the OS specific device handle
Jeff Johnson295189b2012-06-20 16:38:30 -07001288 ppWDIGlobalCtx: output pointer of Global Context
1289 pWdiDevCapability: output pointer of device capability
1290
1291 @return Result of the function call
1292*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001293WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07001294WDI_Init
Jeff Johnsone7245742012-09-05 17:12:55 -07001295(
Arun Kumar Khandavalliebb19482014-03-25 13:56:53 +05301296 void* devHandle,
Jeff Johnson295189b2012-06-20 16:38:30 -07001297 void** ppWDIGlobalCtx,
1298 WDI_DeviceCapabilityType* pWdiDevCapability,
1299 unsigned int driverType
1300)
1301{
1302 wpt_uint8 i;
Jeff Johnsone7245742012-09-05 17:12:55 -07001303 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07001304 WDI_Status wdiStatus;
Jeff Johnsone7245742012-09-05 17:12:55 -07001305 WCTS_TransportCBsType wctsCBs;
Jeff Johnson295189b2012-06-20 16:38:30 -07001306 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
1307
1308 /*---------------------------------------------------------------------
1309 Sanity check
1310 ---------------------------------------------------------------------*/
1311 if (( NULL == ppWDIGlobalCtx ) || ( NULL == pWdiDevCapability ))
1312 {
1313 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1314 "Invalid input parameters in WDI_Init");
1315
Jeff Johnsone7245742012-09-05 17:12:55 -07001316 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07001317 }
1318
1319 /*---------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001320 Check to see if the module has already been initialized or not
Jeff Johnson295189b2012-06-20 16:38:30 -07001321 ---------------------------------------------------------------------*/
1322 if ( eWLAN_PAL_FALSE != gWDIInitialized )
1323 {
1324 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
1325 "WDI module already initialized - return");
1326
Jeff Johnsone7245742012-09-05 17:12:55 -07001327 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07001328 }
1329
1330 /*Module is now initialized - this flag is to ensure the fact that multiple
1331 init will not happen on WDI
1332 !! - potential race does exist because read and set are not atomic,
1333 however an atomic operation would be closely here - reanalyze if necessary*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001334 gWDIInitialized = eWLAN_PAL_TRUE;
Jeff Johnson295189b2012-06-20 16:38:30 -07001335
1336 /*Setup the control block */
1337 WDI_CleanCB(&gWDICb);
Arun Kumar Khandavalliebb19482014-03-25 13:56:53 +05301338 gWDICb.pOSContext = devHandle ;
Jeff Johnson295189b2012-06-20 16:38:30 -07001339
1340 /*Setup the STA Table*/
1341 wdiStatus = WDI_STATableInit(&gWDICb);
1342 if ( WDI_STATUS_SUCCESS != wdiStatus )
1343 {
1344 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1345 "%s: Failure while initializing STA Table, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001346 __func__, wdiStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001347 goto fail_STATableInit;
1348 }
1349
1350 /*------------------------------------------------------------------------
1351 Open the PAL
1352 ------------------------------------------------------------------------*/
Arun Kumar Khandavalliebb19482014-03-25 13:56:53 +05301353 wptStatus = wpalOpen(&gWDICb.pPALContext, devHandle);
Jeff Johnson295189b2012-06-20 16:38:30 -07001354 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1355 {
1356 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1357 "%s: Failed to open PAL, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001358 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001359 goto fail_wpalOpen;
1360 }
1361
1362 /*Initialize main synchro mutex - it will be used to ensure integrity of
1363 the main WDI Control Block*/
1364 wptStatus = wpalMutexInit(&gWDICb.wptMutex);
1365 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1366 {
1367 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1368 "%s: Failed to init mutex, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001369 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001370 goto fail_mutex;
1371 }
1372
1373 /*Initialize the response timer - it will be used to time all messages
1374 expected as response from device*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001375 wptStatus = wpalTimerInit( &gWDICb.wptResponseTimer,
1376 WDI_ResponseTimerCB,
Jeff Johnson295189b2012-06-20 16:38:30 -07001377 &gWDICb);
1378 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1379 {
1380 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1381 "%s: Failed to init response timer, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001382 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001383 goto fail_timer;
1384 }
1385
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -07001386 wptStatus = wpalTimerInit( &gWDICb.ssrTimer,
1387 WDI_SsrTimerCB,
1388 &gWDICb);
1389 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1390 {
1391 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1392 "%s: Failed to init SSR timer, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001393 __func__, wptStatus);
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -07001394 goto fail_timer2;
1395 }
Jeff Johnson295189b2012-06-20 16:38:30 -07001396 /* Initialize the WDI Pending Request Queue*/
1397 wptStatus = wpal_list_init(&(gWDICb.wptPendingQueue));
1398 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1399 {
1400 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1401 "%s: Failed to init pending request queue, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001402 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001403 goto fail_pend_queue;
1404 }
1405
1406 /*Init WDI Pending Assoc Id Queue */
1407 wptStatus = wpal_list_init(&(gWDICb.wptPendingAssocSessionIdQueue));
1408 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1409 {
1410 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1411 "%s: Failed to init assoc session queue, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001412 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001413 goto fail_assoc_queue;
1414 }
1415
1416 /*Initialize the BSS sessions pending Queue */
1417 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
1418 {
1419 wptStatus = wpal_list_init(&(gWDICb.aBSSSessions[i].wptPendingQueue));
1420 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1421 {
1422 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1423 "%s: Failed to init BSS %d pending queue, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001424 __func__, i, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001425 goto fail_bss_queue;
1426 }
1427 }
1428
1429 /*Indicate the control block is sufficiently initialized for callbacks*/
1430 gWDICb.magic = WDI_CONTROL_BLOCK_MAGIC;
1431
1432 /*------------------------------------------------------------------------
1433 Initialize the Data Path Utility Module
1434 ------------------------------------------------------------------------*/
1435 wdiStatus = WDI_DP_UtilsInit(&gWDICb);
1436 if ( WDI_STATUS_SUCCESS != wdiStatus )
1437 {
1438 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1439 "%s: Failed to initialize the DP Util Module, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001440 __func__, wdiStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001441 goto fail_dp_util_init;
1442 }
1443
1444 /* Init Set power state event */
1445 wptStatus = wpalEventInit(&gWDICb.setPowerStateEvent);
Jeff Johnsone7245742012-09-05 17:12:55 -07001446 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -07001447 {
1448 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1449 "%s: Failed to initialize power state event, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001450 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001451 goto fail_power_event;
1452 }
1453
1454 /* Init WCTS action event */
1455 wptStatus = wpalEventInit(&gWDICb.wctsActionEvent);
Jeff Johnsone7245742012-09-05 17:12:55 -07001456 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -07001457 {
1458 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1459 "%s: Failed to initialize WCTS action event, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001460 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001461 goto fail_wcts_event;
1462 }
1463
1464 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001465 Open the Transport Services for Control and Data
Jeff Johnson295189b2012-06-20 16:38:30 -07001466 ------------------------------------------------------------------------*/
1467 wctsCBs.wctsNotifyCB = WDI_NotifyMsgCTSCB;
1468 wctsCBs.wctsNotifyCBData = &gWDICb;
Jeff Johnsone7245742012-09-05 17:12:55 -07001469 wctsCBs.wctsRxMsgCB = WDI_RXMsgCTSCB;
Jeff Johnson295189b2012-06-20 16:38:30 -07001470 wctsCBs.wctsRxMsgCBData = &gWDICb;
1471
Jeff Johnsone7245742012-09-05 17:12:55 -07001472 gWDICb.bCTOpened = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -07001473 gWDICb.wctsHandle = WCTS_OpenTransport( szTransportChName ,
Jeff Johnsone7245742012-09-05 17:12:55 -07001474 WDI_CT_CHANNEL_SIZE,
1475 &wctsCBs );
Jeff Johnson295189b2012-06-20 16:38:30 -07001476
1477 if ( NULL == gWDICb.wctsHandle )
1478 {
1479 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001480 "%s: Failed to open WCTS transport", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001481 goto fail_wcts_open;
1482 }
1483
1484 gWDICb.driverMode = (tDriverType)driverType;
1485 /* FTM mode not need to open Transport Driver */
1486 if(eDRIVER_TYPE_MFG != (tDriverType)driverType)
Jeff Johnsone7245742012-09-05 17:12:55 -07001487 {
Jeff Johnson295189b2012-06-20 16:38:30 -07001488 /*------------------------------------------------------------------------
1489 Open the Data Transport
1490 ------------------------------------------------------------------------*/
1491 if(eWLAN_PAL_STATUS_SUCCESS != WDTS_openTransport(&gWDICb))
1492 {
1493 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001494 "%s: Failed to open the DT Transport", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001495 goto fail_wdts_open;
1496 }
1497 }
1498
1499 /*The WDI is initialized - set state to init */
Jeff Johnsone7245742012-09-05 17:12:55 -07001500 gWDICb.uGlobalState = WDI_INIT_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07001501
1502 /*Send the context as a ptr to the global WDI Control Block*/
1503 *ppWDIGlobalCtx = &gWDICb;
1504
1505 /*Fill in the device capabilities*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001506 pWdiDevCapability->bFrameXtlSupported = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -07001507 pWdiDevCapability->ucMaxSTASupported = gWDICb.ucMaxStations;
1508 pWdiDevCapability->ucMaxBSSSupported = gWDICb.ucMaxBssids;
1509 return WDI_STATUS_SUCCESS;
1510
1511 /* ERROR handlers
1512 Undo everything that completed successfully */
1513
1514 fail_wdts_open:
1515 {
1516 wpt_status eventStatus;
1517
1518 /* Closing WCTS in this scenario is tricky since it has to close
1519 the SMD channel and then we get notified asynchronously when
1520 the channel has been closed. So we take some of the logic from
1521 the "normal" close procedure in WDI_Close()
1522 */
1523
1524 eventStatus = wpalEventReset(&gWDICb.wctsActionEvent);
Jeff Johnsone7245742012-09-05 17:12:55 -07001525 if ( eWLAN_PAL_STATUS_SUCCESS != eventStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -07001526 {
1527 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001528 "%s: Failed to reset WCTS action event", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001529 }
1530
1531 WCTS_CloseTransport(gWDICb.wctsHandle);
1532
1533 /* Wait for WCTS to close the control transport. If we were able
1534 to reset the event flag, then we'll wait for the event,
1535 otherwise we'll wait for a maximum amount of time required for
1536 the channel to be closed */
1537 if ( eWLAN_PAL_STATUS_SUCCESS == eventStatus )
1538 {
Jeff Johnsone7245742012-09-05 17:12:55 -07001539 eventStatus = wpalEventWait(&gWDICb.wctsActionEvent,
Jeff Johnson295189b2012-06-20 16:38:30 -07001540 WDI_WCTS_ACTION_TIMEOUT);
1541 if ( eWLAN_PAL_STATUS_SUCCESS != eventStatus )
1542 {
1543 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001544 "%s: Failed to wait on WCTS action event", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001545 }
1546 }
1547 else
1548 {
1549 wpalSleep(WDI_WCTS_ACTION_TIMEOUT);
1550 }
1551 }
1552 fail_wcts_open:
1553 wpalEventDelete(&gWDICb.wctsActionEvent);
1554 fail_wcts_event:
1555 wpalEventDelete(&gWDICb.setPowerStateEvent);
1556 fail_power_event:
1557 WDI_DP_UtilsExit(&gWDICb);
1558 fail_dp_util_init:
1559 gWDICb.magic = 0;
1560 fail_bss_queue:
1561 /* entries 0 thru i-1 were successfully initialized */
1562 while (0 < i)
1563 {
1564 i--;
1565 wpal_list_destroy(&(gWDICb.aBSSSessions[i].wptPendingQueue));
1566 }
1567 wpal_list_destroy(&(gWDICb.wptPendingAssocSessionIdQueue));
1568 fail_assoc_queue:
1569 wpal_list_destroy(&(gWDICb.wptPendingQueue));
1570 fail_pend_queue:
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -07001571 wpalTimerDelete(&gWDICb.ssrTimer);
1572 fail_timer2:
Jeff Johnson295189b2012-06-20 16:38:30 -07001573 wpalTimerDelete(&gWDICb.wptResponseTimer);
1574 fail_timer:
1575 wpalMutexDelete(&gWDICb.wptMutex);
1576 fail_mutex:
1577 wpalClose(gWDICb.pPALContext);
1578 fail_wpalOpen:
1579 WDI_STATableClose(&gWDICb);
1580 fail_STATableInit:
1581 gWDIInitialized = eWLAN_PAL_FALSE;
1582
1583 return WDI_STATUS_E_FAILURE;
1584
1585}/*WDI_Init*/;
1586
1587/**
1588 @brief WDI_Start will be called when the upper MAC is ready to
1589 commence operation with the WLAN Device. Upon the call
1590 of this API the WLAN DAL will pack and send a HAL Start
1591 message to the lower RIVA sub-system if the SMD channel
1592 has been fully opened and the RIVA subsystem is up.
1593
1594 If the RIVA sub-system is not yet up and running DAL
1595 will queue the request for Open and will wait for the
1596 SMD notification before attempting to send down the
Jeff Johnsone7245742012-09-05 17:12:55 -07001597 message to HAL.
Jeff Johnson295189b2012-06-20 16:38:30 -07001598
1599 WDI_Init must have been called.
1600
Jeff Johnsone7245742012-09-05 17:12:55 -07001601 @param wdiStartParams: the start parameters as specified by
Jeff Johnson295189b2012-06-20 16:38:30 -07001602 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07001603
Jeff Johnson295189b2012-06-20 16:38:30 -07001604 wdiStartRspCb: callback for passing back the response of
1605 the start operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07001606
Jeff Johnson295189b2012-06-20 16:38:30 -07001607 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07001608 callback
1609
Jeff Johnson295189b2012-06-20 16:38:30 -07001610 @see WDI_Start
1611 @return Result of the function call
1612*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001613WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07001614WDI_Start
1615(
1616 WDI_StartReqParamsType* pwdiStartParams,
1617 WDI_StartRspCb wdiStartRspCb,
1618 void* pUserData
1619)
1620{
1621 WDI_EventInfoType wdiEventData;
1622 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
1623
1624 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001625 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07001626 ------------------------------------------------------------------------*/
1627 if ( eWLAN_PAL_FALSE == gWDIInitialized )
1628 {
1629 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1630 "WDI API call before module is initialized - Fail request");
1631
Jeff Johnsone7245742012-09-05 17:12:55 -07001632 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07001633 }
1634
1635 /*------------------------------------------------------------------------
1636 Fill in Event data and post to the Main FSM
1637 ------------------------------------------------------------------------*/
1638 wdiEventData.wdiRequest = WDI_START_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07001639 wdiEventData.pEventData = pwdiStartParams;
1640 wdiEventData.uEventDataSize = sizeof(*pwdiStartParams);
1641 wdiEventData.pCBfnc = wdiStartRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07001642 wdiEventData.pUserData = pUserData;
1643
1644 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
1645
1646}/*WDI_Start*/
1647
1648/**
1649 @brief WDI_Stop will be called when the upper MAC is ready to
1650 stop any operation with the WLAN Device. Upon the call
1651 of this API the WLAN DAL will pack and send a HAL Stop
1652 message to the lower RIVA sub-system if the DAL Core is
1653 in started state.
1654
1655 In state BUSY this request will be queued.
Jeff Johnsone7245742012-09-05 17:12:55 -07001656
1657 Request will not be accepted in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07001658
1659 WDI_Start must have been called.
1660
Jeff Johnsone7245742012-09-05 17:12:55 -07001661 @param wdiStopParams: the stop parameters as specified by
Jeff Johnson295189b2012-06-20 16:38:30 -07001662 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07001663
Jeff Johnson295189b2012-06-20 16:38:30 -07001664 wdiStopRspCb: callback for passing back the response of
1665 the stop operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07001666
Jeff Johnson295189b2012-06-20 16:38:30 -07001667 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07001668 callback
1669
Jeff Johnson295189b2012-06-20 16:38:30 -07001670 @see WDI_Start
1671 @return Result of the function call
1672*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001673WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07001674WDI_Stop
1675(
1676 WDI_StopReqParamsType* pwdiStopParams,
1677 WDI_StopRspCb wdiStopRspCb,
1678 void* pUserData
1679)
1680{
1681 WDI_EventInfoType wdiEventData;
Jeff Johnson43971f52012-07-17 12:26:56 -07001682 WDI_ControlBlockType* pWDICtx = &gWDICb;
Jeff Johnson295189b2012-06-20 16:38:30 -07001683 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
1684
1685 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001686 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07001687 ------------------------------------------------------------------------*/
1688 if ( eWLAN_PAL_FALSE == gWDIInitialized )
1689 {
1690 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1691 "WDI API call before module is initialized - Fail request");
1692
Jeff Johnsone7245742012-09-05 17:12:55 -07001693 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07001694 }
1695
Jeff Johnson43971f52012-07-17 12:26:56 -07001696 /*Access to the global state must be locked before cleaning */
1697 wpalMutexAcquire(&pWDICtx->wptMutex);
1698
1699 /*Clear all pending request*/
1700 WDI_ClearPendingRequests(pWDICtx);
1701
1702 /*We have completed cleaning unlock now*/
1703 wpalMutexRelease(&pWDICtx->wptMutex);
1704
Jeff Johnson295189b2012-06-20 16:38:30 -07001705 /* Free the global variables */
1706 wpalMemoryFree(gpHostWlanFeatCaps);
1707 wpalMemoryFree(gpFwWlanFeatCaps);
Madan Mohan Koyyalamudi3352adb2012-09-28 14:57:24 -07001708 gpHostWlanFeatCaps = NULL;
1709 gpFwWlanFeatCaps = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07001710
1711 /*------------------------------------------------------------------------
1712 Fill in Event data and post to the Main FSM
1713 ------------------------------------------------------------------------*/
1714 wdiEventData.wdiRequest = WDI_STOP_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07001715 wdiEventData.pEventData = pwdiStopParams;
1716 wdiEventData.uEventDataSize = sizeof(*pwdiStopParams);
1717 wdiEventData.pCBfnc = wdiStopRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07001718 wdiEventData.pUserData = pUserData;
1719
1720 return WDI_PostMainEvent(&gWDICb, WDI_STOP_EVENT, &wdiEventData);
1721
1722}/*WDI_Stop*/
1723
1724
1725
1726/**
Jeff Johnsone7245742012-09-05 17:12:55 -07001727 @brief WDI_Close will be called when the upper MAC no longer
Jeff Johnson295189b2012-06-20 16:38:30 -07001728 needs to interact with DAL. DAL will free its control
1729 block.
Jeff Johnsone7245742012-09-05 17:12:55 -07001730
1731 It is only accepted in state STOPPED.
Jeff Johnson295189b2012-06-20 16:38:30 -07001732
1733 WDI_Stop must have been called.
1734
1735 @param none
Jeff Johnsone7245742012-09-05 17:12:55 -07001736
Jeff Johnson295189b2012-06-20 16:38:30 -07001737 @see WDI_Stop
1738 @return Result of the function call
1739*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001740WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07001741WDI_Close
1742(
1743 void
1744)
1745{
1746 wpt_uint8 i;
1747 WDI_EventInfoType wdiEventData;
1748 wpt_status wptStatus;
1749 wpt_status eventStatus;
1750 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
1751
1752 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001753 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07001754 ------------------------------------------------------------------------*/
1755 if ( eWLAN_PAL_FALSE == gWDIInitialized )
1756 {
1757 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1758 "WDI API call before module is initialized - Fail request");
1759
Jeff Johnsone7245742012-09-05 17:12:55 -07001760 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07001761 }
1762
1763 /*Reset WCTS action event prior to posting the WDI_CLOSE_REQ
1764 (the control transport will be closed by the FSM and we'll want
1765 to wait until that completes)*/
1766 eventStatus = wpalEventReset(&gWDICb.wctsActionEvent);
Jeff Johnsone7245742012-09-05 17:12:55 -07001767 if ( eWLAN_PAL_STATUS_SUCCESS != eventStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -07001768 {
1769 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001770 "%s: Failed to reset WCTS action event", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001771 /* fall through and try to finish closing via the FSM */
1772 }
1773
1774 /*------------------------------------------------------------------------
1775 Fill in Event data and post to the Main FSM
1776 ------------------------------------------------------------------------*/
1777 wdiEventData.wdiRequest = WDI_CLOSE_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07001778 wdiEventData.pEventData = NULL;
1779 wdiEventData.uEventDataSize = 0;
1780 wdiEventData.pCBfnc = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07001781 wdiEventData.pUserData = NULL;
1782
1783 gWDIInitialized = eWLAN_PAL_FALSE;
1784
1785 wptStatus = WDI_PostMainEvent(&gWDICb, WDI_CLOSE_EVENT, &wdiEventData);
1786
1787 /*Wait for WCTS to close the control transport
1788 (but only if we were able to reset the event flag*/
1789 if ( eWLAN_PAL_STATUS_SUCCESS == eventStatus )
1790 {
Jeff Johnsone7245742012-09-05 17:12:55 -07001791 eventStatus = wpalEventWait(&gWDICb.wctsActionEvent,
Jeff Johnson295189b2012-06-20 16:38:30 -07001792 WDI_WCTS_ACTION_TIMEOUT);
1793 if ( eWLAN_PAL_STATUS_SUCCESS != eventStatus )
1794 {
1795 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001796 "%s: Failed to wait on WCTS action event", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001797 }
1798 }
1799
1800 /* Destroy the WCTS action event */
1801 wptStatus = wpalEventDelete(&gWDICb.wctsActionEvent);
1802 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1803 {
1804 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
1805 "WDI Close failed to destroy an event");
Jeff Johnsone7245742012-09-05 17:12:55 -07001806 WDI_ASSERT(0);
Jeff Johnson295189b2012-06-20 16:38:30 -07001807 }
1808
1809 /* Destroy the Set Power State event */
1810 wptStatus = wpalEventDelete(&gWDICb.setPowerStateEvent);
1811 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1812 {
1813 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
1814 "WDI Close failed to destroy an event");
1815
Jeff Johnsone7245742012-09-05 17:12:55 -07001816 WDI_ASSERT(0);
Jeff Johnson295189b2012-06-20 16:38:30 -07001817 }
1818
1819 /*------------------------------------------------------------------------
1820 Closes the Data Path Utility Module
1821 ------------------------------------------------------------------------*/
1822 if ( WDI_STATUS_SUCCESS != WDI_DP_UtilsExit(&gWDICb))
1823 {
1824 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
1825 "WDI Init failed to close the DP Util Module");
1826
Jeff Johnsone7245742012-09-05 17:12:55 -07001827 WDI_ASSERT(0);
Jeff Johnson295189b2012-06-20 16:38:30 -07001828 }
1829
1830 /*destroy the BSS sessions pending Queue */
1831 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
1832 {
1833 wpal_list_destroy(&(gWDICb.aBSSSessions[i].wptPendingQueue));
1834 }
1835
1836 /* destroy the WDI Pending Assoc Id Request Queue*/
1837 wpal_list_destroy(&(gWDICb.wptPendingAssocSessionIdQueue));
1838
1839 /* destroy the WDI Pending Request Queue*/
1840 wpal_list_destroy(&(gWDICb.wptPendingQueue));
Jeff Johnsone7245742012-09-05 17:12:55 -07001841
Jeff Johnson295189b2012-06-20 16:38:30 -07001842 /*destroy the response timer */
1843 wptStatus = wpalTimerDelete( &gWDICb.wptResponseTimer);
1844
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -07001845 /*destroy the SSR timer */
1846 wptStatus = wpalTimerDelete( &gWDICb.ssrTimer);
1847
Jeff Johnson295189b2012-06-20 16:38:30 -07001848 /*invalidate the main synchro mutex */
1849 wptStatus = wpalMutexDelete(&gWDICb.wptMutex);
1850 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1851 {
1852 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1853 "Failed to delete mutex %d", wptStatus);
1854 WDI_ASSERT(0);
1855 }
1856
1857 /*Clear control block. note that this will clear the "magic"
1858 which will inhibit all asynchronous callbacks*/
1859 WDI_CleanCB(&gWDICb);
1860
1861 return wptStatus;
1862
1863}/*WDI_Close*/
1864
1865/**
1866 @brief WDI_Shutdown will be called during 'SSR shutdown' operation.
1867 This will do most of the WDI stop & close
1868 operations without doing any handshake with Riva
1869
1870 This will also make sure that the control transport
1871 will NOT be closed.
1872
1873 This request will not be queued.
1874
1875
1876 WDI_Start must have been called.
1877
1878 @param closeTransport: Close control channel if this is set
1879
1880 @return Result of the function call
1881*/
1882WDI_Status
1883WDI_Shutdown
1884(
1885 wpt_boolean closeTransport
1886)
1887{
1888 WDI_EventInfoType wdiEventData;
1889 wpt_status wptStatus;
1890 int i = 0;
1891 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
1892
1893 /*------------------------------------------------------------------------
1894 Sanity Check
1895 ------------------------------------------------------------------------*/
1896 if ( eWLAN_PAL_FALSE == gWDIInitialized )
1897 {
1898 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1899 "WDI API call before module is initialized - Fail request");
1900
1901 return WDI_STATUS_E_NOT_ALLOWED;
1902 }
1903
1904 /*------------------------------------------------------------------------
1905 Fill in Event data and post to the Main FSM
1906 ------------------------------------------------------------------------*/
1907 wdiEventData.wdiRequest = WDI_SHUTDOWN_REQ;
1908 wdiEventData.pEventData = NULL;
1909 wdiEventData.uEventDataSize = 0;
1910
1911 /* Shutdown will not be queued, if the state is busy timer will be
1912 * stopped & this message will be processed.*/
1913 wptStatus = WDI_PostMainEvent(&gWDICb, WDI_SHUTDOWN_EVENT, &wdiEventData);
1914 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1915 {
1916 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001917 "%s: Failed to process shutdown event", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001918 }
1919 /* Destroy the Set Power State event */
1920 wptStatus = wpalEventDelete(&gWDICb.setPowerStateEvent);
1921 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1922 {
1923 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
1924 "WDI Close failed to destroy an event");
1925
1926 WDI_ASSERT(0);
1927 }
1928 /*------------------------------------------------------------------------
1929 Closes the Data Path Utility Module
1930 ------------------------------------------------------------------------*/
1931 if ( WDI_STATUS_SUCCESS != WDI_DP_UtilsExit(&gWDICb))
1932 {
1933 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
1934 "WDI Init failed to close the DP Util Module");
1935
1936 WDI_ASSERT(0);
1937 }
1938 if ( closeTransport )
1939 {
1940 /* Close control transport, called from module unload */
1941 WCTS_CloseTransport(gWDICb.wctsHandle);
1942 }
Madan Mohan Koyyalamudifab2a7e2012-09-28 15:20:00 -07001943 else
1944 {
Madan Mohan Koyyalamudi8b7f1e62012-10-05 14:56:51 -07001945 /* Riva is crashed then SMD is already closed so cleaning all
Madan Mohan Koyyalamudifab2a7e2012-09-28 15:20:00 -07001946 the pending messages in the transport queue */
1947 WCTS_ClearPendingQueue(gWDICb.wctsHandle);
1948 }
Jeff Johnson295189b2012-06-20 16:38:30 -07001949 /*destroy the BSS sessions pending Queue */
1950 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
1951 {
1952 wpal_list_destroy(&(gWDICb.aBSSSessions[i].wptPendingQueue));
1953 }
1954
1955 /* destroy the WDI Pending Assoc Id Request Queue*/
1956 wpal_list_destroy(&(gWDICb.wptPendingAssocSessionIdQueue));
1957 /* destroy the WDI Pending Request Queue*/
1958 wpal_list_destroy(&(gWDICb.wptPendingQueue));
1959 /*destroy the response timer */
1960 wptStatus = wpalTimerDelete( &gWDICb.wptResponseTimer);
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -07001961 /*destroy the SSR timer */
1962 wptStatus = wpalTimerDelete( &gWDICb.ssrTimer);
Jeff Johnson295189b2012-06-20 16:38:30 -07001963
1964 /*invalidate the main synchro mutex */
1965 wptStatus = wpalMutexDelete(&gWDICb.wptMutex);
1966 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1967 {
1968 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001969 "%s: Failed to delete mutex %d", __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001970 WDI_ASSERT(0);
1971 }
Madan Mohan Koyyalamudi3513bf52012-09-18 17:35:53 -07001972 /* Free the global variables */
1973 wpalMemoryFree(gpHostWlanFeatCaps);
1974 wpalMemoryFree(gpFwWlanFeatCaps);
Madan Mohan Koyyalamudi3352adb2012-09-28 14:57:24 -07001975 gpHostWlanFeatCaps = NULL;
1976 gpFwWlanFeatCaps = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07001977 /*Clear control block. note that this will clear the "magic"
1978 which will inhibit all asynchronous callbacks*/
1979 WDI_CleanCB(&gWDICb);
1980 return wptStatus;
1981
1982}/*WDI_Shutdown*/
1983
1984
Jeff Johnsone7245742012-09-05 17:12:55 -07001985/*========================================================================
1986
Jeff Johnson295189b2012-06-20 16:38:30 -07001987 SCAN APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07001988
Jeff Johnson295189b2012-06-20 16:38:30 -07001989==========================================================================*/
1990
1991/**
Jeff Johnsone7245742012-09-05 17:12:55 -07001992 @brief WDI_InitScanReq will be called when the upper MAC wants
Jeff Johnson295189b2012-06-20 16:38:30 -07001993 the WLAN Device to get ready for a scan procedure. Upon
1994 the call of this API the WLAN DAL will pack and send a
1995 HAL Init Scan request message to the lower RIVA
1996 sub-system if DAL is in state STARTED.
1997
1998 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07001999 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002000
2001 WDI_Start must have been called.
2002
2003 @param wdiInitScanParams: the init scan parameters as specified
2004 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002005
Jeff Johnson295189b2012-06-20 16:38:30 -07002006 wdiInitScanRspCb: callback for passing back the response
2007 of the init scan operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002008
Jeff Johnson295189b2012-06-20 16:38:30 -07002009 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002010 callback
2011
Jeff Johnson295189b2012-06-20 16:38:30 -07002012 @see WDI_Start
2013 @return Result of the function call
2014*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002015WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002016WDI_InitScanReq
2017(
2018 WDI_InitScanReqParamsType* pwdiInitScanParams,
2019 WDI_InitScanRspCb wdiInitScanRspCb,
2020 void* pUserData
2021)
2022{
2023 WDI_EventInfoType wdiEventData;
2024 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2025
2026 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002027 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002028 ------------------------------------------------------------------------*/
2029 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2030 {
2031 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2032 "WDI API call before module is initialized - Fail request");
2033
Jeff Johnsone7245742012-09-05 17:12:55 -07002034 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002035 }
2036
2037 /*------------------------------------------------------------------------
2038 Fill in Event data and post to the Main FSM
2039 ------------------------------------------------------------------------*/
2040 wdiEventData.wdiRequest = WDI_INIT_SCAN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002041 wdiEventData.pEventData = pwdiInitScanParams;
2042 wdiEventData.uEventDataSize = sizeof(*pwdiInitScanParams);
2043 wdiEventData.pCBfnc = wdiInitScanRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002044 wdiEventData.pUserData = pUserData;
2045
2046 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2047
2048}/*WDI_InitScanReq*/
2049
2050/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002051 @brief WDI_StartScanReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07002052 wishes to change the Scan channel on the WLAN Device.
2053 Upon the call of this API the WLAN DAL will pack and
2054 send a HAL Start Scan request message to the lower RIVA
2055 sub-system if DAL is in state STARTED.
2056
2057 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002058 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002059
2060 WDI_InitScanReq must have been called.
2061
Jeff Johnsone7245742012-09-05 17:12:55 -07002062 @param wdiStartScanParams: the start scan parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002063 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002064
Jeff Johnson295189b2012-06-20 16:38:30 -07002065 wdiStartScanRspCb: callback for passing back the
2066 response of the start scan operation received from the
2067 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002068
Jeff Johnson295189b2012-06-20 16:38:30 -07002069 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002070 callback
2071
Jeff Johnson295189b2012-06-20 16:38:30 -07002072 @see WDI_InitScanReq
2073 @return Result of the function call
2074*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002075WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002076WDI_StartScanReq
2077(
2078 WDI_StartScanReqParamsType* pwdiStartScanParams,
2079 WDI_StartScanRspCb wdiStartScanRspCb,
2080 void* pUserData
2081)
2082{
2083 WDI_EventInfoType wdiEventData;
2084 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2085
2086 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002087 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002088 ------------------------------------------------------------------------*/
2089 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2090 {
2091 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2092 "WDI API call before module is initialized - Fail request");
2093
Jeff Johnsone7245742012-09-05 17:12:55 -07002094 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002095 }
2096
2097 /*------------------------------------------------------------------------
2098 Fill in Event data and post to the Main FSM
2099 ------------------------------------------------------------------------*/
2100 wdiEventData.wdiRequest = WDI_START_SCAN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002101 wdiEventData.pEventData = pwdiStartScanParams;
2102 wdiEventData.uEventDataSize = sizeof(*pwdiStartScanParams);
2103 wdiEventData.pCBfnc = wdiStartScanRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002104 wdiEventData.pUserData = pUserData;
2105
2106 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2107
2108}/*WDI_StartScanReq*/
2109
2110
2111/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002112 @brief WDI_EndScanReq will be called when the upper MAC is
Jeff Johnson295189b2012-06-20 16:38:30 -07002113 wants to end scanning for a particular channel that it
2114 had set before by calling Scan Start on the WLAN Device.
2115 Upon the call of this API the WLAN DAL will pack and
2116 send a HAL End Scan request message to the lower RIVA
2117 sub-system if DAL is in state STARTED.
2118
2119 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002120 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002121
2122 WDI_StartScanReq must have been called.
2123
Jeff Johnsone7245742012-09-05 17:12:55 -07002124 @param wdiEndScanParams: the end scan parameters as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07002125 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002126
Jeff Johnson295189b2012-06-20 16:38:30 -07002127 wdiEndScanRspCb: callback for passing back the response
2128 of the end scan operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002129
Jeff Johnson295189b2012-06-20 16:38:30 -07002130 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002131 callback
2132
Jeff Johnson295189b2012-06-20 16:38:30 -07002133 @see WDI_StartScanReq
2134 @return Result of the function call
2135*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002136WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002137WDI_EndScanReq
2138(
2139 WDI_EndScanReqParamsType* pwdiEndScanParams,
2140 WDI_EndScanRspCb wdiEndScanRspCb,
2141 void* pUserData
2142)
2143{
2144 WDI_EventInfoType wdiEventData;
2145 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2146
2147 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002148 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002149 ------------------------------------------------------------------------*/
2150 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2151 {
2152 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2153 "WDI API call before module is initialized - Fail request");
2154
Jeff Johnsone7245742012-09-05 17:12:55 -07002155 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002156 }
2157
2158 /*------------------------------------------------------------------------
2159 Fill in Event data and post to the Main FSM
2160 ------------------------------------------------------------------------*/
2161 wdiEventData.wdiRequest = WDI_END_SCAN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002162 wdiEventData.pEventData = pwdiEndScanParams;
2163 wdiEventData.uEventDataSize = sizeof(*pwdiEndScanParams);
2164 wdiEventData.pCBfnc = wdiEndScanRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002165 wdiEventData.pUserData = pUserData;
2166
2167 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2168
2169}/*WDI_EndScanReq*/
2170
2171
2172/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002173 @brief WDI_FinishScanReq will be called when the upper MAC has
Jeff Johnson295189b2012-06-20 16:38:30 -07002174 completed the scan process on the WLAN Device. Upon the
2175 call of this API the WLAN DAL will pack and send a HAL
2176 Finish Scan Request request message to the lower RIVA
2177 sub-system if DAL is in state STARTED.
2178
2179 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002180 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002181
2182 WDI_InitScanReq must have been called.
2183
Jeff Johnsone7245742012-09-05 17:12:55 -07002184 @param wdiFinishScanParams: the finish scan parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002185 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002186
Jeff Johnson295189b2012-06-20 16:38:30 -07002187 wdiFinishScanRspCb: callback for passing back the
2188 response of the finish scan operation received from the
2189 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002190
Jeff Johnson295189b2012-06-20 16:38:30 -07002191 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002192 callback
2193
Jeff Johnson295189b2012-06-20 16:38:30 -07002194 @see WDI_InitScanReq
2195 @return Result of the function call
2196*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002197WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002198WDI_FinishScanReq
2199(
2200 WDI_FinishScanReqParamsType* pwdiFinishScanParams,
2201 WDI_FinishScanRspCb wdiFinishScanRspCb,
2202 void* pUserData
2203)
2204{
2205 WDI_EventInfoType wdiEventData;
2206 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2207
2208 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002209 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002210 ------------------------------------------------------------------------*/
2211 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2212 {
2213 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2214 "WDI API call before module is initialized - Fail request");
2215
Jeff Johnsone7245742012-09-05 17:12:55 -07002216 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002217 }
2218
2219 /*------------------------------------------------------------------------
2220 Fill in Event data and post to the Main FSM
2221 ------------------------------------------------------------------------*/
2222 wdiEventData.wdiRequest = WDI_FINISH_SCAN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002223 wdiEventData.pEventData = pwdiFinishScanParams;
2224 wdiEventData.uEventDataSize = sizeof(*pwdiFinishScanParams);
2225 wdiEventData.pCBfnc = wdiFinishScanRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002226 wdiEventData.pUserData = pUserData;
2227
2228 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2229
2230}/*WDI_FinishScanReq*/
2231
Jeff Johnsone7245742012-09-05 17:12:55 -07002232/*========================================================================
2233
Jeff Johnson295189b2012-06-20 16:38:30 -07002234 ASSOCIATION APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07002235
Jeff Johnson295189b2012-06-20 16:38:30 -07002236==========================================================================*/
2237
2238/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002239 @brief WDI_JoinReq will be called when the upper MAC is ready
Jeff Johnson295189b2012-06-20 16:38:30 -07002240 to start an association procedure to a BSS. Upon the
2241 call of this API the WLAN DAL will pack and send a HAL
2242 Join request message to the lower RIVA sub-system if
2243 DAL is in state STARTED.
2244
2245 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002246 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002247
2248 WDI_Start must have been called.
2249
Jeff Johnsone7245742012-09-05 17:12:55 -07002250 @param wdiJoinParams: the join parameters as specified by
Jeff Johnson295189b2012-06-20 16:38:30 -07002251 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002252
Jeff Johnson295189b2012-06-20 16:38:30 -07002253 wdiJoinRspCb: callback for passing back the response of
2254 the join operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002255
Jeff Johnson295189b2012-06-20 16:38:30 -07002256 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002257 callback
2258
Jeff Johnson295189b2012-06-20 16:38:30 -07002259 @see WDI_Start
2260 @return Result of the function call
2261*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002262WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002263WDI_JoinReq
2264(
2265 WDI_JoinReqParamsType* pwdiJoinParams,
2266 WDI_JoinRspCb wdiJoinRspCb,
2267 void* pUserData
2268)
2269{
2270 WDI_EventInfoType wdiEventData;
2271 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2272
2273 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002274 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002275 ------------------------------------------------------------------------*/
2276 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2277 {
2278 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2279 "WDI API call before module is initialized - Fail request");
2280
Jeff Johnsone7245742012-09-05 17:12:55 -07002281 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002282 }
2283
2284 /*------------------------------------------------------------------------
2285 Fill in Event data and post to the Main FSM
2286 ------------------------------------------------------------------------*/
2287 wdiEventData.wdiRequest = WDI_JOIN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002288 wdiEventData.pEventData = pwdiJoinParams;
2289 wdiEventData.uEventDataSize = sizeof(*pwdiJoinParams);
2290 wdiEventData.pCBfnc = wdiJoinRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002291 wdiEventData.pUserData = pUserData;
2292
2293 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2294
2295}/*WDI_JoinReq*/
2296
2297/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002298 @brief WDI_ConfigBSSReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07002299 wishes to configure the newly acquired or in process of
2300 being acquired BSS to the HW . Upon the call of this API
2301 the WLAN DAL will pack and send a HAL Config BSS request
2302 message to the lower RIVA sub-system if DAL is in state
2303 STARTED.
2304
2305 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002306 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002307
2308 WDI_JoinReq must have been called.
2309
Jeff Johnsone7245742012-09-05 17:12:55 -07002310 @param wdiConfigBSSParams: the config BSS parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002311 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002312
Jeff Johnson295189b2012-06-20 16:38:30 -07002313 wdiConfigBSSRspCb: callback for passing back the
2314 response of the config BSS operation received from the
2315 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002316
Jeff Johnson295189b2012-06-20 16:38:30 -07002317 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002318 callback
2319
Jeff Johnson295189b2012-06-20 16:38:30 -07002320 @see WDI_JoinReq
2321 @return Result of the function call
2322*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002323WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002324WDI_ConfigBSSReq
2325(
2326 WDI_ConfigBSSReqParamsType* pwdiConfigBSSParams,
2327 WDI_ConfigBSSRspCb wdiConfigBSSRspCb,
2328 void* pUserData
2329)
2330{
2331 WDI_EventInfoType wdiEventData;
2332 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2333
2334 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002335 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002336 ------------------------------------------------------------------------*/
2337 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2338 {
2339 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2340 "WDI API call before module is initialized - Fail request");
2341
Jeff Johnsone7245742012-09-05 17:12:55 -07002342 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002343 }
2344
2345 /*------------------------------------------------------------------------
2346 Fill in Event data and post to the Main FSM
2347 ------------------------------------------------------------------------*/
2348 wdiEventData.wdiRequest = WDI_CONFIG_BSS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002349 wdiEventData.pEventData = pwdiConfigBSSParams;
2350 wdiEventData.uEventDataSize = sizeof(*pwdiConfigBSSParams);
2351 wdiEventData.pCBfnc = wdiConfigBSSRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002352 wdiEventData.pUserData = pUserData;
2353
2354 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2355
2356}/*WDI_ConfigBSSReq*/
2357
2358/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002359 @brief WDI_DelBSSReq will be called when the upper MAC is
Jeff Johnson295189b2012-06-20 16:38:30 -07002360 disassociating from the BSS and wishes to notify HW.
2361 Upon the call of this API the WLAN DAL will pack and
2362 send a HAL Del BSS request message to the lower RIVA
2363 sub-system if DAL is in state STARTED.
2364
2365 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002366 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002367
2368 WDI_ConfigBSSReq or WDI_PostAssocReq must have been called.
2369
Jeff Johnsone7245742012-09-05 17:12:55 -07002370 @param wdiDelBSSParams: the del BSS parameters as specified by
Jeff Johnson295189b2012-06-20 16:38:30 -07002371 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002372
Jeff Johnson295189b2012-06-20 16:38:30 -07002373 wdiDelBSSRspCb: callback for passing back the response
2374 of the del bss operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002375
Jeff Johnson295189b2012-06-20 16:38:30 -07002376 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002377 callback
2378
2379 @see WDI_ConfigBSSReq, WDI_PostAssocReq
Jeff Johnson295189b2012-06-20 16:38:30 -07002380 @return Result of the function call
2381*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002382WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002383WDI_DelBSSReq
2384(
2385 WDI_DelBSSReqParamsType* pwdiDelBSSParams,
2386 WDI_DelBSSRspCb wdiDelBSSRspCb,
2387 void* pUserData
2388)
2389{
2390 WDI_EventInfoType wdiEventData;
2391 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2392
2393 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002394 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002395 ------------------------------------------------------------------------*/
2396 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2397 {
2398 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2399 "WDI API call before module is initialized - Fail request");
2400
Jeff Johnsone7245742012-09-05 17:12:55 -07002401 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002402 }
2403
2404 /*------------------------------------------------------------------------
2405 Fill in Event data and post to the Main FSM
2406 ------------------------------------------------------------------------*/
2407 wdiEventData.wdiRequest = WDI_DEL_BSS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002408 wdiEventData.pEventData = pwdiDelBSSParams;
2409 wdiEventData.uEventDataSize = sizeof(*pwdiDelBSSParams);
2410 wdiEventData.pCBfnc = wdiDelBSSRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002411 wdiEventData.pUserData = pUserData;
2412
2413 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2414
2415}/*WDI_DelBSSReq*/
2416
2417/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002418 @brief WDI_PostAssocReq will be called when the upper MAC has
Jeff Johnson295189b2012-06-20 16:38:30 -07002419 associated to a BSS and wishes to configure HW for
2420 associated state. Upon the call of this API the WLAN DAL
2421 will pack and send a HAL Post Assoc request message to
2422 the lower RIVA sub-system if DAL is in state STARTED.
2423
2424 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002425 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002426
2427 WDI_JoinReq must have been called.
2428
2429 @param wdiPostAssocReqParams: the assoc parameters as specified
2430 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002431
Jeff Johnson295189b2012-06-20 16:38:30 -07002432 wdiPostAssocRspCb: callback for passing back the
2433 response of the post assoc operation received from the
2434 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002435
Jeff Johnson295189b2012-06-20 16:38:30 -07002436 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002437 callback
2438
Jeff Johnson295189b2012-06-20 16:38:30 -07002439 @see WDI_JoinReq
2440 @return Result of the function call
2441*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002442WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002443WDI_PostAssocReq
2444(
2445 WDI_PostAssocReqParamsType* pwdiPostAssocReqParams,
2446 WDI_PostAssocRspCb wdiPostAssocRspCb,
2447 void* pUserData
2448)
2449{
2450 WDI_EventInfoType wdiEventData;
2451 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2452
2453 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002454 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002455 ------------------------------------------------------------------------*/
2456 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2457 {
2458 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2459 "WDI API call before module is initialized - Fail request");
2460
Jeff Johnsone7245742012-09-05 17:12:55 -07002461 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002462 }
2463
2464 /*------------------------------------------------------------------------
2465 Fill in Event data and post to the Main FSM
2466 ------------------------------------------------------------------------*/
2467 wdiEventData.wdiRequest = WDI_POST_ASSOC_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002468 wdiEventData.pEventData = pwdiPostAssocReqParams;
2469 wdiEventData.uEventDataSize = sizeof(*pwdiPostAssocReqParams);
2470 wdiEventData.pCBfnc = wdiPostAssocRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002471 wdiEventData.pUserData = pUserData;
2472
2473 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2474
2475}/*WDI_PostAssocReq*/
2476
2477/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002478 @brief WDI_DelSTAReq will be called when the upper MAC when an
Jeff Johnson295189b2012-06-20 16:38:30 -07002479 association with another STA has ended and the station
2480 must be deleted from HW. Upon the call of this API the
2481 WLAN DAL will pack and send a HAL Del STA request
2482 message to the lower RIVA sub-system if DAL is in state
2483 STARTED.
2484
2485 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002486 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002487
2488 WDI_PostAssocReq must have been called.
2489
Jeff Johnsone7245742012-09-05 17:12:55 -07002490 @param wdiDelSTAParams: the Del STA parameters as specified by
Jeff Johnson295189b2012-06-20 16:38:30 -07002491 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002492
Jeff Johnson295189b2012-06-20 16:38:30 -07002493 wdiDelSTARspCb: callback for passing back the response
2494 of the del STA operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002495
Jeff Johnson295189b2012-06-20 16:38:30 -07002496 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002497 callback
2498
Jeff Johnson295189b2012-06-20 16:38:30 -07002499 @see WDI_PostAssocReq
2500 @return Result of the function call
2501*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002502WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002503WDI_DelSTAReq
2504(
2505 WDI_DelSTAReqParamsType* pwdiDelSTAParams,
2506 WDI_DelSTARspCb wdiDelSTARspCb,
2507 void* pUserData
2508)
2509{
2510 WDI_EventInfoType wdiEventData;
2511 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2512
2513 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002514 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002515 ------------------------------------------------------------------------*/
2516 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2517 {
2518 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2519 "WDI API call before module is initialized - Fail request");
2520
Jeff Johnsone7245742012-09-05 17:12:55 -07002521 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002522 }
2523
2524 /*------------------------------------------------------------------------
2525 Fill in Event data and post to the Main FSM
2526 ------------------------------------------------------------------------*/
2527 wdiEventData.wdiRequest = WDI_DEL_STA_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002528 wdiEventData.pEventData = pwdiDelSTAParams;
2529 wdiEventData.uEventDataSize = sizeof(*pwdiDelSTAParams);
2530 wdiEventData.pCBfnc = wdiDelSTARspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002531 wdiEventData.pUserData = pUserData;
2532
2533 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2534
2535}/*WDI_DelSTAReq*/
2536
Jeff Johnsone7245742012-09-05 17:12:55 -07002537/*========================================================================
2538
Jeff Johnson295189b2012-06-20 16:38:30 -07002539 SECURITY APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07002540
Jeff Johnson295189b2012-06-20 16:38:30 -07002541==========================================================================*/
2542
2543/**
2544 @brief WDI_SetBSSKeyReq will be called when the upper MAC wants to
2545 install a BSS encryption key on the HW. Upon the call of this
2546 API the WLAN DAL will pack and send a Set BSS Key request
2547 message to the lower RIVA sub-system if DAL is in state
2548 STARTED.
2549
2550 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002551 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002552
2553 WDI_PostAssocReq must have been called.
2554
Jeff Johnsone7245742012-09-05 17:12:55 -07002555 @param wdiSetBSSKeyParams: the BSS Key set parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002556 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002557
Jeff Johnson295189b2012-06-20 16:38:30 -07002558 wdiSetBSSKeyRspCb: callback for passing back the
2559 response of the set BSS Key operation received from the
2560 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002561
Jeff Johnson295189b2012-06-20 16:38:30 -07002562 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002563 callback
2564
Jeff Johnson295189b2012-06-20 16:38:30 -07002565 @see WDI_PostAssocReq
2566 @return Result of the function call
2567*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002568WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002569WDI_SetBSSKeyReq
2570(
2571 WDI_SetBSSKeyReqParamsType* pwdiSetBSSKeyParams,
2572 WDI_SetBSSKeyRspCb wdiSetBSSKeyRspCb,
2573 void* pUserData
2574)
2575{
2576 WDI_EventInfoType wdiEventData;
2577 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2578
2579 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002580 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002581 ------------------------------------------------------------------------*/
2582 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2583 {
2584 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2585 "WDI API call before module is initialized - Fail request");
2586
Jeff Johnsone7245742012-09-05 17:12:55 -07002587 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002588 }
2589
2590 /*------------------------------------------------------------------------
2591 Fill in Event data and post to the Main FSM
2592 ------------------------------------------------------------------------*/
2593 wdiEventData.wdiRequest = WDI_SET_BSS_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002594 wdiEventData.pEventData = pwdiSetBSSKeyParams;
2595 wdiEventData.uEventDataSize = sizeof(*pwdiSetBSSKeyParams);
2596 wdiEventData.pCBfnc = wdiSetBSSKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002597 wdiEventData.pUserData = pUserData;
2598
2599 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2600
2601}/*WDI_SetBSSKeyReq*/
2602
2603/**
2604 @brief WDI_RemoveBSSKeyReq will be called when the upper MAC wants to
2605 uninstall a BSS key from HW. Upon the call of this API the
2606 WLAN DAL will pack and send a HAL Remove BSS Key request
2607 message to the lower RIVA sub-system if DAL is in state
2608 STARTED.
2609
2610 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002611 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002612
2613 WDI_SetBSSKeyReq must have been called.
2614
Jeff Johnsone7245742012-09-05 17:12:55 -07002615 @param wdiRemoveBSSKeyParams: the remove BSS key parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002616 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002617
Jeff Johnson295189b2012-06-20 16:38:30 -07002618 wdiRemoveBSSKeyRspCb: callback for passing back the
2619 response of the remove BSS key operation received from
2620 the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002621
Jeff Johnson295189b2012-06-20 16:38:30 -07002622 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002623 callback
2624
Jeff Johnson295189b2012-06-20 16:38:30 -07002625 @see WDI_SetBSSKeyReq
2626 @return Result of the function call
2627*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002628WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002629WDI_RemoveBSSKeyReq
2630(
2631 WDI_RemoveBSSKeyReqParamsType* pwdiRemoveBSSKeyParams,
2632 WDI_RemoveBSSKeyRspCb wdiRemoveBSSKeyRspCb,
2633 void* pUserData
2634)
2635{
2636 WDI_EventInfoType wdiEventData;
2637 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2638
2639 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002640 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002641 ------------------------------------------------------------------------*/
2642 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2643 {
2644 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2645 "WDI API call before module is initialized - Fail request");
2646
Jeff Johnsone7245742012-09-05 17:12:55 -07002647 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002648 }
2649
2650 /*------------------------------------------------------------------------
2651 Fill in Event data and post to the Main FSM
2652 ------------------------------------------------------------------------*/
2653 wdiEventData.wdiRequest = WDI_RMV_BSS_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002654 wdiEventData.pEventData = pwdiRemoveBSSKeyParams;
2655 wdiEventData.uEventDataSize = sizeof(*pwdiRemoveBSSKeyParams);
2656 wdiEventData.pCBfnc = wdiRemoveBSSKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002657 wdiEventData.pUserData = pUserData;
2658
2659 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2660
2661}/*WDI_RemoveBSSKeyReq*/
2662
2663
2664/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002665 @brief WDI_SetSTAKeyReq will be called when the upper MAC is
Jeff Johnson295189b2012-06-20 16:38:30 -07002666 ready to install a STA(ast) encryption key in HW. Upon
2667 the call of this API the WLAN DAL will pack and send a
2668 HAL Set STA Key request message to the lower RIVA
2669 sub-system if DAL is in state STARTED.
2670
2671 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002672 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002673
2674 WDI_PostAssocReq must have been called.
2675
Jeff Johnsone7245742012-09-05 17:12:55 -07002676 @param wdiSetSTAKeyParams: the set STA key parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002677 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002678
Jeff Johnson295189b2012-06-20 16:38:30 -07002679 wdiSetSTAKeyRspCb: callback for passing back the
2680 response of the set STA key operation received from the
2681 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002682
Jeff Johnson295189b2012-06-20 16:38:30 -07002683 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002684 callback
2685
Jeff Johnson295189b2012-06-20 16:38:30 -07002686 @see WDI_PostAssocReq
2687 @return Result of the function call
2688*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002689WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002690WDI_SetSTAKeyReq
2691(
2692 WDI_SetSTAKeyReqParamsType* pwdiSetSTAKeyParams,
2693 WDI_SetSTAKeyRspCb wdiSetSTAKeyRspCb,
2694 void* pUserData
2695)
2696{
2697 WDI_EventInfoType wdiEventData;
2698 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2699
2700 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002701 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002702 ------------------------------------------------------------------------*/
2703 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2704 {
2705 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2706 "WDI API call before module is initialized - Fail request");
2707
Jeff Johnsone7245742012-09-05 17:12:55 -07002708 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002709 }
2710
2711 /*------------------------------------------------------------------------
2712 Fill in Event data and post to the Main FSM
2713 ------------------------------------------------------------------------*/
2714 wdiEventData.wdiRequest = WDI_SET_STA_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002715 wdiEventData.pEventData = pwdiSetSTAKeyParams;
2716 wdiEventData.uEventDataSize = sizeof(*pwdiSetSTAKeyParams);
2717 wdiEventData.pCBfnc = wdiSetSTAKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002718 wdiEventData.pUserData = pUserData;
2719
2720 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2721
2722}/*WDI_SetSTAKeyReq*/
2723
2724
2725/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002726 @brief WDI_RemoveSTAKeyReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07002727 wants to uninstall a previously set STA key in HW. Upon
2728 the call of this API the WLAN DAL will pack and send a
2729 HAL Remove STA Key request message to the lower RIVA
2730 sub-system if DAL is in state STARTED.
2731
2732 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002733 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002734
2735 WDI_SetSTAKeyReq must have been called.
2736
Jeff Johnsone7245742012-09-05 17:12:55 -07002737 @param wdiRemoveSTAKeyParams: the remove STA key parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002738 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002739
Jeff Johnson295189b2012-06-20 16:38:30 -07002740 wdiRemoveSTAKeyRspCb: callback for passing back the
2741 response of the remove STA key operation received from
2742 the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002743
Jeff Johnson295189b2012-06-20 16:38:30 -07002744 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002745 callback
2746
Jeff Johnson295189b2012-06-20 16:38:30 -07002747 @see WDI_SetSTAKeyReq
2748 @return Result of the function call
2749*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002750WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002751WDI_RemoveSTAKeyReq
2752(
2753 WDI_RemoveSTAKeyReqParamsType* pwdiRemoveSTAKeyParams,
2754 WDI_RemoveSTAKeyRspCb wdiRemoveSTAKeyRspCb,
2755 void* pUserData
2756)
2757{
2758 WDI_EventInfoType wdiEventData;
2759 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2760
2761 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002762 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002763 ------------------------------------------------------------------------*/
2764 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2765 {
2766 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2767 "WDI API call before module is initialized - Fail request");
2768
Jeff Johnsone7245742012-09-05 17:12:55 -07002769 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002770 }
2771
2772 /*------------------------------------------------------------------------
2773 Fill in Event data and post to the Main FSM
2774 ------------------------------------------------------------------------*/
2775 wdiEventData.wdiRequest = WDI_RMV_STA_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002776 wdiEventData.pEventData = pwdiRemoveSTAKeyParams;
2777 wdiEventData.uEventDataSize = sizeof(*pwdiRemoveSTAKeyParams);
2778 wdiEventData.pCBfnc = wdiRemoveSTAKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002779 wdiEventData.pUserData = pUserData;
2780
2781 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2782
2783}/*WDI_RemoveSTAKeyReq*/
2784
2785
2786/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002787 @brief WDI_SetSTABcastKeyReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07002788 wants to install a STA Bcast encryption key on the HW.
2789 Upon the call of this API the WLAN DAL will pack and
2790 send a HAL Start request message to the lower RIVA
2791 sub-system if DAL is in state STARTED.
2792
2793 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002794 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002795
2796 WDI_PostAssocReq must have been called.
2797
Jeff Johnsone7245742012-09-05 17:12:55 -07002798 @param pwdiSetSTABcastKeyParams: the BSS Key set parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002799 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002800
Jeff Johnson295189b2012-06-20 16:38:30 -07002801 wdiSetSTABcastKeyRspCb: callback for passing back the
2802 response of the set BSS Key operation received from the
2803 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002804
Jeff Johnson295189b2012-06-20 16:38:30 -07002805 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002806 callback
2807
Jeff Johnson295189b2012-06-20 16:38:30 -07002808 @see WDI_PostAssocReq
2809 @return Result of the function call
2810*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002811WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002812WDI_SetSTABcastKeyReq
2813(
2814 WDI_SetSTAKeyReqParamsType* pwdiSetSTABcastKeyParams,
2815 WDI_SetSTAKeyRspCb wdiSetSTABcastKeyRspCb,
2816 void* pUserData
2817)
2818
2819{
2820 WDI_EventInfoType wdiEventData;
2821 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2822
2823 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002824 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002825 ------------------------------------------------------------------------*/
2826 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2827 {
2828 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2829 "WDI API call before module is initialized - Fail request");
2830
Jeff Johnsone7245742012-09-05 17:12:55 -07002831 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002832 }
2833
2834 /*------------------------------------------------------------------------
2835 Fill in Event data and post to the Main FSM
2836 ------------------------------------------------------------------------*/
2837 wdiEventData.wdiRequest = WDI_SET_STA_BCAST_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002838 wdiEventData.pEventData = pwdiSetSTABcastKeyParams;
2839 wdiEventData.uEventDataSize = sizeof(*pwdiSetSTABcastKeyParams);
2840 wdiEventData.pCBfnc = wdiSetSTABcastKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002841 wdiEventData.pUserData = pUserData;
2842
2843 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2844
2845}/*WDI_SetSTABcastKeyReq*/
2846
2847/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002848 @brief WDI_RemoveSTABcastKeyReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07002849 MAC wants to uninstall a STA Bcast key from HW. Upon the
2850 call of this API the WLAN DAL will pack and send a HAL
2851 Remove STA Bcast Key request message to the lower RIVA
2852 sub-system if DAL is in state STARTED.
2853
2854 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002855 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002856
2857 WDI_SetSTABcastKeyReq must have been called.
2858
Jeff Johnsone7245742012-09-05 17:12:55 -07002859 @param pwdiRemoveSTABcastKeyParams: the remove BSS key
Jeff Johnson295189b2012-06-20 16:38:30 -07002860 parameters as specified by the Device
2861 Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002862
Jeff Johnson295189b2012-06-20 16:38:30 -07002863 wdiRemoveSTABcastKeyRspCb: callback for passing back the
2864 response of the remove STA Bcast key operation received
2865 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002866
Jeff Johnson295189b2012-06-20 16:38:30 -07002867 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002868 callback
2869
Jeff Johnson295189b2012-06-20 16:38:30 -07002870 @see WDI_SetSTABcastKeyReq
2871 @return Result of the function call
2872*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002873WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002874WDI_RemoveSTABcastKeyReq
2875(
2876 WDI_RemoveSTAKeyReqParamsType* pwdiRemoveSTABcastKeyParams,
2877 WDI_RemoveSTAKeyRspCb wdiRemoveSTABcastKeyRspCb,
2878 void* pUserData
2879)
2880{
2881 WDI_EventInfoType wdiEventData;
2882 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2883
2884 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002885 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002886 ------------------------------------------------------------------------*/
2887 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2888 {
2889 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2890 "WDI API call before module is initialized - Fail request");
2891
Jeff Johnsone7245742012-09-05 17:12:55 -07002892 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002893 }
2894
2895 /*------------------------------------------------------------------------
2896 Fill in Event data and post to the Main FSM
2897 ------------------------------------------------------------------------*/
2898 wdiEventData.wdiRequest = WDI_RMV_STA_BCAST_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002899 wdiEventData.pEventData = pwdiRemoveSTABcastKeyParams;
2900 wdiEventData.uEventDataSize = sizeof(*pwdiRemoveSTABcastKeyParams);
2901 wdiEventData.pCBfnc = wdiRemoveSTABcastKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002902 wdiEventData.pUserData = pUserData;
2903
2904 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2905
2906}/*WDI_RemoveSTABcastKeyReq*/
2907
2908/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002909 @brief WDI_SetMaxTxPowerReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07002910 MAC wants to set Max Tx Power to HW. Upon the
2911 call of this API the WLAN DAL will pack and send a HAL
2912 Remove STA Bcast Key request message to the lower RIVA
2913 sub-system if DAL is in state STARTED.
2914
2915 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002916 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002917
2918 WDI_SetSTABcastKeyReq must have been called.
2919
Jeff Johnsone7245742012-09-05 17:12:55 -07002920 @param pwdiRemoveSTABcastKeyParams: the remove BSS key
Jeff Johnson295189b2012-06-20 16:38:30 -07002921 parameters as specified by the Device
2922 Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002923
Jeff Johnson295189b2012-06-20 16:38:30 -07002924 wdiRemoveSTABcastKeyRspCb: callback for passing back the
2925 response of the remove STA Bcast key operation received
2926 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002927
Jeff Johnson295189b2012-06-20 16:38:30 -07002928 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002929 callback
2930
Jeff Johnson295189b2012-06-20 16:38:30 -07002931 @see WDI_SetMaxTxPowerReq
2932 @return Result of the function call
2933*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002934WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002935WDI_SetMaxTxPowerReq
2936(
2937 WDI_SetMaxTxPowerParamsType* pwdiSetMaxTxPowerParams,
2938 WDA_SetMaxTxPowerRspCb wdiReqStatusCb,
2939 void* pUserData
2940)
2941{
2942 WDI_EventInfoType wdiEventData;
2943 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2944
2945 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002946 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002947 ------------------------------------------------------------------------*/
2948 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2949 {
2950 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2951 "WDI API call before module is initialized - Fail request");
2952
Jeff Johnsone7245742012-09-05 17:12:55 -07002953 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002954 }
2955
2956 /*------------------------------------------------------------------------
2957 Fill in Event data and post to the Main FSM
2958 ------------------------------------------------------------------------*/
2959 wdiEventData.wdiRequest = WDI_SET_MAX_TX_POWER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002960 wdiEventData.pEventData = pwdiSetMaxTxPowerParams;
2961 wdiEventData.uEventDataSize = sizeof(*pwdiSetMaxTxPowerParams);
2962 wdiEventData.pCBfnc = wdiReqStatusCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002963 wdiEventData.pUserData = pUserData;
2964
2965 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2966}
2967
schang86c22c42013-03-13 18:41:24 -07002968/**
Arif Hussaina5ebce02013-08-09 15:09:58 -07002969 @brief WDI_SetMaxTxPowerPerBandReq will be called when the upper
2970 MAC wants to set Max Tx Power to HW for specific band.
2971
2972 @param pwdiSetMaxTxPowerPerBandParams: Tx Power Information
2973
2974 wdiReqStatusCb: callback for passing back the
2975 response msg from the device
2976
2977 pUserData: user data will be passed back with the
2978 callback
2979
2980 @see WDI_SetMaxTxPowerPerBandReq
2981 @return Result of the function call
2982*/
2983WDI_Status
2984WDI_SetMaxTxPowerPerBandReq
2985(
2986 WDI_SetMaxTxPowerPerBandParamsType* pwdiSetMaxTxPowerPerBandParams,
2987 WDA_SetMaxTxPowerPerBandRspCb wdiReqStatusCb,
2988 void* pUserData
2989)
2990{
2991 WDI_EventInfoType wdiEventData;
2992 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2993
2994 /*------------------------------------------------------------------------
2995 Sanity Check
2996 ------------------------------------------------------------------------*/
2997 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2998 {
2999 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3000 "WDI API call before module is initialized - Fail request");
3001
3002 return WDI_STATUS_E_NOT_ALLOWED;
3003 }
3004
3005 /*------------------------------------------------------------------------
3006 Fill in Event data and post to the Main FSM
3007 ------------------------------------------------------------------------*/
3008 wdiEventData.wdiRequest = WDI_SET_MAX_TX_POWER_PER_BAND_REQ;
3009 wdiEventData.pEventData = pwdiSetMaxTxPowerPerBandParams;
3010 wdiEventData.uEventDataSize = sizeof(*pwdiSetMaxTxPowerPerBandParams);
3011 wdiEventData.pCBfnc = wdiReqStatusCb;
3012 wdiEventData.pUserData = pUserData;
3013
3014 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3015}
3016
3017/**
schang86c22c42013-03-13 18:41:24 -07003018 @brief WDI_SetTxPowerReq will be called when the upper
3019 MAC wants to set Tx Power to HW.
3020 In state BUSY this request will be queued. Request won't
3021 be allowed in any other state.
3022
3023
3024 @param pwdiSetTxPowerParams: set TS Power parameters
3025 BSSID and target TX Power with dbm included
3026
3027 wdiReqStatusCb: callback for passing back the response
3028
3029 pUserData: user data will be passed back with the
3030 callback
3031
3032 @return Result of the function call
3033*/
3034WDI_Status
3035WDI_SetTxPowerReq
3036(
3037 WDI_SetTxPowerParamsType* pwdiSetTxPowerParams,
3038 WDA_SetTxPowerRspCb wdiReqStatusCb,
3039 void* pUserData
3040)
3041{
3042 WDI_EventInfoType wdiEventData;
3043 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3044
3045 /*------------------------------------------------------------------------
3046 Sanity Check
3047 ------------------------------------------------------------------------*/
3048 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3049 {
3050 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3051 "WDI API call before module is initialized - Fail request");
3052
3053 return WDI_STATUS_E_NOT_ALLOWED;
3054 }
3055
3056 /*------------------------------------------------------------------------
3057 Fill in Event data and post to the Main FSM
3058 ------------------------------------------------------------------------*/
3059 wdiEventData.wdiRequest = WDI_SET_TX_POWER_REQ;
3060 wdiEventData.pEventData = pwdiSetTxPowerParams;
3061 wdiEventData.uEventDataSize = sizeof(*pwdiSetTxPowerParams);
3062 wdiEventData.pCBfnc = wdiReqStatusCb;
3063 wdiEventData.pUserData = pUserData;
3064
3065 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3066}
3067
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -08003068#ifdef FEATURE_WLAN_ESE
Jeff Johnson295189b2012-06-20 16:38:30 -07003069WDI_Status
3070WDI_TSMStatsReq
3071(
3072 WDI_TSMStatsReqParamsType* pwdiTsmReqParams,
3073 WDI_TsmRspCb wdiReqStatusCb,
3074 void* pUserData
3075)
3076{
3077 WDI_EventInfoType wdiEventData;
3078 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Jeff Johnson295189b2012-06-20 16:38:30 -07003079 /*------------------------------------------------------------------------
3080 Sanity Check
3081 ------------------------------------------------------------------------*/
3082 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3083 {
3084 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3085 "WDI API call before module is initialized - Fail request");
3086
3087 return WDI_STATUS_E_NOT_ALLOWED;
3088 }
3089
3090 /*------------------------------------------------------------------------
3091 Fill in Event data and post to the Main FSM
3092 ------------------------------------------------------------------------*/
3093 wdiEventData.wdiRequest = WDI_TSM_STATS_REQ;
3094 wdiEventData.pEventData = pwdiTsmReqParams;
3095 wdiEventData.uEventDataSize = sizeof(*pwdiTsmReqParams);
3096 wdiEventData.pCBfnc = wdiReqStatusCb;
3097 wdiEventData.pUserData = pUserData;
3098
3099 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3100
3101}
3102#endif
3103
3104/*========================================================================
3105
3106 QoS and BA APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07003107
Jeff Johnson295189b2012-06-20 16:38:30 -07003108==========================================================================*/
3109
3110/**
3111 @brief WDI_AddTSReq will be called when the upper MAC to inform
3112 the device of a successful add TSpec negotiation. HW
3113 needs to receive the TSpec Info from the UMAC in order
3114 to configure properly the QoS data traffic. Upon the
3115 call of this API the WLAN DAL will pack and send a HAL
3116 Add TS request message to the lower RIVA sub-system if
3117 DAL is in state STARTED.
3118
3119 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003120 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003121
3122 WDI_PostAssocReq must have been called.
3123
3124 @param wdiAddTsReqParams: the add TS parameters as specified by
3125 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003126
Jeff Johnson295189b2012-06-20 16:38:30 -07003127 wdiAddTsRspCb: callback for passing back the response of
3128 the add TS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003129
Jeff Johnson295189b2012-06-20 16:38:30 -07003130 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003131 callback
3132
Jeff Johnson295189b2012-06-20 16:38:30 -07003133 @see WDI_PostAssocReq
3134 @return Result of the function call
3135*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003136WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003137WDI_AddTSReq
3138(
3139 WDI_AddTSReqParamsType* pwdiAddTsReqParams,
3140 WDI_AddTsRspCb wdiAddTsRspCb,
3141 void* pUserData
3142)
3143{
3144 WDI_EventInfoType wdiEventData;
3145 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3146
3147 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003148 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003149 ------------------------------------------------------------------------*/
3150 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3151 {
3152 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3153 "WDI API call before module is initialized - Fail request");
3154
Jeff Johnsone7245742012-09-05 17:12:55 -07003155 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003156 }
3157
3158 /*------------------------------------------------------------------------
3159 Fill in Event data and post to the Main FSM
3160 ------------------------------------------------------------------------*/
3161 wdiEventData.wdiRequest = WDI_ADD_TS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003162 wdiEventData.pEventData = pwdiAddTsReqParams;
3163 wdiEventData.uEventDataSize = sizeof(*pwdiAddTsReqParams);
3164 wdiEventData.pCBfnc = wdiAddTsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003165 wdiEventData.pUserData = pUserData;
3166
3167 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3168
3169}/*WDI_AddTSReq*/
3170
3171
3172
3173/**
3174 @brief WDI_DelTSReq will be called when the upper MAC has ended
3175 admission on a specific AC. This is to inform HW that
3176 QoS traffic parameters must be rest. Upon the call of
3177 this API the WLAN DAL will pack and send a HAL Del TS
3178 request message to the lower RIVA sub-system if DAL is
3179 in state STARTED.
3180
3181 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003182 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003183
3184 WDI_AddTSReq must have been called.
3185
3186 @param wdiDelTsReqParams: the del TS parameters as specified by
3187 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003188
Jeff Johnson295189b2012-06-20 16:38:30 -07003189 wdiDelTsRspCb: callback for passing back the response of
3190 the del TS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003191
Jeff Johnson295189b2012-06-20 16:38:30 -07003192 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003193 callback
3194
Jeff Johnson295189b2012-06-20 16:38:30 -07003195 @see WDI_AddTSReq
3196 @return Result of the function call
3197*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003198WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003199WDI_DelTSReq
3200(
3201 WDI_DelTSReqParamsType* pwdiDelTsReqParams,
3202 WDI_DelTsRspCb wdiDelTsRspCb,
3203 void* pUserData
3204)
3205{
3206 WDI_EventInfoType wdiEventData;
3207 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3208
3209 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003210 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003211 ------------------------------------------------------------------------*/
3212 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3213 {
3214 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3215 "WDI API call before module is initialized - Fail request");
3216
Jeff Johnsone7245742012-09-05 17:12:55 -07003217 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003218 }
3219
3220 /*------------------------------------------------------------------------
3221 Fill in Event data and post to the Main FSM
3222 ------------------------------------------------------------------------*/
3223 wdiEventData.wdiRequest = WDI_DEL_TS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003224 wdiEventData.pEventData = pwdiDelTsReqParams;
3225 wdiEventData.uEventDataSize = sizeof(*pwdiDelTsReqParams);
3226 wdiEventData.pCBfnc = wdiDelTsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003227 wdiEventData.pUserData = pUserData;
3228
3229 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3230
3231}/*WDI_DelTSReq*/
3232
3233
3234
3235/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003236 @brief WDI_UpdateEDCAParams will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07003237 wishes to update the EDCA parameters used by HW for QoS
3238 data traffic. Upon the call of this API the WLAN DAL
3239 will pack and send a HAL Update EDCA Params request
3240 message to the lower RIVA sub-system if DAL is in state
3241 STARTED.
3242
3243 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003244 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003245
3246 WDI_PostAssocReq must have been called.
3247
Jeff Johnsone7245742012-09-05 17:12:55 -07003248 @param wdiUpdateEDCAParams: the start parameters as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07003249 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003250
Jeff Johnson295189b2012-06-20 16:38:30 -07003251 wdiUpdateEDCAParamsRspCb: callback for passing back the
3252 response of the start operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003253
Jeff Johnson295189b2012-06-20 16:38:30 -07003254 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003255 callback
3256
Jeff Johnson295189b2012-06-20 16:38:30 -07003257 @see WDI_PostAssocReq
3258 @return Result of the function call
3259*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003260WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003261WDI_UpdateEDCAParams
3262(
3263 WDI_UpdateEDCAParamsType* pwdiUpdateEDCAParams,
3264 WDI_UpdateEDCAParamsRspCb wdiUpdateEDCAParamsRspCb,
3265 void* pUserData
3266)
3267{
3268 WDI_EventInfoType wdiEventData;
3269 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3270
3271 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003272 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003273 ------------------------------------------------------------------------*/
3274 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3275 {
3276 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3277 "WDI API call before module is initialized - Fail request");
3278
Jeff Johnsone7245742012-09-05 17:12:55 -07003279 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003280 }
3281
3282 /*------------------------------------------------------------------------
3283 Fill in Event data and post to the Main FSM
3284 ------------------------------------------------------------------------*/
3285 wdiEventData.wdiRequest = WDI_UPD_EDCA_PRMS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003286 wdiEventData.pEventData = pwdiUpdateEDCAParams;
3287 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateEDCAParams);
3288 wdiEventData.pCBfnc = wdiUpdateEDCAParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003289 wdiEventData.pUserData = pUserData;
3290
3291 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3292
3293}/*WDI_UpdateEDCAParams*/
3294
3295
3296/**
3297 @brief WDI_AddBASessionReq will be called when the upper MAC has setup
3298 successfully a BA session and needs to notify the HW for
3299 the appropriate settings to take place. Upon the call of
3300 this API the WLAN DAL will pack and send a HAL Add BA
3301 request message to the lower RIVA sub-system if DAL is
3302 in state STARTED.
3303
3304 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003305 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003306
3307 WDI_PostAssocReq must have been called.
3308
3309 @param wdiAddBAReqParams: the add BA parameters as specified by
3310 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003311
Jeff Johnson295189b2012-06-20 16:38:30 -07003312 wdiAddBARspCb: callback for passing back the response of
3313 the add BA operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003314
Jeff Johnson295189b2012-06-20 16:38:30 -07003315 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003316 callback
3317
Jeff Johnson295189b2012-06-20 16:38:30 -07003318 @see WDI_PostAssocReq
3319 @return Result of the function call
3320*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003321WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003322WDI_AddBASessionReq
3323(
3324 WDI_AddBASessionReqParamsType* pwdiAddBASessionReqParams,
3325 WDI_AddBASessionRspCb wdiAddBASessionRspCb,
3326 void* pUserData
3327)
3328{
3329 WDI_EventInfoType wdiEventData;
3330 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3331
3332 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003333 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003334 ------------------------------------------------------------------------*/
3335 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3336 {
3337 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3338 "WDI API call before module is initialized - Fail request");
3339
Jeff Johnsone7245742012-09-05 17:12:55 -07003340 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003341 }
3342
3343 /*------------------------------------------------------------------------
3344 Fill in Event data and post to the Main FSM
3345 ------------------------------------------------------------------------*/
3346 wdiEventData.wdiRequest = WDI_ADD_BA_SESSION_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003347 wdiEventData.pEventData = pwdiAddBASessionReqParams;
3348 wdiEventData.uEventDataSize = sizeof(*pwdiAddBASessionReqParams);
3349 wdiEventData.pCBfnc = wdiAddBASessionRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003350 wdiEventData.pUserData = pUserData;
3351
3352 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3353
3354}/*WDI_AddBASessionReq*/
3355
3356/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003357 @brief WDI_DelBAReq will be called when the upper MAC wants to
Jeff Johnson295189b2012-06-20 16:38:30 -07003358 inform HW that it has deleted a previously created BA
3359 session. Upon the call of this API the WLAN DAL will
3360 pack and send a HAL Del BA request message to the lower
3361 RIVA sub-system if DAL is in state STARTED.
3362
3363 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003364 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003365
3366 WDI_AddBAReq must have been called.
3367
3368 @param wdiDelBAReqParams: the del BA parameters as specified by
3369 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003370
Jeff Johnson295189b2012-06-20 16:38:30 -07003371 wdiDelBARspCb: callback for passing back the response of
3372 the del BA operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003373
Jeff Johnson295189b2012-06-20 16:38:30 -07003374 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003375 callback
3376
Jeff Johnson295189b2012-06-20 16:38:30 -07003377 @see WDI_AddBAReq
3378 @return Result of the function call
3379*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003380WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003381WDI_DelBAReq
3382(
3383 WDI_DelBAReqParamsType* pwdiDelBAReqParams,
3384 WDI_DelBARspCb wdiDelBARspCb,
3385 void* pUserData
3386)
3387{
3388 WDI_EventInfoType wdiEventData;
3389 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3390
3391 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003392 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003393 ------------------------------------------------------------------------*/
3394 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3395 {
3396 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3397 "WDI API call before module is initialized - Fail request");
3398
Jeff Johnsone7245742012-09-05 17:12:55 -07003399 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003400 }
3401
3402 /*------------------------------------------------------------------------
3403 Fill in Event data and post to the Main FSM
3404 ------------------------------------------------------------------------*/
3405 wdiEventData.wdiRequest = WDI_DEL_BA_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003406 wdiEventData.pEventData = pwdiDelBAReqParams;
3407 wdiEventData.uEventDataSize = sizeof(*pwdiDelBAReqParams);
3408 wdiEventData.pCBfnc = wdiDelBARspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003409 wdiEventData.pUserData = pUserData;
3410
3411 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3412
3413}/*WDI_DelBAReq*/
3414
Jeff Johnsone7245742012-09-05 17:12:55 -07003415/*========================================================================
3416
Jeff Johnson295189b2012-06-20 16:38:30 -07003417 Power Save APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07003418
Jeff Johnson295189b2012-06-20 16:38:30 -07003419==========================================================================*/
3420
3421/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003422 @brief WDI_SetPwrSaveCfgReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07003423 wants to set the power save related configurations of
3424 the WLAN Device. Upon the call of this API the WLAN DAL
3425 will pack and send a HAL Update CFG request message to
3426 the lower RIVA sub-system if DAL is in state STARTED.
3427
3428 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003429 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003430
3431 WDI_Start must have been called.
3432
Jeff Johnsone7245742012-09-05 17:12:55 -07003433 @param pwdiPowerSaveCfg: the power save cfg parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07003434 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003435
Jeff Johnson295189b2012-06-20 16:38:30 -07003436 wdiSetPwrSaveCfgCb: callback for passing back the
3437 response of the set power save cfg operation received
3438 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003439
Jeff Johnson295189b2012-06-20 16:38:30 -07003440 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003441 callback
3442
Jeff Johnson295189b2012-06-20 16:38:30 -07003443 @see WDI_Start
Jeff Johnsone7245742012-09-05 17:12:55 -07003444 @return Result of the function call
3445*/
3446WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003447WDI_SetPwrSaveCfgReq
3448(
3449 WDI_UpdateCfgReqParamsType* pwdiPowerSaveCfg,
3450 WDI_SetPwrSaveCfgCb wdiSetPwrSaveCfgCb,
3451 void* pUserData
3452)
3453{
3454 WDI_EventInfoType wdiEventData;
3455 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3456
3457 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003458 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003459 ------------------------------------------------------------------------*/
3460 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3461 {
3462 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3463 "WDI API call before module is initialized - Fail request");
3464
Jeff Johnsone7245742012-09-05 17:12:55 -07003465 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003466 }
3467
3468 /*------------------------------------------------------------------------
3469 Fill in Event data and post to the Main FSM
3470 ------------------------------------------------------------------------*/
3471 wdiEventData.wdiRequest = WDI_UPDATE_CFG_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003472 wdiEventData.pEventData = pwdiPowerSaveCfg;
3473 wdiEventData.uEventDataSize = sizeof(*pwdiPowerSaveCfg);
3474 wdiEventData.pCBfnc = wdiSetPwrSaveCfgCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003475 wdiEventData.pUserData = pUserData;
3476
3477 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3478
3479}/*WDI_SetPwrSaveCfgReq*/
3480
3481/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003482 @brief WDI_EnterImpsReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07003483 request the device to get into IMPS power state. Upon
3484 the call of this API the WLAN DAL will send a HAL Enter
3485 IMPS request message to the lower RIVA sub-system if DAL
3486 is in state STARTED.
3487
3488 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003489 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003490
Jeff Johnsone7245742012-09-05 17:12:55 -07003491
3492 @param wdiEnterImpsRspCb: callback for passing back the
Jeff Johnson295189b2012-06-20 16:38:30 -07003493 response of the Enter IMPS operation received from the
3494 device
Jeff Johnsone7245742012-09-05 17:12:55 -07003495
Jeff Johnson295189b2012-06-20 16:38:30 -07003496 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003497 callback
3498
Jeff Johnson295189b2012-06-20 16:38:30 -07003499 @see WDI_Start
3500 @return Result of the function call
3501*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003502WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003503WDI_EnterImpsReq
3504(
Mihir Shetea4306052014-03-25 00:02:54 +05303505 WDI_EnterImpsReqParamsType *pwdiEnterImpsReqParams,
Jeff Johnson295189b2012-06-20 16:38:30 -07003506 WDI_EnterImpsRspCb wdiEnterImpsRspCb,
3507 void* pUserData
3508)
3509{
3510 WDI_EventInfoType wdiEventData;
3511 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3512
3513 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003514 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003515 ------------------------------------------------------------------------*/
3516 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3517 {
3518 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3519 "WDI API call before module is initialized - Fail request");
3520
Jeff Johnsone7245742012-09-05 17:12:55 -07003521 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003522 }
3523
3524 /*------------------------------------------------------------------------
3525 Fill in Event data and post to the Main FSM
3526 ------------------------------------------------------------------------*/
3527 wdiEventData.wdiRequest = WDI_ENTER_IMPS_REQ;
Mihir Shetea4306052014-03-25 00:02:54 +05303528 wdiEventData.pEventData = pwdiEnterImpsReqParams;
3529 wdiEventData.uEventDataSize = sizeof(*pwdiEnterImpsReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07003530 wdiEventData.pCBfnc = wdiEnterImpsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003531 wdiEventData.pUserData = pUserData;
3532
3533 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3534
3535}/*WDI_EnterImpsReq*/
3536
3537/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003538 @brief WDI_ExitImpsReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07003539 request the device to get out of IMPS power state. Upon
3540 the call of this API the WLAN DAL will send a HAL Exit
3541 IMPS request message to the lower RIVA sub-system if DAL
3542 is in state STARTED.
3543
3544 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003545 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003546
Jeff Johnson295189b2012-06-20 16:38:30 -07003547
Jeff Johnsone7245742012-09-05 17:12:55 -07003548
3549 @param wdiExitImpsRspCb: callback for passing back the response
Jeff Johnson295189b2012-06-20 16:38:30 -07003550 of the Exit IMPS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003551
Jeff Johnson295189b2012-06-20 16:38:30 -07003552 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003553 callback
3554
Jeff Johnson295189b2012-06-20 16:38:30 -07003555 @see WDI_Start
3556 @return Result of the function call
3557*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003558WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003559WDI_ExitImpsReq
3560(
3561 WDI_ExitImpsRspCb wdiExitImpsRspCb,
3562 void* pUserData
3563)
3564{
3565 WDI_EventInfoType wdiEventData;
3566 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3567
3568 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003569 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003570 ------------------------------------------------------------------------*/
3571 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3572 {
3573 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3574 "WDI API call before module is initialized - Fail request");
3575
Jeff Johnsone7245742012-09-05 17:12:55 -07003576 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003577 }
3578
3579 /*------------------------------------------------------------------------
3580 Fill in Event data and post to the Main FSM
3581 ------------------------------------------------------------------------*/
3582 wdiEventData.wdiRequest = WDI_EXIT_IMPS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003583 wdiEventData.pEventData = NULL;
3584 wdiEventData.uEventDataSize = 0;
3585 wdiEventData.pCBfnc = wdiExitImpsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003586 wdiEventData.pUserData = pUserData;
3587
3588 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3589
3590}/*WDI_ExitImpsReq*/
3591
3592/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003593 @brief WDI_EnterBmpsReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07003594 request the device to get into BMPS power state. Upon
3595 the call of this API the WLAN DAL will pack and send a
3596 HAL Enter BMPS request message to the lower RIVA
3597 sub-system if DAL is in state STARTED.
3598
3599 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003600 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003601
3602 WDI_PostAssocReq must have been called.
3603
Jeff Johnsone7245742012-09-05 17:12:55 -07003604 @param pwdiEnterBmpsReqParams: the Enter BMPS parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07003605 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003606
Jeff Johnson295189b2012-06-20 16:38:30 -07003607 wdiEnterBmpsRspCb: callback for passing back the
3608 response of the Enter BMPS operation received from the
3609 device
Jeff Johnsone7245742012-09-05 17:12:55 -07003610
Jeff Johnson295189b2012-06-20 16:38:30 -07003611 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003612 callback
3613
Jeff Johnson295189b2012-06-20 16:38:30 -07003614 @see WDI_PostAssocReq
3615 @return Result of the function call
3616*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003617WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003618WDI_EnterBmpsReq
3619(
3620 WDI_EnterBmpsReqParamsType *pwdiEnterBmpsReqParams,
3621 WDI_EnterBmpsRspCb wdiEnterBmpsRspCb,
3622 void* pUserData
3623)
3624{
3625 WDI_EventInfoType wdiEventData;
3626 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3627
3628 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003629 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003630 ------------------------------------------------------------------------*/
3631 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3632 {
3633 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3634 "WDI API call before module is initialized - Fail request");
3635
Jeff Johnsone7245742012-09-05 17:12:55 -07003636 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003637 }
3638
3639 /*------------------------------------------------------------------------
3640 Fill in Event data and post to the Main FSM
3641 ------------------------------------------------------------------------*/
3642 wdiEventData.wdiRequest = WDI_ENTER_BMPS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003643 wdiEventData.pEventData = pwdiEnterBmpsReqParams;
3644 wdiEventData.uEventDataSize = sizeof(*pwdiEnterBmpsReqParams);
3645 wdiEventData.pCBfnc = wdiEnterBmpsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003646 wdiEventData.pUserData = pUserData;
3647
3648 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3649
3650}/*WDI_EnterBmpsReq*/
3651
3652/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003653 @brief WDI_ExitBmpsReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07003654 request the device to get out of BMPS power state. Upon
3655 the call of this API the WLAN DAL will pack and send a
3656 HAL Exit BMPS request message to the lower RIVA
3657 sub-system if DAL is in state STARTED.
3658
3659 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003660 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003661
3662 WDI_PostAssocReq must have been called.
3663
Jeff Johnsone7245742012-09-05 17:12:55 -07003664 @param pwdiExitBmpsReqParams: the Exit BMPS parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07003665 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003666
Jeff Johnson295189b2012-06-20 16:38:30 -07003667 wdiExitBmpsRspCb: callback for passing back the response
3668 of the Exit BMPS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003669
Jeff Johnson295189b2012-06-20 16:38:30 -07003670 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003671 callback
3672
Jeff Johnson295189b2012-06-20 16:38:30 -07003673 @see WDI_PostAssocReq
3674 @return Result of the function call
3675*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003676WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003677WDI_ExitBmpsReq
3678(
3679 WDI_ExitBmpsReqParamsType *pwdiExitBmpsReqParams,
3680 WDI_ExitBmpsRspCb wdiExitBmpsRspCb,
3681 void* pUserData
3682)
3683{
3684 WDI_EventInfoType wdiEventData;
3685 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3686
3687 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003688 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003689 ------------------------------------------------------------------------*/
3690 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3691 {
3692 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3693 "WDI API call before module is initialized - Fail request");
3694
Jeff Johnsone7245742012-09-05 17:12:55 -07003695 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003696 }
3697
3698 /*------------------------------------------------------------------------
3699 Fill in Event data and post to the Main FSM
3700 ------------------------------------------------------------------------*/
3701 wdiEventData.wdiRequest = WDI_EXIT_BMPS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003702 wdiEventData.pEventData = pwdiExitBmpsReqParams;
3703 wdiEventData.uEventDataSize = sizeof(*pwdiExitBmpsReqParams);
3704 wdiEventData.pCBfnc = wdiExitBmpsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003705 wdiEventData.pUserData = pUserData;
3706
3707 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3708
3709}/*WDI_ExitBmpsReq*/
3710
3711/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003712 @brief WDI_EnterUapsdReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07003713 request the device to get into UAPSD power state. Upon
3714 the call of this API the WLAN DAL will pack and send a
3715 HAL Enter UAPSD request message to the lower RIVA
3716 sub-system if DAL is in state STARTED.
3717
3718 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003719 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003720
3721 WDI_PostAssocReq must have been called.
3722 WDI_SetUapsdAcParamsReq must have been called.
Jeff Johnsone7245742012-09-05 17:12:55 -07003723
3724 @param pwdiEnterUapsdReqParams: the Enter UAPSD parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07003725 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003726
Jeff Johnson295189b2012-06-20 16:38:30 -07003727 wdiEnterUapsdRspCb: callback for passing back the
3728 response of the Enter UAPSD operation received from the
3729 device
Jeff Johnsone7245742012-09-05 17:12:55 -07003730
Jeff Johnson295189b2012-06-20 16:38:30 -07003731 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003732 callback
3733
Jeff Johnson295189b2012-06-20 16:38:30 -07003734 @see WDI_PostAssocReq, WDI_SetUapsdAcParamsReq
3735 @return Result of the function call
3736*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003737WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003738WDI_EnterUapsdReq
3739(
3740 WDI_EnterUapsdReqParamsType *pwdiEnterUapsdReqParams,
3741 WDI_EnterUapsdRspCb wdiEnterUapsdRspCb,
3742 void* pUserData
3743)
3744{
3745 WDI_EventInfoType wdiEventData;
3746 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3747
3748 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003749 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003750 ------------------------------------------------------------------------*/
3751 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3752 {
3753 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3754 "WDI API call before module is initialized - Fail request");
3755
Jeff Johnsone7245742012-09-05 17:12:55 -07003756 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003757 }
3758
3759 /*------------------------------------------------------------------------
3760 Fill in Event data and post to the Main FSM
3761 ------------------------------------------------------------------------*/
3762 wdiEventData.wdiRequest = WDI_ENTER_UAPSD_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003763 wdiEventData.pEventData = pwdiEnterUapsdReqParams;
3764 wdiEventData.uEventDataSize = sizeof(*pwdiEnterUapsdReqParams);
3765 wdiEventData.pCBfnc = wdiEnterUapsdRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003766 wdiEventData.pUserData = pUserData;
3767
3768 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3769
3770}/*WDI_EnterUapsdReq*/
3771
3772/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003773 @brief WDI_ExitUapsdReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07003774 request the device to get out of UAPSD power state. Upon
3775 the call of this API the WLAN DAL will send a HAL Exit
3776 UAPSD request message to the lower RIVA sub-system if
3777 DAL is in state STARTED.
3778
3779 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003780 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003781
3782 WDI_PostAssocReq must have been called.
3783
Jeff Johnsone7245742012-09-05 17:12:55 -07003784 @param wdiExitUapsdRspCb: callback for passing back the
Jeff Johnson295189b2012-06-20 16:38:30 -07003785 response of the Exit UAPSD operation received from the
3786 device
Jeff Johnsone7245742012-09-05 17:12:55 -07003787
Jeff Johnson295189b2012-06-20 16:38:30 -07003788 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003789 callback
3790
Jeff Johnson295189b2012-06-20 16:38:30 -07003791 @see WDI_PostAssocReq
3792 @return Result of the function call
3793*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003794WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003795WDI_ExitUapsdReq
3796(
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -07003797 WDI_ExitUapsdReqParamsType *pwdiExitUapsdReqParams,
Jeff Johnson295189b2012-06-20 16:38:30 -07003798 WDI_ExitUapsdRspCb wdiExitUapsdRspCb,
3799 void* pUserData
3800)
3801{
3802 WDI_EventInfoType wdiEventData;
3803 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3804
3805 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003806 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003807 ------------------------------------------------------------------------*/
3808 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3809 {
3810 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3811 "WDI API call before module is initialized - Fail request");
3812
Jeff Johnsone7245742012-09-05 17:12:55 -07003813 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003814 }
3815
3816 /*------------------------------------------------------------------------
3817 Fill in Event data and post to the Main FSM
3818 ------------------------------------------------------------------------*/
3819 wdiEventData.wdiRequest = WDI_EXIT_UAPSD_REQ;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -07003820 wdiEventData.pEventData = pwdiExitUapsdReqParams;
3821 wdiEventData.uEventDataSize = sizeof(*pwdiExitUapsdReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07003822 wdiEventData.pCBfnc = wdiExitUapsdRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003823 wdiEventData.pUserData = pUserData;
3824
3825 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3826
3827}/*WDI_ExitUapsdReq*/
3828
3829/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003830 @brief WDI_UpdateUapsdParamsReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07003831 MAC wants to set the UAPSD related configurations
3832 of an associated STA (while acting as an AP) to the WLAN
3833 Device. Upon the call of this API the WLAN DAL will pack
3834 and send a HAL Update UAPSD params request message to
3835 the lower RIVA sub-system if DAL is in state STARTED.
3836
3837 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003838 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003839
3840 WDI_ConfigBSSReq must have been called.
3841
Jeff Johnsone7245742012-09-05 17:12:55 -07003842 @param pwdiUpdateUapsdReqParams: the UAPSD parameters
Jeff Johnson295189b2012-06-20 16:38:30 -07003843 as specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003844
Jeff Johnson295189b2012-06-20 16:38:30 -07003845 wdiUpdateUapsdParamsCb: callback for passing back the
3846 response of the update UAPSD params operation received
3847 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003848
Jeff Johnson295189b2012-06-20 16:38:30 -07003849 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003850 callback
3851
Jeff Johnson295189b2012-06-20 16:38:30 -07003852 @see WDI_ConfigBSSReq
3853 @return Result of the function call
3854*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003855WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003856WDI_UpdateUapsdParamsReq
3857(
3858 WDI_UpdateUapsdReqParamsType *pwdiUpdateUapsdReqParams,
3859 WDI_UpdateUapsdParamsCb wdiUpdateUapsdParamsCb,
3860 void* pUserData
3861)
3862{
3863 WDI_EventInfoType wdiEventData;
3864 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3865
3866 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003867 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003868 ------------------------------------------------------------------------*/
3869 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3870 {
3871 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3872 "WDI API call before module is initialized - Fail request");
3873
Jeff Johnsone7245742012-09-05 17:12:55 -07003874 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003875 }
3876
3877 /*------------------------------------------------------------------------
3878 Fill in Event data and post to the Main FSM
3879 ------------------------------------------------------------------------*/
3880 wdiEventData.wdiRequest = WDI_UPDATE_UAPSD_PARAM_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003881 wdiEventData.pEventData = pwdiUpdateUapsdReqParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07003882 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateUapsdReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07003883 wdiEventData.pCBfnc = wdiUpdateUapsdParamsCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003884 wdiEventData.pUserData = pUserData;
3885
3886 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3887
3888}/*WDI_UpdateUapsdParamsReq*/
3889
3890/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003891 @brief WDI_SetUapsdAcParamsReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07003892 MAC wants to set the UAPSD related configurations before
3893 requesting for enter UAPSD power state to the WLAN
3894 Device. Upon the call of this API the WLAN DAL will pack
3895 and send a HAL Set UAPSD params request message to
3896 the lower RIVA sub-system if DAL is in state STARTED.
3897
3898 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003899 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003900
3901 WDI_PostAssocReq must have been called.
3902
3903 @param pwdiUapsdInfo: the UAPSD parameters as specified by
3904 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003905
Jeff Johnson295189b2012-06-20 16:38:30 -07003906 wdiSetUapsdAcParamsCb: callback for passing back the
3907 response of the set UAPSD params operation received from
3908 the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003909
Jeff Johnson295189b2012-06-20 16:38:30 -07003910 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003911 callback
3912
Jeff Johnson295189b2012-06-20 16:38:30 -07003913 @see WDI_PostAssocReq
3914 @return Result of the function call
3915*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003916WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003917WDI_SetUapsdAcParamsReq
3918(
3919 WDI_SetUapsdAcParamsReqParamsType* pwdiUapsdInfo,
3920 WDI_SetUapsdAcParamsCb wdiSetUapsdAcParamsCb,
3921 void* pUserData
3922)
3923{
3924 WDI_EventInfoType wdiEventData;
3925 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3926
3927 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003928 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003929 ------------------------------------------------------------------------*/
3930 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3931 {
3932 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3933 "WDI API call before module is initialized - Fail request");
3934
Jeff Johnsone7245742012-09-05 17:12:55 -07003935 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003936 }
3937
3938 /*------------------------------------------------------------------------
3939 Fill in Event data and post to the Main FSM
3940 ------------------------------------------------------------------------*/
3941 wdiEventData.wdiRequest = WDI_SET_UAPSD_PARAM_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003942 wdiEventData.pEventData = pwdiUapsdInfo;
3943 wdiEventData.uEventDataSize = sizeof(*pwdiUapsdInfo);
3944 wdiEventData.pCBfnc = wdiSetUapsdAcParamsCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003945 wdiEventData.pUserData = pUserData;
3946
3947 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3948
3949}/*WDI_SetUapsdAcParamsReq*/
3950
3951/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003952 @brief WDI_ConfigureRxpFilterReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07003953 MAC wants to set/reset the RXP filters for received pkts
3954 (MC, BC etc.). Upon the call of this API the WLAN DAL will pack
3955 and send a HAL configure RXP filter request message to
3956 the lower RIVA sub-system.
3957
3958 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003959 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003960
Jeff Johnsone7245742012-09-05 17:12:55 -07003961
3962 @param pwdiConfigureRxpFilterReqParams: the RXP
Jeff Johnson295189b2012-06-20 16:38:30 -07003963 filter as specified by the Device
3964 Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003965
Jeff Johnson295189b2012-06-20 16:38:30 -07003966 wdiConfigureRxpFilterCb: callback for passing back the
3967 response of the configure RXP filter operation received
3968 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003969
Jeff Johnson295189b2012-06-20 16:38:30 -07003970 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003971 callback
3972
Jeff Johnson295189b2012-06-20 16:38:30 -07003973 @return Result of the function call
3974*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003975WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003976WDI_ConfigureRxpFilterReq
3977(
3978 WDI_ConfigureRxpFilterReqParamsType *pwdiConfigureRxpFilterReqParams,
3979 WDI_ConfigureRxpFilterCb wdiConfigureRxpFilterCb,
3980 void* pUserData
3981)
3982{
3983 WDI_EventInfoType wdiEventData;
3984 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3985
3986 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003987 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003988 ------------------------------------------------------------------------*/
3989 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3990 {
3991 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3992 "WDI API call before module is initialized - Fail request");
3993
Jeff Johnsone7245742012-09-05 17:12:55 -07003994 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003995 }
3996
3997 /*------------------------------------------------------------------------
3998 Fill in Event data and post to the Main FSM
3999 ------------------------------------------------------------------------*/
4000 wdiEventData.wdiRequest = WDI_CONFIGURE_RXP_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004001 wdiEventData.pEventData = pwdiConfigureRxpFilterReqParams;
4002 wdiEventData.uEventDataSize = sizeof(*pwdiConfigureRxpFilterReqParams);
4003 wdiEventData.pCBfnc = wdiConfigureRxpFilterCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004004 wdiEventData.pUserData = pUserData;
4005
4006 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4007}/*WDI_ConfigureRxpFilterReq*/
4008
4009/**
4010 @brief WDI_SetBeaconFilterReq will be called when the upper MAC
4011 wants to set the beacon filters while in power save.
4012 Upon the call of this API the WLAN DAL will pack and
4013 send a Beacon filter request message to the
4014 lower RIVA sub-system.
4015
4016 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004017 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004018
Jeff Johnsone7245742012-09-05 17:12:55 -07004019
4020 @param pwdiBeaconFilterReqParams: the beacon
Jeff Johnson295189b2012-06-20 16:38:30 -07004021 filter as specified by the Device
4022 Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004023
Jeff Johnson295189b2012-06-20 16:38:30 -07004024 wdiBeaconFilterCb: callback for passing back the
4025 response of the set beacon filter operation received
4026 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004027
Jeff Johnson295189b2012-06-20 16:38:30 -07004028 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004029 callback
4030
Jeff Johnson295189b2012-06-20 16:38:30 -07004031 @return Result of the function call
4032*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004033WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004034WDI_SetBeaconFilterReq
4035(
4036 WDI_BeaconFilterReqParamsType *pwdiBeaconFilterReqParams,
4037 WDI_SetBeaconFilterCb wdiBeaconFilterCb,
4038 void* pUserData
4039)
4040{
4041 WDI_EventInfoType wdiEventData;
4042 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4043
4044 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004045 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004046 ------------------------------------------------------------------------*/
4047 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4048 {
4049 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4050 "WDI API call before module is initialized - Fail request");
4051
Jeff Johnsone7245742012-09-05 17:12:55 -07004052 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004053 }
4054
4055 /*------------------------------------------------------------------------
4056 Fill in Event data and post to the Main FSM
4057 ------------------------------------------------------------------------*/
4058 wdiEventData.wdiRequest = WDI_SET_BEACON_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004059 wdiEventData.pEventData = pwdiBeaconFilterReqParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07004060 wdiEventData.uEventDataSize = sizeof(*pwdiBeaconFilterReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004061 wdiEventData.pCBfnc = wdiBeaconFilterCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004062 wdiEventData.pUserData = pUserData;
4063
4064 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4065}/*WDI_SetBeaconFilterReq*/
4066
4067/**
4068 @brief WDI_RemBeaconFilterReq will be called when the upper MAC
4069 wants to remove the beacon filter for particular IE
4070 while in power save. Upon the call of this API the WLAN
4071 DAL will pack and send a remove Beacon filter request
4072 message to the lower RIVA sub-system.
4073
4074 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004075 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004076
Jeff Johnsone7245742012-09-05 17:12:55 -07004077
4078 @param pwdiBeaconFilterReqParams: the beacon
Jeff Johnson295189b2012-06-20 16:38:30 -07004079 filter as specified by the Device
4080 Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004081
Jeff Johnson295189b2012-06-20 16:38:30 -07004082 wdiBeaconFilterCb: callback for passing back the
4083 response of the remove beacon filter operation received
4084 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004085
Jeff Johnson295189b2012-06-20 16:38:30 -07004086 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004087 callback
4088
Jeff Johnson295189b2012-06-20 16:38:30 -07004089 @return Result of the function call
4090*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004091WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004092WDI_RemBeaconFilterReq
4093(
4094 WDI_RemBeaconFilterReqParamsType *pwdiBeaconFilterReqParams,
4095 WDI_RemBeaconFilterCb wdiBeaconFilterCb,
4096 void* pUserData
4097)
4098{
4099 WDI_EventInfoType wdiEventData;
4100 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4101
4102 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004103 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004104 ------------------------------------------------------------------------*/
4105 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4106 {
4107 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4108 "WDI API call before module is initialized - Fail request");
4109
Jeff Johnsone7245742012-09-05 17:12:55 -07004110 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004111 }
4112
4113 /*------------------------------------------------------------------------
4114 Fill in Event data and post to the Main FSM
4115 ------------------------------------------------------------------------*/
4116 wdiEventData.wdiRequest = WDI_REM_BEACON_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004117 wdiEventData.pEventData = pwdiBeaconFilterReqParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07004118 wdiEventData.uEventDataSize = sizeof(*pwdiBeaconFilterReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004119 wdiEventData.pCBfnc = wdiBeaconFilterCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004120 wdiEventData.pUserData = pUserData;
4121
4122 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4123}/*WDI_RemBeaconFilterReq*/
4124
4125/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004126 @brief WDI_SetRSSIThresholdsReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07004127 MAC wants to set the RSSI thresholds related
4128 configurations while in power save. Upon the call of
4129 this API the WLAN DAL will pack and send a HAL Set RSSI
4130 thresholds request message to the lower RIVA
4131 sub-system if DAL is in state STARTED.
4132
4133 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004134 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004135
4136 WDI_PostAssocReq must have been called.
4137
4138 @param pwdiUapsdInfo: the UAPSD parameters as specified by
4139 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004140
Jeff Johnson295189b2012-06-20 16:38:30 -07004141 wdiSetUapsdAcParamsCb: callback for passing back the
4142 response of the set UAPSD params operation received from
4143 the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004144
Jeff Johnson295189b2012-06-20 16:38:30 -07004145 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004146 callback
4147
Jeff Johnson295189b2012-06-20 16:38:30 -07004148 @see WDI_PostAssocReq
4149 @return Result of the function call
4150*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004151WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004152WDI_SetRSSIThresholdsReq
4153(
4154 WDI_SetRSSIThresholdsReqParamsType* pwdiRSSIThresholdsParams,
4155 WDI_SetRSSIThresholdsCb wdiSetRSSIThresholdsCb,
4156 void* pUserData
4157)
4158{
4159 WDI_EventInfoType wdiEventData;
4160 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4161
4162 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004163 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004164 ------------------------------------------------------------------------*/
4165 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4166 {
4167 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4168 "WDI API call before module is initialized - Fail request");
4169
Jeff Johnsone7245742012-09-05 17:12:55 -07004170 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004171 }
4172
4173 /*------------------------------------------------------------------------
4174 Fill in Event data and post to the Main FSM
4175 ------------------------------------------------------------------------*/
4176 wdiEventData.wdiRequest = WDI_SET_RSSI_THRESHOLDS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004177 wdiEventData.pEventData = pwdiRSSIThresholdsParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07004178 wdiEventData.uEventDataSize = sizeof(*pwdiRSSIThresholdsParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004179 wdiEventData.pCBfnc = wdiSetRSSIThresholdsCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004180 wdiEventData.pUserData = pUserData;
4181
4182 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4183}/* WDI_SetRSSIThresholdsReq*/
4184
4185/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004186 @brief WDI_HostOffloadReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004187 wants to set the filter to minimize unnecessary host
4188 wakeup due to broadcast traffic while in power save.
4189 Upon the call of this API the WLAN DAL will pack and
4190 send a HAL host offload request message to the
4191 lower RIVA sub-system if DAL is in state STARTED.
4192
4193 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004194 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004195
4196 WDI_PostAssocReq must have been called.
4197
Jeff Johnsone7245742012-09-05 17:12:55 -07004198 @param pwdiHostOffloadParams: the host offload as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07004199 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004200
Jeff Johnson295189b2012-06-20 16:38:30 -07004201 wdiHostOffloadCb: callback for passing back the response
4202 of the host offload operation received from the
4203 device
Jeff Johnsone7245742012-09-05 17:12:55 -07004204
Jeff Johnson295189b2012-06-20 16:38:30 -07004205 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004206 callback
4207
Jeff Johnson295189b2012-06-20 16:38:30 -07004208 @see WDI_PostAssocReq
4209 @return Result of the function call
4210*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004211WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004212WDI_HostOffloadReq
4213(
4214 WDI_HostOffloadReqParamsType* pwdiHostOffloadParams,
4215 WDI_HostOffloadCb wdiHostOffloadCb,
4216 void* pUserData
4217)
4218{
4219 WDI_EventInfoType wdiEventData;
4220 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4221
4222 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004223 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004224 ------------------------------------------------------------------------*/
4225 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4226 {
4227 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4228 "WDI API call before module is initialized - Fail request");
4229
Jeff Johnsone7245742012-09-05 17:12:55 -07004230 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004231 }
4232
4233 /*------------------------------------------------------------------------
4234 Fill in Event data and post to the Main FSM
4235 ------------------------------------------------------------------------*/
4236 wdiEventData.wdiRequest = WDI_HOST_OFFLOAD_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004237 wdiEventData.pEventData = pwdiHostOffloadParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07004238 wdiEventData.uEventDataSize = sizeof(*pwdiHostOffloadParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004239 wdiEventData.pCBfnc = wdiHostOffloadCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004240 wdiEventData.pUserData = pUserData;
4241
4242 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4243}/*WDI_HostOffloadReq*/
4244
4245/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004246 @brief WDI_KeepAliveReq will be called when the upper MAC
4247 wants to set the filter to send NULL or unsolicited ARP responses
Jeff Johnson295189b2012-06-20 16:38:30 -07004248 and minimize unnecessary host wakeups due to while in power save.
4249 Upon the call of this API the WLAN DAL will pack and
4250 send a HAL Keep Alive request message to the
4251 lower RIVA sub-system if DAL is in state STARTED.
4252
4253 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004254 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004255
4256 WDI_PostAssocReq must have been called.
4257
Jeff Johnsone7245742012-09-05 17:12:55 -07004258 @param pwdiKeepAliveParams: the Keep Alive as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07004259 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004260
Jeff Johnson295189b2012-06-20 16:38:30 -07004261 wdiKeepAliveCb: callback for passing back the response
4262 of the Keep Alive operation received from the
4263 device
Jeff Johnsone7245742012-09-05 17:12:55 -07004264
Jeff Johnson295189b2012-06-20 16:38:30 -07004265 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004266 callback
4267
Jeff Johnson295189b2012-06-20 16:38:30 -07004268 @see WDI_PostAssocReq
4269 @return Result of the function call
4270*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004271WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004272WDI_KeepAliveReq
4273(
4274 WDI_KeepAliveReqParamsType* pwdiKeepAliveParams,
4275 WDI_KeepAliveCb wdiKeepAliveCb,
4276 void* pUserData
4277)
4278{
4279 WDI_EventInfoType wdiEventData;
4280 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4281
4282 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004283 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004284 ------------------------------------------------------------------------*/
4285 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4286 {
4287 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4288 "WDI_KeepAliveReq: WDI API call before module "
4289 "is initialized - Fail request");
4290
Jeff Johnsone7245742012-09-05 17:12:55 -07004291 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004292 }
4293
4294 /*------------------------------------------------------------------------
4295 Fill in Event data and post to the Main FSM
4296 ------------------------------------------------------------------------*/
4297 wdiEventData.wdiRequest = WDI_KEEP_ALIVE_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004298 wdiEventData.pEventData = pwdiKeepAliveParams;
4299 wdiEventData.uEventDataSize = sizeof(*pwdiKeepAliveParams);
4300 wdiEventData.pCBfnc = wdiKeepAliveCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004301 wdiEventData.pUserData = pUserData;
4302
4303 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4304}/*WDI_KeepAliveReq*/
4305
4306/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004307 @brief WDI_WowlAddBcPtrnReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004308 wants to set the Wowl Bcast ptrn to minimize unnecessary
4309 host wakeup due to broadcast traffic while in power
4310 save. Upon the call of this API the WLAN DAL will pack
4311 and send a HAL Wowl Bcast ptrn request message to the
4312 lower RIVA sub-system if DAL is in state STARTED.
4313
4314 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004315 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004316
4317 WDI_PostAssocReq must have been called.
4318
Jeff Johnsone7245742012-09-05 17:12:55 -07004319 @param pwdiWowlAddBcPtrnParams: the Wowl bcast ptrn as
Jeff Johnson295189b2012-06-20 16:38:30 -07004320 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004321
Jeff Johnson295189b2012-06-20 16:38:30 -07004322 wdiWowlAddBcPtrnCb: callback for passing back the
4323 response of the add Wowl bcast ptrn operation received
4324 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004325
Jeff Johnson295189b2012-06-20 16:38:30 -07004326 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004327 callback
4328
Jeff Johnson295189b2012-06-20 16:38:30 -07004329 @see WDI_PostAssocReq
4330 @return Result of the function call
4331*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004332WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004333WDI_WowlAddBcPtrnReq
4334(
4335 WDI_WowlAddBcPtrnReqParamsType* pwdiWowlAddBcPtrnParams,
4336 WDI_WowlAddBcPtrnCb wdiWowlAddBcPtrnCb,
4337 void* pUserData
4338)
4339{
4340 WDI_EventInfoType wdiEventData;
4341 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4342
4343 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004344 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004345 ------------------------------------------------------------------------*/
4346 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4347 {
4348 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4349 "WDI API call before module is initialized - Fail request");
4350
Jeff Johnsone7245742012-09-05 17:12:55 -07004351 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004352 }
4353
4354 /*------------------------------------------------------------------------
4355 Fill in Event data and post to the Main FSM
4356 ------------------------------------------------------------------------*/
4357 wdiEventData.wdiRequest = WDI_WOWL_ADD_BC_PTRN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004358 wdiEventData.pEventData = pwdiWowlAddBcPtrnParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07004359 wdiEventData.uEventDataSize = sizeof(*pwdiWowlAddBcPtrnParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004360 wdiEventData.pCBfnc = wdiWowlAddBcPtrnCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004361 wdiEventData.pUserData = pUserData;
4362
4363 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4364}/*WDI_WowlAddBcPtrnReq*/
4365
4366/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004367 @brief WDI_WowlDelBcPtrnReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004368 wants to clear the Wowl Bcast ptrn. Upon the call of
4369 this API the WLAN DAL will pack and send a HAL delete
4370 Wowl Bcast ptrn request message to the lower RIVA
4371 sub-system if DAL is in state STARTED.
4372
4373 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004374 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004375
4376 WDI_WowlAddBcPtrnReq must have been called.
4377
Jeff Johnsone7245742012-09-05 17:12:55 -07004378 @param pwdiWowlDelBcPtrnParams: the Wowl bcast ptrn as
Jeff Johnson295189b2012-06-20 16:38:30 -07004379 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004380
Jeff Johnson295189b2012-06-20 16:38:30 -07004381 wdiWowlDelBcPtrnCb: callback for passing back the
4382 response of the del Wowl bcast ptrn operation received
4383 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004384
Jeff Johnson295189b2012-06-20 16:38:30 -07004385 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004386 callback
4387
Jeff Johnson295189b2012-06-20 16:38:30 -07004388 @see WDI_WowlAddBcPtrnReq
4389 @return Result of the function call
4390*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004391WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004392WDI_WowlDelBcPtrnReq
4393(
4394 WDI_WowlDelBcPtrnReqParamsType* pwdiWowlDelBcPtrnParams,
4395 WDI_WowlDelBcPtrnCb wdiWowlDelBcPtrnCb,
4396 void* pUserData
4397)
4398{
4399 WDI_EventInfoType wdiEventData;
4400 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4401
4402 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004403 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004404 ------------------------------------------------------------------------*/
4405 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4406 {
4407 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4408 "WDI API call before module is initialized - Fail request");
4409
Jeff Johnsone7245742012-09-05 17:12:55 -07004410 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004411 }
4412
4413 /*------------------------------------------------------------------------
4414 Fill in Event data and post to the Main FSM
4415 ------------------------------------------------------------------------*/
4416 wdiEventData.wdiRequest = WDI_WOWL_DEL_BC_PTRN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004417 wdiEventData.pEventData = pwdiWowlDelBcPtrnParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07004418 wdiEventData.uEventDataSize = sizeof(*pwdiWowlDelBcPtrnParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004419 wdiEventData.pCBfnc = wdiWowlDelBcPtrnCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004420 wdiEventData.pUserData = pUserData;
4421
4422 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4423}/*WDI_WowlDelBcPtrnReq*/
4424
4425/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004426 @brief WDI_WowlEnterReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004427 wants to enter the Wowl state to minimize unnecessary
4428 host wakeup while in power save. Upon the call of this
4429 API the WLAN DAL will pack and send a HAL Wowl enter
4430 request message to the lower RIVA sub-system if DAL is
4431 in state STARTED.
4432
4433 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004434 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004435
4436 WDI_PostAssocReq must have been called.
4437
Jeff Johnsone7245742012-09-05 17:12:55 -07004438 @param pwdiWowlEnterReqParams: the Wowl enter info as
Jeff Johnson295189b2012-06-20 16:38:30 -07004439 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004440
Jeff Johnson295189b2012-06-20 16:38:30 -07004441 wdiWowlEnterReqCb: callback for passing back the
4442 response of the enter Wowl operation received from the
4443 device
Jeff Johnsone7245742012-09-05 17:12:55 -07004444
Jeff Johnson295189b2012-06-20 16:38:30 -07004445 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004446 callback
4447
Jeff Johnson295189b2012-06-20 16:38:30 -07004448 @see WDI_PostAssocReq
4449 @return Result of the function call
4450*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004451WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004452WDI_WowlEnterReq
4453(
4454 WDI_WowlEnterReqParamsType* pwdiWowlEnterParams,
4455 WDI_WowlEnterReqCb wdiWowlEnterCb,
4456 void* pUserData
4457)
4458{
4459 WDI_EventInfoType wdiEventData;
4460 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4461
4462 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004463 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004464 ------------------------------------------------------------------------*/
4465 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4466 {
4467 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4468 "WDI API call before module is initialized - Fail request");
4469
Jeff Johnsone7245742012-09-05 17:12:55 -07004470 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004471 }
4472
4473 /*------------------------------------------------------------------------
4474 Fill in Event data and post to the Main FSM
4475 ------------------------------------------------------------------------*/
4476 wdiEventData.wdiRequest = WDI_WOWL_ENTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004477 wdiEventData.pEventData = pwdiWowlEnterParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07004478 wdiEventData.uEventDataSize = sizeof(*pwdiWowlEnterParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004479 wdiEventData.pCBfnc = wdiWowlEnterCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004480 wdiEventData.pUserData = pUserData;
4481
4482 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4483}/*WDI_WowlEnterReq*/
4484
4485/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004486 @brief WDI_WowlExitReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004487 wants to exit the Wowl state. Upon the call of this API
4488 the WLAN DAL will pack and send a HAL Wowl exit request
4489 message to the lower RIVA sub-system if DAL is in state
4490 STARTED.
4491
4492 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004493 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004494
4495 WDI_WowlEnterReq must have been called.
4496
Jeff Johnsone7245742012-09-05 17:12:55 -07004497 @param pwdiWowlExitReqParams: the Wowl exit info as
Jeff Johnson295189b2012-06-20 16:38:30 -07004498 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004499
Jeff Johnson295189b2012-06-20 16:38:30 -07004500 wdiWowlExitReqCb: callback for passing back the response
4501 of the exit Wowl operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004502
Jeff Johnson295189b2012-06-20 16:38:30 -07004503 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004504 callback
4505
Jeff Johnson295189b2012-06-20 16:38:30 -07004506 @see WDI_WowlEnterReq
4507 @return Result of the function call
4508*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004509WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004510WDI_WowlExitReq
4511(
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -07004512 WDI_WowlExitReqParamsType* pwdiWowlExitParams,
Jeff Johnson295189b2012-06-20 16:38:30 -07004513 WDI_WowlExitReqCb wdiWowlExitCb,
4514 void* pUserData
4515)
4516{
4517 WDI_EventInfoType wdiEventData;
4518 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4519
4520 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004521 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004522 ------------------------------------------------------------------------*/
4523 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4524 {
4525 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4526 "WDI API call before module is initialized - Fail request");
4527
Jeff Johnsone7245742012-09-05 17:12:55 -07004528 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004529 }
4530
4531 /*------------------------------------------------------------------------
4532 Fill in Event data and post to the Main FSM
4533 ------------------------------------------------------------------------*/
4534 wdiEventData.wdiRequest = WDI_WOWL_EXIT_REQ;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -07004535 wdiEventData.pEventData = pwdiWowlExitParams;
4536 wdiEventData.uEventDataSize = sizeof(*pwdiWowlExitParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004537 wdiEventData.pCBfnc = wdiWowlExitCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004538 wdiEventData.pUserData = pUserData;
4539
4540 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4541}/*WDI_WowlExitReq*/
4542
4543/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004544 @brief WDI_ConfigureAppsCpuWakeupStateReq will be called when
Jeff Johnson295189b2012-06-20 16:38:30 -07004545 the upper MAC wants to dynamically adjusts the listen
4546 interval based on the WLAN/MSM activity. Upon the call
4547 of this API the WLAN DAL will pack and send a HAL
4548 configure Apps Cpu Wakeup State request message to the
4549 lower RIVA sub-system.
4550
4551 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004552 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004553
Jeff Johnsone7245742012-09-05 17:12:55 -07004554
4555 @param pwdiConfigureAppsCpuWakeupStateReqParams: the
Jeff Johnson295189b2012-06-20 16:38:30 -07004556 Apps Cpu Wakeup State as specified by the
4557 Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004558
Jeff Johnson295189b2012-06-20 16:38:30 -07004559 wdiConfigureAppsCpuWakeupStateCb: callback for passing
4560 back the response of the configure Apps Cpu Wakeup State
4561 operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004562
Jeff Johnson295189b2012-06-20 16:38:30 -07004563 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004564 callback
4565
Jeff Johnson295189b2012-06-20 16:38:30 -07004566 @return Result of the function call
4567*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004568WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004569WDI_ConfigureAppsCpuWakeupStateReq
4570(
4571 WDI_ConfigureAppsCpuWakeupStateReqParamsType *pwdiConfigureAppsCpuWakeupStateReqParams,
4572 WDI_ConfigureAppsCpuWakeupStateCb wdiConfigureAppsCpuWakeupStateCb,
4573 void* pUserData
4574)
4575{
4576 WDI_EventInfoType wdiEventData;
4577 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4578
4579 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004580 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004581 ------------------------------------------------------------------------*/
4582 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4583 {
4584 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4585 "WDI API call before module is initialized - Fail request");
4586
Jeff Johnsone7245742012-09-05 17:12:55 -07004587 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004588 }
4589
4590 /*------------------------------------------------------------------------
4591 Fill in Event data and post to the Main FSM
4592 ------------------------------------------------------------------------*/
4593 wdiEventData.wdiRequest = WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004594 wdiEventData.pEventData = pwdiConfigureAppsCpuWakeupStateReqParams;
4595 wdiEventData.uEventDataSize = sizeof(*pwdiConfigureAppsCpuWakeupStateReqParams);
4596 wdiEventData.pCBfnc = wdiConfigureAppsCpuWakeupStateCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004597 wdiEventData.pUserData = pUserData;
4598
4599 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4600}/*WDI_ConfigureAppsCpuWakeupStateReq*/
4601/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004602 @brief WDI_FlushAcReq will be called when the upper MAC wants
Jeff Johnson295189b2012-06-20 16:38:30 -07004603 to to perform a flush operation on a given AC. Upon the
4604 call of this API the WLAN DAL will pack and send a HAL
4605 Flush AC request message to the lower RIVA sub-system if
4606 DAL is in state STARTED.
4607
4608 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004609 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004610
4611 WDI_AddBAReq must have been called.
4612
Jeff Johnsone7245742012-09-05 17:12:55 -07004613 @param pwdiFlushAcReqParams: the Flush AC parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07004614 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004615
Jeff Johnson295189b2012-06-20 16:38:30 -07004616 wdiFlushAcRspCb: callback for passing back the response
4617 of the Flush AC operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004618
Jeff Johnson295189b2012-06-20 16:38:30 -07004619 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004620 callback
4621
Jeff Johnson295189b2012-06-20 16:38:30 -07004622 @see WDI_AddBAReq
4623 @return Result of the function call
4624*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004625WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004626WDI_FlushAcReq
4627(
4628 WDI_FlushAcReqParamsType* pwdiFlushAcReqParams,
4629 WDI_FlushAcRspCb wdiFlushAcRspCb,
4630 void* pUserData
4631)
4632{
4633 WDI_EventInfoType wdiEventData;
4634 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4635
4636 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004637 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004638 ------------------------------------------------------------------------*/
4639 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4640 {
4641 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4642 "WDI API call before module is initialized - Fail request");
4643
Jeff Johnsone7245742012-09-05 17:12:55 -07004644 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004645 }
4646
4647 /*------------------------------------------------------------------------
4648 Fill in Event data and post to the Main FSM
4649 ------------------------------------------------------------------------*/
4650 wdiEventData.wdiRequest = WDI_FLUSH_AC_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004651 wdiEventData.pEventData = pwdiFlushAcReqParams;
4652 wdiEventData.uEventDataSize = sizeof(*pwdiFlushAcReqParams);
4653 wdiEventData.pCBfnc = wdiFlushAcRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004654 wdiEventData.pUserData = pUserData;
4655
4656 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4657
4658}/*WDI_FlushAcReq*/
4659
4660/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004661 @brief WDI_BtAmpEventReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004662 wants to notify the lower mac on a BT AMP event. This is
4663 to inform BTC-SLM that some BT AMP event occurred. Upon
4664 the call of this API the WLAN DAL will pack and send a
4665 HAL BT AMP event request message to the lower RIVA
4666 sub-system if DAL is in state STARTED.
4667
4668 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004669 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004670
Jeff Johnsone7245742012-09-05 17:12:55 -07004671
4672 @param wdiBtAmpEventReqParams: the BT AMP event parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07004673 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004674
Jeff Johnson295189b2012-06-20 16:38:30 -07004675 wdiBtAmpEventRspCb: callback for passing back the
4676 response of the BT AMP event operation received from the
4677 device
Jeff Johnsone7245742012-09-05 17:12:55 -07004678
Jeff Johnson295189b2012-06-20 16:38:30 -07004679 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004680 callback
4681
Jeff Johnson295189b2012-06-20 16:38:30 -07004682 @return Result of the function call
4683*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004684WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004685WDI_BtAmpEventReq
4686(
4687 WDI_BtAmpEventParamsType* pwdiBtAmpEventReqParams,
4688 WDI_BtAmpEventRspCb wdiBtAmpEventRspCb,
4689 void* pUserData
4690)
4691{
4692 WDI_EventInfoType wdiEventData;
4693 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4694
4695 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004696 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004697 ------------------------------------------------------------------------*/
4698 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4699 {
4700 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4701 "WDI API call before module is initialized - Fail request");
4702
Jeff Johnsone7245742012-09-05 17:12:55 -07004703 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004704 }
4705
4706 /*------------------------------------------------------------------------
4707 Fill in Event data and post to the Main FSM
4708 ------------------------------------------------------------------------*/
4709 wdiEventData.wdiRequest = WDI_BTAMP_EVENT_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004710 wdiEventData.pEventData = pwdiBtAmpEventReqParams;
4711 wdiEventData.uEventDataSize = sizeof(*pwdiBtAmpEventReqParams);
4712 wdiEventData.pCBfnc = wdiBtAmpEventRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004713 wdiEventData.pUserData = pUserData;
4714
4715 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4716
4717}/*WDI_BtAmpEventReq*/
4718
Jeff Johnsone7245742012-09-05 17:12:55 -07004719#ifdef FEATURE_OEM_DATA_SUPPORT
4720/**
4721 @brief WDI_Start Oem Data Req will be called when the upper MAC
4722 wants to notify the lower mac on a oem data Req event.Upon
4723 the call of this API the WLAN DAL will pack and send a
4724 HAL OEM Data Req event request message to the lower RIVA
4725 sub-system if DAL is in state STARTED.
4726
4727 In state BUSY this request will be queued. Request won't
4728 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004729
4730
Jeff Johnsone7245742012-09-05 17:12:55 -07004731
4732 @param pwdiOemDataReqParams: the Oem Data Req as
4733 specified by the Device Interface
4734
4735 wdiStartOemDataRspCb: callback for passing back the
4736 response of the Oem Data Req received from the
4737 device
4738
4739 pUserData: user data will be passed back with the
4740 callback
4741
4742 @return Result of the function call
4743*/
4744WDI_Status
4745WDI_StartOemDataReq
4746(
4747 WDI_oemDataReqParamsType* pwdiOemDataReqParams,
4748 WDI_oemDataRspCb wdiOemDataRspCb,
4749 void* pUserData
4750)
4751{
4752 WDI_EventInfoType wdiEventData;
4753 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4754
4755 /*------------------------------------------------------------------------
4756 Sanity Check
4757 ------------------------------------------------------------------------*/
4758 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4759 {
4760 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4761 "WDI API call before module is initialized - Fail request");
4762
4763 return WDI_STATUS_E_NOT_ALLOWED;
4764 }
4765
4766 /*------------------------------------------------------------------------
4767 Fill in Event data and post to the Main FSM
4768 ------------------------------------------------------------------------*/
4769 wdiEventData.wdiRequest = WDI_START_OEM_DATA_REQ;
4770 wdiEventData.pEventData = pwdiOemDataReqParams;
4771 wdiEventData.uEventDataSize = sizeof(*pwdiOemDataReqParams);
4772 wdiEventData.pCBfnc = wdiOemDataRspCb;
4773 wdiEventData.pUserData = pUserData;
4774
4775 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4776
4777
4778}
4779
4780#endif
4781
4782
4783/*========================================================================
4784
Jeff Johnson295189b2012-06-20 16:38:30 -07004785 CONTROL APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07004786
Jeff Johnson295189b2012-06-20 16:38:30 -07004787==========================================================================*/
4788/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004789 @brief WDI_SwitchChReq will be called when the upper MAC wants
Jeff Johnson295189b2012-06-20 16:38:30 -07004790 the WLAN HW to change the current channel of operation.
4791 Upon the call of this API the WLAN DAL will pack and
4792 send a HAL Start request message to the lower RIVA
4793 sub-system if DAL is in state STARTED.
4794
4795 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004796 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004797
4798 WDI_Start must have been called.
4799
Jeff Johnsone7245742012-09-05 17:12:55 -07004800 @param wdiSwitchChReqParams: the switch ch parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07004801 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004802
Jeff Johnson295189b2012-06-20 16:38:30 -07004803 wdiSwitchChRspCb: callback for passing back the response
4804 of the switch ch operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004805
Jeff Johnson295189b2012-06-20 16:38:30 -07004806 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004807 callback
4808
Jeff Johnson295189b2012-06-20 16:38:30 -07004809 @see WDI_Start
4810 @return Result of the function call
4811*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004812WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004813WDI_SwitchChReq
4814(
4815 WDI_SwitchChReqParamsType* pwdiSwitchChReqParams,
4816 WDI_SwitchChRspCb wdiSwitchChRspCb,
4817 void* pUserData
4818)
4819{
4820 WDI_EventInfoType wdiEventData;
4821 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4822
4823 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004824 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004825 ------------------------------------------------------------------------*/
4826 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4827 {
4828 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4829 "WDI API call before module is initialized - Fail request");
4830
Jeff Johnsone7245742012-09-05 17:12:55 -07004831 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004832 }
4833
4834 /*------------------------------------------------------------------------
4835 Fill in Event data and post to the Main FSM
4836 ------------------------------------------------------------------------*/
4837 wdiEventData.wdiRequest = WDI_CH_SWITCH_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004838 wdiEventData.pEventData = pwdiSwitchChReqParams;
4839 wdiEventData.uEventDataSize = sizeof(*pwdiSwitchChReqParams);
4840 wdiEventData.pCBfnc = wdiSwitchChRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004841 wdiEventData.pUserData = pUserData;
4842
4843 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4844
4845}/*WDI_SwitchChReq*/
4846
Kalikinkar dhara1e83b772014-02-06 12:59:22 -08004847/**
4848 @brief WDI_SwitchChReq_V1 will be called when the upper MAC wants
4849 the WLAN HW to change the current channel of operation.
4850 Upon the call of this API the WLAN DAL will pack and
4851 send a HAL Start request message to the lower RIVA
4852 sub-system if DAL is in state STARTED.
4853 This request message also includes source of channel switch,
4854 like CSA,
4855
4856 In state BUSY this request will be queued. Request won't
4857 be allowed in any other state.
4858
4859 WDI_Start must have been called.
4860
4861 @param wdiSwitchChReqParams: the switch ch parameters as
4862 specified by the Device Interface
4863
4864 wdiSwitchChRspCb: callback for passing back the response
4865 of the switch ch operation received from the device
4866
4867 pUserData: user data will be passed back with the
4868 callback
4869
4870 @see WDI_Start
4871 @return Result of the function call
4872*/
4873WDI_Status
4874WDI_SwitchChReq_V1
4875(
4876 WDI_SwitchChReqParamsType_V1* pwdiSwitchChReqParams,
4877 WDI_SwitchChRspCb_V1 wdiSwitchChRspCb,
4878 void* pUserData
4879)
4880{
4881 WDI_EventInfoType wdiEventData;
4882 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4883 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
4884 "WDI API call WDI_SwitchChReq_V1");
4885 /*------------------------------------------------------------------------
4886 Sanity Check
4887 ------------------------------------------------------------------------*/
4888 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4889 {
4890 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4891 "WDI API call before module is initialized - Fail request");
4892
4893 return WDI_STATUS_E_NOT_ALLOWED;
4894 }
4895
4896 /*------------------------------------------------------------------------
4897 Fill in Event data and post to the Main FSM
4898 ------------------------------------------------------------------------*/
4899 wdiEventData.wdiRequest = WDI_CH_SWITCH_REQ_V1;
4900 wdiEventData.pEventData = pwdiSwitchChReqParams;
4901 wdiEventData.uEventDataSize = sizeof(*pwdiSwitchChReqParams);
4902 wdiEventData.pCBfnc = wdiSwitchChRspCb;
4903 wdiEventData.pUserData = pUserData;
4904
4905 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4906
4907}/*WDI_SwitchChReq_V1*/
4908
Jeff Johnson295189b2012-06-20 16:38:30 -07004909
4910/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004911 @brief WDI_ConfigSTAReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004912 wishes to add or update a STA in HW. Upon the call of
4913 this API the WLAN DAL will pack and send a HAL Start
4914 message request message to the lower RIVA sub-system if
4915 DAL is in state STARTED.
4916
4917 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004918 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004919
4920 WDI_Start must have been called.
4921
Jeff Johnsone7245742012-09-05 17:12:55 -07004922 @param wdiConfigSTAReqParams: the config STA parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07004923 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004924
Jeff Johnson295189b2012-06-20 16:38:30 -07004925 wdiConfigSTARspCb: callback for passing back the
4926 response of the config STA operation received from the
4927 device
Jeff Johnsone7245742012-09-05 17:12:55 -07004928
Jeff Johnson295189b2012-06-20 16:38:30 -07004929 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004930 callback
4931
Jeff Johnson295189b2012-06-20 16:38:30 -07004932 @see WDI_Start
4933 @return Result of the function call
4934*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004935WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004936WDI_ConfigSTAReq
4937(
4938 WDI_ConfigSTAReqParamsType* pwdiConfigSTAReqParams,
4939 WDI_ConfigSTARspCb wdiConfigSTARspCb,
4940 void* pUserData
4941)
4942{
4943 WDI_EventInfoType wdiEventData;
4944 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4945
4946 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004947 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004948 ------------------------------------------------------------------------*/
4949 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4950 {
4951 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4952 "WDI API call before module is initialized - Fail request");
4953
Jeff Johnsone7245742012-09-05 17:12:55 -07004954 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004955 }
4956
4957 /*------------------------------------------------------------------------
4958 Fill in Event data and post to the Main FSM
4959 ------------------------------------------------------------------------*/
4960 wdiEventData.wdiRequest = WDI_CONFIG_STA_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004961 wdiEventData.pEventData = pwdiConfigSTAReqParams;
4962 wdiEventData.uEventDataSize = sizeof(*pwdiConfigSTAReqParams);
4963 wdiEventData.pCBfnc = wdiConfigSTARspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004964 wdiEventData.pUserData = pUserData;
4965
4966 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4967
4968}/*WDI_ConfigSTAReq*/
4969
Manjunathappa Prakash86f78ca2014-02-10 18:09:15 -08004970 /**
4971 @brief WDI_UpdateChannelReq will be called when the upper MAC
4972 wants to update the channel list on change in country code.
4973
4974 In state BUSY this request will be queued. Request won't
4975 be allowed in any other state.
4976
4977 WDI_UpdateChannelReq must have been called.
4978
4979 @param wdiUpdateChannelReqParams: the updated channel parameters
4980 as specified by the Device Interface
4981
4982 wdiUpdateChannelRspCb: callback for passing back the
4983 response of the update channel operation received from
4984 the device
4985
4986 pUserData: user data will be passed back with the
4987 callback
4988
4989 @return Result of the function call
4990*/
4991WDI_Status
4992WDI_UpdateChannelReq
4993(
4994 WDI_UpdateChReqParamsType *pwdiUpdateChannelReqParams,
4995 WDI_UpdateChannelRspCb wdiUpdateChannelRspCb,
4996 void* pUserData
4997)
4998{
4999 WDI_EventInfoType wdiEventData = {{0}};
5000 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5001
5002 /*------------------------------------------------------------------------
5003 Sanity Check
5004 ------------------------------------------------------------------------*/
5005 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5006 {
5007 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5008 "WDI API call before module is initialized - Fail request");
5009
5010 return WDI_STATUS_E_NOT_ALLOWED;
5011 }
5012
5013 /*------------------------------------------------------------------------
5014 Fill in Event data and post to the Main FSM
5015 ------------------------------------------------------------------------*/
5016 wdiEventData.wdiRequest = WDI_UPDATE_CHAN_REQ;
5017 wdiEventData.pEventData = pwdiUpdateChannelReqParams;
5018 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateChannelReqParams);
5019 wdiEventData.pCBfnc = wdiUpdateChannelRspCb;
5020 wdiEventData.pUserData = pUserData;
5021
5022 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5023
5024}/*WDI_UpdateChannelReq*/
5025
Jeff Johnson295189b2012-06-20 16:38:30 -07005026/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005027 @brief WDI_SetLinkStateReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07005028 wants to change the state of an ongoing link. Upon the
5029 call of this API the WLAN DAL will pack and send a HAL
5030 Start message request message to the lower RIVA
5031 sub-system if DAL is in state STARTED.
5032
5033 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005034 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005035
5036 WDI_JoinStartReq must have been called.
5037
Jeff Johnsone7245742012-09-05 17:12:55 -07005038 @param wdiSetLinkStateReqParams: the set link state parameters
Jeff Johnson295189b2012-06-20 16:38:30 -07005039 as specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005040
Jeff Johnson295189b2012-06-20 16:38:30 -07005041 wdiSetLinkStateRspCb: callback for passing back the
5042 response of the set link state operation received from
5043 the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005044
Jeff Johnson295189b2012-06-20 16:38:30 -07005045 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005046 callback
5047
Jeff Johnson295189b2012-06-20 16:38:30 -07005048 @see WDI_JoinStartReq
5049 @return Result of the function call
5050*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005051WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005052WDI_SetLinkStateReq
5053(
5054 WDI_SetLinkReqParamsType* pwdiSetLinkStateReqParams,
5055 WDI_SetLinkStateRspCb wdiSetLinkStateRspCb,
5056 void* pUserData
5057)
5058{
5059 WDI_EventInfoType wdiEventData;
5060 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5061
5062 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005063 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005064 ------------------------------------------------------------------------*/
5065 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5066 {
5067 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5068 "WDI API call before module is initialized - Fail request");
5069
Jeff Johnsone7245742012-09-05 17:12:55 -07005070 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005071 }
5072
5073 /*------------------------------------------------------------------------
5074 Fill in Event data and post to the Main FSM
5075 ------------------------------------------------------------------------*/
5076 wdiEventData.wdiRequest = WDI_SET_LINK_ST_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005077 wdiEventData.pEventData = pwdiSetLinkStateReqParams;
5078 wdiEventData.uEventDataSize = sizeof(*pwdiSetLinkStateReqParams);
5079 wdiEventData.pCBfnc = wdiSetLinkStateRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005080 wdiEventData.pUserData = pUserData;
5081
5082 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5083
5084}/*WDI_SetLinkStateReq*/
5085
5086
5087/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005088 @brief WDI_GetStatsReq will be called when the upper MAC wants
Jeff Johnson295189b2012-06-20 16:38:30 -07005089 to get statistics (MIB counters) from the device. Upon
5090 the call of this API the WLAN DAL will pack and send a
5091 HAL Start request message to the lower RIVA sub-system
5092 if DAL is in state STARTED.
5093
5094 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005095 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005096
5097 WDI_Start must have been called.
5098
Jeff Johnsone7245742012-09-05 17:12:55 -07005099 @param wdiGetStatsReqParams: the stats parameters to get as
Jeff Johnson295189b2012-06-20 16:38:30 -07005100 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005101
Jeff Johnson295189b2012-06-20 16:38:30 -07005102 wdiGetStatsRspCb: callback for passing back the response
5103 of the get stats operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005104
Jeff Johnson295189b2012-06-20 16:38:30 -07005105 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005106 callback
5107
Jeff Johnson295189b2012-06-20 16:38:30 -07005108 @see WDI_Start
5109 @return Result of the function call
5110*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005111WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005112WDI_GetStatsReq
5113(
5114 WDI_GetStatsReqParamsType* pwdiGetStatsReqParams,
5115 WDI_GetStatsRspCb wdiGetStatsRspCb,
5116 void* pUserData
5117)
5118{
5119 WDI_EventInfoType wdiEventData;
5120 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5121
5122 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005123 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005124 ------------------------------------------------------------------------*/
5125 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5126 {
5127 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5128 "WDI API call before module is initialized - Fail request");
5129
Jeff Johnsone7245742012-09-05 17:12:55 -07005130 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005131 }
5132
5133 /*------------------------------------------------------------------------
5134 Fill in Event data and post to the Main FSM
5135 ------------------------------------------------------------------------*/
5136 wdiEventData.wdiRequest = WDI_GET_STATS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005137 wdiEventData.pEventData = pwdiGetStatsReqParams;
5138 wdiEventData.uEventDataSize = sizeof(*pwdiGetStatsReqParams);
5139 wdiEventData.pCBfnc = wdiGetStatsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005140 wdiEventData.pUserData = pUserData;
5141
5142 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5143
5144}/*WDI_GetStatsReq*/
5145
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -08005146#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_ESE || defined(FEATURE_WLAN_LFR)
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -08005147/**
5148 @brief WDI_GetRoamRssiReq will be called when the upper MAC wants
5149 to get roam rssi from the device. Upon
5150 the call of this API the WLAN DAL will pack and send a
5151 HAL Start request message to the lower RIVA sub-system
5152 if DAL is in state STARTED.
5153
5154 In state BUSY this request will be queued. Request won't
5155 be allowed in any other state.
5156
5157 WDI_Start must have been called.
5158
5159 @param wdiGetRoamRssiReqParams: the stats parameters to get as
5160 specified by the Device Interface
5161
5162 wdiGetRoamRssiRspCb: callback for passing back the response
5163 of the get stats operation received from the device
5164
5165 pUserData: user data will be passed back with the
5166 callback
5167
5168 @see WDI_Start
5169 @return Result of the function call
5170*/
5171WDI_Status
5172WDI_GetRoamRssiReq
5173(
5174 WDI_GetRoamRssiReqParamsType* pwdiGetRoamRssiReqParams,
5175 WDI_GetRoamRssiRspCb wdiGetRoamRssiRspCb,
5176 void* pUserData
5177)
5178{
5179 WDI_EventInfoType wdiEventData;
5180 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5181
5182 /*------------------------------------------------------------------------
5183 Sanity Check
5184 ------------------------------------------------------------------------*/
5185 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5186 {
5187 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5188 "WDI API call before module is initialized - Fail request");
5189
5190 return WDI_STATUS_E_NOT_ALLOWED;
5191 }
5192 /*------------------------------------------------------------------------
5193 Fill in Event data and post to the Main FSM
5194 ------------------------------------------------------------------------*/
5195 wdiEventData.wdiRequest = WDI_GET_ROAM_RSSI_REQ;
5196 wdiEventData.pEventData = pwdiGetRoamRssiReqParams;
5197 wdiEventData.uEventDataSize = sizeof(*pwdiGetRoamRssiReqParams);
5198 wdiEventData.pCBfnc = wdiGetRoamRssiRspCb;
5199 wdiEventData.pUserData = pUserData;
5200
5201 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5202
5203}/*WDI_GetRoamRssiReq*/
5204#endif
5205
Jeff Johnson295189b2012-06-20 16:38:30 -07005206
5207/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005208 @brief WDI_UpdateCfgReq will be called when the upper MAC when
Jeff Johnson295189b2012-06-20 16:38:30 -07005209 it wishes to change the configuration of the WLAN
5210 Device. Upon the call of this API the WLAN DAL will pack
5211 and send a HAL Update CFG request message to the lower
5212 RIVA sub-system if DAL is in state STARTED.
5213
5214 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005215 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005216
5217 WDI_Start must have been called.
5218
Jeff Johnsone7245742012-09-05 17:12:55 -07005219 @param wdiUpdateCfgReqParams: the update cfg parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07005220 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005221
Jeff Johnson295189b2012-06-20 16:38:30 -07005222 wdiUpdateCfgsRspCb: callback for passing back the
5223 response of the update cfg operation received from the
5224 device
Jeff Johnsone7245742012-09-05 17:12:55 -07005225
Jeff Johnson295189b2012-06-20 16:38:30 -07005226 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005227 callback
5228
Jeff Johnson295189b2012-06-20 16:38:30 -07005229 @see WDI_Start
5230 @return Result of the function call
5231*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005232WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005233WDI_UpdateCfgReq
5234(
5235 WDI_UpdateCfgReqParamsType* pwdiUpdateCfgReqParams,
5236 WDI_UpdateCfgRspCb wdiUpdateCfgsRspCb,
5237 void* pUserData
5238)
5239{
5240 WDI_EventInfoType wdiEventData;
5241 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5242
5243 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005244 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005245 ------------------------------------------------------------------------*/
5246 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5247 {
5248 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5249 "WDI API call before module is initialized - Fail request");
5250
Jeff Johnsone7245742012-09-05 17:12:55 -07005251 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005252 }
5253
5254 /*------------------------------------------------------------------------
5255 Fill in Event data and post to the Main FSM
5256 ------------------------------------------------------------------------*/
5257 wdiEventData.wdiRequest = WDI_UPDATE_CFG_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005258 wdiEventData.pEventData = pwdiUpdateCfgReqParams;
5259 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateCfgReqParams);
5260 wdiEventData.pCBfnc = wdiUpdateCfgsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005261 wdiEventData.pUserData = pUserData;
5262
5263 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5264
5265}/*WDI_UpdateCfgReq*/
5266
5267
5268
5269/**
5270 @brief WDI_AddBAReq will be called when the upper MAC has setup
5271 successfully a BA session and needs to notify the HW for
5272 the appropriate settings to take place. Upon the call of
5273 this API the WLAN DAL will pack and send a HAL Add BA
5274 request message to the lower RIVA sub-system if DAL is
5275 in state STARTED.
5276
5277 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005278 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005279
5280 WDI_PostAssocReq must have been called.
5281
5282 @param wdiAddBAReqParams: the add BA parameters as specified by
5283 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005284
Jeff Johnson295189b2012-06-20 16:38:30 -07005285 wdiAddBARspCb: callback for passing back the response of
5286 the add BA operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005287
Jeff Johnson295189b2012-06-20 16:38:30 -07005288 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005289 callback
5290
Jeff Johnson295189b2012-06-20 16:38:30 -07005291 @see WDI_PostAssocReq
5292 @return Result of the function call
5293*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005294WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005295WDI_AddBAReq
5296(
5297 WDI_AddBAReqParamsType* pwdiAddBAReqParams,
5298 WDI_AddBARspCb wdiAddBARspCb,
5299 void* pUserData
5300)
5301{
5302 WDI_EventInfoType wdiEventData;
5303 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5304
5305 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005306 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005307 ------------------------------------------------------------------------*/
5308 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5309 {
5310 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5311 "WDI API call before module is initialized - Fail request");
5312
Jeff Johnsone7245742012-09-05 17:12:55 -07005313 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005314 }
5315
5316 /*------------------------------------------------------------------------
5317 Fill in Event data and post to the Main FSM
5318 ------------------------------------------------------------------------*/
5319 wdiEventData.wdiRequest = WDI_ADD_BA_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005320 wdiEventData.pEventData = pwdiAddBAReqParams;
5321 wdiEventData.uEventDataSize = sizeof(*pwdiAddBAReqParams);
5322 wdiEventData.pCBfnc = wdiAddBARspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005323 wdiEventData.pUserData = pUserData;
5324
5325 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5326
5327}/*WDI_AddBAReq*/
5328
5329
5330/**
5331 @brief WDI_TriggerBAReq will be called when the upper MAC has setup
5332 successfully a BA session and needs to notify the HW for
5333 the appropriate settings to take place. Upon the call of
5334 this API the WLAN DAL will pack and send a HAL Add BA
5335 request message to the lower RIVA sub-system if DAL is
5336 in state STARTED.
5337
5338 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005339 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005340
5341 WDI_PostAssocReq must have been called.
5342
5343 @param wdiAddBAReqParams: the add BA parameters as specified by
5344 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005345
Jeff Johnson295189b2012-06-20 16:38:30 -07005346 wdiAddBARspCb: callback for passing back the response of
5347 the add BA operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005348
Jeff Johnson295189b2012-06-20 16:38:30 -07005349 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005350 callback
5351
Jeff Johnson295189b2012-06-20 16:38:30 -07005352 @see WDI_PostAssocReq
5353 @return Result of the function call
5354*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005355WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005356WDI_TriggerBAReq
5357(
5358 WDI_TriggerBAReqParamsType* pwdiTriggerBAReqParams,
5359 WDI_TriggerBARspCb wdiTriggerBARspCb,
5360 void* pUserData
5361)
5362{
5363 WDI_EventInfoType wdiEventData;
5364 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5365
5366 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005367 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005368 ------------------------------------------------------------------------*/
5369 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5370 {
5371 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5372 "WDI API call before module is initialized - Fail request");
5373
Jeff Johnsone7245742012-09-05 17:12:55 -07005374 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005375 }
5376
5377 /*------------------------------------------------------------------------
5378 Fill in Event data and post to the Main FSM
5379 ------------------------------------------------------------------------*/
5380 wdiEventData.wdiRequest = WDI_TRIGGER_BA_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005381 wdiEventData.pEventData = pwdiTriggerBAReqParams;
5382 wdiEventData.uEventDataSize = sizeof(*pwdiTriggerBAReqParams);
5383 wdiEventData.pCBfnc = wdiTriggerBARspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005384 wdiEventData.pUserData = pUserData;
5385
5386 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5387
5388}/*WDI_AddBAReq*/
5389
5390/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005391 @brief WDI_UpdateBeaconParamsReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07005392 wishes to update any of the Beacon parameters used by HW.
5393 Upon the call of this API the WLAN DAL will pack and send a HAL Update Beacon Params request
5394 message to the lower RIVA sub-system if DAL is in state
5395 STARTED.
5396
5397 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005398 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005399
5400 WDI_PostAssocReq must have been called.
5401
Jeff Johnsone7245742012-09-05 17:12:55 -07005402 @param wdiUpdateBeaconParams: the Beacon parameters as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07005403 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005404
Jeff Johnson295189b2012-06-20 16:38:30 -07005405 wdiUpdateBeaconParamsRspCb: callback for passing back the
5406 response of the start operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005407
Jeff Johnson295189b2012-06-20 16:38:30 -07005408 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005409 callback
5410
Jeff Johnson295189b2012-06-20 16:38:30 -07005411 @see WDI_PostAssocReq
5412 @return Result of the function call
5413*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005414WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005415WDI_UpdateBeaconParamsReq
5416(
5417 WDI_UpdateBeaconParamsType* pwdiUpdateBeaconParams,
5418 WDI_UpdateBeaconParamsRspCb wdiUpdateBeaconParamsRspCb,
5419 void* pUserData
5420)
5421{
5422 WDI_EventInfoType wdiEventData;
5423 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5424
5425 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005426 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005427 ------------------------------------------------------------------------*/
5428 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5429 {
5430 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5431 "WDI API call before module is initialized - Fail request");
5432
Jeff Johnsone7245742012-09-05 17:12:55 -07005433 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005434 }
5435
5436 /*------------------------------------------------------------------------
5437 Fill in Event data and post to the Main FSM
5438 ------------------------------------------------------------------------*/
5439 wdiEventData.wdiRequest = WDI_UPD_BCON_PRMS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005440 wdiEventData.pEventData = pwdiUpdateBeaconParams;
5441 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateBeaconParams);
5442 wdiEventData.pCBfnc = wdiUpdateBeaconParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005443 wdiEventData.pUserData = pUserData;
5444
5445 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5446
5447}/*WDI_UpdateBeaconParamsReq*/
5448
5449/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005450 @brief WDI_SendBeaconParamsReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07005451 wishes to update the Beacon template used by HW.
5452 Upon the call of this API the WLAN DAL will pack and send a HAL Update Beacon template request
5453 message to the lower RIVA sub-system if DAL is in state
5454 STARTED.
5455
5456 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005457 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005458
5459 WDI_PostAssocReq must have been called.
5460
Jeff Johnsone7245742012-09-05 17:12:55 -07005461 @param wdiSendBeaconParams: the Beacon parameters as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07005462 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005463
Jeff Johnson295189b2012-06-20 16:38:30 -07005464 wdiSendBeaconParamsRspCb: callback for passing back the
5465 response of the start operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005466
Jeff Johnson295189b2012-06-20 16:38:30 -07005467 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005468 callback
5469
Jeff Johnson295189b2012-06-20 16:38:30 -07005470 @see WDI_PostAssocReq
5471 @return Result of the function call
5472*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005473WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005474WDI_SendBeaconParamsReq
5475(
5476 WDI_SendBeaconParamsType* pwdiSendBeaconParams,
5477 WDI_SendBeaconParamsRspCb wdiSendBeaconParamsRspCb,
5478 void* pUserData
5479)
5480{
5481 WDI_EventInfoType wdiEventData;
5482 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5483
5484 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005485 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005486 ------------------------------------------------------------------------*/
5487 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5488 {
5489 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5490 "WDI API call before module is initialized - Fail request");
5491
Jeff Johnsone7245742012-09-05 17:12:55 -07005492 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005493 }
5494
5495 /*------------------------------------------------------------------------
5496 Fill in Event data and post to the Main FSM
5497 ------------------------------------------------------------------------*/
5498 wdiEventData.wdiRequest = WDI_SND_BCON_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005499 wdiEventData.pEventData = pwdiSendBeaconParams;
5500 wdiEventData.uEventDataSize = sizeof(*pwdiSendBeaconParams);
5501 wdiEventData.pCBfnc = wdiSendBeaconParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005502 wdiEventData.pUserData = pUserData;
5503
5504 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5505
5506}/*WDI_SendBeaconParamsReq*/
5507
5508/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005509 @brief WDI_UpdateProbeRspTemplateReq will be called when the
Jeff Johnson295189b2012-06-20 16:38:30 -07005510 upper MAC wants to update the probe response template to
5511 be transmitted as Soft AP
5512 Upon the call of this API the WLAN DAL will
5513 pack and send the probe rsp template message to the
5514 lower RIVA sub-system if DAL is in state STARTED.
5515
5516 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005517 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005518
5519
Jeff Johnsone7245742012-09-05 17:12:55 -07005520 @param pwdiUpdateProbeRspParams: the Update Beacon parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07005521 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005522
Jeff Johnson295189b2012-06-20 16:38:30 -07005523 wdiSendBeaconParamsRspCb: callback for passing back the
5524 response of the Send Beacon Params operation received
5525 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005526
Jeff Johnson295189b2012-06-20 16:38:30 -07005527 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005528 callback
5529
Jeff Johnson295189b2012-06-20 16:38:30 -07005530 @see WDI_AddBAReq
5531 @return Result of the function call
5532*/
5533
Jeff Johnsone7245742012-09-05 17:12:55 -07005534WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005535WDI_UpdateProbeRspTemplateReq
5536(
5537 WDI_UpdateProbeRspTemplateParamsType* pwdiUpdateProbeRspParams,
5538 WDI_UpdateProbeRspTemplateRspCb wdiUpdateProbeRspParamsRspCb,
5539 void* pUserData
5540)
5541{
5542 WDI_EventInfoType wdiEventData;
5543 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5544
5545 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005546 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005547 ------------------------------------------------------------------------*/
5548 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5549 {
5550 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5551 "WDI API call before module is initialized - Fail request");
5552
Jeff Johnsone7245742012-09-05 17:12:55 -07005553 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005554 }
5555
5556 /*------------------------------------------------------------------------
5557 Fill in Event data and post to the Main FSM
5558 ------------------------------------------------------------------------*/
5559 wdiEventData.wdiRequest = WDI_UPD_PROBE_RSP_TEMPLATE_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005560 wdiEventData.pEventData = pwdiUpdateProbeRspParams;
5561 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateProbeRspParams);
5562 wdiEventData.pCBfnc = wdiUpdateProbeRspParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005563 wdiEventData.pUserData = pUserData;
5564
5565 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5566
5567}/*WDI_UpdateProbeRspTemplateReq*/
5568
5569/**
5570 @brief WDI_NvDownloadReq will be called by the UMAC to download the NV blob
5571 to the NV memory.
5572
5573
5574 @param wdiNvDownloadReqParams: the NV Download parameters as specified by
5575 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005576
Jeff Johnson295189b2012-06-20 16:38:30 -07005577 wdiNvDownloadRspCb: callback for passing back the response of
5578 the NV Download operation received 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_PostAssocReq
5584 @return Result of the function call
5585*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005586WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005587WDI_NvDownloadReq
5588(
5589 WDI_NvDownloadReqParamsType* pwdiNvDownloadReqParams,
5590 WDI_NvDownloadRspCb wdiNvDownloadRspCb,
5591 void* pUserData
5592)
5593{
5594 WDI_EventInfoType wdiEventData;
5595
5596 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005597 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005598 ------------------------------------------------------------------------*/
5599 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5600 {
5601 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5602 "WDI API call before module is initialized - Fail request");
5603
Jeff Johnsone7245742012-09-05 17:12:55 -07005604 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005605 }
5606
5607 /*------------------------------------------------------------------------
5608 Fill in Event data and post to the Main FSM
5609 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005610 wdiEventData.wdiRequest = WDI_NV_DOWNLOAD_REQ;
5611 wdiEventData.pEventData = (void *)pwdiNvDownloadReqParams;
5612 wdiEventData.uEventDataSize = sizeof(*pwdiNvDownloadReqParams);
5613 wdiEventData.pCBfnc = wdiNvDownloadRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005614 wdiEventData.pUserData = pUserData;
5615
5616 return WDI_PostMainEvent(&gWDICb, WDI_START_EVENT, &wdiEventData);
5617
5618}/*WDI_NVDownloadReq*/
5619
Jeff Johnson295189b2012-06-20 16:38:30 -07005620/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005621 @brief WDI_SetP2PGONOAReq will be called when the
Jeff Johnson295189b2012-06-20 16:38:30 -07005622 upper MAC wants to send Notice of Absence
5623 Upon the call of this API the WLAN DAL will
5624 pack and send the probe rsp template message to the
5625 lower RIVA sub-system if DAL is in state STARTED.
5626
5627 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005628 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005629
5630
Jeff Johnsone7245742012-09-05 17:12:55 -07005631 @param pwdiUpdateProbeRspParams: the Update Beacon parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07005632 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005633
Jeff Johnson295189b2012-06-20 16:38:30 -07005634 wdiSendBeaconParamsRspCb: callback for passing back the
5635 response of the Send Beacon Params operation received
5636 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005637
Jeff Johnson295189b2012-06-20 16:38:30 -07005638 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005639 callback
5640
Jeff Johnson295189b2012-06-20 16:38:30 -07005641 @see WDI_AddBAReq
5642 @return Result of the function call
5643*/
5644WDI_Status
5645WDI_SetP2PGONOAReq
5646(
5647 WDI_SetP2PGONOAReqParamsType* pwdiP2PGONOAReqParams,
5648 WDI_SetP2PGONOAReqParamsRspCb wdiP2PGONOAReqParamsRspCb,
5649 void* pUserData
5650)
5651{
5652 WDI_EventInfoType wdiEventData;
5653 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5654
5655 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005656 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005657 ------------------------------------------------------------------------*/
5658 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5659 {
5660 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5661 "WDI API call before module is initialized - Fail request");
5662
Jeff Johnsone7245742012-09-05 17:12:55 -07005663 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005664 }
5665
5666 /*------------------------------------------------------------------------
5667 Fill in Event data and post to the Main FSM
5668 ------------------------------------------------------------------------*/
5669 wdiEventData.wdiRequest = WDI_P2P_GO_NOTICE_OF_ABSENCE_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005670 wdiEventData.pEventData = pwdiP2PGONOAReqParams;
5671 wdiEventData.uEventDataSize = sizeof(*pwdiP2PGONOAReqParams);
5672 wdiEventData.pCBfnc = wdiP2PGONOAReqParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005673 wdiEventData.pUserData = pUserData;
5674
5675 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5676
5677}/*WDI_SetP2PGONOAReq*/
Jeff Johnson295189b2012-06-20 16:38:30 -07005678
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +05305679#ifdef FEATURE_WLAN_TDLS
5680/**
5681 @brief WDI_SetTDLSLinkEstablishReq will be called when the
5682 upper MAC wants to send TDLS Link Establish Request Parameters
5683 Upon the call of this API the WLAN DAL will
5684 pack and send the TDLS Link Establish Request message to the
5685 lower RIVA sub-system if DAL is in state STARTED.
5686
5687 In state BUSY this request will be queued. Request won't
5688 be allowed in any other state.
5689
5690
5691 @param pwdiTDLSLinkEstablishReqParams: TDLS Peer Parameters
5692 for Link Establishment (Used for PUAPSD , TDLS Off Channel ...)
5693
5694 wdiTDLSLinkEstablishReqRspCb: callback for passing back the
5695 response of the TDLS Link Establish request received
5696 from the device
5697
5698 pUserData: user data will be passed back with the
5699 callback
5700
5701 @see
5702 @return Result of the function call
5703*/
5704WDI_Status
5705WDI_SetTDLSLinkEstablishReq
5706(
5707 WDI_SetTDLSLinkEstablishReqParamsType* pwdiTDLSLinkEstablishReqParams,
5708 WDI_SetTDLSLinkEstablishReqParamsRspCb wdiTDLSLinkEstablishReqRspCb,
5709 void* pUserData
5710)
5711{
5712 WDI_EventInfoType wdiEventData;
5713 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5714
5715 /*------------------------------------------------------------------------
5716 Sanity Check
5717 ------------------------------------------------------------------------*/
5718 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5719 {
5720 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5721 "WDI API call before module is initialized - Fail request");
5722
5723 return WDI_STATUS_E_NOT_ALLOWED;
5724 }
5725
5726 /*------------------------------------------------------------------------
5727 Fill in Event data and post to the Main FSM
5728 ------------------------------------------------------------------------*/
5729 wdiEventData.wdiRequest = WDI_TDLS_LINK_ESTABLISH_REQ;
5730 wdiEventData.pEventData = pwdiTDLSLinkEstablishReqParams;
5731 wdiEventData.uEventDataSize = sizeof(*pwdiTDLSLinkEstablishReqParams);
5732 wdiEventData.pCBfnc = wdiTDLSLinkEstablishReqRspCb;
5733 wdiEventData.pUserData = pUserData;
5734
5735 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5736
5737}/*WDI_SetTDLSLinkEstablishReq*/
5738#endif
5739
Jeff Johnson295189b2012-06-20 16:38:30 -07005740/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005741 @brief WDI_AddSTASelfReq will be called when the
Jeff Johnson295189b2012-06-20 16:38:30 -07005742 UMAC wanted to add STA self while opening any new session
5743 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005744 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005745
5746
Jeff Johnsone7245742012-09-05 17:12:55 -07005747 @param pwdiAddSTASelfParams: the add sta self parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07005748 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005749
Jeff Johnson295189b2012-06-20 16:38:30 -07005750 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005751 callback
5752
5753 @see
Jeff Johnson295189b2012-06-20 16:38:30 -07005754 @return Result of the function call
5755*/
5756WDI_Status
5757WDI_AddSTASelfReq
5758(
5759 WDI_AddSTASelfReqParamsType* pwdiAddSTASelfReqParams,
5760 WDI_AddSTASelfParamsRspCb wdiAddSTASelfReqParamsRspCb,
5761 void* pUserData
5762)
5763{
5764 WDI_EventInfoType wdiEventData;
5765 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5766
5767 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005768 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005769 ------------------------------------------------------------------------*/
5770 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5771 {
5772 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5773 "WDI API call before module is initialized - Fail request");
5774
Jeff Johnsone7245742012-09-05 17:12:55 -07005775 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005776 }
5777
5778 /*------------------------------------------------------------------------
5779 Fill in Event data and post to the Main FSM
5780 ------------------------------------------------------------------------*/
5781 wdiEventData.wdiRequest = WDI_ADD_STA_SELF_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005782 wdiEventData.pEventData = pwdiAddSTASelfReqParams;
5783 wdiEventData.uEventDataSize = sizeof(*pwdiAddSTASelfReqParams);
5784 wdiEventData.pCBfnc = wdiAddSTASelfReqParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005785 wdiEventData.pUserData = pUserData;
5786
5787 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5788
5789}/*WDI_AddSTASelfReq*/
5790
5791
Jeff Johnsone7245742012-09-05 17:12:55 -07005792#ifdef WLAN_FEATURE_VOWIFI_11R
Jeff Johnson295189b2012-06-20 16:38:30 -07005793/**
5794 @brief WDI_AggrAddTSReq will be called when the upper MAC to inform
5795 the device of a successful add TSpec negotiation. HW
5796 needs to receive the TSpec Info from the UMAC in order
5797 to configure properly the QoS data traffic. Upon the
5798 call of this API the WLAN DAL will pack and send a HAL
5799 Add TS request message to the lower RIVA sub-system if
5800 DAL is in state STARTED.
5801
5802 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005803 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005804
5805 WDI_PostAssocReq must have been called.
5806
5807 @param wdiAddTsReqParams: the add TS parameters as specified by
5808 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005809
Jeff Johnson295189b2012-06-20 16:38:30 -07005810 wdiAddTsRspCb: callback for passing back the response of
5811 the add TS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005812
Jeff Johnson295189b2012-06-20 16:38:30 -07005813 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005814 callback
5815
Jeff Johnson295189b2012-06-20 16:38:30 -07005816 @see WDI_PostAssocReq
5817 @return Result of the function call
5818*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005819WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005820WDI_AggrAddTSReq
5821(
5822 WDI_AggrAddTSReqParamsType* pwdiAggrAddTsReqParams,
5823 WDI_AggrAddTsRspCb wdiAggrAddTsRspCb,
5824 void* pUserData
5825)
5826{
5827 WDI_EventInfoType wdiEventData;
5828 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5829
5830 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005831 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005832 ------------------------------------------------------------------------*/
5833 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5834 {
5835 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5836 "WDI API call before module is initialized - Fail request");
5837
Jeff Johnsone7245742012-09-05 17:12:55 -07005838 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005839 }
5840
5841 /*------------------------------------------------------------------------
5842 Fill in Event data and post to the Main FSM
5843 ------------------------------------------------------------------------*/
5844 wdiEventData.wdiRequest = WDI_AGGR_ADD_TS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005845 wdiEventData.pEventData = pwdiAggrAddTsReqParams;
5846 wdiEventData.uEventDataSize = sizeof(*pwdiAggrAddTsReqParams);
5847 wdiEventData.pCBfnc = wdiAggrAddTsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005848 wdiEventData.pUserData = pUserData;
5849
5850 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5851
5852}/*WDI_AggrAddTSReq*/
5853
5854#endif /* WLAN_FEATURE_VOWIFI_11R */
5855
Jeff Johnson295189b2012-06-20 16:38:30 -07005856/**
5857 @brief WDI_FTMCommandReq
5858 Post FTM Command Event
Jeff Johnsone7245742012-09-05 17:12:55 -07005859
5860 @param ftmCommandReq: FTM Command Body
5861 @param ftmCommandRspCb: FTM Response from HAL CB
Jeff Johnson295189b2012-06-20 16:38:30 -07005862 @param pUserData: Client Data
Jeff Johnsone7245742012-09-05 17:12:55 -07005863
Jeff Johnson295189b2012-06-20 16:38:30 -07005864 @see
5865 @return Result of the function call
5866*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005867WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005868WDI_FTMCommandReq
5869(
5870 WDI_FTMCommandReqType *ftmCommandReq,
5871 WDI_FTMCommandRspCb ftmCommandRspCb,
5872 void *pUserData
5873)
5874{
5875 WDI_EventInfoType wdiEventData;
5876 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5877
5878 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005879 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005880 ------------------------------------------------------------------------*/
5881 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5882 {
5883 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5884 "WDI API call before module is initialized - Fail request");
5885
Jeff Johnsone7245742012-09-05 17:12:55 -07005886 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005887 }
5888
5889 /*------------------------------------------------------------------------
5890 Fill in Event data and post to the Main FSM
5891 ------------------------------------------------------------------------*/
5892 wdiEventData.wdiRequest = WDI_FTM_CMD_REQ;
5893 wdiEventData.pEventData = (void *)ftmCommandReq;
5894 wdiEventData.uEventDataSize = ftmCommandReq->bodyLength + sizeof(wpt_uint32);
5895 wdiEventData.pCBfnc = ftmCommandRspCb;
5896 wdiEventData.pUserData = pUserData;
5897
5898 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5899}
Jeff Johnson295189b2012-06-20 16:38:30 -07005900/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005901 @brief WDI_HostResumeReq will be called
Jeff Johnson295189b2012-06-20 16:38:30 -07005902
5903 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005904 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005905
5906
5907 @param pwdiResumeReqParams: as specified by
5908 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005909
Jeff Johnson295189b2012-06-20 16:38:30 -07005910 wdiResumeReqRspCb: callback for passing back the response of
5911 the Resume Req received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005912
Jeff Johnson295189b2012-06-20 16:38:30 -07005913 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005914 callback
5915
5916 @see
Jeff Johnson295189b2012-06-20 16:38:30 -07005917 @return Result of the function call
5918*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005919WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005920WDI_HostResumeReq
5921(
5922 WDI_ResumeParamsType* pwdiResumeReqParams,
5923 WDI_HostResumeEventRspCb wdiResumeReqRspCb,
5924 void* pUserData
5925)
5926{
5927 WDI_EventInfoType wdiEventData;
5928 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5929
5930 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005931 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005932 ------------------------------------------------------------------------*/
5933 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5934 {
5935 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5936 "WDI API call before module is initialized - Fail request");
5937
Jeff Johnsone7245742012-09-05 17:12:55 -07005938 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005939 }
5940
5941 /*------------------------------------------------------------------------
5942 Fill in Event data and post to the Main FSM
5943 ------------------------------------------------------------------------*/
5944 wdiEventData.wdiRequest = WDI_HOST_RESUME_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005945 wdiEventData.pEventData = pwdiResumeReqParams;
5946 wdiEventData.uEventDataSize = sizeof(*pwdiResumeReqParams);
5947 wdiEventData.pCBfnc = wdiResumeReqRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005948 wdiEventData.pUserData = pUserData;
5949
5950 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5951
5952}/*WDI_HostResumeReq*/
5953
5954/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005955 @brief WDI_DelSTASelfReq will be called
Jeff Johnson295189b2012-06-20 16:38:30 -07005956
5957 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005958 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005959
5960
5961 @param pwdiDelStaSelfReqParams: as specified by
5962 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005963
Jeff Johnson295189b2012-06-20 16:38:30 -07005964 wdiDelStaSelfRspCb: callback for passing back the response of
5965 the add TS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005966
Jeff Johnson295189b2012-06-20 16:38:30 -07005967 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005968 callback
5969
Jeff Johnson295189b2012-06-20 16:38:30 -07005970 @see WDI_PostAssocReq
5971 @return Result of the function call
5972*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005973WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005974WDI_DelSTASelfReq
5975(
5976 WDI_DelSTASelfReqParamsType* pwdiDelStaSelfReqParams,
5977 WDI_DelSTASelfRspCb wdiDelStaSelfRspCb,
5978 void* pUserData
5979)
5980{
5981 WDI_EventInfoType wdiEventData;
5982 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5983
5984 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005985 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005986 ------------------------------------------------------------------------*/
5987 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5988 {
5989 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5990 "WDI API call before module is initialized - Fail request");
5991
Jeff Johnsone7245742012-09-05 17:12:55 -07005992 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005993 }
5994
5995 /*------------------------------------------------------------------------
5996 Fill in Event data and post to the Main FSM
5997 ------------------------------------------------------------------------*/
5998 wdiEventData.wdiRequest = WDI_DEL_STA_SELF_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005999 wdiEventData.pEventData = pwdiDelStaSelfReqParams;
6000 wdiEventData.uEventDataSize = sizeof(*pwdiDelStaSelfReqParams);
6001 wdiEventData.pCBfnc = wdiDelStaSelfRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07006002 wdiEventData.pUserData = pUserData;
6003
6004 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6005
6006}/*WDI_AggrAddTSReq*/
6007
6008/**
Jeff Johnsone7245742012-09-05 17:12:55 -07006009 @brief WDI_SetTxPerTrackingReq will be called when the upper MAC
6010 wants to set the Tx Per Tracking configurations.
Jeff Johnson295189b2012-06-20 16:38:30 -07006011 Upon the call of this API the WLAN DAL will pack
6012 and send a HAL Set Tx Per Tracking request message to the
6013 lower RIVA sub-system if DAL is in state STARTED.
6014
6015 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07006016 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07006017
Jeff Johnsone7245742012-09-05 17:12:55 -07006018 @param pwdiSetTxPerTrackingReqParams: the Set Tx PER Tracking configurations as
Jeff Johnson295189b2012-06-20 16:38:30 -07006019 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07006020
Jeff Johnson295189b2012-06-20 16:38:30 -07006021 pwdiSetTxPerTrackingRspCb: callback for passing back the
6022 response of the set Tx PER Tracking configurations operation received
6023 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07006024
Jeff Johnson295189b2012-06-20 16:38:30 -07006025 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07006026 callback
6027
Jeff Johnson295189b2012-06-20 16:38:30 -07006028 @return Result of the function call
6029*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006030WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07006031WDI_SetTxPerTrackingReq
6032(
6033 WDI_SetTxPerTrackingReqParamsType* pwdiSetTxPerTrackingReqParams,
6034 WDI_SetTxPerTrackingRspCb pwdiSetTxPerTrackingRspCb,
6035 void* pUserData
6036)
6037{
6038 WDI_EventInfoType wdiEventData;
6039 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6040
6041 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006042 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006043 ------------------------------------------------------------------------*/
6044 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6045 {
6046 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6047 "WDI API call before module is initialized - Fail request");
6048
Jeff Johnsone7245742012-09-05 17:12:55 -07006049 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006050 }
6051
6052 /*------------------------------------------------------------------------
6053 Fill in Event data and post to the Main FSM
6054 ------------------------------------------------------------------------*/
6055 wdiEventData.wdiRequest = WDI_SET_TX_PER_TRACKING_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07006056 wdiEventData.pEventData = pwdiSetTxPerTrackingReqParams;
Jeff Johnson295189b2012-06-20 16:38:30 -07006057 wdiEventData.uEventDataSize = sizeof(*pwdiSetTxPerTrackingReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07006058 wdiEventData.pCBfnc = pwdiSetTxPerTrackingRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07006059 wdiEventData.pUserData = pUserData;
6060
6061 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6062
6063}/*WDI_SetTxPerTrackingReq*/
6064
6065/**
6066 @brief WDI_SetTmLevelReq
6067 If HW Thermal condition changed, driver should react based on new
6068 HW thermal condition.
6069
6070 @param pwdiSetTmLevelReq: New thermal condition information
6071
6072 pwdiSetTmLevelRspCb: callback
6073
6074 usrData: user data will be passed back with the
6075 callback
6076
6077 @return Result of the function call
6078*/
6079WDI_Status
6080WDI_SetTmLevelReq
6081(
6082 WDI_SetTmLevelReqType *pwdiSetTmLevelReq,
6083 WDI_SetTmLevelCb pwdiSetTmLevelRspCb,
6084 void *usrData
6085)
6086{
6087 WDI_EventInfoType wdiEventData;
6088 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6089
6090 /*------------------------------------------------------------------------
6091 Sanity Check
6092 ------------------------------------------------------------------------*/
6093 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6094 {
6095 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6096 "WDI API call before module is initialized - Fail request");
6097
6098 return WDI_STATUS_E_NOT_ALLOWED;
6099 }
6100
6101 /*------------------------------------------------------------------------
6102 Fill in Event data and post to the Main FSM
6103 ------------------------------------------------------------------------*/
6104 wdiEventData.wdiRequest = WDI_SET_TM_LEVEL_REQ;
6105 wdiEventData.pEventData = pwdiSetTmLevelReq;
6106 wdiEventData.uEventDataSize = sizeof(*pwdiSetTmLevelReq);
6107 wdiEventData.pCBfnc = pwdiSetTmLevelRspCb;
6108 wdiEventData.pUserData = usrData;
6109
6110 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6111}
6112
6113/**
6114 @brief WDI_HostSuspendInd
6115
6116 Suspend Indication from the upper layer will be sent
6117 down to HAL
Jeff Johnsone7245742012-09-05 17:12:55 -07006118
Jeff Johnson295189b2012-06-20 16:38:30 -07006119 @param WDI_SuspendResumeIndParamsType
Jeff Johnsone7245742012-09-05 17:12:55 -07006120
6121 @see
6122
Jeff Johnson295189b2012-06-20 16:38:30 -07006123 @return Status of the request
6124*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006125WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07006126WDI_HostSuspendInd
6127(
6128 WDI_SuspendParamsType* pwdiSuspendIndParams
6129)
6130{
6131
6132 WDI_EventInfoType wdiEventData;
6133 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6134
6135 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006136 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006137 ------------------------------------------------------------------------*/
6138 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6139 {
6140 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6141 "WDI API call before module is initialized - Fail request");
6142
Jeff Johnsone7245742012-09-05 17:12:55 -07006143 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006144 }
6145
6146 /*------------------------------------------------------------------------
6147 Fill in Event data and post to the Main FSM
6148 ------------------------------------------------------------------------*/
6149 wdiEventData.wdiRequest = WDI_HOST_SUSPEND_IND;
Jeff Johnsone7245742012-09-05 17:12:55 -07006150 wdiEventData.pEventData = pwdiSuspendIndParams;
6151 wdiEventData.uEventDataSize = sizeof(*pwdiSuspendIndParams);
6152 wdiEventData.pCBfnc = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07006153 wdiEventData.pUserData = NULL;
6154
6155 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6156
6157}/*WDI_HostSuspendInd*/
6158
6159/**
Madan Mohan Koyyalamudi01cba042013-01-10 21:56:05 -08006160 @brief WDI_TrafficStatsInd
6161 Traffic Stats from the upper layer will be sent
6162 down to HAL
6163
6164 @param WDI_TrafficStatsIndType
6165
6166 @see
6167
6168 @return Status of the request
6169*/
6170WDI_Status
6171WDI_TrafficStatsInd
6172(
6173 WDI_TrafficStatsIndType *pWdiTrafficStatsIndParams
6174)
6175{
6176
6177 WDI_EventInfoType wdiEventData;
6178 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6179
6180 /*------------------------------------------------------------------------
6181 Sanity Check
6182 ------------------------------------------------------------------------*/
6183 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6184 {
6185 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6186 "WDI API call before module is initialized - Fail request");
6187
6188 return WDI_STATUS_E_NOT_ALLOWED;
6189 }
6190
6191 /*------------------------------------------------------------------------
6192 Fill in Event data and post to the Main FSM
6193 ------------------------------------------------------------------------*/
6194 wdiEventData.wdiRequest = WDI_TRAFFIC_STATS_IND;
6195 wdiEventData.pEventData = pWdiTrafficStatsIndParams;
6196 wdiEventData.uEventDataSize = sizeof(*pWdiTrafficStatsIndParams);
6197 wdiEventData.pCBfnc = NULL;
6198 wdiEventData.pUserData = NULL;
6199
6200 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6201
6202}/*WDI_TrafficStatsInd*/
6203
Chet Lanctot186b5732013-03-18 10:26:30 -07006204#ifdef WLAN_FEATURE_11W
6205/**
6206 @brief WDI_ExcludeUnencryptedInd
6207 Register with HAL to receive/drop unencrypted frames
6208
6209 @param WDI_ExcludeUnencryptIndType
6210
6211 @see
6212
6213 @return Status of the request
6214*/
6215WDI_Status
6216WDI_ExcludeUnencryptedInd
6217(
6218 WDI_ExcludeUnencryptIndType *pWdiExcUnencParams
6219)
6220{
6221
6222 WDI_EventInfoType wdiEventData;
6223 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6224
6225 /*------------------------------------------------------------------------
6226 Sanity Check
6227 ------------------------------------------------------------------------*/
6228 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6229 {
6230 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6231 "WDI API call before module is initialized - Fail request");
6232
6233 return WDI_STATUS_E_NOT_ALLOWED;
6234 }
6235
6236 /*------------------------------------------------------------------------
6237 Fill in Event data and post to the Main FSM
6238 ------------------------------------------------------------------------*/
6239 wdiEventData.wdiRequest = WDI_EXCLUDE_UNENCRYPTED_IND;
6240 wdiEventData.pEventData = pWdiExcUnencParams;
6241 wdiEventData.uEventDataSize = sizeof(*pWdiExcUnencParams);
6242 wdiEventData.pCBfnc = NULL;
6243 wdiEventData.pUserData = NULL;
6244
6245 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6246
6247}/*WDI_TrafficStatsInd*/
6248#endif
6249
Madan Mohan Koyyalamudi01cba042013-01-10 21:56:05 -08006250/**
Yue Mab9c86f42013-08-14 15:59:08 -07006251 @brief WDI_AddPeriodicTxPtrnInd: Add Periodic TX Pattern Indication to FW
6252
6253 @param addPeriodicTxPtrnParams: Add Pattern parameters
6254
6255 @see
6256
6257 @return Status of the request
6258*/
6259WDI_Status
6260WDI_AddPeriodicTxPtrnInd
6261(
6262 WDI_AddPeriodicTxPtrnParamsType* addPeriodicTxPtrnParams
6263)
6264{
6265 WDI_EventInfoType wdiEventData;
6266
6267 /*-------------------------------------------------------------------------
6268 Sanity Check
6269 ------------------------------------------------------------------------*/
6270 if (eWLAN_PAL_FALSE == gWDIInitialized)
6271 {
6272 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6273 "WDI API call before module is initialized - Fail request!");
6274
6275 return WDI_STATUS_E_NOT_ALLOWED;
6276 }
6277
6278 /*-------------------------------------------------------------------------
6279 Fill in Event data and post to the Main FSM
6280 ------------------------------------------------------------------------*/
6281 wdiEventData.wdiRequest = WDI_ADD_PERIODIC_TX_PATTERN_IND;
6282 wdiEventData.pEventData = addPeriodicTxPtrnParams;
6283 wdiEventData.uEventDataSize = sizeof(WDI_AddPeriodicTxPtrnParamsType);
6284 wdiEventData.pCBfnc = NULL;
6285 wdiEventData.pUserData = NULL;
6286
6287 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6288}
6289
6290/**
6291 @brief WDI_DelPeriodicTxPtrnInd: Delete Periodic TX Pattern Indication to FW
6292
6293 @param delPeriodicTxPtrnParams: Delete Pattern parameters
6294
6295 @see
6296
6297 @return Status of the request
6298*/
6299WDI_Status
6300WDI_DelPeriodicTxPtrnInd
6301(
6302 WDI_DelPeriodicTxPtrnParamsType* delPeriodicTxPtrnParams
6303)
6304{
6305 WDI_EventInfoType wdiEventData;
6306
6307 /*-------------------------------------------------------------------------
6308 Sanity Check
6309 ------------------------------------------------------------------------*/
6310 if (eWLAN_PAL_FALSE == gWDIInitialized)
6311 {
6312 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6313 "WDI API call before module is initialized - Fail request!");
6314
6315 return WDI_STATUS_E_NOT_ALLOWED;
6316 }
6317
6318 /*-------------------------------------------------------------------------
6319 Fill in Event data and post to the Main FSM
6320 ------------------------------------------------------------------------*/
6321 wdiEventData.wdiRequest = WDI_DEL_PERIODIC_TX_PATTERN_IND;
6322 wdiEventData.pEventData = delPeriodicTxPtrnParams;
6323 wdiEventData.uEventDataSize = sizeof(WDI_DelPeriodicTxPtrnParamsType);
6324 wdiEventData.pCBfnc = NULL;
6325 wdiEventData.pUserData = NULL;
6326
6327 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6328}
6329
6330/**
Jeff Johnson295189b2012-06-20 16:38:30 -07006331 @brief WDI_HALDumpCmdReq
6332 Post HAL DUMP Command Event
Jeff Johnsone7245742012-09-05 17:12:55 -07006333
6334 @param halDumpCmdReqParams: Hal Dump Command Body
6335 @param halDumpCmdRspCb: HAL DUMP Response from HAL CB
Jeff Johnson295189b2012-06-20 16:38:30 -07006336 @param pUserData: Client Data
Jeff Johnsone7245742012-09-05 17:12:55 -07006337
Jeff Johnson295189b2012-06-20 16:38:30 -07006338 @see
6339 @return Result of the function call
6340*/
6341WDI_Status WDI_HALDumpCmdReq
6342(
6343 WDI_HALDumpCmdReqParamsType *halDumpCmdReqParams,
6344 WDI_HALDumpCmdRspCb halDumpCmdRspCb,
6345 void *pUserData
6346)
6347{
6348 WDI_EventInfoType wdiEventData;
6349 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6350
6351 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006352 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006353 ------------------------------------------------------------------------*/
6354 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6355 {
6356 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6357 "WDI API call before module is initialized - Fail request");
6358
Jeff Johnsone7245742012-09-05 17:12:55 -07006359 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006360 }
6361
6362 /*------------------------------------------------------------------------
6363 Fill in Event data and post to the Main FSM
6364 ------------------------------------------------------------------------*/
6365 wdiEventData.wdiRequest = WDI_HAL_DUMP_CMD_REQ;
6366 wdiEventData.pEventData = (void *)halDumpCmdReqParams;
6367 wdiEventData.uEventDataSize = sizeof(WDI_HALDumpCmdReqParamsType);
6368 wdiEventData.pCBfnc = halDumpCmdRspCb;
6369 wdiEventData.pUserData = pUserData;
6370
6371 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6372}
6373
Jeff Johnsone7245742012-09-05 17:12:55 -07006374/*============================================================================
6375
Jeff Johnson295189b2012-06-20 16:38:30 -07006376 DAL Control Path Main FSM Function Implementation
Jeff Johnsone7245742012-09-05 17:12:55 -07006377
Jeff Johnson295189b2012-06-20 16:38:30 -07006378 ============================================================================*/
6379
6380/**
6381 @brief Main FSM Start function for all states except BUSY
6382
Jeff Johnsone7245742012-09-05 17:12:55 -07006383
6384 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -07006385 wdiEV: event posted to the main DAL FSM
6386 pEventData: pointer to the event information
Jeff Johnsone7245742012-09-05 17:12:55 -07006387 structure
6388
Jeff Johnson295189b2012-06-20 16:38:30 -07006389 @see
6390 @return Result of the function call
6391*/
6392WDI_Status
6393WDI_PostMainEvent
6394(
Jeff Johnsone7245742012-09-05 17:12:55 -07006395 WDI_ControlBlockType* pWDICtx,
6396 WDI_MainEventType wdiEV,
Jeff Johnson295189b2012-06-20 16:38:30 -07006397 WDI_EventInfoType* pEventData
Jeff Johnsone7245742012-09-05 17:12:55 -07006398
Jeff Johnson295189b2012-06-20 16:38:30 -07006399)
6400{
Jeff Johnsone7245742012-09-05 17:12:55 -07006401 WDI_Status wdiStatus;
6402 WDI_MainFuncType pfnWDIMainEvHdlr;
6403 WDI_MainStateType wdiOldState;
Jeff Johnson295189b2012-06-20 16:38:30 -07006404 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6405
6406 /*-------------------------------------------------------------------------
6407 Sanity check
6408 -------------------------------------------------------------------------*/
6409 if (( pWDICtx->uGlobalState >= WDI_MAX_ST ) ||
6410 ( wdiEV >= WDI_MAX_EVENT ))
6411 {
6412 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6413 "Invalid state or event in Post Main Ev function ST: %d EV: %d",
6414 pWDICtx->uGlobalState, wdiEV);
Jeff Johnsone7245742012-09-05 17:12:55 -07006415 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006416 }
6417
6418 /*Access to the global state must be locked */
6419 wpalMutexAcquire(&pWDICtx->wptMutex);
6420
6421 /*Fetch event handler for state*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006422 pfnWDIMainEvHdlr = wdiMainFSM[pWDICtx->uGlobalState].pfnMainTbl[wdiEV];
Jeff Johnson295189b2012-06-20 16:38:30 -07006423
6424 wdiOldState = pWDICtx->uGlobalState;
6425
6426 /*
Jeff Johnsone7245742012-09-05 17:12:55 -07006427 --Incase of WDI event is WDI_RESPONSE_EVENT and this is called when a
6428 response comes from CCPU for the request sent by host:
6429 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 -07006430 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 -07006431 --Incase of WDI event is WDI_RESPONSE_EVENT and it is an indication from the
Jeff Johnson295189b2012-06-20 16:38:30 -07006432 CCPU:
6433 don't change the state */
6434 if ( WDI_RESPONSE_EVENT != wdiEV)
6435 {
6436 /*Transition to BUSY State - the request is now being processed by the FSM,
6437 if the request fails we shall transition back to the old state, if not
6438 the request will manage its own state transition*/
6439 WDI_STATE_TRANSITION( pWDICtx, WDI_BUSY_ST);
6440 }
6441 /* If the state function associated with the EV is NULL it means that this
6442 event is not allowed in this state*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006443 if ( NULL != pfnWDIMainEvHdlr )
Jeff Johnson295189b2012-06-20 16:38:30 -07006444 {
6445 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -07006446 "Posting event %d in state: %d to the Main FSM",
Jeff Johnson295189b2012-06-20 16:38:30 -07006447 wdiEV, wdiOldState);
Jeff Johnsone7245742012-09-05 17:12:55 -07006448 wdiStatus = pfnWDIMainEvHdlr( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07006449 }
6450 else
6451 {
6452 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07006453 "Unexpected event %d in state: %d",
Jeff Johnson295189b2012-06-20 16:38:30 -07006454 wdiEV, wdiOldState);
Jeff Johnsone7245742012-09-05 17:12:55 -07006455 wdiStatus = WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006456 }
6457
6458 /* If a request handles itself well it will end up in a success or in a
6459 pending
6460 Success - means that the request was processed and the proper state
6461 transition already occurred or will occur when the resp is received
6462 - NO other state transition or dequeueing is required
Jeff Johnsone7245742012-09-05 17:12:55 -07006463
Jeff Johnson295189b2012-06-20 16:38:30 -07006464 Pending - means the request could not be processed at this moment in time
6465 because the FSM was already busy so no state transition or dequeueing
6466 is necessary anymore
Jeff Johnsone7245742012-09-05 17:12:55 -07006467
Jeff Johnson295189b2012-06-20 16:38:30 -07006468 Success for synchronous case means that the transition may occur and
6469 processing of pending requests may continue - so it should go through
6470 and restores the state and continue processing queued requests*/
6471 if (( WDI_STATUS_SUCCESS != wdiStatus )&&
6472 ( WDI_STATUS_PENDING != wdiStatus ))
6473 {
6474 if ( WDI_RESPONSE_EVENT != wdiEV)
6475 {
6476 /*The request has failed or could not be processed - transition back to
6477 the old state - check to see if anything was queued and try to execute
6478 The dequeue logic should post a message to a thread and return - no
6479 actual processing can occur */
6480 WDI_STATE_TRANSITION( pWDICtx, wdiOldState);
6481 }
6482 WDI_DequeuePendingReq(pWDICtx);
Jeff Johnsone7245742012-09-05 17:12:55 -07006483
Jeff Johnson295189b2012-06-20 16:38:30 -07006484 }
6485
6486 /* we have completed processing the event */
6487 wpalMutexRelease(&pWDICtx->wptMutex);
6488
Jeff Johnsone7245742012-09-05 17:12:55 -07006489 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07006490
6491}/*WDI_PostMainEvent*/
6492
6493
6494/*--------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006495 INIT State Functions
Jeff Johnson295189b2012-06-20 16:38:30 -07006496--------------------------------------------------------------------------*/
6497/**
6498 @brief Main FSM Start function for all states except BUSY
6499
Jeff Johnsone7245742012-09-05 17:12:55 -07006500
6501 @param pWDICtx: pointer to the WLAN DAL context
6502 pEventData: pointer to the event information structure
6503
Jeff Johnson295189b2012-06-20 16:38:30 -07006504 @see
6505 @return Result of the function call
6506*/
6507WDI_Status
6508WDI_MainStart
Jeff Johnsone7245742012-09-05 17:12:55 -07006509(
Jeff Johnson295189b2012-06-20 16:38:30 -07006510 WDI_ControlBlockType* pWDICtx,
6511 WDI_EventInfoType* pEventData
6512)
6513{
6514
6515 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006516 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006517 ----------------------------------------------------------------------*/
6518 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6519 {
6520 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08006521 "Invalid parameters on Main Start Started %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07006522 pWDICtx, pEventData);
6523 return WDI_STATUS_E_FAILURE;
6524 }
6525
6526 wpalMutexAcquire(&pWDICtx->wptMutex);
6527
6528 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006529 Check if the Control Transport has been opened
Jeff Johnson295189b2012-06-20 16:38:30 -07006530 ----------------------------------------------------------------------*/
6531 if ( eWLAN_PAL_FALSE == pWDICtx->bCTOpened )
6532 {
6533 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
6534 "Control Transport not yet Open - queueing the request");
6535
6536 WDI_STATE_TRANSITION( pWDICtx, WDI_INIT_ST);
Jeff Johnsone7245742012-09-05 17:12:55 -07006537 WDI_QueuePendingReq( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07006538
6539 wpalMutexRelease(&pWDICtx->wptMutex);
6540 return WDI_STATUS_PENDING;
6541 }
Jeff Johnsone7245742012-09-05 17:12:55 -07006542
Jeff Johnson295189b2012-06-20 16:38:30 -07006543 wpalMutexRelease(&pWDICtx->wptMutex);
6544
6545 /*Return Success*/
6546 return WDI_ProcessRequest( pWDICtx, pEventData );
6547
6548}/*WDI_MainStart*/
6549
6550/**
6551 @brief Main FSM Response function for state INIT
6552
Jeff Johnsone7245742012-09-05 17:12:55 -07006553
6554 @param pWDICtx: pointer to the WLAN DAL context
6555 pEventData: pointer to the event information structure
6556
Jeff Johnson295189b2012-06-20 16:38:30 -07006557 @see
6558 @return Result of the function call
6559*/
6560WDI_Status
6561WDI_MainRspInit
Jeff Johnsone7245742012-09-05 17:12:55 -07006562(
Jeff Johnson295189b2012-06-20 16:38:30 -07006563 WDI_ControlBlockType* pWDICtx,
6564 WDI_EventInfoType* pEventData
6565)
6566{
6567 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006568 Not expecting a response from the device before it is started
Jeff Johnson295189b2012-06-20 16:38:30 -07006569 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006570 WDI_ASSERT(0);
Jeff Johnson295189b2012-06-20 16:38:30 -07006571
6572 /*Return Success*/
6573 return WDI_STATUS_E_NOT_ALLOWED;
6574}/* WDI_MainRspInit */
6575
6576/**
6577 @brief Main FSM Close function for all states except BUSY
6578
Jeff Johnsone7245742012-09-05 17:12:55 -07006579
6580 @param pWDICtx: pointer to the WLAN DAL context
6581 pEventData: pointer to the event information structure
6582
Jeff Johnson295189b2012-06-20 16:38:30 -07006583 @see
6584 @return Result of the function call
6585*/
6586WDI_Status
6587WDI_MainClose
Jeff Johnsone7245742012-09-05 17:12:55 -07006588(
Jeff Johnson295189b2012-06-20 16:38:30 -07006589 WDI_ControlBlockType* pWDICtx,
6590 WDI_EventInfoType* pEventData
6591)
6592{
6593
6594 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006595 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006596 ----------------------------------------------------------------------*/
6597 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6598 {
6599 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08006600 "Invalid parameters on Main Close %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07006601 pWDICtx, pEventData);
6602 return WDI_STATUS_E_FAILURE;
6603 }
6604
6605 /*Return Success*/
6606 return WDI_ProcessRequest( pWDICtx, pEventData );
6607
6608}/*WDI_MainClose*/
6609/*--------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006610 STARTED State Functions
Jeff Johnson295189b2012-06-20 16:38:30 -07006611--------------------------------------------------------------------------*/
6612/**
6613 @brief Main FSM Start function for state STARTED
6614
Jeff Johnsone7245742012-09-05 17:12:55 -07006615
6616 @param pWDICtx: pointer to the WLAN DAL context
6617 pEventData: pointer to the event information structure
6618
Jeff Johnson295189b2012-06-20 16:38:30 -07006619 @see
6620 @return Result of the function call
6621*/
6622WDI_Status
6623WDI_MainStartStarted
Jeff Johnsone7245742012-09-05 17:12:55 -07006624(
Jeff Johnson295189b2012-06-20 16:38:30 -07006625 WDI_ControlBlockType* pWDICtx,
6626 WDI_EventInfoType* pEventData
6627)
6628{
6629 WDI_StartRspCb wdiStartRspCb = NULL;
6630 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6631
6632 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006633 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006634 ----------------------------------------------------------------------*/
6635 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6636 {
6637 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08006638 "Invalid parameters on Main Start %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07006639 pWDICtx, pEventData);
6640 return WDI_STATUS_E_FAILURE;
6641 }
6642
6643 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006644 Nothing to do transport was already started
Jeff Johnson295189b2012-06-20 16:38:30 -07006645 ----------------------------------------------------------------------*/
6646 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -07006647 "Received start while transport was already started - nothing to do");
Jeff Johnson295189b2012-06-20 16:38:30 -07006648
6649 wpalMutexAcquire(&pWDICtx->wptMutex);
6650
6651 /*Transition back to started because the post function transitioned us to
6652 busy*/
6653 WDI_STATE_TRANSITION( pWDICtx, WDI_STARTED_ST);
6654
6655 /*Check to see if any request is pending*/
6656 WDI_DequeuePendingReq(pWDICtx);
Jeff Johnsone7245742012-09-05 17:12:55 -07006657
Jeff Johnson295189b2012-06-20 16:38:30 -07006658 wpalMutexRelease(&pWDICtx->wptMutex);
6659
6660 /*Tell UMAC Success*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006661 wdiStartRspCb = (WDI_StartRspCb)pEventData->pCBfnc;
6662
Jeff Johnson295189b2012-06-20 16:38:30 -07006663 /*Notify UMAC*/
6664 wdiStartRspCb( &pWDICtx->wdiCachedStartRspParams, pWDICtx->pRspCBUserData);
6665
6666 /*Return Success*/
6667 return WDI_STATUS_SUCCESS;
6668
6669}/*WDI_MainStartStarted*/
6670
6671/**
6672 @brief Main FSM Stop function for state STARTED
6673
Jeff Johnsone7245742012-09-05 17:12:55 -07006674
6675 @param pWDICtx: pointer to the WLAN DAL context
6676 pEventData: pointer to the event information structure
6677
Jeff Johnson295189b2012-06-20 16:38:30 -07006678 @see
6679 @return Result of the function call
6680*/
6681WDI_Status
6682WDI_MainStopStarted
Jeff Johnsone7245742012-09-05 17:12:55 -07006683(
Jeff Johnson295189b2012-06-20 16:38:30 -07006684 WDI_ControlBlockType* pWDICtx,
6685 WDI_EventInfoType* pEventData
6686)
6687{
6688 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006689 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006690 ----------------------------------------------------------------------*/
6691 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6692 {
6693 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08006694 "Invalid parameters on Main Stop Started %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07006695 pWDICtx, pEventData);
6696 return WDI_STATUS_E_FAILURE;
6697 }
6698
6699 /*State at this point is BUSY - because we enter this state before posting
6700 an event to the FSM in order to prevent potential race conditions*/
6701
6702 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
6703 "Processing stop request in FSM");
6704
6705 /*Return Success*/
6706 return WDI_ProcessRequest( pWDICtx, pEventData );
6707
6708}/*WDI_MainStopStarted*/
6709/**
6710 @brief Main FSM Request function for state started
6711
Jeff Johnsone7245742012-09-05 17:12:55 -07006712
6713 @param pWDICtx: pointer to the WLAN DAL context
6714 pEventData: pointer to the event information structure
6715
Jeff Johnson295189b2012-06-20 16:38:30 -07006716 @see
6717 @return Result of the function call
6718*/
6719WDI_Status
6720WDI_MainReqStarted
Jeff Johnsone7245742012-09-05 17:12:55 -07006721(
Jeff Johnson295189b2012-06-20 16:38:30 -07006722 WDI_ControlBlockType* pWDICtx,
6723 WDI_EventInfoType* pEventData
6724)
6725{
6726
6727 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006728 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006729 ----------------------------------------------------------------------*/
6730 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6731 {
6732 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08006733 "Invalid parameters on Main Req Started %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07006734 pWDICtx, pEventData);
6735 return WDI_STATUS_E_FAILURE;
6736 }
6737
6738 /*State at this point is BUSY - because we enter this state before posting
6739 an event to the FSM in order to prevent potential race conditions*/
6740
6741 /*Return Success*/
6742 return WDI_ProcessRequest( pWDICtx, pEventData );
6743
6744}/*WDI_MainReqStarted*/
6745
6746/**
6747 @brief Main FSM Response function for all states except INIT
6748
Jeff Johnsone7245742012-09-05 17:12:55 -07006749
6750 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -07006751 pEventData: pointer to the event information structure
Jeff Johnsone7245742012-09-05 17:12:55 -07006752
Jeff Johnson295189b2012-06-20 16:38:30 -07006753 @see
6754 @return Result of the function call
6755*/
6756WDI_Status
6757WDI_MainRsp
Jeff Johnsone7245742012-09-05 17:12:55 -07006758(
Jeff Johnson295189b2012-06-20 16:38:30 -07006759 WDI_ControlBlockType* pWDICtx,
6760 WDI_EventInfoType* pEventData
6761)
6762{
Jeff Johnsone7245742012-09-05 17:12:55 -07006763 WDI_Status wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07006764 wpt_boolean expectedResponse;
6765
6766 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006767 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006768 ----------------------------------------------------------------------*/
6769 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6770 {
6771 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08006772 "Invalid parameters on Main Response %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07006773 pWDICtx, pEventData);
6774 return WDI_STATUS_E_FAILURE;
6775 }
6776
6777 if ( pEventData->wdiResponse == pWDICtx->wdiExpectedResponse )
6778 {
6779 /* we received an expected response */
6780 expectedResponse = eWLAN_PAL_TRUE;
6781
6782 /*We expect that we will transition to started after this processing*/
6783 pWDICtx->ucExpectedStateTransition = WDI_STARTED_ST;
6784
6785 /* we are no longer expecting a response */
6786 pWDICtx->wdiExpectedResponse = WDI_MAX_RESP;
6787 }
6788 else
6789 {
6790 /* we received an indication or unexpected response */
6791 expectedResponse = eWLAN_PAL_FALSE;
6792 /* for indications no need to update state from what it is right
6793 now, unless it explicitly does it in the indication handler (say
6794 for device failure ind) */
6795 pWDICtx->ucExpectedStateTransition = pWDICtx->uGlobalState;
6796 }
6797
6798 /*Process the response and indication */
6799 wdiStatus = WDI_ProcessResponse( pWDICtx, pEventData );
6800
6801 /*Lock the CB as we are about to do a state transition*/
6802 wpalMutexAcquire(&pWDICtx->wptMutex);
6803
6804 /*Transition to the expected state after the response processing
6805 - this should always be started state with the following exceptions:
6806 1. processing of a failed start response
6807 2. device failure detected while processing response
6808 3. stop response received*/
6809 WDI_STATE_TRANSITION( pWDICtx, pWDICtx->ucExpectedStateTransition);
Jeff Johnsone7245742012-09-05 17:12:55 -07006810
Jeff Johnson295189b2012-06-20 16:38:30 -07006811 /*Dequeue request that may have been queued while we were waiting for the
6812 response */
6813 if ( expectedResponse )
6814 {
Jeff Johnsone7245742012-09-05 17:12:55 -07006815 WDI_DequeuePendingReq(pWDICtx);
Jeff Johnson295189b2012-06-20 16:38:30 -07006816 }
6817
6818 wpalMutexRelease(&pWDICtx->wptMutex);
6819
6820 /*Return Success - always */
Jeff Johnsone7245742012-09-05 17:12:55 -07006821 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07006822
6823}/*WDI_MainRsp*/
6824
6825/*--------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006826 STOPPED State Functions
Jeff Johnson295189b2012-06-20 16:38:30 -07006827--------------------------------------------------------------------------*/
6828/**
6829 @brief Main FSM Stop function for state STOPPED
6830
Jeff Johnsone7245742012-09-05 17:12:55 -07006831
6832 @param pWDICtx: pointer to the WLAN DAL context
6833 pEventData: pointer to the event information structure
6834
Jeff Johnson295189b2012-06-20 16:38:30 -07006835 @see
6836 @return Result of the function call
6837*/
6838WDI_Status
6839WDI_MainStopStopped
Jeff Johnsone7245742012-09-05 17:12:55 -07006840(
Jeff Johnson295189b2012-06-20 16:38:30 -07006841 WDI_ControlBlockType* pWDICtx,
6842 WDI_EventInfoType* pEventData
6843)
6844{
6845 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006846 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006847 ----------------------------------------------------------------------*/
6848 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6849 {
6850 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08006851 "Invalid parameters on Main Stop Stopped %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07006852 pWDICtx, pEventData);
6853 return WDI_STATUS_E_FAILURE;
6854 }
6855
6856 /*We should normally not get a STOP request if we are already stopped
6857 since we should normally be stopped by the UMAC. However in some
6858 error situations we put ourselves in the stopped state without the
6859 UMAC knowing, so when we get a STOP request in this state we still
6860 process it since we need to clean up the underlying state */
6861 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6862 "Processing stop request while stopped in FSM");
6863
6864 /*Return Success*/
6865 return WDI_ProcessRequest( pWDICtx, pEventData );
6866
6867}/*WDI_MainStopStopped*/
6868
6869/*--------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006870 BUSY State Functions
Jeff Johnson295189b2012-06-20 16:38:30 -07006871--------------------------------------------------------------------------*/
6872/**
6873 @brief Main FSM Start function for state BUSY
6874
Jeff Johnsone7245742012-09-05 17:12:55 -07006875
6876 @param pWDICtx: pointer to the WLAN DAL context
6877 pEventData: pointer to the event information structure
6878
Jeff Johnson295189b2012-06-20 16:38:30 -07006879 @see
6880 @return Result of the function call
6881*/
6882WDI_Status
6883WDI_MainStartBusy
Jeff Johnsone7245742012-09-05 17:12:55 -07006884(
Jeff Johnson295189b2012-06-20 16:38:30 -07006885 WDI_ControlBlockType* pWDICtx,
6886 WDI_EventInfoType* pEventData
6887)
6888{
6889 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006890 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006891 ----------------------------------------------------------------------*/
6892 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6893 {
6894 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08006895 "Invalid parameters on Main Start in BUSY %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07006896 pWDICtx, pEventData);
6897 return WDI_STATUS_E_FAILURE;
6898 }
6899
6900 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006901 Check if the Control Transport has been opened
Jeff Johnson295189b2012-06-20 16:38:30 -07006902 ----------------------------------------------------------------------*/
6903 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
6904 "WDI Busy state - queue start request");
6905
6906 /*Queue the start request*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006907 WDI_QueuePendingReq( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07006908
6909 /*Return Success*/
6910 return WDI_STATUS_PENDING;
6911}/*WDI_MainStartBusy*/
6912
6913/**
6914 @brief Main FSM Stop function for state BUSY
6915
Jeff Johnsone7245742012-09-05 17:12:55 -07006916
6917 @param pWDICtx: pointer to the WLAN DAL context
6918 pEventData: pointer to the event information structure
6919
Jeff Johnson295189b2012-06-20 16:38:30 -07006920 @see
6921 @return Result of the function call
6922*/
6923WDI_Status
6924WDI_MainStopBusy
Jeff Johnsone7245742012-09-05 17:12:55 -07006925(
Jeff Johnson295189b2012-06-20 16:38:30 -07006926 WDI_ControlBlockType* pWDICtx,
6927 WDI_EventInfoType* pEventData
6928)
6929{
6930 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006931 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006932 ----------------------------------------------------------------------*/
6933 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6934 {
6935 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08006936 "Invalid parameters on Main Stop in BUSY %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07006937 pWDICtx, pEventData);
6938 return WDI_STATUS_E_FAILURE;
6939 }
6940
6941 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006942 Check if the Control Transport has been opened
Jeff Johnson295189b2012-06-20 16:38:30 -07006943 ----------------------------------------------------------------------*/
6944 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
6945 "WDI Busy state - queue stop request");
6946
Jeff Johnsone7245742012-09-05 17:12:55 -07006947 WDI_QueuePendingReq( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07006948 return WDI_STATUS_PENDING;
Jeff Johnsone7245742012-09-05 17:12:55 -07006949
Jeff Johnson295189b2012-06-20 16:38:30 -07006950}/*WDI_MainStopBusy*/
6951
6952/**
6953 @brief Main FSM Request function for state BUSY
6954
Jeff Johnsone7245742012-09-05 17:12:55 -07006955
6956 @param pWDICtx: pointer to the WLAN DAL context
6957 pEventData: pointer to the event information structure
6958
Jeff Johnson295189b2012-06-20 16:38:30 -07006959 @see
6960 @return Result of the function call
6961*/
6962WDI_Status
6963WDI_MainReqBusy
Jeff Johnsone7245742012-09-05 17:12:55 -07006964(
Jeff Johnson295189b2012-06-20 16:38:30 -07006965 WDI_ControlBlockType* pWDICtx,
6966 WDI_EventInfoType* pEventData
6967)
6968{
6969 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006970 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006971 ----------------------------------------------------------------------*/
6972 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6973 {
6974 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08006975 "Invalid parameters on Main Request in BUSY %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07006976 pWDICtx, pEventData);
6977 return WDI_STATUS_E_FAILURE;
6978 }
6979
6980 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006981 Check if the Control Transport has been opened
Jeff Johnson295189b2012-06-20 16:38:30 -07006982 ----------------------------------------------------------------------*/
6983 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
6984 "WDI Busy state - queue request %d because waiting for response %d",
6985 pEventData->wdiRequest, pWDICtx->wdiExpectedResponse);
6986
Jeff Johnsone7245742012-09-05 17:12:55 -07006987 WDI_QueuePendingReq( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07006988 return WDI_STATUS_PENDING;
Jeff Johnsone7245742012-09-05 17:12:55 -07006989
Jeff Johnson295189b2012-06-20 16:38:30 -07006990}/*WDI_MainReqBusy*/
6991/**
6992 @brief Main FSM Close function for state BUSY
6993
Jeff Johnsone7245742012-09-05 17:12:55 -07006994
6995 @param pWDICtx: pointer to the WLAN DAL context
6996 pEventData: pointer to the event information structure
6997
Jeff Johnson295189b2012-06-20 16:38:30 -07006998 @see
6999 @return Result of the function call
7000*/
7001WDI_Status
7002WDI_MainCloseBusy
Jeff Johnsone7245742012-09-05 17:12:55 -07007003(
Jeff Johnson295189b2012-06-20 16:38:30 -07007004 WDI_ControlBlockType* pWDICtx,
7005 WDI_EventInfoType* pEventData
7006)
7007{
7008 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007009 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07007010 ----------------------------------------------------------------------*/
7011 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
7012 {
7013 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007014 "Invalid parameters on Main Close in BUSY %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007015 pWDICtx, pEventData);
7016 return WDI_STATUS_E_FAILURE;
7017 }
7018
7019 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007020 Check if the Control Transport has been opened
Jeff Johnson295189b2012-06-20 16:38:30 -07007021 ----------------------------------------------------------------------*/
7022 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7023 "WDI Busy state - queue close request");
7024
Jeff Johnsone7245742012-09-05 17:12:55 -07007025 WDI_QueuePendingReq( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07007026 return WDI_STATUS_PENDING;
Jeff Johnsone7245742012-09-05 17:12:55 -07007027
Jeff Johnson295189b2012-06-20 16:38:30 -07007028}/*WDI_MainCloseBusy*/
7029
7030/**
7031 @brief Main FSM Shutdown function for INIT & STARTED states
7032
7033
7034 @param pWDICtx: pointer to the WLAN DAL context
7035 pEventData: pointer to the event information structure
7036
7037 @see
7038 @return Result of the function call
7039*/
7040WDI_Status
7041WDI_MainShutdown
7042(
7043 WDI_ControlBlockType* pWDICtx,
7044 WDI_EventInfoType* pEventData
7045)
7046{
7047 /*--------------------------------------------------------------------
7048 Sanity Check
7049 ----------------------------------------------------------------------*/
7050 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
7051 {
7052 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007053 "Invalid parameters on Main Start %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007054 pWDICtx, pEventData);
7055 return WDI_STATUS_E_FAILURE;
7056 }
7057
7058 /*State at this point is BUSY - because we enter this state before posting
7059 an event to the FSM in order to prevent potential race conditions*/
7060
7061 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
7062 "Processing shutdown request in FSM");
7063
7064 /*Return Success*/
7065 return WDI_ProcessRequest( pWDICtx, pEventData );
7066
7067}/*WDI_MainShutdown*/
7068
7069/**
7070 @brief Main FSM Shutdown function for BUSY state
7071
7072
7073 @param pWDICtx: pointer to the WLAN DAL context
7074 pEventData: pointer to the event information structure
7075
7076 @see
7077 @return Result of the function call
7078*/
7079WDI_Status
7080WDI_MainShutdownBusy
7081(
7082 WDI_ControlBlockType* pWDICtx,
7083 WDI_EventInfoType* pEventData
7084)
7085{
7086 /*--------------------------------------------------------------------
7087 Sanity Check
7088 ----------------------------------------------------------------------*/
7089 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
7090 {
7091 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007092 "Invalid parameters on Main Start %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007093 pWDICtx, pEventData);
7094 return WDI_STATUS_E_FAILURE;
7095 }
7096
7097 /* If you are waiting for a HAL response at this stage, you are not
7098 * going to get it. Riva is already shutdown/crashed.
7099 */
7100 wpalTimerStop(&gWDICb.wptResponseTimer);
7101
7102 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
7103 "Processing shutdown request in FSM: Busy state ");
7104
7105 return WDI_ProcessRequest( pWDICtx, pEventData );
7106
7107}/*WDI_MainShutdownBusy*/
7108
7109
Jeff Johnsone7245742012-09-05 17:12:55 -07007110/*=======================================================================
7111
Jeff Johnson295189b2012-06-20 16:38:30 -07007112 WLAN DAL Control Path Main Processing Functions
Jeff Johnsone7245742012-09-05 17:12:55 -07007113
Jeff Johnson295189b2012-06-20 16:38:30 -07007114*=======================================================================*/
7115
7116/*========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -07007117 Main DAL Control Path Request Processing API
Jeff Johnson295189b2012-06-20 16:38:30 -07007118========================================================================*/
7119/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007120 @brief Process Start Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07007121 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007122
7123 @param pWDICtx: pointer to the WLAN DAL context
7124 pEventData: pointer to the event information structure
7125
Jeff Johnson295189b2012-06-20 16:38:30 -07007126 @see
7127 @return Result of the function call
7128*/
7129WDI_Status
7130WDI_ProcessStartReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007131(
Jeff Johnson295189b2012-06-20 16:38:30 -07007132 WDI_ControlBlockType* pWDICtx,
7133 WDI_EventInfoType* pEventData
7134)
7135{
7136 WDI_StartReqParamsType* pwdiStartParams = NULL;
7137 WDI_StartRspCb wdiStartRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07007138 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07007139 wpt_uint16 usDataOffset = 0;
7140 wpt_uint16 usSendSize = 0;
7141
Jeff Johnsone7245742012-09-05 17:12:55 -07007142 tHalMacStartReqMsg halStartReq;
7143 wpt_uint16 usLen = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07007144 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7145
7146 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007147 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07007148 -------------------------------------------------------------------------*/
7149 if (( NULL == pEventData ) ||
7150 ( NULL == (pwdiStartParams = (WDI_StartReqParamsType*)pEventData->pEventData)) ||
7151 ( NULL == (wdiStartRspCb = (WDI_StartRspCb)pEventData->pCBfnc)))
7152 {
7153 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07007154 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07007155 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007156 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007157 }
7158
7159 /*-----------------------------------------------------------------------
7160 Get message buffer
7161 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007162 usLen = sizeof(halStartReq.startReqParams) +
Jeff Johnson295189b2012-06-20 16:38:30 -07007163 pwdiStartParams->usConfigBufferLen;
7164
Jeff Johnsone7245742012-09-05 17:12:55 -07007165 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_START_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07007166 usLen,
7167 &pSendBuffer, &usDataOffset, &usSendSize))||
7168 ( usSendSize < (usDataOffset + usLen )))
7169 {
7170 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007171 "Unable to get send buffer in start req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007172 pEventData, pwdiStartParams, wdiStartRspCb);
7173 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007174 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007175 }
7176
7177 /*-----------------------------------------------------------------------
7178 Fill in the message
7179 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007180 halStartReq.startReqParams.driverType =
7181 WDI_2_HAL_DRV_TYPE(pwdiStartParams->wdiDriverType);
Jeff Johnson295189b2012-06-20 16:38:30 -07007182
Jeff Johnsone7245742012-09-05 17:12:55 -07007183 halStartReq.startReqParams.uConfigBufferLen =
7184 pwdiStartParams->usConfigBufferLen;
7185 wpalMemoryCopy( pSendBuffer+usDataOffset,
7186 &halStartReq.startReqParams,
7187 sizeof(halStartReq.startReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07007188
Jeff Johnsone7245742012-09-05 17:12:55 -07007189 usDataOffset += sizeof(halStartReq.startReqParams);
7190 wpalMemoryCopy( pSendBuffer+usDataOffset,
7191 pwdiStartParams->pConfigBuffer,
7192 pwdiStartParams->usConfigBufferLen);
Jeff Johnson295189b2012-06-20 16:38:30 -07007193
7194 pWDICtx->wdiReqStatusCB = pwdiStartParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07007195 pWDICtx->pReqStatusUserData = pwdiStartParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07007196
7197 /*Save Low Level Ind CB and associated user data - it will be used further
7198 on when an indication is coming from the lower MAC*/
7199 pWDICtx->wdiLowLevelIndCB = pwdiStartParams->wdiLowLevelIndCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07007200 pWDICtx->pIndUserData = pwdiStartParams->pIndUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07007201
Jeff Johnsone7245742012-09-05 17:12:55 -07007202 pWDICtx->bFrameTransEnabled = pwdiStartParams->bFrameTransEnabled;
Jeff Johnson295189b2012-06-20 16:38:30 -07007203 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007204 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07007205 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007206 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07007207 wdiStartRspCb, pEventData->pUserData, WDI_START_RESP);
7208
Jeff Johnsone7245742012-09-05 17:12:55 -07007209
Jeff Johnson295189b2012-06-20 16:38:30 -07007210}/*WDI_ProcessStartReq*/
7211
7212/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007213 @brief Process Stop Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07007214 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007215
7216 @param pWDICtx: pointer to the WLAN DAL context
7217 pEventData: pointer to the event information structure
7218
Jeff Johnson295189b2012-06-20 16:38:30 -07007219 @see
7220 @return Result of the function call
7221*/
7222WDI_Status
7223WDI_ProcessStopReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007224(
Jeff Johnson295189b2012-06-20 16:38:30 -07007225 WDI_ControlBlockType* pWDICtx,
7226 WDI_EventInfoType* pEventData
7227)
7228{
7229 WDI_StopReqParamsType* pwdiStopParams = NULL;
7230 WDI_StopRspCb wdiStopRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07007231 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07007232 wpt_uint16 usDataOffset = 0;
7233 wpt_uint16 usSendSize = 0;
Jeff Johnson43971f52012-07-17 12:26:56 -07007234 wpt_status status;
Jeff Johnsone7245742012-09-05 17:12:55 -07007235 tHalMacStopReqMsg halStopReq;
Jeff Johnson295189b2012-06-20 16:38:30 -07007236 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7237
7238 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007239 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07007240 -------------------------------------------------------------------------*/
7241 if (( NULL == pEventData ) ||
7242 ( NULL == (pwdiStopParams = (WDI_StopReqParamsType*)pEventData->pEventData)) ||
7243 ( NULL == (wdiStopRspCb = (WDI_StopRspCb)pEventData->pCBfnc)))
7244 {
7245 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07007246 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07007247 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -08007248 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -07007249 }
7250
7251 /*-----------------------------------------------------------------------
7252 Get message buffer
7253 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007254 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_STOP_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07007255 sizeof(halStopReq.stopReqParams),
7256 &pSendBuffer, &usDataOffset, &usSendSize))||
7257 ( usSendSize < (usDataOffset + sizeof(halStopReq.stopReqParams) )))
7258 {
7259 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007260 "Unable to get send buffer in stop req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007261 pEventData, pwdiStopParams, wdiStopRspCb);
7262 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -08007263 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -07007264 }
7265
7266 /*-----------------------------------------------------------------------
7267 Fill in the message
7268 -----------------------------------------------------------------------*/
7269 halStopReq.stopReqParams.reason = WDI_2_HAL_STOP_REASON(
7270 pwdiStopParams->wdiStopReason);
7271
Jeff Johnsone7245742012-09-05 17:12:55 -07007272 wpalMemoryCopy( pSendBuffer+usDataOffset,
7273 &halStopReq.stopReqParams,
7274 sizeof(halStopReq.stopReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07007275
7276 pWDICtx->wdiReqStatusCB = pwdiStopParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07007277 pWDICtx->pReqStatusUserData = pwdiStopParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07007278
7279 /*! TO DO: stop the data services */
7280 if ( eDRIVER_TYPE_MFG != pWDICtx->driverMode )
7281 {
7282 /*Stop the STA Table !UT- check this logic again
7283 It is safer to do it here than on the response - because a stop is imminent*/
7284 WDI_STATableStop(pWDICtx);
7285
7286 /* Reset the event to be not signalled */
Jeff Johnson43971f52012-07-17 12:26:56 -07007287 status = wpalEventReset(&pWDICtx->setPowerStateEvent);
7288 if (eWLAN_PAL_STATUS_SUCCESS != status)
Jeff Johnson295189b2012-06-20 16:38:30 -07007289 {
7290 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7291 "WDI Init failed to reset power state event");
7292
Jeff Johnsone7245742012-09-05 17:12:55 -07007293 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -08007294 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -07007295 }
7296 /* Stop Transport Driver, DXE */
Ravali85acf6b2012-12-12 14:01:38 -08007297 status = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_DOWN, WDI_SetPowerStateCb);
7298 if( eWLAN_PAL_STATUS_SUCCESS != status )
7299 {
7300 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain9a5d5382013-11-17 22:05:35 -08007301 "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 -08007302 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -08007303 goto fail;
Ravali85acf6b2012-12-12 14:01:38 -08007304 }
Jeff Johnson295189b2012-06-20 16:38:30 -07007305 /*
Jeff Johnsone7245742012-09-05 17:12:55 -07007306 * Wait for the event to be set once the ACK comes back from DXE
Jeff Johnson295189b2012-06-20 16:38:30 -07007307 */
Jeff Johnson43971f52012-07-17 12:26:56 -07007308 status = wpalEventWait(&pWDICtx->setPowerStateEvent,
7309 WDI_SET_POWER_STATE_TIMEOUT);
7310 if (eWLAN_PAL_STATUS_SUCCESS != status)
Jeff Johnson295189b2012-06-20 16:38:30 -07007311 {
7312 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7313 "WDI Init failed to wait on an event");
7314
Jeff Johnsone7245742012-09-05 17:12:55 -07007315 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -08007316 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -07007317 }
7318 }
7319
7320 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007321 Send Stop Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07007322 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007323 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07007324 wdiStopRspCb, pEventData->pUserData, WDI_STOP_RESP);
7325
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -08007326fail:
7327 // Release the message buffer so we don't leak
7328 wpalMemoryFree(pSendBuffer);
7329
7330failRequest:
7331 //WDA should have failure check to avoid the memory leak
7332 return WDI_STATUS_E_FAILURE;
7333
Jeff Johnson295189b2012-06-20 16:38:30 -07007334}/*WDI_ProcessStopReq*/
7335
7336/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007337 @brief Process Close Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07007338 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007339
7340 @param pWDICtx: pointer to the WLAN DAL context
7341 pEventData: pointer to the event information structure
7342
Jeff Johnson295189b2012-06-20 16:38:30 -07007343 @see
7344 @return Result of the function call
7345*/
7346WDI_Status
7347WDI_ProcessCloseReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007348(
Jeff Johnson295189b2012-06-20 16:38:30 -07007349 WDI_ControlBlockType* pWDICtx,
7350 WDI_EventInfoType* pEventData
7351)
7352{
Jeff Johnsone7245742012-09-05 17:12:55 -07007353 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07007354 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7355
7356 /*Lock control block for cleanup*/
7357 wpalMutexAcquire(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07007358
Jeff Johnson295189b2012-06-20 16:38:30 -07007359 /*Clear all pending request*/
7360 WDI_ClearPendingRequests(pWDICtx);
7361
7362 /* Close Control transport*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007363 WCTS_CloseTransport(pWDICtx->wctsHandle);
Jeff Johnson295189b2012-06-20 16:38:30 -07007364
7365 /* Close Data transport*/
7366 /* FTM mode does not open Data Path */
7367 if ( eDRIVER_TYPE_MFG != pWDICtx->driverMode )
7368 {
7369 WDTS_Close(pWDICtx);
7370 }
7371
7372 /*Close the STA Table !UT- check this logic again*/
7373 WDI_STATableClose(pWDICtx);
7374
7375 /*close the PAL */
7376 wptStatus = wpalClose(pWDICtx->pPALContext);
7377 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
7378 {
7379 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
7380 "Failed to wpal Close %d", wptStatus);
7381 WDI_ASSERT(0);
7382 }
7383
7384 /*Transition back to init state*/
7385 WDI_STATE_TRANSITION( pWDICtx, WDI_INIT_ST);
7386
7387 wpalMutexRelease(&pWDICtx->wptMutex);
7388
7389 /*Make sure the expected state is properly defaulted to Init*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007390 pWDICtx->ucExpectedStateTransition = WDI_INIT_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07007391
Jeff Johnsone7245742012-09-05 17:12:55 -07007392 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07007393}/*WDI_ProcessCloseReq*/
7394
7395
7396/*===========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -07007397 SCANING REQUEST PROCESSING API
Jeff Johnson295189b2012-06-20 16:38:30 -07007398===========================================================================*/
7399
7400/**
7401 @brief Process Init Scan Request function (called when Main FSM
7402 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007403
7404 @param pWDICtx: pointer to the WLAN DAL context
7405 pEventData: pointer to the event information structure
7406
Jeff Johnson295189b2012-06-20 16:38:30 -07007407 @see
7408 @return Result of the function call
7409*/
7410WDI_Status
7411WDI_ProcessInitScanReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007412(
Jeff Johnson295189b2012-06-20 16:38:30 -07007413 WDI_ControlBlockType* pWDICtx,
7414 WDI_EventInfoType* pEventData
7415)
7416{
7417 WDI_InitScanReqParamsType* pwdiInitScanParams = NULL;
7418 WDI_InitScanRspCb wdiInitScanRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07007419 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07007420 wpt_uint16 usDataOffset = 0;
7421 wpt_uint16 usSendSize = 0;
7422 wpt_uint8 i = 0;
7423
7424 tHalInitScanReqMsg halInitScanReqMsg;
7425
Jeff Johnsone7245742012-09-05 17:12:55 -07007426 /*This is temporary fix.
Jeff Johnson295189b2012-06-20 16:38:30 -07007427 * It shold be removed once host and riva changes are in sync*/
7428 tHalInitScanConReqMsg halInitScanConReqMsg;
7429
7430 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7431
7432 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007433 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07007434 -------------------------------------------------------------------------*/
7435 if (( NULL == pEventData ) ||
7436 ( NULL == (pwdiInitScanParams = (WDI_InitScanReqParamsType*)pEventData->pEventData)) ||
7437 ( NULL == (wdiInitScanRspCb = (WDI_InitScanRspCb)pEventData->pCBfnc)))
7438 {
7439 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07007440 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07007441 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007442 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007443 }
7444
7445#if 0
7446 wpalMutexAcquire(&pWDICtx->wptMutex);
7447 /*-----------------------------------------------------------------------
7448 Check to see if SCAN is already in progress - if so reject the req
7449 We only allow one scan at a time
Jeff Johnsone7245742012-09-05 17:12:55 -07007450 ! TO DO: - revisit this constraint
Jeff Johnson295189b2012-06-20 16:38:30 -07007451 -----------------------------------------------------------------------*/
7452 if ( pWDICtx->bScanInProgress )
7453 {
7454 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
7455 "Scan is already in progress - subsequent scan is not allowed"
7456 " until the first scan completes");
7457
7458 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07007459 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07007460 }
7461
Jeff Johnsone7245742012-09-05 17:12:55 -07007462 pWDICtx->bScanInProgress = eWLAN_PAL_TRUE;
7463 pWDICtx->uScanState = WDI_SCAN_INITIALIZED_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07007464
7465 wpalMutexRelease(&pWDICtx->wptMutex);
7466#endif
Viral Modid86bde22012-12-10 13:09:21 -08007467 if ((pwdiInitScanParams->wdiReqInfo.bUseNOA) && (!WDI_getFwWlanFeatCaps(P2P_GO_NOA_DECOUPLE_INIT_SCAN)))
Jeff Johnson295189b2012-06-20 16:38:30 -07007468 {
Jeff Johnsone7245742012-09-05 17:12:55 -07007469 /*This is temporary fix.
Jeff Johnson295189b2012-06-20 16:38:30 -07007470 * It shold be removed once host and riva changes are in sync*/
7471 /*-----------------------------------------------------------------------
7472 Get message buffer
7473 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007474 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_INIT_SCAN_CON_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07007475 sizeof(halInitScanConReqMsg.initScanParams),
7476 &pSendBuffer, &usDataOffset, &usSendSize))||
7477 ( usSendSize < (usDataOffset + sizeof(halInitScanConReqMsg.initScanParams) )))
7478 {
7479 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007480 "Unable to get send buffer in init scan req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007481 pEventData, pwdiInitScanParams, wdiInitScanRspCb);
7482 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007483 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007484 }
7485
7486
7487 /*-----------------------------------------------------------------------
7488 Fill in the message
7489 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007490 halInitScanConReqMsg.initScanParams.scanMode =
Jeff Johnson295189b2012-06-20 16:38:30 -07007491 WDI_2_HAL_SCAN_MODE(pwdiInitScanParams->wdiReqInfo.wdiScanMode);
7492
7493 wpalMemoryCopy(halInitScanConReqMsg.initScanParams.bssid,
7494 pwdiInitScanParams->wdiReqInfo.macBSSID, WDI_MAC_ADDR_LEN);
7495
Jeff Johnsone7245742012-09-05 17:12:55 -07007496 halInitScanConReqMsg.initScanParams.notifyBss =
Jeff Johnson295189b2012-06-20 16:38:30 -07007497 pwdiInitScanParams->wdiReqInfo.bNotifyBSS;
Jeff Johnsone7245742012-09-05 17:12:55 -07007498 halInitScanConReqMsg.initScanParams.frameType =
Jeff Johnson295189b2012-06-20 16:38:30 -07007499 pwdiInitScanParams->wdiReqInfo.ucFrameType;
Jeff Johnsone7245742012-09-05 17:12:55 -07007500 halInitScanConReqMsg.initScanParams.frameLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07007501 pwdiInitScanParams->wdiReqInfo.ucFrameLength;
7502
7503 WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr( &halInitScanConReqMsg.initScanParams.macMgmtHdr,
7504 &pwdiInitScanParams->wdiReqInfo.wdiMACMgmtHdr);
7505
Jeff Johnson295189b2012-06-20 16:38:30 -07007506 halInitScanConReqMsg.initScanParams.useNoA = pwdiInitScanParams->wdiReqInfo.bUseNOA;
7507 halInitScanConReqMsg.initScanParams.scanDuration = pwdiInitScanParams->wdiReqInfo.scanDuration;
Jeff Johnson295189b2012-06-20 16:38:30 -07007508
Jeff Johnsone7245742012-09-05 17:12:55 -07007509 halInitScanConReqMsg.initScanParams.scanEntry.activeBSScnt =
Jeff Johnson295189b2012-06-20 16:38:30 -07007510 pwdiInitScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt;
7511
7512 for (i=0; i < pwdiInitScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt; i++)
7513 {
Jeff Johnsone7245742012-09-05 17:12:55 -07007514 halInitScanConReqMsg.initScanParams.scanEntry.bssIdx[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -07007515 pwdiInitScanParams->wdiReqInfo.wdiScanEntry.bssIdx[i];
7516 }
7517
Jeff Johnsone7245742012-09-05 17:12:55 -07007518 wpalMemoryCopy( pSendBuffer+usDataOffset,
7519 &halInitScanConReqMsg.initScanParams,
7520 sizeof(halInitScanConReqMsg.initScanParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07007521 }
7522 else
7523 {
7524 /*-----------------------------------------------------------------------
7525 Get message buffer
7526 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007527 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_INIT_SCAN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07007528 sizeof(halInitScanReqMsg.initScanParams),
7529 &pSendBuffer, &usDataOffset, &usSendSize))||
7530 ( usSendSize < (usDataOffset + sizeof(halInitScanReqMsg.initScanParams) )))
7531 {
7532 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007533 "Unable to get send buffer in init scan req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007534 pEventData, pwdiInitScanParams, wdiInitScanRspCb);
7535 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007536 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007537 }
7538
7539
7540 /*-----------------------------------------------------------------------
7541 Fill in the message
7542 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007543 halInitScanReqMsg.initScanParams.scanMode =
Jeff Johnson295189b2012-06-20 16:38:30 -07007544 WDI_2_HAL_SCAN_MODE(pwdiInitScanParams->wdiReqInfo.wdiScanMode);
7545
7546 wpalMemoryCopy(halInitScanReqMsg.initScanParams.bssid,
7547 pwdiInitScanParams->wdiReqInfo.macBSSID, WDI_MAC_ADDR_LEN);
7548
Jeff Johnsone7245742012-09-05 17:12:55 -07007549 halInitScanReqMsg.initScanParams.notifyBss =
Jeff Johnson295189b2012-06-20 16:38:30 -07007550 pwdiInitScanParams->wdiReqInfo.bNotifyBSS;
Jeff Johnsone7245742012-09-05 17:12:55 -07007551 halInitScanReqMsg.initScanParams.frameType =
Jeff Johnson295189b2012-06-20 16:38:30 -07007552 pwdiInitScanParams->wdiReqInfo.ucFrameType;
Jeff Johnsone7245742012-09-05 17:12:55 -07007553 halInitScanReqMsg.initScanParams.frameLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07007554 pwdiInitScanParams->wdiReqInfo.ucFrameLength;
7555
7556 WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr( &halInitScanReqMsg.initScanParams.macMgmtHdr,
7557 &pwdiInitScanParams->wdiReqInfo.wdiMACMgmtHdr);
7558
Jeff Johnsone7245742012-09-05 17:12:55 -07007559 halInitScanReqMsg.initScanParams.scanEntry.activeBSScnt =
Jeff Johnson295189b2012-06-20 16:38:30 -07007560 pwdiInitScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt;
7561
7562 for (i=0; i < pwdiInitScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt; i++)
7563 {
Jeff Johnsone7245742012-09-05 17:12:55 -07007564 halInitScanReqMsg.initScanParams.scanEntry.bssIdx[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -07007565 pwdiInitScanParams->wdiReqInfo.wdiScanEntry.bssIdx[i];
7566 }
7567
Jeff Johnsone7245742012-09-05 17:12:55 -07007568 wpalMemoryCopy( pSendBuffer+usDataOffset,
7569 &halInitScanReqMsg.initScanParams,
7570 sizeof(halInitScanReqMsg.initScanParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07007571 }
7572
7573 pWDICtx->wdiReqStatusCB = pwdiInitScanParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07007574 pWDICtx->pReqStatusUserData = pwdiInitScanParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07007575
7576 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007577 Send Init Scan Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07007578 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007579 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07007580 wdiInitScanRspCb, pEventData->pUserData, WDI_INIT_SCAN_RESP);
7581
7582}/*WDI_ProcessInitScanReq*/
7583
7584/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007585 @brief Process Start Scan Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -07007586 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007587
7588 @param pWDICtx: pointer to the WLAN DAL context
7589 pEventData: pointer to the event information structure
7590
Jeff Johnson295189b2012-06-20 16:38:30 -07007591 @see
7592 @return Result of the function call
7593*/
7594WDI_Status
7595WDI_ProcessStartScanReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007596(
Jeff Johnson295189b2012-06-20 16:38:30 -07007597 WDI_ControlBlockType* pWDICtx,
7598 WDI_EventInfoType* pEventData
7599)
7600{
7601 WDI_StartScanReqParamsType* pwdiStartScanParams = NULL;
7602 WDI_StartScanRspCb wdiStartScanRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07007603 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07007604 wpt_uint16 usDataOffset = 0;
7605 wpt_uint16 usSendSize = 0;
7606
Jeff Johnsone7245742012-09-05 17:12:55 -07007607 tHalStartScanReqMsg halStartScanReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07007608 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7609
7610 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007611 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07007612 -------------------------------------------------------------------------*/
7613 if (( NULL == pEventData ) ||
7614 ( NULL == (pwdiStartScanParams = (WDI_StartScanReqParamsType*)pEventData->pEventData)) ||
7615 ( NULL == (wdiStartScanRspCb = (WDI_StartScanRspCb)pEventData->pCBfnc)))
7616 {
7617 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07007618 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07007619 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007620 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007621 }
7622
7623#if 0
7624 wpalMutexAcquire(&pWDICtx->wptMutex);
7625 /*-----------------------------------------------------------------------
7626 Check to see if SCAN is already in progress - start scan is only
7627 allowed when a scan is ongoing and the state of the scan procedure
Jeff Johnsone7245742012-09-05 17:12:55 -07007628 is either init or end
Jeff Johnson295189b2012-06-20 16:38:30 -07007629 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007630 if (( !pWDICtx->bScanInProgress ) ||
Jeff Johnson295189b2012-06-20 16:38:30 -07007631 (( WDI_SCAN_INITIALIZED_ST != pWDICtx->uScanState ) &&
7632 ( WDI_SCAN_ENDED_ST != pWDICtx->uScanState )))
7633 {
7634 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
7635 "Scan start not allowed in this state %d %d",
7636 pWDICtx->bScanInProgress, pWDICtx->uScanState);
Jeff Johnsone7245742012-09-05 17:12:55 -07007637
Jeff Johnson295189b2012-06-20 16:38:30 -07007638 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07007639 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07007640 }
7641
Jeff Johnsone7245742012-09-05 17:12:55 -07007642 pWDICtx->uScanState = WDI_SCAN_STARTED_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07007643
7644 wpalMutexRelease(&pWDICtx->wptMutex);
7645#endif
7646
7647 /*-----------------------------------------------------------------------
7648 Get message buffer
7649 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007650 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_START_SCAN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07007651 sizeof(halStartScanReqMsg.startScanParams),
7652 &pSendBuffer, &usDataOffset, &usSendSize))||
7653 ( usSendSize < (usDataOffset + sizeof(halStartScanReqMsg.startScanParams) )))
7654 {
7655 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007656 "Unable to get send buffer in start scan req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007657 pEventData, pwdiStartScanParams, wdiStartScanRspCb);
7658 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007659 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007660 }
7661
Jeff Johnsone7245742012-09-05 17:12:55 -07007662 halStartScanReqMsg.startScanParams.scanChannel =
Jeff Johnson295189b2012-06-20 16:38:30 -07007663 pwdiStartScanParams->ucChannel;
Jeff Johnsone7245742012-09-05 17:12:55 -07007664 wpalMemoryCopy( pSendBuffer+usDataOffset,
7665 &halStartScanReqMsg.startScanParams,
7666 sizeof(halStartScanReqMsg.startScanParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07007667
7668 pWDICtx->wdiReqStatusCB = pwdiStartScanParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07007669 pWDICtx->pReqStatusUserData = pwdiStartScanParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07007670
7671 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007672 Send Start Scan Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07007673 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007674 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07007675 wdiStartScanRspCb, pEventData->pUserData, WDI_START_SCAN_RESP);
7676}/*WDI_ProcessStartScanReq*/
7677
7678
7679/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007680 @brief Process End Scan Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07007681 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007682
7683 @param pWDICtx: pointer to the WLAN DAL context
7684 pEventData: pointer to the event information structure
7685
Jeff Johnson295189b2012-06-20 16:38:30 -07007686 @see
7687 @return Result of the function call
7688*/
7689WDI_Status
7690WDI_ProcessEndScanReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007691(
Jeff Johnson295189b2012-06-20 16:38:30 -07007692 WDI_ControlBlockType* pWDICtx,
7693 WDI_EventInfoType* pEventData
7694)
7695{
7696 WDI_EndScanReqParamsType* pwdiEndScanParams = NULL;
7697 WDI_EndScanRspCb wdiEndScanRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07007698 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07007699 wpt_uint16 usDataOffset = 0;
7700 wpt_uint16 usSendSize = 0;
7701
Jeff Johnsone7245742012-09-05 17:12:55 -07007702 tHalEndScanReqMsg halEndScanReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07007703 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7704
7705 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007706 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07007707 -------------------------------------------------------------------------*/
7708 if (( NULL == pEventData ) ||
7709 ( NULL == (pwdiEndScanParams = (WDI_EndScanReqParamsType*)pEventData->pEventData)) ||
7710 ( NULL == (wdiEndScanRspCb = (WDI_EndScanRspCb)pEventData->pCBfnc)))
7711 {
7712 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07007713 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07007714 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007715 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007716 }
7717
Jeff Johnsone7245742012-09-05 17:12:55 -07007718 /* commenting this check as UMAC is sending END_SCAN_REQ after FINISH_SCAN
7719 * sometimes because of this check the scan request is not being
Jeff Johnson295189b2012-06-20 16:38:30 -07007720 * forwarded to HAL and result in hang*/
7721#if 0
7722 wpalMutexAcquire(&pWDICtx->wptMutex);
7723 /*-----------------------------------------------------------------------
7724 Check to see if SCAN is already in progress - end scan is only
7725 allowed when a scan is ongoing and the state of the scan procedure
7726 is started
7727 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007728 if (( !pWDICtx->bScanInProgress ) ||
Jeff Johnson295189b2012-06-20 16:38:30 -07007729 ( WDI_SCAN_STARTED_ST != pWDICtx->uScanState ))
7730 {
7731 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7732 "End start not allowed in this state %d %d",
7733 pWDICtx->bScanInProgress, pWDICtx->uScanState);
Jeff Johnsone7245742012-09-05 17:12:55 -07007734
Jeff Johnson295189b2012-06-20 16:38:30 -07007735 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07007736 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07007737 }
7738
Jeff Johnsone7245742012-09-05 17:12:55 -07007739 pWDICtx->uScanState = WDI_SCAN_ENDED_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07007740
7741 wpalMutexRelease(&pWDICtx->wptMutex);
7742#endif
7743
7744 /*-----------------------------------------------------------------------
7745 Get message buffer
7746 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007747 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_END_SCAN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07007748 sizeof(halEndScanReqMsg.endScanParams),
7749 &pSendBuffer, &usDataOffset, &usSendSize))||
7750 ( usSendSize < (usDataOffset + sizeof(halEndScanReqMsg.endScanParams) )))
7751 {
7752 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007753 "Unable to get send buffer in start scan req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007754 pEventData, pwdiEndScanParams, wdiEndScanRspCb);
7755 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007756 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007757 }
7758
7759 halEndScanReqMsg.endScanParams.scanChannel = pwdiEndScanParams->ucChannel;
7760
Jeff Johnsone7245742012-09-05 17:12:55 -07007761 wpalMemoryCopy( pSendBuffer+usDataOffset,
7762 &halEndScanReqMsg.endScanParams,
7763 sizeof(halEndScanReqMsg.endScanParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07007764
7765 pWDICtx->wdiReqStatusCB = pwdiEndScanParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07007766 pWDICtx->pReqStatusUserData = pwdiEndScanParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07007767
7768 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007769 Send End Scan Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07007770 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007771 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07007772 wdiEndScanRspCb, pEventData->pUserData, WDI_END_SCAN_RESP);
7773}/*WDI_ProcessEndScanReq*/
7774
7775
7776/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007777 @brief Process Finish Scan Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -07007778 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007779
7780 @param pWDICtx: pointer to the WLAN DAL context
7781 pEventData: pointer to the event information structure
7782
Jeff Johnson295189b2012-06-20 16:38:30 -07007783 @see
7784 @return Result of the function call
7785*/
7786WDI_Status
7787WDI_ProcessFinishScanReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007788(
Jeff Johnson295189b2012-06-20 16:38:30 -07007789 WDI_ControlBlockType* pWDICtx,
7790 WDI_EventInfoType* pEventData
7791)
7792{
7793 WDI_FinishScanReqParamsType* pwdiFinishScanParams;
7794 WDI_FinishScanRspCb wdiFinishScanRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07007795 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07007796 wpt_uint16 usDataOffset = 0;
7797 wpt_uint16 usSendSize = 0;
7798 wpt_uint8 i = 0;
Ravali85acf6b2012-12-12 14:01:38 -08007799 wpt_status wptStatus;
Jeff Johnsone7245742012-09-05 17:12:55 -07007800 tHalFinishScanReqMsg halFinishScanReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07007801 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7802
7803 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007804 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07007805 -------------------------------------------------------------------------*/
7806 if (( NULL == pEventData ) ||
7807 ( NULL == pEventData->pEventData) ||
7808 ( NULL == pEventData->pCBfnc))
7809 {
7810 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07007811 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07007812 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007813 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007814 }
7815
7816 pwdiFinishScanParams = (WDI_FinishScanReqParamsType*)pEventData->pEventData;
7817 wdiFinishScanRspCb = (WDI_FinishScanRspCb)pEventData->pCBfnc;
Jeff Johnsone7245742012-09-05 17:12:55 -07007818 /* commenting this check as UMAC is sending END_SCAN_REQ after FINISH_SCAN
7819 * sometimes because of this check the scan request is not being
Jeff Johnson295189b2012-06-20 16:38:30 -07007820 * forwarded to HAL and result in hang*/
7821#if 0
7822 wpalMutexAcquire(&pWDICtx->wptMutex);
7823 /*-----------------------------------------------------------------------
7824 Check to see if SCAN is already in progress
7825 Finish scan gets invoked any scan states. ie. abort scan
7826 It should be allowed in any states.
7827 -----------------------------------------------------------------------*/
7828 if ( !pWDICtx->bScanInProgress )
7829 {
7830 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7831 "Finish start not allowed in this state %d",
7832 pWDICtx->bScanInProgress );
7833
7834 wpalMutexRelease(&pWDICtx->wptMutex);
Ravali85acf6b2012-12-12 14:01:38 -08007835 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07007836 }
7837
7838 /*-----------------------------------------------------------------------
7839 It is safe to reset the scan flags here because until the response comes
Jeff Johnsone7245742012-09-05 17:12:55 -07007840 back all subsequent requests will be blocked at BUSY state
Jeff Johnson295189b2012-06-20 16:38:30 -07007841 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007842 pWDICtx->uScanState = WDI_SCAN_FINISHED_ST;
7843 pWDICtx->bScanInProgress = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007844 wpalMutexRelease(&pWDICtx->wptMutex);
7845#endif
7846
7847 if ( pWDICtx->bInBmps )
7848 {
7849 // notify DTS that we are entering BMPS
Ravali85acf6b2012-12-12 14:01:38 -08007850 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_BMPS, NULL);
7851 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
7852 {
7853 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain9a5d5382013-11-17 22:05:35 -08007854 "WDTS_SetPowerState returned with status %d when trying to notify DTS that host is entering BMPS", wptStatus);
Ravali85acf6b2012-12-12 14:01:38 -08007855 WDI_ASSERT(0);
7856 }
Jeff Johnson295189b2012-06-20 16:38:30 -07007857 }
7858
7859 /*-----------------------------------------------------------------------
7860 Get message buffer
7861 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007862 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_FINISH_SCAN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07007863 sizeof(halFinishScanReqMsg.finishScanParams),
7864 &pSendBuffer, &usDataOffset, &usSendSize))||
7865 ( usSendSize < (usDataOffset + sizeof(halFinishScanReqMsg.finishScanParams) )))
7866 {
7867 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007868 "Unable to get send buffer in start scan req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007869 pEventData, pwdiFinishScanParams, wdiFinishScanRspCb);
7870 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007871 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007872 }
7873
Jeff Johnsone7245742012-09-05 17:12:55 -07007874 halFinishScanReqMsg.finishScanParams.scanMode =
Jeff Johnson295189b2012-06-20 16:38:30 -07007875 WDI_2_HAL_SCAN_MODE(pwdiFinishScanParams->wdiReqInfo.wdiScanMode);
7876
Jeff Johnsone7245742012-09-05 17:12:55 -07007877 halFinishScanReqMsg.finishScanParams.currentOperChannel =
Jeff Johnson295189b2012-06-20 16:38:30 -07007878 pwdiFinishScanParams->wdiReqInfo.ucCurrentOperatingChannel;
7879
Jeff Johnsone7245742012-09-05 17:12:55 -07007880 halFinishScanReqMsg.finishScanParams.cbState =
Jeff Johnson295189b2012-06-20 16:38:30 -07007881 WDI_2_HAL_CB_STATE(pwdiFinishScanParams->wdiReqInfo.wdiCBState);
7882
7883 wpalMemoryCopy(halFinishScanReqMsg.finishScanParams.bssid,
7884 pwdiFinishScanParams->wdiReqInfo.macBSSID, WDI_MAC_ADDR_LEN);
7885
Jeff Johnsone7245742012-09-05 17:12:55 -07007886 halFinishScanReqMsg.finishScanParams.notifyBss =
Jeff Johnson295189b2012-06-20 16:38:30 -07007887 pwdiFinishScanParams->wdiReqInfo.bNotifyBSS ;
Jeff Johnsone7245742012-09-05 17:12:55 -07007888 halFinishScanReqMsg.finishScanParams.frameType =
Jeff Johnson295189b2012-06-20 16:38:30 -07007889 pwdiFinishScanParams->wdiReqInfo.ucFrameType ;
Jeff Johnsone7245742012-09-05 17:12:55 -07007890 halFinishScanReqMsg.finishScanParams.frameLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07007891 pwdiFinishScanParams->wdiReqInfo.ucFrameLength ;
7892
Jeff Johnsone7245742012-09-05 17:12:55 -07007893 halFinishScanReqMsg.finishScanParams.scanEntry.activeBSScnt =
Jeff Johnson295189b2012-06-20 16:38:30 -07007894 pwdiFinishScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt ;
7895
7896 for (i = 0; i < pwdiFinishScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt; i++)
7897 {
Jeff Johnsone7245742012-09-05 17:12:55 -07007898 halFinishScanReqMsg.finishScanParams.scanEntry.bssIdx[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -07007899 pwdiFinishScanParams->wdiReqInfo.wdiScanEntry.bssIdx[i] ;
7900 }
7901
7902 WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr( &halFinishScanReqMsg.finishScanParams.macMgmtHdr,
7903 &pwdiFinishScanParams->wdiReqInfo.wdiMACMgmtHdr);
7904
Jeff Johnsone7245742012-09-05 17:12:55 -07007905 wpalMemoryCopy( pSendBuffer+usDataOffset,
7906 &halFinishScanReqMsg.finishScanParams,
7907 sizeof(halFinishScanReqMsg.finishScanParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07007908
7909 pWDICtx->wdiReqStatusCB = pwdiFinishScanParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07007910 pWDICtx->pReqStatusUserData = pwdiFinishScanParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07007911
7912 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007913 Send Finish Scan Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07007914 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007915 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07007916 wdiFinishScanRspCb, pEventData->pUserData, WDI_FINISH_SCAN_RESP);
7917}/*WDI_ProcessFinishScanReq*/
7918
7919
7920/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -07007921 ASSOCIATION REQUEST API
Jeff Johnson295189b2012-06-20 16:38:30 -07007922==========================================================================*/
7923/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007924 @brief Process BSS Join for a given Session
7925
7926 @param pWDICtx: pointer to the WLAN DAL context
7927 pEventData: pointer to the event information structure
7928
Jeff Johnson295189b2012-06-20 16:38:30 -07007929 @see
7930 @return Result of the function call
7931*/
7932WDI_Status
7933WDI_ProcessBSSSessionJoinReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007934(
Jeff Johnson295189b2012-06-20 16:38:30 -07007935 WDI_ControlBlockType* pWDICtx,
7936 WDI_JoinReqParamsType* pwdiJoinParams,
7937 WDI_JoinRspCb wdiJoinRspCb,
7938 void* pUserData
7939)
7940{
7941 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07007942 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07007943 wpt_uint16 usDataOffset = 0;
7944 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07007945 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07007946
Jeff Johnsone7245742012-09-05 17:12:55 -07007947 tHalJoinReqMsg halJoinReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07007948 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7949
Madan Mohan Koyyalamudi35287862012-10-22 14:52:46 -07007950 wpalMutexAcquire(&pWDICtx->wptMutex);
7951
Jeff Johnson295189b2012-06-20 16:38:30 -07007952 /*------------------------------------------------------------------------
7953 Check to see if we have any session with this BSSID already stored, we
7954 should not
7955 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007956 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
7957 pwdiJoinParams->wdiReqInfo.macBSSID,
7958 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07007959
7960 if ( NULL != pBSSSes )
7961 {
7962 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi35287862012-10-22 14:52:46 -07007963 "Association for this BSSID: " MAC_ADDRESS_STR " is already in place",
7964 MAC_ADDR_ARRAY(pwdiJoinParams->wdiReqInfo.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07007965
Madan Mohan Koyyalamudi35287862012-10-22 14:52:46 -07007966 /*reset the bAssociationInProgress otherwise the next
7967 *join request will be queued*/
7968 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
7969 wpalMutexRelease(&pWDICtx->wptMutex);
7970 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07007971 }
7972
Jeff Johnson295189b2012-06-20 16:38:30 -07007973 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007974 Fetch an empty session block
Jeff Johnson295189b2012-06-20 16:38:30 -07007975 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007976 ucCurrentBSSSesIdx = WDI_FindEmptySession( pWDICtx, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07007977 if ( NULL == pBSSSes )
7978 {
7979
7980 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
7981 "DAL has no free sessions - cannot run another join");
7982
Madan Mohan Koyyalamudi35287862012-10-22 14:52:46 -07007983 /*reset the bAssociationInProgress otherwise the next
7984 *join request will be queued*/
7985 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007986 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07007987 return WDI_STATUS_RES_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007988 }
7989
7990 /*Save BSS Session Info*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007991 pBSSSes->bInUse = eWLAN_PAL_TRUE;
7992 wpalMemoryCopy( pBSSSes->macBSSID, pwdiJoinParams->wdiReqInfo.macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -07007993 WDI_MAC_ADDR_LEN);
7994
7995 /*Transition to state Joining*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007996 pBSSSes->wdiAssocState = WDI_ASSOC_JOINING_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07007997 pWDICtx->ucCurrentBSSSesIdx = ucCurrentBSSSesIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -07007998
Jeff Johnson295189b2012-06-20 16:38:30 -07007999 wpalMutexRelease(&pWDICtx->wptMutex);
8000
8001 /*-----------------------------------------------------------------------
8002 Get message buffer
8003 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008004 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_JOIN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008005 sizeof(halJoinReqMsg.joinReqParams),
8006 &pSendBuffer, &usDataOffset, &usSendSize))||
8007 ( usSendSize < (usDataOffset + sizeof(halJoinReqMsg.joinReqParams) )))
8008 {
8009 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08008010 "Unable to get send buffer in join req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07008011 pUserData, pwdiJoinParams, wdiJoinRspCb);
8012 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008013 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008014 }
8015
8016 wpalMemoryCopy(halJoinReqMsg.joinReqParams.bssId,
Jeff Johnsone7245742012-09-05 17:12:55 -07008017 pwdiJoinParams->wdiReqInfo.macBSSID, WDI_MAC_ADDR_LEN);
Jeff Johnson295189b2012-06-20 16:38:30 -07008018
8019 wpalMemoryCopy(halJoinReqMsg.joinReqParams.selfStaMacAddr,
Jeff Johnsone7245742012-09-05 17:12:55 -07008020 pwdiJoinParams->wdiReqInfo.macSTASelf,
8021 WDI_MAC_ADDR_LEN);
Jeff Johnson295189b2012-06-20 16:38:30 -07008022
Jeff Johnsone7245742012-09-05 17:12:55 -07008023 halJoinReqMsg.joinReqParams.ucChannel =
Jeff Johnson295189b2012-06-20 16:38:30 -07008024 pwdiJoinParams->wdiReqInfo.wdiChannelInfo.ucChannel;
8025
8026 halJoinReqMsg.joinReqParams.linkState = pwdiJoinParams->wdiReqInfo.linkState;
8027
Madan Mohan Koyyalamudi83b12822012-11-02 12:43:10 -07008028#ifdef WLAN_FEATURE_VOWIFI
8029 halJoinReqMsg.joinReqParams.maxTxPower =
8030 pwdiJoinParams->wdiReqInfo.wdiChannelInfo.cMaxTxPower;
8031#else
Jeff Johnsone7245742012-09-05 17:12:55 -07008032 halJoinReqMsg.joinReqParams.ucLocalPowerConstraint =
Jeff Johnson295189b2012-06-20 16:38:30 -07008033 pwdiJoinParams->wdiReqInfo.wdiChannelInfo.ucLocalPowerConstraint;
8034#endif
8035
Jeff Johnsone7245742012-09-05 17:12:55 -07008036 halJoinReqMsg.joinReqParams.secondaryChannelOffset =
Jeff Johnson295189b2012-06-20 16:38:30 -07008037 WDI_2_HAL_SEC_CH_OFFSET(pwdiJoinParams->wdiReqInfo.wdiChannelInfo.
8038 wdiSecondaryChannelOffset);
8039
Jeff Johnsone7245742012-09-05 17:12:55 -07008040 wpalMemoryCopy( pSendBuffer+usDataOffset,
8041 &halJoinReqMsg.joinReqParams,
8042 sizeof(halJoinReqMsg.joinReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008043
8044 pWDICtx->wdiReqStatusCB = pwdiJoinParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008045 pWDICtx->pReqStatusUserData = pwdiJoinParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008046
8047 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008048 Send Join Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008049 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008050 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
8051 wdiJoinRspCb, pUserData, WDI_JOIN_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07008052
8053}/*WDI_ProcessBSSSessionJoinReq*/
8054
8055/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008056 @brief Process Join Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07008057 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008058
8059 @param pWDICtx: pointer to the WLAN DAL context
8060 pEventData: pointer to the event information structure
8061
Jeff Johnson295189b2012-06-20 16:38:30 -07008062 @see
8063 @return Result of the function call
8064*/
8065WDI_Status
8066WDI_ProcessJoinReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008067(
Jeff Johnson295189b2012-06-20 16:38:30 -07008068 WDI_ControlBlockType* pWDICtx,
8069 WDI_EventInfoType* pEventData
8070)
8071{
8072 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
8073 WDI_JoinReqParamsType* pwdiJoinParams = NULL;
8074 WDI_JoinRspCb wdiJoinRspCb = NULL;
8075 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8076
8077 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008078 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008079 -------------------------------------------------------------------------*/
8080 if (( NULL == pEventData ) ||
8081 ( NULL == (pwdiJoinParams = (WDI_JoinReqParamsType*)pEventData->pEventData)) ||
8082 ( NULL == (wdiJoinRspCb = (WDI_JoinRspCb)pEventData->pCBfnc)))
8083 {
8084 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008085 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008086 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008087 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008088 }
Jeff Johnsone7245742012-09-05 17:12:55 -07008089
Jeff Johnson295189b2012-06-20 16:38:30 -07008090 /*-------------------------------------------------------------------------
8091 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07008092 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07008093 -------------------------------------------------------------------------*/
8094 wpalMutexAcquire(&pWDICtx->wptMutex);
8095
8096 if ( eWLAN_PAL_FALSE != pWDICtx->bAssociationInProgress )
8097 {
8098 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8099 "Association is currently in progress, queueing new join req");
8100
8101 /*Association is in progress - queue current one*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008102 wdiStatus = WDI_QueueNewAssocRequest(pWDICtx, pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -07008103 pwdiJoinParams->wdiReqInfo.macBSSID);
8104
8105 wpalMutexRelease(&pWDICtx->wptMutex);
8106
Jeff Johnsone7245742012-09-05 17:12:55 -07008107 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07008108 }
8109
8110 /*Starting a new association */
8111 pWDICtx->bAssociationInProgress = eWLAN_PAL_TRUE;
8112 wpalMutexRelease(&pWDICtx->wptMutex);
8113
8114 /*Process the Join Request*/
8115 return WDI_ProcessBSSSessionJoinReq( pWDICtx, pwdiJoinParams,
8116 wdiJoinRspCb,pEventData->pUserData);
8117
8118}/*WDI_ProcessJoinReq*/
8119
8120
8121/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008122 @brief Process Config BSS Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -07008123 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008124
8125 @param pWDICtx: pointer to the WLAN DAL context
8126 pEventData: pointer to the event information structure
8127
Jeff Johnson295189b2012-06-20 16:38:30 -07008128 @see
8129 @return Result of the function call
8130*/
8131WDI_Status
8132WDI_ProcessConfigBSSReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008133(
Jeff Johnson295189b2012-06-20 16:38:30 -07008134 WDI_ControlBlockType* pWDICtx,
8135 WDI_EventInfoType* pEventData
8136)
8137{
8138 WDI_ConfigBSSReqParamsType* pwdiConfigBSSParams;
8139 WDI_ConfigBSSRspCb wdiConfigBSSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07008140 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07008141 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008142 wpt_uint16 uMsgSize = 0;
8143 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008144 wpt_uint16 usDataOffset = 0;
8145 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07008146 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07008147
Jeff Johnsone7245742012-09-05 17:12:55 -07008148 tConfigBssReqMsg halConfigBssReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07008149 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8150
8151 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008152 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008153 -------------------------------------------------------------------------*/
8154 if (( NULL == pEventData ) ||
8155 ( NULL == pEventData->pEventData ) ||
8156 ( NULL == pEventData->pCBfnc ))
8157 {
8158 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008159 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008160 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008161 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008162 }
8163
8164 pwdiConfigBSSParams = (WDI_ConfigBSSReqParamsType*)pEventData->pEventData;
8165 wdiConfigBSSRspCb = (WDI_ConfigBSSRspCb)pEventData->pCBfnc;
8166 /*-------------------------------------------------------------------------
8167 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07008168 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07008169 -------------------------------------------------------------------------*/
8170 wpalMutexAcquire(&pWDICtx->wptMutex);
8171
8172 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008173 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07008174 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008175 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
8176 pwdiConfigBSSParams->wdiReqInfo.macBSSID,
8177 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07008178
Jeff Johnsone7245742012-09-05 17:12:55 -07008179 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07008180 {
8181#ifdef WLAN_FEATURE_VOWIFI_11R
8182 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008183 Fetch an empty session block
Jeff Johnson295189b2012-06-20 16:38:30 -07008184 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008185 ucCurrentBSSSesIdx = WDI_FindEmptySession( pWDICtx, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07008186 if ( NULL == pBSSSes )
8187 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008188
Jeff Johnson295189b2012-06-20 16:38:30 -07008189 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
8190 "DAL has no free sessions - cannot run another join");
Jeff Johnsone7245742012-09-05 17:12:55 -07008191
Jeff Johnson295189b2012-06-20 16:38:30 -07008192 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008193 return WDI_STATUS_RES_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008194 }
Jeff Johnsone7245742012-09-05 17:12:55 -07008195
Jeff Johnson295189b2012-06-20 16:38:30 -07008196 /*Save BSS Session Info*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008197 pBSSSes->bInUse = eWLAN_PAL_TRUE;
8198 wpalMemoryCopy( pBSSSes->macBSSID, pwdiConfigBSSParams->wdiReqInfo.macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -07008199 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -07008200
Jeff Johnson295189b2012-06-20 16:38:30 -07008201 /*Transition to state Joining*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008202 pBSSSes->wdiAssocState = WDI_ASSOC_JOINING_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07008203 pWDICtx->ucCurrentBSSSesIdx = ucCurrentBSSSesIdx;
8204#else
Jeff Johnsone7245742012-09-05 17:12:55 -07008205 /* If the BSS type is IBSS create the session here as there is no Join
Jeff Johnson295189b2012-06-20 16:38:30 -07008206 * Request in case of IBSS*/
8207 if((pwdiConfigBSSParams->wdiReqInfo.wdiBSSType == WDI_IBSS_MODE) ||
8208 (pwdiConfigBSSParams->wdiReqInfo.wdiBSSType == WDI_INFRA_AP_MODE) ||
8209 (pwdiConfigBSSParams->wdiReqInfo.wdiBSSType == WDI_BTAMP_AP_MODE) ||
8210 (pwdiConfigBSSParams->wdiReqInfo.wdiBSSType == WDI_BTAMP_STA_MODE))
8211 {
8212 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008213 Fetch an empty session block
Jeff Johnson295189b2012-06-20 16:38:30 -07008214 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008215 ucCurrentBSSSesIdx = WDI_FindEmptySession( pWDICtx, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07008216 if ( NULL == pBSSSes )
8217 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008218
Jeff Johnson295189b2012-06-20 16:38:30 -07008219 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
8220 "DAL has no free sessions - cannot run another join");
Jeff Johnsone7245742012-09-05 17:12:55 -07008221
Jeff Johnson295189b2012-06-20 16:38:30 -07008222 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008223 return WDI_STATUS_RES_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008224 }
Jeff Johnsone7245742012-09-05 17:12:55 -07008225
Jeff Johnson295189b2012-06-20 16:38:30 -07008226 /*Save BSS Session Info*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008227 pBSSSes->bInUse = eWLAN_PAL_TRUE;
8228 wpalMemoryCopy( pBSSSes->macBSSID, pwdiConfigBSSParams->wdiReqInfo.macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -07008229 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -07008230
Jeff Johnson295189b2012-06-20 16:38:30 -07008231 /*Transition to state Joining*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008232 pBSSSes->wdiAssocState = WDI_ASSOC_JOINING_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07008233 pWDICtx->ucCurrentBSSSesIdx = ucCurrentBSSSesIdx;
8234 }
8235 else
8236 {
8237 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07008238 "%s: Association sequence for this BSS does not yet exist." MAC_ADDRESS_STR "wdiBssType %d",
8239 __func__, MAC_ADDR_ARRAY(pwdiConfigBSSParams->wdiReqInfo.macBSSID),
8240 pwdiConfigBSSParams->wdiReqInfo.wdiBSSType);
8241
Jeff Johnson295189b2012-06-20 16:38:30 -07008242 /* for IBSS testing */
8243 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008244 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008245 }
8246#endif
8247 }
8248
8249 /*------------------------------------------------------------------------
8250 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07008251 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07008252 ------------------------------------------------------------------------*/
8253 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
8254 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008255 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8256 "%s: Association sequence for this BSS exists but currently queued. " MAC_ADDRESS_STR " bssIdx %d",
8257 __func__, MAC_ADDR_ARRAY(pwdiConfigBSSParams->wdiReqInfo.macBSSID),
8258 ucCurrentBSSSesIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07008259
Jeff Johnsone7245742012-09-05 17:12:55 -07008260 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07008261
8262 wpalMutexRelease(&pWDICtx->wptMutex);
8263
Jeff Johnsone7245742012-09-05 17:12:55 -07008264 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07008265 }
8266
8267 /* Cache the request for response processing */
Jeff Johnsone7245742012-09-05 17:12:55 -07008268 wpalMemoryCopy(&pWDICtx->wdiCachedConfigBssReq,
8269 pwdiConfigBSSParams,
Jeff Johnson295189b2012-06-20 16:38:30 -07008270 sizeof(pWDICtx->wdiCachedConfigBssReq));
8271
8272 wpalMutexRelease(&pWDICtx->wptMutex);
8273
Jeff Johnsone7245742012-09-05 17:12:55 -07008274 /* Allocation of BssReqMsg Memory Based on Firmware Capabilities */
8275#ifdef WLAN_FEATURE_11AC
8276 if (WDI_getFwWlanFeatCaps(DOT11AC))
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -07008277 uMsgSize = sizeof(halConfigBssReqMsg.uBssParams.configBssParams_V1); // Version - 1 For 11AC
Jeff Johnsone7245742012-09-05 17:12:55 -07008278 else
8279#endif
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -07008280 uMsgSize = sizeof(halConfigBssReqMsg.uBssParams.configBssParams); // default Version - 0 Structure
Jeff Johnson295189b2012-06-20 16:38:30 -07008281
8282 /*-----------------------------------------------------------------------
8283 Get message buffer
8284 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008285 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_CONFIG_BSS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008286 uMsgSize, &pSendBuffer, &usDataOffset, &usSendSize))||
8287 ( usSendSize < (usDataOffset + uMsgSize )))
8288 {
8289 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08008290 "Unable to get send buffer in config bss req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07008291 pEventData, pwdiConfigBSSParams, wdiConfigBSSRspCb);
8292 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008293 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008294 }
8295
8296 /*Copy the BSS request */
Madan Mohan Koyyalamudia208d102012-10-15 15:18:18 -07008297#ifdef WLAN_FEATURE_11AC
8298 if (WDI_getFwWlanFeatCaps(DOT11AC))
8299 WDI_CopyWDIConfigBSSToHALConfigBSS( (tConfigBssParams*)&halConfigBssReqMsg.uBssParams.configBssParams_V1,
8300 &pwdiConfigBSSParams->wdiReqInfo);
8301 else
8302#endif
Jeff Johnsone7245742012-09-05 17:12:55 -07008303 WDI_CopyWDIConfigBSSToHALConfigBSS( &halConfigBssReqMsg.uBssParams.configBssParams,
Jeff Johnson295189b2012-06-20 16:38:30 -07008304 &pwdiConfigBSSParams->wdiReqInfo);
8305
8306 /* Need to fill in the STA Index to invalid, since at this point we have not
8307 yet received it from HAL */
Jeff Johnsone7245742012-09-05 17:12:55 -07008308 halConfigBssReqMsg.uBssParams.configBssParams.staContext.staIdx = WDI_STA_INVALID_IDX;
Jeff Johnson295189b2012-06-20 16:38:30 -07008309
8310 /* Need to fill in the BSS index */
Jeff Johnsone7245742012-09-05 17:12:55 -07008311 halConfigBssReqMsg.uBssParams.configBssParams.staContext.bssIdx = pBSSSes->ucBSSIdx;
8312
Madan Mohan Koyyalamudif244d8f2012-11-29 11:21:05 -08008313#ifdef WLAN_FEATURE_11AC
8314 if (WDI_getFwWlanFeatCaps(DOT11AC)){
8315 wpalMemoryCopy( pSendBuffer+usDataOffset,
8316 &halConfigBssReqMsg.uBssParams.configBssParams_V1,
8317 uMsgSize);
8318 }else
8319#endif
Tushnim Bhattacharyya5dd94562013-03-20 20:15:03 -07008320 {
8321 if ( uMsgSize <= sizeof(tConfigBssParams) )
8322 {
Tushnim Bhattacharyyaf64c5dc2013-03-21 15:11:31 -07008323 wpalMemoryCopy( pSendBuffer+usDataOffset,
Tushnim Bhattacharyya5dd94562013-03-20 20:15:03 -07008324 &halConfigBssReqMsg.uBssParams.configBssParams,
8325 uMsgSize);
8326 }
8327 else
8328 {
8329 return WDI_STATUS_E_FAILURE;
8330 }
8331 }
Jeff Johnson295189b2012-06-20 16:38:30 -07008332
8333 pWDICtx->wdiReqStatusCB = pwdiConfigBSSParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008334 pWDICtx->pReqStatusUserData = pwdiConfigBSSParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008335
8336 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008337 Send Config BSS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008338 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008339 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
8340 wdiConfigBSSRspCb, pEventData->pUserData,
Jeff Johnson295189b2012-06-20 16:38:30 -07008341 WDI_CONFIG_BSS_RESP);
8342
8343}/*WDI_ProcessConfigBSSReq*/
8344
8345
8346/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008347 @brief Process Del BSS Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07008348 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008349
8350 @param pWDICtx: pointer to the WLAN DAL context
8351 pEventData: pointer to the event information structure
8352
Jeff Johnson295189b2012-06-20 16:38:30 -07008353 @see
8354 @return Result of the function call
8355*/
8356WDI_Status
8357WDI_ProcessDelBSSReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008358(
Jeff Johnson295189b2012-06-20 16:38:30 -07008359 WDI_ControlBlockType* pWDICtx,
8360 WDI_EventInfoType* pEventData
8361)
8362{
8363 WDI_DelBSSReqParamsType* pwdiDelBSSParams = NULL;
8364 WDI_DelBSSRspCb wdiDelBSSRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008365 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07008366 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008367 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008368 wpt_uint16 usDataOffset = 0;
8369 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07008370 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07008371
Jeff Johnsone7245742012-09-05 17:12:55 -07008372 tDeleteBssReqMsg halBssReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07008373 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8374
8375 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008376 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008377 -------------------------------------------------------------------------*/
8378 if (( NULL == pEventData ) ||
8379 ( NULL == (pwdiDelBSSParams = (WDI_DelBSSReqParamsType*)pEventData->pEventData)) ||
8380 ( NULL == (wdiDelBSSRspCb = (WDI_DelBSSRspCb)pEventData->pCBfnc)))
8381 {
8382 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008383 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008384 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008385 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008386 }
8387
8388 /*-------------------------------------------------------------------------
8389 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07008390 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07008391 -------------------------------------------------------------------------*/
8392 wpalMutexAcquire(&pWDICtx->wptMutex);
8393
8394 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008395 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07008396 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008397 ucCurrentBSSSesIdx = WDI_FindAssocSessionByBSSIdx( pWDICtx,
8398 pwdiDelBSSParams->ucBssIdx,
8399 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07008400
Jeff Johnsone7245742012-09-05 17:12:55 -07008401 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07008402 {
8403 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07008404 "%s: BSS does not yet exist. ucBssIdx %d",
8405 __func__, pwdiDelBSSParams->ucBssIdx);
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -08008406
8407 wpalMutexRelease(&pWDICtx->wptMutex);
8408
8409 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008410 }
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -08008411
8412 /*------------------------------------------------------------------------
8413 Check if this BSS is being currently processed or queued,
8414 if queued - queue the new request as well
8415 ------------------------------------------------------------------------*/
8416 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
Jeff Johnson295189b2012-06-20 16:38:30 -07008417 {
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -08008418 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8419 "%s: Association sequence for this BSS exists but currently queued. ucBssIdx %d",
8420 __func__, pwdiDelBSSParams->ucBssIdx);
8421
8422 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
8423
8424 wpalMutexRelease(&pWDICtx->wptMutex);
8425
8426 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07008427 }
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -08008428
Jeff Johnson295189b2012-06-20 16:38:30 -07008429 /*-----------------------------------------------------------------------
8430 If we receive a Del BSS request for an association that is already in
8431 progress, it indicates that the assoc has failed => we no longer have
8432 an association in progress => we must check for pending associations
Jeff Johnsone7245742012-09-05 17:12:55 -07008433 that were queued and start as soon as the Del BSS response is received
Jeff Johnson295189b2012-06-20 16:38:30 -07008434 -----------------------------------------------------------------------*/
8435 if ( ucCurrentBSSSesIdx == pWDICtx->ucCurrentBSSSesIdx )
8436 {
8437 /*We can switch to false here because even if a subsequent Join comes in
8438 it will only be processed when DAL transitions out of BUSY state which
8439 happens when the Del BSS request comes */
8440 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
8441
8442 /*Former association is complete - prepare next pending assoc for
8443 processing */
8444 WDI_DequeueAssocRequest(pWDICtx);
8445 }
8446
8447 wpalMutexRelease(&pWDICtx->wptMutex);
8448 /*-----------------------------------------------------------------------
8449 Get message buffer
8450 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008451 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_DEL_BSS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008452 sizeof(halBssReqMsg.deleteBssParams),
8453 &pSendBuffer, &usDataOffset, &usSendSize))||
8454 ( usSendSize < (usDataOffset + sizeof(halBssReqMsg.deleteBssParams) )))
8455 {
8456 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08008457 "Unable to get send buffer in start req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07008458 pEventData, pwdiDelBSSParams, wdiDelBSSRspCb);
8459 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008460 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008461 }
8462
8463 /*Fill in the message request structure*/
8464
8465 /*BSS Index is saved on config BSS response and Post Assoc Response */
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -08008466 halBssReqMsg.deleteBssParams.bssIdx = pBSSSes->ucBSSIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -07008467
Jeff Johnsone7245742012-09-05 17:12:55 -07008468 wpalMemoryCopy( pSendBuffer+usDataOffset,
8469 &halBssReqMsg.deleteBssParams,
8470 sizeof(halBssReqMsg.deleteBssParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008471
8472 pWDICtx->wdiReqStatusCB = pwdiDelBSSParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008473 pWDICtx->pReqStatusUserData = pwdiDelBSSParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008474
Jeff Johnsone7245742012-09-05 17:12:55 -07008475
Jeff Johnson295189b2012-06-20 16:38:30 -07008476 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008477 Send Del BSS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008478 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008479 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07008480 wdiDelBSSRspCb, pEventData->pUserData, WDI_DEL_BSS_RESP);
8481
Jeff Johnsone7245742012-09-05 17:12:55 -07008482
Jeff Johnson295189b2012-06-20 16:38:30 -07008483}/*WDI_ProcessDelBSSReq*/
8484
8485/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008486 @brief Process Post Assoc Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -07008487 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008488
8489 @param pWDICtx: pointer to the WLAN DAL context
8490 pEventData: pointer to the event information structure
8491
Jeff Johnson295189b2012-06-20 16:38:30 -07008492 @see
8493 @return Result of the function call
8494*/
8495WDI_Status
8496WDI_ProcessPostAssocReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008497(
Jeff Johnson295189b2012-06-20 16:38:30 -07008498 WDI_ControlBlockType* pWDICtx,
8499 WDI_EventInfoType* pEventData
8500)
8501{
8502 WDI_PostAssocReqParamsType* pwdiPostAssocParams = NULL;
8503 WDI_PostAssocRspCb wdiPostAssocRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008504 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07008505 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008506 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008507 wpt_uint16 usDataOffset = 0;
8508 wpt_uint16 usSendSize = 0;
8509 wpt_uint16 uMsgSize = 0;
8510 wpt_uint16 uOffset = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07008511 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07008512
Jeff Johnsone7245742012-09-05 17:12:55 -07008513 tPostAssocReqMsg halPostAssocReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07008514 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8515
8516 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008517 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008518 -------------------------------------------------------------------------*/
8519 if (( NULL == pEventData ) ||
8520 ( NULL == (pwdiPostAssocParams = (WDI_PostAssocReqParamsType*)pEventData->pEventData)) ||
8521 ( NULL == (wdiPostAssocRspCb = (WDI_PostAssocRspCb)pEventData->pCBfnc)))
8522 {
8523 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008524 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008525 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008526 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008527 }
8528
8529 /*-------------------------------------------------------------------------
8530 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07008531 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07008532 -------------------------------------------------------------------------*/
8533 wpalMutexAcquire(&pWDICtx->wptMutex);
8534
8535 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008536 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07008537 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008538 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
8539 pwdiPostAssocParams->wdiBSSParams.macBSSID,
8540 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07008541
8542 if ( NULL == pBSSSes )
8543 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008544 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
8545 "%s: Association sequence for this BSS does not yet exist - "
8546 "operation not allowed. macBSSID " MAC_ADDRESS_STR,
8547 __func__, MAC_ADDR_ARRAY(pwdiPostAssocParams->wdiBSSParams.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07008548
8549 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008550 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008551 }
8552
8553 /*------------------------------------------------------------------------
8554 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07008555 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07008556 ------------------------------------------------------------------------*/
8557 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
8558 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008559 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8560 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
8561 __func__, MAC_ADDR_ARRAY(pwdiPostAssocParams->wdiBSSParams.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07008562
Jeff Johnsone7245742012-09-05 17:12:55 -07008563 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07008564
8565 wpalMutexRelease(&pWDICtx->wptMutex);
8566
Jeff Johnsone7245742012-09-05 17:12:55 -07008567 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07008568 }
8569
8570 /*-----------------------------------------------------------------------
8571 If Post Assoc was not yet received - the current association must
8572 be in progress
8573 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008574 if (( ucCurrentBSSSesIdx != pWDICtx->ucCurrentBSSSesIdx ) ||
Jeff Johnson295189b2012-06-20 16:38:30 -07008575 ( eWLAN_PAL_FALSE == pWDICtx->bAssociationInProgress ))
8576 {
8577 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
8578 "Association sequence for this BSS association no longer in "
8579 "progress - not allowed");
8580
8581 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008582 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008583 }
8584
8585 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008586 Post Assoc Request is only allowed in Joining state
Jeff Johnson295189b2012-06-20 16:38:30 -07008587 -----------------------------------------------------------------------*/
8588 if ( WDI_ASSOC_JOINING_ST != pBSSSes->wdiAssocState)
8589 {
8590 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
8591 "Post Assoc not allowed before JOIN - failing request");
8592
8593 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008594 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008595 }
8596
8597 wpalMutexRelease(&pWDICtx->wptMutex);
8598
8599 uMsgSize = sizeof(halPostAssocReqMsg.postAssocReqParams.configStaParams) +
8600 sizeof(halPostAssocReqMsg.postAssocReqParams.configBssParams) ;
8601 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008602 Fill message for tx over the bus
Jeff Johnson295189b2012-06-20 16:38:30 -07008603 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008604 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_POST_ASSOC_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008605 uMsgSize,&pSendBuffer, &usDataOffset, &usSendSize))||
8606 ( usSendSize < (usDataOffset + uMsgSize )))
8607 {
8608 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08008609 "Unable to get send buffer in start req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07008610 pEventData, pwdiPostAssocParams, wdiPostAssocRspCb);
8611 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008612 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008613 }
8614
8615 /*Copy the STA parameters */
8616 WDI_CopyWDIStaCtxToHALStaCtx(&halPostAssocReqMsg.postAssocReqParams.configStaParams,
8617 &pwdiPostAssocParams->wdiSTAParams );
8618
8619 /* Need to fill in the self STA Index */
Jeff Johnsone7245742012-09-05 17:12:55 -07008620 if ( WDI_STATUS_SUCCESS !=
Jeff Johnson295189b2012-06-20 16:38:30 -07008621 WDI_STATableFindStaidByAddr(pWDICtx,
8622 pwdiPostAssocParams->wdiSTAParams.macSTA,
8623 (wpt_uint8*)&halPostAssocReqMsg.postAssocReqParams.configStaParams.staIdx ))
8624 {
8625 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08008626 MAC_ADDRESS_STR
8627 ": This station does not exist in the WDI Station Table",
8628 MAC_ADDR_ARRAY(pwdiPostAssocParams->wdiSTAParams.macSTA));
Jeff Johnson295189b2012-06-20 16:38:30 -07008629 wpalMutexRelease(&pWDICtx->wptMutex);
Madan Mohan Koyyalamudif244d8f2012-11-29 11:21:05 -08008630 wpalMemoryFree(pSendBuffer);
Jeff Johnsone7245742012-09-05 17:12:55 -07008631 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008632 }
8633
8634 /* Need to fill in the BSS index */
Jeff Johnsone7245742012-09-05 17:12:55 -07008635 halPostAssocReqMsg.postAssocReqParams.configStaParams.bssIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -07008636 pBSSSes->ucBSSIdx;
8637
8638 /*Copy the BSS parameters */
8639 WDI_CopyWDIConfigBSSToHALConfigBSS( &halPostAssocReqMsg.postAssocReqParams.configBssParams,
8640 &pwdiPostAssocParams->wdiBSSParams);
8641
8642 /* Need to fill in the STA index of the peer */
Jeff Johnsone7245742012-09-05 17:12:55 -07008643 if ( WDI_STATUS_SUCCESS !=
Jeff Johnson295189b2012-06-20 16:38:30 -07008644 WDI_STATableFindStaidByAddr(pWDICtx,
8645 pwdiPostAssocParams->wdiBSSParams.wdiSTAContext.macSTA,
Jeff Johnsone7245742012-09-05 17:12:55 -07008646 (wpt_uint8*)&halPostAssocReqMsg.postAssocReqParams.configBssParams.staContext.staIdx))
Jeff Johnson295189b2012-06-20 16:38:30 -07008647 {
8648 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08008649 MAC_ADDRESS_STR
8650 ": This station does not exist in the WDI Station Table",
8651 MAC_ADDR_ARRAY(pwdiPostAssocParams->wdiBSSParams.wdiSTAContext.macSTA));
Jeff Johnson295189b2012-06-20 16:38:30 -07008652 wpalMutexRelease(&pWDICtx->wptMutex);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -08008653 wpalMemoryFree(pSendBuffer);
Jeff Johnsone7245742012-09-05 17:12:55 -07008654 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008655 }
8656
8657 /* Need to fill in the BSS index */
Jeff Johnsone7245742012-09-05 17:12:55 -07008658 halPostAssocReqMsg.postAssocReqParams.configStaParams.bssIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -07008659 pBSSSes->ucBSSIdx;
8660
Jeff Johnsone7245742012-09-05 17:12:55 -07008661
8662 wpalMemoryCopy( pSendBuffer+usDataOffset,
8663 &halPostAssocReqMsg.postAssocReqParams.configStaParams,
8664 sizeof(halPostAssocReqMsg.postAssocReqParams.configStaParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008665
8666 uOffset = sizeof(halPostAssocReqMsg.postAssocReqParams.configStaParams);
8667
Jeff Johnsone7245742012-09-05 17:12:55 -07008668 wpalMemoryCopy( pSendBuffer+usDataOffset + uOffset,
8669 &halPostAssocReqMsg.postAssocReqParams.configBssParams,
8670 sizeof(halPostAssocReqMsg.postAssocReqParams.configBssParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008671
Jeff Johnsone7245742012-09-05 17:12:55 -07008672
Jeff Johnson295189b2012-06-20 16:38:30 -07008673 pWDICtx->wdiReqStatusCB = pwdiPostAssocParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008674 pWDICtx->pReqStatusUserData = pwdiPostAssocParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008675
Jeff Johnsone7245742012-09-05 17:12:55 -07008676
8677 wpalMemoryCopy( &pWDICtx->wdiCachedPostAssocReq,
Jeff Johnson295189b2012-06-20 16:38:30 -07008678 pwdiPostAssocParams,
Jeff Johnsone7245742012-09-05 17:12:55 -07008679 sizeof(pWDICtx->wdiCachedPostAssocReq));
Jeff Johnson295189b2012-06-20 16:38:30 -07008680
8681 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008682 Send Post Assoc Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008683 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008684 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07008685 wdiPostAssocRspCb, pEventData->pUserData, WDI_POST_ASSOC_RESP);
8686
Jeff Johnsone7245742012-09-05 17:12:55 -07008687
Jeff Johnson295189b2012-06-20 16:38:30 -07008688}/*WDI_ProcessPostAssocReq*/
8689
8690/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008691 @brief Process Del STA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07008692 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008693
8694 @param pWDICtx: pointer to the WLAN DAL context
8695 pEventData: pointer to the event information structure
8696
Jeff Johnson295189b2012-06-20 16:38:30 -07008697 @see
8698 @return Result of the function call
8699*/
8700WDI_Status
8701WDI_ProcessDelSTAReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008702(
Jeff Johnson295189b2012-06-20 16:38:30 -07008703 WDI_ControlBlockType* pWDICtx,
8704 WDI_EventInfoType* pEventData
8705)
8706{
8707 WDI_DelSTAReqParamsType* pwdiDelSTAParams;
8708 WDI_DelSTARspCb wdiDelSTARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07008709 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07008710 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008711 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008712 wpt_uint16 usDataOffset = 0;
8713 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07008714 wpt_macAddr macBSSID;
Jeff Johnson295189b2012-06-20 16:38:30 -07008715 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
8716
Jeff Johnsone7245742012-09-05 17:12:55 -07008717 tDeleteStaReqMsg halDelStaReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07008718 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8719
8720 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008721 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008722 -------------------------------------------------------------------------*/
8723 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
8724 ( NULL == pEventData->pCBfnc ))
8725 {
8726 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008727 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008728 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008729 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008730 }
8731
8732 pwdiDelSTAParams = (WDI_DelSTAReqParamsType*)pEventData->pEventData;
8733 wdiDelSTARspCb = (WDI_DelSTARspCb)pEventData->pCBfnc;
8734 /*-------------------------------------------------------------------------
8735 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07008736 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07008737 -------------------------------------------------------------------------*/
8738 wpalMutexAcquire(&pWDICtx->wptMutex);
8739
8740 /*------------------------------------------------------------------------
8741 Find the BSS for which the request is made and identify WDI session
8742 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008743 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
8744 pwdiDelSTAParams->ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07008745 &macBSSID))
8746 {
8747 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08008748 "This station does not exist in the WDI Station Table %d",
8749 pwdiDelSTAParams->ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07008750 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008751 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008752 }
8753
Jeff Johnsone7245742012-09-05 17:12:55 -07008754 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
8755 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07008756 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008757 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
8758 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
8759 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07008760
8761 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008762 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008763 }
8764
8765 /*------------------------------------------------------------------------
8766 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07008767 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07008768 ------------------------------------------------------------------------*/
8769 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
8770 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008771 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8772 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
8773 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07008774
Jeff Johnsone7245742012-09-05 17:12:55 -07008775 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07008776 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008777 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07008778 }
8779
8780 wpalMutexRelease(&pWDICtx->wptMutex);
8781 /*-----------------------------------------------------------------------
8782 Get message buffer
8783 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008784 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_DEL_STA_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008785 sizeof(halDelStaReqMsg.delStaParams),
8786 &pSendBuffer, &usDataOffset, &usSendSize))||
8787 ( usSendSize < (usDataOffset + sizeof(halDelStaReqMsg.delStaParams) )))
8788 {
8789 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08008790 "Unable to get send buffer in start req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07008791 pEventData, pwdiDelSTAParams, wdiDelSTARspCb);
8792 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008793 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008794 }
8795
Jeff Johnsone7245742012-09-05 17:12:55 -07008796 halDelStaReqMsg.delStaParams.staIdx = pwdiDelSTAParams->ucSTAIdx;
8797 wpalMemoryCopy( pSendBuffer+usDataOffset,
8798 &halDelStaReqMsg.delStaParams,
8799 sizeof(halDelStaReqMsg.delStaParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008800
8801 pWDICtx->wdiReqStatusCB = pwdiDelSTAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008802 pWDICtx->pReqStatusUserData = pwdiDelSTAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008803
8804 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008805 Send Del STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008806 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008807 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07008808 wdiDelSTARspCb, pEventData->pUserData, WDI_DEL_STA_RESP);
8809
8810}/*WDI_ProcessDelSTAReq*/
8811
8812
8813/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -07008814 SECURITY REQUEST PROCESSING API
Jeff Johnson295189b2012-06-20 16:38:30 -07008815==========================================================================*/
8816/**
8817 @brief Process Set BSS Key Request function (called when Main FSM
8818 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008819
8820 @param pWDICtx: pointer to the WLAN DAL context
8821 pEventData: pointer to the event information structure
8822
Jeff Johnson295189b2012-06-20 16:38:30 -07008823 @see
8824 @return Result of the function call
8825*/
8826WDI_Status
8827WDI_ProcessSetBssKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008828(
Jeff Johnson295189b2012-06-20 16:38:30 -07008829 WDI_ControlBlockType* pWDICtx,
8830 WDI_EventInfoType* pEventData
8831)
8832{
8833 WDI_SetBSSKeyReqParamsType* pwdiSetBSSKeyParams;
8834 WDI_SetBSSKeyRspCb wdiSetBSSKeyRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07008835 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07008836 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008837 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008838 wpt_uint16 usDataOffset = 0;
8839 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07008840 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07008841 tSetBssKeyReqMsg halSetBssKeyReqMsg = {{0}};
8842 wpt_uint8 keyIndex = 0;
8843
8844 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8845
8846 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008847 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008848 -------------------------------------------------------------------------*/
8849 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
8850 ( NULL == pEventData->pCBfnc ))
8851 {
8852 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008853 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008854 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008855 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008856 }
8857
8858 pwdiSetBSSKeyParams = (WDI_SetBSSKeyReqParamsType*)pEventData->pEventData;
8859 wdiSetBSSKeyRspCb = (WDI_SetBSSKeyRspCb)pEventData->pCBfnc;
8860 /*-------------------------------------------------------------------------
8861 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07008862 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07008863 -------------------------------------------------------------------------*/
8864 wpalMutexAcquire(&pWDICtx->wptMutex);
8865
8866 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008867 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07008868 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008869 ucCurrentBSSSesIdx = WDI_FindAssocSessionByBSSIdx( pWDICtx,
8870 pwdiSetBSSKeyParams->wdiBSSKeyInfo.ucBssIdx,
8871 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07008872
Jeff Johnsone7245742012-09-05 17:12:55 -07008873 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07008874 {
8875 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07008876 "%s: Association sequence for this BSS does not yet exist. ucBssIdx %d",
8877 __func__, pwdiSetBSSKeyParams->wdiBSSKeyInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07008878
8879 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008880 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008881 }
8882
8883 /*------------------------------------------------------------------------
8884 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07008885 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07008886 ------------------------------------------------------------------------*/
8887 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
8888 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008889 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8890 "%s: Association sequence for this BSS exists but currently queued. ucBssIdx %d",
8891 __func__, pwdiSetBSSKeyParams->wdiBSSKeyInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07008892
Jeff Johnsone7245742012-09-05 17:12:55 -07008893 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07008894 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008895 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07008896 }
8897
8898
8899 wpalMutexRelease(&pWDICtx->wptMutex);
8900 /*-----------------------------------------------------------------------
8901 Get message buffer
8902 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008903 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_BSS_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008904 sizeof(halSetBssKeyReqMsg.setBssKeyParams),
8905 &pSendBuffer, &usDataOffset, &usSendSize))||
8906 ( usSendSize < (usDataOffset + sizeof(halSetBssKeyReqMsg.setBssKeyParams) )))
8907 {
8908 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08008909 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07008910 pEventData, pwdiSetBSSKeyParams, wdiSetBSSKeyRspCb);
8911 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008912 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008913 }
8914
8915 /*-----------------------------------------------------------------------
8916 Copy the Key parameters into the HAL message
8917 -----------------------------------------------------------------------*/
8918
Jeff Johnsone7245742012-09-05 17:12:55 -07008919 halSetBssKeyReqMsg.setBssKeyParams.bssIdx = ucCurrentBSSSesIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -07008920
Jeff Johnsone7245742012-09-05 17:12:55 -07008921 halSetBssKeyReqMsg.setBssKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -07008922 WDI_2_HAL_ENC_TYPE (pwdiSetBSSKeyParams->wdiBSSKeyInfo.wdiEncType);
8923
Jeff Johnsone7245742012-09-05 17:12:55 -07008924 halSetBssKeyReqMsg.setBssKeyParams.numKeys =
Jeff Johnson295189b2012-06-20 16:38:30 -07008925 pwdiSetBSSKeyParams->wdiBSSKeyInfo.ucNumKeys;
8926
8927 for(keyIndex = 0; keyIndex < pwdiSetBSSKeyParams->wdiBSSKeyInfo.ucNumKeys ;
8928 keyIndex++)
8929 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008930 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -07008931 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].keyId;
8932 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].unicast =
8933 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].unicast;
8934 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].keyDirection =
8935 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].keyDirection;
8936 wpalMemoryCopy(halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].keyRsc,
Jeff Johnsone7245742012-09-05 17:12:55 -07008937 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].keyRsc,
Jeff Johnson295189b2012-06-20 16:38:30 -07008938 WDI_MAX_KEY_RSC_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -07008939 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].paeRole =
Jeff Johnson295189b2012-06-20 16:38:30 -07008940 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].paeRole;
Jeff Johnsone7245742012-09-05 17:12:55 -07008941 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].keyLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07008942 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].keyLength;
8943 wpalMemoryCopy(halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].key,
Jeff Johnsone7245742012-09-05 17:12:55 -07008944 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].key,
Jeff Johnson295189b2012-06-20 16:38:30 -07008945 WDI_MAX_KEY_LENGTH);
8946 }
Jeff Johnsone7245742012-09-05 17:12:55 -07008947
8948 wpalMemoryCopy( pSendBuffer+usDataOffset,
8949 &halSetBssKeyReqMsg.setBssKeyParams,
8950 sizeof(halSetBssKeyReqMsg.setBssKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008951
8952 pWDICtx->wdiReqStatusCB = pwdiSetBSSKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008953 pWDICtx->pReqStatusUserData = pwdiSetBSSKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008954
8955 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008956 Send Set BSS Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008957 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008958 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
8959 wdiSetBSSKeyRspCb, pEventData->pUserData,
8960 WDI_SET_BSS_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07008961
8962}/*WDI_ProcessSetBssKeyReq*/
8963
8964/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008965 @brief Process Remove BSS Key Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -07008966 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008967
8968 @param pWDICtx: pointer to the WLAN DAL context
8969 pEventData: pointer to the event information structure
8970
Jeff Johnson295189b2012-06-20 16:38:30 -07008971 @see
8972 @return Result of the function call
8973*/
8974WDI_Status
8975WDI_ProcessRemoveBssKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008976(
Jeff Johnson295189b2012-06-20 16:38:30 -07008977 WDI_ControlBlockType* pWDICtx,
8978 WDI_EventInfoType* pEventData
8979)
8980{
8981 WDI_RemoveBSSKeyReqParamsType* pwdiRemoveBSSKeyParams;
8982 WDI_RemoveBSSKeyRspCb wdiRemoveBSSKeyRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07008983 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07008984 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008985 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008986 wpt_uint16 usDataOffset = 0;
8987 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07008988 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07008989 tRemoveBssKeyReqMsg halRemoveBssKeyReqMsg = {{0}};
8990 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8991
8992 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008993 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008994 -------------------------------------------------------------------------*/
8995 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
8996 ( NULL == pEventData->pCBfnc ))
8997 {
8998 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008999 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009000 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009001 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009002 }
9003
9004 pwdiRemoveBSSKeyParams = (WDI_RemoveBSSKeyReqParamsType*)pEventData->pEventData;
9005 wdiRemoveBSSKeyRspCb = (WDI_RemoveBSSKeyRspCb)pEventData->pCBfnc;
9006 /*-------------------------------------------------------------------------
9007 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009008 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009009 -------------------------------------------------------------------------*/
9010 wpalMutexAcquire(&pWDICtx->wptMutex);
9011
9012 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009013 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07009014 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009015 ucCurrentBSSSesIdx = WDI_FindAssocSessionByBSSIdx( pWDICtx,
9016 pwdiRemoveBSSKeyParams->wdiKeyInfo.ucBssIdx,
9017 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07009018
Jeff Johnsone7245742012-09-05 17:12:55 -07009019 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009020 {
9021 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07009022 "%s: Association sequence for this BSS does not yet exist. ucBssIdx %d",
9023 __func__, pwdiRemoveBSSKeyParams->wdiKeyInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07009024
9025 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009026 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009027 }
9028
9029 /*------------------------------------------------------------------------
9030 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009031 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009032 ------------------------------------------------------------------------*/
9033 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9034 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009035 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9036 "%s: Association sequence for this BSS exists but currently queued. ucBssIdx %d",
9037 __func__, pwdiRemoveBSSKeyParams->wdiKeyInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07009038
Jeff Johnsone7245742012-09-05 17:12:55 -07009039 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009040 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009041 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009042 }
9043
9044
9045 wpalMutexRelease(&pWDICtx->wptMutex);
9046
9047 /*-----------------------------------------------------------------------
9048 Get message buffer
9049 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009050 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_RMV_BSS_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009051 sizeof(halRemoveBssKeyReqMsg.removeBssKeyParams),
9052 &pSendBuffer, &usDataOffset, &usSendSize))||
9053 ( usSendSize < (usDataOffset + sizeof(halRemoveBssKeyReqMsg.removeBssKeyParams) )))
9054 {
9055 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009056 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07009057 pEventData, pwdiRemoveBSSKeyParams, wdiRemoveBSSKeyRspCb);
9058 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009059 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009060 }
9061 /*-----------------------------------------------------------------------
9062 Copy the Key parameters into the HAL message
9063 -----------------------------------------------------------------------*/
9064 halRemoveBssKeyReqMsg.removeBssKeyParams.bssIdx = ucCurrentBSSSesIdx;
9065
Jeff Johnsone7245742012-09-05 17:12:55 -07009066 halRemoveBssKeyReqMsg.removeBssKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -07009067 WDI_2_HAL_ENC_TYPE (pwdiRemoveBSSKeyParams->wdiKeyInfo.wdiEncType);
9068
9069 halRemoveBssKeyReqMsg.removeBssKeyParams.keyId = pwdiRemoveBSSKeyParams->wdiKeyInfo.ucKeyId;
9070
Jeff Johnsone7245742012-09-05 17:12:55 -07009071 halRemoveBssKeyReqMsg.removeBssKeyParams.wepType =
Jeff Johnson295189b2012-06-20 16:38:30 -07009072 WDI_2_HAL_WEP_TYPE(pwdiRemoveBSSKeyParams->wdiKeyInfo.wdiWEPType);
9073
Jeff Johnsone7245742012-09-05 17:12:55 -07009074 wpalMemoryCopy( pSendBuffer+usDataOffset,
9075 &halRemoveBssKeyReqMsg.removeBssKeyParams,
9076 sizeof(halRemoveBssKeyReqMsg.removeBssKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07009077
9078 pWDICtx->wdiReqStatusCB = pwdiRemoveBSSKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009079 pWDICtx->pReqStatusUserData = pwdiRemoveBSSKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009080
9081 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009082 Send Remove BSS Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009083 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009084 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07009085 wdiRemoveBSSKeyRspCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -07009086 WDI_RMV_BSS_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009087}/*WDI_ProcessRemoveBssKeyReq*/
9088
9089/**
Jeff Johnsone7245742012-09-05 17:12:55 -07009090 @brief Process Set STA KeyRequest function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07009091 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009092
9093 @param pWDICtx: pointer to the WLAN DAL context
9094 pEventData: pointer to the event information structure
9095
Jeff Johnson295189b2012-06-20 16:38:30 -07009096 @see
9097 @return Result of the function call
9098*/
9099WDI_Status
9100WDI_ProcessSetStaKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009101(
Jeff Johnson295189b2012-06-20 16:38:30 -07009102 WDI_ControlBlockType* pWDICtx,
9103 WDI_EventInfoType* pEventData
9104)
9105{
9106 WDI_SetSTAKeyReqParamsType* pwdiSetSTAKeyParams;
9107 WDI_SetSTAKeyRspCb wdiSetSTAKeyRspCb;
9108 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009109 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009110 wpt_uint16 usDataOffset = 0;
9111 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009112 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07009113 wpt_macAddr macBSSID;
Jeff Johnsone7245742012-09-05 17:12:55 -07009114 wpt_uint8 ucCurrentBSSSesIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -07009115 tSetStaKeyReqMsg halSetStaKeyReqMsg = {{0}};
9116 wpt_uint8 keyIndex = 0;
9117
9118 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9119
9120 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009121 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009122 -------------------------------------------------------------------------*/
9123 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9124 ( NULL == pEventData->pCBfnc ))
9125 {
9126 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009127 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009128 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009129 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009130 }
9131
9132 pwdiSetSTAKeyParams = (WDI_SetSTAKeyReqParamsType*)pEventData->pEventData;
9133 wdiSetSTAKeyRspCb = (WDI_SetSTAKeyRspCb)pEventData->pCBfnc;
9134 /*-------------------------------------------------------------------------
9135 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009136 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009137 -------------------------------------------------------------------------*/
9138 wpalMutexAcquire(&pWDICtx->wptMutex);
9139
9140 /*------------------------------------------------------------------------
9141 Find the BSS for which the request is made and identify WDI session
9142 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009143 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
9144 pwdiSetSTAKeyParams->wdiKeyInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07009145 &macBSSID))
9146 {
9147 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009148 "This station does not exist in the WDI Station Table %d",
9149 pwdiSetSTAKeyParams->wdiKeyInfo.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07009150 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009151 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009152 }
9153
Jeff Johnsone7245742012-09-05 17:12:55 -07009154 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
9155 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009156 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009157 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
9158 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
9159 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009160
9161 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009162 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009163 }
Jeff Johnsone7245742012-09-05 17:12:55 -07009164
Jeff Johnson295189b2012-06-20 16:38:30 -07009165 /*------------------------------------------------------------------------
9166 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009167 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009168 ------------------------------------------------------------------------*/
9169 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9170 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009171 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9172 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
9173 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009174
Jeff Johnsone7245742012-09-05 17:12:55 -07009175 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009176 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009177 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009178 }
9179
9180
9181 wpalMutexRelease(&pWDICtx->wptMutex);
9182 /*-----------------------------------------------------------------------
9183 Get message buffer
9184 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009185 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_STA_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009186 sizeof(halSetStaKeyReqMsg.setStaKeyParams),
9187 &pSendBuffer, &usDataOffset, &usSendSize))||
9188 ( usSendSize < (usDataOffset + sizeof(halSetStaKeyReqMsg.setStaKeyParams) )))
9189 {
9190 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009191 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07009192 pEventData, pwdiSetSTAKeyParams, wdiSetSTAKeyRspCb);
9193 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009194 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009195 }
9196 /*-----------------------------------------------------------------------
9197 Copy the STA Key parameters into the HAL message
9198 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009199 halSetStaKeyReqMsg.setStaKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -07009200 WDI_2_HAL_ENC_TYPE (pwdiSetSTAKeyParams->wdiKeyInfo.wdiEncType);
9201
Jeff Johnsone7245742012-09-05 17:12:55 -07009202 halSetStaKeyReqMsg.setStaKeyParams.wepType =
Jeff Johnson295189b2012-06-20 16:38:30 -07009203 WDI_2_HAL_WEP_TYPE (pwdiSetSTAKeyParams->wdiKeyInfo.wdiWEPType );
9204
9205 halSetStaKeyReqMsg.setStaKeyParams.staIdx = pwdiSetSTAKeyParams->wdiKeyInfo.ucSTAIdx;
9206
9207 halSetStaKeyReqMsg.setStaKeyParams.defWEPIdx = pwdiSetSTAKeyParams->wdiKeyInfo.ucDefWEPIdx;
9208
9209 halSetStaKeyReqMsg.setStaKeyParams.singleTidRc = pwdiSetSTAKeyParams->wdiKeyInfo.ucSingleTidRc;
9210
Jeff Johnson295189b2012-06-20 16:38:30 -07009211 for(keyIndex = 0; keyIndex < pwdiSetSTAKeyParams->wdiKeyInfo.ucNumKeys ;
9212 keyIndex++)
9213 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009214 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -07009215 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyId;
9216 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].unicast =
9217 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].unicast;
9218 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyDirection =
9219 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyDirection;
9220 wpalMemoryCopy(halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyRsc,
Jeff Johnsone7245742012-09-05 17:12:55 -07009221 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyRsc,
Jeff Johnson295189b2012-06-20 16:38:30 -07009222 WDI_MAX_KEY_RSC_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -07009223 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].paeRole =
Jeff Johnson295189b2012-06-20 16:38:30 -07009224 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].paeRole;
Jeff Johnsone7245742012-09-05 17:12:55 -07009225 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07009226 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyLength;
9227 wpalMemoryCopy(halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].key,
Jeff Johnsone7245742012-09-05 17:12:55 -07009228 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].key,
Jeff Johnson295189b2012-06-20 16:38:30 -07009229 WDI_MAX_KEY_LENGTH);
9230 }
Jeff Johnson295189b2012-06-20 16:38:30 -07009231
Jeff Johnsone7245742012-09-05 17:12:55 -07009232 wpalMemoryCopy( pSendBuffer+usDataOffset,
9233 &halSetStaKeyReqMsg.setStaKeyParams,
9234 sizeof(halSetStaKeyReqMsg.setStaKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07009235
9236 pWDICtx->wdiReqStatusCB = pwdiSetSTAKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009237 pWDICtx->pReqStatusUserData = pwdiSetSTAKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009238
9239 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009240 Send Set STA Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009241 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009242 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
9243 wdiSetSTAKeyRspCb, pEventData->pUserData,
9244 WDI_SET_STA_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009245
9246}/*WDI_ProcessSetSTAKeyReq*/
9247
9248/**
Jeff Johnsone7245742012-09-05 17:12:55 -07009249 @brief Process Remove STA Key Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -07009250 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009251
9252 @param pWDICtx: pointer to the WLAN DAL context
9253 pEventData: pointer to the event information structure
9254
Jeff Johnson295189b2012-06-20 16:38:30 -07009255 @see
9256 @return Result of the function call
9257*/
9258WDI_Status
9259WDI_ProcessRemoveStaKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009260(
Jeff Johnson295189b2012-06-20 16:38:30 -07009261 WDI_ControlBlockType* pWDICtx,
9262 WDI_EventInfoType* pEventData
9263)
9264{
9265 WDI_RemoveSTAKeyReqParamsType* pwdiRemoveSTAKeyParams;
9266 WDI_RemoveSTAKeyRspCb wdiRemoveSTAKeyRspCb;
9267 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009268 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009269 wpt_uint16 usDataOffset = 0;
9270 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009271 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07009272 wpt_macAddr macBSSID;
9273 wpt_uint8 ucCurrentBSSSesIdx;
9274 tRemoveStaKeyReqMsg halRemoveStaKeyReqMsg = {{0}};
9275 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9276
9277 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009278 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009279 -------------------------------------------------------------------------*/
9280 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9281 ( NULL == pEventData->pCBfnc ))
9282 {
9283 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009284 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009285 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009286 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009287 }
9288
9289 pwdiRemoveSTAKeyParams = (WDI_RemoveSTAKeyReqParamsType*)pEventData->pEventData;
9290 wdiRemoveSTAKeyRspCb = (WDI_RemoveSTAKeyRspCb)pEventData->pCBfnc;
9291 /*-------------------------------------------------------------------------
9292 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009293 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009294 -------------------------------------------------------------------------*/
9295 wpalMutexAcquire(&pWDICtx->wptMutex);
9296
9297 /*------------------------------------------------------------------------
9298 Find the BSS for which the request is made and identify WDI session
9299 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009300 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
9301 pwdiRemoveSTAKeyParams->wdiKeyInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07009302 &macBSSID))
9303 {
9304 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009305 "This station does not exist in the WDI Station Table %d",
9306 pwdiRemoveSTAKeyParams->wdiKeyInfo.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07009307 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009308 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009309 }
9310
Jeff Johnsone7245742012-09-05 17:12:55 -07009311 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
9312 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009313 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009314 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
9315 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
9316 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009317
9318 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009319 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009320 }
Jeff Johnsone7245742012-09-05 17:12:55 -07009321
Jeff Johnson295189b2012-06-20 16:38:30 -07009322 /*------------------------------------------------------------------------
9323 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009324 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009325 ------------------------------------------------------------------------*/
9326 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9327 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009328 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9329 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
9330 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009331
Jeff Johnsone7245742012-09-05 17:12:55 -07009332 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009333 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009334 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009335 }
9336
9337
9338
9339 wpalMutexRelease(&pWDICtx->wptMutex);
9340 /*-----------------------------------------------------------------------
9341 Get message buffer
9342 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009343 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_RMV_STA_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009344 sizeof(halRemoveStaKeyReqMsg.removeStaKeyParams),
9345 &pSendBuffer, &usDataOffset, &usSendSize))||
9346 ( usSendSize < (usDataOffset + sizeof(halRemoveStaKeyReqMsg.removeStaKeyParams) )))
9347 {
9348 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009349 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07009350 pEventData, pwdiRemoveSTAKeyParams, wdiRemoveSTAKeyRspCb);
9351 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009352 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009353 }
9354
9355 /*-----------------------------------------------------------------------
9356 Copy the Key parameters into the HAL message
9357 -----------------------------------------------------------------------*/
9358
Jeff Johnsone7245742012-09-05 17:12:55 -07009359 halRemoveStaKeyReqMsg.removeStaKeyParams.staIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -07009360 pwdiRemoveSTAKeyParams->wdiKeyInfo.ucSTAIdx;
9361
Jeff Johnsone7245742012-09-05 17:12:55 -07009362 halRemoveStaKeyReqMsg.removeStaKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -07009363 WDI_2_HAL_ENC_TYPE (pwdiRemoveSTAKeyParams->wdiKeyInfo.wdiEncType);
9364
Jeff Johnsone7245742012-09-05 17:12:55 -07009365 halRemoveStaKeyReqMsg.removeStaKeyParams.keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -07009366 pwdiRemoveSTAKeyParams->wdiKeyInfo.ucKeyId;
9367
Jeff Johnsone7245742012-09-05 17:12:55 -07009368 halRemoveStaKeyReqMsg.removeStaKeyParams.unicast =
Jeff Johnson295189b2012-06-20 16:38:30 -07009369 pwdiRemoveSTAKeyParams->wdiKeyInfo.ucUnicast;
9370
Jeff Johnsone7245742012-09-05 17:12:55 -07009371 wpalMemoryCopy( pSendBuffer+usDataOffset,
9372 &halRemoveStaKeyReqMsg.removeStaKeyParams,
9373 sizeof(halRemoveStaKeyReqMsg.removeStaKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07009374
9375 pWDICtx->wdiReqStatusCB = pwdiRemoveSTAKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009376 pWDICtx->pReqStatusUserData = pwdiRemoveSTAKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009377
9378 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009379 Send Remove STA Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009380 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009381 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07009382 wdiRemoveSTAKeyRspCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -07009383 WDI_RMV_STA_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009384
9385}/*WDI_ProcessRemoveSTAKeyReq*/
9386
9387/**
Jeff Johnsone7245742012-09-05 17:12:55 -07009388 @brief Process Set STA KeyRequest function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07009389 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009390
9391 @param pWDICtx: pointer to the WLAN DAL context
9392 pEventData: pointer to the event information structure
9393
Jeff Johnson295189b2012-06-20 16:38:30 -07009394 @see
9395 @return Result of the function call
9396*/
9397WDI_Status
9398WDI_ProcessSetStaBcastKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009399(
Jeff Johnson295189b2012-06-20 16:38:30 -07009400 WDI_ControlBlockType* pWDICtx,
9401 WDI_EventInfoType* pEventData
9402)
9403{
9404 WDI_SetSTAKeyReqParamsType* pwdiSetSTAKeyParams;
9405 WDI_SetSTAKeyRspCb wdiSetSTAKeyRspCb;
9406 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009407 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009408 wpt_uint16 usDataOffset = 0;
9409 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009410 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07009411 wpt_macAddr macBSSID;
Jeff Johnsone7245742012-09-05 17:12:55 -07009412 wpt_uint8 ucCurrentBSSSesIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -07009413 tSetStaKeyReqMsg halSetStaKeyReqMsg = {{0}};
9414 wpt_uint8 keyIndex = 0;
9415
9416 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9417
9418 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009419 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009420 -------------------------------------------------------------------------*/
9421 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9422 ( NULL == pEventData->pCBfnc ))
9423 {
9424 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009425 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009426 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009427 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009428 }
9429
9430 pwdiSetSTAKeyParams = (WDI_SetSTAKeyReqParamsType*)pEventData->pEventData;
9431 wdiSetSTAKeyRspCb = (WDI_SetSTAKeyRspCb)pEventData->pCBfnc;
9432 /*-------------------------------------------------------------------------
9433 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009434 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009435 -------------------------------------------------------------------------*/
9436 wpalMutexAcquire(&pWDICtx->wptMutex);
9437
9438 /*------------------------------------------------------------------------
9439 Find the BSS for which the request is made and identify WDI session
9440 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009441 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
9442 pwdiSetSTAKeyParams->wdiKeyInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07009443 &macBSSID))
9444 {
9445 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009446 "This station does not exist in the WDI Station Table %d",
9447 pwdiSetSTAKeyParams->wdiKeyInfo.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07009448 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009449 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009450 }
9451
Jeff Johnsone7245742012-09-05 17:12:55 -07009452 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
9453 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009454 {
9455 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009456 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
Jeff Johnsone7245742012-09-05 17:12:55 -07009457 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009458
9459 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009460 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009461 }
Jeff Johnsone7245742012-09-05 17:12:55 -07009462
Jeff Johnson295189b2012-06-20 16:38:30 -07009463 /*------------------------------------------------------------------------
9464 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009465 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009466 ------------------------------------------------------------------------*/
9467 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9468 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009469 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9470 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
9471 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009472
Jeff Johnsone7245742012-09-05 17:12:55 -07009473 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009474 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009475 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009476 }
9477
9478
9479 wpalMutexRelease(&pWDICtx->wptMutex);
9480 /*-----------------------------------------------------------------------
9481 Get message buffer
9482 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009483 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_STA_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009484 sizeof(halSetStaKeyReqMsg.setStaKeyParams),
9485 &pSendBuffer, &usDataOffset, &usSendSize))||
9486 ( usSendSize < (usDataOffset + sizeof(halSetStaKeyReqMsg.setStaKeyParams) )))
9487 {
9488 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009489 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07009490 pEventData, pwdiSetSTAKeyParams, wdiSetSTAKeyRspCb);
9491 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009492 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009493 }
9494 /*-----------------------------------------------------------------------
9495 Copy the STA Key parameters into the HAL message
9496 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009497 halSetStaKeyReqMsg.setStaKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -07009498 WDI_2_HAL_ENC_TYPE (pwdiSetSTAKeyParams->wdiKeyInfo.wdiEncType);
9499
Jeff Johnsone7245742012-09-05 17:12:55 -07009500 halSetStaKeyReqMsg.setStaKeyParams.wepType =
Jeff Johnson295189b2012-06-20 16:38:30 -07009501 WDI_2_HAL_WEP_TYPE (pwdiSetSTAKeyParams->wdiKeyInfo.wdiWEPType );
9502
9503 halSetStaKeyReqMsg.setStaKeyParams.staIdx = pwdiSetSTAKeyParams->wdiKeyInfo.ucSTAIdx;
9504
9505 halSetStaKeyReqMsg.setStaKeyParams.defWEPIdx = pwdiSetSTAKeyParams->wdiKeyInfo.ucDefWEPIdx;
9506
9507 halSetStaKeyReqMsg.setStaKeyParams.singleTidRc = pwdiSetSTAKeyParams->wdiKeyInfo.ucSingleTidRc;
9508
Jeff Johnson295189b2012-06-20 16:38:30 -07009509 for(keyIndex = 0; keyIndex < pwdiSetSTAKeyParams->wdiKeyInfo.ucNumKeys ;
9510 keyIndex++)
9511 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009512 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -07009513 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyId;
9514 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].unicast =
9515 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].unicast;
9516 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyDirection =
9517 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyDirection;
9518 wpalMemoryCopy(halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyRsc,
Jeff Johnsone7245742012-09-05 17:12:55 -07009519 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyRsc,
Jeff Johnson295189b2012-06-20 16:38:30 -07009520 WDI_MAX_KEY_RSC_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -07009521 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].paeRole =
Jeff Johnson295189b2012-06-20 16:38:30 -07009522 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].paeRole;
Jeff Johnsone7245742012-09-05 17:12:55 -07009523 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07009524 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyLength;
9525 wpalMemoryCopy(halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].key,
Jeff Johnsone7245742012-09-05 17:12:55 -07009526 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].key,
Jeff Johnson295189b2012-06-20 16:38:30 -07009527 WDI_MAX_KEY_LENGTH);
9528 }
Jeff Johnson295189b2012-06-20 16:38:30 -07009529
Jeff Johnsone7245742012-09-05 17:12:55 -07009530 wpalMemoryCopy( pSendBuffer+usDataOffset,
9531 &halSetStaKeyReqMsg.setStaKeyParams,
9532 sizeof(halSetStaKeyReqMsg.setStaKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07009533
9534 pWDICtx->wdiReqStatusCB = pwdiSetSTAKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009535 pWDICtx->pReqStatusUserData = pwdiSetSTAKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009536
9537 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009538 Send Set STA Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009539 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009540 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
9541 wdiSetSTAKeyRspCb, pEventData->pUserData,
9542 WDI_SET_STA_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009543
9544}/*WDI_ProcessSetSTABcastKeyReq*/
9545
9546/**
Jeff Johnsone7245742012-09-05 17:12:55 -07009547 @brief Process Remove STA Key Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -07009548 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009549
9550 @param pWDICtx: pointer to the WLAN DAL context
9551 pEventData: pointer to the event information structure
9552
Jeff Johnson295189b2012-06-20 16:38:30 -07009553 @see
9554 @return Result of the function call
9555*/
9556WDI_Status
9557WDI_ProcessRemoveStaBcastKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009558(
Jeff Johnson295189b2012-06-20 16:38:30 -07009559 WDI_ControlBlockType* pWDICtx,
9560 WDI_EventInfoType* pEventData
9561)
9562{
9563 WDI_RemoveSTAKeyReqParamsType* pwdiRemoveSTABcastKeyParams;
9564 WDI_RemoveSTAKeyRspCb wdiRemoveSTAKeyRspCb;
9565 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009566 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009567 wpt_uint16 usDataOffset = 0;
9568 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009569 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07009570 wpt_macAddr macBSSID;
9571 wpt_uint8 ucCurrentBSSSesIdx;
9572 tRemoveStaKeyReqMsg halRemoveStaBcastKeyReqMsg = {{0}};
9573 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9574
9575 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009576 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009577 -------------------------------------------------------------------------*/
9578 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9579 ( NULL == pEventData->pCBfnc ))
9580 {
9581 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009582 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009583 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009584 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009585 }
9586
9587 pwdiRemoveSTABcastKeyParams = (WDI_RemoveSTAKeyReqParamsType*)pEventData->pEventData;
9588 wdiRemoveSTAKeyRspCb = (WDI_RemoveSTAKeyRspCb)pEventData->pCBfnc;
9589 /*-------------------------------------------------------------------------
9590 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009591 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009592 -------------------------------------------------------------------------*/
9593 wpalMutexAcquire(&pWDICtx->wptMutex);
9594
9595 /*------------------------------------------------------------------------
9596 Find the BSS for which the request is made and identify WDI session
9597 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009598 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
9599 pwdiRemoveSTABcastKeyParams->wdiKeyInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07009600 &macBSSID))
9601 {
9602 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009603 "This station does not exist in the WDI Station Table %d",
9604 pwdiRemoveSTABcastKeyParams->wdiKeyInfo.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07009605 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009606 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009607 }
9608
Jeff Johnsone7245742012-09-05 17:12:55 -07009609 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
9610 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009611 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009612 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
9613 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
9614 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009615
9616 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009617 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009618 }
Jeff Johnsone7245742012-09-05 17:12:55 -07009619
Jeff Johnson295189b2012-06-20 16:38:30 -07009620 /*------------------------------------------------------------------------
9621 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009622 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009623 ------------------------------------------------------------------------*/
9624 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9625 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009626 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9627 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
9628 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009629
Jeff Johnsone7245742012-09-05 17:12:55 -07009630 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009631 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009632 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009633 }
9634
9635
9636
9637 wpalMutexRelease(&pWDICtx->wptMutex);
9638 /*-----------------------------------------------------------------------
9639 Get message buffer
9640 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009641 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_RMV_STA_BCAST_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009642 sizeof(halRemoveStaBcastKeyReqMsg.removeStaKeyParams),
9643 &pSendBuffer, &usDataOffset, &usSendSize))||
9644 ( usSendSize < (usDataOffset + sizeof(halRemoveStaBcastKeyReqMsg.removeStaKeyParams) )))
9645 {
9646 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009647 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07009648 pEventData, pwdiRemoveSTABcastKeyParams, wdiRemoveSTAKeyRspCb);
9649 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009650 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009651 }
9652
9653 /*-----------------------------------------------------------------------
9654 Copy the Key parameters into the HAL message
9655 -----------------------------------------------------------------------*/
9656
Jeff Johnsone7245742012-09-05 17:12:55 -07009657 halRemoveStaBcastKeyReqMsg.removeStaKeyParams.staIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -07009658 pwdiRemoveSTABcastKeyParams->wdiKeyInfo.ucSTAIdx;
9659
Jeff Johnsone7245742012-09-05 17:12:55 -07009660 halRemoveStaBcastKeyReqMsg.removeStaKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -07009661 WDI_2_HAL_ENC_TYPE (pwdiRemoveSTABcastKeyParams->wdiKeyInfo.wdiEncType);
9662
Jeff Johnsone7245742012-09-05 17:12:55 -07009663 halRemoveStaBcastKeyReqMsg.removeStaKeyParams.keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -07009664 pwdiRemoveSTABcastKeyParams->wdiKeyInfo.ucKeyId;
9665
Jeff Johnsone7245742012-09-05 17:12:55 -07009666 halRemoveStaBcastKeyReqMsg.removeStaKeyParams.unicast =
Jeff Johnson295189b2012-06-20 16:38:30 -07009667 pwdiRemoveSTABcastKeyParams->wdiKeyInfo.ucUnicast;
9668
Jeff Johnsone7245742012-09-05 17:12:55 -07009669 wpalMemoryCopy( pSendBuffer+usDataOffset,
9670 &halRemoveStaBcastKeyReqMsg.removeStaKeyParams,
9671 sizeof(halRemoveStaBcastKeyReqMsg.removeStaKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07009672
9673 pWDICtx->wdiReqStatusCB = pwdiRemoveSTABcastKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009674 pWDICtx->pReqStatusUserData = pwdiRemoveSTABcastKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009675
9676 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009677 Send Remove STA Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009678 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009679 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07009680 wdiRemoveSTAKeyRspCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -07009681 WDI_RMV_STA_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009682
9683}/*WDI_ProcessRemoveSTABcastKeyReq*/
9684
9685/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -07009686 QOS and BA PROCESSING REQUEST API
Jeff Johnson295189b2012-06-20 16:38:30 -07009687==========================================================================*/
9688/**
9689 @brief Process Add TSpec Request function (called when Main FSM
9690 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009691
9692 @param pWDICtx: pointer to the WLAN DAL context
9693 pEventData: pointer to the event information structure
9694
Jeff Johnson295189b2012-06-20 16:38:30 -07009695 @see
9696 @return Result of the function call
9697*/
9698WDI_Status
9699WDI_ProcessAddTSpecReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009700(
Jeff Johnson295189b2012-06-20 16:38:30 -07009701 WDI_ControlBlockType* pWDICtx,
9702 WDI_EventInfoType* pEventData
9703)
9704{
9705 WDI_AddTSReqParamsType* pwdiAddTSParams;
9706 WDI_AddTsRspCb wdiAddTSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07009707 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07009708 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009709 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009710 wpt_uint16 usDataOffset = 0;
9711 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009712 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07009713 wpt_macAddr macBSSID;
9714 tAddTsParams halAddTsParams = {0};
Jeff Johnsone7245742012-09-05 17:12:55 -07009715
Jeff Johnson295189b2012-06-20 16:38:30 -07009716 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9717
9718 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009719 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009720 -------------------------------------------------------------------------*/
9721 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9722 ( NULL == pEventData->pCBfnc ))
9723 {
9724 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009725 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009726 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009727 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009728 }
9729
9730 pwdiAddTSParams = (WDI_AddTSReqParamsType*)pEventData->pEventData;
9731 wdiAddTSRspCb = (WDI_AddTsRspCb)pEventData->pCBfnc;
9732 /*-------------------------------------------------------------------------
9733 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009734 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009735 -------------------------------------------------------------------------*/
9736 wpalMutexAcquire(&pWDICtx->wptMutex);
9737
9738 /*------------------------------------------------------------------------
9739 Find the BSS for which the request is made and identify WDI session
9740 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009741 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
9742 pwdiAddTSParams->wdiTsInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07009743 &macBSSID))
9744 {
9745 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009746 "This station does not exist in the WDI Station Table %d",
9747 pwdiAddTSParams->wdiTsInfo.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07009748 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009749 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009750 }
9751
Jeff Johnsone7245742012-09-05 17:12:55 -07009752 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
9753 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009754 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009755 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
9756 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
9757 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009758
9759 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009760 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009761 }
Jeff Johnsone7245742012-09-05 17:12:55 -07009762
Jeff Johnson295189b2012-06-20 16:38:30 -07009763 /*------------------------------------------------------------------------
9764 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009765 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009766 ------------------------------------------------------------------------*/
9767 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9768 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009769 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9770 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
9771 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009772
Jeff Johnsone7245742012-09-05 17:12:55 -07009773 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009774 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009775 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009776 }
9777
9778 wpalMutexRelease(&pWDICtx->wptMutex);
9779 /*-----------------------------------------------------------------------
9780 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -07009781 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -07009782 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009783 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ADD_TS_REQ,
9784 sizeof(halAddTsParams),
9785 &pSendBuffer, &usDataOffset,
Jeff Johnson295189b2012-06-20 16:38:30 -07009786 &usSendSize))||
9787 ( usSendSize < (usDataOffset + sizeof(halAddTsParams) )))
9788 {
9789 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009790 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07009791 pEventData, pwdiAddTSParams, wdiAddTSRspCb);
9792 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009793 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009794 }
9795
9796 halAddTsParams.staIdx = pwdiAddTSParams->wdiTsInfo.ucSTAIdx;
9797 halAddTsParams.tspecIdx = pwdiAddTSParams->wdiTsInfo.ucTspecIdx;
9798
9799 //TSPEC IE
9800 halAddTsParams.tspec.type = pwdiAddTSParams->wdiTsInfo.wdiTspecIE.ucType;
9801 halAddTsParams.tspec.length = pwdiAddTSParams->wdiTsInfo.wdiTspecIE.ucLength;
Jeff Johnsone7245742012-09-05 17:12:55 -07009802 halAddTsParams.tspec.nomMsduSz =
Jeff Johnson295189b2012-06-20 16:38:30 -07009803 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.usNomMsduSz;
Jeff Johnsone7245742012-09-05 17:12:55 -07009804 halAddTsParams.tspec.maxMsduSz =
Jeff Johnson295189b2012-06-20 16:38:30 -07009805 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.usMaxMsduSz;
Jeff Johnsone7245742012-09-05 17:12:55 -07009806 halAddTsParams.tspec.minSvcInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -07009807 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMinSvcInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -07009808 halAddTsParams.tspec.maxSvcInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -07009809 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMaxSvcInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -07009810 halAddTsParams.tspec.inactInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -07009811 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uInactInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -07009812 halAddTsParams.tspec.suspendInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -07009813 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uSuspendInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -07009814 halAddTsParams.tspec.svcStartTime =
Jeff Johnson295189b2012-06-20 16:38:30 -07009815 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uSvcStartTime;
Jeff Johnsone7245742012-09-05 17:12:55 -07009816 halAddTsParams.tspec.minDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -07009817 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMinDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -07009818 halAddTsParams.tspec.meanDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -07009819 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMeanDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -07009820 halAddTsParams.tspec.peakDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -07009821 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uPeakDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -07009822 halAddTsParams.tspec.maxBurstSz =
Jeff Johnson295189b2012-06-20 16:38:30 -07009823 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMaxBurstSz;
Jeff Johnsone7245742012-09-05 17:12:55 -07009824 halAddTsParams.tspec.delayBound =
Jeff Johnson295189b2012-06-20 16:38:30 -07009825 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uDelayBound;
Jeff Johnsone7245742012-09-05 17:12:55 -07009826 halAddTsParams.tspec.minPhyRate =
Jeff Johnson295189b2012-06-20 16:38:30 -07009827 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMinPhyRate;
Jeff Johnsone7245742012-09-05 17:12:55 -07009828 halAddTsParams.tspec.surplusBw =
Jeff Johnson295189b2012-06-20 16:38:30 -07009829 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.usSurplusBw;
Jeff Johnsone7245742012-09-05 17:12:55 -07009830 halAddTsParams.tspec.mediumTime =
Jeff Johnson295189b2012-06-20 16:38:30 -07009831 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.usMediumTime;
9832
9833 //TSPEC IE : TS INFO : TRAFFIC
Jeff Johnsone7245742012-09-05 17:12:55 -07009834 halAddTsParams.tspec.tsinfo.traffic.ackPolicy =
Jeff Johnson295189b2012-06-20 16:38:30 -07009835 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.accessPolicy;
Jeff Johnsone7245742012-09-05 17:12:55 -07009836 halAddTsParams.tspec.tsinfo.traffic.userPrio =
Jeff Johnson295189b2012-06-20 16:38:30 -07009837 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.userPrio;
Jeff Johnsone7245742012-09-05 17:12:55 -07009838 halAddTsParams.tspec.tsinfo.traffic.psb =
Jeff Johnson295189b2012-06-20 16:38:30 -07009839 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.psb;
Jeff Johnsone7245742012-09-05 17:12:55 -07009840 halAddTsParams.tspec.tsinfo.traffic.aggregation =
Jeff Johnson295189b2012-06-20 16:38:30 -07009841 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.aggregation;
Jeff Johnsone7245742012-09-05 17:12:55 -07009842 halAddTsParams.tspec.tsinfo.traffic.direction =
Jeff Johnson295189b2012-06-20 16:38:30 -07009843 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.direction;
Jeff Johnsone7245742012-09-05 17:12:55 -07009844 halAddTsParams.tspec.tsinfo.traffic.tsid =
Jeff Johnson295189b2012-06-20 16:38:30 -07009845 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.tsid;
Jeff Johnsone7245742012-09-05 17:12:55 -07009846 halAddTsParams.tspec.tsinfo.traffic.trafficType =
Jeff Johnson295189b2012-06-20 16:38:30 -07009847 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.trafficType;
9848
9849 //TSPEC IE : TS INFO : SCHEDULE
Jeff Johnsone7245742012-09-05 17:12:55 -07009850 halAddTsParams.tspec.tsinfo.schedule.rsvd =
Jeff Johnson295189b2012-06-20 16:38:30 -07009851 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiSchedule.rsvd;
Jeff Johnsone7245742012-09-05 17:12:55 -07009852 halAddTsParams.tspec.tsinfo.schedule.schedule =
Jeff Johnson295189b2012-06-20 16:38:30 -07009853 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiSchedule.schedule;
9854
Jeff Johnsone7245742012-09-05 17:12:55 -07009855 wpalMemoryCopy( pSendBuffer+usDataOffset,
9856 &halAddTsParams,
9857 sizeof(halAddTsParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07009858
9859 pWDICtx->wdiReqStatusCB = pwdiAddTSParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009860 pWDICtx->pReqStatusUserData = pwdiAddTSParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009861
9862 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009863 Send Add TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009864 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009865 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07009866 wdiAddTSRspCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -07009867 WDI_ADD_TS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009868}/*WDI_ProcessAddTSpecReq*/
9869
9870
9871/**
9872 @brief Process Del TSpec Request function (called when Main FSM
9873 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009874
9875 @param pWDICtx: pointer to the WLAN DAL context
9876 pEventData: pointer to the event information structure
9877
Jeff Johnson295189b2012-06-20 16:38:30 -07009878 @see
9879 @return Result of the function call
9880*/
9881WDI_Status
9882WDI_ProcessDelTSpecReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009883(
Jeff Johnson295189b2012-06-20 16:38:30 -07009884 WDI_ControlBlockType* pWDICtx,
9885 WDI_EventInfoType* pEventData
9886)
9887{
9888 WDI_DelTSReqParamsType* pwdiDelTSParams;
9889 WDI_DelTsRspCb wdiDelTSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07009890 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07009891 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009892 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009893 wpt_uint16 usDataOffset = 0;
9894 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009895 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07009896 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9897
9898 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009899 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009900 -------------------------------------------------------------------------*/
9901 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9902 ( NULL == pEventData->pCBfnc ))
9903 {
9904 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009905 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009906 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009907 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009908 }
9909
9910 pwdiDelTSParams = (WDI_DelTSReqParamsType*)pEventData->pEventData;
9911 wdiDelTSRspCb = (WDI_DelTsRspCb)pEventData->pCBfnc;
9912
9913 /*-------------------------------------------------------------------------
9914 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009915 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009916 -------------------------------------------------------------------------*/
9917 wpalMutexAcquire(&pWDICtx->wptMutex);
9918
9919 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009920 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07009921 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009922 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
9923 pwdiDelTSParams->wdiDelTSInfo.macBSSID,
9924 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07009925
Jeff Johnsone7245742012-09-05 17:12:55 -07009926 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009927 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009928 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
9929 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
9930 __func__, MAC_ADDR_ARRAY(pwdiDelTSParams->wdiDelTSInfo.macBSSID));
9931
Jeff Johnson295189b2012-06-20 16:38:30 -07009932 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009933 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009934 }
9935
9936 /*------------------------------------------------------------------------
9937 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009938 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009939 ------------------------------------------------------------------------*/
9940 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9941 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009942 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9943 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
9944 __func__, MAC_ADDR_ARRAY(pwdiDelTSParams->wdiDelTSInfo.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009945
Jeff Johnsone7245742012-09-05 17:12:55 -07009946 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009947 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009948 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009949 }
9950
9951
9952 wpalMutexRelease(&pWDICtx->wptMutex);
9953 /*-----------------------------------------------------------------------
9954 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -07009955 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -07009956 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009957 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_DEL_TS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009958 sizeof(pwdiDelTSParams->wdiDelTSInfo),
9959 &pSendBuffer, &usDataOffset, &usSendSize))||
9960 ( usSendSize < (usDataOffset + sizeof(pwdiDelTSParams->wdiDelTSInfo) )))
9961 {
9962 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009963 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07009964 pEventData, pwdiDelTSParams, wdiDelTSRspCb);
9965 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009966 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009967 }
9968
Jeff Johnsone7245742012-09-05 17:12:55 -07009969 wpalMemoryCopy( pSendBuffer+usDataOffset,
9970 &pwdiDelTSParams->wdiDelTSInfo,
9971 sizeof(pwdiDelTSParams->wdiDelTSInfo));
Jeff Johnson295189b2012-06-20 16:38:30 -07009972
9973 pWDICtx->wdiReqStatusCB = pwdiDelTSParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009974 pWDICtx->pReqStatusUserData = pwdiDelTSParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009975
9976 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009977 Send Del TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009978 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009979 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
9980 wdiDelTSRspCb, pEventData->pUserData, WDI_DEL_TS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009981}/*WDI_ProcessDelTSpecReq*/
9982
9983/**
9984 @brief Process Update EDCA Params Request function (called when
9985 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009986
9987 @param pWDICtx: pointer to the WLAN DAL context
9988 pEventData: pointer to the event information structure
9989
Jeff Johnson295189b2012-06-20 16:38:30 -07009990 @see
9991 @return Result of the function call
9992*/
9993WDI_Status
9994WDI_ProcessUpdateEDCAParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009995(
Jeff Johnson295189b2012-06-20 16:38:30 -07009996 WDI_ControlBlockType* pWDICtx,
9997 WDI_EventInfoType* pEventData
9998)
9999{
10000 WDI_UpdateEDCAParamsType* pwdiUpdateEDCAParams;
10001 WDI_UpdateEDCAParamsRspCb wdiUpdateEDCARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010002 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070010003 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070010004 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010005 wpt_uint16 usDataOffset = 0;
10006 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070010007 WDI_Status wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070010008 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10009
10010 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010011 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010012 -------------------------------------------------------------------------*/
10013 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10014 ( NULL == pEventData->pCBfnc ))
10015 {
10016 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010017 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010018 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010019 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010020 }
10021
10022 pwdiUpdateEDCAParams = (WDI_UpdateEDCAParamsType*)pEventData->pEventData;
10023 wdiUpdateEDCARspCb = (WDI_UpdateEDCAParamsRspCb)pEventData->pCBfnc;
10024 /*-------------------------------------------------------------------------
10025 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070010026 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070010027 -------------------------------------------------------------------------*/
10028 wpalMutexAcquire(&pWDICtx->wptMutex);
10029
10030 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010031 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070010032 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010033 ucCurrentBSSSesIdx = WDI_FindAssocSessionByBSSIdx( pWDICtx,
10034 pwdiUpdateEDCAParams->wdiEDCAInfo.ucBssIdx,
10035 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070010036
Jeff Johnsone7245742012-09-05 17:12:55 -070010037 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070010038 {
10039 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070010040 "%s: Association sequence for this BSS does not yet exist. ucBssIdx %d",
10041 __func__, pwdiUpdateEDCAParams->wdiEDCAInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070010042
10043 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010044 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070010045 }
10046
10047 /*------------------------------------------------------------------------
10048 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070010049 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070010050 ------------------------------------------------------------------------*/
10051 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
10052 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010053 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10054 "%s: Association sequence for this BSS exists but currently queued. ucBssIdx %d",
10055 __func__, pwdiUpdateEDCAParams->wdiEDCAInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070010056
Jeff Johnsone7245742012-09-05 17:12:55 -070010057 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070010058 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010059 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070010060 }
10061
10062
10063 wpalMutexRelease(&pWDICtx->wptMutex);
10064 /*-----------------------------------------------------------------------
10065 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070010066 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070010067 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010068 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPD_EDCA_PRMS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010069 sizeof(pwdiUpdateEDCAParams->wdiEDCAInfo),
10070 &pSendBuffer, &usDataOffset, &usSendSize))||
10071 ( usSendSize < (usDataOffset + sizeof(pwdiUpdateEDCAParams->wdiEDCAInfo) )))
10072 {
10073 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010074 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070010075 pEventData, pwdiUpdateEDCAParams, wdiUpdateEDCARspCb);
10076 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010077 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010078 }
10079
Jeff Johnsone7245742012-09-05 17:12:55 -070010080 wpalMemoryCopy( pSendBuffer+usDataOffset,
10081 &pwdiUpdateEDCAParams->wdiEDCAInfo,
10082 sizeof(pwdiUpdateEDCAParams->wdiEDCAInfo));
Jeff Johnson295189b2012-06-20 16:38:30 -070010083
10084 pWDICtx->wdiReqStatusCB = pwdiUpdateEDCAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010085 pWDICtx->pReqStatusUserData = pwdiUpdateEDCAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010086
10087 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010088 Send Update EDCA Params Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010089 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010090 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10091 wdiUpdateEDCARspCb, pEventData->pUserData,
10092 WDI_UPD_EDCA_PRMS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010093}/*WDI_ProcessUpdateEDCAParamsReq*/
10094
10095/**
Jeff Johnsone7245742012-09-05 17:12:55 -070010096 @brief Process Add BA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070010097 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010098
10099 @param pWDICtx: pointer to the WLAN DAL context
10100 pEventData: pointer to the event information structure
10101
Jeff Johnson295189b2012-06-20 16:38:30 -070010102 @see
10103 @return Result of the function call
10104*/
10105WDI_Status
10106WDI_ProcessAddBASessionReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010107(
Jeff Johnson295189b2012-06-20 16:38:30 -070010108 WDI_ControlBlockType* pWDICtx,
10109 WDI_EventInfoType* pEventData
10110)
10111{
10112 WDI_AddBASessionReqParamsType* pwdiAddBASessionParams;
10113 WDI_AddBASessionRspCb wdiAddBASessionRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010114 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070010115 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070010116 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010117 wpt_uint16 usDataOffset = 0;
10118 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070010119 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070010120 wpt_macAddr macBSSID;
10121
10122 tAddBASessionReqMsg halAddBASessionReq;
10123 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10124
10125 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010126 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010127 -------------------------------------------------------------------------*/
10128 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10129 ( NULL == pEventData->pCBfnc ))
10130 {
10131 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010132 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010133 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010134 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010135 }
10136
Jeff Johnsone7245742012-09-05 17:12:55 -070010137 pwdiAddBASessionParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070010138 (WDI_AddBASessionReqParamsType*)pEventData->pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070010139 wdiAddBASessionRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070010140 (WDI_AddBASessionRspCb)pEventData->pCBfnc;
10141 /*-------------------------------------------------------------------------
10142 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070010143 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070010144 -------------------------------------------------------------------------*/
10145 wpalMutexAcquire(&pWDICtx->wptMutex);
10146
10147 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010148 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070010149 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010150 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
10151 pwdiAddBASessionParams->wdiBASessionInfoType.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070010152 &macBSSID))
10153 {
10154 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010155 "This station does not exist in the WDI Station Table %d",
10156 pwdiAddBASessionParams->wdiBASessionInfoType.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070010157 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010158 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010159 }
10160
10161
Jeff Johnsone7245742012-09-05 17:12:55 -070010162 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070010163
Jeff Johnsone7245742012-09-05 17:12:55 -070010164 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070010165 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010166 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
10167 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
10168 __func__, MAC_ADDR_ARRAY(macBSSID));
10169
Jeff Johnson295189b2012-06-20 16:38:30 -070010170 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010171 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070010172 }
10173
10174 /*------------------------------------------------------------------------
10175 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070010176 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070010177 ------------------------------------------------------------------------*/
10178 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
10179 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010180 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10181 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
10182 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010183
Jeff Johnsone7245742012-09-05 17:12:55 -070010184 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070010185 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010186 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070010187 }
10188
10189
10190 wpalMutexRelease(&pWDICtx->wptMutex);
10191 /*-----------------------------------------------------------------------
10192 Get message buffer
10193 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010194 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
10195 WDI_ADD_BA_SESSION_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010196 sizeof(halAddBASessionReq.addBASessionParams),
10197 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070010198 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070010199 (usDataOffset + sizeof(halAddBASessionReq.addBASessionParams) )))
10200 {
10201 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010202 "Unable to get send buffer in Add BA session req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070010203 pEventData, pwdiAddBASessionParams, wdiAddBASessionRspCb);
10204 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010205 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010206 }
10207
10208 halAddBASessionReq.addBASessionParams.staIdx =
10209 pwdiAddBASessionParams->wdiBASessionInfoType.ucSTAIdx;
10210 wpalMemoryCopy(halAddBASessionReq.addBASessionParams.peerMacAddr,
10211 pwdiAddBASessionParams->wdiBASessionInfoType.macPeerAddr,
10212 WDI_MAC_ADDR_LEN);
10213 halAddBASessionReq.addBASessionParams.baTID =
10214 pwdiAddBASessionParams->wdiBASessionInfoType.ucBaTID;
10215 halAddBASessionReq.addBASessionParams.baPolicy =
10216 pwdiAddBASessionParams->wdiBASessionInfoType.ucBaPolicy;
10217 halAddBASessionReq.addBASessionParams.baBufferSize =
10218 pwdiAddBASessionParams->wdiBASessionInfoType.usBaBufferSize;
10219 halAddBASessionReq.addBASessionParams.baTimeout =
10220 pwdiAddBASessionParams->wdiBASessionInfoType.usBaTimeout;
10221 halAddBASessionReq.addBASessionParams.baSSN =
10222 pwdiAddBASessionParams->wdiBASessionInfoType.usBaSSN;
10223 halAddBASessionReq.addBASessionParams.baDirection =
10224 pwdiAddBASessionParams->wdiBASessionInfoType.ucBaDirection;
10225
Jeff Johnsone7245742012-09-05 17:12:55 -070010226 wpalMemoryCopy( pSendBuffer+usDataOffset,
10227 &halAddBASessionReq.addBASessionParams,
10228 sizeof(halAddBASessionReq.addBASessionParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070010229
10230 pWDICtx->wdiReqStatusCB = pwdiAddBASessionParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010231 pWDICtx->pReqStatusUserData = pwdiAddBASessionParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010232
10233 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010234 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010235 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010236 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10237 wdiAddBASessionRspCb, pEventData->pUserData,
10238 WDI_ADD_BA_SESSION_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010239}/*WDI_ProcessAddBASessionReq*/
10240
10241/**
Jeff Johnsone7245742012-09-05 17:12:55 -070010242 @brief Process Del BA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070010243 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010244
10245 @param pWDICtx: pointer to the WLAN DAL context
10246 pEventData: pointer to the event information structure
10247
Jeff Johnson295189b2012-06-20 16:38:30 -070010248 @see
10249 @return Result of the function call
10250*/
10251WDI_Status
10252WDI_ProcessDelBAReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010253(
Jeff Johnson295189b2012-06-20 16:38:30 -070010254 WDI_ControlBlockType* pWDICtx,
10255 WDI_EventInfoType* pEventData
10256)
10257{
10258 WDI_DelBAReqParamsType* pwdiDelBAParams;
10259 WDI_DelBARspCb wdiDelBARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010260 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070010261 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070010262 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010263 wpt_uint16 usDataOffset = 0;
10264 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070010265 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070010266 wpt_macAddr macBSSID;
10267 tDelBAParams halDelBAparam;
10268 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10269
10270 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010271 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010272 -------------------------------------------------------------------------*/
10273 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10274 ( NULL == pEventData->pCBfnc ))
10275 {
10276 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010277 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010278 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010279 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010280 }
10281
10282 pwdiDelBAParams = (WDI_DelBAReqParamsType*)pEventData->pEventData;
10283 wdiDelBARspCb = (WDI_DelBARspCb)pEventData->pCBfnc;
10284 /*-------------------------------------------------------------------------
10285 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070010286 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070010287 -------------------------------------------------------------------------*/
10288 wpalMutexAcquire(&pWDICtx->wptMutex);
10289
10290 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010291 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070010292 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010293 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
10294 pwdiDelBAParams->wdiBAInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070010295 &macBSSID))
10296 {
10297 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010298 "This station does not exist in the WDI Station Table %d",
10299 pwdiDelBAParams->wdiBAInfo.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070010300 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010301 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010302 }
10303
Jeff Johnsone7245742012-09-05 17:12:55 -070010304 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070010305
Jeff Johnsone7245742012-09-05 17:12:55 -070010306 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070010307 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010308 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
10309 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
10310 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010311
10312 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010313 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070010314 }
10315
10316 /*------------------------------------------------------------------------
10317 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070010318 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070010319 ------------------------------------------------------------------------*/
10320 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
10321 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010322 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10323 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
10324 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010325
Jeff Johnsone7245742012-09-05 17:12:55 -070010326 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070010327 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010328 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070010329 }
10330
10331 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010332 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_DEL_BA_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010333 sizeof(halDelBAparam),
10334 &pSendBuffer, &usDataOffset, &usSendSize))||
10335 ( usSendSize < (usDataOffset + sizeof(halDelBAparam) )))
10336 {
10337 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010338 "Unable to get send buffer for DEL BA req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070010339 pEventData, pwdiDelBAParams, wdiDelBARspCb);
10340 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010341 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010342 }
10343
10344 halDelBAparam.staIdx = pwdiDelBAParams->wdiBAInfo.ucSTAIdx;
10345 halDelBAparam.baTID = pwdiDelBAParams->wdiBAInfo.ucBaTID;
10346 halDelBAparam.baDirection = pwdiDelBAParams->wdiBAInfo.ucBaDirection;
10347
Jeff Johnsone7245742012-09-05 17:12:55 -070010348 wpalMemoryCopy( pSendBuffer+usDataOffset,
10349 &halDelBAparam,
10350 sizeof(halDelBAparam));
Jeff Johnson295189b2012-06-20 16:38:30 -070010351
10352 pWDICtx->wdiReqStatusCB = pwdiDelBAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010353 pWDICtx->pReqStatusUserData = pwdiDelBAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010354
10355 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010356 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010357 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010358 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10359 wdiDelBARspCb, pEventData->pUserData, WDI_DEL_BA_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010360}/*WDI_ProcessDelBAReq*/
10361
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -080010362#ifdef FEATURE_WLAN_ESE
Jeff Johnson295189b2012-06-20 16:38:30 -070010363
10364WDI_Status
10365WDI_ProcessTSMStatsReq
10366(
10367 WDI_ControlBlockType* pWDICtx,
10368 WDI_EventInfoType* pEventData
10369)
10370{
10371 WDI_TSMStatsReqParamsType* pwdiTSMParams;
10372 WDI_TsmRspCb wdiTSMRspCb;
10373 wpt_uint8 ucCurrentBSSSesIdx = 0;
10374 WDI_BSSSessionType* pBSSSes = NULL;
10375 wpt_uint8* pSendBuffer = NULL;
10376 wpt_uint16 usDataOffset = 0;
10377 wpt_uint16 usSendSize = 0;
10378 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
10379 tTsmStatsParams halTsmStatsReqParams = {0};
10380
10381 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10382
10383 /*-------------------------------------------------------------------------
10384 Sanity check
10385 -------------------------------------------------------------------------*/
10386 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10387 ( NULL == pEventData->pCBfnc ))
10388 {
10389 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010390 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010391 WDI_ASSERT(0);
10392 return WDI_STATUS_E_FAILURE;
10393 }
10394
10395 pwdiTSMParams = (WDI_TSMStatsReqParamsType*)pEventData->pEventData;
10396 wdiTSMRspCb = (WDI_TsmRspCb)pEventData->pCBfnc;
10397 /*-------------------------------------------------------------------------
10398 Check to see if we are in the middle of an association, if so queue, if
10399 not it means it is free to process request
10400 -------------------------------------------------------------------------*/
10401 wpalMutexAcquire(&pWDICtx->wptMutex);
10402
10403 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, pwdiTSMParams->wdiTsmStatsParamsInfo.bssid, &pBSSSes);
10404 if ( NULL == pBSSSes )
10405 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010406 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
10407 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
10408 __func__, MAC_ADDR_ARRAY(pwdiTSMParams->wdiTsmStatsParamsInfo.bssid));
Jeff Johnson295189b2012-06-20 16:38:30 -070010409
10410 wpalMutexRelease(&pWDICtx->wptMutex);
10411 return WDI_STATUS_E_NOT_ALLOWED;
10412 }
10413
10414 /*------------------------------------------------------------------------
10415 Check if this BSS is being currently processed or queued,
10416 if queued - queue the new request as well
10417 ------------------------------------------------------------------------*/
10418 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
10419 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010420 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Srinivas Girigowda6d1f9062014-02-03 18:15:54 -080010421 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
Jeff Johnsone7245742012-09-05 17:12:55 -070010422 __func__, MAC_ADDR_ARRAY(pwdiTSMParams->wdiTsmStatsParamsInfo.bssid));
Jeff Johnson295189b2012-06-20 16:38:30 -070010423
10424 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
10425 wpalMutexRelease(&pWDICtx->wptMutex);
10426 return wdiStatus;
10427 }
10428
10429 wpalMutexRelease(&pWDICtx->wptMutex);
10430 /*-----------------------------------------------------------------------
10431 Get message buffer
10432 ! TO DO : proper conversion into the HAL Message Request Format
10433 -----------------------------------------------------------------------*/
10434 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_TSM_STATS_REQ,
10435 sizeof(halTsmStatsReqParams),
10436 &pSendBuffer, &usDataOffset, &usSendSize))||
10437 ( usSendSize < (usDataOffset + sizeof(halTsmStatsReqParams) )))
10438 {
10439 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010440 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070010441 pEventData, pwdiTSMParams, wdiTSMRspCb);
10442 WDI_ASSERT(0);
10443 return WDI_STATUS_E_FAILURE;
10444 }
10445
10446 halTsmStatsReqParams.tsmTID = pwdiTSMParams->wdiTsmStatsParamsInfo.ucTid;
10447 wpalMemoryCopy(halTsmStatsReqParams.bssId,
10448 pwdiTSMParams->wdiTsmStatsParamsInfo.bssid,
10449 WDI_MAC_ADDR_LEN);
10450 wpalMemoryCopy( pSendBuffer+usDataOffset,
10451 &halTsmStatsReqParams,
10452 sizeof(halTsmStatsReqParams));
10453
10454 pWDICtx->wdiReqStatusCB = pwdiTSMParams->wdiReqStatusCB;
10455 pWDICtx->pReqStatusUserData = pwdiTSMParams->pUserData;
10456
10457 /*-------------------------------------------------------------------------
10458 Send TSM Stats Request to HAL
10459 -------------------------------------------------------------------------*/
10460 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10461 wdiTSMRspCb, pEventData->pUserData,
10462 WDI_TSM_STATS_RESP);
10463}/*WDI_ProcessTSMStatsReq*/
10464
10465#endif
10466
10467
10468/**
Jeff Johnsone7245742012-09-05 17:12:55 -070010469 @brief Process Flush AC Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070010470 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010471
10472 @param pWDICtx: pointer to the WLAN DAL context
10473 pEventData: pointer to the event information structure
10474
Jeff Johnson295189b2012-06-20 16:38:30 -070010475 @see
10476 @return Result of the function call
10477*/
10478WDI_Status
10479WDI_ProcessFlushAcReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010480(
Jeff Johnson295189b2012-06-20 16:38:30 -070010481 WDI_ControlBlockType* pWDICtx,
10482 WDI_EventInfoType* pEventData
10483)
10484{
10485 WDI_FlushAcReqParamsType* pwdiFlushAcParams = NULL;
10486 WDI_FlushAcRspCb wdiFlushAcRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010487 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010488 wpt_uint16 usDataOffset = 0;
10489 wpt_uint16 usSendSize = 0;
10490 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10491
10492 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010493 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010494 -------------------------------------------------------------------------*/
10495 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10496 ( NULL == pEventData->pCBfnc ))
10497 {
10498 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010499 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010500 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010501 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010502 }
10503
10504 pwdiFlushAcParams = (WDI_FlushAcReqParamsType*)pEventData->pEventData;
10505 wdiFlushAcRspCb = (WDI_FlushAcRspCb)pEventData->pCBfnc;
10506 /*-----------------------------------------------------------------------
10507 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070010508 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070010509 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010510 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_FLUSH_AC_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010511 sizeof(pwdiFlushAcParams->wdiFlushAcInfo),
10512 &pSendBuffer, &usDataOffset, &usSendSize))||
10513 ( usSendSize < (usDataOffset + sizeof(pwdiFlushAcParams->wdiFlushAcInfo) )))
10514 {
10515 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010516 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070010517 pEventData, pwdiFlushAcParams, wdiFlushAcRspCb);
10518 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010519 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010520 }
10521
Jeff Johnsone7245742012-09-05 17:12:55 -070010522 wpalMemoryCopy( pSendBuffer+usDataOffset,
10523 &pwdiFlushAcParams->wdiFlushAcInfo,
10524 sizeof(pwdiFlushAcParams->wdiFlushAcInfo));
Jeff Johnson295189b2012-06-20 16:38:30 -070010525
10526 pWDICtx->wdiReqStatusCB = pwdiFlushAcParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010527 pWDICtx->pReqStatusUserData = pwdiFlushAcParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010528
10529 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010530 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010531 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010532 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10533 wdiFlushAcRspCb, pEventData->pUserData, WDI_FLUSH_AC_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010534}/*WDI_ProcessFlushAcReq*/
10535
10536/**
Jeff Johnsone7245742012-09-05 17:12:55 -070010537 @brief Process BT AMP event Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070010538 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010539
10540 @param pWDICtx: pointer to the WLAN DAL context
10541 pEventData: pointer to the event information structure
10542
Jeff Johnson295189b2012-06-20 16:38:30 -070010543 @see
10544 @return Result of the function call
10545*/
10546WDI_Status
10547WDI_ProcessBtAmpEventReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010548(
Jeff Johnson295189b2012-06-20 16:38:30 -070010549 WDI_ControlBlockType* pWDICtx,
10550 WDI_EventInfoType* pEventData
10551)
10552{
10553 WDI_BtAmpEventParamsType* pwdiBtAmpEventParams = NULL;
10554 WDI_BtAmpEventRspCb wdiBtAmpEventRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010555 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010556 wpt_uint16 usDataOffset = 0;
10557 wpt_uint16 usSendSize = 0;
10558
10559 tBtAmpEventMsg haltBtAmpEventMsg;
10560 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10561
10562 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010563 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010564 -------------------------------------------------------------------------*/
10565 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10566 ( NULL == pEventData->pCBfnc ))
10567 {
10568 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010569 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010570 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
10574 pwdiBtAmpEventParams = (WDI_BtAmpEventParamsType*)pEventData->pEventData;
10575 wdiBtAmpEventRspCb = (WDI_BtAmpEventRspCb)pEventData->pCBfnc;
10576 /*-----------------------------------------------------------------------
10577 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070010578 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070010579 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010580 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_BTAMP_EVENT_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010581 sizeof(haltBtAmpEventMsg.btAmpEventParams),
10582 &pSendBuffer, &usDataOffset, &usSendSize))||
10583 ( usSendSize < (usDataOffset + sizeof(haltBtAmpEventMsg.btAmpEventParams) )))
10584 {
10585 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010586 "Unable to get send buffer in BT AMP event req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070010587 pEventData, pwdiBtAmpEventParams, wdiBtAmpEventRspCb);
10588 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010589 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010590 }
10591
Jeff Johnsone7245742012-09-05 17:12:55 -070010592 haltBtAmpEventMsg.btAmpEventParams.btAmpEventType =
Jeff Johnson295189b2012-06-20 16:38:30 -070010593 pwdiBtAmpEventParams->wdiBtAmpEventInfo.ucBtAmpEventType;
Jeff Johnsone7245742012-09-05 17:12:55 -070010594 wpalMemoryCopy( pSendBuffer+usDataOffset,
10595 &haltBtAmpEventMsg.btAmpEventParams,
10596 sizeof(haltBtAmpEventMsg.btAmpEventParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070010597
10598 pWDICtx->wdiReqStatusCB = pwdiBtAmpEventParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010599 pWDICtx->pReqStatusUserData = pwdiBtAmpEventParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010600
10601 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010602 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010603 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010604 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10605 wdiBtAmpEventRspCb, pEventData->pUserData, WDI_BTAMP_EVENT_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010606}/*WDI_ProcessBtAmpEventReq*/
10607
10608/**
10609 @brief Process Add STA self Request function (called when Main FSM
10610 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010611
10612 @param pWDICtx: pointer to the WLAN DAL context
10613 pEventData: pointer to the event information structure
10614
Jeff Johnson295189b2012-06-20 16:38:30 -070010615 @see
10616 @return Result of the function call
10617*/
10618WDI_Status
10619WDI_ProcessAddSTASelfReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010620(
Jeff Johnson295189b2012-06-20 16:38:30 -070010621 WDI_ControlBlockType* pWDICtx,
10622 WDI_EventInfoType* pEventData
10623)
10624{
10625 WDI_AddSTASelfReqParamsType* pwdiAddSTASelfReqParams;
10626 WDI_AddSTASelfParamsRspCb wdiAddSTASelfReqRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010627 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010628 wpt_uint16 usDataOffset = 0;
10629 wpt_uint16 usSendSize = 0;
Kiran Kumar Lokere0ad5cd32013-06-25 11:26:22 -070010630 tAddStaSelfParams_V1 halAddSTASelfParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070010631 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10632
10633 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010634 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010635 -------------------------------------------------------------------------*/
10636 if (( NULL == pEventData ) ||
10637 ( NULL == pEventData->pEventData) ||
10638 ( NULL == pEventData->pCBfnc))
10639 {
10640 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010641 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010642 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010643 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010644 }
10645
Jeff Johnsone7245742012-09-05 17:12:55 -070010646 pwdiAddSTASelfReqParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070010647 (WDI_AddSTASelfReqParamsType*)pEventData->pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070010648 wdiAddSTASelfReqRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070010649 (WDI_AddSTASelfParamsRspCb)pEventData->pCBfnc;
10650 /*-----------------------------------------------------------------------
10651 Get message buffer
10652 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010653 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
10654 WDI_ADD_STA_SELF_REQ,
Kiran Kumar Lokere0ad5cd32013-06-25 11:26:22 -070010655 sizeof(tAddStaSelfParams_V1),
Jeff Johnson295189b2012-06-20 16:38:30 -070010656 &pSendBuffer, &usDataOffset, &usSendSize))||
Kiran Kumar Lokere0ad5cd32013-06-25 11:26:22 -070010657 ( usSendSize < (usDataOffset + sizeof(tAddStaSelfParams_V1) )))
Jeff Johnson295189b2012-06-20 16:38:30 -070010658 {
10659 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010660 "Unable to get send buffer in ADD STA SELF REQ %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070010661 pEventData, pwdiAddSTASelfReqParams, wdiAddSTASelfReqRspCb);
10662 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010663 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010664 }
10665
10666 /* Cache the request for response processing */
Jeff Johnsone7245742012-09-05 17:12:55 -070010667 wpalMemoryCopy(&pWDICtx->wdiCacheAddSTASelfReq, pwdiAddSTASelfReqParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070010668 sizeof(pWDICtx->wdiCacheAddSTASelfReq));
10669
Jeff Johnsone7245742012-09-05 17:12:55 -070010670 wpalMemoryCopy(halAddSTASelfParams.selfMacAddr,
Kiran Kumar Lokere0ad5cd32013-06-25 11:26:22 -070010671 pwdiAddSTASelfReqParams->wdiAddSTASelfInfo.selfMacAddr, 6);
10672 halAddSTASelfParams.iface_persona = HAL_IFACE_UNKNOWN;
10673 if (pwdiAddSTASelfReqParams->wdiAddSTASelfInfo.currDeviceMode == VOS_STA_MODE)
10674 {
10675 halAddSTASelfParams.iface_persona = HAL_IFACE_STA_MODE;
10676 }
10677 else if ((pwdiAddSTASelfReqParams->wdiAddSTASelfInfo.currDeviceMode ==
10678 VOS_P2P_CLIENT_MODE) ||
10679 (pwdiAddSTASelfReqParams->wdiAddSTASelfInfo.currDeviceMode ==
10680 VOS_P2P_DEVICE))
10681 {
10682 halAddSTASelfParams.iface_persona = HAL_IFACE_P2P_MODE;
10683 }
Jeff Johnsone7245742012-09-05 17:12:55 -070010684 wpalMemoryCopy( pSendBuffer+usDataOffset, &halAddSTASelfParams,
Kiran Kumar Lokere0ad5cd32013-06-25 11:26:22 -070010685 sizeof(tAddStaSelfParams_V1));
Jeff Johnson295189b2012-06-20 16:38:30 -070010686
10687 pWDICtx->wdiReqStatusCB = pwdiAddSTASelfReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010688 pWDICtx->pReqStatusUserData = pwdiAddSTASelfReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010689
10690 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010691 Send Update Probe Resp Template Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010692 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010693 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10694 wdiAddSTASelfReqRspCb, pEventData->pUserData,
10695 WDI_ADD_STA_SELF_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010696}/*WDI_ProcessAddSTASelfReq*/
10697
10698
10699
10700/**
Jeff Johnsone7245742012-09-05 17:12:55 -070010701 @brief Process Del Sta Self Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070010702 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010703
10704 @param pWDICtx: pointer to the WLAN DAL context
10705 pEventData: pointer to the event information structure
10706
Jeff Johnson295189b2012-06-20 16:38:30 -070010707 @see
10708 @return Result of the function call
10709*/
10710WDI_Status
10711WDI_ProcessDelSTASelfReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010712(
Jeff Johnson295189b2012-06-20 16:38:30 -070010713 WDI_ControlBlockType* pWDICtx,
10714 WDI_EventInfoType* pEventData
10715)
10716{
10717 WDI_DelSTASelfReqParamsType* pwdiDelStaSelfReqParams;
10718 WDI_DelSTASelfRspCb wdiDelStaSelfRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010719 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010720 wpt_uint16 usDataOffset = 0;
10721 wpt_uint16 usSendSize = 0;
10722 tDelStaSelfParams halSetDelSelfSTAParams;
10723 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10724
10725 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010726 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010727 -------------------------------------------------------------------------*/
10728 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10729 ( NULL == pEventData->pCBfnc ))
10730 {
10731 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010732 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010733 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010734 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010735 }
10736
Jeff Johnsone7245742012-09-05 17:12:55 -070010737 pwdiDelStaSelfReqParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070010738 (WDI_DelSTASelfReqParamsType*)pEventData->pEventData;
10739 wdiDelStaSelfRspCb = (WDI_DelSTASelfRspCb)pEventData->pCBfnc;
10740
10741 /*-----------------------------------------------------------------------
10742 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070010743 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070010744 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010745 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_DEL_STA_SELF_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010746 sizeof(pwdiDelStaSelfReqParams->wdiDelStaSelfInfo),
10747 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070010748 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070010749 (usDataOffset + sizeof(pwdiDelStaSelfReqParams->wdiDelStaSelfInfo) )))
10750 {
10751 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010752 "Unable to get send buffer in Del Sta Self req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070010753 pEventData, pwdiDelStaSelfReqParams, wdiDelStaSelfRspCb);
10754 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010755 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010756 }
10757
Jeff Johnsone7245742012-09-05 17:12:55 -070010758 wpalMemoryCopy(halSetDelSelfSTAParams.selfMacAddr,
Jeff Johnson295189b2012-06-20 16:38:30 -070010759 pwdiDelStaSelfReqParams->wdiDelStaSelfInfo.selfMacAddr, 6) ;
10760
Jeff Johnsone7245742012-09-05 17:12:55 -070010761 wpalMemoryCopy( pSendBuffer+usDataOffset, &halSetDelSelfSTAParams,
10762 sizeof(tDelStaSelfParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070010763
10764 pWDICtx->wdiReqStatusCB = pwdiDelStaSelfReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010765 pWDICtx->pReqStatusUserData = pwdiDelStaSelfReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010766
10767 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010768 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010769 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010770 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10771 wdiDelStaSelfRspCb, pEventData->pUserData,
Jeff Johnson295189b2012-06-20 16:38:30 -070010772 WDI_DEL_STA_SELF_RESP);
10773
10774}
10775
Jeff Johnsone7245742012-09-05 17:12:55 -070010776#ifdef FEATURE_OEM_DATA_SUPPORT
10777/**
10778 @brief Process Start Oem Data Request function (called when Main
10779 FSM allows it)
10780
10781 @param pWDICtx: pointer to the WLAN DAL context
10782 pEventData: pointer to the event information structure
10783
10784 @see
10785 @return Result of the function call
10786*/
10787WDI_Status
10788WDI_ProcessStartOemDataReq
10789(
10790 WDI_ControlBlockType* pWDICtx,
10791 WDI_EventInfoType* pEventData
10792)
10793{
10794 WDI_oemDataReqParamsType* pwdiOemDataReqParams = NULL;
10795 WDI_oemDataRspCb wdiOemDataRspCb;
10796 wpt_uint8* pSendBuffer = NULL;
10797 wpt_uint16 usDataOffset = 0;
10798 wpt_uint16 usSendSize = 0;
10799 wpt_uint16 reqLen;
10800 tStartOemDataReqParams* halStartOemDataReqParams;
10801
10802 /*-------------------------------------------------------------------------
10803 Sanity check
10804 -------------------------------------------------------------------------*/
10805 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10806 ( NULL == pEventData->pCBfnc ))
10807 {
10808 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010809 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070010810 WDI_ASSERT(0);
10811 return WDI_STATUS_E_FAILURE;
10812 }
10813
10814 pwdiOemDataReqParams = (WDI_oemDataReqParamsType*)pEventData->pEventData;
10815 wdiOemDataRspCb = (WDI_oemDataRspCb)pEventData->pCBfnc;
10816
10817 /*-----------------------------------------------------------------------
10818 Get message buffer
10819 -----------------------------------------------------------------------*/
10820
10821 reqLen = sizeof(tStartOemDataReqParams);
10822
10823 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
10824 WDI_START_OEM_DATA_REQ, reqLen,
10825 &pSendBuffer, &usDataOffset, &usSendSize))||
10826 (usSendSize < (usDataOffset + reqLen)))
10827 {
10828 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010829 "Unable to get send buffer in Start Oem Data req %p %p %p",
Jeff Johnsone7245742012-09-05 17:12:55 -070010830 pEventData, pwdiOemDataReqParams, wdiOemDataRspCb);
10831 WDI_ASSERT(0);
10832 return WDI_STATUS_E_FAILURE;
10833 }
10834
10835 //copying WDI OEM DATA REQ PARAMS to shared memory
10836 halStartOemDataReqParams = (tStartOemDataReqParams *)(pSendBuffer + usDataOffset );
10837
10838 wpalMemoryCopy(&halStartOemDataReqParams->selfMacAddr, &pwdiOemDataReqParams->wdiOemDataReqInfo.selfMacAddr, sizeof(wpt_macAddr));
10839 wpalMemoryCopy(&halStartOemDataReqParams->oemDataReq, &pwdiOemDataReqParams->wdiOemDataReqInfo.oemDataReq, OEM_DATA_REQ_SIZE);
10840
10841 pWDICtx->wdiReqStatusCB = pwdiOemDataReqParams->wdiReqStatusCB;
10842 pWDICtx->pReqStatusUserData = pwdiOemDataReqParams->pUserData;
10843
10844 /*-------------------------------------------------------------------------
10845 Send Start Request to HAL
10846 -------------------------------------------------------------------------*/
10847 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10848 wdiOemDataRspCb, pEventData->pUserData,
10849 WDI_START_OEM_DATA_RESP);
10850}/*WDI_ProcessStartOemDataReq*/
10851#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070010852
10853/**
Jeff Johnsone7245742012-09-05 17:12:55 -070010854 @brief Process Host Resume Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070010855 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010856
10857 @param pWDICtx: pointer to the WLAN DAL context
10858 pEventData: pointer to the event information structure
10859
Jeff Johnson295189b2012-06-20 16:38:30 -070010860 @see
10861 @return Result of the function call
10862*/
10863WDI_Status
10864WDI_ProcessHostResumeReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010865(
Jeff Johnson295189b2012-06-20 16:38:30 -070010866 WDI_ControlBlockType* pWDICtx,
10867 WDI_EventInfoType* pEventData
10868)
10869{
10870 WDI_ResumeParamsType* pwdiHostResumeParams = NULL;
10871 WDI_HostResumeEventRspCb wdiHostResumeRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010872 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010873 wpt_uint16 usDataOffset = 0;
10874 wpt_uint16 usSendSize = 0;
10875 tHalWlanHostResumeReqParam halResumeReqParams;
10876
10877 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10878
10879 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010880 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010881 -------------------------------------------------------------------------*/
10882 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10883 ( NULL == pEventData->pCBfnc ))
10884 {
10885 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010886 "%s: Invalid parameters ",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010887 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010888 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010889 }
10890
10891 pwdiHostResumeParams = (WDI_ResumeParamsType*)pEventData->pEventData;
10892 wdiHostResumeRspCb = (WDI_HostResumeEventRspCb)pEventData->pCBfnc;
10893
10894 /*-----------------------------------------------------------------------
10895 Get message buffer
10896 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010897 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
Jeff Johnson295189b2012-06-20 16:38:30 -070010898 WDI_HOST_RESUME_REQ, sizeof(halResumeReqParams),
10899 &pSendBuffer, &usDataOffset, &usSendSize))||
10900 (usSendSize < (usDataOffset + sizeof(halResumeReqParams))))
10901 {
10902 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010903 "Unable to get send buffer in Start Oem Data req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070010904 pEventData, pwdiHostResumeParams, wdiHostResumeRspCb);
10905 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010906 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010907 }
10908
Jeff Johnsone7245742012-09-05 17:12:55 -070010909 halResumeReqParams.configuredMcstBcstFilterSetting =
Jeff Johnson295189b2012-06-20 16:38:30 -070010910 pwdiHostResumeParams->wdiResumeParams.ucConfiguredMcstBcstFilterSetting;
Jeff Johnsone7245742012-09-05 17:12:55 -070010911
10912 wpalMemoryCopy( pSendBuffer+usDataOffset,
10913 &halResumeReqParams,
10914 sizeof(halResumeReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070010915
10916 pWDICtx->wdiReqStatusCB = pwdiHostResumeParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010917 pWDICtx->pReqStatusUserData = pwdiHostResumeParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010918
10919 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010920 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010921 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010922 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10923 wdiHostResumeRspCb, pEventData->pUserData,
10924 WDI_HOST_RESUME_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010925}/*WDI_ProcessHostResumeReq*/
10926
10927/**
Jeff Johnsone7245742012-09-05 17:12:55 -070010928 @brief Process set Tx Per Tracking Parameters Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070010929 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010930
10931 @param pWDICtx: pointer to the WLAN DAL context
10932 pEventData: pointer to the event information structure
10933
Jeff Johnson295189b2012-06-20 16:38:30 -070010934 @see
10935 @return Result of the function call
10936*/
10937WDI_Status
10938WDI_ProcessSetTxPerTrackingReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010939(
Jeff Johnson295189b2012-06-20 16:38:30 -070010940 WDI_ControlBlockType* pWDICtx,
10941 WDI_EventInfoType* pEventData
10942)
10943{
10944 WDI_SetTxPerTrackingReqParamsType* pwdiSetTxPerTrackingReqParams = NULL;
10945 WDI_SetTxPerTrackingRspCb pwdiSetTxPerTrackingRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070010946 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010947 wpt_uint16 usDataOffset = 0;
10948 wpt_uint16 usSendSize = 0;
10949 tHalTxPerTrackingReqParam halTxPerTrackingReqParam;
10950 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10951
10952 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010953 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010954 -------------------------------------------------------------------------*/
10955 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10956 ( NULL == pEventData->pCBfnc ))
10957 {
10958 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010959 "%s: Invalid parameters ",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010960 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010961 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010962 }
10963
10964 pwdiSetTxPerTrackingReqParams = (WDI_SetTxPerTrackingReqParamsType*)pEventData->pEventData;
10965 pwdiSetTxPerTrackingRspCb = (WDI_SetTxPerTrackingRspCb)pEventData->pCBfnc;
Jeff Johnsone7245742012-09-05 17:12:55 -070010966
Jeff Johnson295189b2012-06-20 16:38:30 -070010967 /*-----------------------------------------------------------------------
10968 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070010969 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070010970 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010971 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_TX_PER_TRACKING_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010972 sizeof(halTxPerTrackingReqParam),
10973 &pSendBuffer, &usDataOffset, &usSendSize))||
10974 ( usSendSize < (usDataOffset + sizeof(halTxPerTrackingReqParam) )))
10975 {
10976 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010977 "Unable to get send buffer in set tx per tracking req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070010978 pEventData, pwdiSetTxPerTrackingReqParams, pwdiSetTxPerTrackingRspCb);
10979 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010980 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010981 }
Jeff Johnsone7245742012-09-05 17:12:55 -070010982
Jeff Johnson295189b2012-06-20 16:38:30 -070010983 halTxPerTrackingReqParam.ucTxPerTrackingEnable = pwdiSetTxPerTrackingReqParams->wdiTxPerTrackingParam.ucTxPerTrackingEnable;
10984 halTxPerTrackingReqParam.ucTxPerTrackingPeriod = pwdiSetTxPerTrackingReqParams->wdiTxPerTrackingParam.ucTxPerTrackingPeriod;
10985 halTxPerTrackingReqParam.ucTxPerTrackingRatio = pwdiSetTxPerTrackingReqParams->wdiTxPerTrackingParam.ucTxPerTrackingRatio;
10986 halTxPerTrackingReqParam.uTxPerTrackingWatermark = pwdiSetTxPerTrackingReqParams->wdiTxPerTrackingParam.uTxPerTrackingWatermark;
Jeff Johnsone7245742012-09-05 17:12:55 -070010987
10988 wpalMemoryCopy( pSendBuffer+usDataOffset,
10989 &halTxPerTrackingReqParam,
10990 sizeof(halTxPerTrackingReqParam));
Jeff Johnson295189b2012-06-20 16:38:30 -070010991
10992 pWDICtx->wdiReqStatusCB = pwdiSetTxPerTrackingReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010993 pWDICtx->pReqStatusUserData = pwdiSetTxPerTrackingReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010994
10995 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010996 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010997 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010998 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10999 pwdiSetTxPerTrackingRspCb, pEventData->pUserData, WDI_SET_TX_PER_TRACKING_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011000}/*WDI_ProcessSetTxPerTrackingReq*/
11001
11002/*=========================================================================
11003 Indications
11004=========================================================================*/
11005
11006/**
11007 @brief Process Suspend Indications function (called when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011008
11009 @param pWDICtx: pointer to the WLAN DAL context
11010 pEventData: pointer to the event information structure
11011
Jeff Johnson295189b2012-06-20 16:38:30 -070011012 @see
11013 @return Result of the function call
11014*/
11015WDI_Status
11016WDI_ProcessHostSuspendInd
Jeff Johnsone7245742012-09-05 17:12:55 -070011017(
Jeff Johnson295189b2012-06-20 16:38:30 -070011018 WDI_ControlBlockType* pWDICtx,
11019 WDI_EventInfoType* pEventData
11020)
11021{
11022 WDI_SuspendParamsType *pSuspendIndParams;
Jeff Johnsone7245742012-09-05 17:12:55 -070011023 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011024 wpt_uint16 usDataOffset = 0;
11025 wpt_uint16 usSendSize = 0;
11026 WDI_Status wdiStatus;
11027 tHalWlanHostSuspendIndParam halWlanSuspendIndparams;
11028 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11029
11030 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011031 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011032 -------------------------------------------------------------------------*/
11033 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
11034 {
11035 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011036 "%s: Invalid parameters in Suspend ind",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011037 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011038 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011039 }
11040
11041 pSuspendIndParams = (WDI_SuspendParamsType *)pEventData->pEventData;
11042
11043 /*-----------------------------------------------------------------------
11044 Get message buffer
11045 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011046 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
11047 WDI_HOST_SUSPEND_IND,
Jeff Johnson295189b2012-06-20 16:38:30 -070011048 sizeof(halWlanSuspendIndparams),
11049 &pSendBuffer, &usDataOffset, &usSendSize))||
11050 (usSendSize < (usDataOffset + sizeof(halWlanSuspendIndparams))))
11051 {
11052 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11053 "Unable to get send buffer in Suspend Ind ");
11054 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011055 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011056 }
11057
11058 halWlanSuspendIndparams.configuredMcstBcstFilterSetting =
11059 pSuspendIndParams->wdiSuspendParams.ucConfiguredMcstBcstFilterSetting;
11060
Jeff Johnsone7245742012-09-05 17:12:55 -070011061 halWlanSuspendIndparams.activeSessionCount =
Hoonki Lee9af07cf2013-04-24 01:21:58 -070011062 WDI_GetActiveSessionsCount(pWDICtx, NULL, eWLAN_PAL_TRUE);
Jeff Johnson295189b2012-06-20 16:38:30 -070011063
Jeff Johnsone7245742012-09-05 17:12:55 -070011064 wpalMemoryCopy( pSendBuffer+usDataOffset, &halWlanSuspendIndparams,
11065 sizeof(tHalWlanHostSuspendIndParam));
Jeff Johnson295189b2012-06-20 16:38:30 -070011066
11067 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011068 Send Suspend Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011069 -------------------------------------------------------------------------*/
11070 pWDICtx->wdiReqStatusCB = pSuspendIndParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011071 pWDICtx->pReqStatusUserData = pSuspendIndParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011072
Jeff Johnsone7245742012-09-05 17:12:55 -070011073 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070011074 return ( wdiStatus != WDI_STATUS_SUCCESS )?wdiStatus:WDI_STATUS_SUCCESS_SYNC;
11075}/*WDI_ProcessHostSuspendInd*/
11076
Madan Mohan Koyyalamudi01cba042013-01-10 21:56:05 -080011077
11078
11079/**
11080 @brief Process Traffic Stats Indications function (called when Main FSM allows it)
11081
11082 @param pWDICtx: pointer to the WLAN DAL context
11083 pEventData: pointer to the event information structure
11084
11085 @see
11086 @return Result of the function call
11087*/
11088WDI_Status
11089WDI_ProcessTrafficStatsInd
11090(
11091 WDI_ControlBlockType* pWDICtx,
11092 WDI_EventInfoType* pEventData
11093)
11094{
11095 WDI_TrafficStatsIndType* pTrafficStatsIndParams;
11096 wpt_uint8* pSendBuffer = NULL;
11097 wpt_uint16 usDataOffset = 0;
11098 wpt_uint16 usSendSize = 0;
11099 WDI_Status wdiStatus;
11100 tStatsClassBIndParams* pStatsClassBIndParams;
11101 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11102
11103 /*-------------------------------------------------------------------------
11104 Sanity check
11105 -------------------------------------------------------------------------*/
11106 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
11107 {
11108 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11109 "%s: Invalid parameters in Traffic Stats ind",__func__);
11110 WDI_ASSERT(0);
11111 return WDI_STATUS_E_FAILURE;
11112 }
11113
11114 pTrafficStatsIndParams = (WDI_TrafficStatsIndType *)pEventData->pEventData;
11115
11116 if(pTrafficStatsIndParams->length != sizeof(tStaStatsClassB)*(HAL_NUM_STA))
11117 {
11118 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11119 "%s: Invalid parameters in Traffic Stats ind",__func__);
11120 WDI_ASSERT(0);
11121 return WDI_STATUS_E_FAILURE;
11122 }
11123
11124 /*-----------------------------------------------------------------------
11125 Get message buffer
11126 -----------------------------------------------------------------------*/
11127 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
11128 WDI_TRAFFIC_STATS_IND,
11129 sizeof(tStatsClassBIndParams),
11130 &pSendBuffer, &usDataOffset, &usSendSize))||
11131 (usSendSize < (usDataOffset + sizeof(tStatsClassBIndParams))))
11132 {
11133 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
11134 "Unable to get send buffer in Traffic Stats Ind ");
11135 WDI_ASSERT(0);
11136 return WDI_STATUS_E_FAILURE;
11137 }
11138
11139 pStatsClassBIndParams = (tStatsClassBIndParams*)(pSendBuffer+usDataOffset);
11140
11141 pStatsClassBIndParams->duration = pTrafficStatsIndParams->duration;
11142
11143 wpalMemoryCopy(pStatsClassBIndParams->staStatsClassB,
11144 pTrafficStatsIndParams->pTrafficStats,
11145 pTrafficStatsIndParams->length);
11146
11147 /*-------------------------------------------------------------------------
11148 Send Suspend Request to HAL
11149 -------------------------------------------------------------------------*/
11150 pWDICtx->wdiReqStatusCB = pTrafficStatsIndParams->wdiReqStatusCB;
11151 pWDICtx->pReqStatusUserData = pTrafficStatsIndParams->pUserData;
11152
11153 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
11154 return ( wdiStatus != WDI_STATUS_SUCCESS )?wdiStatus:WDI_STATUS_SUCCESS_SYNC;
11155}/*WDI_ProcessTrafficStatsInd*/
11156
Chet Lanctot186b5732013-03-18 10:26:30 -070011157#ifdef WLAN_FEATURE_11W
11158/**
11159 @brief Process Exclude Unencrypted Indications function (called
11160 when Main FSM allows it)
11161
11162 @param pWDICtx: pointer to the WLAN DAL context
11163 pEventData: pointer to the event information structure
11164
11165 @see
11166 @return Result of the function call
11167*/
11168WDI_Status
11169WDI_ProcessExcludeUnencryptInd
11170(
11171 WDI_ControlBlockType* pWDICtx,
11172 WDI_EventInfoType* pEventData
11173)
11174{
11175 WDI_ExcludeUnencryptIndType* pWDIExcUnencIndParams;
11176 wpt_uint8* pSendBuffer = NULL;
11177 wpt_uint16 usDataOffset = 0;
11178 wpt_uint16 usSendSize = 0;
11179 WDI_Status wdiStatus;
11180 tHalWlanExcludeUnEncryptedIndParam* pHalExcUnencIndParams;
11181 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11182
11183 /*-------------------------------------------------------------------------
11184 Sanity check
11185 -------------------------------------------------------------------------*/
11186 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
11187 {
11188 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11189 "%s: Invalid parameters in Exclude Unencrypted ind",__func__);
11190 WDI_ASSERT(0);
11191 return WDI_STATUS_E_FAILURE;
11192 }
11193
11194 pWDIExcUnencIndParams = (WDI_ExcludeUnencryptIndType *)pEventData->pEventData;
11195
11196 /*-----------------------------------------------------------------------
11197 Get message buffer
11198 -----------------------------------------------------------------------*/
11199 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
11200 WDI_EXCLUDE_UNENCRYPTED_IND,
11201 sizeof(tHalWlanExcludeUnEncryptedIndParam),
11202 &pSendBuffer, &usDataOffset, &usSendSize))||
11203 (usSendSize < (usDataOffset + sizeof(tHalWlanExcludeUnEncryptedIndParam))))
11204 {
11205 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
11206 "Unable to get send buffer in Exclude Unencrypted Ind ");
11207 WDI_ASSERT(0);
11208 return WDI_STATUS_E_FAILURE;
11209 }
11210
11211 pHalExcUnencIndParams = (tHalWlanExcludeUnEncryptedIndParam*)(pSendBuffer+usDataOffset);
11212
11213 pHalExcUnencIndParams->bDot11ExcludeUnencrypted = pWDIExcUnencIndParams->bExcludeUnencrypt;
11214
11215 wpalMemoryCopy(pHalExcUnencIndParams->bssId,
11216 pWDIExcUnencIndParams->bssid, WDI_MAC_ADDR_LEN);
11217
11218 /*-------------------------------------------------------------------------
11219 Send Suspend Request to HAL
11220 -------------------------------------------------------------------------*/
11221 pWDICtx->wdiReqStatusCB = pWDIExcUnencIndParams->wdiReqStatusCB;
11222 pWDICtx->pReqStatusUserData = pWDIExcUnencIndParams->pUserData;
11223
11224 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
11225 return ( wdiStatus != WDI_STATUS_SUCCESS )?wdiStatus:WDI_STATUS_SUCCESS_SYNC;
11226}/*WDI_ProcessExcludeUnencryptInd*/
11227#endif
11228
Yue Mab9c86f42013-08-14 15:59:08 -070011229/**
11230 @brief Process Add Periodic Tx Pattern Indication function (called when
11231 Main FSM allows it)
11232
11233 @param pWDICtx: pointer to the WLAN DAL context
11234 pEventData: pointer to the event information structure
11235
11236 @see
11237 @return Result of the function call
11238*/
11239WDI_Status
11240WDI_ProcessAddPeriodicTxPtrnInd
11241(
11242 WDI_ControlBlockType* pWDICtx,
11243 WDI_EventInfoType* pEventData
11244)
11245{
11246 WDI_AddPeriodicTxPtrnParamsType *pAddPeriodicTxPtrnParams;
11247 wpt_uint8* pSendBuffer = NULL;
11248 wpt_uint16 usDataOffset = 0;
11249 wpt_uint16 usSendSize = 0;
11250 WDI_Status wdiStatus;
11251 tHalAddPeriodicTxPtrn *halAddPeriodicTxPtrn;
11252 wpt_uint8 selfStaIdx = 0;
11253
11254 /*-------------------------------------------------------------------------
11255 Sanity check
11256 -------------------------------------------------------------------------*/
11257 if ((NULL == pEventData) || (NULL == pEventData->pEventData))
11258 {
11259 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11260 "%s: Invalid parameters in AddPeriodicTxPtrnInd!", __func__);
11261 WDI_ASSERT(0);
11262 return WDI_STATUS_E_FAILURE;
11263 }
11264
11265 pAddPeriodicTxPtrnParams =
11266 (WDI_AddPeriodicTxPtrnParamsType *)pEventData->pEventData;
11267
11268 /*------------------------------------------------------------------------
11269 Get message buffer
11270 ------------------------------------------------------------------------*/
11271 if ((WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(pWDICtx,
11272 WDI_ADD_PERIODIC_TX_PATTERN_IND, sizeof(tHalAddPeriodicTxPtrn),
11273 &pSendBuffer, &usDataOffset, &usSendSize))||
11274 (usSendSize < (usDataOffset + sizeof(tHalAddPeriodicTxPtrn))))
11275 {
11276 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11277 "%s: Unable to get send buffer in AddPeriodicTxPtrnInd!",
11278 __func__);
11279 WDI_ASSERT(0);
11280 return WDI_STATUS_E_FAILURE;
11281 }
11282
11283 halAddPeriodicTxPtrn = (tHalAddPeriodicTxPtrn *)(pSendBuffer + usDataOffset);
11284
11285 if (WDI_STATUS_SUCCESS != WDI_STATableFindStaidByAddr(pWDICtx,
11286 pAddPeriodicTxPtrnParams->wdiAddPeriodicTxPtrnParams.macAddr,
11287 &selfStaIdx))
11288 {
11289 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
11290 "%s: Failed to get selfStaIdx!", __func__);
Wilson Yang00256342013-10-10 23:13:38 -070011291 wpalMemoryFree(pSendBuffer);
Yue Mab9c86f42013-08-14 15:59:08 -070011292
11293 return WDI_STATUS_E_FAILURE;
11294 }
11295
11296 halAddPeriodicTxPtrn->selfStaIdx = selfStaIdx;
11297 halAddPeriodicTxPtrn->ucPtrnId =
11298 pAddPeriodicTxPtrnParams->wdiAddPeriodicTxPtrnParams.ucPtrnId;
11299 halAddPeriodicTxPtrn->usPtrnSize =
11300 pAddPeriodicTxPtrnParams->wdiAddPeriodicTxPtrnParams.ucPtrnSize;
11301 halAddPeriodicTxPtrn->uPtrnIntervalMs =
11302 pAddPeriodicTxPtrnParams->wdiAddPeriodicTxPtrnParams.usPtrnIntervalMs;
11303
11304 wpalMemoryCopy(halAddPeriodicTxPtrn->ucPattern,
11305 pAddPeriodicTxPtrnParams->wdiAddPeriodicTxPtrnParams.ucPattern,
11306 pAddPeriodicTxPtrnParams->wdiAddPeriodicTxPtrnParams.ucPtrnSize);
11307
11308 /*-------------------------------------------------------------------------
11309 Send Indication to HAL
11310 -------------------------------------------------------------------------*/
11311 pWDICtx->wdiReqStatusCB = pAddPeriodicTxPtrnParams->wdiReqStatusCB;
11312 pWDICtx->pReqStatusUserData = pAddPeriodicTxPtrnParams->pUserData;
11313
11314 wdiStatus = WDI_SendIndication(pWDICtx, pSendBuffer, usSendSize);
11315
11316 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
11317 "%s: Sent WLAN_HAL_ADD_PERIODIC_TX_PTRN_IND to HAL.", __func__);
11318
11319 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus : WDI_STATUS_SUCCESS_SYNC;
11320} /* WDI_ProcessAddPeriodicTxPtrnInd */
11321
11322/**
11323 @brief Process Delete Periodic Tx Pattern Indication function (called when
11324 Main FSM allows it)
11325
11326 @param pWDICtx: pointer to the WLAN DAL context
11327 pEventData: pointer to the event information structure
11328
11329 @see
11330 @return Result of the function call
11331*/
11332WDI_Status
11333WDI_ProcessDelPeriodicTxPtrnInd
11334(
11335 WDI_ControlBlockType* pWDICtx,
11336 WDI_EventInfoType* pEventData
11337)
11338{
11339 WDI_DelPeriodicTxPtrnParamsType *pDelPeriodicTxPtrnParams;
11340 wpt_uint8* pSendBuffer = NULL;
11341 wpt_uint16 usDataOffset = 0;
11342 wpt_uint16 usSendSize = 0;
11343 WDI_Status wdiStatus;
11344 tHalDelPeriodicTxPtrn *halDelPeriodicTxPtrn;
11345 wpt_uint8 selfStaIdx = 0;
11346
11347 /*-------------------------------------------------------------------------
11348 Sanity check
11349 -------------------------------------------------------------------------*/
11350 if ((NULL == pEventData) || (NULL == pEventData->pEventData))
11351 {
11352 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11353 "%s: Invalid parameters in DelPeriodicTxPtrnInd!", __func__);
11354 WDI_ASSERT(0);
11355 return WDI_STATUS_E_FAILURE;
11356 }
11357
11358 pDelPeriodicTxPtrnParams =
11359 (WDI_DelPeriodicTxPtrnParamsType *)pEventData->pEventData;
11360
11361 /*------------------------------------------------------------------------
11362 Get message buffer
11363 ------------------------------------------------------------------------*/
11364 if ((WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(pWDICtx,
11365 WDI_DEL_PERIODIC_TX_PATTERN_IND, sizeof(tHalDelPeriodicTxPtrn),
11366 &pSendBuffer, &usDataOffset, &usSendSize))||
11367 (usSendSize < (usDataOffset + sizeof(tHalDelPeriodicTxPtrn))))
11368 {
11369 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11370 "%s: Unable to get send buffer in DelPeriodicTxPtrnInd!",
11371 __func__);
11372 WDI_ASSERT(0);
11373 return WDI_STATUS_E_FAILURE;
11374 }
11375
11376 halDelPeriodicTxPtrn = (tHalDelPeriodicTxPtrn *)(pSendBuffer + usDataOffset);
11377
11378 if (WDI_STATUS_SUCCESS != WDI_STATableFindStaidByAddr(pWDICtx,
11379 pDelPeriodicTxPtrnParams->wdiDelPeriodicTxPtrnParams.macAddr,
11380 &selfStaIdx))
11381 {
11382 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
11383 "%s: Failed to get selfStaIdx!", __func__);
Wilson Yang00256342013-10-10 23:13:38 -070011384 wpalMemoryFree(pSendBuffer);
Yue Mab9c86f42013-08-14 15:59:08 -070011385
11386 return WDI_STATUS_E_FAILURE;
11387 }
11388
11389 halDelPeriodicTxPtrn->selfStaIdx = selfStaIdx;
11390 halDelPeriodicTxPtrn->uPatternIdBitmap =
11391 pDelPeriodicTxPtrnParams->wdiDelPeriodicTxPtrnParams.ucPatternIdBitmap;
11392
11393 /*-------------------------------------------------------------------------
11394 Send Indication to HAL
11395 -------------------------------------------------------------------------*/
11396 pWDICtx->wdiReqStatusCB = pDelPeriodicTxPtrnParams->wdiReqStatusCB;
11397 pWDICtx->pReqStatusUserData = pDelPeriodicTxPtrnParams->pUserData;
11398
11399 wdiStatus = WDI_SendIndication(pWDICtx, pSendBuffer, usSendSize);
11400
11401 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
11402 "%s: Sent WLAN_HAL_DEL_PERIODIC_TX_PTRN_IND to HAL.", __func__);
11403
11404 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus : WDI_STATUS_SUCCESS_SYNC;
11405} /* WDI_ProcessDelPeriodicTxPtrnInd */
11406
Jeff Johnson295189b2012-06-20 16:38:30 -070011407/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070011408 MISC CONTROL PROCESSING REQUEST API
Jeff Johnson295189b2012-06-20 16:38:30 -070011409==========================================================================*/
11410/**
Jeff Johnsone7245742012-09-05 17:12:55 -070011411 @brief Process Channel Switch Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070011412 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011413
11414 @param pWDICtx: pointer to the WLAN DAL context
11415 pEventData: pointer to the event information structure
11416
Jeff Johnson295189b2012-06-20 16:38:30 -070011417 @see
11418 @return Result of the function call
11419*/
11420WDI_Status
11421WDI_ProcessChannelSwitchReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011422(
Jeff Johnson295189b2012-06-20 16:38:30 -070011423 WDI_ControlBlockType* pWDICtx,
11424 WDI_EventInfoType* pEventData
11425)
11426{
11427 WDI_SwitchChReqParamsType* pwdiSwitchChParams;
11428 WDI_SwitchChRspCb wdiSwitchChRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011429 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011430 wpt_uint16 usDataOffset = 0;
11431 wpt_uint16 usSendSize = 0;
11432 tSwitchChannelReqMsg halSwitchChannelReq = {{0}};
11433 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11434
11435 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011436 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011437 -------------------------------------------------------------------------*/
11438 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
11439 ( NULL == pEventData->pCBfnc ))
11440 {
11441 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011442 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011443 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011444 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011445 }
11446
11447 pwdiSwitchChParams = (WDI_SwitchChReqParamsType*)pEventData->pEventData;
11448 wdiSwitchChRspCb = (WDI_SwitchChRspCb)pEventData->pCBfnc;
11449 /*-----------------------------------------------------------------------
11450 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070011451 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070011452 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011453 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_CH_SWITCH_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011454 sizeof(halSwitchChannelReq.switchChannelParams),
11455 &pSendBuffer, &usDataOffset, &usSendSize))||
11456 ( usSendSize < (usDataOffset + sizeof(halSwitchChannelReq.switchChannelParams) )))
11457 {
11458 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080011459 "Unable to get send buffer in channel switch req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070011460 pEventData, pwdiSwitchChParams, wdiSwitchChRspCb);
11461 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011462 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011463 }
11464
Jeff Johnsone7245742012-09-05 17:12:55 -070011465 halSwitchChannelReq.switchChannelParams.channelNumber =
Jeff Johnson295189b2012-06-20 16:38:30 -070011466 pwdiSwitchChParams->wdiChInfo.ucChannel;
Jeff Johnsone7245742012-09-05 17:12:55 -070011467#ifndef WLAN_FEATURE_VOWIFI
11468 halSwitchChannelReq.switchChannelParams.localPowerConstraint =
Jeff Johnson295189b2012-06-20 16:38:30 -070011469 pwdiSwitchChParams->wdiChInfo.ucLocalPowerConstraint;
11470#endif
Jeff Johnsone7245742012-09-05 17:12:55 -070011471 halSwitchChannelReq.switchChannelParams.secondaryChannelOffset =
Jeff Johnson295189b2012-06-20 16:38:30 -070011472 pwdiSwitchChParams->wdiChInfo.wdiSecondaryChannelOffset;
11473
11474#ifdef WLAN_FEATURE_VOWIFI
11475 halSwitchChannelReq.switchChannelParams.maxTxPower
Jeff Johnsone7245742012-09-05 17:12:55 -070011476 = pwdiSwitchChParams->wdiChInfo.cMaxTxPower;
Jeff Johnson295189b2012-06-20 16:38:30 -070011477 wpalMemoryCopy(halSwitchChannelReq.switchChannelParams.selfStaMacAddr,
11478 pwdiSwitchChParams->wdiChInfo.macSelfStaMacAddr,
11479 WDI_MAC_ADDR_LEN);
11480 wpalMemoryCopy(halSwitchChannelReq.switchChannelParams.bssId,
11481 pwdiSwitchChParams->wdiChInfo.macBSSId,
11482 WDI_MAC_ADDR_LEN);
11483#endif
Jeff Johnsone7245742012-09-05 17:12:55 -070011484 wpalMemoryCopy( pSendBuffer+usDataOffset,
11485 &halSwitchChannelReq.switchChannelParams,
11486 sizeof(halSwitchChannelReq.switchChannelParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070011487
11488 pWDICtx->wdiReqStatusCB = pwdiSwitchChParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011489 pWDICtx->pReqStatusUserData = pwdiSwitchChParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011490
11491 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011492 Send Switch Channel Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011493 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011494 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11495 wdiSwitchChRspCb, pEventData->pUserData, WDI_CH_SWITCH_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011496}/*WDI_ProcessChannelSwitchReq*/
11497
11498/**
Kalikinkar dhara1e83b772014-02-06 12:59:22 -080011499 @brief Process Channel Switch Request function (called when
11500 Main FSM allows it)
11501
11502 @param pWDICtx: pointer to the WLAN DAL context
11503 pEventData: pointer to the event information structure
11504
11505 @see
11506 @return Result of the function call
11507*/
11508WDI_Status WDI_ProcessChannelSwitchReq_V1
11509(
11510 WDI_ControlBlockType* pWDICtx,
11511 WDI_EventInfoType* pEventData
11512)
11513{
11514 WDI_SwitchChReqParamsType_V1* pwdiSwitchChParams;
11515 WDI_SwitchChRspCb_V1 wdiSwitchChRspCb;
11516 wpt_uint8* pSendBuffer = NULL;
11517 wpt_uint16 usDataOffset = 0;
11518 wpt_uint16 usSendSize = 0;
11519 tSwitchChannelReqMsg_V1 halSwitchChannelReq = {{0}};
11520 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11521
11522 /*-------------------------------------------------------------------------
11523 Sanity check
11524 -------------------------------------------------------------------------*/
11525 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
11526 ( NULL == pEventData->pCBfnc ))
11527 {
11528 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11529 "%s: Invalid parameters", __func__);
11530 WDI_ASSERT(0);
11531 return WDI_STATUS_E_FAILURE;
11532 }
11533
11534 pwdiSwitchChParams = (WDI_SwitchChReqParamsType_V1*)pEventData->pEventData;
11535 wdiSwitchChRspCb = (WDI_SwitchChRspCb_V1)pEventData->pCBfnc;
11536 /*-----------------------------------------------------------------------
11537 Get message buffer
11538 ! TO DO : proper conversion into the HAL Message Request Format
11539 -----------------------------------------------------------------------*/
11540 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
11541 WDI_CH_SWITCH_REQ_V1,
11542 sizeof(halSwitchChannelReq.switchChannelParams_V1),
11543 &pSendBuffer, &usDataOffset, &usSendSize))||
11544 ( usSendSize < (usDataOffset +
11545 sizeof(halSwitchChannelReq.switchChannelParams_V1) )))
11546 {
11547 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11548 "Unable to get send buffer in channel switch req %p %p %p",
11549 pEventData, pwdiSwitchChParams, wdiSwitchChRspCb);
11550 WDI_ASSERT(0);
11551 return WDI_STATUS_E_FAILURE;
11552 }
11553
11554 halSwitchChannelReq.switchChannelParams_V1.channelSwitchSrc =
11555 pwdiSwitchChParams->wdiChInfo.channelSwitchSrc;
11556
11557 halSwitchChannelReq.switchChannelParams_V1.channelNumber =
11558 pwdiSwitchChParams->wdiChInfo.ucChannel;
11559#ifndef WLAN_FEATURE_VOWIFI
11560 halSwitchChannelReq.switchChannelParams_V1.localPowerConstraint =
11561 pwdiSwitchChParams->wdiChInfo.ucLocalPowerConstraint;
11562#endif
11563 halSwitchChannelReq.switchChannelParams_V1.secondaryChannelOffset =
11564 pwdiSwitchChParams->wdiChInfo.wdiSecondaryChannelOffset;
11565
11566#ifdef WLAN_FEATURE_VOWIFI
11567 halSwitchChannelReq.switchChannelParams_V1.maxTxPower
11568 = pwdiSwitchChParams->wdiChInfo.cMaxTxPower;
11569 wpalMemoryCopy(halSwitchChannelReq.switchChannelParams_V1.selfStaMacAddr,
11570 pwdiSwitchChParams->wdiChInfo.macSelfStaMacAddr,
11571 WDI_MAC_ADDR_LEN);
11572 wpalMemoryCopy(halSwitchChannelReq.switchChannelParams_V1.bssId,
11573 pwdiSwitchChParams->wdiChInfo.macBSSId,
11574 WDI_MAC_ADDR_LEN);
11575#endif
11576 wpalMemoryCopy( pSendBuffer+usDataOffset,
11577 &halSwitchChannelReq.switchChannelParams_V1,
11578 sizeof(halSwitchChannelReq.switchChannelParams_V1));
11579
11580 pWDICtx->wdiReqStatusCB = pwdiSwitchChParams->wdiReqStatusCB;
11581 pWDICtx->pReqStatusUserData = pwdiSwitchChParams->pUserData;
11582
11583 /*-------------------------------------------------------------------------
11584 Send Switch Channel Request to HAL
11585 -------------------------------------------------------------------------*/
11586 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11587 wdiSwitchChRspCb, pEventData->pUserData,
11588 WDI_CH_SWITCH_RESP_V1);
11589}/*WDI_ProcessChannelSwitchReq_V1*/
11590
11591/**
Jeff Johnsone7245742012-09-05 17:12:55 -070011592 @brief Process Config STA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070011593 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011594
11595 @param pWDICtx: pointer to the WLAN DAL context
11596 pEventData: pointer to the event information structure
11597
Jeff Johnson295189b2012-06-20 16:38:30 -070011598 @see
11599 @return Result of the function call
11600*/
11601WDI_Status
11602WDI_ProcessConfigStaReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011603(
Jeff Johnson295189b2012-06-20 16:38:30 -070011604 WDI_ControlBlockType* pWDICtx,
11605 WDI_EventInfoType* pEventData
11606)
11607{
11608 WDI_ConfigSTAReqParamsType* pwdiConfigSTAParams;
11609 WDI_ConfigSTARspCb wdiConfigSTARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011610 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070011611 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070011612 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011613 wpt_uint16 usDataOffset = 0;
11614 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070011615 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070011616
Jeff Johnsone7245742012-09-05 17:12:55 -070011617 tConfigStaReqMsg halConfigStaReqMsg;
11618 wpt_uint16 uMsgSize = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070011619 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11620
11621 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011622 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011623 -------------------------------------------------------------------------*/
11624 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
11625 ( NULL == pEventData->pCBfnc ))
11626 {
11627 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011628 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011629 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011630 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011631 }
11632
11633 pwdiConfigSTAParams = (WDI_ConfigSTAReqParamsType*)pEventData->pEventData;
11634 wdiConfigSTARspCb = (WDI_ConfigSTARspCb)pEventData->pCBfnc;
11635 /*-------------------------------------------------------------------------
11636 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070011637 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070011638 -------------------------------------------------------------------------*/
11639 wpalMutexAcquire(&pWDICtx->wptMutex);
11640
11641 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011642 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070011643 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011644 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
11645 pwdiConfigSTAParams->wdiReqInfo.macBSSID,
11646 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070011647
Jeff Johnsone7245742012-09-05 17:12:55 -070011648 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070011649 {
Jeff Johnsone7245742012-09-05 17:12:55 -070011650 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
11651 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
11652 __func__, MAC_ADDR_ARRAY(pwdiConfigSTAParams->wdiReqInfo.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070011653
11654 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011655 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070011656 }
11657
11658 /*------------------------------------------------------------------------
11659 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070011660 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070011661 ------------------------------------------------------------------------*/
11662 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
11663 {
Jeff Johnsone7245742012-09-05 17:12:55 -070011664 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11665 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
11666 __func__, MAC_ADDR_ARRAY(pwdiConfigSTAParams->wdiReqInfo.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070011667
Jeff Johnsone7245742012-09-05 17:12:55 -070011668 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070011669 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011670 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070011671 }
11672
11673 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011674
11675 /* Allocation of StaReqMsg Memory Based on Firmware Capabilities */
11676#ifdef WLAN_FEATURE_11AC
11677 if (WDI_getFwWlanFeatCaps(DOT11AC))
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070011678 uMsgSize = sizeof(halConfigStaReqMsg.uStaParams.configStaParams_V1); // Version-1 For 11AC
Jeff Johnsone7245742012-09-05 17:12:55 -070011679 else
11680#endif
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070011681 uMsgSize = sizeof(halConfigStaReqMsg.uStaParams.configStaParams); // Version-0 Default
Jeff Johnsone7245742012-09-05 17:12:55 -070011682
Jeff Johnson295189b2012-06-20 16:38:30 -070011683 /*-----------------------------------------------------------------------
11684 Get message buffer
11685 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011686 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_CONFIG_STA_REQ,
11687 uMsgSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070011688 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070011689 ( usSendSize < (usDataOffset + uMsgSize )))
Jeff Johnson295189b2012-06-20 16:38:30 -070011690 {
11691 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080011692 "Unable to get send buffer in config sta req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070011693 pEventData, pwdiConfigSTAParams, wdiConfigSTARspCb);
11694 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011695 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011696 }
11697
11698 /*Copy the station context*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011699 WDI_CopyWDIStaCtxToHALStaCtx( &halConfigStaReqMsg.uStaParams.configStaParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070011700 &pwdiConfigSTAParams->wdiReqInfo);
11701
11702 if(pwdiConfigSTAParams->wdiReqInfo.wdiSTAType == WDI_STA_ENTRY_SELF)
11703 {
11704 /* Need to fill in the self STA Index */
Jeff Johnsone7245742012-09-05 17:12:55 -070011705 if ( WDI_STATUS_SUCCESS !=
Jeff Johnson295189b2012-06-20 16:38:30 -070011706 WDI_STATableFindStaidByAddr(pWDICtx,
11707 pwdiConfigSTAParams->wdiReqInfo.macSTA,
Jeff Johnsone7245742012-09-05 17:12:55 -070011708 (wpt_uint8*)&halConfigStaReqMsg.uStaParams.configStaParams.staIdx ))
Jeff Johnson295189b2012-06-20 16:38:30 -070011709 {
11710 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080011711 MAC_ADDRESS_STR
11712 ": This station does not exist in the WDI Station Table",
11713 MAC_ADDR_ARRAY(pwdiConfigSTAParams->wdiReqInfo.macSTA));
Jeff Johnson295189b2012-06-20 16:38:30 -070011714 wpalMutexRelease(&pWDICtx->wptMutex);
Madan Mohan Koyyalamudif244d8f2012-11-29 11:21:05 -080011715 wpalMemoryFree(pSendBuffer);
Jeff Johnsone7245742012-09-05 17:12:55 -070011716 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011717 }
11718 }
11719 else
11720 {
11721 /* Need to fill in the STA Index to invalid, since at this point we have not
11722 yet received it from HAL */
Gopichand Nakkalae7cbc5d2013-03-27 21:09:23 -070011723 halConfigStaReqMsg.uStaParams.configStaParams.staIdx = pwdiConfigSTAParams->wdiReqInfo.staIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070011724 }
11725
11726 /* Need to fill in the BSS index */
Jeff Johnsone7245742012-09-05 17:12:55 -070011727 halConfigStaReqMsg.uStaParams.configStaParams.bssIdx = pBSSSes->ucBSSIdx;
Madan Mohan Koyyalamudi0e4acab2012-11-02 12:46:40 -070011728
Jeff Johnsone7245742012-09-05 17:12:55 -070011729 wpalMemoryCopy( pSendBuffer+usDataOffset,
11730 &halConfigStaReqMsg.uStaParams,
Madan Mohan Koyyalamudi0e4acab2012-11-02 12:46:40 -070011731 uMsgSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070011732
11733 pWDICtx->wdiReqStatusCB = pwdiConfigSTAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011734 pWDICtx->pReqStatusUserData = pwdiConfigSTAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011735
Jeff Johnsone7245742012-09-05 17:12:55 -070011736 wpalMemoryCopy( &pWDICtx->wdiCachedConfigStaReq,
11737 pwdiConfigSTAParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070011738 sizeof(pWDICtx->wdiCachedConfigStaReq));
11739
11740 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011741 Send Config STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011742 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011743 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11744 wdiConfigSTARspCb, pEventData->pUserData, WDI_CONFIG_STA_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011745}/*WDI_ProcessConfigStaReq*/
11746
11747
11748/**
Jeff Johnsone7245742012-09-05 17:12:55 -070011749 @brief Process Set Link State Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070011750 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011751
11752 @param pWDICtx: pointer to the WLAN DAL context
11753 pEventData: pointer to the event information structure
11754
Jeff Johnson295189b2012-06-20 16:38:30 -070011755 @see
11756 @return Result of the function call
11757*/
11758WDI_Status
11759WDI_ProcessSetLinkStateReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011760(
Jeff Johnson295189b2012-06-20 16:38:30 -070011761 WDI_ControlBlockType* pWDICtx,
11762 WDI_EventInfoType* pEventData
11763)
11764{
11765 WDI_SetLinkReqParamsType* pwdiSetLinkParams;
11766 WDI_SetLinkStateRspCb wdiSetLinkRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011767 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070011768 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070011769 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011770 wpt_uint16 usDataOffset = 0;
11771 wpt_uint16 usSendSize = 0;
11772 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnsone7245742012-09-05 17:12:55 -070011773 tLinkStateParams halLinkStateReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070011774 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11775
11776 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011777 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011778 -------------------------------------------------------------------------*/
11779 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
11780 ( NULL == pEventData->pCBfnc ))
11781 {
11782 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011783 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011784 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011785 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011786 }
11787
11788 pwdiSetLinkParams = (WDI_SetLinkReqParamsType*)pEventData->pEventData;
11789 wdiSetLinkRspCb = (WDI_SetLinkStateRspCb)pEventData->pCBfnc;
11790 /*-------------------------------------------------------------------------
11791 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070011792 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070011793 -------------------------------------------------------------------------*/
11794 wpalMutexAcquire(&pWDICtx->wptMutex);
11795
11796 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011797 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070011798 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011799 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
11800 pwdiSetLinkParams->wdiLinkInfo.macBSSID,
11801 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070011802
Jeff Johnsone7245742012-09-05 17:12:55 -070011803 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070011804 {
Madan Mohan Koyyalamudi891e9492012-10-21 12:19:31 -070011805 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070011806 "%s: Set link request received outside association session. macBSSID " MAC_ADDRESS_STR,
11807 __func__, MAC_ADDR_ARRAY(pwdiSetLinkParams->wdiLinkInfo.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070011808 }
11809 else
11810 {
11811 /*------------------------------------------------------------------------
11812 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070011813 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070011814 ------------------------------------------------------------------------*/
11815 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
11816 {
Jeff Johnsone7245742012-09-05 17:12:55 -070011817 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11818 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
11819 __func__, MAC_ADDR_ARRAY(pwdiSetLinkParams->wdiLinkInfo.macBSSID));
11820
11821 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070011822 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011823 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070011824 }
11825 }
11826 /* If the link is set to enter IDLE - the Session allocated for this BSS
11827 will be deleted on the Set Link State response coming from HAL
11828 - cache the request for response processing */
Jeff Johnsone7245742012-09-05 17:12:55 -070011829 wpalMemoryCopy(&pWDICtx->wdiCacheSetLinkStReq, pwdiSetLinkParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070011830 sizeof(pWDICtx->wdiCacheSetLinkStReq));
11831
11832 wpalMutexRelease(&pWDICtx->wptMutex);
11833 /*-----------------------------------------------------------------------
11834 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070011835 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070011836 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011837
11838 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_LINK_ST_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011839 sizeof(halLinkStateReqMsg),
11840 &pSendBuffer, &usDataOffset, &usSendSize))||
11841 ( usSendSize < (usDataOffset + sizeof(halLinkStateReqMsg) )))
11842 {
11843 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080011844 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070011845 pEventData, pwdiSetLinkParams, wdiSetLinkRspCb);
11846 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011847 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011848 }
11849
11850 wpalMemoryCopy(halLinkStateReqMsg.bssid,
11851 pwdiSetLinkParams->wdiLinkInfo.macBSSID, WDI_MAC_ADDR_LEN);
11852
11853 wpalMemoryCopy(halLinkStateReqMsg.selfMacAddr,
11854 pwdiSetLinkParams->wdiLinkInfo.macSelfStaMacAddr, WDI_MAC_ADDR_LEN);
11855
Jeff Johnsone7245742012-09-05 17:12:55 -070011856 halLinkStateReqMsg.state =
Jeff Johnson295189b2012-06-20 16:38:30 -070011857 WDI_2_HAL_LINK_STATE(pwdiSetLinkParams->wdiLinkInfo.wdiLinkState);
11858
Jeff Johnsone7245742012-09-05 17:12:55 -070011859 wpalMemoryCopy( pSendBuffer+usDataOffset,
11860 &halLinkStateReqMsg,
11861 sizeof(halLinkStateReqMsg));
Jeff Johnson295189b2012-06-20 16:38:30 -070011862
11863 pWDICtx->wdiReqStatusCB = pwdiSetLinkParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011864 pWDICtx->pReqStatusUserData = pwdiSetLinkParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011865
11866 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011867 Send Set Link State Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011868 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011869 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11870 wdiSetLinkRspCb, pEventData->pUserData, WDI_SET_LINK_ST_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011871}/*WDI_ProcessSetLinkStateReq*/
11872
11873
11874/**
11875 @brief Process Get Stats Request function (called when Main FSM
11876 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011877
11878 @param pWDICtx: pointer to the WLAN DAL context
11879 pEventData: pointer to the event information structure
11880
Jeff Johnson295189b2012-06-20 16:38:30 -070011881 @see
11882 @return Result of the function call
11883*/
11884WDI_Status
11885WDI_ProcessGetStatsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011886(
Jeff Johnson295189b2012-06-20 16:38:30 -070011887 WDI_ControlBlockType* pWDICtx,
11888 WDI_EventInfoType* pEventData
11889)
11890{
11891 WDI_GetStatsReqParamsType* pwdiGetStatsParams;
11892 WDI_GetStatsRspCb wdiGetStatsRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011893 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011894 wpt_uint16 usDataOffset = 0;
11895 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070011896 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070011897 WDI_BSSSessionType* pBSSSes = NULL;
11898 wpt_macAddr macBSSID;
Jeff Johnsone7245742012-09-05 17:12:55 -070011899 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070011900 tHalStatsReqMsg halStatsReqMsg;
11901 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11902
11903 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011904 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011905 -------------------------------------------------------------------------*/
11906 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData) ||
11907 ( NULL == pEventData->pCBfnc ) )
11908 {
11909 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011910 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011911 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011912 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011913 }
11914
11915 pwdiGetStatsParams = (WDI_GetStatsReqParamsType*)pEventData->pEventData;
11916 wdiGetStatsRspCb = (WDI_GetStatsRspCb)pEventData->pCBfnc;
11917
11918 /*-------------------------------------------------------------------------
11919 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070011920 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070011921 -------------------------------------------------------------------------*/
11922 wpalMutexAcquire(&pWDICtx->wptMutex);
11923
11924 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011925 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070011926 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011927 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
11928 pwdiGetStatsParams->wdiGetStatsParamsInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070011929 &macBSSID))
11930 {
11931 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080011932 "This station does not exist in the WDI Station Table %d",
11933 pwdiGetStatsParams->wdiGetStatsParamsInfo.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070011934 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011935 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011936 }
11937
Jeff Johnsone7245742012-09-05 17:12:55 -070011938 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
11939 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070011940 {
Jeff Johnsone7245742012-09-05 17:12:55 -070011941 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
11942 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
11943 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070011944
11945 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011946 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070011947 }
11948
11949 /*------------------------------------------------------------------------
11950 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070011951 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070011952 ------------------------------------------------------------------------*/
11953 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
11954 {
Jeff Johnsone7245742012-09-05 17:12:55 -070011955 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11956 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
11957 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070011958
Jeff Johnsone7245742012-09-05 17:12:55 -070011959 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070011960 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011961 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070011962 }
11963
11964
11965 wpalMutexRelease(&pWDICtx->wptMutex);
11966
11967 /*-----------------------------------------------------------------------
11968 Get message buffer
11969 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011970 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_GET_STATS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011971 sizeof(halStatsReqMsg.statsReqParams),
11972 &pSendBuffer, &usDataOffset, &usSendSize))||
11973 ( usSendSize < (usDataOffset + sizeof(halStatsReqMsg.statsReqParams) )))
11974 {
11975 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080011976 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070011977 pEventData, pwdiGetStatsParams, wdiGetStatsRspCb);
11978 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011979 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011980 }
11981
Jeff Johnsone7245742012-09-05 17:12:55 -070011982 halStatsReqMsg.statsReqParams.staId =
Jeff Johnson295189b2012-06-20 16:38:30 -070011983 pwdiGetStatsParams->wdiGetStatsParamsInfo.ucSTAIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070011984 halStatsReqMsg.statsReqParams.statsMask =
Jeff Johnson295189b2012-06-20 16:38:30 -070011985 pwdiGetStatsParams->wdiGetStatsParamsInfo.uStatsMask;
Jeff Johnsone7245742012-09-05 17:12:55 -070011986 wpalMemoryCopy( pSendBuffer+usDataOffset,
11987 &halStatsReqMsg.statsReqParams,
11988 sizeof(halStatsReqMsg.statsReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070011989
11990 pWDICtx->wdiReqStatusCB = pwdiGetStatsParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011991 pWDICtx->pReqStatusUserData = pwdiGetStatsParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011992
11993 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011994 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011995 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011996 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11997 wdiGetStatsRspCb, pEventData->pUserData, WDI_GET_STATS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011998}/*WDI_ProcessGetStatsReq*/
11999
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -080012000#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_ESE || defined(FEATURE_WLAN_LFR)
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -080012001/**
12002 @brief Process Get Roam Rssi Request function (called when Main FSM
12003 allows it)
12004
12005 @param pWDICtx: pointer to the WLAN DAL context
12006 pEventData: pointer to the event information structure
12007
12008 @see
12009 @return Result of the function call
12010*/
12011WDI_Status
12012WDI_ProcessGetRoamRssiReq
12013(
12014 WDI_ControlBlockType* pWDICtx,
12015 WDI_EventInfoType* pEventData
12016)
12017{
12018 WDI_GetRoamRssiReqParamsType* pwdiGetRoamRssiParams;
12019 WDI_GetStatsRspCb wdiGetStatsRspCb;
12020 wpt_uint8* pSendBuffer = NULL;
12021 wpt_uint16 usDataOffset = 0;
12022 wpt_uint16 usSendSize = 0;
12023 wpt_uint8 ucCurrentBSSSesIdx = 0;
12024 WDI_BSSSessionType* pBSSSes = NULL;
12025 wpt_macAddr macBSSID;
12026 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
12027 tHalGetRoamRssiReqMsg halRssiRoamReqMsg;
12028 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12029 /*-------------------------------------------------------------------------
12030 Sanity check
12031 -------------------------------------------------------------------------*/
12032 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData) ||
12033 ( NULL == pEventData->pCBfnc ) )
12034 {
12035 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12036 "%s: Invalid parameters", __func__);
12037 WDI_ASSERT(0);
12038 return WDI_STATUS_E_FAILURE;
12039 }
12040
12041 pwdiGetRoamRssiParams = (WDI_GetRoamRssiReqParamsType*)pEventData->pEventData;
12042 wdiGetStatsRspCb = (WDI_GetStatsRspCb)pEventData->pCBfnc;
12043
12044 /*-------------------------------------------------------------------------
12045 Check to see if we are in the middle of an association, if so queue, if
12046 not it means it is free to process request
12047 -------------------------------------------------------------------------*/
12048 wpalMutexAcquire(&pWDICtx->wptMutex);
12049
12050 /*------------------------------------------------------------------------
12051 Find the BSS for which the request is made
12052 ------------------------------------------------------------------------*/
12053 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
12054 pwdiGetRoamRssiParams->wdiGetRoamRssiParamsInfo.ucSTAIdx,
12055 &macBSSID))
12056 {
12057 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012058 "This station does not exist in the WDI Station Table %d",
12059 pwdiGetRoamRssiParams->wdiGetRoamRssiParamsInfo.ucSTAIdx);
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -080012060 wpalMutexRelease(&pWDICtx->wptMutex);
12061 return WDI_STATUS_E_FAILURE;
12062 }
12063
12064 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
12065 if ( NULL == pBSSSes )
12066 {
12067 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
12068 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
12069 __func__, MAC_ADDR_ARRAY(macBSSID));
12070
12071 wpalMutexRelease(&pWDICtx->wptMutex);
12072 return WDI_STATUS_E_NOT_ALLOWED;
12073 }
12074
12075 /*------------------------------------------------------------------------
12076 Check if this BSS is being currently processed or queued,
12077 if queued - queue the new request as well
12078 ------------------------------------------------------------------------*/
12079 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
12080 {
12081 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12082 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
12083 __func__, MAC_ADDR_ARRAY(macBSSID));
12084
12085 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
12086 wpalMutexRelease(&pWDICtx->wptMutex);
12087 return wdiStatus;
12088 }
12089
12090 wpalMutexRelease(&pWDICtx->wptMutex);
12091
12092 /*-----------------------------------------------------------------------
12093 Get message buffer
12094 -----------------------------------------------------------------------*/
12095 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_GET_ROAM_RSSI_REQ,
12096 sizeof(halRssiRoamReqMsg.roamRssiReqParams),
12097 &pSendBuffer, &usDataOffset, &usSendSize))||
12098 ( usSendSize < (usDataOffset + sizeof(halRssiRoamReqMsg.roamRssiReqParams) )))
12099 {
12100 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012101 "Unable to get send buffer in set bss key req %p %p %p",
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -080012102 pEventData, pwdiGetRoamRssiParams, wdiGetStatsRspCb);
12103 WDI_ASSERT(0);
12104 return WDI_STATUS_E_FAILURE;
12105 }
12106
12107 halRssiRoamReqMsg.roamRssiReqParams.staId =
12108 pwdiGetRoamRssiParams->wdiGetRoamRssiParamsInfo.ucSTAIdx;
12109 wpalMemoryCopy( pSendBuffer+usDataOffset,
12110 &halRssiRoamReqMsg.roamRssiReqParams,
12111 sizeof(halRssiRoamReqMsg.roamRssiReqParams));
12112
12113 pWDICtx->wdiReqStatusCB = pwdiGetRoamRssiParams->wdiReqStatusCB;
12114 pWDICtx->pReqStatusUserData = pwdiGetRoamRssiParams->pUserData;
12115
12116 /*-------------------------------------------------------------------------
12117 Send Get STA Request to HAL
12118 -------------------------------------------------------------------------*/
12119 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12120 wdiGetStatsRspCb, pEventData->pUserData, WDI_GET_ROAM_RSSI_RESP);
12121}/*WDI_ProcessGetRoamRssiReq*/
12122#endif
12123
Jeff Johnson295189b2012-06-20 16:38:30 -070012124/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012125 @brief Process Update Cfg Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070012126 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012127
12128 @param pWDICtx: pointer to the WLAN DAL context
12129 pEventData: pointer to the event information structure
12130
Jeff Johnson295189b2012-06-20 16:38:30 -070012131 @see
12132 @return Result of the function call
12133*/
12134WDI_Status
12135WDI_ProcessUpdateCfgReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012136(
Jeff Johnson295189b2012-06-20 16:38:30 -070012137 WDI_ControlBlockType* pWDICtx,
12138 WDI_EventInfoType* pEventData
12139)
12140{
12141 WDI_UpdateCfgReqParamsType* pwdiUpdateCfgParams = NULL;
12142 WDI_UpdateCfgRspCb wdiUpdateCfgRspCb = NULL;
12143
Jeff Johnsone7245742012-09-05 17:12:55 -070012144 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012145 wpt_uint16 usDataOffset = 0;
12146 wpt_uint16 usSendSize = 0;
12147 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12148
12149 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012150 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012151 -------------------------------------------------------------------------*/
12152 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
12153 ( NULL == pEventData->pCBfnc))
12154 {
12155 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012156 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012157 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012158 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012159 }
12160
12161 pwdiUpdateCfgParams = (WDI_UpdateCfgReqParamsType*)pEventData->pEventData;
12162 wdiUpdateCfgRspCb = (WDI_UpdateCfgRspCb)pEventData->pCBfnc;
12163
12164 /*-----------------------------------------------------------------------
12165 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070012166 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070012167 -----------------------------------------------------------------------*/
12168
Jeff Johnsone7245742012-09-05 17:12:55 -070012169 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_CFG_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012170 pwdiUpdateCfgParams->uConfigBufferLen + sizeof(wpt_uint32),
12171 &pSendBuffer, &usDataOffset, &usSendSize))||
12172 ( usSendSize < (usDataOffset + pwdiUpdateCfgParams->uConfigBufferLen)))
12173 {
12174 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012175 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070012176 pEventData, pwdiUpdateCfgParams, wdiUpdateCfgRspCb);
12177 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012178 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012179 }
12180
Jeff Johnsone7245742012-09-05 17:12:55 -070012181 wpalMemoryCopy( pSendBuffer+usDataOffset,
12182 &pwdiUpdateCfgParams->uConfigBufferLen,
12183 sizeof(wpt_uint32));
12184 wpalMemoryCopy( pSendBuffer+usDataOffset+sizeof(wpt_uint32),
12185 pwdiUpdateCfgParams->pConfigBuffer,
12186 pwdiUpdateCfgParams->uConfigBufferLen);
Jeff Johnson295189b2012-06-20 16:38:30 -070012187
12188 pWDICtx->wdiReqStatusCB = pwdiUpdateCfgParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012189 pWDICtx->pReqStatusUserData = pwdiUpdateCfgParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012190
12191 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012192 Send Update Cfg Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012193 -------------------------------------------------------------------------*/
12194
Jeff Johnsone7245742012-09-05 17:12:55 -070012195 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12196 wdiUpdateCfgRspCb, pEventData->pUserData, WDI_UPDATE_CFG_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012197
12198}/*WDI_ProcessUpdateCfgReq*/
12199
12200
12201/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012202 @brief Process Add BA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070012203 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012204
12205 @param pWDICtx: pointer to the WLAN DAL context
12206 pEventData: pointer to the event information structure
12207
Jeff Johnson295189b2012-06-20 16:38:30 -070012208 @see
12209 @return Result of the function call
12210*/
12211WDI_Status
12212WDI_ProcessAddBAReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012213(
Jeff Johnson295189b2012-06-20 16:38:30 -070012214 WDI_ControlBlockType* pWDICtx,
12215 WDI_EventInfoType* pEventData
12216)
12217{
12218 WDI_AddBAReqParamsType* pwdiAddBAParams;
12219 WDI_AddBARspCb wdiAddBARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070012220 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070012221 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070012222 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012223 wpt_uint16 usDataOffset = 0;
12224 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070012225 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070012226 wpt_macAddr macBSSID;
12227
12228 tAddBAReqMsg halAddBAReq;
12229 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12230
12231 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012232 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012233 -------------------------------------------------------------------------*/
12234 if (( NULL == pEventData ) ||
12235 ( NULL == pEventData->pEventData) ||
12236 ( NULL == pEventData->pCBfnc ))
12237 {
12238 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012239 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012240 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012241 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012242 }
12243
12244 pwdiAddBAParams = (WDI_AddBAReqParamsType*)pEventData->pEventData;
12245 wdiAddBARspCb = (WDI_AddBARspCb)pEventData->pCBfnc;
12246
12247 /*-------------------------------------------------------------------------
12248 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070012249 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070012250 -------------------------------------------------------------------------*/
12251 wpalMutexAcquire(&pWDICtx->wptMutex);
12252
12253 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012254 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070012255 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012256 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
12257 pwdiAddBAParams->wdiBAInfoType.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070012258 &macBSSID))
12259 {
12260 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012261 "This station does not exist in the WDI Station Table %d",
12262 pwdiAddBAParams->wdiBAInfoType.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070012263 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070012264 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012265 }
12266
Jeff Johnsone7245742012-09-05 17:12:55 -070012267 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
12268 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070012269 {
Jeff Johnsone7245742012-09-05 17:12:55 -070012270 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
12271 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
12272 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070012273
12274 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070012275 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070012276 }
12277
12278 /*------------------------------------------------------------------------
12279 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070012280 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070012281 ------------------------------------------------------------------------*/
12282 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
12283 {
Jeff Johnsone7245742012-09-05 17:12:55 -070012284 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12285 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
12286 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070012287
Jeff Johnsone7245742012-09-05 17:12:55 -070012288 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070012289 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070012290 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070012291 }
12292
12293
12294 wpalMutexRelease(&pWDICtx->wptMutex);
12295 /*-----------------------------------------------------------------------
12296 Get message buffer
12297 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012298 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ADD_BA_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012299 sizeof(halAddBAReq.addBAParams),
12300 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070012301 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070012302 (usDataOffset + sizeof(halAddBAReq.addBAParams) )))
12303 {
12304 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012305 "Unable to get send buffer in Add BA req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070012306 pEventData, pwdiAddBAParams, wdiAddBARspCb);
12307 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012308 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012309 }
12310
Jeff Johnsone7245742012-09-05 17:12:55 -070012311 halAddBAReq.addBAParams.baSessionID =
Jeff Johnson295189b2012-06-20 16:38:30 -070012312 pwdiAddBAParams->wdiBAInfoType.ucBaSessionID;
12313 halAddBAReq.addBAParams.winSize = pwdiAddBAParams->wdiBAInfoType.ucWinSize;
12314#ifdef FEATURE_ON_CHIP_REORDERING
Jeff Johnsone7245742012-09-05 17:12:55 -070012315 halAddBAReq.addBAParams.isReorderingDoneOnChip =
Jeff Johnson295189b2012-06-20 16:38:30 -070012316 pwdiAddBAParams->wdiBAInfoType.bIsReorderingDoneOnChip;
12317#endif
12318
Jeff Johnsone7245742012-09-05 17:12:55 -070012319 wpalMemoryCopy( pSendBuffer+usDataOffset,
12320 &halAddBAReq.addBAParams,
12321 sizeof(halAddBAReq.addBAParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070012322
12323 pWDICtx->wdiReqStatusCB = pwdiAddBAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012324 pWDICtx->pReqStatusUserData = pwdiAddBAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012325
12326 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012327 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012328 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012329 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12330 wdiAddBARspCb, pEventData->pUserData,
12331 WDI_ADD_BA_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012332}/*WDI_ProcessAddBAReq*/
12333
12334
12335
12336/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012337 @brief Process Trigger BA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070012338 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012339
12340 @param pWDICtx: pointer to the WLAN DAL context
12341 pEventData: pointer to the event information structure
12342
Jeff Johnson295189b2012-06-20 16:38:30 -070012343 @see
12344 @return Result of the function call
12345*/
12346WDI_Status
12347WDI_ProcessTriggerBAReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012348(
Jeff Johnson295189b2012-06-20 16:38:30 -070012349 WDI_ControlBlockType* pWDICtx,
12350 WDI_EventInfoType* pEventData
12351)
12352{
12353 WDI_TriggerBAReqParamsType* pwdiTriggerBAParams;
12354 WDI_TriggerBARspCb wdiTriggerBARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070012355 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070012356 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070012357 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012358 wpt_uint16 usDataOffset = 0;
12359 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070012360 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070012361 wpt_uint16 index;
12362 wpt_macAddr macBSSID;
Jeff Johnsone7245742012-09-05 17:12:55 -070012363
Jeff Johnson295189b2012-06-20 16:38:30 -070012364 tTriggerBAReqMsg halTriggerBAReq;
12365 tTriggerBaReqCandidate* halTriggerBACandidate;
12366 WDI_TriggerBAReqCandidateType* wdiTriggerBACandidate;
12367 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12368
12369 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012370 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012371 -------------------------------------------------------------------------*/
12372 if (( NULL == pEventData ) ||
12373 ( NULL == pEventData->pEventData ) ||
12374 ( NULL == pEventData->pCBfnc ))
12375 {
12376 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012377 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012378 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012379 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012380 }
12381
12382 pwdiTriggerBAParams = (WDI_TriggerBAReqParamsType*)pEventData->pEventData;
12383 wdiTriggerBARspCb = (WDI_TriggerBARspCb)pEventData->pCBfnc;
12384 /*-------------------------------------------------------------------------
12385 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070012386 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070012387 -------------------------------------------------------------------------*/
12388 wpalMutexAcquire(&pWDICtx->wptMutex);
12389
12390 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012391 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070012392 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012393 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
12394 pwdiTriggerBAParams->wdiTriggerBAInfoType.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070012395 &macBSSID))
12396 {
12397 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012398 "This station does not exist in the WDI Station Table %d",
12399 pwdiTriggerBAParams->wdiTriggerBAInfoType.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070012400 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070012401 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012402 }
12403
Jeff Johnsone7245742012-09-05 17:12:55 -070012404 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
12405 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070012406 {
Jeff Johnsone7245742012-09-05 17:12:55 -070012407 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
12408 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
12409 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070012410
12411 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070012412 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070012413 }
12414
12415 /*------------------------------------------------------------------------
12416 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070012417 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070012418 ------------------------------------------------------------------------*/
12419 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
12420 {
Jeff Johnsone7245742012-09-05 17:12:55 -070012421 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12422 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
12423 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070012424
Jeff Johnsone7245742012-09-05 17:12:55 -070012425 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070012426 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070012427 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070012428 }
12429
12430
12431 wpalMutexRelease(&pWDICtx->wptMutex);
12432 /*-----------------------------------------------------------------------
12433 Get message buffer
12434 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012435 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
12436 WDI_TRIGGER_BA_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012437 sizeof(halTriggerBAReq.triggerBAParams) +
Jeff Johnsone7245742012-09-05 17:12:55 -070012438 (sizeof(tTriggerBaReqCandidate) *
Jeff Johnson295189b2012-06-20 16:38:30 -070012439 pwdiTriggerBAParams->wdiTriggerBAInfoType.usBACandidateCnt),
12440 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070012441 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070012442 (usDataOffset + sizeof(halTriggerBAReq.triggerBAParams)+
Jeff Johnsone7245742012-09-05 17:12:55 -070012443 (sizeof(tTriggerBaReqCandidate) *
Jeff Johnson295189b2012-06-20 16:38:30 -070012444 pwdiTriggerBAParams->wdiTriggerBAInfoType.usBACandidateCnt) )))
12445 {
12446 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012447 "Unable to get send buffer in Trigger BA req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070012448 pEventData, pwdiTriggerBAParams, wdiTriggerBARspCb);
12449 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012450 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012451 }
12452
Jeff Johnsone7245742012-09-05 17:12:55 -070012453 halTriggerBAReq.triggerBAParams.baSessionID =
Jeff Johnson295189b2012-06-20 16:38:30 -070012454 pwdiTriggerBAParams->wdiTriggerBAInfoType.ucBASessionID;
Jeff Johnsone7245742012-09-05 17:12:55 -070012455 halTriggerBAReq.triggerBAParams.baCandidateCnt =
Jeff Johnson295189b2012-06-20 16:38:30 -070012456 pwdiTriggerBAParams->wdiTriggerBAInfoType.usBACandidateCnt;
12457
Jeff Johnsone7245742012-09-05 17:12:55 -070012458 wpalMemoryCopy( pSendBuffer+usDataOffset,
12459 &halTriggerBAReq.triggerBAParams,
12460 sizeof(halTriggerBAReq.triggerBAParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070012461
Jeff Johnsone7245742012-09-05 17:12:55 -070012462 wdiTriggerBACandidate =
Jeff Johnson295189b2012-06-20 16:38:30 -070012463 (WDI_TriggerBAReqCandidateType*)(pwdiTriggerBAParams + 1);
12464 halTriggerBACandidate = (tTriggerBaReqCandidate*)(pSendBuffer+usDataOffset+
12465 sizeof(halTriggerBAReq.triggerBAParams));
Jeff Johnsone7245742012-09-05 17:12:55 -070012466
12467 for(index = 0 ; index < halTriggerBAReq.triggerBAParams.baCandidateCnt ;
Jeff Johnson295189b2012-06-20 16:38:30 -070012468 index++)
12469 {
12470 halTriggerBACandidate->staIdx = wdiTriggerBACandidate->ucSTAIdx;
12471 halTriggerBACandidate->tidBitmap = wdiTriggerBACandidate->ucTidBitmap;
12472 halTriggerBACandidate++;
12473 wdiTriggerBACandidate++;
12474 }
12475
12476 pWDICtx->wdiReqStatusCB = pwdiTriggerBAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012477 pWDICtx->pReqStatusUserData = pwdiTriggerBAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012478
12479 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012480 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012481 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012482 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12483 wdiTriggerBARspCb, pEventData->pUserData,
12484 WDI_TRIGGER_BA_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012485}/*WDI_ProcessTriggerBAReq*/
12486
12487
12488
12489/**
12490 @brief Process Update Beacon Params Request function (called when Main FSM
12491 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012492
12493 @param pWDICtx: pointer to the WLAN DAL context
12494 pEventData: pointer to the event information structure
12495
Jeff Johnson295189b2012-06-20 16:38:30 -070012496 @see
12497 @return Result of the function call
12498*/
12499WDI_Status
12500WDI_ProcessUpdateBeaconParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012501(
Jeff Johnson295189b2012-06-20 16:38:30 -070012502 WDI_ControlBlockType* pWDICtx,
12503 WDI_EventInfoType* pEventData
12504)
12505{
12506 WDI_UpdateBeaconParamsType* pwdiUpdateBeaconParams;
12507 WDI_UpdateBeaconParamsRspCb wdiUpdateBeaconParamsRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070012508 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012509 wpt_uint16 usDataOffset = 0;
12510 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070012511 tUpdateBeaconParams halUpdateBeaconParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070012512 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12513
12514 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012515 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012516 -------------------------------------------------------------------------*/
12517 if (( NULL == pEventData ) ||
12518 ( NULL == pEventData->pEventData) ||
12519 ( NULL == pEventData->pCBfnc))
12520 {
12521 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012522 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012523 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012524 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012525 }
12526
12527 pwdiUpdateBeaconParams = (WDI_UpdateBeaconParamsType*)pEventData->pEventData;
12528 wdiUpdateBeaconParamsRspCb = (WDI_UpdateBeaconParamsRspCb)pEventData->pCBfnc;
12529 /*-----------------------------------------------------------------------
12530 Get message buffer
12531 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012532 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPD_BCON_PRMS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012533 sizeof(halUpdateBeaconParams),
12534 &pSendBuffer, &usDataOffset, &usSendSize))||
12535 ( usSendSize < (usDataOffset + sizeof(halUpdateBeaconParams) )))
12536 {
12537 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012538 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070012539 pEventData, pwdiUpdateBeaconParams, wdiUpdateBeaconParamsRspCb);
12540 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012541 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012542 }
12543
12544 /*BSS Index of the BSS*/
12545 halUpdateBeaconParams.bssIdx =
12546 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucBssIdx;
12547 /*shortPreamble mode. HAL should update all the STA rates when it
12548 receives this message*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012549 halUpdateBeaconParams.fShortPreamble =
Jeff Johnson295189b2012-06-20 16:38:30 -070012550 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucfShortPreamble;
12551 /* short Slot time.*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012552 halUpdateBeaconParams.fShortSlotTime =
Jeff Johnson295189b2012-06-20 16:38:30 -070012553 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucfShortSlotTime;
12554 /* Beacon Interval */
Jeff Johnsone7245742012-09-05 17:12:55 -070012555 halUpdateBeaconParams.beaconInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070012556 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.usBeaconInterval;
12557
12558 /*Protection related */
Jeff Johnsone7245742012-09-05 17:12:55 -070012559 halUpdateBeaconParams.llaCoexist =
Jeff Johnson295189b2012-06-20 16:38:30 -070012560 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucllaCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070012561 halUpdateBeaconParams.llbCoexist =
Jeff Johnson295189b2012-06-20 16:38:30 -070012562 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucllbCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070012563 halUpdateBeaconParams.llgCoexist =
Jeff Johnson295189b2012-06-20 16:38:30 -070012564 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucllgCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070012565 halUpdateBeaconParams.ht20MhzCoexist =
Jeff Johnson295189b2012-06-20 16:38:30 -070012566 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucHt20MhzCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070012567 halUpdateBeaconParams.llnNonGFCoexist =
Jeff Johnson295189b2012-06-20 16:38:30 -070012568 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucllnNonGFCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070012569 halUpdateBeaconParams.fLsigTXOPProtectionFullSupport =
Jeff Johnson295189b2012-06-20 16:38:30 -070012570 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucfLsigTXOPProtectionFullSupport;
12571 halUpdateBeaconParams.fRIFSMode =
12572 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucfRIFSMode;
Jeff Johnsone7245742012-09-05 17:12:55 -070012573 halUpdateBeaconParams.paramChangeBitmap =
Jeff Johnson295189b2012-06-20 16:38:30 -070012574 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.usChangeBitmap;
12575
Jeff Johnsone7245742012-09-05 17:12:55 -070012576 wpalMemoryCopy( pSendBuffer+usDataOffset, &halUpdateBeaconParams,
12577 sizeof(halUpdateBeaconParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070012578
12579 pWDICtx->wdiReqStatusCB = pwdiUpdateBeaconParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012580 pWDICtx->pReqStatusUserData = pwdiUpdateBeaconParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012581
12582 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012583 Send Del TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012584 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012585 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12586 wdiUpdateBeaconParamsRspCb, pEventData->pUserData, WDI_UPD_BCON_PRMS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012587}/*WDI_ProcessUpdateBeaconParamsReq*/
12588
12589
12590
12591/**
12592 @brief Process Send Beacon template Request function (called when Main FSM
12593 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012594
12595 @param pWDICtx: pointer to the WLAN DAL context
12596 pEventData: pointer to the event information structure
12597
Jeff Johnson295189b2012-06-20 16:38:30 -070012598 @see
12599 @return Result of the function call
12600*/
12601WDI_Status
12602WDI_ProcessSendBeaconParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012603(
Jeff Johnson295189b2012-06-20 16:38:30 -070012604 WDI_ControlBlockType* pWDICtx,
12605 WDI_EventInfoType* pEventData
12606)
12607{
12608 WDI_SendBeaconParamsType* pwdiSendBeaconParams;
12609 WDI_SendBeaconParamsRspCb wdiSendBeaconParamsRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070012610 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012611 wpt_uint16 usDataOffset = 0;
12612 wpt_uint16 usSendSize = 0;
12613 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12614
12615 tSendBeaconReqMsg halSendBeaconReq;
12616 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012617 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012618 -------------------------------------------------------------------------*/
12619 if (( NULL == pEventData ) ||
12620 ( NULL == pEventData->pEventData ) ||
12621 ( NULL == pEventData->pCBfnc ))
12622 {
12623 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012624 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012625 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012626 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012627 }
12628
12629 pwdiSendBeaconParams = (WDI_SendBeaconParamsType*)pEventData->pEventData;
12630 wdiSendBeaconParamsRspCb = (WDI_SendBeaconParamsRspCb)pEventData->pCBfnc;
12631 /*-----------------------------------------------------------------------
12632 Get message buffer
12633 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012634 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SND_BCON_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012635 sizeof(halSendBeaconReq.sendBeaconParam),
12636 &pSendBuffer, &usDataOffset, &usSendSize))||
12637 ( usSendSize < (usDataOffset + sizeof(halSendBeaconReq.sendBeaconParam) )))
12638 {
12639 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012640 "Unable to get send buffer in send beacon req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070012641 pEventData, pwdiSendBeaconParams, wdiSendBeaconParamsRspCb);
12642 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012643 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012644 }
12645
12646 wpalMemoryCopy(halSendBeaconReq.sendBeaconParam.bssId,
12647 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.macBSSID,
12648 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070012649 halSendBeaconReq.sendBeaconParam.beaconLength =
Jeff Johnson295189b2012-06-20 16:38:30 -070012650 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.beaconLength;
12651 wpalMemoryCopy(halSendBeaconReq.sendBeaconParam.beacon,
12652 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.beacon,
12653 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.beaconLength);
Jeff Johnsone7245742012-09-05 17:12:55 -070012654 halSendBeaconReq.sendBeaconParam.timIeOffset =
Jeff Johnson295189b2012-06-20 16:38:30 -070012655 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.timIeOffset;
Gopichand Nakkala81aef732013-03-22 11:15:19 +053012656 /* usP2PIeOffset should be atleast greater than timIeOffset */
12657 if ((pwdiSendBeaconParams->wdiSendBeaconParamsInfo.usP2PIeOffset != 0 ) &&
12658 (pwdiSendBeaconParams->wdiSendBeaconParamsInfo.usP2PIeOffset <
12659 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.timIeOffset))
12660 {
12661 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12662 "Invalid usP2PIeOffset %hu",
12663 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.usP2PIeOffset);
12664 WDI_ASSERT(0);
12665 return WDI_STATUS_E_FAILURE;
12666 }
12667
Jeff Johnsone7245742012-09-05 17:12:55 -070012668 halSendBeaconReq.sendBeaconParam.p2pIeOffset =
Jeff Johnson295189b2012-06-20 16:38:30 -070012669 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.usP2PIeOffset;
Jeff Johnson295189b2012-06-20 16:38:30 -070012670
Jeff Johnsone7245742012-09-05 17:12:55 -070012671 wpalMemoryCopy( pSendBuffer+usDataOffset,
12672 &halSendBeaconReq.sendBeaconParam,
12673 sizeof(halSendBeaconReq.sendBeaconParam));
Jeff Johnson295189b2012-06-20 16:38:30 -070012674
12675 pWDICtx->wdiReqStatusCB = pwdiSendBeaconParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012676 pWDICtx->pReqStatusUserData = pwdiSendBeaconParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012677
12678 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012679 Send Del TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012680 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012681 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12682 wdiSendBeaconParamsRspCb, pEventData->pUserData, WDI_SND_BCON_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012683}/*WDI_ProcessSendBeaconParamsReq*/
12684
12685/**
12686 @brief Process Update Beacon Params Request function (called when Main FSM
12687 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012688
12689 @param pWDICtx: pointer to the WLAN DAL context
12690 pEventData: pointer to the event information structure
12691
Jeff Johnson295189b2012-06-20 16:38:30 -070012692 @see
12693 @return Result of the function call
12694*/
12695WDI_Status
12696WDI_ProcessUpdateProbeRspTemplateReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012697(
Jeff Johnson295189b2012-06-20 16:38:30 -070012698 WDI_ControlBlockType* pWDICtx,
12699 WDI_EventInfoType* pEventData
12700)
12701{
12702 WDI_UpdateProbeRspTemplateParamsType* pwdiUpdateProbeRespTmplParams;
12703 WDI_UpdateProbeRspTemplateRspCb wdiUpdateProbeRespTmplRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070012704 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012705 wpt_uint16 usDataOffset = 0;
12706 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070012707 tSendProbeRespReqParams halUpdateProbeRspTmplParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070012708 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12709
12710 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012711 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012712 -------------------------------------------------------------------------*/
12713 if (( NULL == pEventData ) ||
12714 ( NULL == pEventData->pEventData) ||
12715 ( NULL == pEventData->pCBfnc))
12716 {
12717 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012718 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012719 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012720 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012721 }
12722
Jeff Johnsone7245742012-09-05 17:12:55 -070012723 pwdiUpdateProbeRespTmplParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070012724 (WDI_UpdateProbeRspTemplateParamsType*)pEventData->pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070012725 wdiUpdateProbeRespTmplRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070012726 (WDI_UpdateProbeRspTemplateRspCb)pEventData->pCBfnc;
12727 /*-----------------------------------------------------------------------
12728 Get message buffer
12729 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012730 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPD_PROBE_RSP_TEMPLATE_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012731 sizeof(halUpdateProbeRspTmplParams),
12732 &pSendBuffer, &usDataOffset, &usSendSize))||
12733 ( usSendSize < (usDataOffset + sizeof(halUpdateProbeRspTmplParams) )))
12734 {
12735 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012736 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070012737 pEventData, pwdiUpdateProbeRespTmplParams, wdiUpdateProbeRespTmplRspCb);
12738 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012739 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012740 }
12741
12742 wpalMemoryCopy(halUpdateProbeRspTmplParams.bssId,
Jeff Johnsone7245742012-09-05 17:12:55 -070012743 pwdiUpdateProbeRespTmplParams->wdiProbeRspTemplateInfo.macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -070012744 WDI_MAC_ADDR_LEN);
12745
Jeff Johnsone7245742012-09-05 17:12:55 -070012746 halUpdateProbeRspTmplParams.probeRespTemplateLen =
Jeff Johnson295189b2012-06-20 16:38:30 -070012747 pwdiUpdateProbeRespTmplParams->wdiProbeRspTemplateInfo.uProbeRespTemplateLen;
12748
12749 wpalMemoryCopy(halUpdateProbeRspTmplParams.pProbeRespTemplate,
12750 pwdiUpdateProbeRespTmplParams->wdiProbeRspTemplateInfo.pProbeRespTemplate,
Jeff Johnsone7245742012-09-05 17:12:55 -070012751 BEACON_TEMPLATE_SIZE);
Jeff Johnson295189b2012-06-20 16:38:30 -070012752
12753
12754 wpalMemoryCopy(halUpdateProbeRspTmplParams.ucProxyProbeReqValidIEBmap,
12755 pwdiUpdateProbeRespTmplParams->wdiProbeRspTemplateInfo.uaProxyProbeReqValidIEBmap,
12756 WDI_PROBE_REQ_BITMAP_IE_LEN);
12757
Jeff Johnsone7245742012-09-05 17:12:55 -070012758 wpalMemoryCopy( pSendBuffer+usDataOffset,
12759 &halUpdateProbeRspTmplParams,
12760 sizeof(halUpdateProbeRspTmplParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070012761
12762 pWDICtx->wdiReqStatusCB = pwdiUpdateProbeRespTmplParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012763 pWDICtx->pReqStatusUserData = pwdiUpdateProbeRespTmplParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012764
12765 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012766 Send Update Probe Resp Template Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012767 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012768 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12769 wdiUpdateProbeRespTmplRspCb, pEventData->pUserData,
12770 WDI_UPD_PROBE_RSP_TEMPLATE_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012771}/*WDI_ProcessUpdateProbeRspTemplateReq*/
12772
12773/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012774 @brief Process NV blob download function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070012775 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012776
12777 @param pWDICtx: pointer to the WLAN DAL context
12778 pEventData: pointer to the event information structure
12779
Jeff Johnson295189b2012-06-20 16:38:30 -070012780 @see
12781 @return Result of the function call
12782*/
12783WDI_Status
12784WDI_ProcessNvDownloadReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012785(
Jeff Johnson295189b2012-06-20 16:38:30 -070012786 WDI_ControlBlockType* pWDICtx,
12787 WDI_EventInfoType* pEventData
12788)
12789{
12790
12791 WDI_NvDownloadReqParamsType* pwdiNvDownloadReqParams = NULL;
12792 WDI_NvDownloadRspCb wdiNvDownloadRspCb = NULL;
12793
12794 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012795 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012796 -------------------------------------------------------------------------*/
12797 if (( NULL == pEventData ) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070012798 ( NULL == (pwdiNvDownloadReqParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070012799 (WDI_NvDownloadReqParamsType*)pEventData->pEventData)) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070012800 ( NULL == (wdiNvDownloadRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070012801 (WDI_NvDownloadRspCb)pEventData->pCBfnc)))
12802 {
12803 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012804 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012805 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012806 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012807 }
12808
12809 /*Intialize the Nv Blob Info */
Jeff Johnsone7245742012-09-05 17:12:55 -070012810 pWDICtx->wdiNvBlobInfo.usTotalFragment =
Jeff Johnson295189b2012-06-20 16:38:30 -070012811 TOTALFRAGMENTS(pwdiNvDownloadReqParams->wdiBlobInfo.uBlobSize);
12812
12813 /*cache the wdi nv request message here if the the first fragment
12814 * To issue the request to HAL for the next fragment */
12815 if( 0 == pWDICtx->wdiNvBlobInfo.usCurrentFragment)
12816 {
Jeff Johnsone7245742012-09-05 17:12:55 -070012817 wpalMemoryCopy(&pWDICtx->wdiCachedNvDownloadReq,
12818 pwdiNvDownloadReqParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070012819 sizeof(pWDICtx->wdiCachedNvDownloadReq));
12820
12821 pWDICtx->pfncRspCB = pEventData->pCBfnc;
12822 pWDICtx->pRspCBUserData = pEventData->pUserData;
12823 }
12824
12825 return WDI_SendNvBlobReq(pWDICtx,pEventData);
12826}
12827
12828/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012829 @brief Process Set Max Tx Power Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070012830 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012831
12832 @param pWDICtx: pointer to the WLAN DAL context
12833 pEventData: pointer to the event information structure
12834
Jeff Johnson295189b2012-06-20 16:38:30 -070012835 @see
12836 @return Result of the function call
12837*/
12838WDI_Status WDI_ProcessSetMaxTxPowerReq
12839(
12840 WDI_ControlBlockType* pWDICtx,
12841 WDI_EventInfoType* pEventData
12842)
12843{
12844 WDI_SetMaxTxPowerParamsType* pwdiSetMaxTxPowerParams = NULL;
12845 WDA_SetMaxTxPowerRspCb wdiSetMaxTxPowerRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070012846 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012847 wpt_uint16 usDataOffset = 0;
12848 wpt_uint16 usSendSize = 0;
12849 tSetMaxTxPwrReq halSetMaxTxPower;
12850 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12851
12852 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012853 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012854 -------------------------------------------------------------------------*/
12855 if (( NULL == pEventData ) ||
12856 ( NULL == pEventData->pEventData ) ||
12857 ( NULL == pEventData->pCBfnc ))
12858 {
12859 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012860 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012861 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012862 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012863 }
Jeff Johnsone7245742012-09-05 17:12:55 -070012864 pwdiSetMaxTxPowerParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070012865 (WDI_SetMaxTxPowerParamsType*)pEventData->pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070012866 wdiSetMaxTxPowerRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070012867 (WDA_SetMaxTxPowerRspCb)pEventData->pCBfnc;
12868
12869 /*-----------------------------------------------------------------------
12870 Get message buffer
12871 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012872if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_MAX_TX_POWER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012873 sizeof(halSetMaxTxPower.setMaxTxPwrParams),
12874 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070012875 ( usSendSize < (usDataOffset + sizeof(halSetMaxTxPower.setMaxTxPwrParams)
Jeff Johnson295189b2012-06-20 16:38:30 -070012876)))
12877 {
12878 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012879 "Unable to get Set Max Tx Power req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070012880 pEventData, pwdiSetMaxTxPowerParams, wdiSetMaxTxPowerRspCb);
12881 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012882 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012883 }
12884
12885 wpalMemoryCopy(halSetMaxTxPower.setMaxTxPwrParams.bssId,
12886 pwdiSetMaxTxPowerParams->wdiMaxTxPowerInfo.macBSSId,
12887 WDI_MAC_ADDR_LEN);
12888
12889 wpalMemoryCopy(halSetMaxTxPower.setMaxTxPwrParams.selfStaMacAddr,
12890 pwdiSetMaxTxPowerParams->wdiMaxTxPowerInfo.macSelfStaMacAddr,
12891 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070012892 halSetMaxTxPower.setMaxTxPwrParams.power =
Jeff Johnson295189b2012-06-20 16:38:30 -070012893 pwdiSetMaxTxPowerParams->wdiMaxTxPowerInfo.ucPower;
Jeff Johnsone7245742012-09-05 17:12:55 -070012894
12895 wpalMemoryCopy( pSendBuffer+usDataOffset,
12896 &halSetMaxTxPower.setMaxTxPwrParams,
12897 sizeof(halSetMaxTxPower.setMaxTxPwrParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070012898
12899 pWDICtx->wdiReqStatusCB = pwdiSetMaxTxPowerParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012900 pWDICtx->pReqStatusUserData = pwdiSetMaxTxPowerParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012901
12902 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012903 Send Del TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012904 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012905 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12906 wdiSetMaxTxPowerRspCb, pEventData->pUserData,
12907 WDI_SET_MAX_TX_POWER_RESP);
12908
Jeff Johnson295189b2012-06-20 16:38:30 -070012909}
12910
Arif Hussaina5ebce02013-08-09 15:09:58 -070012911/*
12912 @brief Process Set Max Tx Power Per Band Request function (called when Main
12913 FSM allows it)
12914
12915 @param pWDICtx: pointer to the WLAN DAL context
12916 pEventData: pointer to the event information structure
12917
12918 @see
12919 @return Result of the function call
12920*/
12921WDI_Status WDI_ProcessSetMaxTxPowerPerBandReq
12922(
12923 WDI_ControlBlockType* pWDICtx,
12924 WDI_EventInfoType* pEventData
12925)
12926{
12927 WDI_SetMaxTxPowerPerBandParamsType* pwdiSetMaxTxPowerPerBandParams = NULL;
12928 WDA_SetMaxTxPowerPerBandRspCb wdiSetMaxTxPowerPerBandRspCb;
12929 wpt_uint8* pSendBuffer = NULL;
12930 wpt_uint16 usDataOffset = 0;
12931 wpt_uint16 usSendSize = 0;
Arif Hussainf8f080c2014-04-03 09:48:36 -070012932 tpSetMaxTxPwrPerBandParams phalSetMxTxPwrPerBand = NULL;
Arif Hussaina5ebce02013-08-09 15:09:58 -070012933 WDI_Status rValue = WDI_STATUS_SUCCESS;
12934 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12935
12936 /*-------------------------------------------------------------------------
12937 Sanity check
12938 -------------------------------------------------------------------------*/
12939 if (( NULL == pEventData ) ||
12940 ( NULL == pEventData->pEventData ) ||
12941 ( NULL == pEventData->pCBfnc ))
12942 {
12943 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
12944 "%s: Invalid parameters", __func__);
12945 WDI_ASSERT(0);
12946 return WDI_STATUS_E_FAILURE;
12947 }
12948 pwdiSetMaxTxPowerPerBandParams = \
12949 (WDI_SetMaxTxPowerPerBandParamsType*)pEventData->pEventData;
12950
12951 wdiSetMaxTxPowerPerBandRspCb = \
12952 (WDA_SetMaxTxPowerPerBandRspCb)pEventData->pCBfnc;
12953
12954 /*-----------------------------------------------------------------------
12955 Get message buffer
12956 -----------------------------------------------------------------------*/
12957
12958 rValue = WDI_GetMessageBuffer(pWDICtx,
12959 WDI_SET_MAX_TX_POWER_PER_BAND_REQ,
12960 sizeof(tSetMaxTxPwrPerBandParams),
12961 &pSendBuffer, &usDataOffset, &usSendSize);
12962
12963 if ((WDI_STATUS_SUCCESS != rValue)|| (usSendSize <
12964 (usDataOffset + sizeof(tSetMaxTxPwrPerBandParams))))
12965 {
12966 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
12967 "Unable to get Set Max Tx Power Per Band req %p %p %p",
12968 pEventData, pwdiSetMaxTxPowerPerBandParams,
12969 wdiSetMaxTxPowerPerBandRspCb);
12970 WDI_ASSERT(0);
12971 return WDI_STATUS_E_FAILURE;
12972 }
12973
12974
Arif Hussainf8f080c2014-04-03 09:48:36 -070012975 phalSetMxTxPwrPerBand = (tpSetMaxTxPwrPerBandParams)(pSendBuffer + usDataOffset);
12976 phalSetMxTxPwrPerBand->bandInfo = \
Arif Hussaina5ebce02013-08-09 15:09:58 -070012977 pwdiSetMaxTxPowerPerBandParams->wdiMaxTxPowerPerBandInfo.bandInfo;
12978
Arif Hussainf8f080c2014-04-03 09:48:36 -070012979 phalSetMxTxPwrPerBand->power = \
Arif Hussaina5ebce02013-08-09 15:09:58 -070012980 pwdiSetMaxTxPowerPerBandParams->wdiMaxTxPowerPerBandInfo.ucPower;
12981
12982 pWDICtx->wdiReqStatusCB = pwdiSetMaxTxPowerPerBandParams->wdiReqStatusCB;
12983 pWDICtx->pReqStatusUserData = pwdiSetMaxTxPowerPerBandParams->pUserData;
12984
12985 /*-------------------------------------------------------------------------
12986 Send Set Max Tx Power Per Band Request to HAL
12987 -------------------------------------------------------------------------*/
12988 return WDI_SendMsg(pWDICtx, pSendBuffer, usSendSize,
12989 wdiSetMaxTxPowerPerBandRspCb, pEventData->pUserData,
12990 WDI_SET_MAX_TX_POWER_PER_BAND_RSP);
12991}
12992
schang86c22c42013-03-13 18:41:24 -070012993/**
12994 @brief Process Set Tx Power Request function (called when Main
12995 FSM allows it)
12996
12997 @param pWDICtx: pointer to the WLAN DAL context
12998 pEventData: pointer to the event information structure
12999
13000 @see
13001 @return Result of the function call
13002*/
13003WDI_Status WDI_ProcessSetTxPowerReq
13004(
13005 WDI_ControlBlockType* pWDICtx,
13006 WDI_EventInfoType* pEventData
13007)
13008{
13009 WDI_SetTxPowerParamsType* pwdiSetTxPowerParams = NULL;
13010 WDA_SetTxPowerRspCb wdiSetTxPowerRspCb;
13011 wpt_uint8* pSendBuffer = NULL;
13012 wpt_uint16 usDataOffset = 0;
13013 wpt_uint16 usSendSize = 0;
Leo Chang9a43db92013-03-25 17:39:58 -070013014 tSetTxPwrReqParams *halSetTxPower = NULL;
schang86c22c42013-03-13 18:41:24 -070013015 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13016
13017 /*-------------------------------------------------------------------------
13018 Sanity check
13019 -------------------------------------------------------------------------*/
13020 if (( NULL == pEventData ) ||
13021 ( NULL == pEventData->pEventData ) ||
13022 ( NULL == pEventData->pCBfnc ))
13023 {
13024 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
13025 "%s: Invalid parameters", __func__);
13026 WDI_ASSERT(0);
13027 return WDI_STATUS_E_FAILURE;
13028 }
13029
13030 pwdiSetTxPowerParams =
13031 (WDI_SetTxPowerParamsType*)pEventData->pEventData;
13032 wdiSetTxPowerRspCb =
13033 (WDA_SetTxPowerRspCb)pEventData->pCBfnc;
13034
13035 /*-----------------------------------------------------------------------
13036 Get message buffer
13037 -----------------------------------------------------------------------*/
13038 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_TX_POWER_REQ,
13039 sizeof(tSetTxPwrReqParams),
13040 &pSendBuffer, &usDataOffset, &usSendSize))||
13041 ( usSendSize < (usDataOffset + sizeof(tSetTxPwrReqParams)
13042 )))
13043 {
13044 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080013045 "Unable to get Set Max Tx Power req %p %p %p",
schang86c22c42013-03-13 18:41:24 -070013046 pEventData, pwdiSetTxPowerParams, wdiSetTxPowerRspCb);
13047 WDI_ASSERT(0);
13048 return WDI_STATUS_E_FAILURE;
13049 }
13050
Leo Chang9a43db92013-03-25 17:39:58 -070013051 halSetTxPower = (tSetTxPwrReqParams *)(pSendBuffer + usDataOffset);
13052 halSetTxPower->txPower = pwdiSetTxPowerParams->wdiTxPowerInfo.ucPower;
13053 halSetTxPower->bssIdx = pwdiSetTxPowerParams->wdiTxPowerInfo.bssIdx;
schang86c22c42013-03-13 18:41:24 -070013054
13055 pWDICtx->wdiReqStatusCB = pwdiSetTxPowerParams->wdiReqStatusCB;
13056 pWDICtx->pReqStatusUserData = pwdiSetTxPowerParams->pUserData;
13057
13058 /*-------------------------------------------------------------------------
13059 Send Set Tx Power Request to HAL
13060 -------------------------------------------------------------------------*/
13061 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13062 wdiSetTxPowerRspCb, pEventData->pUserData,
13063 WDI_SET_TX_POWER_RESP);
13064}
Jeff Johnson295189b2012-06-20 16:38:30 -070013065
13066/**
13067 @brief Process P2P Notice Of Absence Request function (called when Main FSM
13068 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013069
13070 @param pWDICtx: pointer to the WLAN DAL context
13071 pEventData: pointer to the event information structure
13072
Jeff Johnson295189b2012-06-20 16:38:30 -070013073 @see
13074 @return Result of the function call
13075*/
13076WDI_Status
13077WDI_ProcessP2PGONOAReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013078(
Jeff Johnson295189b2012-06-20 16:38:30 -070013079 WDI_ControlBlockType* pWDICtx,
13080 WDI_EventInfoType* pEventData
13081)
13082{
13083 WDI_SetP2PGONOAReqParamsType* pwdiP2PGONOAReqParams;
13084 WDI_SetP2PGONOAReqParamsRspCb wdiP2PGONOAReqRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070013085 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013086 wpt_uint16 usDataOffset = 0;
13087 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070013088 tSetP2PGONOAParams halSetP2PGONOAParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070013089 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13090
13091 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013092 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013093 -------------------------------------------------------------------------*/
13094 if (( NULL == pEventData ) ||
13095 ( NULL == pEventData->pEventData) ||
13096 ( NULL == pEventData->pCBfnc))
13097 {
13098 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013099 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013100 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013101 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013102 }
13103
Jeff Johnsone7245742012-09-05 17:12:55 -070013104 pwdiP2PGONOAReqParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070013105 (WDI_SetP2PGONOAReqParamsType*)pEventData->pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070013106 wdiP2PGONOAReqRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070013107 (WDI_SetP2PGONOAReqParamsRspCb)pEventData->pCBfnc;
13108 /*-----------------------------------------------------------------------
13109 Get message buffer
13110 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013111 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
13112 WDI_P2P_GO_NOTICE_OF_ABSENCE_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013113 sizeof(halSetP2PGONOAParams),
13114 &pSendBuffer, &usDataOffset, &usSendSize))||
13115 ( usSendSize < (usDataOffset + sizeof(halSetP2PGONOAParams) )))
13116 {
13117 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080013118 "Unable to get send buffer in set P2P GO NOA REQ %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070013119 pEventData, pwdiP2PGONOAReqParams, wdiP2PGONOAReqRspCb);
13120 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013121 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013122 }
13123
Jeff Johnsone7245742012-09-05 17:12:55 -070013124 halSetP2PGONOAParams.opp_ps =
Jeff Johnson295189b2012-06-20 16:38:30 -070013125 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.ucOpp_ps;
Jeff Johnsone7245742012-09-05 17:12:55 -070013126 halSetP2PGONOAParams.ctWindow =
Jeff Johnson295189b2012-06-20 16:38:30 -070013127 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.uCtWindow;
13128 halSetP2PGONOAParams.count = pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.ucCount;
Jeff Johnsone7245742012-09-05 17:12:55 -070013129 halSetP2PGONOAParams.duration =
Jeff Johnson295189b2012-06-20 16:38:30 -070013130 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.uDuration;
Jeff Johnsone7245742012-09-05 17:12:55 -070013131 halSetP2PGONOAParams.interval =
Jeff Johnson295189b2012-06-20 16:38:30 -070013132 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.uInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070013133 halSetP2PGONOAParams.single_noa_duration =
Jeff Johnson295189b2012-06-20 16:38:30 -070013134 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.uSingle_noa_duration;
Jeff Johnsone7245742012-09-05 17:12:55 -070013135 halSetP2PGONOAParams.psSelection =
Jeff Johnson295189b2012-06-20 16:38:30 -070013136 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.ucPsSelection;
13137
Jeff Johnsone7245742012-09-05 17:12:55 -070013138 wpalMemoryCopy( pSendBuffer+usDataOffset,
13139 &halSetP2PGONOAParams,
13140 sizeof(halSetP2PGONOAParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070013141
13142 pWDICtx->wdiReqStatusCB = pwdiP2PGONOAReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013143 pWDICtx->pReqStatusUserData = pwdiP2PGONOAReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013144
13145 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013146 Send Update Probe Resp Template Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013147 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013148 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13149 wdiP2PGONOAReqRspCb, pEventData->pUserData,
13150 WDI_P2P_GO_NOTICE_OF_ABSENCE_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013151}/*WDI_ProcessP2PGONOAReq*/
13152
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053013153#ifdef FEATURE_WLAN_TDLS
13154
13155/**
13156 @brief Process P2P Notice Of Absence Request function (called when Main FSM
13157 allows it)
13158
13159 @param pWDICtx: pointer to the WLAN DAL context
13160 pEventData: pointer to the event information structure
13161
13162 @see
13163 @return Result of the function call
13164*/
13165WDI_Status
13166WDI_ProcessTdlsLinkEstablishReq
13167(
13168 WDI_ControlBlockType* pWDICtx,
13169 WDI_EventInfoType* pEventData
13170)
13171{
13172 WDI_SetTDLSLinkEstablishReqParamsType* pwdiTDLSLinkEstablishReqParams;
13173 WDI_SetTDLSLinkEstablishReqParamsRspCb wdiTDLSLinkEstablishReqRspCb;
13174 wpt_uint8* pSendBuffer = NULL;
13175 wpt_uint16 usDataOffset = 0;
13176 wpt_uint16 usSendSize = 0;
13177
13178 tTDLSLinkEstablishedType halSetTDLSLinkEstablishParams;
13179 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13180
13181 /*-------------------------------------------------------------------------
13182 Sanity check
13183 -------------------------------------------------------------------------*/
13184 if (( NULL == pEventData ) ||
13185 ( NULL == pEventData->pEventData) ||
13186 ( NULL == pEventData->pCBfnc))
13187 {
13188 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13189 "%s: Invalid parameters", __func__);
13190 WDI_ASSERT(0);
13191 return WDI_STATUS_E_FAILURE;
13192 }
13193 pwdiTDLSLinkEstablishReqParams =
13194 (WDI_SetTDLSLinkEstablishReqParamsType*)pEventData->pEventData;
13195 wdiTDLSLinkEstablishReqRspCb =
13196 (WDI_SetTDLSLinkEstablishReqParamsRspCb)pEventData->pCBfnc;
13197
13198
13199 /*-----------------------------------------------------------------------
13200 Get message buffer
13201 -----------------------------------------------------------------------*/
13202 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
13203 WDI_TDLS_LINK_ESTABLISH_REQ,
13204 sizeof(halSetTDLSLinkEstablishParams),
13205 &pSendBuffer, &usDataOffset, &usSendSize))||
13206 ( usSendSize < (usDataOffset + sizeof(halSetTDLSLinkEstablishParams) )))
13207 {
13208 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080013209 "Unable to get send buffer in set P2P GO NOA REQ %p %p %p",
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053013210 pEventData, pwdiTDLSLinkEstablishReqParams, wdiTDLSLinkEstablishReqRspCb);
13211 WDI_ASSERT(0);
13212 return WDI_STATUS_E_FAILURE;
13213 }
13214
13215 halSetTDLSLinkEstablishParams.staIdx =
13216 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uStaIdx;
13217 halSetTDLSLinkEstablishParams.bIsResponder =
13218 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uIsResponder;
13219 halSetTDLSLinkEstablishParams.acVOUAPSDFlag =
13220 (pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uUapsdQueues & 0x08) >> 3;
13221 halSetTDLSLinkEstablishParams.acVIUAPSDFlag =
13222 (pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uUapsdQueues & 0x04) >> 2;
13223 halSetTDLSLinkEstablishParams.acBKUAPSDFlag =
13224 (pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uUapsdQueues & 0x02) >> 1;
13225 halSetTDLSLinkEstablishParams.acBEUAPSDFlag =
13226 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uUapsdQueues & 0x01;
13227 halSetTDLSLinkEstablishParams.aAck = 0;
13228 halSetTDLSLinkEstablishParams.maxServicePeriodLength = (pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uMaxSp & 0x03);
13229 halSetTDLSLinkEstablishParams.moreDataAck = 0;
13230 halSetTDLSLinkEstablishParams.TPUBufferStaSupport = pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uIsBufSta;
Naresh Jayaramc7cbd782014-02-04 17:38:23 +053013231 halSetTDLSLinkEstablishParams.tdlsOffChannelSupport =
13232 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uIsOffChannelSupported;
13233
13234 wpalMemoryCopy( halSetTDLSLinkEstablishParams.validChannels,
13235 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.validChannels,
13236 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.validChannelsLen);
13237 halSetTDLSLinkEstablishParams.validChannelsLen =
13238 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.validChannelsLen;
13239
13240 wpalMemoryCopy( halSetTDLSLinkEstablishParams.validOperClasses,
13241 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.validOperClasses,
13242 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.validOperClassesLen);
13243 halSetTDLSLinkEstablishParams.validOperClassesLen =
13244 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.validOperClassesLen;
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053013245
13246 wpalMemoryCopy( pSendBuffer+usDataOffset,
13247 &halSetTDLSLinkEstablishParams,
13248 sizeof(halSetTDLSLinkEstablishParams));
13249
13250 pWDICtx->wdiReqStatusCB = pwdiTDLSLinkEstablishReqParams->wdiReqStatusCB;
13251 pWDICtx->pReqStatusUserData = pwdiTDLSLinkEstablishReqParams->pUserData;
13252
13253 /*-------------------------------------------------------------------------
13254 Send Update Probe Resp Template Request to HAL
13255 -------------------------------------------------------------------------*/
13256 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13257 wdiTDLSLinkEstablishReqRspCb, pEventData->pUserData,
13258 WDI_TDLS_LINK_ESTABLISH_REQ_RESP);
13259 return 0;
13260}/*WDI_ProcessTdlsLinkEstablishReq*/
13261
13262
13263#endif
13264
Jeff Johnson295189b2012-06-20 16:38:30 -070013265
13266
13267/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013268 @brief Function to handle the ack from DXE once the power
Jeff Johnson295189b2012-06-20 16:38:30 -070013269 state is set.
Jeff Johnsone7245742012-09-05 17:12:55 -070013270 @param None
13271
13272 @see
13273 @return void
Jeff Johnson295189b2012-06-20 16:38:30 -070013274*/
13275void
13276WDI_SetPowerStateCb
13277(
13278 wpt_status status,
13279 unsigned int dxePhyAddr,
13280 void *pContext
13281)
13282{
13283 wpt_status wptStatus;
13284 WDI_ControlBlockType *pCB = NULL;
13285 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013286 /*
13287 * Trigger the event to bring the Enter BMPS req function to come
13288 * out of wait
Jeff Johnson295189b2012-06-20 16:38:30 -070013289*/
13290 if( NULL != pContext )
13291 {
Jeff Johnsone7245742012-09-05 17:12:55 -070013292 pCB = (WDI_ControlBlockType *)pContext;
Jeff Johnson295189b2012-06-20 16:38:30 -070013293 }
13294 else
13295 {
Jeff Johnsone7245742012-09-05 17:12:55 -070013296 //put an error msg
Jeff Johnson295189b2012-06-20 16:38:30 -070013297 pCB = &gWDICb;
13298 }
Mihir Shetea4306052014-03-25 00:02:54 +053013299
13300 if(eWLAN_PAL_STATUS_SUCCESS == status )
13301 {
13302 pCB->dxeRingsEmpty = eWLAN_PAL_TRUE;
13303 }
13304 else
13305 {
13306 pCB->dxeRingsEmpty = eWLAN_PAL_FALSE;
13307 }
Jeff Johnson295189b2012-06-20 16:38:30 -070013308 pCB->dxePhyAddr = dxePhyAddr;
13309 wptStatus = wpalEventSet(&pCB->setPowerStateEvent);
13310 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
13311 {
13312 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13313 "Failed to set an event");
13314
Jeff Johnsone7245742012-09-05 17:12:55 -070013315 WDI_ASSERT(0);
Jeff Johnson295189b2012-06-20 16:38:30 -070013316 }
13317 return;
13318}
13319
13320
13321/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013322 @brief Process Enter IMPS Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070013323 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013324
13325 @param pWDICtx: pointer to the WLAN DAL context
13326 pEventData: pointer to the event information structure
13327
Jeff Johnson295189b2012-06-20 16:38:30 -070013328 @see
13329 @return Result of the function call
13330*/
13331WDI_Status
13332WDI_ProcessEnterImpsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013333(
Jeff Johnson295189b2012-06-20 16:38:30 -070013334 WDI_ControlBlockType* pWDICtx,
13335 WDI_EventInfoType* pEventData
13336)
13337{
Jeff Johnson43971f52012-07-17 12:26:56 -070013338 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070013339 WDI_EnterImpsRspCb wdiEnterImpsRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013340 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013341 wpt_uint16 usDataOffset = 0;
13342 wpt_uint16 usSendSize = 0;
Mihir Shetea4306052014-03-25 00:02:54 +053013343 WDI_EnterImpsReqParamsType* pwdiEnterImpsReqParams = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013344 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13345
13346 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013347 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013348 -------------------------------------------------------------------------*/
Mihir Shetea4306052014-03-25 00:02:54 +053013349 if ((NULL == pEventData ) ||
13350 (NULL == (wdiEnterImpsRspCb = (WDI_EnterImpsRspCb)pEventData->pCBfnc)) ||
13351 (NULL == (pwdiEnterImpsReqParams =
13352 (WDI_EnterImpsReqParamsType*)pEventData->pEventData)))
Jeff Johnson295189b2012-06-20 16:38:30 -070013353 {
13354 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013355 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013356 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080013357 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070013358 }
13359
13360 /*-----------------------------------------------------------------------
13361 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013362 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013363 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013364 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ENTER_IMPS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013365 0,
13366 &pSendBuffer, &usDataOffset, &usSendSize))||
13367 ( usSendSize < (usDataOffset )))
13368 {
13369 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080013370 "Unable to get send buffer in Enter IMPS req %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070013371 pEventData, wdiEnterImpsRspCb);
13372 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080013373 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070013374 }
13375
13376 /* Reset the event to be not signalled */
Jeff Johnson43971f52012-07-17 12:26:56 -070013377 wptStatus = wpalEventReset(&pWDICtx->setPowerStateEvent);
13378 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070013379 {
13380 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13381 "WDI Init failed to reset an event");
13382
Jeff Johnsone7245742012-09-05 17:12:55 -070013383 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080013384 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -070013385 }
13386
13387 // notify DTS that we are entering IMPS
Ravali85acf6b2012-12-12 14:01:38 -080013388 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_IMPS, WDI_SetPowerStateCb);
13389 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus ) {
13390 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain9a5d5382013-11-17 22:05:35 -080013391 "WDTS_SetPowerState returned with status %d when trying to notify DTS that host is entering IMPS", wptStatus);
Ravali85acf6b2012-12-12 14:01:38 -080013392 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080013393 goto fail;
Ravali85acf6b2012-12-12 14:01:38 -080013394 }
Jeff Johnson295189b2012-06-20 16:38:30 -070013395
13396 /*
Jeff Johnsone7245742012-09-05 17:12:55 -070013397 * Wait for the event to be set once the ACK comes back from DXE
Jeff Johnson295189b2012-06-20 16:38:30 -070013398 */
Jeff Johnson43971f52012-07-17 12:26:56 -070013399 wptStatus = wpalEventWait(&pWDICtx->setPowerStateEvent,
13400 WDI_SET_POWER_STATE_TIMEOUT);
13401 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070013402 {
13403 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13404 "WDI Init failed to wait on an event");
13405
Jeff Johnsone7245742012-09-05 17:12:55 -070013406 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080013407 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -070013408 }
13409
Mihir Shetea4306052014-03-25 00:02:54 +053013410 if (pWDICtx->dxeRingsEmpty == eWLAN_PAL_FALSE)
13411 {
13412 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
13413 "%s: DXE Rings not empty, cannot enter IMPS",__func__);
13414
13415 goto fail;
13416 }
13417
13418 pWDICtx->wdiReqStatusCB = pwdiEnterImpsReqParams->wdiReqStatusCB;
13419 pWDICtx->pReqStatusUserData = pwdiEnterImpsReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013420 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013421 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013422 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013423 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13424 wdiEnterImpsRspCb, pEventData->pUserData, WDI_ENTER_IMPS_RESP);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080013425
13426fail:
13427 // Release the message buffer so we don't leak
13428 wpalMemoryFree(pSendBuffer);
13429
13430failRequest:
13431 //WDA should have failure check to avoid the memory leak
13432 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013433}/*WDI_ProcessEnterImpsReq*/
13434
13435/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013436 @brief Process Exit IMPS Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070013437 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013438
13439 @param pWDICtx: pointer to the WLAN DAL context
13440 pEventData: pointer to the event information structure
13441
Jeff Johnson295189b2012-06-20 16:38:30 -070013442 @see
13443 @return Result of the function call
13444*/
13445WDI_Status
13446WDI_ProcessExitImpsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013447(
Jeff Johnson295189b2012-06-20 16:38:30 -070013448 WDI_ControlBlockType* pWDICtx,
13449 WDI_EventInfoType* pEventData
13450)
13451{
13452 WDI_ExitImpsRspCb wdiExitImpsRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013453 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013454 wpt_uint16 usDataOffset = 0;
13455 wpt_uint16 usSendSize = 0;
13456 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13457
13458 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013459 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013460 -------------------------------------------------------------------------*/
13461 if (( NULL == pEventData ) ||
13462 ( NULL == (wdiExitImpsRspCb = (WDI_ExitImpsRspCb)pEventData->pCBfnc)))
13463 {
13464 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013465 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013466 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013467 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013468 }
13469
13470 /*-----------------------------------------------------------------------
13471 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013472 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013473 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013474 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_EXIT_IMPS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013475 0,
13476 &pSendBuffer, &usDataOffset, &usSendSize))||
13477 ( usSendSize < (usDataOffset )))
13478 {
13479 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080013480 "Unable to get send buffer in Exit IMPS req %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070013481 pEventData, wdiExitImpsRspCb);
13482 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013483 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013484 }
13485
13486 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013487 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013488 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013489 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13490 wdiExitImpsRspCb, pEventData->pUserData, WDI_EXIT_IMPS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013491}/*WDI_ProcessExitImpsReq*/
13492
13493/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013494 @brief Process Enter BMPS Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070013495 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013496
13497 @param pWDICtx: pointer to the WLAN DAL context
13498 pEventData: pointer to the event information structure
13499
Jeff Johnson295189b2012-06-20 16:38:30 -070013500 @see
13501 @return Result of the function call
13502*/
13503WDI_Status
13504WDI_ProcessEnterBmpsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013505(
Jeff Johnson295189b2012-06-20 16:38:30 -070013506 WDI_ControlBlockType* pWDICtx,
13507 WDI_EventInfoType* pEventData
13508)
13509{
13510 WDI_EnterBmpsReqParamsType* pwdiEnterBmpsReqParams = NULL;
13511 WDI_EnterBmpsRspCb wdiEnterBmpsRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013512 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013513 wpt_uint16 usDataOffset = 0;
13514 wpt_uint16 usSendSize = 0;
13515 tHalEnterBmpsReqParams enterBmpsReq;
Jeff Johnson43971f52012-07-17 12:26:56 -070013516 wpt_status wptStatus;
13517
Jeff Johnson295189b2012-06-20 16:38:30 -070013518 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13519
13520 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013521 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013522 -------------------------------------------------------------------------*/
13523 if (( NULL == pEventData ) ||
13524 ( NULL == (pwdiEnterBmpsReqParams = (WDI_EnterBmpsReqParamsType*)pEventData->pEventData)) ||
13525 ( NULL == (wdiEnterBmpsRspCb = (WDI_EnterBmpsRspCb)pEventData->pCBfnc)))
13526 {
13527 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013528 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013529 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080013530 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070013531 }
13532
13533 /*-----------------------------------------------------------------------
13534 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013535 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013536 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013537 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ENTER_BMPS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013538 sizeof(enterBmpsReq),
13539 &pSendBuffer, &usDataOffset, &usSendSize))||
13540 ( usSendSize < (usDataOffset + sizeof(enterBmpsReq) )))
13541 {
13542 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080013543 "Unable to get send buffer in Enter BMPS req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070013544 pEventData, pwdiEnterBmpsReqParams, wdiEnterBmpsRspCb);
13545 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080013546 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070013547 }
13548
13549 /* Reset the event to be not signalled */
Jeff Johnson43971f52012-07-17 12:26:56 -070013550 wptStatus = wpalEventReset(&pWDICtx->setPowerStateEvent);
13551 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070013552 {
13553 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13554 "WDI Init failed to reset an event");
13555
Jeff Johnsone7245742012-09-05 17:12:55 -070013556 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080013557 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -070013558 }
13559
13560 // notify DTS that we are entering BMPS
Ravali85acf6b2012-12-12 14:01:38 -080013561 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_BMPS, WDI_SetPowerStateCb);
13562 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
13563 {
13564 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain9a5d5382013-11-17 22:05:35 -080013565 "WDTS_SetPowerState returned with status %d when trying to notify DTS that we are entering BMPS", wptStatus);
Ravali85acf6b2012-12-12 14:01:38 -080013566 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080013567 goto fail;
Ravali85acf6b2012-12-12 14:01:38 -080013568 }
Jeff Johnson295189b2012-06-20 16:38:30 -070013569
13570/*
Jeff Johnsone7245742012-09-05 17:12:55 -070013571 * Wait for the event to be set once the ACK comes back from DXE
Jeff Johnson295189b2012-06-20 16:38:30 -070013572 */
Jeff Johnson43971f52012-07-17 12:26:56 -070013573 wptStatus = wpalEventWait(&pWDICtx->setPowerStateEvent,
13574 WDI_SET_POWER_STATE_TIMEOUT);
13575 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070013576 {
13577 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13578 "WDI Init failed to wait on an event");
13579
Jeff Johnsone7245742012-09-05 17:12:55 -070013580 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080013581 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -070013582 }
13583
13584 pWDICtx->bInBmps = eWLAN_PAL_TRUE;
13585
13586 enterBmpsReq.bssIdx = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.ucBssIdx;
13587 enterBmpsReq.tbtt = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.uTbtt;
13588 enterBmpsReq.dtimCount = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.ucDtimCount;
13589 enterBmpsReq.dtimPeriod = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.ucDtimPeriod;
13590
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -080013591 // For ESE and 11R Roaming
Jeff Johnson295189b2012-06-20 16:38:30 -070013592 enterBmpsReq.rssiFilterPeriod = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.rssiFilterPeriod;
13593 enterBmpsReq.numBeaconPerRssiAverage = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.numBeaconPerRssiAverage;
13594 enterBmpsReq.bRssiFilterEnable = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.bRssiFilterEnable;
13595
13596 wpalMemoryCopy( pSendBuffer+usDataOffset,
13597 &enterBmpsReq,
13598 sizeof(enterBmpsReq));
13599
13600 pWDICtx->wdiReqStatusCB = pwdiEnterBmpsReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013601 pWDICtx->pReqStatusUserData = pwdiEnterBmpsReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013602
13603 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013604 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013605 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013606 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13607 wdiEnterBmpsRspCb, pEventData->pUserData, WDI_ENTER_BMPS_RESP);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080013608
13609fail:
13610 // Release the message buffer so we don't leak
13611 wpalMemoryFree(pSendBuffer);
13612
13613failRequest:
13614 //WDA should have failure check to avoid the memory leak
13615 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013616}/*WDI_ProcessEnterBmpsReq*/
13617
13618/**
13619 @brief Process Exit BMPS Request function (called when Main FSM
13620 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013621
13622 @param pWDICtx: pointer to the WLAN DAL context
13623 pEventData: pointer to the event information structure
13624
Jeff Johnson295189b2012-06-20 16:38:30 -070013625 @see
13626 @return Result of the function call
13627*/
13628WDI_Status
13629WDI_ProcessExitBmpsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013630(
Jeff Johnson295189b2012-06-20 16:38:30 -070013631 WDI_ControlBlockType* pWDICtx,
13632 WDI_EventInfoType* pEventData
13633)
13634{
13635 WDI_ExitBmpsReqParamsType* pwdiExitBmpsReqParams = NULL;
13636 WDI_ExitBmpsRspCb wdiExitBmpsRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013637 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013638 wpt_uint16 usDataOffset = 0;
13639 wpt_uint16 usSendSize = 0;
13640 tHalExitBmpsReqParams exitBmpsReq;
13641 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13642
13643 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013644 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013645 -------------------------------------------------------------------------*/
13646 if (( NULL == pEventData ) ||
13647 ( NULL == (pwdiExitBmpsReqParams = (WDI_ExitBmpsReqParamsType*)pEventData->pEventData)) ||
13648 ( NULL == (wdiExitBmpsRspCb = (WDI_ExitBmpsRspCb)pEventData->pCBfnc)))
13649 {
13650 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013651 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013652 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013653 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013654 }
13655
13656 /*-----------------------------------------------------------------------
13657 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013658 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013659 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013660 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_EXIT_BMPS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013661 sizeof(exitBmpsReq),
13662 &pSendBuffer, &usDataOffset, &usSendSize))||
13663 ( usSendSize < (usDataOffset + sizeof(exitBmpsReq) )))
13664 {
13665 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080013666 "Unable to get send buffer in Exit BMPS req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070013667 pEventData, pwdiExitBmpsReqParams, wdiExitBmpsRspCb);
13668 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013669 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013670 }
13671 exitBmpsReq.sendDataNull = pwdiExitBmpsReqParams->wdiExitBmpsInfo.ucSendDataNull;
13672
Jeff Johnsone7245742012-09-05 17:12:55 -070013673 exitBmpsReq.bssIdx = pwdiExitBmpsReqParams->wdiExitBmpsInfo.bssIdx;
13674
Jeff Johnson295189b2012-06-20 16:38:30 -070013675 wpalMemoryCopy( pSendBuffer+usDataOffset,
13676 &exitBmpsReq,
13677 sizeof(exitBmpsReq));
13678
13679 pWDICtx->wdiReqStatusCB = pwdiExitBmpsReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013680 pWDICtx->pReqStatusUserData = pwdiExitBmpsReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013681
13682 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013683 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013684 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013685 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13686 wdiExitBmpsRspCb, pEventData->pUserData, WDI_EXIT_BMPS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013687}/*WDI_ProcessExitBmpsReq*/
13688
13689/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013690 @brief Process Enter UAPSD Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070013691 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013692
13693 @param pWDICtx: pointer to the WLAN DAL context
13694 pEventData: pointer to the event information structure
13695
Jeff Johnson295189b2012-06-20 16:38:30 -070013696 @see
13697 @return Result of the function call
13698*/
13699WDI_Status
13700WDI_ProcessEnterUapsdReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013701(
Jeff Johnson295189b2012-06-20 16:38:30 -070013702 WDI_ControlBlockType* pWDICtx,
13703 WDI_EventInfoType* pEventData
13704)
13705{
13706 WDI_EnterUapsdReqParamsType* pwdiEnterUapsdReqParams = NULL;
13707 WDI_EnterUapsdRspCb wdiEnterUapsdRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013708 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013709 wpt_uint16 usDataOffset = 0;
13710 wpt_uint16 usSendSize = 0;
13711 tUapsdReqParams enterUapsdReq;
13712 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13713
13714 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013715 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013716 -------------------------------------------------------------------------*/
13717 if (( NULL == pEventData ) ||
13718 ( NULL == (pwdiEnterUapsdReqParams = (WDI_EnterUapsdReqParamsType*)pEventData->pEventData)) ||
13719 ( NULL == (wdiEnterUapsdRspCb = (WDI_EnterUapsdRspCb)pEventData->pCBfnc)))
13720 {
13721 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013722 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013723 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013724 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013725 }
13726
13727 /*-----------------------------------------------------------------------
13728 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013729 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013730 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013731 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ENTER_UAPSD_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013732 sizeof(enterUapsdReq),
13733 &pSendBuffer, &usDataOffset, &usSendSize))||
13734 ( usSendSize < (usDataOffset + sizeof(enterUapsdReq) )))
13735 {
13736 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080013737 "Unable to get send buffer in Enter UAPSD req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070013738 pEventData, pwdiEnterUapsdReqParams, wdiEnterUapsdRspCb);
13739 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013740 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013741 }
13742
13743 enterUapsdReq.beDeliveryEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucBeDeliveryEnabled;
13744 enterUapsdReq.beTriggerEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucBeTriggerEnabled;
13745 enterUapsdReq.bkDeliveryEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucBkDeliveryEnabled;
13746 enterUapsdReq.bkTriggerEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucBkTriggerEnabled;
13747 enterUapsdReq.viDeliveryEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucViDeliveryEnabled;
13748 enterUapsdReq.viTriggerEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucViTriggerEnabled;
13749 enterUapsdReq.voDeliveryEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucVoDeliveryEnabled;
13750 enterUapsdReq.voTriggerEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucVoTriggerEnabled;
Jeff Johnsone7245742012-09-05 17:12:55 -070013751 enterUapsdReq.bssIdx = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.bssIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070013752
Jeff Johnsone7245742012-09-05 17:12:55 -070013753 wpalMemoryCopy( pSendBuffer+usDataOffset,
13754 &enterUapsdReq,
13755 sizeof(enterUapsdReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070013756
13757 pWDICtx->wdiReqStatusCB = pwdiEnterUapsdReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013758 pWDICtx->pReqStatusUserData = pwdiEnterUapsdReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013759
13760 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013761 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013762 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013763 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13764 wdiEnterUapsdRspCb, pEventData->pUserData, WDI_ENTER_UAPSD_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013765}/*WDI_ProcessEnterUapsdReq*/
13766
13767/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013768 @brief Process Exit UAPSD Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070013769 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013770
13771 @param pWDICtx: pointer to the WLAN DAL context
13772 pEventData: pointer to the event information structure
13773
Jeff Johnson295189b2012-06-20 16:38:30 -070013774 @see
13775 @return Result of the function call
13776*/
13777WDI_Status
13778WDI_ProcessExitUapsdReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013779(
Jeff Johnson295189b2012-06-20 16:38:30 -070013780 WDI_ControlBlockType* pWDICtx,
13781 WDI_EventInfoType* pEventData
13782)
13783{
13784 WDI_ExitUapsdRspCb wdiExitUapsdRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013785 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013786 wpt_uint16 usDataOffset = 0;
13787 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013788 WDI_ExitUapsdReqParamsType *pExitUapsdparams;
13789 wpt_uint8 bssIdx = 0;
13790
Jeff Johnson295189b2012-06-20 16:38:30 -070013791 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13792
13793 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013794 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013795 -------------------------------------------------------------------------*/
13796 if (( NULL == pEventData ) ||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013797 ( NULL == (pExitUapsdparams = (WDI_ExitUapsdReqParamsType *)pEventData->pEventData)) ||
Jeff Johnson295189b2012-06-20 16:38:30 -070013798 ( NULL == (wdiExitUapsdRspCb = (WDI_ExitUapsdRspCb)pEventData->pCBfnc)))
13799 {
13800 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013801 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013802 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013803 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013804 }
13805
13806 /*-----------------------------------------------------------------------
13807 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013808 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013809 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013810 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_EXIT_UAPSD_REQ,
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013811 sizeof(wpt_uint8),
Jeff Johnson295189b2012-06-20 16:38:30 -070013812 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013813 ( usSendSize < (usDataOffset + sizeof(wpt_uint8))))
Jeff Johnson295189b2012-06-20 16:38:30 -070013814 {
13815 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080013816 "Unable to get send buffer in Exit UAPSD req %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070013817 pEventData, wdiExitUapsdRspCb);
13818 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013819 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013820 }
13821
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013822 bssIdx = pExitUapsdparams->wdiExitUapsdInfo.bssIdx;
13823
13824 wpalMemoryCopy( pSendBuffer+usDataOffset,
13825 &bssIdx,
13826 sizeof(wpt_uint8));
13827
13828 pWDICtx->wdiReqStatusCB = pExitUapsdparams->wdiReqStatusCB;
13829 pWDICtx->pReqStatusUserData = pExitUapsdparams->pUserData;
13830
Jeff Johnson295189b2012-06-20 16:38:30 -070013831 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013832 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013833 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013834 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13835 wdiExitUapsdRspCb, pEventData->pUserData, WDI_EXIT_UAPSD_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013836}/*WDI_ProcessExitUapsdReq*/
13837
13838/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013839 @brief Process Set UAPSD params Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070013840 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013841
13842 @param pWDICtx: pointer to the WLAN DAL context
13843 pEventData: pointer to the event information structure
13844
Jeff Johnson295189b2012-06-20 16:38:30 -070013845 @see
13846 @return Result of the function call
13847*/
13848WDI_Status
13849WDI_ProcessSetUapsdAcParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013850(
Jeff Johnson295189b2012-06-20 16:38:30 -070013851 WDI_ControlBlockType* pWDICtx,
13852 WDI_EventInfoType* pEventData
13853)
13854{
13855 WDI_SetUapsdAcParamsReqParamsType* pwdiSetUapsdAcParams = NULL;
13856 WDI_SetUapsdAcParamsCb wdiSetUapsdAcParamsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013857 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013858 wpt_uint16 usDataOffset = 0;
13859 wpt_uint16 usSendSize = 0;
13860 tUapsdInfo uapsdAcParamsReq;
13861 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13862
13863 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013864 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013865 -------------------------------------------------------------------------*/
13866 if (( NULL == pEventData ) ||
13867 ( NULL == (pwdiSetUapsdAcParams = (WDI_SetUapsdAcParamsReqParamsType*)pEventData->pEventData)) ||
13868 ( NULL == (wdiSetUapsdAcParamsCb = (WDI_SetUapsdAcParamsCb)pEventData->pCBfnc)))
13869 {
13870 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013871 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013872 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013873 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013874 }
13875
13876 /*-----------------------------------------------------------------------
13877 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013878 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013879 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013880 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_UAPSD_PARAM_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013881 sizeof(uapsdAcParamsReq),
13882 &pSendBuffer, &usDataOffset, &usSendSize))||
13883 ( usSendSize < (usDataOffset + sizeof(uapsdAcParamsReq) )))
13884 {
13885 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080013886 "Unable to get send buffer in Set UAPSD params req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070013887 pEventData, pwdiSetUapsdAcParams, wdiSetUapsdAcParamsCb);
13888 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013889 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013890 }
13891
13892 uapsdAcParamsReq.ac = pwdiSetUapsdAcParams->wdiUapsdInfo.ucAc;
13893 uapsdAcParamsReq.staidx = pwdiSetUapsdAcParams->wdiUapsdInfo.ucSTAIdx;
13894 uapsdAcParamsReq.up = pwdiSetUapsdAcParams->wdiUapsdInfo.ucUp;
13895 uapsdAcParamsReq.delayInterval = pwdiSetUapsdAcParams->wdiUapsdInfo.uDelayInterval;
13896 uapsdAcParamsReq.srvInterval = pwdiSetUapsdAcParams->wdiUapsdInfo.uSrvInterval;
13897 uapsdAcParamsReq.susInterval = pwdiSetUapsdAcParams->wdiUapsdInfo.uSusInterval;
13898
Jeff Johnsone7245742012-09-05 17:12:55 -070013899 wpalMemoryCopy( pSendBuffer+usDataOffset,
13900 &uapsdAcParamsReq,
13901 sizeof(uapsdAcParamsReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070013902
13903 pWDICtx->wdiReqStatusCB = pwdiSetUapsdAcParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013904 pWDICtx->pReqStatusUserData = pwdiSetUapsdAcParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013905
13906 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013907 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013908 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013909 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13910 wdiSetUapsdAcParamsCb, pEventData->pUserData, WDI_SET_UAPSD_PARAM_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013911}/*WDI_ProcessSetUapsdAcParamsReq*/
13912
13913/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013914 @brief Process update UAPSD params Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070013915 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013916
13917 @param pWDICtx: pointer to the WLAN DAL context
13918 pEventData: pointer to the event information structure
13919
Jeff Johnson295189b2012-06-20 16:38:30 -070013920 @see
13921 @return Result of the function call
13922*/
13923WDI_Status
13924WDI_ProcessUpdateUapsdParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013925(
Jeff Johnson295189b2012-06-20 16:38:30 -070013926 WDI_ControlBlockType* pWDICtx,
13927 WDI_EventInfoType* pEventData
13928)
13929{
13930 WDI_UpdateUapsdReqParamsType* pwdiUpdateUapsdReqParams = NULL;
13931 WDI_UpdateUapsdParamsCb wdiUpdateUapsdParamsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013932 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013933 wpt_uint16 usDataOffset = 0;
13934 wpt_uint16 usSendSize = 0;
13935 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13936
13937 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013938 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013939 -------------------------------------------------------------------------*/
13940 if (( NULL == pEventData ) ||
13941 ( NULL == (pwdiUpdateUapsdReqParams = (WDI_UpdateUapsdReqParamsType*)pEventData->pEventData)) ||
13942 ( NULL == (wdiUpdateUapsdParamsCb = (WDI_UpdateUapsdParamsCb)pEventData->pCBfnc)))
13943 {
13944 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013945 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013946 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013947 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013948 }
13949
13950 /*-----------------------------------------------------------------------
13951 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013952 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013953 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013954 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_UAPSD_PARAM_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013955 sizeof(pwdiUpdateUapsdReqParams->wdiUpdateUapsdInfo),
13956 &pSendBuffer, &usDataOffset, &usSendSize))||
13957 ( usSendSize < (usDataOffset + sizeof(pwdiUpdateUapsdReqParams->wdiUpdateUapsdInfo) )))
13958 {
13959 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080013960 "Unable to get send buffer in Update UAPSD params req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070013961 pEventData, pwdiUpdateUapsdReqParams, wdiUpdateUapsdParamsCb);
13962 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013963 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013964 }
13965
Jeff Johnsone7245742012-09-05 17:12:55 -070013966 wpalMemoryCopy( pSendBuffer+usDataOffset,
13967 &pwdiUpdateUapsdReqParams->wdiUpdateUapsdInfo,
13968 sizeof(pwdiUpdateUapsdReqParams->wdiUpdateUapsdInfo));
Jeff Johnson295189b2012-06-20 16:38:30 -070013969
13970 pWDICtx->wdiReqStatusCB = pwdiUpdateUapsdReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013971 pWDICtx->pReqStatusUserData = pwdiUpdateUapsdReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013972
13973 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013974 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013975 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013976 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13977 wdiUpdateUapsdParamsCb, pEventData->pUserData, WDI_UPDATE_UAPSD_PARAM_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013978}/*WDI_ProcessUpdateUapsdParamsReq*/
13979
13980/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013981 @brief Process Configure RXP filter Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070013982 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013983
13984 @param pWDICtx: pointer to the WLAN DAL context
13985 pEventData: pointer to the event information structure
13986
Jeff Johnson295189b2012-06-20 16:38:30 -070013987 @see
13988 @return Result of the function call
13989*/
13990WDI_Status
13991WDI_ProcessConfigureRxpFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013992(
Jeff Johnson295189b2012-06-20 16:38:30 -070013993 WDI_ControlBlockType* pWDICtx,
13994 WDI_EventInfoType* pEventData
13995)
13996{
13997 WDI_ConfigureRxpFilterReqParamsType* pwdiRxpFilterParams = NULL;
13998 WDI_ConfigureRxpFilterCb wdiConfigureRxpFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013999 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014000 wpt_uint16 usDataOffset = 0;
14001 wpt_uint16 usSendSize = 0;
14002 tHalConfigureRxpFilterReqParams halRxpFilterParams;
14003
14004 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14005
14006 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014007 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014008 -------------------------------------------------------------------------*/
14009 if (( NULL == pEventData ) ||
14010 ( NULL == (pwdiRxpFilterParams = (WDI_ConfigureRxpFilterReqParamsType*)pEventData->pEventData)) ||
14011 ( NULL == (wdiConfigureRxpFilterCb = (WDI_ConfigureRxpFilterCb)pEventData->pCBfnc)))
14012 {
14013 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014014 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014015 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014016 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014017 }
14018
14019 /*-----------------------------------------------------------------------
14020 Get message buffer
14021 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014022 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_CONFIGURE_RXP_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014023 sizeof(halRxpFilterParams),
14024 &pSendBuffer, &usDataOffset, &usSendSize))||
14025 ( usSendSize < (usDataOffset + sizeof(halRxpFilterParams) )))
14026 {
14027 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014028 "Unable to get send buffer in Set UAPSD params req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014029 pEventData, pwdiRxpFilterParams, wdiConfigureRxpFilterCb);
14030 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014031 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014032 }
14033
Jeff Johnsone7245742012-09-05 17:12:55 -070014034 halRxpFilterParams.setMcstBcstFilterSetting =
Jeff Johnson295189b2012-06-20 16:38:30 -070014035 pwdiRxpFilterParams->wdiRxpFilterParam.ucSetMcstBcstFilterSetting;
Jeff Johnsone7245742012-09-05 17:12:55 -070014036 halRxpFilterParams.setMcstBcstFilter =
Jeff Johnson295189b2012-06-20 16:38:30 -070014037 pwdiRxpFilterParams->wdiRxpFilterParam.ucSetMcstBcstFilter;
14038
Jeff Johnsone7245742012-09-05 17:12:55 -070014039 wpalMemoryCopy( pSendBuffer+usDataOffset,
14040 &halRxpFilterParams,
14041 sizeof(halRxpFilterParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070014042
14043 pWDICtx->wdiReqStatusCB = pwdiRxpFilterParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014044 pWDICtx->pReqStatusUserData = pwdiRxpFilterParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014045
14046 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014047 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014048 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014049 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14050 wdiConfigureRxpFilterCb, pEventData->pUserData, WDI_CONFIGURE_RXP_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070014051}/*WDI_ProcessConfigureRxpFilterReq*/
14052
14053/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014054 @brief Process set beacon filter Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070014055 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014056
14057 @param pWDICtx: pointer to the WLAN DAL context
14058 pEventData: pointer to the event information structure
14059
Jeff Johnson295189b2012-06-20 16:38:30 -070014060 @see
14061 @return Result of the function call
14062*/
14063WDI_Status
14064WDI_ProcessSetBeaconFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014065(
Jeff Johnson295189b2012-06-20 16:38:30 -070014066 WDI_ControlBlockType* pWDICtx,
14067 WDI_EventInfoType* pEventData
14068)
14069{
14070 WDI_BeaconFilterReqParamsType* pwdiBeaconFilterParams = NULL;
14071 WDI_SetBeaconFilterCb wdiBeaconFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014072 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014073 wpt_uint16 usDataOffset = 0;
14074 wpt_uint16 usSendSize = 0;
14075 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14076
14077 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014078 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014079 -------------------------------------------------------------------------*/
14080 if (( NULL == pEventData ) ||
14081 ( NULL == (pwdiBeaconFilterParams = (WDI_BeaconFilterReqParamsType*)pEventData->pEventData)) ||
14082 ( NULL == (wdiBeaconFilterCb = (WDI_SetBeaconFilterCb)pEventData->pCBfnc)))
14083 {
14084 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014085 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014086 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014087 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014088 }
14089
14090 /*-----------------------------------------------------------------------
14091 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014092 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014093 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014094 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_BEACON_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014095 sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo) + pwdiBeaconFilterParams->wdiBeaconFilterInfo.usIeNum * sizeof(tBeaconFilterIe),
14096 &pSendBuffer, &usDataOffset, &usSendSize))||
14097 ( usSendSize < (usDataOffset + sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo) )))
14098 {
14099 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014100 "Unable to get send buffer in Set beacon filter req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014101 pEventData, pwdiBeaconFilterParams, wdiBeaconFilterCb);
14102 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014103 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014104 }
14105
Jeff Johnsone7245742012-09-05 17:12:55 -070014106 wpalMemoryCopy( pSendBuffer+usDataOffset,
14107 &pwdiBeaconFilterParams->wdiBeaconFilterInfo,
14108 sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo));
14109 wpalMemoryCopy( pSendBuffer+usDataOffset+sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo),
14110 &pwdiBeaconFilterParams->aFilters[0],
14111 pwdiBeaconFilterParams->wdiBeaconFilterInfo.usIeNum * sizeof(tBeaconFilterIe));
Jeff Johnson295189b2012-06-20 16:38:30 -070014112
14113 pWDICtx->wdiReqStatusCB = pwdiBeaconFilterParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014114 pWDICtx->pReqStatusUserData = pwdiBeaconFilterParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014115
14116 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014117 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014118 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014119 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14120 wdiBeaconFilterCb, pEventData->pUserData, WDI_SET_BEACON_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070014121}/*WDI_ProcessSetBeaconFilterReq*/
14122
14123/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014124 @brief Process remove beacon filter Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070014125 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014126
14127 @param pWDICtx: pointer to the WLAN DAL context
14128 pEventData: pointer to the event information structure
14129
Jeff Johnson295189b2012-06-20 16:38:30 -070014130 @see
14131 @return Result of the function call
14132*/
14133WDI_Status
14134WDI_ProcessRemBeaconFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014135(
Jeff Johnson295189b2012-06-20 16:38:30 -070014136 WDI_ControlBlockType* pWDICtx,
14137 WDI_EventInfoType* pEventData
14138)
14139{
14140 WDI_RemBeaconFilterReqParamsType* pwdiBeaconFilterParams = NULL;
14141 WDI_RemBeaconFilterCb wdiBeaconFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014142 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014143 wpt_uint16 usDataOffset = 0;
14144 wpt_uint16 usSendSize = 0;
14145 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14146
14147 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014148 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014149 -------------------------------------------------------------------------*/
14150 if (( NULL == pEventData ) ||
14151 ( NULL == (pwdiBeaconFilterParams = (WDI_RemBeaconFilterReqParamsType*)pEventData->pEventData)) ||
14152 ( NULL == (wdiBeaconFilterCb = (WDI_RemBeaconFilterCb)pEventData->pCBfnc)))
14153 {
14154 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014155 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014156 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014157 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014158 }
14159
14160 /*-----------------------------------------------------------------------
14161 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014162 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014163 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014164 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_REM_BEACON_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014165 sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo),
14166 &pSendBuffer, &usDataOffset, &usSendSize))||
14167 ( usSendSize < (usDataOffset + sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo) )))
14168 {
14169 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014170 "Unable to get send buffer in remove beacon filter req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014171 pEventData, pwdiBeaconFilterParams, wdiBeaconFilterCb);
14172 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014173 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014174 }
14175
Jeff Johnsone7245742012-09-05 17:12:55 -070014176 wpalMemoryCopy( pSendBuffer+usDataOffset,
14177 &pwdiBeaconFilterParams->wdiBeaconFilterInfo,
14178 sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo));
Jeff Johnson295189b2012-06-20 16:38:30 -070014179
14180 pWDICtx->wdiReqStatusCB = pwdiBeaconFilterParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014181 pWDICtx->pReqStatusUserData = pwdiBeaconFilterParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014182
14183 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014184 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014185 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014186 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14187 wdiBeaconFilterCb, pEventData->pUserData, WDI_REM_BEACON_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070014188}
14189
14190/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014191 @brief Process set RSSI thresholds Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070014192 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014193
14194 @param pWDICtx: pointer to the WLAN DAL context
14195 pEventData: pointer to the event information structure
14196
Jeff Johnson295189b2012-06-20 16:38:30 -070014197 @see
14198 @return Result of the function call
14199*/
14200WDI_Status
14201WDI_ProcessSetRSSIThresholdsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014202(
Jeff Johnson295189b2012-06-20 16:38:30 -070014203 WDI_ControlBlockType* pWDICtx,
14204 WDI_EventInfoType* pEventData
14205)
14206{
14207 WDI_SetRSSIThresholdsReqParamsType* pwdiRSSIThresholdsParams = NULL;
14208 WDI_SetRSSIThresholdsCb wdiRSSIThresholdsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014209 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014210 wpt_uint16 usDataOffset = 0;
14211 wpt_uint16 usSendSize = 0;
14212 tHalRSSIThresholds rssiThresholdsReq;
14213 WDI_Status ret_status = 0;
14214 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14215
14216 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014217 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014218 -------------------------------------------------------------------------*/
14219 if (( NULL == pEventData ) ||
14220 ( NULL == (pwdiRSSIThresholdsParams = (WDI_SetRSSIThresholdsReqParamsType*)pEventData->pEventData)) ||
14221 ( NULL == (wdiRSSIThresholdsCb = (WDI_SetRSSIThresholdsCb)pEventData->pCBfnc)))
14222 {
14223 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014224 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014225 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014226 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014227 }
14228
14229 /*-----------------------------------------------------------------------
14230 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014231 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014232 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014233 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_RSSI_THRESHOLDS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014234 sizeof(rssiThresholdsReq),
14235 &pSendBuffer, &usDataOffset, &usSendSize))||
14236 ( usSendSize < (usDataOffset + sizeof(rssiThresholdsReq) )))
14237 {
14238 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014239 "Unable to get send buffer in remove beacon filter req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014240 pEventData, pwdiRSSIThresholdsParams, wdiRSSIThresholdsCb);
14241 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014242 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014243 }
14244
Jeff Johnsone7245742012-09-05 17:12:55 -070014245 rssiThresholdsReq.bReserved10 =
Jeff Johnson295189b2012-06-20 16:38:30 -070014246 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bReserved10;
Jeff Johnsone7245742012-09-05 17:12:55 -070014247 rssiThresholdsReq.bRssiThres1NegNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070014248 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres1NegNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070014249 rssiThresholdsReq.bRssiThres1PosNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070014250 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres1PosNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070014251 rssiThresholdsReq.bRssiThres2NegNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070014252 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres2NegNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070014253 rssiThresholdsReq.bRssiThres2PosNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070014254 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres2PosNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070014255 rssiThresholdsReq.bRssiThres3NegNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070014256 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres3NegNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070014257 rssiThresholdsReq.bRssiThres3PosNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070014258 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres3PosNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070014259 rssiThresholdsReq.ucRssiThreshold1 =
Jeff Johnson295189b2012-06-20 16:38:30 -070014260 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.ucRssiThreshold1;
Jeff Johnsone7245742012-09-05 17:12:55 -070014261 rssiThresholdsReq.ucRssiThreshold2 =
Jeff Johnson295189b2012-06-20 16:38:30 -070014262 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.ucRssiThreshold2;
Jeff Johnsone7245742012-09-05 17:12:55 -070014263 rssiThresholdsReq.ucRssiThreshold3 =
Jeff Johnson295189b2012-06-20 16:38:30 -070014264 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.ucRssiThreshold3;
14265
Jeff Johnsone7245742012-09-05 17:12:55 -070014266 wpalMemoryCopy( pSendBuffer+usDataOffset,
14267 &rssiThresholdsReq,
14268 sizeof(rssiThresholdsReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070014269
14270 pWDICtx->wdiReqStatusCB = pwdiRSSIThresholdsParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014271 pWDICtx->pReqStatusUserData = pwdiRSSIThresholdsParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014272
14273 /*-------------------------------------------------------------------------
14274 Send Set threshold req to HAL
14275 -------------------------------------------------------------------------*/
14276 if ((ret_status = WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14277 wdiRSSIThresholdsCb, pEventData->pUserData, WDI_SET_RSSI_THRESHOLDS_RESP)) == WDI_STATUS_SUCCESS)
14278 {
14279 // When we are in idle state WDI_STARTED_ST and we receive indication for threshold
14280 // req. Then as a result of processing the threshold cross ind, we trigger
14281 // a Set threshold req, then we need to indicate to WDI that it needs to
14282 // go to busy state as a result of the indication as we sent a req in the
14283 // same WDI context.
14284 // Hence expected state transition is to busy.
14285 pWDICtx->ucExpectedStateTransition = WDI_BUSY_ST;
14286 }
14287
14288 return ret_status;
14289}
14290
14291/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014292 @brief Process set RSSI thresholds Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070014293 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014294
14295 @param pWDICtx: pointer to the WLAN DAL context
14296 pEventData: pointer to the event information structure
14297
Jeff Johnson295189b2012-06-20 16:38:30 -070014298 @see
14299 @return Result of the function call
14300*/
14301WDI_Status
14302WDI_ProcessHostOffloadReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014303(
Jeff Johnson295189b2012-06-20 16:38:30 -070014304 WDI_ControlBlockType* pWDICtx,
14305 WDI_EventInfoType* pEventData
14306)
14307{
14308 WDI_HostOffloadReqParamsType* pwdiHostOffloadParams = NULL;
14309 WDI_HostOffloadCb wdiHostOffloadCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014310 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014311 wpt_uint16 usDataOffset = 0;
14312 wpt_uint16 usSendSize = 0;
14313 tHalHostOffloadReq hostOffloadParams;
14314 tHalNSOffloadParams nsOffloadParams;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014315 wpt_uint8 ucCurrentBSSSesIdx = 0;
14316 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014317
14318 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14319
14320 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014321 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014322 -------------------------------------------------------------------------*/
14323 if (( NULL == pEventData ) ||
14324 ( NULL == (pwdiHostOffloadParams = (WDI_HostOffloadReqParamsType*)pEventData->pEventData)) ||
14325 ( NULL == (wdiHostOffloadCb = (WDI_HostOffloadCb)pEventData->pCBfnc)))
14326 {
14327 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014328 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014329 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014330 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070014331 }
14332
14333 /*-----------------------------------------------------------------------
14334 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014335 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014336 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014337 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_HOST_OFFLOAD_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014338 sizeof(hostOffloadParams)+sizeof(nsOffloadParams),
14339 &pSendBuffer, &usDataOffset, &usSendSize))||
14340 ( usSendSize < (usDataOffset + sizeof(hostOffloadParams) + sizeof(nsOffloadParams) )))
14341 {
14342 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014343 "Unable to get send buffer in host offload req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014344 pEventData, pwdiHostOffloadParams, wdiHostOffloadCb);
14345 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014346 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070014347 }
14348
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014349 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
14350 pwdiHostOffloadParams->wdiHostOffloadInfo.bssId,
14351 &pBSSSes);
14352 if ( NULL == pBSSSes )
14353 {
14354 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Gopichand Nakkalac6c91902013-05-29 18:53:35 +053014355 " %s : Association for this BSSID does not exist " MAC_ADDRESS_STR,
14356 __func__, MAC_ADDR_ARRAY(pwdiHostOffloadParams->wdiHostOffloadInfo.bssId));
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014357 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014358 }
14359
Jeff Johnson295189b2012-06-20 16:38:30 -070014360 hostOffloadParams.offloadType = pwdiHostOffloadParams->wdiHostOffloadInfo.ucOffloadType;
14361 hostOffloadParams.enableOrDisable = pwdiHostOffloadParams->wdiHostOffloadInfo.ucEnableOrDisable;
Jeff Johnsone7245742012-09-05 17:12:55 -070014362
Jeff Johnson295189b2012-06-20 16:38:30 -070014363 if( HAL_IPV4_ARP_REPLY_OFFLOAD == hostOffloadParams.offloadType )
14364 {
14365 // ARP Offload
14366 wpalMemoryCopy(hostOffloadParams.params.hostIpv4Addr,
14367 pwdiHostOffloadParams->wdiHostOffloadInfo.params.aHostIpv4Addr,
14368 4);
14369 }
14370 else
14371 {
14372 // NS Offload
14373 wpalMemoryCopy(hostOffloadParams.params.hostIpv6Addr,
14374 pwdiHostOffloadParams->wdiHostOffloadInfo.params.aHostIpv6Addr,
14375 16);
14376
14377#ifdef WLAN_NS_OFFLOAD
14378 // copy pwdiHostOffloadParams->wdiNsOffloadParams into nsOffloadParams
14379 wpalMemoryCopy(nsOffloadParams.srcIPv6Addr,
14380 pwdiHostOffloadParams->wdiNsOffloadParams.srcIPv6Addr,
14381 16);
14382 wpalMemoryCopy(nsOffloadParams.selfIPv6Addr,
14383 pwdiHostOffloadParams->wdiNsOffloadParams.selfIPv6Addr,
14384 16);
14385 wpalMemoryCopy(nsOffloadParams.targetIPv6Addr1,
14386 pwdiHostOffloadParams->wdiNsOffloadParams.targetIPv6Addr1,
14387 16);
14388 wpalMemoryCopy(nsOffloadParams.targetIPv6Addr2,
14389 pwdiHostOffloadParams->wdiNsOffloadParams.targetIPv6Addr2,
14390 16);
14391 wpalMemoryCopy(nsOffloadParams.selfMacAddr,
14392 pwdiHostOffloadParams->wdiNsOffloadParams.selfMacAddr,
14393 6);
Gopichand Nakkala746a9452013-06-11 12:45:54 +053014394 nsOffloadParams.srcIPv6AddrValid =
14395 pwdiHostOffloadParams->wdiNsOffloadParams.srcIPv6AddrValid;
14396
14397 nsOffloadParams.targetIPv6Addr1Valid =
14398 pwdiHostOffloadParams->wdiNsOffloadParams.targetIPv6Addr1Valid;
14399
14400 nsOffloadParams.targetIPv6Addr2Valid =
14401 pwdiHostOffloadParams->wdiNsOffloadParams.targetIPv6Addr2Valid;
14402
14403 nsOffloadParams.slotIndex =
14404 pwdiHostOffloadParams->wdiNsOffloadParams.slotIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070014405
Jeff Johnson295189b2012-06-20 16:38:30 -070014406#endif // WLAN_NS_OFFLOAD
14407 }
14408
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014409 nsOffloadParams.bssIdx = pBSSSes->ucBSSIdx;
14410
Jeff Johnson295189b2012-06-20 16:38:30 -070014411 // copy hostOffloadParams into pSendBuffer
14412 wpalMemoryCopy( pSendBuffer+usDataOffset,
14413 &hostOffloadParams,
14414 sizeof(hostOffloadParams));
14415
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014416 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION) )
Jeff Johnson295189b2012-06-20 16:38:30 -070014417 {
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014418 // copy nsOffloadParams into pSendBuffer
14419 wpalMemoryCopy( pSendBuffer+usDataOffset+sizeof(hostOffloadParams),
Jeff Johnson295189b2012-06-20 16:38:30 -070014420 &nsOffloadParams,
14421 sizeof(nsOffloadParams));
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014422 }
14423 else
14424 {
14425#ifdef WLAN_NS_OFFLOAD
14426 if( HAL_IPV6_NS_OFFLOAD == hostOffloadParams.offloadType )
14427 {
14428 // copy nsOffloadParams into pSendBuffer
14429 wpalMemoryCopy( pSendBuffer+usDataOffset+sizeof(hostOffloadParams),
14430 &nsOffloadParams,
14431 sizeof(nsOffloadParams));
14432 }
14433#endif
14434 }
Jeff Johnson295189b2012-06-20 16:38:30 -070014435
14436 pWDICtx->wdiReqStatusCB = pwdiHostOffloadParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014437 pWDICtx->pReqStatusUserData = pwdiHostOffloadParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014438
14439 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014440 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014441 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014442 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14443 wdiHostOffloadCb, pEventData->pUserData, WDI_HOST_OFFLOAD_RESP);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014444
14445fail:
14446 // Release the message buffer so we don't leak
14447 wpalMemoryFree(pSendBuffer);
14448
14449failRequest:
14450 //WDA should have failure check to avoid the memory leak
14451 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014452}/*WDI_ProcessHostOffloadReq*/
14453
14454/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014455 @brief Process Keep Alive Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070014456 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014457
14458 @param pWDICtx: pointer to the WLAN DAL context
14459 pEventData: pointer to the event information structure
14460
Jeff Johnson295189b2012-06-20 16:38:30 -070014461 @see
14462 @return Result of the function call
14463*/
14464WDI_Status
14465WDI_ProcessKeepAliveReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014466(
Jeff Johnson295189b2012-06-20 16:38:30 -070014467 WDI_ControlBlockType* pWDICtx,
14468 WDI_EventInfoType* pEventData
14469)
14470{
14471 WDI_KeepAliveReqParamsType* pwdiKeepAliveParams = NULL;
14472 WDI_KeepAliveCb wdiKeepAliveCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014473 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014474 wpt_uint16 usDataOffset = 0;
14475 wpt_uint16 usSendSize = 0;
14476 tHalKeepAliveReq keepAliveReq;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014477 wpt_uint8 ucCurrentBSSSesIdx = 0;
14478 WDI_BSSSessionType* pBSSSes = NULL;
14479
Jeff Johnson295189b2012-06-20 16:38:30 -070014480 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14481
14482 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014483 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014484 -------------------------------------------------------------------------*/
14485 if (( NULL == pEventData ) ||
14486 ( NULL == (pwdiKeepAliveParams = (WDI_KeepAliveReqParamsType*)pEventData->pEventData)) ||
14487 ( NULL == (wdiKeepAliveCb = (WDI_KeepAliveCb)pEventData->pCBfnc)))
14488 {
14489 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
14490 "Invalid parameters in Keep Alive req");
14491 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014492 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070014493 }
14494
14495 /*-----------------------------------------------------------------------
14496 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014497 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014498 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014499 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_KEEP_ALIVE_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014500 sizeof(keepAliveReq),
14501 &pSendBuffer, &usDataOffset, &usSendSize))||
14502 ( usSendSize < (usDataOffset + sizeof(keepAliveReq) )))
14503 {
14504 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014505 "Unable to get send buffer in keep alive req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014506 pEventData, pwdiKeepAliveParams, wdiKeepAliveCb);
14507 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014508 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070014509 }
14510
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014511 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
14512 pwdiKeepAliveParams->wdiKeepAliveInfo.bssId,
14513 &pBSSSes);
14514 if ( NULL == pBSSSes )
14515 {
14516 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014517 " %s : Association for this BSSID does not exist",__func__);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014518 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014519 }
14520
Jeff Johnson295189b2012-06-20 16:38:30 -070014521 keepAliveReq.packetType = pwdiKeepAliveParams->wdiKeepAliveInfo.ucPacketType;
14522 keepAliveReq.timePeriod = pwdiKeepAliveParams->wdiKeepAliveInfo.ucTimePeriod;
14523
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014524 keepAliveReq.bssIdx = pBSSSes->ucBSSIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070014525
Jeff Johnson295189b2012-06-20 16:38:30 -070014526 if(pwdiKeepAliveParams->wdiKeepAliveInfo.ucPacketType == 2)
14527 {
14528 wpalMemoryCopy(keepAliveReq.hostIpv4Addr,
14529 pwdiKeepAliveParams->wdiKeepAliveInfo.aHostIpv4Addr,
14530 HAL_IPV4_ADDR_LEN);
14531 wpalMemoryCopy(keepAliveReq.destIpv4Addr,
14532 pwdiKeepAliveParams->wdiKeepAliveInfo.aDestIpv4Addr,
Jeff Johnsone7245742012-09-05 17:12:55 -070014533 HAL_IPV4_ADDR_LEN);
Jeff Johnson295189b2012-06-20 16:38:30 -070014534 wpalMemoryCopy(keepAliveReq.destMacAddr,
14535 pwdiKeepAliveParams->wdiKeepAliveInfo.aDestMacAddr,
14536 HAL_MAC_ADDR_LEN);
14537 }
Jeff Johnsone7245742012-09-05 17:12:55 -070014538
14539 wpalMemoryCopy( pSendBuffer+usDataOffset,
14540 &keepAliveReq,
14541 sizeof(keepAliveReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070014542
14543 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnson5b414462013-11-22 16:44:20 -080014544 "Process keep alive req %zu", sizeof(keepAliveReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070014545
14546 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnson5b414462013-11-22 16:44:20 -080014547 "Process keep alive req time period %d",
14548 keepAliveReq.timePeriod);
Jeff Johnson295189b2012-06-20 16:38:30 -070014549
14550 pWDICtx->wdiReqStatusCB = pwdiKeepAliveParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014551 pWDICtx->pReqStatusUserData = pwdiKeepAliveParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014552
14553 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
14554 "Sending keep alive req to HAL");
14555
14556 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014557 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014558 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014559 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14560 wdiKeepAliveCb, pEventData->pUserData, WDI_KEEP_ALIVE_RESP);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014561
14562fail:
14563 // Release the message buffer so we don't leak
14564 wpalMemoryFree(pSendBuffer);
14565
14566failRequest:
14567 //WDA should have failure check to avoid the memory leak
14568 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014569}/*WDI_ProcessKeepAliveReq*/
14570
14571
14572/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014573 @brief Process Wowl add bc ptrn Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070014574 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014575
14576 @param pWDICtx: pointer to the WLAN DAL context
14577 pEventData: pointer to the event information structure
14578
Jeff Johnson295189b2012-06-20 16:38:30 -070014579 @see
14580 @return Result of the function call
14581*/
14582WDI_Status
14583WDI_ProcessWowlAddBcPtrnReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014584(
Jeff Johnson295189b2012-06-20 16:38:30 -070014585 WDI_ControlBlockType* pWDICtx,
14586 WDI_EventInfoType* pEventData
14587)
14588{
14589 WDI_WowlAddBcPtrnReqParamsType* pwdiWowlAddBcPtrnParams = NULL;
14590 WDI_WowlAddBcPtrnCb wdiWowlAddBcPtrnCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014591 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014592 wpt_uint16 usDataOffset = 0;
14593 wpt_uint16 usSendSize = 0;
14594 tHalWowlAddBcastPtrn wowlAddBcPtrnReq;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014595 wpt_uint8 ucCurrentBSSSesIdx = 0;
14596 WDI_BSSSessionType* pBSSSes = NULL;
14597
Jeff Johnson295189b2012-06-20 16:38:30 -070014598 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14599
14600 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014601 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014602 -------------------------------------------------------------------------*/
14603 if (( NULL == pEventData ) ||
14604 ( NULL == (pwdiWowlAddBcPtrnParams = (WDI_WowlAddBcPtrnReqParamsType*)pEventData->pEventData)) ||
14605 ( NULL == (wdiWowlAddBcPtrnCb = (WDI_WowlAddBcPtrnCb)pEventData->pCBfnc)))
14606 {
14607 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014608 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014609 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014610 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070014611 }
14612
14613 /*-----------------------------------------------------------------------
14614 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014615 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014616 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014617 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_WOWL_ADD_BC_PTRN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014618 sizeof(wowlAddBcPtrnReq),
14619 &pSendBuffer, &usDataOffset, &usSendSize))||
14620 ( usSendSize < (usDataOffset + sizeof(wowlAddBcPtrnReq) )))
14621 {
14622 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014623 "Unable to get send buffer in Wowl add bc ptrn req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014624 pEventData, pwdiWowlAddBcPtrnParams, wdiWowlAddBcPtrnCb);
14625 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014626 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070014627 }
14628
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014629 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
14630 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.bssId,
14631 &pBSSSes);
14632 if ( NULL == pBSSSes )
14633 {
14634 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014635 " %s : Association for this BSSID does not exist",__func__);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014636 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014637 }
14638
Jeff Johnsone7245742012-09-05 17:12:55 -070014639 wowlAddBcPtrnReq.ucPatternId =
Jeff Johnson295189b2012-06-20 16:38:30 -070014640 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternId;
Jeff Johnsone7245742012-09-05 17:12:55 -070014641 wowlAddBcPtrnReq.ucPatternByteOffset =
Jeff Johnson295189b2012-06-20 16:38:30 -070014642 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternByteOffset;
Jeff Johnsone7245742012-09-05 17:12:55 -070014643 wowlAddBcPtrnReq.ucPatternMaskSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070014644 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMaskSize;
Jeff Johnsone7245742012-09-05 17:12:55 -070014645 wowlAddBcPtrnReq.ucPatternSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070014646 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternSize;
14647
14648 if (pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternSize <= HAL_WOWL_BCAST_PATTERN_MAX_SIZE)
14649 {
14650 wpalMemoryCopy(wowlAddBcPtrnReq.ucPattern,
14651 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPattern,
14652 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternSize);
14653 wpalMemoryCopy(wowlAddBcPtrnReq.ucPatternMask,
14654 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMask,
14655 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMaskSize);
14656 }
14657 else
14658 {
14659 wpalMemoryCopy(wowlAddBcPtrnReq.ucPattern,
14660 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPattern,
14661 HAL_WOWL_BCAST_PATTERN_MAX_SIZE);
14662 wpalMemoryCopy(wowlAddBcPtrnReq.ucPatternMask,
14663 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMask,
14664 HAL_WOWL_BCAST_PATTERN_MAX_SIZE);
14665
14666 wpalMemoryCopy(wowlAddBcPtrnReq.ucPattern,
14667 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPattern,
14668 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMaskSize - HAL_WOWL_BCAST_PATTERN_MAX_SIZE);
14669 wpalMemoryCopy(wowlAddBcPtrnReq.ucPatternMask,
14670 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMask,
14671 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMaskSize - HAL_WOWL_BCAST_PATTERN_MAX_SIZE);
14672 }
14673
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014674 wowlAddBcPtrnReq.bssIdx = pBSSSes->ucBSSIdx;
14675
Jeff Johnson295189b2012-06-20 16:38:30 -070014676 wpalMemoryCopy( pSendBuffer+usDataOffset,
14677 &wowlAddBcPtrnReq,
14678 sizeof(wowlAddBcPtrnReq));
14679
14680 pWDICtx->wdiReqStatusCB = pwdiWowlAddBcPtrnParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014681 pWDICtx->pReqStatusUserData = pwdiWowlAddBcPtrnParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014682
14683 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014684 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014685 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014686 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14687 wdiWowlAddBcPtrnCb, pEventData->pUserData, WDI_WOWL_ADD_BC_PTRN_RESP);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014688fail:
14689 // Release the message buffer so we don't leak
14690 wpalMemoryFree(pSendBuffer);
14691
14692failRequest:
14693 //WDA should have failure check to avoid the memory leak
14694 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014695}/*WDI_ProcessWowlAddBcPtrnReq*/
14696
14697/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014698 @brief Process Wowl delete bc ptrn Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070014699 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014700
14701 @param pWDICtx: pointer to the WLAN DAL context
14702 pEventData: pointer to the event information structure
14703
Jeff Johnson295189b2012-06-20 16:38:30 -070014704 @see
14705 @return Result of the function call
14706*/
14707WDI_Status
14708WDI_ProcessWowlDelBcPtrnReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014709(
Jeff Johnson295189b2012-06-20 16:38:30 -070014710 WDI_ControlBlockType* pWDICtx,
14711 WDI_EventInfoType* pEventData
14712)
14713{
14714 WDI_WowlDelBcPtrnReqParamsType* pwdiWowlDelBcPtrnParams = NULL;
14715 WDI_WowlDelBcPtrnCb wdiWowlDelBcPtrnCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014716 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014717 wpt_uint16 usDataOffset = 0;
14718 wpt_uint16 usSendSize = 0;
14719 tHalWowlDelBcastPtrn wowlDelBcPtrnReq;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014720 wpt_uint8 ucCurrentBSSSesIdx = 0;
14721 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014722 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14723
14724 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014725 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014726 -------------------------------------------------------------------------*/
14727 if (( NULL == pEventData ) ||
14728 ( NULL == (pwdiWowlDelBcPtrnParams = (WDI_WowlDelBcPtrnReqParamsType*)pEventData->pEventData)) ||
14729 ( NULL == (wdiWowlDelBcPtrnCb = (WDI_WowlDelBcPtrnCb)pEventData->pCBfnc)))
14730 {
14731 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014732 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014733 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014734 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070014735 }
14736
14737 /*-----------------------------------------------------------------------
14738 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014739 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014740 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014741 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_WOWL_DEL_BC_PTRN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014742 sizeof(wowlDelBcPtrnReq),
14743 &pSendBuffer, &usDataOffset, &usSendSize))||
14744 ( usSendSize < (usDataOffset + sizeof(wowlDelBcPtrnReq) )))
14745 {
14746 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014747 "Unable to get send buffer in Wowl del bc ptrn req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014748 pEventData, pwdiWowlDelBcPtrnParams, wdiWowlDelBcPtrnCb);
14749 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014750 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070014751 }
14752
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014753 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
14754 pwdiWowlDelBcPtrnParams->wdiWowlDelBcPtrnInfo.bssId,
14755 &pBSSSes);
14756 if ( NULL == pBSSSes )
14757 {
14758 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014759 " %s : Association for this BSSID does not exist",__func__);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014760 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014761 }
14762
Jeff Johnsone7245742012-09-05 17:12:55 -070014763 wowlDelBcPtrnReq.ucPatternId =
Jeff Johnson295189b2012-06-20 16:38:30 -070014764 pwdiWowlDelBcPtrnParams->wdiWowlDelBcPtrnInfo.ucPatternId;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014765
14766 wowlDelBcPtrnReq.bssIdx = pBSSSes->ucBSSIdx;
14767
Jeff Johnsone7245742012-09-05 17:12:55 -070014768 wpalMemoryCopy( pSendBuffer+usDataOffset,
14769 &wowlDelBcPtrnReq,
14770 sizeof(wowlDelBcPtrnReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070014771
14772 pWDICtx->wdiReqStatusCB = pwdiWowlDelBcPtrnParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014773 pWDICtx->pReqStatusUserData = pwdiWowlDelBcPtrnParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014774
14775 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014776 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014777 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014778 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14779 wdiWowlDelBcPtrnCb, pEventData->pUserData, WDI_WOWL_DEL_BC_PTRN_RESP);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014780
14781fail:
14782 // Release the message buffer so we don't leak
14783 wpalMemoryFree(pSendBuffer);
14784
14785failRequest:
14786 //WDA should have failure check to avoid the memory leak
14787 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014788}/*WDI_ProcessWowlDelBcPtrnReq*/
14789
14790/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014791 @brief Process Wowl enter Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070014792 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014793
14794 @param pWDICtx: pointer to the WLAN DAL context
14795 pEventData: pointer to the event information structure
14796
Jeff Johnson295189b2012-06-20 16:38:30 -070014797 @see
14798 @return Result of the function call
14799*/
14800WDI_Status
14801WDI_ProcessWowlEnterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014802(
Jeff Johnson295189b2012-06-20 16:38:30 -070014803 WDI_ControlBlockType* pWDICtx,
14804 WDI_EventInfoType* pEventData
14805)
14806{
14807 WDI_WowlEnterReqParamsType* pwdiWowlEnterParams = NULL;
14808 WDI_WowlEnterReqCb wdiWowlEnterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014809 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014810 wpt_uint16 usDataOffset = 0;
14811 wpt_uint16 usSendSize = 0;
14812 tHalWowlEnterParams wowlEnterReq;
14813 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14814
14815 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014816 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014817 -------------------------------------------------------------------------*/
14818 if (( NULL == pEventData ) ||
14819 ( NULL == (pwdiWowlEnterParams = (WDI_WowlEnterReqParamsType*)pEventData->pEventData)) ||
14820 ( NULL == (wdiWowlEnterCb = (WDI_WowlEnterReqCb)pEventData->pCBfnc)))
14821 {
14822 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014823 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014824 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014825 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014826 }
14827
14828 /*-----------------------------------------------------------------------
14829 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014830 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014831 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014832 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_WOWL_ENTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014833 sizeof(wowlEnterReq),
14834 &pSendBuffer, &usDataOffset, &usSendSize))||
14835 ( usSendSize < (usDataOffset + sizeof(wowlEnterReq) )))
14836 {
14837 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014838 "Unable to get send buffer in Wowl enter req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014839 pEventData, pwdiWowlEnterParams, wdiWowlEnterCb);
14840 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014841 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014842 }
14843
Kumar Anandaca924e2013-07-22 14:35:34 -070014844 wpalMemoryZero(&wowlEnterReq, sizeof(tHalWowlEnterParams));
14845
Jeff Johnsone7245742012-09-05 17:12:55 -070014846 wowlEnterReq.ucMagicPktEnable =
Jeff Johnson295189b2012-06-20 16:38:30 -070014847 pwdiWowlEnterParams->wdiWowlEnterInfo.ucMagicPktEnable;
Jeff Johnsone7245742012-09-05 17:12:55 -070014848 wowlEnterReq.ucPatternFilteringEnable =
Jeff Johnson295189b2012-06-20 16:38:30 -070014849 pwdiWowlEnterParams->wdiWowlEnterInfo.ucPatternFilteringEnable;
Jeff Johnsone7245742012-09-05 17:12:55 -070014850 wowlEnterReq.ucUcastPatternFilteringEnable =
Jeff Johnson295189b2012-06-20 16:38:30 -070014851 pwdiWowlEnterParams->wdiWowlEnterInfo.ucUcastPatternFilteringEnable;
Jeff Johnsone7245742012-09-05 17:12:55 -070014852 wowlEnterReq.ucWowChnlSwitchRcv =
Jeff Johnson295189b2012-06-20 16:38:30 -070014853 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowChnlSwitchRcv;
Jeff Johnsone7245742012-09-05 17:12:55 -070014854 wowlEnterReq.ucWowDeauthRcv =
Jeff Johnson295189b2012-06-20 16:38:30 -070014855 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowDeauthRcv;
Jeff Johnsone7245742012-09-05 17:12:55 -070014856 wowlEnterReq.ucWowDisassocRcv =
Jeff Johnson295189b2012-06-20 16:38:30 -070014857 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowDisassocRcv;
Jeff Johnsone7245742012-09-05 17:12:55 -070014858 wowlEnterReq.ucWowMaxMissedBeacons =
Jeff Johnson295189b2012-06-20 16:38:30 -070014859 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowMaxMissedBeacons;
Jeff Johnsone7245742012-09-05 17:12:55 -070014860 wowlEnterReq.ucWowMaxSleepUsec =
Jeff Johnson295189b2012-06-20 16:38:30 -070014861 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowMaxSleepUsec;
14862
14863#ifdef WLAN_WAKEUP_EVENTS
14864 wowlEnterReq.ucWoWEAPIDRequestEnable =
14865 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWoWEAPIDRequestEnable;
14866
14867 wowlEnterReq.ucWoWEAPOL4WayEnable =
14868 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWoWEAPOL4WayEnable;
14869
14870 wowlEnterReq.ucWowNetScanOffloadMatch =
14871 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowNetScanOffloadMatch;
14872
14873 wowlEnterReq.ucWowGTKRekeyError =
14874 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowGTKRekeyError;
14875
14876 wowlEnterReq.ucWoWBSSConnLoss =
14877 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWoWBSSConnLoss;
14878#endif // WLAN_WAKEUP_EVENTS
14879
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014880 wowlEnterReq.bssIdx = pwdiWowlEnterParams->wdiWowlEnterInfo.bssIdx;
14881
Jeff Johnson295189b2012-06-20 16:38:30 -070014882 wpalMemoryCopy(wowlEnterReq.magicPtrn,
14883 pwdiWowlEnterParams->wdiWowlEnterInfo.magicPtrn,
14884 sizeof(tSirMacAddr));
14885
Jeff Johnsone7245742012-09-05 17:12:55 -070014886 wpalMemoryCopy( pSendBuffer+usDataOffset,
14887 &wowlEnterReq,
14888 sizeof(wowlEnterReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070014889
14890 pWDICtx->wdiReqStatusCB = pwdiWowlEnterParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014891 pWDICtx->pReqStatusUserData = pwdiWowlEnterParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014892
14893 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014894 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014895 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014896 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14897 wdiWowlEnterCb, pEventData->pUserData, WDI_WOWL_ENTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070014898}/*WDI_ProcessWowlEnterReq*/
14899
14900/**
14901 @brief Process Wowl exit Request function (called when Main FSM
14902 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014903
14904 @param pWDICtx: pointer to the WLAN DAL context
14905 pEventData: pointer to the event information structure
14906
Jeff Johnson295189b2012-06-20 16:38:30 -070014907 @see
14908 @return Result of the function call
14909*/
14910WDI_Status
14911WDI_ProcessWowlExitReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014912(
Jeff Johnson295189b2012-06-20 16:38:30 -070014913 WDI_ControlBlockType* pWDICtx,
14914 WDI_EventInfoType* pEventData
14915)
14916{
14917 WDI_WowlExitReqCb wdiWowlExitCb = NULL;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014918 WDI_WowlExitReqParamsType* pwdiWowlExitParams = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014919 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014920 wpt_uint16 usDataOffset = 0;
14921 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014922 tHalWowlExitParams wowlExitparams;
Jeff Johnson295189b2012-06-20 16:38:30 -070014923 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14924
14925 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014926 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014927 -------------------------------------------------------------------------*/
14928 if (( NULL == pEventData ) ||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014929 ( NULL == (pwdiWowlExitParams = (WDI_WowlExitReqParamsType *)pEventData->pEventData)) ||
Jeff Johnson295189b2012-06-20 16:38:30 -070014930 ( NULL == (wdiWowlExitCb = (WDI_WowlExitReqCb)pEventData->pCBfnc)))
14931 {
14932 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014933 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014934 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014935 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014936 }
14937
14938 /*-----------------------------------------------------------------------
14939 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014940 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014941 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014942 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_WOWL_EXIT_REQ,
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014943 sizeof(wowlExitparams),
Jeff Johnson295189b2012-06-20 16:38:30 -070014944 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014945 ( usSendSize < (usDataOffset + sizeof(wowlExitparams))))
Jeff Johnson295189b2012-06-20 16:38:30 -070014946 {
14947 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014948 "Unable to get send buffer in Wowl Exit req %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014949 pEventData, wdiWowlExitCb);
14950 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014951 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014952 }
14953
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014954 wowlExitparams.bssIdx = pwdiWowlExitParams->wdiWowlExitInfo.bssIdx;
14955
14956 wpalMemoryCopy( pSendBuffer+usDataOffset,
14957 &wowlExitparams,
14958 sizeof(wowlExitparams));
Jeff Johnson295189b2012-06-20 16:38:30 -070014959 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014960 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014961 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014962 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14963 wdiWowlExitCb, pEventData->pUserData, WDI_WOWL_EXIT_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070014964}/*WDI_ProcessWowlExitReq*/
14965
14966/**
14967 @brief Process Configure Apps Cpu Wakeup State Request function
14968 (called when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014969
14970 @param pWDICtx: pointer to the WLAN DAL context
14971 pEventData: pointer to the event information structure
14972
Jeff Johnson295189b2012-06-20 16:38:30 -070014973 @see
14974 @return Result of the function call
14975*/
14976WDI_Status
14977WDI_ProcessConfigureAppsCpuWakeupStateReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014978(
Jeff Johnson295189b2012-06-20 16:38:30 -070014979 WDI_ControlBlockType* pWDICtx,
14980 WDI_EventInfoType* pEventData
14981)
14982{
14983 WDI_ConfigureAppsCpuWakeupStateReqParamsType* pwdiAppsCpuWakeupStateParams = NULL;
14984 WDI_ConfigureAppsCpuWakeupStateCb wdiConfigureAppsCpuWakeupStateCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014985 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014986 wpt_uint16 usDataOffset = 0;
14987 wpt_uint16 usSendSize = 0;
14988 tHalConfigureAppsCpuWakeupStateReqParams halCfgAppsCpuWakeupStateReqParams;
14989 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14990
14991 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014992 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014993 -------------------------------------------------------------------------*/
14994 if (( NULL == pEventData ) ||
14995 ( NULL == (pwdiAppsCpuWakeupStateParams = (WDI_ConfigureAppsCpuWakeupStateReqParamsType*)pEventData->pEventData)) ||
14996 ( NULL == (wdiConfigureAppsCpuWakeupStateCb = (WDI_ConfigureAppsCpuWakeupStateCb)pEventData->pCBfnc)))
14997 {
14998 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014999 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015000 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015001 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015002 }
15003
15004 /*-----------------------------------------------------------------------
15005 Get message buffer
15006 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015007 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070015008 sizeof(halCfgAppsCpuWakeupStateReqParams),
15009 &pSendBuffer, &usDataOffset, &usSendSize))||
15010 ( usSendSize < (usDataOffset + sizeof(pwdiAppsCpuWakeupStateParams->bIsAppsAwake) )))
15011 {
15012 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080015013 "Unable to get send buffer in Apps CPU Wakeup State req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070015014 pEventData, pwdiAppsCpuWakeupStateParams, wdiConfigureAppsCpuWakeupStateCb);
15015 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015016 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015017 }
15018
Jeff Johnsone7245742012-09-05 17:12:55 -070015019 halCfgAppsCpuWakeupStateReqParams.isAppsCpuAwake =
Jeff Johnson295189b2012-06-20 16:38:30 -070015020 pwdiAppsCpuWakeupStateParams->bIsAppsAwake;
15021
Jeff Johnsone7245742012-09-05 17:12:55 -070015022 wpalMemoryCopy( pSendBuffer+usDataOffset,
15023 &halCfgAppsCpuWakeupStateReqParams,
15024 sizeof(halCfgAppsCpuWakeupStateReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070015025
15026 pWDICtx->wdiReqStatusCB = pwdiAppsCpuWakeupStateParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070015027 pWDICtx->pReqStatusUserData = pwdiAppsCpuWakeupStateParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070015028
15029 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015030 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070015031 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015032 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
15033 wdiConfigureAppsCpuWakeupStateCb, pEventData->pUserData,
15034 WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070015035}/*WDI_ProcessConfigureAppsCpuWakeupStateReq*/
15036
15037#ifdef WLAN_FEATURE_VOWIFI_11R
15038/**
15039 @brief Process Aggregated Add TSpec Request function (called when Main FSM
15040 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070015041
15042 @param pWDICtx: pointer to the WLAN DAL context
15043 pEventData: pointer to the event information structure
15044
Jeff Johnson295189b2012-06-20 16:38:30 -070015045 @see
15046 @return Result of the function call
15047*/
15048WDI_Status
15049WDI_ProcessAggrAddTSpecReq
Jeff Johnsone7245742012-09-05 17:12:55 -070015050(
Jeff Johnson295189b2012-06-20 16:38:30 -070015051 WDI_ControlBlockType* pWDICtx,
15052 WDI_EventInfoType* pEventData
15053)
15054{
15055 WDI_AggrAddTSReqParamsType* pwdiAggrAddTSParams;
15056 WDI_AggrAddTsRspCb wdiAggrAddTSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070015057 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070015058 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070015059 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070015060 wpt_uint16 usDataOffset = 0;
15061 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070015062 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015063 wpt_macAddr macBSSID;
15064 tAggrAddTsReq halAggrAddTsReq;
15065 int i;
15066 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15067
15068 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015069 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015070 -------------------------------------------------------------------------*/
15071 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
15072 ( NULL == pEventData->pCBfnc ))
15073 {
15074 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015075 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015076 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015077 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015078 }
15079 wpalMemoryFill( &halAggrAddTsReq, sizeof(tAggrAddTsReq), 0 );
15080 pwdiAggrAddTSParams = (WDI_AggrAddTSReqParamsType*)pEventData->pEventData;
15081 wdiAggrAddTSRspCb = (WDI_AggrAddTsRspCb)pEventData->pCBfnc;
15082 /*-------------------------------------------------------------------------
15083 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070015084 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070015085 -------------------------------------------------------------------------*/
15086 wpalMutexAcquire(&pWDICtx->wptMutex);
15087
15088 /*------------------------------------------------------------------------
15089 Find the BSS for which the request is made and identify WDI session
15090 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015091 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
15092 pwdiAggrAddTSParams->wdiAggrTsInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070015093 &macBSSID))
15094 {
15095 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080015096 "This station does not exist in the WDI Station Table %d",
15097 pwdiAggrAddTSParams->wdiAggrTsInfo.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070015098 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070015099 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015100 }
15101
Jeff Johnsone7245742012-09-05 17:12:55 -070015102 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
15103 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070015104 {
Jeff Johnsone7245742012-09-05 17:12:55 -070015105 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15106 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
15107 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070015108
15109 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070015110 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070015111 }
Jeff Johnsone7245742012-09-05 17:12:55 -070015112
Jeff Johnson295189b2012-06-20 16:38:30 -070015113 /*------------------------------------------------------------------------
15114 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070015115 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070015116 ------------------------------------------------------------------------*/
15117 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
15118 {
Jeff Johnsone7245742012-09-05 17:12:55 -070015119 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
15120 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
15121 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070015122
Jeff Johnsone7245742012-09-05 17:12:55 -070015123 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070015124 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070015125 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070015126 }
15127
15128 wpalMutexRelease(&pWDICtx->wptMutex);
15129 /*-----------------------------------------------------------------------
15130 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070015131 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070015132 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015133 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_AGGR_ADD_TS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070015134 sizeof(tAggrAddTsParams),
15135 &pSendBuffer, &usDataOffset, &usSendSize))||
15136 ( usSendSize < (usDataOffset + sizeof(tAggrAddTsParams) )))
15137 {
15138 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080015139 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070015140 pEventData, pwdiAggrAddTSParams, wdiAggrAddTSRspCb);
15141 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015142 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015143 }
15144
Jeff Johnsone7245742012-09-05 17:12:55 -070015145 halAggrAddTsReq.aggrAddTsParam.staIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070015146 pwdiAggrAddTSParams->wdiAggrTsInfo.ucSTAIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015147 halAggrAddTsReq.aggrAddTsParam.tspecIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070015148 pwdiAggrAddTSParams->wdiAggrTsInfo.ucTspecIdx;
15149
15150 for( i = 0; i < WLAN_HAL_MAX_AC; i++ )
15151 {
Jeff Johnsone7245742012-09-05 17:12:55 -070015152 halAggrAddTsReq.aggrAddTsParam.tspec[i].type =
Jeff Johnson295189b2012-06-20 16:38:30 -070015153 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].ucType;
Jeff Johnsone7245742012-09-05 17:12:55 -070015154 halAggrAddTsReq.aggrAddTsParam.tspec[i].length =
Jeff Johnson295189b2012-06-20 16:38:30 -070015155 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].ucLength;
Jeff Johnsone7245742012-09-05 17:12:55 -070015156 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.ackPolicy =
Jeff Johnson295189b2012-06-20 16:38:30 -070015157 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
15158 ackPolicy;
Jeff Johnsone7245742012-09-05 17:12:55 -070015159 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.accessPolicy =
Jeff Johnson295189b2012-06-20 16:38:30 -070015160 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
15161 accessPolicy;
Jeff Johnsone7245742012-09-05 17:12:55 -070015162 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.userPrio =
Jeff Johnson295189b2012-06-20 16:38:30 -070015163 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
15164 userPrio;
Jeff Johnsone7245742012-09-05 17:12:55 -070015165 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.psb =
Jeff Johnson295189b2012-06-20 16:38:30 -070015166 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
15167 psb;
Jeff Johnsone7245742012-09-05 17:12:55 -070015168 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.aggregation =
Jeff Johnson295189b2012-06-20 16:38:30 -070015169 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
15170 aggregation;
Jeff Johnsone7245742012-09-05 17:12:55 -070015171 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.direction =
Jeff Johnson295189b2012-06-20 16:38:30 -070015172 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
15173 direction;
Jeff Johnsone7245742012-09-05 17:12:55 -070015174 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.tsid =
Jeff Johnson295189b2012-06-20 16:38:30 -070015175 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
15176 trafficType;
Jeff Johnsone7245742012-09-05 17:12:55 -070015177 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.tsid =
Jeff Johnson295189b2012-06-20 16:38:30 -070015178 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
15179 trafficType;
Jeff Johnsone7245742012-09-05 17:12:55 -070015180 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.schedule.rsvd =
Jeff Johnson295189b2012-06-20 16:38:30 -070015181 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiSchedule.rsvd;
Jeff Johnsone7245742012-09-05 17:12:55 -070015182 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.schedule.schedule =
Jeff Johnson295189b2012-06-20 16:38:30 -070015183 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiSchedule.schedule;
Jeff Johnsone7245742012-09-05 17:12:55 -070015184
15185
15186 halAggrAddTsReq.aggrAddTsParam.tspec[i].nomMsduSz =
Jeff Johnson295189b2012-06-20 16:38:30 -070015187 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].usNomMsduSz;
Jeff Johnsone7245742012-09-05 17:12:55 -070015188 halAggrAddTsReq.aggrAddTsParam.tspec[i].maxMsduSz =
Jeff Johnson295189b2012-06-20 16:38:30 -070015189 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].usMaxMsduSz;
Jeff Johnsone7245742012-09-05 17:12:55 -070015190 halAggrAddTsReq.aggrAddTsParam.tspec[i].minSvcInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070015191 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMinSvcInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070015192 halAggrAddTsReq.aggrAddTsParam.tspec[i].maxSvcInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070015193 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMaxSvcInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070015194 halAggrAddTsReq.aggrAddTsParam.tspec[i].inactInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070015195 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uInactInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070015196 halAggrAddTsReq.aggrAddTsParam.tspec[i].suspendInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070015197 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uSuspendInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070015198 halAggrAddTsReq.aggrAddTsParam.tspec[i].svcStartTime =
Jeff Johnson295189b2012-06-20 16:38:30 -070015199 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uSvcStartTime;
Jeff Johnsone7245742012-09-05 17:12:55 -070015200 halAggrAddTsReq.aggrAddTsParam.tspec[i].minDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070015201 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMinDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070015202 halAggrAddTsReq.aggrAddTsParam.tspec[i].meanDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070015203 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMeanDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070015204 halAggrAddTsReq.aggrAddTsParam.tspec[i].peakDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070015205 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uPeakDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070015206 halAggrAddTsReq.aggrAddTsParam.tspec[i].maxBurstSz =
Jeff Johnson295189b2012-06-20 16:38:30 -070015207 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMaxBurstSz;
Jeff Johnsone7245742012-09-05 17:12:55 -070015208 halAggrAddTsReq.aggrAddTsParam.tspec[i].delayBound =
Jeff Johnson295189b2012-06-20 16:38:30 -070015209 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uDelayBound;
Jeff Johnsone7245742012-09-05 17:12:55 -070015210 halAggrAddTsReq.aggrAddTsParam.tspec[i].minPhyRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070015211 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMinPhyRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070015212 halAggrAddTsReq.aggrAddTsParam.tspec[i].surplusBw =
Jeff Johnson295189b2012-06-20 16:38:30 -070015213 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].usSurplusBw;
Jeff Johnsone7245742012-09-05 17:12:55 -070015214 halAggrAddTsReq.aggrAddTsParam.tspec[i].mediumTime =
Jeff Johnson295189b2012-06-20 16:38:30 -070015215 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].usMediumTime;
15216 }
15217
Jeff Johnsone7245742012-09-05 17:12:55 -070015218 wpalMemoryCopy( pSendBuffer+usDataOffset,
15219 &halAggrAddTsReq,
15220 sizeof(halAggrAddTsReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070015221
15222 pWDICtx->wdiReqStatusCB = pwdiAggrAddTSParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070015223 pWDICtx->pReqStatusUserData = pwdiAggrAddTSParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070015224
15225 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015226 Send Add TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070015227 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015228 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070015229 wdiAggrAddTSRspCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -070015230 WDI_AGGR_ADD_TS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070015231}/*WDI_ProcessAggrAddTSpecReq*/
15232#endif /* WLAN_FEATURE_VOWIFI_11R */
15233
15234/**
15235 @brief Process Shutdown Request function (called when Main FSM
15236 allows it)
15237
15238 @param pWDICtx: pointer to the WLAN DAL context
15239 pEventData: pointer to the event information structure
15240
15241 @see
15242 @return Result of the function call
15243*/
15244WDI_Status
15245WDI_ProcessShutdownReq
15246(
15247 WDI_ControlBlockType* pWDICtx,
15248 WDI_EventInfoType* pEventData
15249 )
15250{
15251 wpt_status wptStatus;
15252
15253
15254 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15255
15256 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015257 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015258 -------------------------------------------------------------------------*/
15259 if ( NULL == pEventData )
15260 {
15261 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015262 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015263 WDI_ASSERT(0);
15264 return WDI_STATUS_E_FAILURE;
15265 }
15266
15267 wpalMutexAcquire(&pWDICtx->wptMutex);
15268
15269
15270 gWDIInitialized = eWLAN_PAL_FALSE;
15271 /*! TO DO: stop the data services */
15272 if ( eDRIVER_TYPE_MFG != pWDICtx->driverMode )
15273 {
15274 /*Stop the STA Table !UT- check this logic again
15275 It is safer to do it here than on the response - because a stop is imminent*/
15276 WDI_STATableStop(pWDICtx);
15277
15278 /* Stop Transport Driver, DXE */
15279 WDTS_Stop(pWDICtx);
15280 }
15281
15282 /*Clear all pending request*/
15283 WDI_ClearPendingRequests(pWDICtx);
15284 /* Close Data transport*/
15285 /* FTM mode does not open Data Path */
15286 if ( eDRIVER_TYPE_MFG != pWDICtx->driverMode )
15287 {
15288 WDTS_Close(pWDICtx);
15289 }
15290 /*Close the STA Table !UT- check this logic again*/
15291 WDI_STATableClose(pWDICtx);
15292 /*close the PAL */
15293 wptStatus = wpalClose(pWDICtx->pPALContext);
15294 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
15295 {
15296 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15297 "Failed to wpal Close %d", wptStatus);
15298 WDI_ASSERT(0);
15299 }
15300
15301 /*Transition back to init state*/
15302 WDI_STATE_TRANSITION( pWDICtx, WDI_INIT_ST);
15303
15304 wpalMutexRelease(&pWDICtx->wptMutex);
15305
15306 /*Make sure the expected state is properly defaulted to Init*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015307 pWDICtx->ucExpectedStateTransition = WDI_INIT_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -070015308
15309
Jeff Johnsone7245742012-09-05 17:12:55 -070015310 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015311}/*WDI_ProcessShutdownReq*/
15312
15313/*========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070015314 Main DAL Control Path Response Processing API
Jeff Johnson295189b2012-06-20 16:38:30 -070015315========================================================================*/
15316
15317/**
15318 @brief Process Start Response function (called when a response
15319 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015320
15321 @param pWDICtx: pointer to the WLAN DAL context
15322 pEventData: pointer to the event information structure
15323
Jeff Johnson295189b2012-06-20 16:38:30 -070015324 @see
15325 @return Result of the function call
15326*/
15327WDI_Status
15328WDI_ProcessStartRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015329(
Jeff Johnson295189b2012-06-20 16:38:30 -070015330 WDI_ControlBlockType* pWDICtx,
15331 WDI_EventInfoType* pEventData
15332)
15333{
15334 WDI_StartRspParamsType wdiRspParams;
15335 WDI_StartRspCb wdiStartRspCb = NULL;
15336
15337 tHalMacStartRspParams* startRspParams;
15338
15339#ifndef HAL_SELF_STA_PER_BSS
15340 WDI_AddStaParams wdiAddSTAParam = {0};
15341#endif
15342 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15343
Jeff Johnsone7245742012-09-05 17:12:55 -070015344 wdiStartRspCb = (WDI_StartRspCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070015345 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015346 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015347 -------------------------------------------------------------------------*/
15348 if (( NULL == pEventData ) ||
15349 ( NULL == pEventData->pEventData) ||
15350 ( NULL == wdiStartRspCb ))
15351 {
15352 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015353 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015354 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015355 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015356 }
15357
15358 /*-------------------------------------------------------------------------
15359 Extract response and send it to UMAC
15360 -------------------------------------------------------------------------*/
15361 if ( sizeof(tHalMacStartRspParams) > pEventData->uEventDataSize )
15362 {
15363 // not enough data was received
15364 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnson5b414462013-11-22 16:44:20 -080015365 "Invalid response length in Start Resp Expect %zx Rcvd %x",
Jeff Johnson295189b2012-06-20 16:38:30 -070015366 sizeof(tHalMacStartRspParams), pEventData->uEventDataSize);
15367 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015368 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015369 }
15370
15371 /*-------------------------------------------------------------------------
15372 Unpack HAL Response Message - the header was already extracted by the
Jeff Johnsone7245742012-09-05 17:12:55 -070015373 main Response Handling procedure
Jeff Johnson295189b2012-06-20 16:38:30 -070015374 -------------------------------------------------------------------------*/
15375 startRspParams = (tHalMacStartRspParams *) pEventData->pEventData;
15376
15377 wdiRspParams.ucMaxBssids = startRspParams->ucMaxBssids;
15378 wdiRspParams.ucMaxStations = startRspParams->ucMaxStations;
15379 wdiRspParams.wlanCompiledVersion.major = WLAN_HAL_VER_MAJOR;
15380 wdiRspParams.wlanCompiledVersion.minor = WLAN_HAL_VER_MINOR;
15381 wdiRspParams.wlanCompiledVersion.version = WLAN_HAL_VER_VERSION;
15382 wdiRspParams.wlanCompiledVersion.revision = WLAN_HAL_VER_REVISION;
15383 wdiRspParams.wlanReportedVersion.major =
15384 startRspParams->wcnssWlanVersion.major;
15385 wdiRspParams.wlanReportedVersion.minor =
15386 startRspParams->wcnssWlanVersion.minor;
15387 wdiRspParams.wlanReportedVersion.version =
15388 startRspParams->wcnssWlanVersion.version;
15389 wdiRspParams.wlanReportedVersion.revision =
15390 startRspParams->wcnssWlanVersion.revision;
15391 wpalMemoryCopy(wdiRspParams.wcnssSoftwareVersion,
15392 startRspParams->wcnssCrmVersionString,
15393 sizeof(wdiRspParams.wcnssSoftwareVersion));
15394 wpalMemoryCopy(wdiRspParams.wcnssHardwareVersion,
15395 startRspParams->wcnssWlanVersionString,
15396 sizeof(wdiRspParams.wcnssHardwareVersion));
15397 wdiRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(startRspParams->status);
15398
Pratik Bhalgatd4404592012-11-22 17:49:14 +053015399 /*Save the HAL Version*/
15400 pWDICtx->wlanVersion = wdiRspParams.wlanReportedVersion;
15401
Jeff Johnson295189b2012-06-20 16:38:30 -070015402 wpalMutexAcquire(&pWDICtx->wptMutex);
15403 if ( WDI_STATUS_SUCCESS == wdiRspParams.wdiStatus )
15404 {
15405 pWDICtx->ucExpectedStateTransition = WDI_STARTED_ST;
15406
15407 /*Cache the start response for further use*/
15408 wpalMemoryCopy( &pWDICtx->wdiCachedStartRspParams ,
Jeff Johnsone7245742012-09-05 17:12:55 -070015409 &wdiRspParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070015410 sizeof(pWDICtx->wdiCachedStartRspParams));
15411
15412 }
15413 else
15414 {
15415 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15416 "Failed to start device with status %s(%d)",
15417 WDI_getHALStatusMsgString(startRspParams->status),
15418 startRspParams->status);
15419
15420 /*Set the expected state transition to stopped - because the start has
15421 failed*/
15422 pWDICtx->ucExpectedStateTransition = WDI_STOPPED_ST;
15423
15424 wpalMutexRelease(&pWDICtx->wptMutex);
15425
15426 /*Notify UMAC*/
15427 wdiStartRspCb( &wdiRspParams, pWDICtx->pRspCBUserData);
Jeff Johnsone7245742012-09-05 17:12:55 -070015428
Jeff Johnson295189b2012-06-20 16:38:30 -070015429 WDI_DetectedDeviceError(pWDICtx, wdiRspParams.wdiStatus);
15430
15431 /*Although the response is an error - it was processed by our function
15432 so as far as the caller is concerned this is a succesful reponse processing*/
15433 return WDI_STATUS_SUCCESS;
15434 }
Jeff Johnsone7245742012-09-05 17:12:55 -070015435
Jeff Johnson295189b2012-06-20 16:38:30 -070015436 wpalMutexRelease(&pWDICtx->wptMutex);
15437
15438 if(eDRIVER_TYPE_MFG == pWDICtx->driverMode)
15439 {
15440 /* FTM mode does not need to execute below */
15441 /* Notify UMAC */
15442 wdiStartRspCb( &wdiRspParams, pWDICtx->pRspCBUserData);
15443 return WDI_STATUS_SUCCESS;
15444 }
15445
15446 /* START the Data transport */
15447 WDTS_startTransport(pWDICtx);
15448
15449 /*Start the STA Table !- check this logic again*/
15450 WDI_STATableStart(pWDICtx);
15451
15452#ifndef HAL_SELF_STA_PER_BSS
15453 /* Store the Self STA Index */
15454 pWDICtx->ucSelfStaId = halStartRspMsg.startRspParams.selfStaIdx;
15455
15456 pWDICtx->usSelfStaDpuId = wdiRspParams.usSelfStaDpuId;
15457 wpalMemoryCopy(pWDICtx->macSelfSta, wdiRspParams.macSelfSta,
15458 WDI_MAC_ADDR_LEN);
15459
15460 /* At this point add the self-STA */
15461
15462 /*! TO DO: wdiAddSTAParam.bcastMgmtDpuSignature */
15463 /* !TO DO: wdiAddSTAParam.bcastDpuSignature */
15464 /*! TO DO: wdiAddSTAParam.dpuSig */
15465 /*! TO DO: wdiAddSTAParam.ucWmmEnabled */
15466 /*! TO DO: wdiAddSTAParam.ucHTCapable */
15467 /*! TO DO: wdiAddSTAParam.ucRmfEnabled */
15468
15469 //all DPU indices are the same for self STA
15470 wdiAddSTAParam.bcastDpuIndex = wdiRspParams.usSelfStaDpuId;
15471 wdiAddSTAParam.bcastMgmtDpuIndex = wdiRspParams.usSelfStaDpuId;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -070015472 wdiAddSTAParam.dpuIndex = wdiRspParams.usSelfStaDpuId;
Jeff Johnson295189b2012-06-20 16:38:30 -070015473 wpalMemoryCopy(wdiAddSTAParam.staMacAddr, wdiRspParams.macSelfSta,
15474 WDI_MAC_ADDR_LEN);
15475 wdiAddSTAParam.ucStaType = WDI_STA_ENTRY_SELF; /* 0 - self */
15476 wdiAddSTAParam.ucSTAIdx = halStartRspMsg.startRspParams.selfStaIdx;
15477
15478 /* Note: Since we don't get an explicit config STA request for self STA, we
15479 add the self STA upon receiving the Start response message. But the
15480 self STA entry in the table is deleted when WDI gets an explicit delete STA
15481 request */
15482 (void)WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
15483#endif
15484
15485 /*Notify UMAC*/
15486 wdiStartRspCb( &wdiRspParams, pWDICtx->pRspCBUserData);
15487
Jeff Johnsone7245742012-09-05 17:12:55 -070015488 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015489}/*WDI_ProcessStartRsp*/
15490
15491
15492/**
15493 @brief Process Stop Response function (called when a response
15494 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015495
15496 @param pWDICtx: pointer to the WLAN DAL context
15497 pEventData: pointer to the event information structure
15498
Jeff Johnson295189b2012-06-20 16:38:30 -070015499 @see
15500 @return Result of the function call
15501*/
15502WDI_Status
15503WDI_ProcessStopRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015504(
Jeff Johnson295189b2012-06-20 16:38:30 -070015505 WDI_ControlBlockType* pWDICtx,
15506 WDI_EventInfoType* pEventData
15507)
15508{
15509 WDI_Status wdiStatus;
15510 WDI_StopRspCb wdiStopRspCb = NULL;
15511
Jeff Johnsone7245742012-09-05 17:12:55 -070015512 tHalMacStopRspMsg halMacStopRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070015513 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15514
Jeff Johnsone7245742012-09-05 17:12:55 -070015515 wdiStopRspCb = (WDI_StopRspCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070015516 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015517 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015518 -------------------------------------------------------------------------*/
15519 if (( NULL == pEventData ) ||
15520 ( NULL == pEventData->pEventData) ||
15521 ( NULL == wdiStopRspCb ))
15522 {
15523 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015524 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015525 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015526 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015527 }
15528
15529 /*-------------------------------------------------------------------------
15530 Extract response and send it to UMAC
15531 -------------------------------------------------------------------------*/
15532 if ( sizeof(halMacStopRspMsg) < pEventData->uEventDataSize )
15533 {
15534 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080015535 "Invalid response length in Stop Resp %u",
Jeff Johnson295189b2012-06-20 16:38:30 -070015536 pEventData->uEventDataSize);
15537 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015538 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015539 }
15540
15541 /*-------------------------------------------------------------------------
15542 Unpack HAL Response Message - the header was already extracted by the
Jeff Johnsone7245742012-09-05 17:12:55 -070015543 main Response Handling procedure
Jeff Johnson295189b2012-06-20 16:38:30 -070015544 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015545 wpalMemoryCopy( &halMacStopRspMsg.stopRspParams,
15546 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070015547 sizeof(halMacStopRspMsg.stopRspParams));
15548
Jeff Johnsone7245742012-09-05 17:12:55 -070015549 wdiStatus = WDI_HAL_2_WDI_STATUS(halMacStopRspMsg.stopRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070015550
15551 wpalMutexAcquire(&pWDICtx->wptMutex);
15552
15553 /*--------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015554 Check to see if the stop went OK
Jeff Johnson295189b2012-06-20 16:38:30 -070015555 --------------------------------------------------------------------------*/
15556 if ( WDI_STATUS_SUCCESS != wdiStatus )
15557 {
15558 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15559 "Failed to stop the device with status %s (%d)",
15560 WDI_getHALStatusMsgString(halMacStopRspMsg.stopRspParams.status),
15561 halMacStopRspMsg.stopRspParams.status);
15562
Jeff Johnsone7245742012-09-05 17:12:55 -070015563 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
15564
Jeff Johnson295189b2012-06-20 16:38:30 -070015565 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070015566 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015567 }
Jeff Johnsone7245742012-09-05 17:12:55 -070015568
Jeff Johnson295189b2012-06-20 16:38:30 -070015569 pWDICtx->ucExpectedStateTransition = WDI_STOPPED_ST;
15570
15571 /*Transition now as WDI may get preempted imediately after it sends
15572 up the Stop Response and it will not get to process the state transition
15573 from Main Rsp function*/
15574 WDI_STATE_TRANSITION( pWDICtx, pWDICtx->ucExpectedStateTransition);
15575 wpalMutexRelease(&pWDICtx->wptMutex);
15576
15577 /*! TO DO: - STOP the Data transport */
15578
15579 /*Notify UMAC*/
15580 wdiStopRspCb( wdiStatus, pWDICtx->pRspCBUserData);
15581
Jeff Johnsone7245742012-09-05 17:12:55 -070015582 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015583}/*WDI_ProcessStopRsp*/
15584
15585/**
15586 @brief Process Close Rsp function (called when a response
15587 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015588
15589 @param pWDICtx: pointer to the WLAN DAL context
15590 pEventData: pointer to the event information structure
15591
Jeff Johnson295189b2012-06-20 16:38:30 -070015592 @see
15593 @return Result of the function call
15594*/
15595WDI_Status
15596WDI_ProcessCloseRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015597(
Jeff Johnson295189b2012-06-20 16:38:30 -070015598 WDI_ControlBlockType* pWDICtx,
15599 WDI_EventInfoType* pEventData
15600)
15601{
15602 /*There is no close response comming from HAL - function just kept for
15603 simmetry */
15604 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015605 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015606}/*WDI_ProcessCloseRsp*/
15607
15608
15609/*============================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070015610 SCAN RESPONSE PROCESSING API
Jeff Johnson295189b2012-06-20 16:38:30 -070015611============================================================================*/
15612
15613/**
15614 @brief Process Init Scan Rsp function (called when a response
15615 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015616
15617 @param pWDICtx: pointer to the WLAN DAL context
15618 pEventData: pointer to the event information structure
15619
Jeff Johnson295189b2012-06-20 16:38:30 -070015620 @see
15621 @return Result of the function call
15622*/
15623WDI_Status
15624WDI_ProcessInitScanRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015625(
Jeff Johnson295189b2012-06-20 16:38:30 -070015626 WDI_ControlBlockType* pWDICtx,
15627 WDI_EventInfoType* pEventData
15628)
15629{
15630 WDI_Status wdiStatus;
15631 WDI_InitScanRspCb wdiInitScanRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070015632 tHalInitScanRspMsg halInitScanRspMsg;
Ravali85acf6b2012-12-12 14:01:38 -080015633 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070015634 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15635
15636 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015637 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015638 -------------------------------------------------------------------------*/
15639 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15640 ( NULL == pEventData->pEventData))
15641 {
15642 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015643 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015644 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015645 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015646 }
15647
15648 wdiInitScanRspCb = (WDI_InitScanRspCb)pWDICtx->pfncRspCB;
15649 if( NULL == wdiInitScanRspCb)
15650 {
15651 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015652 "%s: call back function is NULL", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015653 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015654 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015655 }
15656
15657 /*-------------------------------------------------------------------------
15658 Unpack HAL Response Message - the header was already extracted by the
Jeff Johnsone7245742012-09-05 17:12:55 -070015659 main Response Handling procedure
Jeff Johnson295189b2012-06-20 16:38:30 -070015660 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015661 wpalMemoryCopy( &halInitScanRspMsg.initScanRspParams,
15662 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070015663 sizeof(halInitScanRspMsg.initScanRspParams));
15664
Jeff Johnsone7245742012-09-05 17:12:55 -070015665 wdiStatus = WDI_HAL_2_WDI_STATUS(halInitScanRspMsg.initScanRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070015666
15667 if ( pWDICtx->bInBmps )
15668 {
15669 // notify DTS that we are entering Full power
Ravali85acf6b2012-12-12 14:01:38 -080015670 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
15671 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus ) {
15672 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain9a5d5382013-11-17 22:05:35 -080015673 "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 -080015674 WDI_ASSERT(0);
15675 }
Jeff Johnson295189b2012-06-20 16:38:30 -070015676 }
15677
15678 /*Notify UMAC*/
15679 wdiInitScanRspCb( wdiStatus, pWDICtx->pRspCBUserData);
15680
Jeff Johnsone7245742012-09-05 17:12:55 -070015681 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015682}/*WDI_ProcessInitScanRsp*/
15683
15684
15685/**
15686 @brief Process Start Scan Rsp function (called when a response
15687 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015688
15689 @param pWDICtx: pointer to the WLAN DAL context
15690 pEventData: pointer to the event information structure
15691
Jeff Johnson295189b2012-06-20 16:38:30 -070015692 @see
15693 @return Result of the function call
15694*/
15695WDI_Status
15696WDI_ProcessStartScanRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015697(
Jeff Johnson295189b2012-06-20 16:38:30 -070015698 WDI_ControlBlockType* pWDICtx,
15699 WDI_EventInfoType* pEventData
15700)
15701{
15702 WDI_StartScanRspParamsType wdiStartScanParams;
15703 WDI_StartScanRspCb wdiStartScanRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070015704
15705 tHalStartScanRspMsg halStartScanRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070015706 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15707
15708 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015709 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015710 -------------------------------------------------------------------------*/
15711 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15712 ( NULL == pEventData->pEventData))
15713 {
15714 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015715 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015716 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015717 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015718 }
15719
15720 wdiStartScanRspCb = (WDI_StartScanRspCb)pWDICtx->pfncRspCB;
15721 if( NULL == wdiStartScanRspCb)
15722 {
15723 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015724 "%s: call back function is NULL", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015725 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015726 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015727 }
15728
15729 /*-------------------------------------------------------------------------
15730 Extract response and send it to UMAC
15731 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015732 wpalMemoryCopy( &halStartScanRspMsg.startScanRspParams,
15733 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070015734 sizeof(halStartScanRspMsg.startScanRspParams));
15735
15736 wdiStartScanParams.wdiStatus = WDI_HAL_2_WDI_STATUS(
15737 halStartScanRspMsg.startScanRspParams.status);
15738#ifdef WLAN_FEATURE_VOWIFI
Jeff Johnsone7245742012-09-05 17:12:55 -070015739 wdiStartScanParams.ucTxMgmtPower =
Jeff Johnson295189b2012-06-20 16:38:30 -070015740 halStartScanRspMsg.startScanRspParams.txMgmtPower;
Jeff Johnsone7245742012-09-05 17:12:55 -070015741 wpalMemoryCopy( wdiStartScanParams.aStartTSF,
Jeff Johnson295189b2012-06-20 16:38:30 -070015742 halStartScanRspMsg.startScanRspParams.startTSF,
15743 2);
Jeff Johnsone7245742012-09-05 17:12:55 -070015744#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070015745
15746 if ( eHAL_STATUS_SUCCESS != halStartScanRspMsg.startScanRspParams.status )
15747 {
15748 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15749 "Start scan failed with status %s (%d)",
15750 WDI_getHALStatusMsgString(halStartScanRspMsg.startScanRspParams.status),
15751 halStartScanRspMsg.startScanRspParams.status);
15752 /* send the status to UMAC, don't return from here*/
15753 }
15754
15755 /*Notify UMAC*/
15756 wdiStartScanRspCb( &wdiStartScanParams, pWDICtx->pRspCBUserData);
15757
Jeff Johnsone7245742012-09-05 17:12:55 -070015758 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015759
15760}/*WDI_ProcessStartScanRsp*/
15761
15762
15763/**
Jeff Johnsone7245742012-09-05 17:12:55 -070015764 @brief Process End Scan Response function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070015765 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015766
15767 @param pWDICtx: pointer to the WLAN DAL context
15768 pEventData: pointer to the event information structure
15769
Jeff Johnson295189b2012-06-20 16:38:30 -070015770 @see
15771 @return Result of the function call
15772*/
15773WDI_Status
15774WDI_ProcessEndScanRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015775(
Jeff Johnson295189b2012-06-20 16:38:30 -070015776 WDI_ControlBlockType* pWDICtx,
15777 WDI_EventInfoType* pEventData
15778)
15779{
15780 WDI_Status wdiStatus;
15781 tHalEndScanRspMsg halEndScanRspMsg;
15782 WDI_EndScanRspCb wdiEndScanRspCb;
15783 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15784
15785 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015786 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015787 -------------------------------------------------------------------------*/
15788 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15789 ( NULL == pEventData->pEventData))
15790 {
15791 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015792 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015793 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015794 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015795 }
15796
15797 wdiEndScanRspCb = (WDI_EndScanRspCb)pWDICtx->pfncRspCB;
15798
15799 /*-------------------------------------------------------------------------
15800 Extract response and send it to UMAC
15801 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015802 wpalMemoryCopy( &halEndScanRspMsg.endScanRspParams,
15803 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070015804 sizeof(halEndScanRspMsg.endScanRspParams));
15805
Jeff Johnsone7245742012-09-05 17:12:55 -070015806 wdiStatus = WDI_HAL_2_WDI_STATUS(halEndScanRspMsg.endScanRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070015807
15808 if ( eHAL_STATUS_SUCCESS != halEndScanRspMsg.endScanRspParams.status )
15809 {
15810 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15811 "End Scan failed with status %s (%d )",
15812 WDI_getHALStatusMsgString(halEndScanRspMsg.endScanRspParams.status),
15813 halEndScanRspMsg.endScanRspParams.status);
15814 /* send the status to UMAC, don't return from here*/
15815 }
15816
15817 /*Notify UMAC*/
15818 wdiEndScanRspCb( wdiStatus, pWDICtx->pRspCBUserData);
15819
Jeff Johnsone7245742012-09-05 17:12:55 -070015820 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015821}/*WDI_ProcessEndScanRsp*/
15822
15823
15824/**
Jeff Johnsone7245742012-09-05 17:12:55 -070015825 @brief Process Finish Scan Response function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070015826 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015827
15828 @param pWDICtx: pointer to the WLAN DAL context
15829 pEventData: pointer to the event information structure
15830
Jeff Johnson295189b2012-06-20 16:38:30 -070015831 @see
15832 @return Result of the function call
15833*/
15834WDI_Status
15835WDI_ProcessFinishScanRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015836(
Jeff Johnson295189b2012-06-20 16:38:30 -070015837 WDI_ControlBlockType* pWDICtx,
15838 WDI_EventInfoType* pEventData
Jeff Johnsone7245742012-09-05 17:12:55 -070015839)
Jeff Johnson295189b2012-06-20 16:38:30 -070015840{
15841 WDI_Status wdiStatus;
15842 WDI_FinishScanRspCb wdiFinishScanRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070015843
15844 tHalFinishScanRspMsg halFinishScanRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070015845 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15846
15847 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015848 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015849 -------------------------------------------------------------------------*/
15850 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15851 ( NULL == pEventData->pEventData))
15852 {
15853 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015854 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015855 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015856 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015857 }
15858
15859 wdiFinishScanRspCb = (WDI_FinishScanRspCb)pWDICtx->pfncRspCB;
15860
15861 /*-------------------------------------------------------------------------
15862 Extract response and send it to UMAC
15863 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015864 wpalMemoryCopy( (void *)&halFinishScanRspMsg.finishScanRspParams.status,
15865 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070015866 sizeof(halFinishScanRspMsg.finishScanRspParams.status));
15867
Jeff Johnsone7245742012-09-05 17:12:55 -070015868 wdiStatus = WDI_HAL_2_WDI_STATUS(halFinishScanRspMsg.finishScanRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070015869
15870 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO_LOW,
Jeff Johnsone7245742012-09-05 17:12:55 -070015871 "Finish scan response reported status: %d",
Jeff Johnson295189b2012-06-20 16:38:30 -070015872 halFinishScanRspMsg.finishScanRspParams.status);
15873
15874 if (( eHAL_STATUS_SUCCESS != halFinishScanRspMsg.finishScanRspParams.status )&&
15875 ( eHAL_STATUS_NOTIFY_BSS_FAIL != halFinishScanRspMsg.finishScanRspParams.status ))
15876 {
15877 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15878 "Finish Scan failed with status %s (%d)",
15879 WDI_getHALStatusMsgString(halFinishScanRspMsg.finishScanRspParams.status),
15880 halFinishScanRspMsg.finishScanRspParams.status);
15881 /* send the status to UMAC, don't return from here*/
15882 }
15883
15884 /*Notify UMAC*/
15885 wdiFinishScanRspCb( wdiStatus, pWDICtx->pRspCBUserData);
15886
Jeff Johnsone7245742012-09-05 17:12:55 -070015887 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015888}/*WDI_ProcessFinishScanRsp*/
15889
15890/**
15891 @brief Process Join Response function (called when a response
15892 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015893
15894 @param pWDICtx: pointer to the WLAN DAL context
15895 pEventData: pointer to the event information structure
15896
Jeff Johnson295189b2012-06-20 16:38:30 -070015897 @see
15898 @return Result of the function call
15899*/
15900WDI_Status
15901WDI_ProcessJoinRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015902(
Jeff Johnson295189b2012-06-20 16:38:30 -070015903 WDI_ControlBlockType* pWDICtx,
15904 WDI_EventInfoType* pEventData
15905)
15906{
15907 WDI_Status wdiStatus;
15908 WDI_JoinRspCb wdiJoinRspCb;
15909 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070015910
15911 tHalJoinRspMsg halJoinRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070015912 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15913
15914 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015915 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015916 -------------------------------------------------------------------------*/
15917 if (( NULL == pWDICtx ) ||
15918 ( NULL == pWDICtx->pfncRspCB ) ||
15919 ( NULL == pEventData ) ||
15920 ( NULL == pEventData->pEventData))
15921 {
15922 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015923 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015924 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015925 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015926 }
15927
15928 wdiJoinRspCb = (WDI_JoinRspCb)pWDICtx->pfncRspCB;
15929
15930 /*-------------------------------------------------------------------------
15931 Extract response and send it to UMAC
15932 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015933 wpalMemoryCopy( &halJoinRspMsg.joinRspParams,
15934 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070015935 sizeof(halJoinRspMsg.joinRspParams));
15936
Jeff Johnsone7245742012-09-05 17:12:55 -070015937 wdiStatus = WDI_HAL_2_WDI_STATUS(halJoinRspMsg.joinRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070015938
15939 wpalMutexAcquire(&pWDICtx->wptMutex);
15940
15941 /*-----------------------------------------------------------------------
15942 Join response can only be received for an existing assoc that
Jeff Johnsone7245742012-09-05 17:12:55 -070015943 is current and in progress
Jeff Johnson295189b2012-06-20 16:38:30 -070015944 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015945 if (( !WDI_VALID_SESSION_IDX(pWDICtx->ucCurrentBSSSesIdx )) ||
Jeff Johnson295189b2012-06-20 16:38:30 -070015946 ( eWLAN_PAL_FALSE == pWDICtx->bAssociationInProgress ))
15947 {
15948 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070015949 "%s: Association sequence for this BSS does not yet exist (bssIdx %d) or "
15950 "association no longer in progress %d - mysterious HAL response",
15951 __func__, pWDICtx->ucCurrentBSSSesIdx, pWDICtx->bAssociationInProgress);
Jeff Johnson295189b2012-06-20 16:38:30 -070015952
Jeff Johnsone7245742012-09-05 17:12:55 -070015953 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
Jeff Johnson295189b2012-06-20 16:38:30 -070015954 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070015955 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070015956 }
15957
15958 pBSSSes = &pWDICtx->aBSSSessions[pWDICtx->ucCurrentBSSSesIdx];
15959
15960 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015961 Join Response is only allowed in init state
Jeff Johnson295189b2012-06-20 16:38:30 -070015962 -----------------------------------------------------------------------*/
15963 if ( WDI_ASSOC_JOINING_ST != pBSSSes->wdiAssocState)
15964 {
15965 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15966 "Join only allowed in Joining state - failure state is %d "
15967 "strange HAL response", pBSSSes->wdiAssocState);
15968
Jeff Johnsone7245742012-09-05 17:12:55 -070015969 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
15970
Jeff Johnson295189b2012-06-20 16:38:30 -070015971 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070015972 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070015973 }
15974
15975
15976 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015977 If assoc has failed the current session will be deleted
Jeff Johnson295189b2012-06-20 16:38:30 -070015978 -----------------------------------------------------------------------*/
15979 if ( WDI_STATUS_SUCCESS != wdiStatus )
15980 {
15981 /*Association was failed by HAL - remove session*/
15982 WDI_DeleteSession(pWDICtx, pBSSSes);
15983
15984 /*Association no longer in progress */
15985 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
15986
15987 /*Association no longer in progress - prepare pending assoc for processing*/
15988 WDI_DequeueAssocRequest(pWDICtx);
Jeff Johnsone7245742012-09-05 17:12:55 -070015989
Jeff Johnson295189b2012-06-20 16:38:30 -070015990 }
15991 else
15992 {
15993 /*Transition to state Joining - this may be redundant as we are supposed
15994 to be in this state already - but just to be safe*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015995 pBSSSes->wdiAssocState = WDI_ASSOC_JOINING_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -070015996 }
15997
15998 wpalMutexRelease(&pWDICtx->wptMutex);
15999
16000 /*Notify UMAC*/
16001 wdiJoinRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16002
Jeff Johnsone7245742012-09-05 17:12:55 -070016003 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016004}/*WDI_ProcessJoinRsp*/
16005
16006
16007/**
Jeff Johnsone7245742012-09-05 17:12:55 -070016008 @brief Process Config BSS Response function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070016009 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016010
16011 @param pWDICtx: pointer to the WLAN DAL context
16012 pEventData: pointer to the event information structure
16013
Jeff Johnson295189b2012-06-20 16:38:30 -070016014 @see
16015 @return Result of the function call
16016*/
16017WDI_Status
16018WDI_ProcessConfigBSSRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016019(
Jeff Johnson295189b2012-06-20 16:38:30 -070016020 WDI_ControlBlockType* pWDICtx,
16021 WDI_EventInfoType* pEventData
16022)
16023{
16024 WDI_ConfigBSSRspParamsType wdiConfigBSSParams;
16025 WDI_ConfigBSSRspCb wdiConfigBSSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070016026 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070016027 WDI_BSSSessionType* pBSSSes = NULL;
16028
Jeff Johnsone7245742012-09-05 17:12:55 -070016029 tConfigBssRspMsg halConfigBssRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070016030 WDI_AddStaParams wdiBcastAddSTAParam = {0};
16031 WDI_AddStaParams wdiAddSTAParam = {0};
Jeff Johnsone7245742012-09-05 17:12:55 -070016032
Jeff Johnson295189b2012-06-20 16:38:30 -070016033 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16034
16035 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016036 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016037 -------------------------------------------------------------------------*/
16038 if (( NULL == pEventData ) ||
16039 ( NULL == pEventData->pEventData))
16040 {
16041 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016042 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016043 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016044 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016045 }
16046
16047 wdiConfigBSSRspCb = (WDI_ConfigBSSRspCb)pWDICtx->pfncRspCB;
16048
16049 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016050 Extract response and send it to UMAC
Jeff Johnson295189b2012-06-20 16:38:30 -070016051 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016052 wpalMemoryCopy( &halConfigBssRspMsg.configBssRspParams,
16053 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016054 sizeof(halConfigBssRspMsg.configBssRspParams));
16055
16056 wdiConfigBSSParams.wdiStatus = WDI_HAL_2_WDI_STATUS(
16057 halConfigBssRspMsg.configBssRspParams.status);
16058 if(WDI_STATUS_SUCCESS == wdiConfigBSSParams.wdiStatus)
16059 {
Jeff Johnsone7245742012-09-05 17:12:55 -070016060 wpalMemoryCopy( wdiConfigBSSParams.macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -070016061 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.macBSSID,
16062 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070016063
Jeff Johnson295189b2012-06-20 16:38:30 -070016064 wdiConfigBSSParams.ucBSSIdx = halConfigBssRspMsg.configBssRspParams.bssIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016065
16066 wdiConfigBSSParams.ucBcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070016067 halConfigBssRspMsg.configBssRspParams.bcastDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070016068
16069 wdiConfigBSSParams.ucUcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070016070 halConfigBssRspMsg.configBssRspParams.ucastDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070016071
Jeff Johnson295189b2012-06-20 16:38:30 -070016072 wdiConfigBSSParams.ucSTAIdx = halConfigBssRspMsg.configBssRspParams.bssStaIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016073
Jeff Johnson295189b2012-06-20 16:38:30 -070016074 #ifdef WLAN_FEATURE_VOWIFI
Jeff Johnsone7245742012-09-05 17:12:55 -070016075 wdiConfigBSSParams.ucTxMgmtPower =
Jeff Johnson295189b2012-06-20 16:38:30 -070016076 halConfigBssRspMsg.configBssRspParams.txMgmtPower;
16077 #endif
16078 wpalMemoryCopy( wdiConfigBSSParams.macSTA,
16079 halConfigBssRspMsg.configBssRspParams.staMac,
16080 WDI_MAC_ADDR_LEN );
Jeff Johnsone7245742012-09-05 17:12:55 -070016081
Jeff Johnson295189b2012-06-20 16:38:30 -070016082 wpalMutexAcquire(&pWDICtx->wptMutex);
16083 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016084 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070016085 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016086 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
16087 wdiConfigBSSParams.macBSSID,
16088 &pBSSSes);
16089
Jeff Johnson295189b2012-06-20 16:38:30 -070016090 /*-----------------------------------------------------------------------
16091 Config BSS response can only be received for an existing assoc that
Jeff Johnsone7245742012-09-05 17:12:55 -070016092 is current and in progress
Jeff Johnson295189b2012-06-20 16:38:30 -070016093 -----------------------------------------------------------------------*/
16094 if ( NULL == pBSSSes )
16095 {
16096 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16097 "Association sequence for this BSS does not yet exist "
16098 "- mysterious HAL response");
Jeff Johnsone7245742012-09-05 17:12:55 -070016099
16100 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
16101
Jeff Johnson295189b2012-06-20 16:38:30 -070016102 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070016103 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070016104 }
Jeff Johnsone7245742012-09-05 17:12:55 -070016105
Jeff Johnson295189b2012-06-20 16:38:30 -070016106 /*Save data for this BSS*/
16107 pBSSSes->wdiBssType = pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiBSSType;
16108 pBSSSes->ucBSSIdx = halConfigBssRspMsg.configBssRspParams.bssIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016109 pBSSSes->bcastDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070016110 halConfigBssRspMsg.configBssRspParams.bcastDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016111 pBSSSes->bcastDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070016112 halConfigBssRspMsg.configBssRspParams.bcastDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070016113 pBSSSes->bcastMgmtDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070016114 halConfigBssRspMsg.configBssRspParams.mgmtDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016115 pBSSSes->bcastMgmtDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070016116 halConfigBssRspMsg.configBssRspParams.mgmtDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070016117 pBSSSes->ucRmfEnabled =
Jeff Johnson295189b2012-06-20 16:38:30 -070016118 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.ucRMFEnabled;
16119 pBSSSes->bcastStaIdx =
16120 halConfigBssRspMsg.configBssRspParams.bssBcastStaIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016121
Jeff Johnson295189b2012-06-20 16:38:30 -070016122 /* !TO DO: Shuould we be updating the RMF Capability of self STA here? */
Jeff Johnsone7245742012-09-05 17:12:55 -070016123
Jeff Johnson295189b2012-06-20 16:38:30 -070016124 /*-------------------------------------------------------------------------
16125 Add Peer STA
16126 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016127 wdiAddSTAParam.ucSTAIdx = halConfigBssRspMsg.configBssRspParams.bssStaIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070016128 wdiAddSTAParam.dpuIndex = halConfigBssRspMsg.configBssRspParams.dpuDescIndx;
16129 wdiAddSTAParam.dpuSig = halConfigBssRspMsg.configBssRspParams.ucastDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070016130
Jeff Johnson295189b2012-06-20 16:38:30 -070016131 /*This info can be retrieved from the cached initial request*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016132 wdiAddSTAParam.ucWmmEnabled =
Jeff Johnson295189b2012-06-20 16:38:30 -070016133 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiSTAContext.ucWMMEnabled;
Jeff Johnsone7245742012-09-05 17:12:55 -070016134 wdiAddSTAParam.ucHTCapable =
16135 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiSTAContext.ucHTCapable;
16136 wdiAddSTAParam.ucStaType =
16137 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiSTAContext.wdiSTAType;
16138
Jeff Johnson295189b2012-06-20 16:38:30 -070016139 /* MAC Address of STA */
Jeff Johnsone7245742012-09-05 17:12:55 -070016140 wpalMemoryCopy(wdiAddSTAParam.staMacAddr,
16141 halConfigBssRspMsg.configBssRspParams.staMac,
Jeff Johnson295189b2012-06-20 16:38:30 -070016142 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070016143
16144 wpalMemoryCopy(wdiAddSTAParam.macBSSID,
16145 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiSTAContext.macBSSID ,
16146 WDI_MAC_ADDR_LEN);
16147
Jeff Johnson295189b2012-06-20 16:38:30 -070016148 /*Add BSS specific parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016149 wdiAddSTAParam.bcastMgmtDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070016150 halConfigBssRspMsg.configBssRspParams.mgmtDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016151 wdiAddSTAParam.bcastMgmtDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070016152 halConfigBssRspMsg.configBssRspParams.mgmtDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070016153 wdiAddSTAParam.bcastDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070016154 halConfigBssRspMsg.configBssRspParams.bcastDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016155 wdiAddSTAParam.bcastDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070016156 halConfigBssRspMsg.configBssRspParams.bcastDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070016157 wdiAddSTAParam.ucRmfEnabled =
Jeff Johnson295189b2012-06-20 16:38:30 -070016158 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.ucRMFEnabled;
Jeff Johnsone7245742012-09-05 17:12:55 -070016159 wdiAddSTAParam.ucBSSIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070016160 halConfigBssRspMsg.configBssRspParams.bssIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016161
Jeff Johnson295189b2012-06-20 16:38:30 -070016162 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
16163 "Add STA to the table index: %d", wdiAddSTAParam.ucSTAIdx );
Jeff Johnsone7245742012-09-05 17:12:55 -070016164
Jeff Johnson295189b2012-06-20 16:38:30 -070016165 WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
16166 /*-------------------------------------------------------------------------
16167 Add Broadcast STA only in AP mode
16168 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016169 if( pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.ucOperMode ==
Ravi Joshid0699502013-07-08 15:48:47 -070016170 WDI_BSS_OPERATIONAL_MODE_AP || pBSSSes->wdiBssType == WDI_IBSS_MODE)
Jeff Johnson295189b2012-06-20 16:38:30 -070016171 {
16172 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
16173 "Add BCAST STA to table for index: %d",
16174 halConfigBssRspMsg.configBssRspParams.bssBcastStaIdx );
Jeff Johnsone7245742012-09-05 17:12:55 -070016175
16176 wpalMemoryCopy( &wdiBcastAddSTAParam, &wdiAddSTAParam,
Jeff Johnson295189b2012-06-20 16:38:30 -070016177 sizeof(WDI_AddStaParams) );
Jeff Johnsone7245742012-09-05 17:12:55 -070016178
Jeff Johnson295189b2012-06-20 16:38:30 -070016179 WDI_AddBcastSTAtoSTATable( pWDICtx, &wdiBcastAddSTAParam,
16180 halConfigBssRspMsg.configBssRspParams.bssBcastStaIdx );
16181 }
16182 wpalMutexRelease(&pWDICtx->wptMutex);
16183 }
16184 else
16185 {
16186 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16187 "Config BSS RSP failed with status : %s(%d)",
16188 WDI_getHALStatusMsgString(
Jeff Johnsone7245742012-09-05 17:12:55 -070016189 halConfigBssRspMsg.configBssRspParams.status),
Jeff Johnson295189b2012-06-20 16:38:30 -070016190 halConfigBssRspMsg.configBssRspParams.status);
16191
Jeff Johnsone7245742012-09-05 17:12:55 -070016192
Jeff Johnson295189b2012-06-20 16:38:30 -070016193 /*Association was failed by HAL - remove session*/
16194 WDI_DeleteSession(pWDICtx, pBSSSes);
16195
16196 /*Association no longer in progress */
16197 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
16198
16199 /*Association no longer in progress - prepare pending assoc for processing*/
16200 WDI_DequeueAssocRequest(pWDICtx);
16201
16202 }
16203
16204 /*Notify UMAC*/
16205 wdiConfigBSSRspCb( &wdiConfigBSSParams, pWDICtx->pRspCBUserData);
16206
Jeff Johnsone7245742012-09-05 17:12:55 -070016207 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016208}/*WDI_ProcessConfigBSSRsp*/
16209
16210
16211/**
16212 @brief Process Del BSS Response function (called when a response
16213 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016214
16215 @param pWDICtx: pointer to the WLAN DAL context
16216 pEventData: pointer to the event information structure
16217
Jeff Johnson295189b2012-06-20 16:38:30 -070016218 @see
16219 @return Result of the function call
16220*/
16221WDI_Status
16222WDI_ProcessDelBSSRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016223(
Jeff Johnson295189b2012-06-20 16:38:30 -070016224 WDI_ControlBlockType* pWDICtx,
16225 WDI_EventInfoType* pEventData
16226)
16227{
16228 WDI_DelBSSRspParamsType wdiDelBSSParams;
16229 WDI_DelBSSRspCb wdiDelBSSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070016230 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070016231 WDI_BSSSessionType* pBSSSes = NULL;
16232
Jeff Johnsone7245742012-09-05 17:12:55 -070016233 tDeleteBssRspMsg halDelBssRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070016234 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16235
16236 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016237 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016238 -------------------------------------------------------------------------*/
16239 if (( NULL == pEventData ) ||
16240 ( NULL == pEventData->pEventData))
16241 {
16242 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016243 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016244 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016245 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016246 }
16247
16248 wdiDelBSSRspCb = (WDI_DelBSSRspCb)pWDICtx->pfncRspCB;
16249
16250 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016251 Extract response and send it to UMAC
Jeff Johnson295189b2012-06-20 16:38:30 -070016252 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016253 wpalMemoryCopy( &halDelBssRspMsg.deleteBssRspParams,
16254 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016255 sizeof(halDelBssRspMsg.deleteBssRspParams));
16256
16257
16258 wdiDelBSSParams.wdiStatus = WDI_HAL_2_WDI_STATUS(
Jeff Johnsone7245742012-09-05 17:12:55 -070016259 halDelBssRspMsg.deleteBssRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070016260
16261 wpalMutexAcquire(&pWDICtx->wptMutex);
16262
16263 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016264 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070016265 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016266 ucCurrentBSSSesIdx = WDI_FindAssocSessionByBSSIdx( pWDICtx,
16267 halDelBssRspMsg.deleteBssRspParams.bssIdx,
16268 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070016269
16270 /*-----------------------------------------------------------------------
16271 Del BSS response can only be received for an existing assoc that
Jeff Johnsone7245742012-09-05 17:12:55 -070016272 is current and in progress
Jeff Johnson295189b2012-06-20 16:38:30 -070016273 -----------------------------------------------------------------------*/
16274 if ( NULL == pBSSSes )
16275 {
16276 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16277 "Association sequence for this BSS does not yet exist or "
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -080016278 "association no longer in progress - mysterious HAL response");
16279
16280 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
16281
16282 wpalMutexRelease(&pWDICtx->wptMutex);
16283 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070016284 }
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -080016285
16286 /*Extract BSSID for the response to UMAC*/
16287 wpalMemoryCopy(wdiDelBSSParams.macBSSID,
16288 pBSSSes->macBSSID, WDI_MAC_ADDR_LEN);
16289
16290 wdiDelBSSParams.ucBssIdx = halDelBssRspMsg.deleteBssRspParams.bssIdx;
16291
16292 /*-----------------------------------------------------------------------
16293 The current session will be deleted
16294 -----------------------------------------------------------------------*/
16295 WDI_DeleteSession(pWDICtx, pBSSSes);
16296
16297
16298 /* Delete the BCAST STA entry from the STA table if SAP/GO session is deleted */
krunal soni3fc26642013-10-08 22:41:42 -070016299 if(WDI_INFRA_AP_MODE == pBSSSes->wdiBssType ||
16300 pBSSSes->wdiBssType == WDI_IBSS_MODE)
Jeff Johnson295189b2012-06-20 16:38:30 -070016301 {
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -080016302 (void)WDI_STATableDelSta( pWDICtx, pBSSSes->bcastStaIdx );
Madan Mohan Koyyalamudif371f172012-10-31 16:35:43 -070016303 }
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -080016304
16305 /* Delete the STA's in this BSS */
16306 WDI_STATableBSSDelSta(pWDICtx, halDelBssRspMsg.deleteBssRspParams.bssIdx);
16307
Jeff Johnson295189b2012-06-20 16:38:30 -070016308 wpalMutexRelease(&pWDICtx->wptMutex);
16309
16310 /*Notify UMAC*/
16311 wdiDelBSSRspCb( &wdiDelBSSParams, pWDICtx->pRspCBUserData);
16312
Jeff Johnsone7245742012-09-05 17:12:55 -070016313 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016314}/*WDI_ProcessDelBSSRsp*/
16315
16316/**
16317 @brief Process Post Assoc Rsp function (called when a response
16318 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016319
16320 @param pWDICtx: pointer to the WLAN DAL context
16321 pEventData: pointer to the event information structure
16322
Jeff Johnson295189b2012-06-20 16:38:30 -070016323 @see
16324 @return Result of the function call
16325*/
16326WDI_Status
16327WDI_ProcessPostAssocRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016328(
Jeff Johnson295189b2012-06-20 16:38:30 -070016329 WDI_ControlBlockType* pWDICtx,
16330 WDI_EventInfoType* pEventData
16331)
16332{
16333 WDI_PostAssocRspParamsType wdiPostAssocParams;
16334 WDI_PostAssocRspCb wdiPostAssocRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070016335 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070016336 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070016337 tPostAssocRspMsg halPostAssocRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070016338 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16339
16340 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016341 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016342 -------------------------------------------------------------------------*/
16343 if (( NULL == pEventData ) ||
16344 ( NULL == pEventData->pEventData))
16345 {
16346 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016347 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016348 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016349 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016350 }
16351
16352 wdiPostAssocRspCb = (WDI_PostAssocRspCb)pWDICtx->pfncRspCB;
16353
16354 /*-------------------------------------------------------------------------
16355 Extract response and send it to UMAC
16356 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016357 wpalMemoryCopy( &halPostAssocRspMsg.postAssocRspParams,
16358 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016359 sizeof(halPostAssocRspMsg.postAssocRspParams));
16360
16361 /*Extract the Post Assoc STA Params */
16362
Jeff Johnsone7245742012-09-05 17:12:55 -070016363 wdiPostAssocParams.staParams.ucSTAIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070016364 halPostAssocRspMsg.postAssocRspParams.configStaRspParams.staIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016365 wdiPostAssocParams.staParams.ucUcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070016366 halPostAssocRspMsg.postAssocRspParams.configStaRspParams.ucUcastSig;
Jeff Johnsone7245742012-09-05 17:12:55 -070016367 wdiPostAssocParams.staParams.ucBcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070016368 halPostAssocRspMsg.postAssocRspParams.configStaRspParams.ucBcastSig;
16369
Jeff Johnsone7245742012-09-05 17:12:55 -070016370 wdiPostAssocParams.wdiStatus =
16371 WDI_HAL_2_WDI_STATUS(halPostAssocRspMsg.postAssocRspParams.configStaRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070016372
16373 /*Copy the MAC addresses from the cached storage in the WDI CB as they are not
16374 included in the response */
Jeff Johnsone7245742012-09-05 17:12:55 -070016375 wpalMemoryCopy( wdiPostAssocParams.staParams.macSTA,
16376 pWDICtx->wdiCachedPostAssocReq.wdiSTAParams.macSTA,
Jeff Johnson295189b2012-06-20 16:38:30 -070016377 WDI_MAC_ADDR_LEN);
16378
16379 /* Extract Post Assoc BSS Params */
16380
Jeff Johnsone7245742012-09-05 17:12:55 -070016381 wpalMemoryCopy( wdiPostAssocParams.bssParams.macBSSID,
16382 pWDICtx->wdiCachedPostAssocReq.wdiBSSParams.macBSSID,
16383 WDI_MAC_ADDR_LEN);
Jeff Johnson295189b2012-06-20 16:38:30 -070016384
16385 /*Copy the MAC addresses from the cached storage in the WDI CB as they are not
16386 included in the response */
Jeff Johnsone7245742012-09-05 17:12:55 -070016387 wpalMemoryCopy( wdiPostAssocParams.bssParams.macSTA,
Jeff Johnson295189b2012-06-20 16:38:30 -070016388 pWDICtx->wdiCachedPostAssocReq.wdiBSSParams.wdiSTAContext
16389 .macSTA, WDI_MAC_ADDR_LEN);
16390
Jeff Johnsone7245742012-09-05 17:12:55 -070016391 wdiPostAssocParams.bssParams.ucBcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070016392 halPostAssocRspMsg.postAssocRspParams.configStaRspParams.ucBcastSig;
16393
Jeff Johnsone7245742012-09-05 17:12:55 -070016394 wdiPostAssocParams.bssParams.ucUcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070016395 halPostAssocRspMsg.postAssocRspParams.configStaRspParams.ucUcastSig;
16396
16397 wdiPostAssocParams.bssParams.ucBSSIdx =
16398 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bssIdx;
16399
Jeff Johnsone7245742012-09-05 17:12:55 -070016400 wdiPostAssocParams.bssParams.ucSTAIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070016401 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bssStaIdx;
16402
16403 wpalMutexAcquire(&pWDICtx->wptMutex);
16404
16405 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016406 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070016407 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016408 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
Jeff Johnson295189b2012-06-20 16:38:30 -070016409 wdiPostAssocParams.bssParams.
Jeff Johnsone7245742012-09-05 17:12:55 -070016410 macBSSID, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070016411
16412 /*-----------------------------------------------------------------------
16413 Post assoc response can only be received for an existing assoc that
Jeff Johnsone7245742012-09-05 17:12:55 -070016414 is current and in progress
Jeff Johnson295189b2012-06-20 16:38:30 -070016415 -----------------------------------------------------------------------*/
16416 if (( NULL == pBSSSes ) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070016417 ( ucCurrentBSSSesIdx != pWDICtx->ucCurrentBSSSesIdx ) ||
Jeff Johnson295189b2012-06-20 16:38:30 -070016418 ( eWLAN_PAL_FALSE == pWDICtx->bAssociationInProgress ))
16419 {
16420 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16421 "Association sequence for this BSS does not yet exist or "
16422 "association no longer in progress - mysterious HAL response");
16423
Jeff Johnsone7245742012-09-05 17:12:55 -070016424 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
16425
Jeff Johnson295189b2012-06-20 16:38:30 -070016426 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070016427 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070016428 }
16429
16430 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016431 Post Assoc Request is only allowed in Joining state
Jeff Johnson295189b2012-06-20 16:38:30 -070016432 -----------------------------------------------------------------------*/
16433 if ( WDI_ASSOC_JOINING_ST != pBSSSes->wdiAssocState)
16434 {
16435 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16436 "Post Assoc not allowed before JOIN - failing request "
16437 "strange HAL response");
16438
Jeff Johnsone7245742012-09-05 17:12:55 -070016439 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
16440
Jeff Johnson295189b2012-06-20 16:38:30 -070016441 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070016442 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070016443 }
16444
16445 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016446 If assoc has failed the current session will be deleted
Jeff Johnson295189b2012-06-20 16:38:30 -070016447 -----------------------------------------------------------------------*/
16448 if ( WDI_STATUS_SUCCESS != wdiPostAssocParams.wdiStatus )
16449 {
16450 /*Association was failed by HAL - remove session*/
16451 WDI_DeleteSession(pWDICtx, pBSSSes);
16452 }
16453 else
16454 {
16455 /*Transition to state POST Assoc*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016456 pBSSSes->wdiAssocState = WDI_ASSOC_POST_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -070016457
16458 /*Save DPU Info*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016459 pBSSSes->bcastMgmtDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070016460 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.mgmtDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016461 pBSSSes->bcastMgmtDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070016462 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.mgmtDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070016463 pBSSSes->bcastDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070016464 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bcastDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016465 pBSSSes->bcastDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070016466 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bcastDpuSignature;
16467
Jeff Johnsone7245742012-09-05 17:12:55 -070016468 pBSSSes->ucBSSIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070016469 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bssIdx;
16470 }
16471
16472 /*Association no longer in progress */
16473 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
16474
16475 /*Association no longer in progress - prepare pending assoc for processing*/
16476 WDI_DequeueAssocRequest(pWDICtx);
16477
16478 wpalMutexRelease(&pWDICtx->wptMutex);
16479
16480 /*Notify UMAC*/
16481 wdiPostAssocRspCb( &wdiPostAssocParams, pWDICtx->pRspCBUserData);
16482
Jeff Johnsone7245742012-09-05 17:12:55 -070016483 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016484}/*WDI_ProcessPostAssocRsp*/
16485
16486/**
Jeff Johnsone7245742012-09-05 17:12:55 -070016487 @brief Process Del STA Rsp function (called when a response is
Jeff Johnson295189b2012-06-20 16:38:30 -070016488 being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016489
16490 @param pWDICtx: pointer to the WLAN DAL context
16491 pEventData: pointer to the event information structure
16492
Jeff Johnson295189b2012-06-20 16:38:30 -070016493 @see
16494 @return Result of the function call
16495*/
16496WDI_Status
16497WDI_ProcessDelSTARsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016498(
Jeff Johnson295189b2012-06-20 16:38:30 -070016499 WDI_ControlBlockType* pWDICtx,
16500 WDI_EventInfoType* pEventData
16501)
16502{
16503 WDI_DelSTARspParamsType wdiDelSTARsp;
16504 WDI_DelSTARspCb wdiDelSTARspCb;
16505 wpt_uint8 staType;
Jeff Johnsone7245742012-09-05 17:12:55 -070016506 tDeleteStaRspMsg halDelStaRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070016507 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16508
16509 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016510 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016511 -------------------------------------------------------------------------*/
16512 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16513 ( NULL == pEventData->pEventData))
16514 {
16515 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016516 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016517 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016518 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016519 }
16520
16521 wdiDelSTARspCb = (WDI_DelSTARspCb)pWDICtx->pfncRspCB;
16522
16523 /*-------------------------------------------------------------------------
16524 Extract response and send it to UMAC
16525 -------------------------------------------------------------------------*/
16526 wpalMemoryCopy( &halDelStaRspMsg.delStaRspParams,
Jeff Johnsone7245742012-09-05 17:12:55 -070016527 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016528 sizeof(halDelStaRspMsg.delStaRspParams));
16529
16530 wdiDelSTARsp.ucSTAIdx = halDelStaRspMsg.delStaRspParams.staId;
Jeff Johnsone7245742012-09-05 17:12:55 -070016531 wdiDelSTARsp.wdiStatus =
16532 WDI_HAL_2_WDI_STATUS(halDelStaRspMsg.delStaRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070016533
16534 WDI_STATableGetStaType(pWDICtx, wdiDelSTARsp.ucSTAIdx, &staType);
16535
16536 /* If the DEL STA request is for self STA do not delete it - Really weird!!What happens in concurrency */
16537 if(staType == WDI_STA_ENTRY_SELF)
16538 {
16539 WDI_StaStruct* pSTATable = (WDI_StaStruct*) pWDICtx->staTable;
16540
16541 /* At this point add the self-STA */
16542
16543 /*! TO DO: wdiAddSTAParam.ucWmmEnabled */
16544 /*! TO DO: wdiAddSTAParam.ucHTCapable */
16545 /*! TO DO: wdiAddSTAParam.ucRmfEnabled */
16546
16547#define WDI_DPU_SELF_STA_DEFAULT_IDX 0
16548#define WDI_DPU_SELF_STA_DEFAULT_SIG 0
16549
16550 //all DPU indices are the same for self STA
16551 pSTATable[wdiDelSTARsp.ucSTAIdx].dpuIndex = WDI_DPU_SELF_STA_DEFAULT_IDX;
16552 pSTATable[wdiDelSTARsp.ucSTAIdx].bcastDpuIndex = WDI_DPU_SELF_STA_DEFAULT_IDX;
16553 pSTATable[wdiDelSTARsp.ucSTAIdx].bcastMgmtDpuIndex = WDI_DPU_SELF_STA_DEFAULT_IDX;
16554 pSTATable[wdiDelSTARsp.ucSTAIdx].bcastDpuSignature = WDI_DPU_SELF_STA_DEFAULT_SIG;
16555 pSTATable[wdiDelSTARsp.ucSTAIdx].bcastMgmtDpuSignature = WDI_DPU_SELF_STA_DEFAULT_SIG;
16556 pSTATable[wdiDelSTARsp.ucSTAIdx].dpuSig = WDI_DPU_SELF_STA_DEFAULT_SIG;
Madan Mohan Koyyalamudi15a48f02012-10-05 17:13:53 -070016557
16558 pSTATable[wdiDelSTARsp.ucSTAIdx].bssIdx = WDI_BSS_INVALID_IDX;
Jeff Johnson295189b2012-06-20 16:38:30 -070016559 }
16560 else
16561 {
16562 //Delete the station in the table
16563 WDI_STATableDelSta( pWDICtx, wdiDelSTARsp.ucSTAIdx);
16564 }
16565
16566 /*Notify UMAC*/
16567 wdiDelSTARspCb( &wdiDelSTARsp, pWDICtx->pRspCBUserData);
16568
Jeff Johnsone7245742012-09-05 17:12:55 -070016569 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016570}/*WDI_ProcessDelSTARsp*/
16571
16572
16573/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070016574 Security Response Processing Functions
Jeff Johnson295189b2012-06-20 16:38:30 -070016575==========================================================================*/
16576
16577/**
16578 @brief Process Set BSS Key Rsp function (called when a response
16579 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016580
16581 @param pWDICtx: pointer to the WLAN DAL context
16582 pEventData: pointer to the event information structure
16583
Jeff Johnson295189b2012-06-20 16:38:30 -070016584 @see
16585 @return Result of the function call
16586*/
16587WDI_Status
16588WDI_ProcessSetBssKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016589(
Jeff Johnson295189b2012-06-20 16:38:30 -070016590 WDI_ControlBlockType* pWDICtx,
16591 WDI_EventInfoType* pEventData
16592)
16593{
16594 WDI_Status wdiStatus;
16595 eHalStatus halStatus;
16596 WDI_SetBSSKeyRspCb wdiSetBSSKeyRspCb;
16597 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16598
16599 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016600 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016601 -------------------------------------------------------------------------*/
16602 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16603 ( NULL == pEventData->pEventData))
16604 {
16605 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016606 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016607 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016608 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016609 }
16610
16611 wdiSetBSSKeyRspCb = (WDI_SetBSSKeyRspCb)pWDICtx->pfncRspCB;
16612
16613 /*-------------------------------------------------------------------------
16614 Extract response and send it to UMAC
16615 -------------------------------------------------------------------------*/
16616 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070016617 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016618
16619 if ( eHAL_STATUS_SUCCESS != halStatus )
16620 {
16621 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16622 "Set BSS Key failed with status %s (%d)",
16623 WDI_getHALStatusMsgString(halStatus),
16624 halStatus);
16625 /* send the status to UMAC, don't return from here*/
16626 }
16627
16628 /*Notify UMAC*/
16629 wdiSetBSSKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16630
Jeff Johnsone7245742012-09-05 17:12:55 -070016631 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016632}/*WDI_ProcessSetBssKeyRsp*/
16633
16634/**
16635 @brief Process Remove BSS Key Rsp function (called when a response
16636 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016637
16638 @param pWDICtx: pointer to the WLAN DAL context
16639 pEventData: pointer to the event information structure
16640
Jeff Johnson295189b2012-06-20 16:38:30 -070016641 @see
16642 @return Result of the function call
16643*/
16644WDI_Status
16645WDI_ProcessRemoveBssKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016646(
Jeff Johnson295189b2012-06-20 16:38:30 -070016647 WDI_ControlBlockType* pWDICtx,
16648 WDI_EventInfoType* pEventData
16649)
16650{
16651 WDI_Status wdiStatus;
16652 eHalStatus halStatus;
16653 WDI_RemoveBSSKeyRspCb wdiRemoveBSSKeyRspCb;
16654 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16655
16656 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016657 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016658 -------------------------------------------------------------------------*/
16659 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16660 ( NULL == pEventData->pEventData))
16661 {
16662 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016663 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016664 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016665 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016666 }
16667
16668 wdiRemoveBSSKeyRspCb = (WDI_RemoveBSSKeyRspCb)pWDICtx->pfncRspCB;
16669
16670 /*-------------------------------------------------------------------------
16671 Extract response and send it to UMAC
16672 -------------------------------------------------------------------------*/
16673 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070016674 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016675
16676 if ( eHAL_STATUS_SUCCESS != halStatus )
16677 {
16678 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16679 "Remove BSS Key failed with status %s (%d )",
16680 WDI_getHALStatusMsgString(halStatus),
16681 halStatus);
16682 /* send the status to UMAC, don't return from here*/
16683 }
16684
16685 /*Notify UMAC*/
16686 wdiRemoveBSSKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16687
Jeff Johnsone7245742012-09-05 17:12:55 -070016688 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016689}/*WDI_ProcessSetBssKeyRsp*/
16690
16691
16692/**
16693 @brief Process Set STA Key Rsp function (called when a response
16694 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016695
16696 @param pWDICtx: pointer to the WLAN DAL context
16697 pEventData: pointer to the event information structure
16698
Jeff Johnson295189b2012-06-20 16:38:30 -070016699 @see
16700 @return Result of the function call
16701*/
16702WDI_Status
16703WDI_ProcessSetStaKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016704(
Jeff Johnson295189b2012-06-20 16:38:30 -070016705 WDI_ControlBlockType* pWDICtx,
16706 WDI_EventInfoType* pEventData
16707)
16708{
16709 WDI_Status wdiStatus;
16710 eHalStatus halStatus;
16711 WDI_SetSTAKeyRspCb wdiSetSTAKeyRspCb;
16712 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16713
16714 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016715 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016716 -------------------------------------------------------------------------*/
16717 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16718 ( NULL == pEventData->pEventData))
16719 {
16720 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016721 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016722 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016723 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016724 }
16725
16726 wdiSetSTAKeyRspCb = (WDI_SetSTAKeyRspCb)pWDICtx->pfncRspCB;
16727
16728 /*-------------------------------------------------------------------------
16729 Extract response and send it to UMAC
16730 -------------------------------------------------------------------------*/
16731 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070016732 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016733
16734 if ( eHAL_STATUS_SUCCESS != halStatus )
16735 {
16736 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16737 "Set STA Key failed with status %s (%d)",
16738 WDI_getHALStatusMsgString(halStatus),
16739 halStatus);
16740 /* send the status to UMAC, don't return from here*/
16741 }
16742
16743 /*Notify UMAC*/
16744 wdiSetSTAKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16745
Jeff Johnsone7245742012-09-05 17:12:55 -070016746 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016747}/*WDI_ProcessSetSTAKeyRsp*/
16748
16749/**
Jeff Johnsone7245742012-09-05 17:12:55 -070016750 @brief Process Remove STA Key Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070016751 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016752
16753 @param pWDICtx: pointer to the WLAN DAL context
16754 pEventData: pointer to the event information structure
16755
Jeff Johnson295189b2012-06-20 16:38:30 -070016756 @see
16757 @return Result of the function call
16758*/
16759WDI_Status
16760WDI_ProcessRemoveStaKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016761(
Jeff Johnson295189b2012-06-20 16:38:30 -070016762 WDI_ControlBlockType* pWDICtx,
16763 WDI_EventInfoType* pEventData
16764)
16765{
16766 WDI_Status wdiStatus;
16767 eHalStatus halStatus;
16768 WDI_RemoveSTAKeyRspCb wdiRemoveSTAKeyRspCb;
16769 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16770
16771 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016772 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016773 -------------------------------------------------------------------------*/
16774 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16775 ( NULL == pEventData->pEventData))
16776 {
16777 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016778 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016779 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016780 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016781 }
16782
16783 wdiRemoveSTAKeyRspCb = (WDI_RemoveSTAKeyRspCb)pWDICtx->pfncRspCB;
16784
16785 /*-------------------------------------------------------------------------
16786 Extract response and send it to UMAC
16787 -------------------------------------------------------------------------*/
16788 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070016789 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016790
16791 if ( eHAL_STATUS_SUCCESS != halStatus )
16792 {
16793 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16794 "Remove STA Key failed with status %s (%d)",
16795 WDI_getHALStatusMsgString(halStatus),
16796 halStatus);
16797 /* send the status to UMAC, don't return from here*/
16798 }
16799
16800 /*Notify UMAC*/
16801 wdiRemoveSTAKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16802
Jeff Johnsone7245742012-09-05 17:12:55 -070016803 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016804}/*WDI_ProcessRemoveStaKeyRsp*/
16805
16806/**
Jeff Johnsone7245742012-09-05 17:12:55 -070016807 @brief Process Set STA Bcast Key Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070016808 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016809
16810 @param pWDICtx: pointer to the WLAN DAL context
16811 pEventData: pointer to the event information structure
16812
Jeff Johnson295189b2012-06-20 16:38:30 -070016813 @see
16814 @return Result of the function call
16815*/
16816WDI_Status
16817WDI_ProcessSetStaBcastKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016818(
Jeff Johnson295189b2012-06-20 16:38:30 -070016819 WDI_ControlBlockType* pWDICtx,
16820 WDI_EventInfoType* pEventData
16821)
16822{
16823 WDI_Status wdiStatus;
16824 eHalStatus halStatus;
16825 WDI_SetSTAKeyRspCb wdiSetSTABcastKeyRspCb;
16826 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16827
16828 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016829 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016830 -------------------------------------------------------------------------*/
16831 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16832 ( NULL == pEventData->pEventData))
16833 {
16834 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016835 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016836 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016837 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016838 }
16839
16840 wdiSetSTABcastKeyRspCb = (WDI_SetSTAKeyRspCb)pWDICtx->pfncRspCB;
16841
16842 /*-------------------------------------------------------------------------
16843 Extract response and send it to UMAC
16844 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016845 wpalMemoryCopy( &halStatus,
16846 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016847 sizeof(halStatus));
16848
Jeff Johnsone7245742012-09-05 17:12:55 -070016849 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016850
16851 if ( eHAL_STATUS_SUCCESS != halStatus )
16852 {
16853 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16854 "Set STA Key failed with status %s (%d)",
16855 WDI_getHALStatusMsgString(halStatus),
16856 halStatus);
16857 /* send the status to UMAC, don't return from here*/
16858 }
16859
16860 /*Notify UMAC*/
16861 wdiSetSTABcastKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16862
Jeff Johnsone7245742012-09-05 17:12:55 -070016863 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016864}/*WDI_ProcessSetSTABcastKeyRsp*/
16865
16866/**
16867 @brief Process Remove STA Bcast Key Rsp function (called when a
16868 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016869
16870 @param pWDICtx: pointer to the WLAN DAL context
16871 pEventData: pointer to the event information structure
16872
Jeff Johnson295189b2012-06-20 16:38:30 -070016873 @see
16874 @return Result of the function call
16875*/
16876WDI_Status
16877WDI_ProcessRemoveStaBcastKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016878(
Jeff Johnson295189b2012-06-20 16:38:30 -070016879 WDI_ControlBlockType* pWDICtx,
16880 WDI_EventInfoType* pEventData
16881)
16882{
16883 WDI_Status wdiStatus;
16884 eHalStatus halStatus;
16885 WDI_RemoveSTAKeyRspCb wdiRemoveSTABcastKeyRspCb;
16886 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16887
16888 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016889 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016890 -------------------------------------------------------------------------*/
16891 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16892 ( NULL == pEventData->pEventData))
16893 {
16894 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016895 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016896 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016897 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016898 }
16899
16900 wdiRemoveSTABcastKeyRspCb = (WDI_RemoveSTAKeyRspCb)pWDICtx->pfncRspCB;
16901
16902 /*-------------------------------------------------------------------------
16903 Extract response and send it to UMAC
16904 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016905 wpalMemoryCopy( &halStatus,
16906 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016907 sizeof(halStatus));
16908
Jeff Johnsone7245742012-09-05 17:12:55 -070016909 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016910
16911 if ( eHAL_STATUS_SUCCESS != halStatus )
16912 {
16913 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16914 "Remove STA Key failed with status %s (%d)",
16915 WDI_getHALStatusMsgString(halStatus),
16916 halStatus);
16917 /* send the status to UMAC, don't return from here*/
16918 }
16919
16920 /*Notify UMAC*/
16921 wdiRemoveSTABcastKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16922
Jeff Johnsone7245742012-09-05 17:12:55 -070016923 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016924}/*WDI_ProcessRemoveStaBcastKeyRsp*/
16925
16926
16927/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070016928 QoS and BA Response Processing Functions
Jeff Johnson295189b2012-06-20 16:38:30 -070016929==========================================================================*/
16930
16931/**
16932 @brief Process Add TSpec Rsp function (called when a response
16933 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016934
16935 @param pWDICtx: pointer to the WLAN DAL context
16936 pEventData: pointer to the event information structure
16937
Jeff Johnson295189b2012-06-20 16:38:30 -070016938 @see
16939 @return Result of the function call
16940*/
16941WDI_Status
16942WDI_ProcessAddTSpecRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016943(
Jeff Johnson295189b2012-06-20 16:38:30 -070016944 WDI_ControlBlockType* pWDICtx,
16945 WDI_EventInfoType* pEventData
16946)
16947{
16948 WDI_Status wdiStatus;
16949 eHalStatus halStatus;
16950 WDI_AddTsRspCb wdiAddTsRspCb;
16951 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16952
16953 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016954 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016955 -------------------------------------------------------------------------*/
16956 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16957 ( NULL == pEventData->pEventData))
16958 {
16959 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016960 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016961 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016962 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016963 }
16964
16965 wdiAddTsRspCb = (WDI_AddTsRspCb)pWDICtx->pfncRspCB;
16966
16967 /*-------------------------------------------------------------------------
16968 Extract response and send it to UMAC
16969 -------------------------------------------------------------------------*/
16970 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070016971 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016972
16973 /*Notify UMAC*/
16974 wdiAddTsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16975
Jeff Johnsone7245742012-09-05 17:12:55 -070016976 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016977}/*WDI_ProcessAddTSpecRsp*/
16978
16979
16980/**
16981 @brief Process Del TSpec Rsp function (called when a response
16982 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016983
16984 @param pWDICtx: pointer to the WLAN DAL context
16985 pEventData: pointer to the event information structure
16986
Jeff Johnson295189b2012-06-20 16:38:30 -070016987 @see
16988 @return Result of the function call
16989*/
16990WDI_Status
16991WDI_ProcessDelTSpecRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016992(
Jeff Johnson295189b2012-06-20 16:38:30 -070016993 WDI_ControlBlockType* pWDICtx,
16994 WDI_EventInfoType* pEventData
16995)
16996{
16997 WDI_Status wdiStatus;
16998 eHalStatus halStatus;
16999 WDI_DelTsRspCb wdiDelTsRspCb;
17000 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17001
17002 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017003 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017004 -------------------------------------------------------------------------*/
17005 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17006 ( NULL == pEventData->pEventData))
17007 {
17008 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017009 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017010 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017011 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017012 }
17013
17014 wdiDelTsRspCb = (WDI_DelTsRspCb)pWDICtx->pfncRspCB;
17015
17016 /*-------------------------------------------------------------------------
17017 Extract response and send it to UMAC
17018 -------------------------------------------------------------------------*/
17019 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070017020 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017021
17022 /*Notify UMAC*/
17023 wdiDelTsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17024
Jeff Johnsone7245742012-09-05 17:12:55 -070017025 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017026}/*WDI_ProcessDelTSpecRsp*/
17027
17028/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017029 @brief Process Update EDCA Parameters Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070017030 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017031
17032 @param pWDICtx: pointer to the WLAN DAL context
17033 pEventData: pointer to the event information structure
17034
Jeff Johnson295189b2012-06-20 16:38:30 -070017035 @see
17036 @return Result of the function call
17037*/
17038WDI_Status
17039WDI_ProcessUpdateEDCAParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017040(
Jeff Johnson295189b2012-06-20 16:38:30 -070017041 WDI_ControlBlockType* pWDICtx,
17042 WDI_EventInfoType* pEventData
17043)
17044{
17045 WDI_Status wdiStatus;
17046 eHalStatus halStatus;
17047 WDI_UpdateEDCAParamsRspCb wdiUpdateEDCAParamsRspCb;
17048 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17049
17050 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017051 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017052 -------------------------------------------------------------------------*/
17053 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17054 ( NULL == pEventData->pEventData))
17055 {
17056 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017057 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017058 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017059 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017060 }
17061
17062 wdiUpdateEDCAParamsRspCb = (WDI_UpdateEDCAParamsRspCb)pWDICtx->pfncRspCB;
17063
17064 /*-------------------------------------------------------------------------
17065 Extract response and send it to UMAC
17066 -------------------------------------------------------------------------*/
17067 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070017068 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017069
17070 /*Notify UMAC*/
17071 wdiUpdateEDCAParamsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17072
Jeff Johnsone7245742012-09-05 17:12:55 -070017073 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017074}/*WDI_ProcessUpdateEDCAParamsRsp*/
17075
17076
17077/**
17078 @brief Process Add BA Rsp function (called when a response
17079 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017080
17081 @param pWDICtx: pointer to the WLAN DAL context
17082 pEventData: pointer to the event information structure
17083
Jeff Johnson295189b2012-06-20 16:38:30 -070017084 @see
17085 @return Result of the function call
17086*/
17087WDI_Status
17088WDI_ProcessAddBASessionRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017089(
Jeff Johnson295189b2012-06-20 16:38:30 -070017090 WDI_ControlBlockType* pWDICtx,
17091 WDI_EventInfoType* pEventData
17092)
17093{
17094 WDI_AddBASessionRspCb wdiAddBASessionRspCb;
17095
17096 tAddBASessionRspParams halBASessionRsp;
17097 WDI_AddBASessionRspParamsType wdiBASessionRsp;
17098
Jeff Johnsone7245742012-09-05 17:12:55 -070017099
Jeff Johnson295189b2012-06-20 16:38:30 -070017100 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17101
17102 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017103 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017104 -------------------------------------------------------------------------*/
17105 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17106 ( NULL == pEventData->pEventData))
17107 {
17108 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017109 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017110 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017111 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017112 }
17113
17114 wdiAddBASessionRspCb = (WDI_AddBASessionRspCb)pWDICtx->pfncRspCB;
17115
17116 /*-------------------------------------------------------------------------
17117 Extract response and send it to UMAC
17118 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017119 wpalMemoryCopy( &halBASessionRsp,
17120 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017121 sizeof(halBASessionRsp));
17122
17123 wdiBASessionRsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halBASessionRsp.status);
17124
Jeff Johnson43971f52012-07-17 12:26:56 -070017125 if ( WDI_STATUS_SUCCESS == wdiBASessionRsp.wdiStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070017126 {
17127 wdiBASessionRsp.ucBaDialogToken = halBASessionRsp.baDialogToken;
17128 wdiBASessionRsp.ucBaTID = halBASessionRsp.baTID;
17129 wdiBASessionRsp.ucBaBufferSize = halBASessionRsp.baBufferSize;
17130 wdiBASessionRsp.usBaSessionID = halBASessionRsp.baSessionID;
17131 wdiBASessionRsp.ucWinSize = halBASessionRsp.winSize;
17132 wdiBASessionRsp.ucSTAIdx = halBASessionRsp.STAID;
17133 wdiBASessionRsp.usBaSSN = halBASessionRsp.SSN;
17134 }
17135
17136 /*Notify UMAC*/
17137 wdiAddBASessionRspCb( &wdiBASessionRsp, pWDICtx->pRspCBUserData);
17138
Jeff Johnsone7245742012-09-05 17:12:55 -070017139 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017140}/*WDI_ProcessAddSessionBARsp*/
17141
17142
17143/**
17144 @brief Process Del BA Rsp function (called when a response
17145 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017146
17147 @param pWDICtx: pointer to the WLAN DAL context
17148 pEventData: pointer to the event information structure
17149
Jeff Johnson295189b2012-06-20 16:38:30 -070017150 @see
17151 @return Result of the function call
17152*/
17153WDI_Status
17154WDI_ProcessDelBARsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017155(
Jeff Johnson295189b2012-06-20 16:38:30 -070017156 WDI_ControlBlockType* pWDICtx,
17157 WDI_EventInfoType* pEventData
17158)
17159{
17160 WDI_Status wdiStatus;
17161 eHalStatus halStatus;
17162 WDI_DelBARspCb wdiDelBARspCb;
17163 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17164
17165 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017166 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017167 -------------------------------------------------------------------------*/
17168 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17169 ( NULL == pEventData->pEventData))
17170 {
17171 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017172 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017173 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017174 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017175 }
17176
17177 wdiDelBARspCb = (WDI_DelBARspCb)pWDICtx->pfncRspCB;
17178
17179 /*-------------------------------------------------------------------------
17180 Extract response and send it to UMAC
17181 -------------------------------------------------------------------------*/
17182 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070017183 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017184
17185 if ( eHAL_STATUS_SUCCESS == halStatus )
17186 {
17187 /*! TO DO: I should notify the DAL Data Path that the BA was deleted*/
17188 }
17189
17190 /*Notify UMAC*/
17191 wdiDelBARspCb( wdiStatus, pWDICtx->pRspCBUserData);
17192
Jeff Johnsone7245742012-09-05 17:12:55 -070017193 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017194}/*WDI_ProcessDelBARsp*/
17195
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -080017196#ifdef FEATURE_WLAN_ESE
Jeff Johnson295189b2012-06-20 16:38:30 -070017197/**
17198 @brief Process TSM Stats Rsp function (called when a response
17199 is being received over the bus from HAL)
17200
17201 @param pWDICtx: pointer to the WLAN DAL context
17202 pEventData: pointer to the event information structure
17203
17204 @see
17205 @return Result of the function call
17206*/
17207WDI_Status
17208WDI_ProcessTsmStatsRsp
17209(
17210 WDI_ControlBlockType* pWDICtx,
17211 WDI_EventInfoType* pEventData
17212)
17213{
17214 WDI_TsmRspCb wdiTsmStatsRspCb;
17215 tTsmStatsRspMsg halTsmStatsRspMsg;
17216 WDI_TSMStatsRspParamsType wdiTsmStatsRspParams;
17217 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17218
17219 /*-------------------------------------------------------------------------
17220 Sanity check
17221 -------------------------------------------------------------------------*/
17222 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17223 ( NULL == pEventData->pEventData))
17224 {
17225 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017226 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017227 WDI_ASSERT(0);
17228 return WDI_STATUS_E_FAILURE;
17229 }
17230
17231 wdiTsmStatsRspCb = (WDI_TsmRspCb)pWDICtx->pfncRspCB;
17232
17233 /*-------------------------------------------------------------------------
17234 Unpack HAL Response Message - the header was already extracted by the
17235 main Response Handling procedure
17236 -------------------------------------------------------------------------*/
17237 wpalMemoryCopy( &halTsmStatsRspMsg.tsmStatsRspParams,
17238 pEventData->pEventData,
17239 sizeof(halTsmStatsRspMsg.tsmStatsRspParams));
17240
17241 wdiTsmStatsRspParams.UplinkPktQueueDly = halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktQueueDly;
17242 wpalMemoryCopy( wdiTsmStatsRspParams.UplinkPktQueueDlyHist,
17243 halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktQueueDlyHist,
17244 sizeof(halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktQueueDlyHist)/
17245 sizeof(halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktQueueDlyHist[0]));
17246 wdiTsmStatsRspParams.UplinkPktTxDly = halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktTxDly;
17247 wdiTsmStatsRspParams.UplinkPktLoss = halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktLoss;
17248 wdiTsmStatsRspParams.UplinkPktCount = halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktCount;
17249 wdiTsmStatsRspParams.RoamingCount = halTsmStatsRspMsg.tsmStatsRspParams.RoamingCount;
17250 wdiTsmStatsRspParams.RoamingDly = halTsmStatsRspMsg.tsmStatsRspParams.RoamingDly;
17251 wdiTsmStatsRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(
17252 halTsmStatsRspMsg.tsmStatsRspParams.status);
17253
17254 /*Notify UMAC*/
17255 wdiTsmStatsRspCb( &wdiTsmStatsRspParams, pWDICtx->pRspCBUserData);
17256
17257 return WDI_STATUS_SUCCESS;
17258}/*WDI_ProcessTsmStatsRsp*/
17259
17260#endif
17261
17262
17263
17264/**
17265 @brief Process Flush AC Rsp function (called when a response
17266 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017267
17268 @param pWDICtx: pointer to the WLAN DAL context
17269 pEventData: pointer to the event information structure
17270
Jeff Johnson295189b2012-06-20 16:38:30 -070017271 @see
17272 @return Result of the function call
17273*/
17274WDI_Status
17275WDI_ProcessFlushAcRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017276(
Jeff Johnson295189b2012-06-20 16:38:30 -070017277 WDI_ControlBlockType* pWDICtx,
17278 WDI_EventInfoType* pEventData
17279)
17280{
17281 WDI_Status wdiStatus;
17282 eHalStatus halStatus;
17283 WDI_FlushAcRspCb wdiFlushAcRspCb;
17284 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17285
17286 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017287 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017288 -------------------------------------------------------------------------*/
17289 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17290 ( NULL == pEventData->pEventData))
17291 {
17292 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017293 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017294 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017295 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017296 }
17297
17298 wdiFlushAcRspCb = (WDI_FlushAcRspCb)pWDICtx->pfncRspCB;
17299
17300 /*-------------------------------------------------------------------------
17301 Extract response and send it to UMAC
17302 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017303 wpalMemoryCopy( &halStatus,
17304 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017305 sizeof(halStatus));
17306
Jeff Johnsone7245742012-09-05 17:12:55 -070017307 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017308
17309 /*Notify UMAC*/
17310 wdiFlushAcRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17311
Jeff Johnsone7245742012-09-05 17:12:55 -070017312 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017313}/*WDI_ProcessFlushAcRsp*/
17314
17315/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017316 @brief Process BT AMP event Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070017317 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017318
17319 @param pWDICtx: pointer to the WLAN DAL context
17320 pEventData: pointer to the event information structure
17321
Jeff Johnson295189b2012-06-20 16:38:30 -070017322 @see
17323 @return Result of the function call
17324*/
17325WDI_Status
17326WDI_ProcessBtAmpEventRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017327(
Jeff Johnson295189b2012-06-20 16:38:30 -070017328 WDI_ControlBlockType* pWDICtx,
17329 WDI_EventInfoType* pEventData
17330)
17331{
17332 WDI_Status wdiStatus;
17333 eHalStatus halStatus;
17334 WDI_BtAmpEventRspCb wdiBtAmpEventRspCb;
17335 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17336
17337 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017338 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017339 -------------------------------------------------------------------------*/
17340 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17341 ( NULL == pEventData->pEventData))
17342 {
17343 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017344 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017345 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017346 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017347 }
17348
17349 wdiBtAmpEventRspCb = (WDI_BtAmpEventRspCb)pWDICtx->pfncRspCB;
17350
17351 /*-------------------------------------------------------------------------
17352 Extract response and send it to UMAC
17353 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017354 wpalMemoryCopy( &halStatus,
17355 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017356 sizeof(halStatus));
17357
Jeff Johnsone7245742012-09-05 17:12:55 -070017358 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017359
17360 /*Notify UMAC*/
17361 wdiBtAmpEventRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17362
Jeff Johnsone7245742012-09-05 17:12:55 -070017363 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017364}/*WDI_ProcessBtAmpEventRsp*/
17365
17366
17367/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017368 @brief Process ADD STA SELF Rsp function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070017369 when a response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017370
17371 @param pWDICtx: pointer to the WLAN DAL context
17372 pEventData: pointer to the event information structure
17373
Jeff Johnson295189b2012-06-20 16:38:30 -070017374 @see
17375 @return Result of the function call
17376*/
17377WDI_Status
17378WDI_ProcessAddSTASelfRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017379(
Jeff Johnson295189b2012-06-20 16:38:30 -070017380 WDI_ControlBlockType* pWDICtx,
17381 WDI_EventInfoType* pEventData
17382)
17383{
17384 WDI_AddSTASelfRspParamsType wdiAddSTASelfParams;
17385 WDI_AddSTASelfParamsRspCb wdiAddSTASelfReqParamsRspCb;
17386 tAddStaSelfRspMsg halAddStaSelfRsp;
17387 WDI_AddStaParams wdiAddSTAParam = {0};
17388 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17389
17390 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017391 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017392 -------------------------------------------------------------------------*/
17393 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17394 ( NULL == pEventData->pEventData))
17395 {
17396 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017397 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017398 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017399 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017400 }
17401
Jeff Johnsone7245742012-09-05 17:12:55 -070017402 wdiAddSTASelfReqParamsRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070017403 (WDI_AddSTASelfParamsRspCb)pWDICtx->pfncRspCB;
17404
17405 /*-------------------------------------------------------------------------
17406 Extract response and send it to UMAC
17407 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017408 wpalMemoryCopy( &halAddStaSelfRsp.addStaSelfRspParams,
17409 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017410 sizeof(halAddStaSelfRsp.addStaSelfRspParams));
17411
17412
Jeff Johnsone7245742012-09-05 17:12:55 -070017413 wdiAddSTASelfParams.wdiStatus =
17414 WDI_HAL_2_WDI_STATUS(halAddStaSelfRsp.addStaSelfRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070017415
Jeff Johnsone7245742012-09-05 17:12:55 -070017416 wdiAddSTASelfParams.ucSTASelfIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070017417 halAddStaSelfRsp.addStaSelfRspParams.selfStaIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070017418 wdiAddSTASelfParams.dpuIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070017419 halAddStaSelfRsp.addStaSelfRspParams.dpuIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070017420 wdiAddSTASelfParams.dpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070017421 halAddStaSelfRsp.addStaSelfRspParams.dpuSignature;
17422
17423 wpalMemoryCopy(wdiAddSTASelfParams.macSelfSta,
17424 pWDICtx->wdiCacheAddSTASelfReq.wdiAddSTASelfInfo.selfMacAddr,
17425 WDI_MAC_ADDR_LEN);
17426
17427
17428#ifdef HAL_SELF_STA_PER_BSS
17429
17430 /* At this point add the self-STA */
17431
17432 /*! TO DO: wdiAddSTAParam.ucWmmEnabled */
17433 /*! TO DO: wdiAddSTAParam.ucHTCapable */
17434 /*! TO DO: wdiAddSTAParam.ucRmfEnabled */
17435
17436 //all DPU indices are the same for self STA
17437
17438 /*DPU Information*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017439 wdiAddSTAParam.dpuIndex = wdiAddSTASelfParams.dpuIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070017440 wdiAddSTAParam.dpuSig = wdiAddSTASelfParams.dpuSignature;
17441 wdiAddSTAParam.bcastDpuSignature = wdiAddSTASelfParams.dpuSignature;
17442 wdiAddSTAParam.bcastMgmtDpuSignature = wdiAddSTASelfParams.dpuSignature;
17443 wdiAddSTAParam.bcastDpuIndex = wdiAddSTASelfParams.dpuIdx;
17444 wdiAddSTAParam.bcastMgmtDpuIndex = wdiAddSTASelfParams.dpuIdx;
17445
17446 wpalMemoryCopy(wdiAddSTAParam.staMacAddr, wdiAddSTASelfParams.macSelfSta,
17447 WDI_MAC_ADDR_LEN);
17448
17449 wdiAddSTAParam.ucStaType = WDI_STA_ENTRY_SELF; /* 0 - self */
17450 wdiAddSTAParam.ucSTAIdx = wdiAddSTASelfParams.ucSTASelfIdx;
17451
Jeff Johnsone7245742012-09-05 17:12:55 -070017452 if(halAddStaSelfRsp.addStaSelfRspParams.status
Jeff Johnson295189b2012-06-20 16:38:30 -070017453 != eHAL_STATUS_ADD_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO)
17454 {
17455 (void)WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
17456 }
17457#endif
17458
17459 /*Notify UMAC*/
17460 wdiAddSTASelfReqParamsRspCb( &wdiAddSTASelfParams, pWDICtx->pRspCBUserData);
17461
Jeff Johnsone7245742012-09-05 17:12:55 -070017462 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017463}/*WDI_ProcessAddSTASelfRsp*/
17464
17465
17466
17467/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017468 @brief WDI_ProcessDelSTASelfRsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070017469 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017470
17471 @param pWDICtx: pointer to the WLAN DAL context
17472 pEventData: pointer to the event information structure
17473
Jeff Johnson295189b2012-06-20 16:38:30 -070017474 @see
17475 @return Result of the function call
17476*/
17477WDI_Status
17478WDI_ProcessDelSTASelfRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017479(
Jeff Johnson295189b2012-06-20 16:38:30 -070017480 WDI_ControlBlockType* pWDICtx,
17481 WDI_EventInfoType* pEventData
17482)
17483{
17484 WDI_DelSTASelfRspParamsType wdiDelStaSelfRspParams;
17485 WDI_DelSTASelfRspCb wdiDelStaSelfRspCb;
17486 tDelStaSelfRspParams delStaSelfRspParams;
17487 wpt_uint8 ucStaIdx;
17488
17489 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17490
17491 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017492 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017493 -------------------------------------------------------------------------*/
17494 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17495 ( NULL == pEventData->pEventData))
17496 {
17497 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017498 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017499 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017500 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017501 }
17502
17503 wdiDelStaSelfRspCb = (WDI_DelSTASelfRspCb)pWDICtx->pfncRspCB;
17504
17505 /*-------------------------------------------------------------------------
17506 Extract response and send it to UMAC
17507 -------------------------------------------------------------------------*/
17508
Jeff Johnsone7245742012-09-05 17:12:55 -070017509 wpalMemoryCopy( &delStaSelfRspParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070017510 (wpt_uint8*)pEventData->pEventData,
17511 sizeof(tDelStaSelfRspParams));
17512
Jeff Johnsone7245742012-09-05 17:12:55 -070017513 wdiDelStaSelfRspParams.wdiStatus =
17514 WDI_HAL_2_WDI_STATUS(delStaSelfRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070017515
Jeff Johnsone7245742012-09-05 17:12:55 -070017516 /* delStaSelfRspParams.status is not
Jeff Johnson295189b2012-06-20 16:38:30 -070017517 eHAL_STATUS_DEL_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO*/
17518 if( eHAL_STATUS_SUCCESS == delStaSelfRspParams.status )
17519 {
17520 WDI_Status wdiStatus;
Jeff Johnsone7245742012-09-05 17:12:55 -070017521 wdiStatus = WDI_STATableFindStaidByAddr(pWDICtx,
Jeff Johnson295189b2012-06-20 16:38:30 -070017522 delStaSelfRspParams.selfMacAddr,
17523 &ucStaIdx);
17524 if(WDI_STATUS_E_FAILURE == wdiStatus)
17525 {
17526 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017527 "%s: Unable to extract the STA Idx ", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017528 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017529 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017530 }
17531 WDI_STATableDelSta(pWDICtx, ucStaIdx);
17532 }
17533
17534 /*Notify UMAC*/
17535 wdiDelStaSelfRspCb(&wdiDelStaSelfRspParams, (void*) pWDICtx->pRspCBUserData);
17536
17537 return WDI_STATUS_SUCCESS;
17538}
17539
Jeff Johnsone7245742012-09-05 17:12:55 -070017540#ifdef FEATURE_OEM_DATA_SUPPORT
17541/**
17542 @brief Start Oem Data Rsp function (called when a
17543 response is being received over the bus from HAL)
Jeff Johnson295189b2012-06-20 16:38:30 -070017544
Jeff Johnsone7245742012-09-05 17:12:55 -070017545 @param pWDICtx: pointer to the WLAN DAL context
17546 pEventData: pointer to the event information structure
17547
17548 @see
17549 @return Result of the function call
17550*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017551
17552WDI_Status
17553WDI_ProcessStartOemDataRsp
17554(
17555 WDI_ControlBlockType* pWDICtx,
17556 WDI_EventInfoType* pEventData
17557)
17558{
17559 WDI_oemDataRspCb wdiOemDataRspCb;
17560 WDI_oemDataRspParamsType* wdiOemDataRspParams;
17561 tStartOemDataRspParams* halStartOemDataRspParams;
17562
17563 /*-------------------------------------------------------------------------
17564 Sanity check
17565 -------------------------------------------------------------------------*/
17566 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17567 ( NULL == pEventData->pEventData))
17568 {
17569 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017570 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070017571 WDI_ASSERT(0);
17572 return WDI_STATUS_E_FAILURE;
17573 }
17574
17575 wdiOemDataRspCb = (WDI_oemDataRspCb)pWDICtx->pfncRspCB;
17576
17577 /*-------------------------------------------------------------------------
17578 Extract response and send it to UMAC
17579 -------------------------------------------------------------------------*/
17580 halStartOemDataRspParams = (tStartOemDataRspParams *)pEventData->pEventData;
17581
17582
17583 //It is the responsibility of the application code to check for failure
17584 //conditions!
17585
17586 //Allocate memory for WDI OEM DATA RSP structure
17587 wdiOemDataRspParams = wpalMemoryAllocate(sizeof(WDI_oemDataRspParamsType)) ;
17588
17589 if(NULL == wdiOemDataRspParams)
17590 {
17591 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080017592 "Failed to allocate memory in OEM DATA Response %p %p %p ",
Jeff Johnsone7245742012-09-05 17:12:55 -070017593 pWDICtx, pEventData, pEventData->pEventData);
17594 WDI_ASSERT(0);
17595 return WDI_STATUS_E_FAILURE;
17596 }
17597
17598 /* Populate WDI structure members */
17599 wpalMemoryCopy(wdiOemDataRspParams->oemDataRsp, halStartOemDataRspParams->oemDataRsp, OEM_DATA_RSP_SIZE);
17600
17601 /*Notify UMAC*/
17602 wdiOemDataRspCb(wdiOemDataRspParams, pWDICtx->pRspCBUserData);
17603
17604 //Free memory allocated for WDI OEM_DATA MEAS RSP structure
17605 wpalMemoryFree(wdiOemDataRspParams);
17606
17607 return WDI_STATUS_SUCCESS;
17608}/*WDI_PrcoessStartOemDataRsp*/
17609#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070017610
17611/*===========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070017612 Miscellaneous Control Response Processing API
Jeff Johnson295189b2012-06-20 16:38:30 -070017613===========================================================================*/
17614
17615/**
17616 @brief Process Channel Switch Rsp function (called when a response
17617 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_ProcessChannelSwitchRsp
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_SwitchCHRspParamsType wdiSwitchChRsp;
17633 WDI_SwitchChRspCb wdiChSwitchRspCb;
17634 tSwitchChannelRspParams halSwitchChannelRsp;
17635 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17636
17637 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017638 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017639 -------------------------------------------------------------------------*/
17640 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17641 ( NULL == pEventData->pEventData))
17642 {
17643 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017644 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017645 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017646 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017647 }
17648
17649 wdiChSwitchRspCb = (WDI_SwitchChRspCb)pWDICtx->pfncRspCB;
17650
17651 /*-------------------------------------------------------------------------
17652 Extract response and send it to UMAC
17653 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017654 wpalMemoryCopy( &halSwitchChannelRsp,
Jeff Johnson295189b2012-06-20 16:38:30 -070017655 (wpt_uint8*)pEventData->pEventData,
17656 sizeof(halSwitchChannelRsp));
17657
Jeff Johnsone7245742012-09-05 17:12:55 -070017658 wdiSwitchChRsp.wdiStatus =
17659 WDI_HAL_2_WDI_STATUS(halSwitchChannelRsp.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070017660 wdiSwitchChRsp.ucChannel = halSwitchChannelRsp.channelNumber;
17661
17662#ifdef WLAN_FEATURE_VOWIFI
Jeff Johnsone7245742012-09-05 17:12:55 -070017663 wdiSwitchChRsp.ucTxMgmtPower = halSwitchChannelRsp.txMgmtPower;
Jeff Johnson295189b2012-06-20 16:38:30 -070017664#endif
17665
17666 /*Notify UMAC*/
17667 wdiChSwitchRspCb( &wdiSwitchChRsp, pWDICtx->pRspCBUserData);
17668
Jeff Johnsone7245742012-09-05 17:12:55 -070017669 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017670}/*WDI_ProcessChannelSwitchRsp*/
17671
Kalikinkar dhara1e83b772014-02-06 12:59:22 -080017672/**
17673 @brief Process Channel Switch Rsp function (called when a response
17674 is being received over the bus from HAL against
17675 WDI_ProcessChannelSwitchReq_V1)
17676
17677 @param pWDICtx: pointer to the WLAN DAL context
17678 pEventData: pointer to the event information structure
17679
17680 @see
17681 @return Result of the function call
17682*/
17683
17684WDI_Status
17685WDI_ProcessChannelSwitchRsp_V1
17686(
17687 WDI_ControlBlockType* pWDICtx,
17688 WDI_EventInfoType* pEventData
17689)
17690{
17691 WDI_SwitchChRspParamsType_V1 wdiSwitchChRsp;
17692 WDI_SwitchChRspCb_V1 wdiChSwitchRspCb;
17693 tSwitchChannelRspParams_V1 halSwitchChannelRsp;
17694 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17695
17696 /*-------------------------------------------------------------------------
17697 Sanity check
17698 -------------------------------------------------------------------------*/
17699 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17700 ( NULL == pEventData->pEventData))
17701 {
17702 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17703 "%s: Invalid parameters", __func__);
17704 WDI_ASSERT(0);
17705 return WDI_STATUS_E_FAILURE;
17706 }
17707
17708 wdiChSwitchRspCb = (WDI_SwitchChRspCb_V1)pWDICtx->pfncRspCB;
17709
17710 /*-------------------------------------------------------------------------
17711 Extract response and send it to UMAC
17712 -------------------------------------------------------------------------*/
17713 wpalMemoryCopy( &halSwitchChannelRsp,
17714 (wpt_uint8*)pEventData->pEventData,
17715 sizeof(halSwitchChannelRsp));
17716
17717 wdiSwitchChRsp.wdiStatus =
17718 WDI_HAL_2_WDI_STATUS(halSwitchChannelRsp.status);
17719 wdiSwitchChRsp.ucChannel = halSwitchChannelRsp.channelNumber;
17720
17721#ifdef WLAN_FEATURE_VOWIFI
17722 wdiSwitchChRsp.ucTxMgmtPower = halSwitchChannelRsp.txMgmtPower;
17723#endif
17724
17725 wdiSwitchChRsp.channelSwitchSrc = halSwitchChannelRsp.channelSwitchSrc;
17726 if (( NULL == wdiChSwitchRspCb ) )
17727 {
17728 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17729 "%s: ### Call back function is null", __func__);
17730 WDI_ASSERT(0);
17731 return WDI_STATUS_E_FAILURE;
17732 }
17733 /*Notify UMAC*/
17734 wdiChSwitchRspCb( &wdiSwitchChRsp, pWDICtx->pRspCBUserData);
17735
17736 return WDI_STATUS_SUCCESS;
17737}/*WDI_ProcessChannelSwitchRsp_V1*/
Jeff Johnson295189b2012-06-20 16:38:30 -070017738
17739/**
17740 @brief Process Config STA Rsp function (called when a response
17741 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017742
17743 @param pWDICtx: pointer to the WLAN DAL context
17744 pEventData: pointer to the event information structure
17745
Jeff Johnson295189b2012-06-20 16:38:30 -070017746 @see
17747 @return Result of the function call
17748*/
17749WDI_Status
17750WDI_ProcessConfigStaRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017751(
Jeff Johnson295189b2012-06-20 16:38:30 -070017752 WDI_ControlBlockType* pWDICtx,
17753 WDI_EventInfoType* pEventData
17754)
17755{
17756 WDI_ConfigSTARspParamsType wdiCfgSTAParams;
17757 WDI_ConfigSTARspCb wdiConfigSTARspCb;
17758 WDI_AddStaParams wdiAddSTAParam;
17759
17760 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070017761 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070017762
Jeff Johnsone7245742012-09-05 17:12:55 -070017763 tConfigStaRspMsg halConfigStaRsp;
Jeff Johnson295189b2012-06-20 16:38:30 -070017764 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17765
17766 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017767 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017768 -------------------------------------------------------------------------*/
17769 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17770 ( NULL == pEventData->pEventData))
17771 {
17772 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017773 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017774 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017775 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017776 }
17777
17778 wdiConfigSTARspCb = (WDI_ConfigSTARspCb)pWDICtx->pfncRspCB;
17779
17780 /*-------------------------------------------------------------------------
17781 Extract response and send it to UMAC
17782 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017783 wpalMemoryCopy( &halConfigStaRsp.configStaRspParams,
17784 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017785 sizeof(halConfigStaRsp.configStaRspParams));
17786
17787
17788 wdiCfgSTAParams.ucSTAIdx = halConfigStaRsp.configStaRspParams.staIdx;
17789 wdiCfgSTAParams.ucBssIdx = halConfigStaRsp.configStaRspParams.bssIdx;
17790 wdiCfgSTAParams.ucUcastSig = halConfigStaRsp.configStaRspParams.ucUcastSig;
17791 wdiCfgSTAParams.ucBcastSig = halConfigStaRsp.configStaRspParams.ucBcastSig;
17792 wdiCfgSTAParams.ucMgmtSig = halConfigStaRsp.configStaRspParams.ucMgmtSig;
17793
17794 /* MAC Address of STA - take from cache as it does not come back in the
17795 response*/
17796 wpalMemoryCopy( wdiCfgSTAParams.macSTA,
Jeff Johnsone7245742012-09-05 17:12:55 -070017797 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.macSTA,
Jeff Johnson295189b2012-06-20 16:38:30 -070017798 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070017799
17800 wdiCfgSTAParams.wdiStatus =
17801 WDI_HAL_2_WDI_STATUS(halConfigStaRsp.configStaRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070017802
17803 wdiCfgSTAParams.ucDpuIndex = halConfigStaRsp.configStaRspParams.dpuIndex;
17804 wdiCfgSTAParams.ucBcastDpuIndex = halConfigStaRsp.configStaRspParams.bcastDpuIndex;
17805 wdiCfgSTAParams.ucBcastMgmtDpuIdx = halConfigStaRsp.configStaRspParams.bcastMgmtDpuIdx;
17806
17807 if ( WDI_STATUS_SUCCESS == wdiCfgSTAParams.wdiStatus )
17808 {
17809 if ( WDI_ADD_STA == pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.wdiAction )
17810 {
17811 /* ADD STA to table */
Jeff Johnsone7245742012-09-05 17:12:55 -070017812 wdiAddSTAParam.ucSTAIdx = halConfigStaRsp.configStaRspParams.staIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070017813 wdiAddSTAParam.dpuSig = halConfigStaRsp.configStaRspParams.ucUcastSig;
17814 wdiAddSTAParam.dpuIndex = halConfigStaRsp.configStaRspParams.dpuIndex;
Jeff Johnsone7245742012-09-05 17:12:55 -070017815
Jeff Johnson295189b2012-06-20 16:38:30 -070017816 /*This info can be retrieved from the cached initial request*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017817 wdiAddSTAParam.ucWmmEnabled =
Jeff Johnson295189b2012-06-20 16:38:30 -070017818 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.ucWMMEnabled;
Jeff Johnsone7245742012-09-05 17:12:55 -070017819 wdiAddSTAParam.ucHTCapable =
17820 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.ucHTCapable;
17821 wdiAddSTAParam.ucStaType =
17822 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.wdiSTAType;
Chet Lanctot4b9abd72013-06-27 11:14:56 -070017823 wdiAddSTAParam.ucRmfEnabled =
17824 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.ucRMFEnabled;
Jeff Johnsone7245742012-09-05 17:12:55 -070017825
Jeff Johnson295189b2012-06-20 16:38:30 -070017826 /* MAC Address of STA */
Jeff Johnsone7245742012-09-05 17:12:55 -070017827 wpalMemoryCopy(wdiAddSTAParam.staMacAddr,
17828 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.macSTA,
Jeff Johnson295189b2012-06-20 16:38:30 -070017829 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070017830
17831 wpalMemoryCopy(wdiAddSTAParam.macBSSID,
17832 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.macBSSID ,
17833 WDI_MAC_ADDR_LEN);
17834
17835 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
17836 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.macBSSID,
17837 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070017838
17839 if ( NULL == pBSSSes )
17840 {
17841 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17842 "Association for this BSSID is not in place");
Jeff Johnsone7245742012-09-05 17:12:55 -070017843
Jeff Johnson295189b2012-06-20 16:38:30 -070017844 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017845 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070017846 }
17847
17848 /*Add BSS specific parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017849 wdiAddSTAParam.bcastMgmtDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070017850 halConfigStaRsp.configStaRspParams.bcastMgmtDpuIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070017851 wdiAddSTAParam.bcastMgmtDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070017852 halConfigStaRsp.configStaRspParams.ucMgmtSig;
Jeff Johnsone7245742012-09-05 17:12:55 -070017853 wdiAddSTAParam.bcastDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070017854 halConfigStaRsp.configStaRspParams.bcastDpuIndex;
Jeff Johnsone7245742012-09-05 17:12:55 -070017855 wdiAddSTAParam.bcastDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070017856 halConfigStaRsp.configStaRspParams.ucBcastSig;
Jeff Johnson295189b2012-06-20 16:38:30 -070017857 wdiAddSTAParam.ucBSSIdx = ucCurrentBSSSesIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070017858
Jeff Johnson295189b2012-06-20 16:38:30 -070017859 WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
17860 }
17861 if( WDI_UPDATE_STA == pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.wdiAction )
17862 {
17863 WDI_StaStruct* pSTATable = (WDI_StaStruct*) pWDICtx->staTable;
17864
Jeff Johnsone7245742012-09-05 17:12:55 -070017865 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bcastDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070017866 halConfigStaRsp.configStaRspParams.bcastDpuIndex;
Jeff Johnsone7245742012-09-05 17:12:55 -070017867 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bcastDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070017868 halConfigStaRsp.configStaRspParams.ucBcastSig;
Jeff Johnsone7245742012-09-05 17:12:55 -070017869 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bcastMgmtDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070017870 halConfigStaRsp.configStaRspParams.bcastMgmtDpuIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070017871 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bcastMgmtDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070017872 halConfigStaRsp.configStaRspParams.ucMgmtSig;
Jeff Johnsone7245742012-09-05 17:12:55 -070017873 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bssIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070017874 halConfigStaRsp.configStaRspParams.bssIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070017875 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].dpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070017876 halConfigStaRsp.configStaRspParams.dpuIndex;
Jeff Johnsone7245742012-09-05 17:12:55 -070017877 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].dpuSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070017878 halConfigStaRsp.configStaRspParams.ucUcastSig;
17879 }
17880 }
17881
17882 /*Notify UMAC*/
17883 wdiConfigSTARspCb( &wdiCfgSTAParams, pWDICtx->pRspCBUserData);
17884
Jeff Johnsone7245742012-09-05 17:12:55 -070017885 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017886}/*WDI_ProcessConfigStaRsp*/
17887
17888
17889/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017890 @brief Process Set Link State Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070017891 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017892
17893 @param pWDICtx: pointer to the WLAN DAL context
17894 pEventData: pointer to the event information structure
17895
Jeff Johnson295189b2012-06-20 16:38:30 -070017896 @see
17897 @return Result of the function call
17898*/
17899WDI_Status
17900WDI_ProcessSetLinkStateRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017901(
Jeff Johnson295189b2012-06-20 16:38:30 -070017902 WDI_ControlBlockType* pWDICtx,
17903 WDI_EventInfoType* pEventData
17904)
17905{
17906 WDI_Status wdiStatus;
17907 eHalStatus halStatus;
17908 WDI_SetLinkStateRspCb wdiSetLinkStateRspCb;
17909
17910 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070017911 wpt_uint8 ucCurrentBSSSesIdx = 0;
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 wdiSetLinkStateRspCb = (WDI_SetLinkStateRspCb)pWDICtx->pfncRspCB;
17927
17928 wpalMutexAcquire(&pWDICtx->wptMutex);
17929
17930 /*If the link is being transitioned to idle - the BSS is to be deleted
17931 - this type of ending a session is possible when UMAC has failed an
17932 - association session during Join*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017933 if ( WDI_LINK_IDLE_STATE ==
Jeff Johnson295189b2012-06-20 16:38:30 -070017934 pWDICtx->wdiCacheSetLinkStReq.wdiLinkInfo.wdiLinkState )
17935 {
17936 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017937 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070017938 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017939 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
17940 pWDICtx->wdiCacheSetLinkStReq.wdiLinkInfo.macBSSID,
17941 &pBSSSes);
17942
Jeff Johnson295189b2012-06-20 16:38:30 -070017943 /*-----------------------------------------------------------------------
17944 Del BSS response can only be received for an existing assoc that
Jeff Johnsone7245742012-09-05 17:12:55 -070017945 is current and in progress
Jeff Johnson295189b2012-06-20 16:38:30 -070017946 -----------------------------------------------------------------------*/
17947 if ( NULL == pBSSSes )
17948 {
17949 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
17950 "Set link response received outside association session");
17951 }
17952 else
17953 {
17954 /* For BT AMP roles no need to delete the sessions if assoc fails. There
17955 will be del BSS coming after this to stop the beaconing & cleaning up the
17956 sessions*/
17957 if(( WDI_BTAMP_STA_MODE != pBSSSes->wdiBssType )&&
17958 ( WDI_BTAMP_AP_MODE != pBSSSes->wdiBssType ))
17959 {
17960 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017961 The current session will be deleted
Jeff Johnson295189b2012-06-20 16:38:30 -070017962 -----------------------------------------------------------------------*/
17963 WDI_DeleteSession(pWDICtx, pBSSSes);
17964
17965 /*-----------------------------------------------------------------------
17966 Check to see if this association is in progress - if so disable the
17967 flag as this has ended
17968 -----------------------------------------------------------------------*/
17969 if ( ucCurrentBSSSesIdx == pWDICtx->ucCurrentBSSSesIdx )
Jeff Johnsone7245742012-09-05 17:12:55 -070017970 {
Jeff Johnson295189b2012-06-20 16:38:30 -070017971 /*Association no longer in progress */
17972 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
17973 /*Association no longer in progress - prepare pending assoc for processing*/
17974 WDI_DequeueAssocRequest(pWDICtx);
17975 }
17976 }
17977 }
17978 }
17979 /* If the link state has been set to POST ASSOC, reset the "association in
17980 progress" flag */
Jeff Johnsone7245742012-09-05 17:12:55 -070017981 if ( WDI_LINK_POSTASSOC_STATE ==
Jeff Johnson295189b2012-06-20 16:38:30 -070017982 pWDICtx->wdiCacheSetLinkStReq.wdiLinkInfo.wdiLinkState )
17983 {
17984 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
17985 WDI_DequeueAssocRequest(pWDICtx);
17986 }
17987
17988 wpalMutexRelease(&pWDICtx->wptMutex);
17989
17990 /*-------------------------------------------------------------------------
17991 Extract response and send it to UMAC
17992 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017993 wpalMemoryCopy( &halStatus,
17994 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017995 sizeof(halStatus));
17996
Jeff Johnsone7245742012-09-05 17:12:55 -070017997 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017998
17999 /*Notify UMAC*/
18000 wdiSetLinkStateRspCb( wdiStatus, pWDICtx->pRspCBUserData);
18001
Jeff Johnsone7245742012-09-05 17:12:55 -070018002 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018003}/*WDI_ProcessSetLinkStateRsp*/
18004
18005/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018006 @brief Process Get Stats Rsp function (called when a response is
Jeff Johnson295189b2012-06-20 16:38:30 -070018007 being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018008
18009 @param pWDICtx: pointer to the WLAN DAL context
18010 pEventData: pointer to the event information structure
18011
Jeff Johnson295189b2012-06-20 16:38:30 -070018012 @see
18013 @return Result of the function call
18014*/
18015WDI_Status
18016WDI_ProcessGetStatsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018017(
Jeff Johnson295189b2012-06-20 16:38:30 -070018018 WDI_ControlBlockType* pWDICtx,
18019 WDI_EventInfoType* pEventData
18020)
18021{
18022 WDI_GetStatsRspParamsType *wdiGetStatsRsp;
18023 WDI_GetStatsRspCb wdiGetStatsRspCb;
18024 tHalStatsRspParams* pHalStatsRspParams;
Jeff Johnsone7245742012-09-05 17:12:55 -070018025
Jeff Johnson295189b2012-06-20 16:38:30 -070018026 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18027
18028 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018029 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018030 -------------------------------------------------------------------------*/
18031 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18032 ( NULL == pEventData->pEventData))
18033 {
18034 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018035 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018036 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018037 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018038 }
18039
18040 /*-------------------------------------------------------------------------
18041 Extract response and send it to UMAC
18042 -------------------------------------------------------------------------*/
18043 pHalStatsRspParams = (tHalStatsRspParams *)pEventData->pEventData;
18044
18045 /*allocate the stats response buffer */
18046 wdiGetStatsRsp = (WDI_GetStatsRspParamsType *)wpalMemoryAllocate(
18047 pHalStatsRspParams->msgLen - sizeof(tHalStatsRspParams)
18048 + sizeof(WDI_GetStatsRspParamsType));
18049
18050 if(NULL == wdiGetStatsRsp)
18051 {
18052 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080018053 "Failed to allocate memory in Get Stats Response %p %p %p ",
Jeff Johnson295189b2012-06-20 16:38:30 -070018054 pWDICtx, pEventData, pEventData->pEventData);
18055 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018056 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018057 }
18058
18059 wdiGetStatsRspCb = (WDI_GetStatsRspCb)pWDICtx->pfncRspCB;
18060
18061 wpalMemoryZero(wdiGetStatsRsp, pHalStatsRspParams->msgLen);
18062 wdiGetStatsRsp->usMsgType = pHalStatsRspParams->msgType;
18063 wdiGetStatsRsp->usMsgLen = pHalStatsRspParams->msgLen;
18064 wdiGetStatsRsp->wdiStatus = WDI_HAL_2_WDI_STATUS(pHalStatsRspParams->status);
18065 wdiGetStatsRsp->ucSTAIdx = pHalStatsRspParams->staId;
18066 wdiGetStatsRsp->uStatsMask = pHalStatsRspParams->statsMask;
18067
18068 /* copy the stats from buffer at the end of the tHalStatsRspParams message */
18069 wpalMemoryCopy(wdiGetStatsRsp + 1,
18070 (wpt_uint8*)pEventData->pEventData + sizeof(tHalStatsRspParams),
18071 pHalStatsRspParams->msgLen - sizeof(tHalStatsRspParams));
18072
18073 /*Notify UMAC*/
18074 wdiGetStatsRspCb( wdiGetStatsRsp, pWDICtx->pRspCBUserData);
18075
18076 wpalMemoryFree(wdiGetStatsRsp);
18077
Jeff Johnsone7245742012-09-05 17:12:55 -070018078 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018079}/*WDI_ProcessGetStatsRsp*/
18080
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -080018081#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_ESE || defined(FEATURE_WLAN_LFR)
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -080018082/**
18083 @brief Process Get Roam Rssi Rsp function (called when a response is
18084 being received over the bus from HAL)
18085
18086 @param pWDICtx: pointer to the WLAN DAL context
18087 pEventData: pointer to the event information structure
18088
18089 @see
18090 @return Result of the function call
18091*/
18092WDI_Status
18093WDI_ProcessGetRoamRssiRsp
18094(
18095 WDI_ControlBlockType* pWDICtx,
18096 WDI_EventInfoType* pEventData
18097)
18098{
18099 WDI_GetRoamRssiRspParamsType wdiGetRoamRssiRsp;
18100 WDI_GetRoamRssiRspCb wdiGetRoamRssiRspCb;
18101 tHalGetRoamRssiRspMsg halRoamRssiRspParams;
18102 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18103
18104 /*-------------------------------------------------------------------------
18105 Sanity check
18106 -------------------------------------------------------------------------*/
18107 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18108 ( NULL == pEventData->pEventData))
18109 {
18110 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
18111 "%s: Invalid parameters", __func__);
18112 WDI_ASSERT(0);
18113 return WDI_STATUS_E_FAILURE;
18114 }
18115
18116 wdiGetRoamRssiRspCb = (WDI_GetRoamRssiRspCb)pWDICtx->pfncRspCB;
18117 if(NULL == wdiGetRoamRssiRspCb)
18118 {
18119 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
18120 "%s: call back function is NULL", __func__);
18121 WDI_ASSERT(0);
18122 return WDI_STATUS_E_FAILURE;
18123 }
18124
18125 /*-------------------------------------------------------------------------
18126 Extract response and send it to UMAC
18127 -------------------------------------------------------------------------*/
18128 wpalMemoryCopy( &halRoamRssiRspParams.roamRssiRspParams,
18129 pEventData->pEventData,
18130 sizeof(halRoamRssiRspParams.roamRssiRspParams));
18131
18132 wdiGetRoamRssiRsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halRoamRssiRspParams.roamRssiRspParams.status);
18133 wdiGetRoamRssiRsp.ucSTAIdx = halRoamRssiRspParams.roamRssiRspParams.staId;
18134 wdiGetRoamRssiRsp.rssi = halRoamRssiRspParams.roamRssiRspParams.rssi;
18135
18136 /*Notify UMAC*/
18137 wdiGetRoamRssiRspCb( &wdiGetRoamRssiRsp, pWDICtx->pRspCBUserData);
18138
18139 return WDI_STATUS_SUCCESS;
18140}/*WDI_ProcessGetRoamRssiRsp*/
18141#endif
18142
Jeff Johnson295189b2012-06-20 16:38:30 -070018143
18144/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018145 @brief Process Update Cfg Rsp function (called when a response is
Jeff Johnson295189b2012-06-20 16:38:30 -070018146 being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018147
18148 @param pWDICtx: pointer to the WLAN DAL context
18149 pEventData: pointer to the event information structure
18150
Jeff Johnson295189b2012-06-20 16:38:30 -070018151 @see
18152 @return Result of the function call
18153*/
18154WDI_Status
18155WDI_ProcessUpdateCfgRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018156(
Jeff Johnson295189b2012-06-20 16:38:30 -070018157 WDI_ControlBlockType* pWDICtx,
18158 WDI_EventInfoType* pEventData
18159)
18160{
18161 WDI_Status wdiStatus;
18162 eHalStatus halStatus;
18163 WDI_UpdateCfgRspCb wdiUpdateCfgRspCb;
18164 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18165
18166 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018167 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018168 -------------------------------------------------------------------------*/
18169 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18170 ( NULL == pEventData->pEventData))
18171 {
18172 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018173 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018174 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018175 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018176 }
18177
18178 wdiUpdateCfgRspCb = (WDI_UpdateCfgRspCb)pWDICtx->pfncRspCB;
18179
18180 /*-------------------------------------------------------------------------
18181 Extract response and send it to UMAC
18182 -------------------------------------------------------------------------*/
18183 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070018184 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018185
18186 /*Notify UMAC*/
18187 wdiUpdateCfgRspCb( wdiStatus, pWDICtx->pRspCBUserData);
18188
Jeff Johnsone7245742012-09-05 17:12:55 -070018189 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018190}/*WDI_ProcessUpdateCfgRsp*/
18191
18192
18193
18194/**
18195 @brief Process Add BA Rsp function (called when a response
18196 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018197
18198 @param pWDICtx: pointer to the WLAN DAL context
18199 pEventData: pointer to the event information structure
18200
Jeff Johnson295189b2012-06-20 16:38:30 -070018201 @see
18202 @return Result of the function call
18203*/
18204WDI_Status
18205WDI_ProcessAddBARsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018206(
Jeff Johnson295189b2012-06-20 16:38:30 -070018207 WDI_ControlBlockType* pWDICtx,
18208 WDI_EventInfoType* pEventData
18209)
18210{
18211 WDI_AddBARspCb wdiAddBARspCb;
18212
18213 tAddBARspParams halAddBARsp;
18214 WDI_AddBARspinfoType wdiAddBARsp;
18215
18216 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18217
18218 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018219 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018220 -------------------------------------------------------------------------*/
18221 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18222 ( NULL == pEventData->pEventData))
18223 {
18224 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018225 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018226 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018227 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018228 }
18229
18230 wdiAddBARspCb = (WDI_AddBARspCb)pWDICtx->pfncRspCB;
18231
18232 /*-------------------------------------------------------------------------
18233 Extract response and send it to UMAC
18234 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018235 wpalMemoryCopy( &halAddBARsp,
18236 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070018237 sizeof(halAddBARsp));
18238
18239 wdiAddBARsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halAddBARsp.status);
18240
Jeff Johnson43971f52012-07-17 12:26:56 -070018241 if ( WDI_STATUS_SUCCESS == wdiAddBARsp.wdiStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070018242 {
18243 wdiAddBARsp.ucBaDialogToken = halAddBARsp.baDialogToken;
18244 }
18245
18246 /*Notify UMAC*/
18247 wdiAddBARspCb( &wdiAddBARsp, pWDICtx->pRspCBUserData);
18248
Jeff Johnsone7245742012-09-05 17:12:55 -070018249 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018250}/*WDI_ProcessAddSessionBARsp*/
18251
18252/**
18253 @brief Process Add BA Rsp function (called when a response
18254 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018255
18256 @param pWDICtx: pointer to the WLAN DAL context
18257 pEventData: pointer to the event information structure
18258
Jeff Johnson295189b2012-06-20 16:38:30 -070018259 @see
18260 @return Result of the function call
18261*/
18262WDI_Status
18263WDI_ProcessTriggerBARsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018264(
Jeff Johnson295189b2012-06-20 16:38:30 -070018265 WDI_ControlBlockType* pWDICtx,
18266 WDI_EventInfoType* pEventData
18267)
18268{
18269 WDI_TriggerBARspCb wdiTriggerBARspCb;
18270
18271 tTriggerBARspParams* halTriggerBARsp;
18272 tTriggerBaRspCandidate* halBaCandidate;
18273 WDI_TriggerBARspParamsType* wdiTriggerBARsp;
18274 WDI_TriggerBARspCandidateType* wdiTriggerBARspCandidate;
18275 wpt_uint16 index;
18276 wpt_uint16 TidIndex;
Tushnim Bhattacharyyaf64c5dc2013-03-21 15:11:31 -070018277 WDI_Status halTriggerBARspStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070018278 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18279
18280 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018281 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018282 -------------------------------------------------------------------------*/
18283 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18284 ( NULL == pEventData->pEventData))
18285 {
18286 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018287 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018288 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018289 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018290 }
18291
18292 wdiTriggerBARspCb = (WDI_TriggerBARspCb)pWDICtx->pfncRspCB;
18293
18294 /*-------------------------------------------------------------------------
18295 Extract response and send it to UMAC
18296 -------------------------------------------------------------------------*/
18297 halTriggerBARsp = (tTriggerBARspParams *)pEventData->pEventData;
18298
Tushnim Bhattacharyyaf64c5dc2013-03-21 15:11:31 -070018299 halTriggerBARspStatus = WDI_HAL_2_WDI_STATUS(halTriggerBARsp->status);
18300
18301 if ( WDI_STATUS_SUCCESS == halTriggerBARspStatus)
18302 {
18303 wdiTriggerBARsp = wpalMemoryAllocate(sizeof(WDI_TriggerBARspParamsType) +
Jeff Johnsone7245742012-09-05 17:12:55 -070018304 halTriggerBARsp->baCandidateCnt *
Jeff Johnson295189b2012-06-20 16:38:30 -070018305 sizeof(WDI_TriggerBARspCandidateType));
Jeff Johnson295189b2012-06-20 16:38:30 -070018306
Tushnim Bhattacharyyaf64c5dc2013-03-21 15:11:31 -070018307 if(NULL == wdiTriggerBARsp)
18308 {
18309 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080018310 "Failed to allocate memory in Trigger BA Response %p %p %p ",
Tushnim Bhattacharyyaf64c5dc2013-03-21 15:11:31 -070018311 pWDICtx, pEventData, pEventData->pEventData);
18312 WDI_ASSERT(0);
18313 return WDI_STATUS_E_FAILURE;
18314 }
Jeff Johnson295189b2012-06-20 16:38:30 -070018315
Tushnim Bhattacharyyaf64c5dc2013-03-21 15:11:31 -070018316 wdiTriggerBARsp->wdiStatus = halTriggerBARspStatus;
18317
Jeff Johnson295189b2012-06-20 16:38:30 -070018318 wdiTriggerBARsp->usBaCandidateCnt = halTriggerBARsp->baCandidateCnt;
Jeff Johnsone7245742012-09-05 17:12:55 -070018319 wpalMemoryCopy(wdiTriggerBARsp->macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -070018320 halTriggerBARsp->bssId , WDI_MAC_ADDR_LEN);
18321
18322 wdiTriggerBARspCandidate = (WDI_TriggerBARspCandidateType*)(wdiTriggerBARsp + 1);
18323 halBaCandidate = (tTriggerBaRspCandidate*)(halTriggerBARsp + 1);
18324
18325 for(index = 0; index < wdiTriggerBARsp->usBaCandidateCnt; index++)
18326 {
Jeff Johnsone7245742012-09-05 17:12:55 -070018327 wpalMemoryCopy(wdiTriggerBARspCandidate->macSTA,
Jeff Johnson295189b2012-06-20 16:38:30 -070018328 halBaCandidate->staAddr, WDI_MAC_ADDR_LEN);
18329 for(TidIndex = 0; TidIndex < STA_MAX_TC; TidIndex++)
18330 {
Jeff Johnsone7245742012-09-05 17:12:55 -070018331 wdiTriggerBARspCandidate->wdiBAInfo[TidIndex].fBaEnable =
Jeff Johnson295189b2012-06-20 16:38:30 -070018332 halBaCandidate->baInfo[TidIndex].fBaEnable;
Jeff Johnsone7245742012-09-05 17:12:55 -070018333 wdiTriggerBARspCandidate->wdiBAInfo[TidIndex].startingSeqNum =
Jeff Johnson295189b2012-06-20 16:38:30 -070018334 halBaCandidate->baInfo[TidIndex].startingSeqNum;
18335 }
18336 wdiTriggerBARspCandidate++;
18337 halBaCandidate++;
18338 }
18339 }
Tushnim Bhattacharyyaf64c5dc2013-03-21 15:11:31 -070018340 else
18341 {
18342 wdiTriggerBARsp = wpalMemoryAllocate(sizeof(WDI_TriggerBARspParamsType));
18343
18344 if(NULL == wdiTriggerBARsp)
18345 {
18346 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080018347 "Failed to allocate memory in Trigger BA Response %p %p %p ",
Tushnim Bhattacharyyaf64c5dc2013-03-21 15:11:31 -070018348 pWDICtx, pEventData, pEventData->pEventData);
18349 WDI_ASSERT(0);
18350 return WDI_STATUS_E_FAILURE;
18351 }
18352
18353 wdiTriggerBARsp->wdiStatus = halTriggerBARspStatus;
18354
18355 }
Jeff Johnson295189b2012-06-20 16:38:30 -070018356
18357 /*Notify UMAC*/
18358 wdiTriggerBARspCb( wdiTriggerBARsp, pWDICtx->pRspCBUserData);
18359
18360 wpalMemoryFree(wdiTriggerBARsp);
Jeff Johnsone7245742012-09-05 17:12:55 -070018361 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018362}/*WDI_ProcessAddSessionBARsp*/
18363
18364/**
18365 @brief Process Update Beacon Params Rsp function (called when a response
18366 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018367
18368 @param pWDICtx: pointer to the WLAN DAL context
18369 pEventData: pointer to the event information structure
18370
Jeff Johnson295189b2012-06-20 16:38:30 -070018371 @see
18372 @return Result of the function call
18373*/
18374WDI_Status
18375WDI_ProcessUpdateBeaconParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018376(
Jeff Johnson295189b2012-06-20 16:38:30 -070018377 WDI_ControlBlockType* pWDICtx,
18378 WDI_EventInfoType* pEventData
18379)
18380{
18381 WDI_Status wdiStatus;
18382 eHalStatus halStatus;
18383 WDI_UpdateBeaconParamsRspCb wdiUpdateBeaconParamsRspCb;
18384 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18385
18386 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018387 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018388 -------------------------------------------------------------------------*/
18389 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18390 ( NULL == pEventData->pEventData))
18391 {
18392 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018393 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018394 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018395 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018396 }
18397
18398 wdiUpdateBeaconParamsRspCb = (WDI_UpdateBeaconParamsRspCb)pWDICtx->pfncRspCB;
18399
18400 /*-------------------------------------------------------------------------
18401 Extract response and send it to UMAC
18402 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018403 wpalMemoryCopy( &halStatus,
18404 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070018405 sizeof(halStatus));
18406
Jeff Johnsone7245742012-09-05 17:12:55 -070018407 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018408
18409 /*Notify UMAC*/
18410 wdiUpdateBeaconParamsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
18411
Jeff Johnsone7245742012-09-05 17:12:55 -070018412 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018413}/*WDI_ProcessUpdateBeaconParamsRsp*/
18414
18415/**
18416 @brief Process Send Beacon template Rsp function (called when a response
18417 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018418
18419 @param pWDICtx: pointer to the WLAN DAL context
18420 pEventData: pointer to the event information structure
18421
Jeff Johnson295189b2012-06-20 16:38:30 -070018422 @see
18423 @return Result of the function call
18424*/
18425WDI_Status
18426WDI_ProcessSendBeaconParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018427(
Jeff Johnson295189b2012-06-20 16:38:30 -070018428 WDI_ControlBlockType* pWDICtx,
18429 WDI_EventInfoType* pEventData
18430)
18431{
18432 WDI_Status wdiStatus;
18433 eHalStatus halStatus;
18434 WDI_SendBeaconParamsRspCb wdiSendBeaconParamsRspCb;
18435 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18436
18437 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018438 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018439 -------------------------------------------------------------------------*/
18440 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18441 ( NULL == pEventData->pEventData))
18442 {
18443 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018444 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018445 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018446 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018447 }
18448
18449 wdiSendBeaconParamsRspCb = (WDI_SendBeaconParamsRspCb)pWDICtx->pfncRspCB;
18450
18451 /*-------------------------------------------------------------------------
18452 Extract response and send it to UMAC
18453 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018454 wpalMemoryCopy( &halStatus,
18455 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070018456 sizeof(halStatus));
18457
Jeff Johnsone7245742012-09-05 17:12:55 -070018458 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018459
18460 /*Notify UMAC*/
18461 wdiSendBeaconParamsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
18462
Jeff Johnsone7245742012-09-05 17:12:55 -070018463 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018464}/*WDI_ProcessSendBeaconParamsRsp*/
18465
Jeff Johnsone7245742012-09-05 17:12:55 -070018466
Jeff Johnson295189b2012-06-20 16:38:30 -070018467/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018468 @brief Process Update Probe Resp Template Rsp function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070018469 when a response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018470
18471 @param pWDICtx: pointer to the WLAN DAL context
18472 pEventData: pointer to the event information structure
18473
Jeff Johnson295189b2012-06-20 16:38:30 -070018474 @see
18475 @return Result of the function call
18476*/
18477WDI_Status
18478WDI_ProcessUpdateProbeRspTemplateRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018479(
Jeff Johnson295189b2012-06-20 16:38:30 -070018480 WDI_ControlBlockType* pWDICtx,
18481 WDI_EventInfoType* pEventData
18482)
18483{
18484 WDI_Status wdiStatus;
18485 eHalStatus halStatus;
18486 WDI_UpdateProbeRspTemplateRspCb wdiUpdProbeRspTemplRspCb;
18487 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18488
18489 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018490 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018491 -------------------------------------------------------------------------*/
18492 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18493 ( NULL == pEventData->pEventData))
18494 {
18495 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018496 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018497 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018498 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018499 }
18500
18501 wdiUpdProbeRspTemplRspCb = (WDI_UpdateProbeRspTemplateRspCb)pWDICtx->pfncRspCB;
18502
18503 /*-------------------------------------------------------------------------
18504 Extract response and send it to UMAC
18505 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018506 wpalMemoryCopy( &halStatus,
18507 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070018508 sizeof(halStatus));
18509
Jeff Johnsone7245742012-09-05 17:12:55 -070018510 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018511
18512 /*Notify UMAC*/
18513 wdiUpdProbeRspTemplRspCb( wdiStatus, pWDICtx->pRspCBUserData);
18514
Jeff Johnsone7245742012-09-05 17:12:55 -070018515 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018516}/*WDI_ProcessUpdateProbeRspTemplateRsp*/
18517
18518 /**
18519 @brief Process Set Max Tx Power Rsp function (called when a response
18520 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018521
18522 @param pWDICtx: pointer to the WLAN DAL context
18523 pEventData: pointer to the event information structure
18524
Jeff Johnson295189b2012-06-20 16:38:30 -070018525 @see
18526 @return Result of the function call
18527*/
18528WDI_Status
18529WDI_ProcessSetMaxTxPowerRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018530(
Jeff Johnson295189b2012-06-20 16:38:30 -070018531 WDI_ControlBlockType* pWDICtx,
18532 WDI_EventInfoType* pEventData
18533)
18534{
18535 tSetMaxTxPwrRspMsg halTxpowerrsp;
Jeff Johnsone7245742012-09-05 17:12:55 -070018536
Jeff Johnson295189b2012-06-20 16:38:30 -070018537 WDI_SetMaxTxPowerRspMsg wdiSetMaxTxPowerRspMsg;
Jeff Johnsone7245742012-09-05 17:12:55 -070018538
Jeff Johnson295189b2012-06-20 16:38:30 -070018539 WDA_SetMaxTxPowerRspCb wdiReqStatusCb;
18540 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18541
18542 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018543 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018544 -------------------------------------------------------------------------*/
18545 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18546 ( NULL == pEventData->pEventData))
18547 {
18548 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018549 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018550 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018551 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018552 }
18553
18554 wdiReqStatusCb = (WDA_SetMaxTxPowerRspCb)pWDICtx->pfncRspCB;
18555
18556 /*-------------------------------------------------------------------------
18557 Extract response and send it to UMAC
18558 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018559 wpalMemoryCopy( &halTxpowerrsp.setMaxTxPwrRspParams,
18560 pEventData->pEventData,
18561 sizeof(halTxpowerrsp.setMaxTxPwrRspParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070018562
18563 if ( eHAL_STATUS_SUCCESS != halTxpowerrsp.setMaxTxPwrRspParams.status )
18564 {
18565 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
18566 "Error status returned in Set Max Tx Power Response ");
Jeff Johnsone7245742012-09-05 17:12:55 -070018567 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018568 }
18569
Jeff Johnsone7245742012-09-05 17:12:55 -070018570 wdiSetMaxTxPowerRspMsg.wdiStatus =
Jeff Johnson295189b2012-06-20 16:38:30 -070018571 WDI_HAL_2_WDI_STATUS(halTxpowerrsp.setMaxTxPwrRspParams.status);
Jeff Johnsone7245742012-09-05 17:12:55 -070018572 wdiSetMaxTxPowerRspMsg.ucPower = halTxpowerrsp.setMaxTxPwrRspParams.power;
Jeff Johnson295189b2012-06-20 16:38:30 -070018573
18574 /*Notify UMAC*/
18575 wdiReqStatusCb( &wdiSetMaxTxPowerRspMsg, pWDICtx->pRspCBUserData);
18576
Jeff Johnsone7245742012-09-05 17:12:55 -070018577 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018578}
18579
schang86c22c42013-03-13 18:41:24 -070018580 /**
18581 @brief Process Set Tx Power Rsp function (called when a response
18582 is being received over the bus from HAL)
18583
18584 @param pWDICtx: pointer to the WLAN DAL context
18585 pEventData: pointer to the event information structure
18586
18587 @see
18588 @return Result of the function call
18589*/
18590WDI_Status
18591WDI_ProcessSetTxPowerRsp
18592(
18593 WDI_ControlBlockType* pWDICtx,
18594 WDI_EventInfoType* pEventData
18595)
18596{
18597 tSetTxPwrRspMsg halTxpowerrsp;
18598 WDI_SetTxPowerRspMsg wdiSetTxPowerRspMsg;
18599 WDA_SetTxPowerRspCb wdiReqStatusCb;
18600 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18601
18602 /*-------------------------------------------------------------------------
18603 Sanity check
18604 -------------------------------------------------------------------------*/
18605 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18606 ( NULL == pEventData->pEventData))
18607 {
18608 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
18609 "%s: Invalid parameters", __func__);
18610 WDI_ASSERT(0);
18611 return WDI_STATUS_E_FAILURE;
18612 }
18613
18614 wdiReqStatusCb = (WDA_SetTxPowerRspCb)pWDICtx->pfncRspCB;
18615
18616 /*-------------------------------------------------------------------------
18617 Extract response and send it to UMAC
18618 -------------------------------------------------------------------------*/
18619 wpalMemoryCopy(&halTxpowerrsp.setTxPwrRspParams,
18620 pEventData->pEventData,
18621 sizeof(halTxpowerrsp.setTxPwrRspParams));
18622
18623 if (eHAL_STATUS_SUCCESS != halTxpowerrsp.setTxPwrRspParams.status)
18624 {
18625 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
18626 "Error status returned in Set Tx Power Response ");
18627 WDI_DetectedDeviceError(pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
18628 return WDI_STATUS_E_FAILURE;
18629 }
18630
18631 wdiSetTxPowerRspMsg.wdiStatus =
18632 WDI_HAL_2_WDI_STATUS(halTxpowerrsp.setTxPwrRspParams.status);
18633
18634 /*Notify UMAC*/
18635 wdiReqStatusCb(&wdiSetTxPowerRspMsg, pWDICtx->pRspCBUserData);
18636
18637 return WDI_STATUS_SUCCESS;
18638}
Arif Hussain935a8fb2014-01-31 12:12:28 -080018639
18640/**
18641 @brief Process Set Max Tx Power Per Band Rsp function (called when a response
18642 is being received over the bus from HAL)
18643
18644 @param pWDICtx: pointer to the WLAN DAL context
18645 pEventData: pointer to the event information structure
18646
18647 @see
18648 @return Result of the function call
18649*/
18650WDI_Status
18651WDI_ProcessSetMaxTxPowerPerBandRsp
18652(
18653 WDI_ControlBlockType* pWDICtx,
18654 WDI_EventInfoType* pEventData
18655)
18656{
18657 tSetMaxTxPwrPerBandRspMsg halMaxTxPowerPerBandRsp;
18658 WDI_SetMaxTxPowerPerBandRspMsg wdiSetTxPowerPerBandRspMsg;
18659 WDA_SetMaxTxPowerPerBandRspCb wdiReqStatusCb;
18660 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18661
18662 /*-------------------------------------------------------------------------
18663 Sanity check
18664 -------------------------------------------------------------------------*/
18665 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18666 ( NULL == pEventData->pEventData))
18667 {
18668 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
18669 "%s: Invalid parameters", __func__);
18670 WDI_ASSERT(0);
18671 return WDI_STATUS_E_FAILURE;
18672 }
18673
18674 wdiReqStatusCb = (WDA_SetMaxTxPowerPerBandRspCb)pWDICtx->pfncRspCB;
18675
18676 /*-------------------------------------------------------------------------
18677 Extract response and send it to UMAC
18678 -------------------------------------------------------------------------*/
18679 wpalMemoryCopy(&halMaxTxPowerPerBandRsp.setMaxTxPwrPerBandRspParams,
18680 pEventData->pEventData,
18681 sizeof(halMaxTxPowerPerBandRsp.setMaxTxPwrPerBandRspParams));
18682
18683 if (eHAL_STATUS_SUCCESS !=
18684 halMaxTxPowerPerBandRsp.setMaxTxPwrPerBandRspParams.status)
18685 {
18686 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
18687 "Error status returned in Set Max Tx Power Per Band Response");
18688 return WDI_STATUS_E_FAILURE;
18689 }
18690
18691 wdiSetTxPowerPerBandRspMsg.wdiStatus =
18692 WDI_HAL_2_WDI_STATUS(
18693 halMaxTxPowerPerBandRsp.setMaxTxPwrPerBandRspParams.status);
18694
18695 /* Notify UMAC */
18696 wdiReqStatusCb(&wdiSetTxPowerPerBandRspMsg, pWDICtx->pRspCBUserData);
18697
18698 return WDI_STATUS_SUCCESS;
18699}
18700
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053018701#ifdef FEATURE_WLAN_TDLS
18702/**
18703 @brief Process TDLS Link Establish Rsp function (called
18704 when a response is being received over the bus from HAL)
18705
18706 @param pWDICtx: pointer to the WLAN DAL context
18707 pEventData: pointer to the event information structure
18708
18709 @see
18710 @return Result of the function call
18711*/
18712WDI_Status
18713WDI_ProcessLinkEstablishReqRsp
18714(
18715 WDI_ControlBlockType* pWDICtx,
18716 WDI_EventInfoType* pEventData
18717)
18718{
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053018719 eHalStatus halStatus;
18720 WDI_SetTDLSLinkEstablishReqParamsRspCb wdiTDLSLinkEstablishReqParamsRspCb;
Gopichand Nakkala574f6d12013-06-27 19:38:43 +053018721 tTDLSLinkEstablishedRespMsg halTdlsLinkEstablishedRespMsg;
18722 WDI_SetTdlsLinkEstablishReqResp wdiSetTdlsLinkEstablishReqResp;
18723
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053018724 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18725
18726 /*-------------------------------------------------------------------------
18727 Sanity check
18728 -------------------------------------------------------------------------*/
18729 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18730 ( NULL == pEventData->pEventData))
18731 {
18732 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
18733 "%s: Invalid parameters", __func__);
18734 WDI_ASSERT(0);
18735 return WDI_STATUS_E_FAILURE;
18736 }
18737
Gopichand Nakkala574f6d12013-06-27 19:38:43 +053018738 /*-------------------------------------------------------------------------
18739 Extract indication and send it to UMAC
18740 -------------------------------------------------------------------------*/
18741 wpalMemoryCopy( &halTdlsLinkEstablishedRespMsg.TDLSLinkEstablishedRespParams,
18742 pEventData->pEventData,
18743 sizeof(halTdlsLinkEstablishedRespMsg.TDLSLinkEstablishedRespParams) );
18744
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053018745 wdiTDLSLinkEstablishReqParamsRspCb = (WDI_SetTDLSLinkEstablishReqParamsRspCb)pWDICtx->pfncRspCB;
18746
18747 /*-------------------------------------------------------------------------
18748 Extract response and send it to UMAC
18749 -------------------------------------------------------------------------*/
18750 wpalMemoryCopy( &halStatus,
18751 pEventData->pEventData,
18752 sizeof(halStatus));
18753
Gopichand Nakkala574f6d12013-06-27 19:38:43 +053018754 wdiSetTdlsLinkEstablishReqResp.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
18755 wdiSetTdlsLinkEstablishReqResp.uStaIdx = halTdlsLinkEstablishedRespMsg.TDLSLinkEstablishedRespParams.staIdx;
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053018756
18757 /*Notify UMAC*/
Gopichand Nakkala574f6d12013-06-27 19:38:43 +053018758 wdiTDLSLinkEstablishReqParamsRspCb( &wdiSetTdlsLinkEstablishReqResp, pWDICtx->pRspCBUserData);
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053018759
18760 return WDI_STATUS_SUCCESS;
18761}/*WDI_ProcessLinkEstablishReqRsp*/
18762#endif
schang86c22c42013-03-13 18:41:24 -070018763
Jeff Johnson295189b2012-06-20 16:38:30 -070018764/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018765 @brief Process P2P Group Owner Notice Of Absense Rsp function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070018766 when a response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018767
18768 @param pWDICtx: pointer to the WLAN DAL context
18769 pEventData: pointer to the event information structure
18770
Jeff Johnson295189b2012-06-20 16:38:30 -070018771 @see
18772 @return Result of the function call
18773*/
18774WDI_Status
18775WDI_ProcessP2PGONOARsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018776(
Jeff Johnson295189b2012-06-20 16:38:30 -070018777 WDI_ControlBlockType* pWDICtx,
18778 WDI_EventInfoType* pEventData
18779)
18780{
18781 WDI_Status wdiStatus;
18782 eHalStatus halStatus;
18783 WDI_SetP2PGONOAReqParamsRspCb wdiP2PGONOAReqParamsRspCb;
18784 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18785
18786 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018787 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018788 -------------------------------------------------------------------------*/
18789 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18790 ( NULL == pEventData->pEventData))
18791 {
18792 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018793 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018794 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018795 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018796 }
18797
18798 wdiP2PGONOAReqParamsRspCb = (WDI_SetP2PGONOAReqParamsRspCb)pWDICtx->pfncRspCB;
18799
18800 /*-------------------------------------------------------------------------
18801 Extract response and send it to UMAC
18802 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018803 wpalMemoryCopy( &halStatus,
18804 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070018805 sizeof(halStatus));
18806
Jeff Johnsone7245742012-09-05 17:12:55 -070018807 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018808
18809 /*Notify UMAC*/
18810 wdiP2PGONOAReqParamsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
18811
Jeff Johnsone7245742012-09-05 17:12:55 -070018812 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018813}/*WDI_ProcessP2PGONOARsp*/
Jeff Johnson295189b2012-06-20 16:38:30 -070018814/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018815 @brief Process Enter IMPS Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070018816 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018817
18818 @param pWDICtx: pointer to the WLAN DAL context
18819 pEventData: pointer to the event information structure
18820
Jeff Johnson295189b2012-06-20 16:38:30 -070018821 @see
18822 @return Result of the function call
18823*/
18824WDI_Status
18825WDI_ProcessEnterImpsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018826(
Jeff Johnson295189b2012-06-20 16:38:30 -070018827 WDI_ControlBlockType* pWDICtx,
18828 WDI_EventInfoType* pEventData
18829)
18830{
18831 WDI_Status wdiStatus;
18832 eHalStatus halStatus;
18833 WDI_EnterImpsRspCb wdiEnterImpsRspCb;
Ravali85acf6b2012-12-12 14:01:38 -080018834 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070018835 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18836
18837 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018838 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018839 -------------------------------------------------------------------------*/
18840 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18841 ( NULL == pEventData->pEventData))
18842 {
18843 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018844 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018845 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018846 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018847 }
18848
18849 wdiEnterImpsRspCb = (WDI_EnterImpsRspCb)pWDICtx->pfncRspCB;
18850
18851 /*-------------------------------------------------------------------------
18852 Extract response and send it to UMAC
18853 -------------------------------------------------------------------------*/
18854 halStatus = *((eHalStatus*)pEventData->pEventData);
18855
Jeff Johnsone7245742012-09-05 17:12:55 -070018856 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018857
Madan Mohan Koyyalamudi48e375a2012-09-24 13:19:17 -070018858 /* If IMPS req failed, riva is not power collapsed Put the DXE in FULL state.
18859 * Other module states are taken care by PMC.
18860 * TODO: How do we take care of the case where IMPS is success, but riva power collapse fails??
18861 */
18862 if (wdiStatus != WDI_STATUS_SUCCESS) {
18863
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070018864 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
18865 "WDI Process Enter IMPS RSP failed With HAL Status Code: %d",
18866 halStatus);
18867 /* Call Back is not required as we are putting the DXE in FULL
18868 * and riva is already in full (IMPS RSP Failed)*/
Ravali85acf6b2012-12-12 14:01:38 -080018869 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
18870
18871 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus ) {
18872 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain9a5d5382013-11-17 22:05:35 -080018873 "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 -080018874 WDI_ASSERT(0);
18875 }
Madan Mohan Koyyalamudi48e375a2012-09-24 13:19:17 -070018876 }
Jeff Johnson295189b2012-06-20 16:38:30 -070018877 /*Notify UMAC*/
18878 wdiEnterImpsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
18879
Jeff Johnsone7245742012-09-05 17:12:55 -070018880 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018881}/*WDI_ProcessEnterImpsRsp*/
18882
18883/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018884 @brief Process Exit IMPS Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070018885 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018886
18887 @param pWDICtx: pointer to the WLAN DAL context
18888 pEventData: pointer to the event information structure
18889
Jeff Johnson295189b2012-06-20 16:38:30 -070018890 @see
18891 @return Result of the function call
18892*/
18893WDI_Status
18894WDI_ProcessExitImpsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018895(
Jeff Johnson295189b2012-06-20 16:38:30 -070018896 WDI_ControlBlockType* pWDICtx,
18897 WDI_EventInfoType* pEventData
18898)
18899{
18900 WDI_Status wdiStatus;
18901 eHalStatus halStatus;
18902 WDI_ExitImpsRspCb wdiExitImpsRspCb;
Ravali85acf6b2012-12-12 14:01:38 -080018903 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070018904 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18905
18906 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018907 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018908 -------------------------------------------------------------------------*/
18909 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18910 ( NULL == pEventData->pEventData))
18911 {
18912 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018913 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018914 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018915 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018916 }
18917
18918 wdiExitImpsRspCb = (WDI_ExitImpsRspCb)pWDICtx->pfncRspCB;
18919
18920 /*-------------------------------------------------------------------------
18921 Extract response and send it to UMAC
18922 -------------------------------------------------------------------------*/
18923 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070018924 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018925
Gopichand Nakkalac6c91902013-05-29 18:53:35 +053018926 if (halStatus != eHAL_STATUS_SUCCESS)
18927 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
18928 "%s: Exit IMPS response is a failure with halStatus %d", __func__, halStatus);
18929
Jeff Johnson295189b2012-06-20 16:38:30 -070018930 // notify DTS that we are entering Full power
Ravali85acf6b2012-12-12 14:01:38 -080018931 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
18932 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
18933 {
18934 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain9a5d5382013-11-17 22:05:35 -080018935 "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 -080018936 WDI_ASSERT(0);
18937 }
Jeff Johnson295189b2012-06-20 16:38:30 -070018938 /*Notify UMAC*/
18939 wdiExitImpsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
18940
Jeff Johnsone7245742012-09-05 17:12:55 -070018941 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018942}/*WDI_ProcessExitImpsRsp*/
18943
18944/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018945 @brief Process Enter BMPS Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070018946 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018947
18948 @param pWDICtx: pointer to the WLAN DAL context
18949 pEventData: pointer to the event information structure
18950
Jeff Johnson295189b2012-06-20 16:38:30 -070018951 @see
18952 @return Result of the function call
18953*/
18954WDI_Status
18955WDI_ProcessEnterBmpsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018956(
Jeff Johnson295189b2012-06-20 16:38:30 -070018957 WDI_ControlBlockType* pWDICtx,
18958 WDI_EventInfoType* pEventData
18959)
18960{
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018961 eHalStatus halStatus = eHAL_STATUS_FAILURE;
18962 tHalEnterBmpsRspParams halEnterBmpsRsp;
18963 WDI_EnterBmpsRspCb wdiEnterBmpsRspCb;
18964 WDI_EnterBmpsRspParamsType wdiEnterBmpsRspparams;
Ravali85acf6b2012-12-12 14:01:38 -080018965 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070018966 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18967
18968 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018969 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018970 -------------------------------------------------------------------------*/
18971 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18972 ( NULL == pEventData->pEventData))
18973 {
18974 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018975 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018976 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018977 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018978 }
18979
Jeff Johnson295189b2012-06-20 16:38:30 -070018980 /*-------------------------------------------------------------------------
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018981 Extract response and send it to UMAC
18982 -------------------------------------------------------------------------*/
18983 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
18984 {
18985 wpalMemoryCopy( &halEnterBmpsRsp,
18986 pEventData->pEventData,
18987 sizeof(halEnterBmpsRsp));
18988
18989 //Used to print debug message
18990 halStatus = halEnterBmpsRsp.status;
18991 wdiEnterBmpsRspparams.wdiStatus = WDI_HAL_2_WDI_STATUS(halEnterBmpsRsp.status);
18992 wdiEnterBmpsRspparams.bssIdx = halEnterBmpsRsp.bssIdx;
18993 }
18994 else
18995 {
18996 halStatus = *((eHalStatus*)pEventData->pEventData);
18997 wdiEnterBmpsRspparams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
18998 }
18999
19000 wdiEnterBmpsRspCb = (WDI_EnterBmpsRspCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070019001
Madan Mohan Koyyalamudi48e375a2012-09-24 13:19:17 -070019002 /* If BMPS req failed, riva is not power collapsed put the DXE in FULL state.
19003 * Other module states are taken care by PMC.
19004 * TODO: How do we take care of the case where BMPS is success, but riva power collapse fails??
19005 */
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019006 if (wdiEnterBmpsRspparams.wdiStatus != WDI_STATUS_SUCCESS)
19007 {
Madan Mohan Koyyalamudi48e375a2012-09-24 13:19:17 -070019008
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019009 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070019010 "WDI Process Enter BMPS RSP failed With HAL Status Code: %d",
19011 halStatus);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019012 /* Call Back is not required as we are putting the DXE in FULL
19013 * and riva is already in FULL (BMPS RSP Failed)*/
Ravali85acf6b2012-12-12 14:01:38 -080019014 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
19015 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
19016 {
19017 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain9a5d5382013-11-17 22:05:35 -080019018 "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 -080019019 WDI_ASSERT(0);
19020 }
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019021 pWDICtx->bInBmps = eWLAN_PAL_FALSE;
Madan Mohan Koyyalamudi48e375a2012-09-24 13:19:17 -070019022 }
19023
Jeff Johnson295189b2012-06-20 16:38:30 -070019024 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019025 wdiEnterBmpsRspCb( &wdiEnterBmpsRspparams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070019026
Jeff Johnsone7245742012-09-05 17:12:55 -070019027 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019028}/*WDI_ProcessEnterBmpsRsp*/
19029
19030/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019031 @brief Process Exit BMPS Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070019032 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019033
19034 @param pWDICtx: pointer to the WLAN DAL context
19035 pEventData: pointer to the event information structure
19036
Jeff Johnson295189b2012-06-20 16:38:30 -070019037 @see
19038 @return Result of the function call
19039*/
19040WDI_Status
19041WDI_ProcessExitBmpsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019042(
Jeff Johnson295189b2012-06-20 16:38:30 -070019043 WDI_ControlBlockType* pWDICtx,
19044 WDI_EventInfoType* pEventData
19045)
19046{
Jeff Johnson295189b2012-06-20 16:38:30 -070019047 eHalStatus halStatus;
19048 WDI_ExitBmpsRspCb wdiExitBmpsRspCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019049 tHalExitBmpsRspParams halExitBmpsRsp;
Ravali85acf6b2012-12-12 14:01:38 -080019050 WDI_ExitBmpsRspParamsType wdiExitBmpsRspParams;
19051 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 wdiExitBmpsRspCb = (WDI_ExitBmpsRspCb)pWDICtx->pfncRspCB;
19067
19068 /*-------------------------------------------------------------------------
19069 Extract response and send it to UMAC
19070 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019071
19072 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
19073 {
19074 wpalMemoryCopy( &halExitBmpsRsp,
19075 pEventData->pEventData,
19076 sizeof(halExitBmpsRsp));
19077
19078 wdiExitBmpsRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halExitBmpsRsp.status);
19079 wdiExitBmpsRspParams.bssIdx = halExitBmpsRsp.bssIdx;
19080 }
19081 else
19082 {
19083 halStatus = *((eHalStatus*)pEventData->pEventData);
19084 wdiExitBmpsRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
19085 }
Jeff Johnson295189b2012-06-20 16:38:30 -070019086
19087 // notify DTS that we are entering Full power
Ravali85acf6b2012-12-12 14:01:38 -080019088 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
19089 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
19090 {
19091 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain9a5d5382013-11-17 22:05:35 -080019092 "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 -080019093 WDI_ASSERT(0);
19094 }
Jeff Johnson295189b2012-06-20 16:38:30 -070019095 pWDICtx->bInBmps = eWLAN_PAL_FALSE;
19096
19097 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019098 wdiExitBmpsRspCb( &wdiExitBmpsRspParams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070019099
Jeff Johnsone7245742012-09-05 17:12:55 -070019100 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019101}/*WDI_ProcessExitBmpsRsp*/
19102
19103/**
19104 @brief Process Enter UAPSD Rsp function (called when a response
19105 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019106
19107 @param pWDICtx: pointer to the WLAN DAL context
19108 pEventData: pointer to the event information structure
19109
Jeff Johnson295189b2012-06-20 16:38:30 -070019110 @see
19111 @return Result of the function call
19112*/
19113WDI_Status
19114WDI_ProcessEnterUapsdRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019115(
Jeff Johnson295189b2012-06-20 16:38:30 -070019116 WDI_ControlBlockType* pWDICtx,
19117 WDI_EventInfoType* pEventData
19118)
19119{
Jeff Johnson295189b2012-06-20 16:38:30 -070019120 eHalStatus halStatus;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019121 tUapsdRspParams halEnterUapsdRsp;
Jeff Johnson295189b2012-06-20 16:38:30 -070019122 WDI_EnterUapsdRspCb wdiEnterUapsdRspCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019123 WDI_EnterUapsdRspParamsType wdiEnterUapsdRspParams;
19124
Jeff Johnson295189b2012-06-20 16:38:30 -070019125 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19126
19127 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019128 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019129 -------------------------------------------------------------------------*/
19130 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19131 ( NULL == pEventData->pEventData))
19132 {
19133 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019134 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019135 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019136 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019137 }
19138
19139 wdiEnterUapsdRspCb = (WDI_EnterUapsdRspCb)pWDICtx->pfncRspCB;
19140
19141 /*-------------------------------------------------------------------------
19142 Extract response and send it to UMAC
19143 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019144 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
19145 {
19146 wpalMemoryCopy( &halEnterUapsdRsp,
19147 pEventData->pEventData,
19148 sizeof(halEnterUapsdRsp));
Jeff Johnson295189b2012-06-20 16:38:30 -070019149
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019150 wdiEnterUapsdRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halEnterUapsdRsp.status);
19151 wdiEnterUapsdRspParams.bssIdx = halEnterUapsdRsp.bssIdx;
19152 }
19153 else
19154 {
19155 halStatus = *((eHalStatus*)pEventData->pEventData);
19156 wdiEnterUapsdRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
19157 }
19158
19159 if(WDI_STATUS_SUCCESS == wdiEnterUapsdRspParams.wdiStatus)
Jeff Johnson295189b2012-06-20 16:38:30 -070019160 {
19161 // Set the DPU routing flag to the FW WQ, all the TX frames would be now pushed
19162 // from DPU to the FW-WQ (5) in UAPSD. FW would be in data path, monitoring
19163 // the traffic to decide when to suspend the trigger frames when there is no traffic
19164 // activity on the trigger enabled ACs
19165 pWDICtx->ucDpuRF = BMUWQ_FW_DPU_TX;
19166
19167#ifdef WLAN_PERF
19168 // Increment the BD signature to refresh the fast path BD utilization
19169 pWDICtx->uBdSigSerialNum++;
19170#endif
19171 }
19172
19173 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019174 wdiEnterUapsdRspCb( &wdiEnterUapsdRspParams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070019175
Jeff Johnsone7245742012-09-05 17:12:55 -070019176 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019177}/*WDI_ProcessEnterUapsdRsp*/
19178
19179/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019180 @brief Process Exit UAPSD Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070019181 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019182
19183 @param pWDICtx: pointer to the WLAN DAL context
19184 pEventData: pointer to the event information structure
19185
Jeff Johnson295189b2012-06-20 16:38:30 -070019186 @see
19187 @return Result of the function call
19188*/
19189WDI_Status
19190WDI_ProcessExitUapsdRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019191(
Jeff Johnson295189b2012-06-20 16:38:30 -070019192 WDI_ControlBlockType* pWDICtx,
19193 WDI_EventInfoType* pEventData
19194)
19195{
Jeff Johnson295189b2012-06-20 16:38:30 -070019196 eHalStatus halStatus;
19197 WDI_ExitUapsdRspCb wdiExitUapsdRspCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019198 tHalExitUapsdRspParams halExitUapsdRsp;
19199 WDI_ExitUapsdRspParamsType wdiExitUapsdRspParams;
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 wdiExitUapsdRspCb = (WDI_ExitUapsdRspCb)pWDICtx->pfncRspCB;
19215
19216 /*-------------------------------------------------------------------------
19217 Extract response and send it to UMAC
19218 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019219 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
19220 {
19221 wpalMemoryCopy( &halExitUapsdRsp,
19222 pEventData->pEventData,
19223 sizeof(halExitUapsdRsp));
19224
19225 wdiExitUapsdRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halExitUapsdRsp.status);
19226 wdiExitUapsdRspParams.bssIdx = halExitUapsdRsp.bssIdx;
19227 }
19228 else
19229 {
19230 halStatus = *((eHalStatus*)pEventData->pEventData);
19231 wdiExitUapsdRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
19232 }
Jeff Johnson295189b2012-06-20 16:38:30 -070019233 // Restore back the DPU routing flag in the TxBD, for DPU to push the TxBDs to BTQM
19234 // directly instead of the FW WQ.
19235 pWDICtx->ucDpuRF = BMUWQ_BTQM_TX_MGMT;
19236
19237#ifdef WLAN_PERF
19238 // Increment the BD signature to refresh the fast path BD utilization
19239 pWDICtx->uBdSigSerialNum++;
19240#endif
19241
19242 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019243 wdiExitUapsdRspCb( &wdiExitUapsdRspParams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070019244
Jeff Johnsone7245742012-09-05 17:12:55 -070019245 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019246}/*WDI_ProcessExitUapsdRsp*/
19247
19248/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019249 @brief Process set UAPSD params Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070019250 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019251
19252 @param pWDICtx: pointer to the WLAN DAL context
19253 pEventData: pointer to the event information structure
19254
Jeff Johnson295189b2012-06-20 16:38:30 -070019255 @see
19256 @return Result of the function call
19257*/
19258WDI_Status
19259WDI_ProcessSetUapsdAcParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019260(
Jeff Johnson295189b2012-06-20 16:38:30 -070019261 WDI_ControlBlockType* pWDICtx,
19262 WDI_EventInfoType* pEventData
19263)
19264{
19265 WDI_Status wdiStatus;
19266 eHalStatus halStatus;
19267 WDI_SetUapsdAcParamsCb wdiSetUapsdAcParamsCb;
19268 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19269
19270 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019271 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019272 -------------------------------------------------------------------------*/
19273 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19274 ( NULL == pEventData->pEventData))
19275 {
19276 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019277 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019278 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019279 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019280 }
19281
19282 wdiSetUapsdAcParamsCb = (WDI_SetUapsdAcParamsCb)pWDICtx->pfncRspCB;
19283
19284 /*-------------------------------------------------------------------------
19285 Extract response and send it to UMAC
19286 -------------------------------------------------------------------------*/
19287 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070019288 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019289
19290 /*Notify UMAC*/
19291 wdiSetUapsdAcParamsCb( wdiStatus, pWDICtx->pRspCBUserData);
19292
Jeff Johnsone7245742012-09-05 17:12:55 -070019293 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019294}/*WDI_ProcessSetUapsdAcParamsRsp*/
19295
19296/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019297 @brief Process update UAPSD params Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070019298 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019299
19300 @param pWDICtx: pointer to the WLAN DAL context
19301 pEventData: pointer to the event information structure
19302
Jeff Johnson295189b2012-06-20 16:38:30 -070019303 @see
19304 @return Result of the function call
19305*/
19306WDI_Status
19307WDI_ProcessUpdateUapsdParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019308(
Jeff Johnson295189b2012-06-20 16:38:30 -070019309 WDI_ControlBlockType* pWDICtx,
19310 WDI_EventInfoType* pEventData
19311)
19312{
19313 WDI_Status wdiStatus;
19314 eHalStatus halStatus;
19315 WDI_UpdateUapsdParamsCb wdiUpdateUapsdParamsCb;
19316 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19317
19318 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019319 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019320 -------------------------------------------------------------------------*/
19321 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19322 ( NULL == pEventData->pEventData))
19323 {
19324 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019325 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019326 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019327 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019328 }
19329
19330 wdiUpdateUapsdParamsCb = (WDI_UpdateUapsdParamsCb)pWDICtx->pfncRspCB;
19331
19332 /*-------------------------------------------------------------------------
19333 Extract response and send it to UMAC
19334 -------------------------------------------------------------------------*/
19335 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070019336 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019337
19338 /*Notify UMAC*/
19339 wdiUpdateUapsdParamsCb( wdiStatus, pWDICtx->pRspCBUserData);
19340
Jeff Johnsone7245742012-09-05 17:12:55 -070019341 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019342}/*WDI_ProcessUpdateUapsdParamsRsp*/
19343
19344/**
19345 @brief Process Configure RXP filter Rsp function (called when a
19346 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019347
19348 @param pWDICtx: pointer to the WLAN DAL context
19349 pEventData: pointer to the event information structure
19350
Jeff Johnson295189b2012-06-20 16:38:30 -070019351 @see
19352 @return Result of the function call
19353*/
19354WDI_Status
19355WDI_ProcessConfigureRxpFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019356(
Jeff Johnson295189b2012-06-20 16:38:30 -070019357 WDI_ControlBlockType* pWDICtx,
19358 WDI_EventInfoType* pEventData
19359)
19360{
19361 WDI_Status wdiStatus;
19362 eHalStatus halStatus;
19363 WDI_ConfigureRxpFilterCb wdiConfigureRxpFilterCb;
19364 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19365
19366 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019367 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019368 -------------------------------------------------------------------------*/
19369 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19370 ( NULL == pEventData->pEventData))
19371 {
19372 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019373 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019374 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019375 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019376 }
19377
19378 wdiConfigureRxpFilterCb = (WDI_ConfigureRxpFilterCb)pWDICtx->pfncRspCB;
19379
19380 /*-------------------------------------------------------------------------
19381 Extract response and send it to UMAC
19382 -------------------------------------------------------------------------*/
19383 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070019384 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019385
19386 /*Notify UMAC*/
19387 wdiConfigureRxpFilterCb( wdiStatus, pWDICtx->pRspCBUserData);
19388
Jeff Johnsone7245742012-09-05 17:12:55 -070019389 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019390}/*WDI_ProcessConfigureRxpFilterRsp*/
19391
19392/**
19393 @brief Process Set beacon filter Rsp function (called when a
19394 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019395
19396 @param pWDICtx: pointer to the WLAN DAL context
19397 pEventData: pointer to the event information structure
19398
Jeff Johnson295189b2012-06-20 16:38:30 -070019399 @see
19400 @return Result of the function call
19401*/
19402WDI_Status
19403WDI_ProcessSetBeaconFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019404(
Jeff Johnson295189b2012-06-20 16:38:30 -070019405 WDI_ControlBlockType* pWDICtx,
19406 WDI_EventInfoType* pEventData
19407)
19408{
19409 WDI_Status wdiStatus;
19410 eHalStatus halStatus;
19411 WDI_SetBeaconFilterCb wdiBeaconFilterCb;
19412 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19413
19414 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019415 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019416 -------------------------------------------------------------------------*/
19417 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19418 ( NULL == pEventData->pEventData))
19419 {
19420 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019421 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019422 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019423 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019424 }
19425
19426 wdiBeaconFilterCb = (WDI_SetBeaconFilterCb)pWDICtx->pfncRspCB;
19427
19428 /*-------------------------------------------------------------------------
19429 Extract response and send it to UMAC
19430 -------------------------------------------------------------------------*/
19431 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070019432 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019433
19434 /*Notify UMAC*/
19435 wdiBeaconFilterCb( wdiStatus, pWDICtx->pRspCBUserData);
19436
Jeff Johnsone7245742012-09-05 17:12:55 -070019437 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019438}/*WDI_ProcessSetBeaconFilterRsp*/
19439
19440/**
19441 @brief Process remove beacon filter Rsp function (called when a
19442 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019443
19444 @param pWDICtx: pointer to the WLAN DAL context
19445 pEventData: pointer to the event information structure
19446
Jeff Johnson295189b2012-06-20 16:38:30 -070019447 @see
19448 @return Result of the function call
19449*/
19450WDI_Status
19451WDI_ProcessRemBeaconFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019452(
Jeff Johnson295189b2012-06-20 16:38:30 -070019453 WDI_ControlBlockType* pWDICtx,
19454 WDI_EventInfoType* pEventData
19455)
19456{
19457 WDI_Status wdiStatus;
19458 eHalStatus halStatus;
19459 WDI_RemBeaconFilterCb wdiBeaconFilterCb;
19460 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19461
19462 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019463 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019464 -------------------------------------------------------------------------*/
19465 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19466 ( NULL == pEventData->pEventData))
19467 {
19468 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019469 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019470 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019471 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019472 }
19473
19474 wdiBeaconFilterCb = (WDI_RemBeaconFilterCb)pWDICtx->pfncRspCB;
19475
19476 /*-------------------------------------------------------------------------
19477 Extract response and send it to UMAC
19478 -------------------------------------------------------------------------*/
19479 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070019480 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019481
19482 /*Notify UMAC*/
19483 wdiBeaconFilterCb( wdiStatus, pWDICtx->pRspCBUserData);
19484
Jeff Johnsone7245742012-09-05 17:12:55 -070019485 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019486}/*WDI_ProcessRemBeaconFilterRsp*/
19487
19488/**
19489 @brief Process set RSSI thresholds Rsp function (called when a
19490 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019491
19492 @param pWDICtx: pointer to the WLAN DAL context
19493 pEventData: pointer to the event information structure
19494
Jeff Johnson295189b2012-06-20 16:38:30 -070019495 @see
19496 @return Result of the function call
19497*/
19498WDI_Status
19499WDI_ProcessSetRSSIThresoldsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019500(
Jeff Johnson295189b2012-06-20 16:38:30 -070019501 WDI_ControlBlockType* pWDICtx,
19502 WDI_EventInfoType* pEventData
19503)
19504{
19505 WDI_Status wdiStatus;
19506 eHalStatus halStatus;
19507 WDI_SetRSSIThresholdsCb wdiRSSIThresholdsCb;
19508 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19509
19510 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019511 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019512 -------------------------------------------------------------------------*/
19513 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19514 ( NULL == pEventData->pEventData))
19515 {
19516 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019517 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019518 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019519 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019520 }
19521
19522 wdiRSSIThresholdsCb = (WDI_SetRSSIThresholdsCb)pWDICtx->pfncRspCB;
19523
19524 /*-------------------------------------------------------------------------
19525 Extract response and send it to UMAC
19526 -------------------------------------------------------------------------*/
19527 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070019528 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019529
19530 /*Notify UMAC*/
19531 wdiRSSIThresholdsCb( wdiStatus, pWDICtx->pRspCBUserData);
19532
Jeff Johnsone7245742012-09-05 17:12:55 -070019533 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019534}/*WDI_ProcessSetRSSIThresoldsRsp*/
19535
19536/**
19537 @brief Process host offload Rsp function (called when a
19538 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019539
19540 @param pWDICtx: pointer to the WLAN DAL context
19541 pEventData: pointer to the event information structure
19542
Jeff Johnson295189b2012-06-20 16:38:30 -070019543 @see
19544 @return Result of the function call
19545*/
19546WDI_Status
19547WDI_ProcessHostOffloadRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019548(
Jeff Johnson295189b2012-06-20 16:38:30 -070019549 WDI_ControlBlockType* pWDICtx,
19550 WDI_EventInfoType* pEventData
19551)
19552{
19553 WDI_Status wdiStatus;
19554 eHalStatus halStatus;
19555 WDI_HostOffloadCb wdiHostOffloadCb;
19556 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19557
19558 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019559 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019560 -------------------------------------------------------------------------*/
19561 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19562 ( NULL == pEventData->pEventData))
19563 {
19564 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019565 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019566 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019567 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019568 }
19569
19570 wdiHostOffloadCb = (WDI_HostOffloadCb)pWDICtx->pfncRspCB;
19571
19572 /*-------------------------------------------------------------------------
19573 Extract response and send it to UMAC
19574 -------------------------------------------------------------------------*/
19575 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070019576 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019577
19578 /*Notify UMAC*/
19579 wdiHostOffloadCb( wdiStatus, pWDICtx->pRspCBUserData);
19580
Jeff Johnsone7245742012-09-05 17:12:55 -070019581 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019582}/*WDI_ProcessHostOffloadRsp*/
19583
19584/**
19585 @brief Process keep alive Rsp function (called when a
19586 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019587
19588 @param pWDICtx: pointer to the WLAN DAL context
19589 pEventData: pointer to the event information structure
19590
Jeff Johnson295189b2012-06-20 16:38:30 -070019591 @see
19592 @return Result of the function call
19593*/
19594WDI_Status
19595WDI_ProcessKeepAliveRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019596(
Jeff Johnson295189b2012-06-20 16:38:30 -070019597 WDI_ControlBlockType* pWDICtx,
19598 WDI_EventInfoType* pEventData
19599)
19600{
19601 WDI_Status wdiStatus;
19602 eHalStatus halStatus;
19603 WDI_KeepAliveCb wdiKeepAliveCb;
19604 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19605 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
19606 "Received WDI_ProcessKeepAliveRsp Callback from HAL");
19607
19608
19609 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019610 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019611 -------------------------------------------------------------------------*/
19612 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19613 ( NULL == pEventData->pEventData))
19614 {
19615 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019616 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019617 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019618 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019619 }
19620
Jeff Johnsone7245742012-09-05 17:12:55 -070019621 wdiKeepAliveCb = (WDI_KeepAliveCb)pWDICtx->pfncRspCB;
19622
Jeff Johnson295189b2012-06-20 16:38:30 -070019623 /*-------------------------------------------------------------------------
19624 Extract response and send it to UMAC
19625 -------------------------------------------------------------------------*/
19626 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070019627 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019628
19629 /*Notify UMAC*/
19630 wdiKeepAliveCb( wdiStatus, pWDICtx->pRspCBUserData);
19631
Jeff Johnsone7245742012-09-05 17:12:55 -070019632 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019633}/*WDI_ProcessKeepAliveRsp*/
19634
19635/**
19636 @brief Process wowl add ptrn Rsp function (called when a
19637 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019638
19639 @param pWDICtx: pointer to the WLAN DAL context
19640 pEventData: pointer to the event information structure
19641
Jeff Johnson295189b2012-06-20 16:38:30 -070019642 @see
19643 @return Result of the function call
19644*/
19645WDI_Status
19646WDI_ProcessWowlAddBcPtrnRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019647(
Jeff Johnson295189b2012-06-20 16:38:30 -070019648 WDI_ControlBlockType* pWDICtx,
19649 WDI_EventInfoType* pEventData
19650)
19651{
Jeff Johnson295189b2012-06-20 16:38:30 -070019652 eHalStatus halStatus;
19653 WDI_WowlAddBcPtrnCb wdiWowlAddBcPtrnCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019654 tHalAddWowlBcastPtrnRspParams halAddWowlBcastPtrRsp;
19655 WDI_WowlAddBcPtrnRspParamsType wdiWowlAddBcPtrRsp;
19656
Jeff Johnson295189b2012-06-20 16:38:30 -070019657 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19658
19659 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019660 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019661 -------------------------------------------------------------------------*/
19662 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19663 ( NULL == pEventData->pEventData))
19664 {
19665 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019666 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019667 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019668 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019669 }
19670
19671 wdiWowlAddBcPtrnCb = (WDI_WowlAddBcPtrnCb)pWDICtx->pfncRspCB;
19672
19673 /*-------------------------------------------------------------------------
19674 Extract response and send it to UMAC
19675 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019676 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
19677 {
19678 wpalMemoryCopy( &halAddWowlBcastPtrRsp,
19679 pEventData->pEventData,
19680 sizeof(halAddWowlBcastPtrRsp));
19681
19682 wdiWowlAddBcPtrRsp.wdiStatus =
19683 WDI_HAL_2_WDI_STATUS(halAddWowlBcastPtrRsp.status);
19684 }
19685 else
19686 {
19687 halStatus = *((eHalStatus*)pEventData->pEventData);
19688 wdiWowlAddBcPtrRsp.wdiStatus =
19689 WDI_HAL_2_WDI_STATUS(halStatus);
19690 }
Jeff Johnson295189b2012-06-20 16:38:30 -070019691
19692 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019693 wdiWowlAddBcPtrnCb( &wdiWowlAddBcPtrRsp, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070019694
Jeff Johnsone7245742012-09-05 17:12:55 -070019695 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019696}/*WDI_ProcessWowlAddBcPtrnRsp*/
19697
19698/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019699 @brief Process wowl delete ptrn Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070019700 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019701
19702 @param pWDICtx: pointer to the WLAN DAL context
19703 pEventData: pointer to the event information structure
19704
Jeff Johnson295189b2012-06-20 16:38:30 -070019705 @see
19706 @return Result of the function call
19707*/
19708WDI_Status
19709WDI_ProcessWowlDelBcPtrnRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019710(
Jeff Johnson295189b2012-06-20 16:38:30 -070019711 WDI_ControlBlockType* pWDICtx,
19712 WDI_EventInfoType* pEventData
19713)
19714{
Jeff Johnson295189b2012-06-20 16:38:30 -070019715 eHalStatus halStatus;
19716 WDI_WowlDelBcPtrnCb wdiWowlDelBcPtrnCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019717 tHalDelWowlBcastPtrnRspParams halDelWowlBcastPtrRsp;
19718 WDI_WowlDelBcPtrnRspParamsType wdiWowlDelBcstPtrRsp;
Jeff Johnson295189b2012-06-20 16:38:30 -070019719 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19720
19721 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019722 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019723 -------------------------------------------------------------------------*/
19724 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19725 ( NULL == pEventData->pEventData))
19726 {
19727 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019728 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019729 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019730 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019731 }
19732
19733 wdiWowlDelBcPtrnCb = (WDI_WowlDelBcPtrnCb)pWDICtx->pfncRspCB;
19734
19735 /*-------------------------------------------------------------------------
19736 Extract response and send it to UMAC
19737 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019738 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
19739 {
19740 wpalMemoryCopy( &halDelWowlBcastPtrRsp,
19741 pEventData->pEventData,
19742 sizeof(halDelWowlBcastPtrRsp));
Jeff Johnson295189b2012-06-20 16:38:30 -070019743
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019744 wdiWowlDelBcstPtrRsp.wdiStatus =
19745 WDI_HAL_2_WDI_STATUS(halDelWowlBcastPtrRsp.status);
19746 }
19747 else
19748 {
19749 halStatus = *((eHalStatus*)pEventData->pEventData);
19750 wdiWowlDelBcstPtrRsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
19751 }
Jeff Johnson295189b2012-06-20 16:38:30 -070019752 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019753 wdiWowlDelBcPtrnCb( &wdiWowlDelBcstPtrRsp, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070019754
Jeff Johnsone7245742012-09-05 17:12:55 -070019755 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019756}/*WDI_ProcessWowlDelBcPtrnRsp*/
19757
19758/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019759 @brief Process wowl enter Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070019760 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019761
19762 @param pWDICtx: pointer to the WLAN DAL context
19763 pEventData: pointer to the event information structure
19764
Jeff Johnson295189b2012-06-20 16:38:30 -070019765 @see
19766 @return Result of the function call
19767*/
19768WDI_Status
19769WDI_ProcessWowlEnterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019770(
Jeff Johnson295189b2012-06-20 16:38:30 -070019771 WDI_ControlBlockType* pWDICtx,
19772 WDI_EventInfoType* pEventData
19773)
19774{
Jeff Johnson295189b2012-06-20 16:38:30 -070019775 eHalStatus halStatus;
19776 WDI_WowlEnterReqCb wdiWowlEnterCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019777 WDI_WowlEnterRspParamsType wdiwowlEnterRsp;
19778 tHalEnterWowlRspParams halEnterWowlRspParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070019779 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19780
19781 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019782 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019783 -------------------------------------------------------------------------*/
19784 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19785 ( NULL == pEventData->pEventData))
19786 {
19787 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019788 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019789 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019790 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019791 }
19792
19793 wdiWowlEnterCb = (WDI_WowlEnterReqCb)pWDICtx->pfncRspCB;
19794
19795 /*-------------------------------------------------------------------------
19796 Extract response and send it to UMAC
19797 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019798 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
19799 {
19800 wpalMemoryCopy( &halEnterWowlRspParams,
19801 (wpt_uint8*)pEventData->pEventData,
19802 sizeof(halEnterWowlRspParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070019803
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019804 wdiwowlEnterRsp.bssIdx = halEnterWowlRspParams.bssIdx;
19805 wdiwowlEnterRsp.status =
19806 WDI_HAL_2_WDI_STATUS(halEnterWowlRspParams.status);
19807 }
19808 else
19809 {
19810 halStatus = *((eHalStatus*)pEventData->pEventData);
19811 wdiwowlEnterRsp.status = WDI_HAL_2_WDI_STATUS(halStatus);
19812 }
Jeff Johnson295189b2012-06-20 16:38:30 -070019813 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019814 wdiWowlEnterCb( &wdiwowlEnterRsp, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070019815
Jeff Johnsone7245742012-09-05 17:12:55 -070019816 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019817}/*WDI_ProcessWowlEnterRsp*/
19818
19819/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019820 @brief Process wowl exit Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070019821 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019822
19823 @param pWDICtx: pointer to the WLAN DAL context
19824 pEventData: pointer to the event information structure
19825
Jeff Johnson295189b2012-06-20 16:38:30 -070019826 @see
19827 @return Result of the function call
19828*/
19829WDI_Status
19830WDI_ProcessWowlExitRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019831(
Jeff Johnson295189b2012-06-20 16:38:30 -070019832 WDI_ControlBlockType* pWDICtx,
19833 WDI_EventInfoType* pEventData
19834)
19835{
Jeff Johnson295189b2012-06-20 16:38:30 -070019836 eHalStatus halStatus;
19837 WDI_WowlExitReqCb wdiWowlExitCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019838 tHalExitWowlRspParams halExitWowlRspParams;
19839 WDI_WowlExitRspParamsType wdiWowlExitRsp;
19840
Jeff Johnson295189b2012-06-20 16:38:30 -070019841 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19842
19843 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019844 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019845 -------------------------------------------------------------------------*/
19846 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19847 ( NULL == pEventData->pEventData))
19848 {
19849 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019850 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019851 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019852 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019853 }
19854
19855 wdiWowlExitCb = (WDI_WowlExitReqCb)pWDICtx->pfncRspCB;
19856
19857 /*-------------------------------------------------------------------------
19858 Extract response and send it to UMAC
19859 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019860 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
19861 {
19862 wpalMemoryCopy( &halExitWowlRspParams,
19863 pEventData->pEventData,
19864 sizeof(halExitWowlRspParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070019865
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019866 wdiWowlExitRsp.status = WDI_HAL_2_WDI_STATUS(halExitWowlRspParams.status);
19867 wdiWowlExitRsp.bssIdx = halExitWowlRspParams.bssIdx;
19868
19869 }
19870 else
19871 {
19872 halStatus = *((eHalStatus*)pEventData->pEventData);
19873 wdiWowlExitRsp.status = WDI_HAL_2_WDI_STATUS(halStatus);
19874 }
Jeff Johnson295189b2012-06-20 16:38:30 -070019875 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019876 wdiWowlExitCb( &wdiWowlExitRsp, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070019877
Jeff Johnsone7245742012-09-05 17:12:55 -070019878 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019879}/*WDI_ProcessWowlExitRsp*/
19880
19881/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019882 @brief Process Configure Apps CPU wakeup State Rsp function
Jeff Johnson295189b2012-06-20 16:38:30 -070019883 (called when a response is being received over the bus
19884 from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019885
19886 @param pWDICtx: pointer to the WLAN DAL context
19887 pEventData: pointer to the event information structure
19888
Jeff Johnson295189b2012-06-20 16:38:30 -070019889 @see
19890 @return Result of the function call
19891*/
19892WDI_Status
19893WDI_ProcessConfigureAppsCpuWakeupStateRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019894(
Jeff Johnson295189b2012-06-20 16:38:30 -070019895 WDI_ControlBlockType* pWDICtx,
19896 WDI_EventInfoType* pEventData
19897)
19898{
19899 WDI_Status wdiStatus;
19900 eHalStatus halStatus;
19901 WDI_ConfigureAppsCpuWakeupStateCb wdiConfigureAppsCpuWakeupStateCb;
19902 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19903
19904 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019905 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019906 -------------------------------------------------------------------------*/
19907 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19908 ( NULL == pEventData->pEventData))
19909 {
19910 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019911 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019912 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019913 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019914 }
19915
19916 wdiConfigureAppsCpuWakeupStateCb = (WDI_ConfigureAppsCpuWakeupStateCb)pWDICtx->pfncRspCB;
19917
19918 /*-------------------------------------------------------------------------
19919 Extract response and send it to UMAC
19920 -------------------------------------------------------------------------*/
19921 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070019922 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019923
19924 /*Notify UMAC*/
19925 wdiConfigureAppsCpuWakeupStateCb( wdiStatus, pWDICtx->pRspCBUserData);
19926
Jeff Johnsone7245742012-09-05 17:12:55 -070019927 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019928}/*WDI_ProcessConfigureAppsCpuWakeupStateRsp*/
19929
19930
19931/**
19932 @brief Process Nv download(called when a response
19933 is being received over the bus from HAL,will check if the responce is )
Jeff Johnsone7245742012-09-05 17:12:55 -070019934
19935 @param pWDICtx: pointer to the WLAN DAL context
19936 pEventData: pointer to the event information structure
19937
Jeff Johnson295189b2012-06-20 16:38:30 -070019938 @see
19939 @return Result of the function call
19940*/
19941WDI_Status
19942WDI_ProcessNvDownloadRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019943(
Jeff Johnson295189b2012-06-20 16:38:30 -070019944 WDI_ControlBlockType* pWDICtx,
19945 WDI_EventInfoType* pEventData
19946)
19947{
19948
19949 WDI_NvDownloadRspCb wdiNvDownloadRspCb;
19950 tHalNvImgDownloadRspParams halNvDownloadRsp;
19951 WDI_NvDownloadRspInfoType wdiNvDownloadRsp;
19952
19953 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019954 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019955 -------------------------------------------------------------------------*/
19956 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19957 ( NULL == pEventData->pEventData))
19958 {
19959 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019960 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019961 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019962 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019963 }
19964
19965 /*-------------------------------------------------------------------------
19966 Extract response and send it to UMAC
19967 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019968 wpalMemoryCopy( &halNvDownloadRsp,
19969 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070019970 sizeof(halNvDownloadRsp));
19971
19972 wdiNvDownloadRsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halNvDownloadRsp.status);
19973
19974 if((wdiNvDownloadRsp.wdiStatus == WDI_STATUS_SUCCESS) &&
Jeff Johnsone7245742012-09-05 17:12:55 -070019975 (pWDICtx->wdiNvBlobInfo.usCurrentFragment !=
19976 pWDICtx->wdiNvBlobInfo.usTotalFragment ))
Jeff Johnson295189b2012-06-20 16:38:30 -070019977 {
19978 WDI_NvDownloadReq(&pWDICtx->wdiCachedNvDownloadReq,
Jeff Johnsone7245742012-09-05 17:12:55 -070019979 (WDI_NvDownloadRspCb)pWDICtx->pfncRspCB, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070019980 }
19981 else
19982 {
19983 /*Reset the Nv related global information in WDI context information */
19984 pWDICtx->wdiNvBlobInfo.usTotalFragment = 0;
19985 pWDICtx->wdiNvBlobInfo.usFragmentSize = 0;
19986 pWDICtx->wdiNvBlobInfo.usCurrentFragment = 0;
19987 /*call WDA callback function for last fragment */
19988 wdiNvDownloadRspCb = (WDI_NvDownloadRspCb)pWDICtx->pfncRspCB;
19989 wdiNvDownloadRspCb( &wdiNvDownloadRsp, pWDICtx->pRspCBUserData);
19990 }
19991
Jeff Johnsone7245742012-09-05 17:12:55 -070019992 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019993}
19994#ifdef WLAN_FEATURE_VOWIFI_11R
19995/**
19996 @brief Process Add TSpec Rsp function (called when a response
19997 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019998
19999 @param pWDICtx: pointer to the WLAN DAL context
20000 pEventData: pointer to the event information structure
20001
Jeff Johnson295189b2012-06-20 16:38:30 -070020002 @see
20003 @return Result of the function call
20004*/
20005WDI_Status
20006WDI_ProcessAggrAddTSpecRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020007(
Jeff Johnson295189b2012-06-20 16:38:30 -070020008 WDI_ControlBlockType* pWDICtx,
20009 WDI_EventInfoType* pEventData
20010)
20011{
20012 WDI_Status wdiStatus;
20013 tAggrAddTsRspParams aggrAddTsRsp;
20014 WDI_AggrAddTsRspCb wdiAggrAddTsRspCb;
20015 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20016
20017 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020018 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020019 -------------------------------------------------------------------------*/
20020 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20021 ( NULL == pEventData->pEventData))
20022 {
20023 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020024 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020025 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020026 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020027 }
20028
20029 wdiAggrAddTsRspCb = (WDI_AddTsRspCb)pWDICtx->pfncRspCB;
20030
20031 /*-------------------------------------------------------------------------
20032 Extract response and send it to UMAC
20033 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020034 wpalMemoryCopy( &aggrAddTsRsp,
20035 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070020036 sizeof(aggrAddTsRsp));
20037
20038 /* What is the difference between status0 and status1? */
Jeff Johnsone7245742012-09-05 17:12:55 -070020039 wdiStatus = WDI_HAL_2_WDI_STATUS(aggrAddTsRsp.status0);
Jeff Johnson295189b2012-06-20 16:38:30 -070020040
20041 /*Notify UMAC*/
20042 wdiAggrAddTsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
20043
Jeff Johnsone7245742012-09-05 17:12:55 -070020044 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020045}/*WDI_ProcessAddTSpecRsp*/
20046#endif /* WLAN_FEATURE_VOWIFI_11R */
20047
20048/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020049 @brief WDI_ProcessHostResumeRsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070020050 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020051
20052 @param pWDICtx: pointer to the WLAN DAL context
20053 pEventData: pointer to the event information structure
20054
Jeff Johnson295189b2012-06-20 16:38:30 -070020055 @see
20056 @return Result of the function call
20057*/
20058WDI_Status
20059WDI_ProcessHostResumeRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020060(
Jeff Johnson295189b2012-06-20 16:38:30 -070020061 WDI_ControlBlockType* pWDICtx,
20062 WDI_EventInfoType* pEventData
20063)
20064{
20065 WDI_SuspendResumeRspParamsType wdiResumeRspParams;
20066 WDI_HostResumeEventRspCb wdiHostResumeRspCb;
20067 tHalHostResumeRspParams hostResumeRspMsg;
20068 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20069
20070 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020071 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020072 -------------------------------------------------------------------------*/
20073 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20074 ( NULL == pEventData->pEventData))
20075 {
20076 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020077 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020078 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020079 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020080 }
20081
20082 wdiHostResumeRspCb = (WDI_HostResumeEventRspCb)pWDICtx->pfncRspCB;
20083
20084 /*-------------------------------------------------------------------------
20085 Extract response and send it to UMAC
20086 -------------------------------------------------------------------------*/
20087
Jeff Johnsone7245742012-09-05 17:12:55 -070020088 wpalMemoryCopy( &hostResumeRspMsg,
Jeff Johnson295189b2012-06-20 16:38:30 -070020089 (wpt_uint8*)pEventData->pEventData,
20090 sizeof(hostResumeRspMsg));
20091
Jeff Johnsone7245742012-09-05 17:12:55 -070020092 wdiResumeRspParams.wdiStatus =
20093 WDI_HAL_2_WDI_STATUS(hostResumeRspMsg.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070020094
20095 /*Notify UMAC*/
20096 wdiHostResumeRspCb(&wdiResumeRspParams, (void*) pWDICtx->pRspCBUserData);
20097
20098 return WDI_STATUS_SUCCESS;
20099}
20100
20101/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020102 @brief Process Set Tx PER Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070020103 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020104
20105 @param pWDICtx: pointer to the WLAN DAL context
20106 pEventData: pointer to the event information structure
20107
Jeff Johnson295189b2012-06-20 16:38:30 -070020108 @see
20109 @return Result of the function call
20110*/
20111WDI_Status
20112WDI_ProcessSetTxPerTrackingRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020113(
Jeff Johnson295189b2012-06-20 16:38:30 -070020114 WDI_ControlBlockType* pWDICtx,
20115 WDI_EventInfoType* pEventData
20116)
20117{
20118 WDI_Status wdiStatus;
20119 eHalStatus halStatus;
20120 WDI_SetTxPerTrackingRspCb pwdiSetTxPerTrackingRspCb;
20121 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20122
20123 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020124 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020125 -------------------------------------------------------------------------*/
20126 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20127 ( NULL == pEventData->pEventData))
20128 {
20129 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020130 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020131 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020132 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020133 }
Jeff Johnsone7245742012-09-05 17:12:55 -070020134
20135 pwdiSetTxPerTrackingRspCb = (WDI_SetTxPerTrackingRspCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070020136
20137 /*-------------------------------------------------------------------------
20138 Extract response and send it to UMAC
20139 -------------------------------------------------------------------------*/
20140 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070020141 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070020142
20143 /*Notify UMAC*/
20144 pwdiSetTxPerTrackingRspCb( wdiStatus, pWDICtx->pRspCBUserData);
20145
Jeff Johnsone7245742012-09-05 17:12:55 -070020146 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020147}/*WDI_ProcessSetTxPerTrackingRsp*/
20148
20149/*==========================================================================
20150 Indications from HAL
20151 ==========================================================================*/
20152/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020153 @brief Process Low RSSI Indication function (called when an
Jeff Johnson295189b2012-06-20 16:38:30 -070020154 indication of this kind is being received over the bus
20155 from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020156
20157 @param pWDICtx: pointer to the WLAN DAL context
20158 pEventData: pointer to the event information structure
20159
Jeff Johnson295189b2012-06-20 16:38:30 -070020160 @see
20161 @return Result of the function call
20162*/
20163WDI_Status
20164WDI_ProcessLowRSSIInd
Jeff Johnsone7245742012-09-05 17:12:55 -070020165(
Jeff Johnson295189b2012-06-20 16:38:30 -070020166 WDI_ControlBlockType* pWDICtx,
20167 WDI_EventInfoType* pEventData
20168)
20169{
20170 WDI_LowLevelIndType wdiInd;
20171 tHalRSSINotificationIndMsg halRSSINotificationIndMsg;
20172 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20173
20174 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020175 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020176 -------------------------------------------------------------------------*/
20177 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20178 ( NULL == pEventData->pEventData))
20179 {
20180 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020181 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020182 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020183 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020184 }
20185
20186 /*-------------------------------------------------------------------------
20187 Extract indication and send it to UMAC
20188 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020189 wpalMemoryCopy( (void *)&halRSSINotificationIndMsg.rssiNotificationParams,
20190 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070020191 sizeof(tHalRSSINotification));
20192
20193 /*Fill in the indication parameters*/
20194 wdiInd.wdiIndicationType = WDI_RSSI_NOTIFICATION_IND;
20195 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres1PosCross =
20196 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres1PosCross;
20197 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres1NegCross =
20198 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres1NegCross;
20199 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres2PosCross =
20200 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres2PosCross;
20201 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres2NegCross =
20202 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres2NegCross;
20203 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres3PosCross =
20204 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres3PosCross;
20205 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres3NegCross =
20206 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres3NegCross;
Srinivasdaaec712012-12-12 15:59:44 -080020207 wdiInd.wdiIndicationData.wdiLowRSSIInfo.avgRssi =
20208 halRSSINotificationIndMsg.rssiNotificationParams.avgRssi;
Jeff Johnson295189b2012-06-20 16:38:30 -070020209
ltimariub77f24b2013-01-24 18:54:33 -080020210 if ( pWDICtx->wdiLowLevelIndCB )
20211 {
20212 /*Notify UMAC of indication*/
20213 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
20214 }
Jeff Johnsone7245742012-09-05 17:12:55 -070020215
20216 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020217}/*WDI_ProcessLowRSSIInd*/
20218
20219
20220/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020221 @brief Process Missed Beacon Indication function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070020222 an indication of this kind is being received over the
20223 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020224
20225 @param pWDICtx: pointer to the WLAN DAL context
20226 pEventData: pointer to the event information structure
20227
Jeff Johnson295189b2012-06-20 16:38:30 -070020228 @see
20229 @return Result of the function call
20230*/
20231WDI_Status
20232WDI_ProcessMissedBeaconInd
Jeff Johnsone7245742012-09-05 17:12:55 -070020233(
Jeff Johnson295189b2012-06-20 16:38:30 -070020234 WDI_ControlBlockType* pWDICtx,
20235 WDI_EventInfoType* pEventData
20236)
20237{
20238 WDI_Status wdiStatus;
20239 eHalStatus halStatus;
20240 WDI_LowLevelIndType wdiInd;
Leela Venkata Kiran Kumar Reddy Chirala3ca17902013-02-27 19:50:05 -080020241 tpHalMissedBeaconIndParams halMissedBeaconIndParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070020242 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20243
20244 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020245 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020246 -------------------------------------------------------------------------*/
20247 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20248 ( NULL == pEventData->pEventData))
20249 {
20250 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020251 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020252 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020253 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020254 }
Leela Venkata Kiran Kumar Reddy Chirala3ca17902013-02-27 19:50:05 -080020255 halMissedBeaconIndParams = (tpHalMissedBeaconIndParams)pEventData->pEventData;
Jeff Johnson295189b2012-06-20 16:38:30 -070020256 /*-------------------------------------------------------------------------
20257 Extract indication and send it to UMAC
20258 -------------------------------------------------------------------------*/
20259 /*! TO DO: Parameters need to be unpacked according to HAL struct*/
20260 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070020261 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070020262
20263 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020264 wdiInd.wdiIndicationType = WDI_MISSED_BEACON_IND;
Leela Venkata Kiran Kumar Reddy Chirala3ca17902013-02-27 19:50:05 -080020265 wdiInd.wdiIndicationData.wdiMissedBeaconInd.bssIdx =
20266 halMissedBeaconIndParams->bssIdx;
ltimariub77f24b2013-01-24 18:54:33 -080020267 if ( pWDICtx->wdiLowLevelIndCB )
20268 {
20269 /*Notify UMAC*/
20270 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
20271 }
Jeff Johnsone7245742012-09-05 17:12:55 -070020272
20273 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020274}/*WDI_ProcessMissedBeaconInd*/
20275
20276
20277/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020278 @brief Process Unk Addr Frame Indication function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070020279 an indication of this kind is being received over the
20280 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020281
20282 @param pWDICtx: pointer to the WLAN DAL context
20283 pEventData: pointer to the event information structure
20284
Jeff Johnson295189b2012-06-20 16:38:30 -070020285 @see
20286 @return Result of the function call
20287*/
20288WDI_Status
20289WDI_ProcessUnkAddrFrameInd
Jeff Johnsone7245742012-09-05 17:12:55 -070020290(
Jeff Johnson295189b2012-06-20 16:38:30 -070020291 WDI_ControlBlockType* pWDICtx,
20292 WDI_EventInfoType* pEventData
20293)
20294{
20295 WDI_Status wdiStatus;
20296 eHalStatus halStatus;
20297 WDI_LowLevelIndType wdiInd;
20298 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20299
20300 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020301 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020302 -------------------------------------------------------------------------*/
20303 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20304 ( NULL == pEventData->pEventData))
20305 {
20306 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020307 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020308 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020309 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020310 }
20311
20312 /*-------------------------------------------------------------------------
20313 Extract indication and send it to UMAC
20314 -------------------------------------------------------------------------*/
20315 /*! TO DO: Parameters need to be unpacked according to HAL struct*/
20316 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070020317 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070020318
20319 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020320 wdiInd.wdiIndicationType = WDI_UNKNOWN_ADDR2_FRAME_RX_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070020321 /* ! TO DO - fill in from HAL struct:
20322 wdiInd.wdiIndicationData.wdiUnkAddr2FrmInfo*/
20323
ltimariub77f24b2013-01-24 18:54:33 -080020324 if ( pWDICtx->wdiLowLevelIndCB )
20325 {
20326 /*Notify UMAC*/
20327 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
20328 }
Jeff Johnsone7245742012-09-05 17:12:55 -070020329
20330 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020331}/*WDI_ProcessUnkAddrFrameInd*/
20332
20333
20334/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020335 @brief Process MIC Failure Indication function (called when an
Jeff Johnson295189b2012-06-20 16:38:30 -070020336 indication of this kind is being received over the bus
20337 from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020338
20339 @param pWDICtx: pointer to the WLAN DAL context
20340 pEventData: pointer to the event information structure
20341
Jeff Johnson295189b2012-06-20 16:38:30 -070020342 @see
20343 @return Result of the function call
20344*/
20345WDI_Status
20346WDI_ProcessMicFailureInd
Jeff Johnsone7245742012-09-05 17:12:55 -070020347(
Jeff Johnson295189b2012-06-20 16:38:30 -070020348 WDI_ControlBlockType* pWDICtx,
20349 WDI_EventInfoType* pEventData
20350)
20351{
20352 WDI_LowLevelIndType wdiInd;
20353 tpSirMicFailureInd pHalMicFailureInd;
20354
20355 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20356
20357 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020358 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020359 -------------------------------------------------------------------------*/
20360 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20361 ( NULL == pEventData->pEventData))
20362 {
20363 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020364 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020365 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020366 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020367 }
Jeff Johnsone7245742012-09-05 17:12:55 -070020368
Jeff Johnson295189b2012-06-20 16:38:30 -070020369 pHalMicFailureInd = (tpSirMicFailureInd)pEventData->pEventData;
20370 /*-------------------------------------------------------------------------
20371 Extract indication and send it to UMAC
20372 -------------------------------------------------------------------------*/
20373
20374 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020375 wdiInd.wdiIndicationType = WDI_MIC_FAILURE_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070020376 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.bssId,
20377 pHalMicFailureInd->bssId, WDI_MAC_ADDR_LEN);
20378 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.macSrcAddr,
20379 pHalMicFailureInd->info.srcMacAddr, WDI_MAC_ADDR_LEN);
20380 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.macTaAddr,
20381 pHalMicFailureInd->info.taMacAddr, WDI_MAC_ADDR_LEN);
20382 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.macDstAddr,
20383 pHalMicFailureInd->info.dstMacAddr, WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070020384 wdiInd.wdiIndicationData.wdiMICFailureInfo.ucMulticast =
Jeff Johnson295189b2012-06-20 16:38:30 -070020385 pHalMicFailureInd->info.multicast;
Jeff Johnsone7245742012-09-05 17:12:55 -070020386 wdiInd.wdiIndicationData.wdiMICFailureInfo.ucIV1 =
Jeff Johnson295189b2012-06-20 16:38:30 -070020387 pHalMicFailureInd->info.IV1;
Jeff Johnsone7245742012-09-05 17:12:55 -070020388 wdiInd.wdiIndicationData.wdiMICFailureInfo.keyId=
Jeff Johnson295189b2012-06-20 16:38:30 -070020389 pHalMicFailureInd->info.keyId;
20390 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.TSC,
20391 pHalMicFailureInd->info.TSC,WDI_CIPHER_SEQ_CTR_SIZE);
20392 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.macRxAddr,
20393 pHalMicFailureInd->info.rxMacAddr, WDI_MAC_ADDR_LEN);
ltimariub77f24b2013-01-24 18:54:33 -080020394
20395 if ( pWDICtx->wdiLowLevelIndCB )
20396 {
20397 /*Notify UMAC*/
20398 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
20399 }
Jeff Johnsone7245742012-09-05 17:12:55 -070020400
20401 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020402}/*WDI_ProcessMicFailureInd*/
20403
20404
20405/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020406 @brief Process Fatal Failure Indication function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070020407 an indication of this kind is being received over the
20408 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020409
20410 @param pWDICtx: pointer to the WLAN DAL context
20411 pEventData: pointer to the event information structure
20412
Jeff Johnson295189b2012-06-20 16:38:30 -070020413 @see
20414 @return Result of the function call
20415*/
20416WDI_Status
20417WDI_ProcessFatalErrorInd
Jeff Johnsone7245742012-09-05 17:12:55 -070020418(
Jeff Johnson295189b2012-06-20 16:38:30 -070020419 WDI_ControlBlockType* pWDICtx,
20420 WDI_EventInfoType* pEventData
20421)
20422{
20423 WDI_Status wdiStatus;
20424 eHalStatus halStatus;
20425 WDI_LowLevelIndType wdiInd;
20426 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20427
20428 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020429 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020430 -------------------------------------------------------------------------*/
20431 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20432 ( NULL == pEventData->pEventData))
20433 {
20434 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020435 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020436 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020437 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020438 }
20439
20440 /*-------------------------------------------------------------------------
20441 Extract indication and send it to UMAC
20442 -------------------------------------------------------------------------*/
20443
20444 /*! TO DO: Parameters need to be unpacked according to HAL struct*/
20445 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070020446 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070020447
20448 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
20449 "Fatal failure received from device %d ", halStatus );
Jeff Johnsone7245742012-09-05 17:12:55 -070020450
Jeff Johnson295189b2012-06-20 16:38:30 -070020451 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020452 wdiInd.wdiIndicationType = WDI_FATAL_ERROR_IND;
20453 wdiInd.wdiIndicationData.usErrorCode = WDI_ERR_DEV_INTERNAL_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020454
ltimariub77f24b2013-01-24 18:54:33 -080020455 if ( pWDICtx->wdiLowLevelIndCB )
20456 {
20457 /*Notify UMAC*/
20458 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
20459 }
Jeff Johnsone7245742012-09-05 17:12:55 -070020460
20461 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020462}/*WDI_ProcessFatalErrorInd*/
20463
20464/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020465 @brief Process Delete STA Indication function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070020466 an indication of this kind is being received over the
20467 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020468
20469 @param pWDICtx: pointer to the WLAN DAL context
20470 pEventData: pointer to the event information structure
20471
Jeff Johnson295189b2012-06-20 16:38:30 -070020472 @see
20473 @return Result of the function call
20474*/
20475WDI_Status
20476WDI_ProcessDelSTAInd
Jeff Johnsone7245742012-09-05 17:12:55 -070020477(
Jeff Johnson295189b2012-06-20 16:38:30 -070020478 WDI_ControlBlockType* pWDICtx,
20479 WDI_EventInfoType* pEventData
20480)
20481{
20482 tDeleteStaContextParams halDelSTACtx;
20483 WDI_LowLevelIndType wdiInd;
20484 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20485
20486 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020487 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020488 -------------------------------------------------------------------------*/
20489 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20490 ( NULL == pEventData->pEventData))
20491 {
20492 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020493 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020494 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020495 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020496 }
20497
20498 /*-------------------------------------------------------------------------
20499 Extract indication and send it to UMAC
20500 -------------------------------------------------------------------------*/
20501
20502 /* Parameters need to be unpacked according to HAL struct*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020503 wpalMemoryCopy( &halDelSTACtx,
20504 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070020505 sizeof(halDelSTACtx));
20506
20507 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020508 wdiInd.wdiIndicationType = WDI_DEL_STA_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070020509
20510 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiDeleteSTAIndType.macADDR2,
20511 halDelSTACtx.addr2, WDI_MAC_ADDR_LEN);
20512 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiDeleteSTAIndType.macBSSID,
20513 halDelSTACtx.bssId, WDI_MAC_ADDR_LEN);
20514
Jeff Johnsone7245742012-09-05 17:12:55 -070020515 wdiInd.wdiIndicationData.wdiDeleteSTAIndType.usAssocId =
Jeff Johnson295189b2012-06-20 16:38:30 -070020516 halDelSTACtx.assocId;
Jeff Johnsone7245742012-09-05 17:12:55 -070020517 wdiInd.wdiIndicationData.wdiDeleteSTAIndType.ucSTAIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070020518 halDelSTACtx.staId;
Jeff Johnsone7245742012-09-05 17:12:55 -070020519 wdiInd.wdiIndicationData.wdiDeleteSTAIndType.wptReasonCode =
20520 halDelSTACtx.reasonCode;
Jeff Johnson295189b2012-06-20 16:38:30 -070020521
ltimariub77f24b2013-01-24 18:54:33 -080020522 if ( pWDICtx->wdiLowLevelIndCB )
20523 {
20524 /*Notify UMAC*/
20525 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
20526 }
Jeff Johnsone7245742012-09-05 17:12:55 -070020527
20528 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020529}/*WDI_ProcessDelSTAInd*/
20530
20531/**
20532*@brief Process Coex Indication function (called when
20533 an indication of this kind is being received over the
20534 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020535
20536 @param pWDICtx: pointer to the WLAN DAL context
20537 pEventData: pointer to the event information structure
20538
Jeff Johnson295189b2012-06-20 16:38:30 -070020539 @see
20540 @return Result of the function call
20541*/
20542WDI_Status
20543WDI_ProcessCoexInd
Jeff Johnsone7245742012-09-05 17:12:55 -070020544(
Jeff Johnson295189b2012-06-20 16:38:30 -070020545 WDI_ControlBlockType* pWDICtx,
20546 WDI_EventInfoType* pEventData
20547)
20548{
20549 WDI_LowLevelIndType wdiInd;
20550 tCoexIndMsg halCoexIndMsg;
20551 wpt_uint32 index;
20552 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20553
20554 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020555 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020556 -------------------------------------------------------------------------*/
20557 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20558 ( NULL == pEventData->pEventData ))
20559 {
20560 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020561 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020562 WDI_ASSERT( 0 );
Jeff Johnsone7245742012-09-05 17:12:55 -070020563 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020564 }
20565
20566 /*-------------------------------------------------------------------------
20567 Extract indication and send it to UMAC
20568 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020569 wpalMemoryCopy( &halCoexIndMsg.coexIndParams,
20570 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070020571 sizeof(halCoexIndMsg.coexIndParams) );
20572
20573 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020574 wdiInd.wdiIndicationType = WDI_COEX_IND;
20575 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndType = halCoexIndMsg.coexIndParams.coexIndType;
Jeff Johnson295189b2012-06-20 16:38:30 -070020576 for (index = 0; index < WDI_COEX_IND_DATA_SIZE; index++)
20577 {
Jeff Johnsone7245742012-09-05 17:12:55 -070020578 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[index] = halCoexIndMsg.coexIndParams.coexIndData[index];
Jeff Johnson295189b2012-06-20 16:38:30 -070020579 }
20580
20581 // DEBUG
20582 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
20583 "[COEX WDI] Coex Ind Type (%x) data (%x %x %x %x)",
Jeff Johnsone7245742012-09-05 17:12:55 -070020584 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndType,
20585 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[0],
20586 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[1],
20587 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[2],
20588 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[3] );
Jeff Johnson295189b2012-06-20 16:38:30 -070020589
ltimariub77f24b2013-01-24 18:54:33 -080020590 if ( pWDICtx->wdiLowLevelIndCB )
20591 {
20592 /*Notify UMAC*/
20593 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
20594 }
Jeff Johnsone7245742012-09-05 17:12:55 -070020595
20596 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020597}/*WDI_ProcessCoexInd*/
20598
20599/**
20600*@brief Process Tx Complete Indication function (called when
20601 an indication of this kind is being received over the
20602 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020603
20604 @param pWDICtx: pointer to the WLAN DAL context
20605 pEventData: pointer to the event information structure
20606
Jeff Johnson295189b2012-06-20 16:38:30 -070020607 @see
20608 @return Result of the function call
20609*/
20610WDI_Status
20611WDI_ProcessTxCompleteInd
Jeff Johnsone7245742012-09-05 17:12:55 -070020612(
Jeff Johnson295189b2012-06-20 16:38:30 -070020613 WDI_ControlBlockType* pWDICtx,
20614 WDI_EventInfoType* pEventData
20615)
20616{
20617 WDI_LowLevelIndType wdiInd;
20618 tTxComplIndMsg halTxComplIndMsg;
20619 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20620
20621 /*-------------------------------------------------------------------------
20622 Sanity check
20623 -------------------------------------------------------------------------*/
20624 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20625 ( NULL == pEventData->pEventData ))
20626 {
20627 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020628 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020629 WDI_ASSERT( 0 );
20630 return WDI_STATUS_E_FAILURE;
20631 }
20632
20633 /*-------------------------------------------------------------------------
20634 Extract indication and send it to UMAC
20635 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020636 wpalMemoryCopy( &halTxComplIndMsg.txComplParams,
20637 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070020638 sizeof(halTxComplIndMsg.txComplParams) );
20639
20640 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020641 wdiInd.wdiIndicationType = WDI_TX_COMPLETE_IND;
20642 wdiInd.wdiIndicationData.tx_complete_status
20643 = halTxComplIndMsg.txComplParams.status;
Jeff Johnson295189b2012-06-20 16:38:30 -070020644
ltimariub77f24b2013-01-24 18:54:33 -080020645 if ( pWDICtx->wdiLowLevelIndCB )
20646 {
20647 /*Notify UMAC*/
20648 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
20649 }
Jeff Johnsone7245742012-09-05 17:12:55 -070020650
20651 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020652}/*WDI_ProcessTxCompleteInd*/
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053020653#ifdef FEATURE_WLAN_TDLS
20654/**
20655*@brief Process TDLS Indication function (called when
20656 an indication of this kind is being received over the
20657 bus from HAL)
Jeff Johnson295189b2012-06-20 16:38:30 -070020658
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053020659 @param pWDICtx: pointer to the WLAN DAL context
20660 pEventData: pointer to the event information structure
20661
20662 @see
20663 @return Result of the function call
20664*/
20665WDI_Status
20666WDI_ProcessTdlsInd
20667(
20668 WDI_ControlBlockType* pWDICtx,
20669 WDI_EventInfoType* pEventData
20670)
20671{
20672 WDI_LowLevelIndType wdiInd;
20673 tTdlsIndMsg halTdlsIndMsg;
20674 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20675
20676 /*-------------------------------------------------------------------------
20677 Sanity check
20678 -------------------------------------------------------------------------*/
20679 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20680 ( NULL == pEventData->pEventData ))
20681 {
20682 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
20683 "%s: Invalid parameters", __func__);
20684 WDI_ASSERT( 0 );
20685 return WDI_STATUS_E_FAILURE;
20686 }
20687
20688 /*-------------------------------------------------------------------------
20689 Extract indication and send it to UMAC
20690 -------------------------------------------------------------------------*/
20691 wpalMemoryCopy( &halTdlsIndMsg.tdlsIndParams,
20692 pEventData->pEventData,
20693 sizeof(halTdlsIndMsg.tdlsIndParams) );
20694
20695 /*Fill in the indication parameters*/
20696 wdiInd.wdiIndicationType = WDI_TDLS_IND;
20697
20698 wdiInd.wdiIndicationData.wdiTdlsIndInfo.status
20699 = halTdlsIndMsg.tdlsIndParams.status;
20700
20701 wdiInd.wdiIndicationData.wdiTdlsIndInfo.staIdx
20702 = halTdlsIndMsg.tdlsIndParams.staIdx;
20703
20704 wdiInd.wdiIndicationData.wdiTdlsIndInfo.reasonCode
20705 = halTdlsIndMsg.tdlsIndParams.reasonCode;
20706
20707 /*Notify UMAC*/
20708 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
20709
20710 return WDI_STATUS_SUCCESS;
20711}/*WDI_ProcessTdlsInd*/
20712#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070020713/**
Viral Modid86bde22012-12-10 13:09:21 -080020714*@brief Process Noa Start Indication function (called when
20715 an indication of this kind is being received over the
20716 bus from HAL)
20717
20718 @param pWDICtx: pointer to the WLAN DAL context
20719 pEventData: pointer to the event information structure
20720
20721 @see
20722 @return Result of the function call
20723*/
20724WDI_Status
20725WDI_ProcessP2pNoaStartInd
20726(
20727 WDI_ControlBlockType* pWDICtx,
20728 WDI_EventInfoType* pEventData
20729)
20730{
20731 WDI_LowLevelIndType wdiInd;
20732 tNoaStartIndMsg halNoaStartIndMsg;
20733 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20734
20735 /*-------------------------------------------------------------------------
20736 Sanity check
20737 -------------------------------------------------------------------------*/
20738 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20739 ( NULL == pEventData->pEventData ))
20740 {
20741 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
20742 "%s: Invalid parameters", __func__);
20743 WDI_ASSERT( 0 );
20744 return WDI_STATUS_E_FAILURE;
20745 }
20746
20747 /*-------------------------------------------------------------------------
20748 Extract indication and send it to UMAC
20749 -------------------------------------------------------------------------*/
20750 wpalMemoryCopy( &halNoaStartIndMsg.noaStartIndParams,
20751 pEventData->pEventData,
20752 sizeof(halNoaStartIndMsg.noaStartIndParams) );
20753
20754 /*Fill in the indication parameters*/
20755 wdiInd.wdiIndicationType = WDI_P2P_NOA_START_IND;
20756
20757 wdiInd.wdiIndicationData.wdiP2pNoaStartInfo.status
20758 = halNoaStartIndMsg.noaStartIndParams.status;
20759
20760 wdiInd.wdiIndicationData.wdiP2pNoaStartInfo.bssIdx
20761 = halNoaStartIndMsg.noaStartIndParams.bssIdx;
20762
20763 /*Notify UMAC*/
20764 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
20765
20766 return WDI_STATUS_SUCCESS;
20767}/*WDI_ProcessNoaAttrInd*/
20768
20769/**
Jeff Johnson295189b2012-06-20 16:38:30 -070020770*@brief Process Noa Attr Indication function (called when
20771 an indication of this kind is being received over the
20772 bus from HAL)
20773
20774 @param pWDICtx: pointer to the WLAN DAL context
20775 pEventData: pointer to the event information structure
20776
20777 @see
20778 @return Result of the function call
20779*/
20780WDI_Status
20781WDI_ProcessP2pNoaAttrInd
20782(
20783 WDI_ControlBlockType* pWDICtx,
20784 WDI_EventInfoType* pEventData
20785)
20786{
20787 WDI_LowLevelIndType wdiInd;
20788 tNoaAttrIndMsg halNoaAttrIndMsg;
20789 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20790
20791 /*-------------------------------------------------------------------------
20792 Sanity check
20793 -------------------------------------------------------------------------*/
20794 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20795 ( NULL == pEventData->pEventData ))
20796 {
20797 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020798 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020799 WDI_ASSERT( 0 );
20800 return WDI_STATUS_E_FAILURE;
20801 }
20802
20803 /*-------------------------------------------------------------------------
20804 Extract indication and send it to UMAC
20805 -------------------------------------------------------------------------*/
20806 wpalMemoryCopy( &halNoaAttrIndMsg.noaAttrIndParams,
20807 pEventData->pEventData,
20808 sizeof(halNoaAttrIndMsg.noaAttrIndParams) );
20809
20810 /*Fill in the indication parameters*/
20811 wdiInd.wdiIndicationType = WDI_P2P_NOA_ATTR_IND;
Jeff Johnsone7245742012-09-05 17:12:55 -070020812
Jeff Johnson295189b2012-06-20 16:38:30 -070020813 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.status
20814 = halNoaAttrIndMsg.noaAttrIndParams.status;
Jeff Johnsone7245742012-09-05 17:12:55 -070020815
Jeff Johnson295189b2012-06-20 16:38:30 -070020816 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.ucIndex
20817 = halNoaAttrIndMsg.noaAttrIndParams.index;
20818 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.ucOppPsFlag
20819 = halNoaAttrIndMsg.noaAttrIndParams.oppPsFlag;
20820 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.usCtWin
20821 = halNoaAttrIndMsg.noaAttrIndParams.ctWin;
Jeff Johnsone7245742012-09-05 17:12:55 -070020822
Jeff Johnson295189b2012-06-20 16:38:30 -070020823 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.usNoa1IntervalCnt
20824 = halNoaAttrIndMsg.noaAttrIndParams.uNoa1IntervalCnt;
20825 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa1Duration
20826 = halNoaAttrIndMsg.noaAttrIndParams.uNoa1Duration;
20827 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa1Interval
20828 = halNoaAttrIndMsg.noaAttrIndParams.uNoa1Interval;
20829 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa1StartTime
20830 = halNoaAttrIndMsg.noaAttrIndParams.uNoa1StartTime;
Jeff Johnsone7245742012-09-05 17:12:55 -070020831
Jeff Johnson295189b2012-06-20 16:38:30 -070020832 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.usNoa2IntervalCnt
20833 = halNoaAttrIndMsg.noaAttrIndParams.uNoa2IntervalCnt;
20834 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa2Duration
20835 = halNoaAttrIndMsg.noaAttrIndParams.uNoa2Duration;
20836 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa2Interval
20837 = halNoaAttrIndMsg.noaAttrIndParams.uNoa2Interval;
20838 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa2StartTime
20839 = halNoaAttrIndMsg.noaAttrIndParams.uNoa2StartTime;
20840
ltimariub77f24b2013-01-24 18:54:33 -080020841 if ( pWDICtx->wdiLowLevelIndCB )
20842 {
20843 /*Notify UMAC*/
20844 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
20845 }
Jeff Johnson295189b2012-06-20 16:38:30 -070020846
20847 return WDI_STATUS_SUCCESS;
20848}/*WDI_ProcessNoaAttrInd*/
Jeff Johnson295189b2012-06-20 16:38:30 -070020849
20850/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020851 @brief Process Tx PER Hit Indication function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070020852 an indication of this kind is being received over the
20853 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020854
20855 @param pWDICtx: pointer to the WLAN DAL context
20856 pEventData: pointer to the event information structure
20857
Jeff Johnson295189b2012-06-20 16:38:30 -070020858 @see
20859 @return Result of the function call
20860*/
20861WDI_Status
20862WDI_ProcessTxPerHitInd
Jeff Johnsone7245742012-09-05 17:12:55 -070020863(
Jeff Johnson295189b2012-06-20 16:38:30 -070020864 WDI_ControlBlockType* pWDICtx,
20865 WDI_EventInfoType* pEventData
20866)
20867{
20868 WDI_LowLevelIndType wdiInd;
20869 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Jeff Johnsone7245742012-09-05 17:12:55 -070020870
Jeff Johnson295189b2012-06-20 16:38:30 -070020871 /*-------------------------------------------------------------------------
20872 Extract indication and send it to UMAC
20873 -------------------------------------------------------------------------*/
20874 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020875 wdiInd.wdiIndicationType = WDI_TX_PER_HIT_IND;
20876
ltimariub77f24b2013-01-24 18:54:33 -080020877 if ( pWDICtx->wdiLowLevelIndCB )
20878 {
20879 /*Notify UMAC*/
20880 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
20881 }
Jeff Johnson295189b2012-06-20 16:38:30 -070020882
Jeff Johnsone7245742012-09-05 17:12:55 -070020883 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020884}/*WDI_ProcessTxPerHitInd*/
20885
Jeff Johnson295189b2012-06-20 16:38:30 -070020886/**
Yue Mab9c86f42013-08-14 15:59:08 -070020887 @brief Process Periodic Tx Pattern Fw Indication function
20888
20889 @param pWDICtx: pointer to the WLAN DAL context
20890 pEventData: pointer to the event information structure
20891
20892 @see
20893 @return Result of the function call
20894*/
20895WDI_Status
20896WDI_ProcessPeriodicTxPtrnFwInd
20897(
20898 WDI_ControlBlockType* pWDICtx,
20899 WDI_EventInfoType* pEventData
20900)
20901{
20902 WDI_LowLevelIndType wdiInd;
20903
20904 /*-------------------------------------------------------------------------
20905 Sanity check
20906 -------------------------------------------------------------------------*/
20907 if ((NULL == pWDICtx) || (NULL == pEventData) ||
20908 (NULL == pEventData->pEventData))
20909 {
20910 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
20911 "%s: Invalid parameters", __func__);
20912 WDI_ASSERT(0);
20913 return WDI_STATUS_E_FAILURE;
20914 }
20915
20916 /*-------------------------------------------------------------------------
20917 Extract indication and send it to UMAC
20918 -------------------------------------------------------------------------*/
20919 wpalMemoryCopy(&(wdiInd.wdiIndicationData.wdiPeriodicTxPtrnFwInd),
20920 (tHalPeriodicTxPtrnFwInd *)pEventData->pEventData,
20921 sizeof(tHalPeriodicTxPtrnFwInd));
20922
20923 if (pWDICtx->wdiLowLevelIndCB)
20924 {
20925 /*Notify UMAC*/
20926 pWDICtx->wdiLowLevelIndCB(&wdiInd, pWDICtx->pIndUserData);
20927 }
20928
20929 return WDI_STATUS_SUCCESS;
20930}
20931
20932/**
Jeff Johnson295189b2012-06-20 16:38:30 -070020933 @brief WDI_ProcessFTMCommandReq
20934 Process FTM Command, simply route to HAL
Jeff Johnsone7245742012-09-05 17:12:55 -070020935
20936 @param pWDICtx: pointer to the WLAN DAL context
20937 pEventData: pointer to the event information structure
20938
Jeff Johnson295189b2012-06-20 16:38:30 -070020939 @see
20940 @return Result of the function call
20941*/
20942WDI_Status
20943WDI_ProcessFTMCommandReq
Jeff Johnsone7245742012-09-05 17:12:55 -070020944(
Jeff Johnson295189b2012-06-20 16:38:30 -070020945 WDI_ControlBlockType* pWDICtx,
20946 WDI_EventInfoType* pEventData
20947)
20948{
20949 WDI_FTMCommandReqType *ftmCommandReq = NULL;
20950 wpt_uint8 *ftmCommandBuffer = NULL;
20951 wpt_uint16 dataOffset;
20952 wpt_uint16 bufferSize;
20953 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020954 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020955 -------------------------------------------------------------------------*/
20956 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20957 ( NULL == pEventData->pEventData))
20958
20959 {
20960 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020961 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020962 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020963 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020964 }
20965
20966 ftmCommandReq = (WDI_FTMCommandReqType *)pEventData->pEventData;
20967
20968 /* Get MSG Buffer */
20969 WDI_GetMessageBuffer(pWDICtx,
20970 WDI_FTM_CMD_REQ,
20971 ftmCommandReq->bodyLength,
20972 &ftmCommandBuffer,
20973 &dataOffset,
20974 &bufferSize);
20975
20976 wpalMemoryCopy(ftmCommandBuffer + dataOffset,
20977 ftmCommandReq->FTMCommandBody,
20978 ftmCommandReq->bodyLength);
20979
20980 /* Send MSG */
20981 return WDI_SendMsg(pWDICtx,
20982 ftmCommandBuffer,
20983 bufferSize,
20984 pEventData->pCBfnc,
20985 pEventData->pUserData,
20986 WDI_FTM_CMD_RESP);
20987}
20988
20989/**
20990 @brief WDI_ProcessFTMCommandRsp
20991 Process FTM Command Response from HAL, simply route to HDD FTM
Jeff Johnsone7245742012-09-05 17:12:55 -070020992
20993 @param pWDICtx: pointer to the WLAN DAL context
20994 pEventData: pointer to the event information structure
20995
Jeff Johnson295189b2012-06-20 16:38:30 -070020996 @see
20997 @return Result of the function call
20998*/
20999WDI_Status
21000WDI_ProcessFTMCommandRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070021001(
Jeff Johnson295189b2012-06-20 16:38:30 -070021002 WDI_ControlBlockType* pWDICtx,
21003 WDI_EventInfoType* pEventData
21004)
21005{
21006 WDI_FTMCommandRspCb ftmCMDRspCb;
21007 tProcessPttRspParams *ftmCMDRspData = NULL;
21008 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21009
21010 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021011 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021012 -------------------------------------------------------------------------*/
21013 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21014 ( NULL == pEventData->pEventData))
21015 {
21016 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021017 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021018 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021019 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021020 }
21021
21022 ftmCMDRspCb = (WDI_FTMCommandRspCb)pWDICtx->pfncRspCB;
21023
21024 ftmCMDRspData = (tProcessPttRspParams *)pEventData->pEventData;
21025
Jeff Johnsone7245742012-09-05 17:12:55 -070021026 wpalMemoryCopy((void *)pWDICtx->ucFTMCommandRspBuffer,
21027 (void *)&ftmCMDRspData->pttMsgBuffer,
Jeff Johnson295189b2012-06-20 16:38:30 -070021028 ftmCMDRspData->pttMsgBuffer.msgBodyLength);
21029
21030 /*Notify UMAC*/
21031 ftmCMDRspCb((void *)pWDICtx->ucFTMCommandRspBuffer, pWDICtx->pRspCBUserData);
21032
Jeff Johnsone7245742012-09-05 17:12:55 -070021033 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021034}
Jeff Johnson295189b2012-06-20 16:38:30 -070021035/**
21036 @brief WDI_ProcessHalDumpCmdReq
21037 Process hal dump Command, simply route to HAL
Jeff Johnsone7245742012-09-05 17:12:55 -070021038
21039 @param pWDICtx: pointer to the WLAN DAL context
21040 pEventData: pointer to the event information structure
21041
Jeff Johnson295189b2012-06-20 16:38:30 -070021042 @see
21043 @return Result of the function call
21044*/
21045WDI_Status
21046WDI_ProcessHALDumpCmdReq
Jeff Johnsone7245742012-09-05 17:12:55 -070021047(
Jeff Johnson295189b2012-06-20 16:38:30 -070021048 WDI_ControlBlockType* pWDICtx,
21049 WDI_EventInfoType* pEventData
21050)
21051{
21052 WDI_HALDumpCmdReqParamsType* pwdiHALDumpCmdParams = NULL;
21053 WDI_HALDumpCmdRspCb wdiHALDumpCmdRspCb = NULL;
21054 wpt_uint16 usDataOffset = 0;
21055 wpt_uint16 usSendSize = 0;
21056 tHalDumpCmdReqMsg halDumpCmdReqMsg;
Jeff Johnsone7245742012-09-05 17:12:55 -070021057 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070021058
21059 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021060 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021061 -------------------------------------------------------------------------*/
21062 if (( NULL == pEventData ) ||
21063 ( NULL == pEventData->pEventData) ||
21064 ( NULL == pEventData->pCBfnc ))
21065 {
21066 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021067 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021068 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021069 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021070 }
21071
21072 pwdiHALDumpCmdParams = (WDI_HALDumpCmdReqParamsType*)pEventData->pEventData;
21073 wdiHALDumpCmdRspCb = (WDI_HALDumpCmdRspCb)pEventData->pCBfnc;
21074
21075 /* Copying the HAL DUMP Command Information HAL Structure*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021076 halDumpCmdReqMsg.dumpCmdReqParams.argument1 =
Jeff Johnson295189b2012-06-20 16:38:30 -070021077 pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.command;
Jeff Johnsone7245742012-09-05 17:12:55 -070021078 halDumpCmdReqMsg.dumpCmdReqParams.argument2 =
Jeff Johnson295189b2012-06-20 16:38:30 -070021079 pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.argument1;
Jeff Johnsone7245742012-09-05 17:12:55 -070021080 halDumpCmdReqMsg.dumpCmdReqParams.argument3 =
Jeff Johnson295189b2012-06-20 16:38:30 -070021081 pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.argument2;
Jeff Johnsone7245742012-09-05 17:12:55 -070021082 halDumpCmdReqMsg.dumpCmdReqParams.argument4 =
Jeff Johnson295189b2012-06-20 16:38:30 -070021083 pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.argument3;
Jeff Johnsone7245742012-09-05 17:12:55 -070021084 halDumpCmdReqMsg.dumpCmdReqParams.argument5 =
Jeff Johnson295189b2012-06-20 16:38:30 -070021085 pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.argument4;
Jeff Johnsone7245742012-09-05 17:12:55 -070021086
Jeff Johnson295189b2012-06-20 16:38:30 -070021087 /*-----------------------------------------------------------------------
21088 Get message buffer
21089 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021090 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_HAL_DUMP_CMD_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070021091 sizeof(halDumpCmdReqMsg.dumpCmdReqParams),
21092 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070021093 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070021094 (usDataOffset + sizeof(halDumpCmdReqMsg.dumpCmdReqParams) )))
21095 {
21096 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080021097 "Unable to get send buffer in HAL Dump Command req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070021098 pEventData, pwdiHALDumpCmdParams, wdiHALDumpCmdRspCb);
21099 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021100 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021101 }
21102
Jeff Johnsone7245742012-09-05 17:12:55 -070021103 wpalMemoryCopy( pSendBuffer+usDataOffset,
21104 &halDumpCmdReqMsg.dumpCmdReqParams,
21105 sizeof(halDumpCmdReqMsg.dumpCmdReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070021106
21107 pWDICtx->wdiReqStatusCB = pwdiHALDumpCmdParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070021108 pWDICtx->pReqStatusUserData = pwdiHALDumpCmdParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070021109
21110 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021111 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070021112 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021113 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
21114 wdiHALDumpCmdRspCb, pEventData->pUserData,
21115 WDI_HAL_DUMP_CMD_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070021116}
21117
21118/**
21119 @brief WDI_ProcessHalDumpCmdRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070021120 Process hal Dump Command Response from HAL, simply route to HDD
21121
21122 @param pWDICtx: pointer to the WLAN DAL context
21123 pEventData: pointer to the event information structure
21124
Jeff Johnson295189b2012-06-20 16:38:30 -070021125 @see
21126 @return Result of the function call
21127*/
21128WDI_Status
21129WDI_ProcessHALDumpCmdRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070021130(
Jeff Johnson295189b2012-06-20 16:38:30 -070021131 WDI_ControlBlockType* pWDICtx,
21132 WDI_EventInfoType* pEventData
21133)
21134{
21135 WDI_HALDumpCmdRspCb wdiHALDumpCmdRspCb;
Gopichand Nakkalafab3fae2013-01-07 15:01:01 -080021136 tHalDumpCmdRspParams halDumpCmdRspParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070021137 WDI_HALDumpCmdRspParamsType wdiHALDumpCmdRsp;
21138
21139 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021140 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021141 -------------------------------------------------------------------------*/
21142 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21143 ( NULL == pEventData->pEventData))
21144 {
21145 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021146 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021147 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021148 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021149 }
21150
Jeff Johnsone7245742012-09-05 17:12:55 -070021151 wdiHALDumpCmdRspCb = (WDI_HALDumpCmdRspCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070021152
21153 /*Initialize the WDI Response structure */
21154 wdiHALDumpCmdRsp.usBufferLen = 0;
21155 wdiHALDumpCmdRsp.pBuffer = NULL;
21156
Gopichand Nakkalafab3fae2013-01-07 15:01:01 -080021157 wpalMemoryCopy( &halDumpCmdRspParams,
21158 pEventData->pEventData,
21159 sizeof(tHalDumpCmdRspParams));
Jeff Johnsone7245742012-09-05 17:12:55 -070021160
21161 wdiHALDumpCmdRsp.wdiStatus =
Gopichand Nakkalafab3fae2013-01-07 15:01:01 -080021162 WDI_HAL_2_WDI_STATUS(halDumpCmdRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070021163
21164 if (( wdiHALDumpCmdRsp.wdiStatus == WDI_STATUS_SUCCESS) &&
Gopichand Nakkalafab3fae2013-01-07 15:01:01 -080021165 (halDumpCmdRspParams.rspLength != 0))
Jeff Johnson295189b2012-06-20 16:38:30 -070021166 {
21167 /* Copy the response data */
Gopichand Nakkalafab3fae2013-01-07 15:01:01 -080021168 wdiHALDumpCmdRsp.usBufferLen = halDumpCmdRspParams.rspLength;
21169 wdiHALDumpCmdRsp.pBuffer = wpalMemoryAllocate(halDumpCmdRspParams.rspLength);
21170
21171 wpalMemoryCopy( wdiHALDumpCmdRsp.pBuffer,
21172 &halDumpCmdRspParams.rspBuffer,
Gopichand Nakkala089c2582013-04-04 15:40:10 +053021173 halDumpCmdRspParams.rspLength);
Jeff Johnson295189b2012-06-20 16:38:30 -070021174 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021175
Jeff Johnson295189b2012-06-20 16:38:30 -070021176 /*Notify UMAC*/
21177 wdiHALDumpCmdRspCb(&wdiHALDumpCmdRsp, pWDICtx->pRspCBUserData);
21178
21179 if(wdiHALDumpCmdRsp.pBuffer != NULL)
21180 {
21181 /* Free the allocated buffer */
21182 wpalMemoryFree(wdiHALDumpCmdRsp.pBuffer);
21183 }
21184 return WDI_STATUS_SUCCESS;
21185}
21186
21187/*==========================================================================
21188 CONTRL TRANSPORT INTERACTION
Jeff Johnsone7245742012-09-05 17:12:55 -070021189
Jeff Johnson295189b2012-06-20 16:38:30 -070021190 Callback function registered with the control transport - for receiving
Jeff Johnsone7245742012-09-05 17:12:55 -070021191 notifications and packets
Jeff Johnson295189b2012-06-20 16:38:30 -070021192==========================================================================*/
21193/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021194 @brief This callback is invoked by the control transport
Jeff Johnson295189b2012-06-20 16:38:30 -070021195 when it wishes to send up a notification like the ones
21196 mentioned above.
Jeff Johnsone7245742012-09-05 17:12:55 -070021197
Jeff Johnson295189b2012-06-20 16:38:30 -070021198 @param
Jeff Johnsone7245742012-09-05 17:12:55 -070021199
21200 wctsHandle: handle to the control transport service
Jeff Johnson295189b2012-06-20 16:38:30 -070021201 wctsEvent: the event being notified
Jeff Johnsone7245742012-09-05 17:12:55 -070021202 wctsNotifyCBData: the callback data of the user
21203
Jeff Johnson295189b2012-06-20 16:38:30 -070021204 @see WCTS_OpenTransport
Jeff Johnsone7245742012-09-05 17:12:55 -070021205
21206 @return None
Jeff Johnson295189b2012-06-20 16:38:30 -070021207*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021208void
Jeff Johnson295189b2012-06-20 16:38:30 -070021209WDI_NotifyMsgCTSCB
21210(
Jeff Johnsone7245742012-09-05 17:12:55 -070021211 WCTS_HandleType wctsHandle,
Jeff Johnson295189b2012-06-20 16:38:30 -070021212 WCTS_NotifyEventType wctsEvent,
21213 void* wctsNotifyCBData
21214)
21215{
Jeff Johnsone7245742012-09-05 17:12:55 -070021216 WDI_ControlBlockType* pWDICtx = (WDI_ControlBlockType*)wctsNotifyCBData;
Jeff Johnson295189b2012-06-20 16:38:30 -070021217 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21218
21219 if (NULL == pWDICtx )
21220 {
21221 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021222 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021223 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021224 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070021225 }
21226
21227 if (WDI_CONTROL_BLOCK_MAGIC != pWDICtx->magic)
21228 {
21229 /* callback presumably occurred after close */
21230 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021231 "%s: Invalid control block", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070021232 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070021233 }
21234
21235 if ( WCTS_EVENT_OPEN == wctsEvent )
21236 {
21237 /*Flag must be set atomically as it is checked from incoming request
21238 functions*/
21239 wpalMutexAcquire(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070021240 pWDICtx->bCTOpened = eWLAN_PAL_TRUE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021241
21242 /*Nothing to do - so try to dequeue any pending request that may have
21243 occurred while we were trying to establish this*/
21244 WDI_DequeuePendingReq(pWDICtx);
Jeff Johnsone7245742012-09-05 17:12:55 -070021245 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnson295189b2012-06-20 16:38:30 -070021246 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021247 else if ( WCTS_EVENT_CLOSE == wctsEvent )
Jeff Johnson295189b2012-06-20 16:38:30 -070021248 {
21249 /*Flag must be set atomically as it is checked from incoming request
21250 functions*/
21251 wpalMutexAcquire(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070021252 pWDICtx->bCTOpened = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021253
21254 /*No other request will be processed from now on - fail all*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021255 WDI_ClearPendingRequests(pWDICtx);
Jeff Johnson295189b2012-06-20 16:38:30 -070021256 wpalMutexRelease(&pWDICtx->wptMutex);
21257
21258 /*Notify that the Control Channel is closed */
21259 wpalEventSet(&pWDICtx->wctsActionEvent);
21260 }
21261
21262}/*WDI_NotifyMsgCTSCB*/
21263
21264
21265/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021266 @brief This callback is invoked by the control transport
Jeff Johnson295189b2012-06-20 16:38:30 -070021267 when it wishes to send up a packet received over the
21268 bus.
Jeff Johnsone7245742012-09-05 17:12:55 -070021269
Jeff Johnson295189b2012-06-20 16:38:30 -070021270 @param
Jeff Johnsone7245742012-09-05 17:12:55 -070021271
21272 wctsHandle: handle to the control transport service
Jeff Johnson295189b2012-06-20 16:38:30 -070021273 pMsg: the packet
21274 uLen: the packet length
Jeff Johnsone7245742012-09-05 17:12:55 -070021275 wctsRxMsgCBData: the callback data of the user
21276
Jeff Johnson295189b2012-06-20 16:38:30 -070021277 @see WCTS_OpenTransport
Jeff Johnsone7245742012-09-05 17:12:55 -070021278
21279 @return None
Jeff Johnson295189b2012-06-20 16:38:30 -070021280*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021281void
21282WDI_RXMsgCTSCB
Jeff Johnson295189b2012-06-20 16:38:30 -070021283(
Jeff Johnsone7245742012-09-05 17:12:55 -070021284 WCTS_HandleType wctsHandle,
Jeff Johnson295189b2012-06-20 16:38:30 -070021285 void* pMsg,
21286 wpt_uint32 uLen,
21287 void* wctsRxMsgCBData
21288)
21289{
Jeff Johnsone7245742012-09-05 17:12:55 -070021290 tHalMsgHeader *pHalMsgHeader;
21291 WDI_EventInfoType wdiEventData;
Jeff Johnson295189b2012-06-20 16:38:30 -070021292 WDI_ControlBlockType* pWDICtx = (WDI_ControlBlockType*)wctsRxMsgCBData;
21293 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
21294
21295 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021296 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021297 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021298 if ((NULL == pWDICtx ) || ( NULL == pMsg ) ||
Jeff Johnson295189b2012-06-20 16:38:30 -070021299 ( uLen < sizeof(tHalMsgHeader)))
21300 {
21301 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021302 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021303 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021304 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070021305 }
21306
21307 if (WDI_CONTROL_BLOCK_MAGIC != pWDICtx->magic)
21308 {
21309 /* callback presumably occurred after close */
21310 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021311 "%s: Invalid control block", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070021312 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070021313 }
21314
Jeff Johnsone7245742012-09-05 17:12:55 -070021315 /*The RX Callback is expected to be serialized in the proper control thread
Jeff Johnson295189b2012-06-20 16:38:30 -070021316 context - so no serialization is necessary here
21317 ! - revisit this assumption */
21318
21319 pHalMsgHeader = (tHalMsgHeader *)pMsg;
21320
21321 if ( uLen != pHalMsgHeader->msgLen )
21322 {
21323 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
21324 "Invalid packet received from HAL - catastrophic failure");
Jeff Johnsone7245742012-09-05 17:12:55 -070021325 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_INVALID_RSP_FMT);
21326 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070021327 }
21328
21329 wdiEventData.wdiResponse = HAL_2_WDI_RSP_TYPE( pHalMsgHeader->msgType );
21330
21331 /*The message itself starts after the header*/
21332 wdiEventData.pEventData = (wpt_uint8*)pMsg + sizeof(tHalMsgHeader);
21333 wdiEventData.uEventDataSize = pHalMsgHeader->msgLen - sizeof(tHalMsgHeader);
21334 wdiEventData.pCBfnc = gWDICb.pfncRspCB;
21335 wdiEventData.pUserData = gWDICb.pRspCBUserData;
21336
21337
21338 if ( wdiEventData.wdiResponse == pWDICtx->wdiExpectedResponse )
21339 {
21340 /*Stop the timer as the response was received */
21341 /*!UT - check for potential race conditions between stop and response */
21342 wpalTimerStop(&pWDICtx->wptResponseTimer);
21343 }
21344 /* Check if we receive a response message which is not expected */
21345 else if ( wdiEventData.wdiResponse < WDI_HAL_IND_MIN )
21346 {
21347 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
21348 "Received response %s (%d) when expecting %s (%d) - catastrophic failure",
21349 WDI_getRespMsgString(wdiEventData.wdiResponse),
Jeff Johnsone7245742012-09-05 17:12:55 -070021350 wdiEventData.wdiResponse,
Jeff Johnson295189b2012-06-20 16:38:30 -070021351 WDI_getRespMsgString(pWDICtx->wdiExpectedResponse),
21352 pWDICtx->wdiExpectedResponse);
Sameer Thalappil4bb20cb2013-11-15 14:50:51 -080021353
21354 if (gWDICb.bEnableSSR == false)
21355 {
21356 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
21357 "SSR is not enabled on WDI timeout");
21358 WDI_DetectedDeviceError(pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
21359 return;
21360 }
21361 wpalWcnssResetIntr();
21362 /* if this timer fires, it means Riva did not receive the FIQ */
21363 wpalTimerStart(&pWDICtx->ssrTimer, WDI_SSR_TIMEOUT);
21364
Jeff Johnson295189b2012-06-20 16:38:30 -070021365 return;
21366 }
21367
21368 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
21369 "Rx smth from HAL: %d", wdiEventData.wdiResponse);
21370
21371 /*Post response event to the state machine*/
21372 WDI_PostMainEvent(pWDICtx, WDI_RESPONSE_EVENT, &wdiEventData);
21373
21374}/*WDI_RXMsgCTSCB*/
21375
21376
21377/*========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070021378 Internal Helper Routines
Jeff Johnson295189b2012-06-20 16:38:30 -070021379========================================================================*/
21380
21381/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021382 @brief WDI_CleanCB - internal helper routine used to clean the
Jeff Johnson295189b2012-06-20 16:38:30 -070021383 WDI Main Control Block
Jeff Johnsone7245742012-09-05 17:12:55 -070021384
Jeff Johnson295189b2012-06-20 16:38:30 -070021385 @param pWDICtx - pointer to the control block
21386
21387 @return Result of the function call
21388*/
21389WPT_INLINE WDI_Status
21390WDI_CleanCB
21391(
21392 WDI_ControlBlockType* pWDICtx
21393)
21394{
21395 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
21396
21397 /*Clean the WDI Control Block*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021398 wpalMemoryZero( pWDICtx, sizeof(*pWDICtx));
Jeff Johnson295189b2012-06-20 16:38:30 -070021399
Jeff Johnsone7245742012-09-05 17:12:55 -070021400 pWDICtx->uGlobalState = WDI_MAX_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -070021401 pWDICtx->ucMaxBssids = WDI_MAX_SUPPORTED_BSS;
21402 pWDICtx->ucMaxStations = WDI_MAX_SUPPORTED_STAS;
21403
21404 WDI_ResetAssocSessions( pWDICtx );
21405
21406 return WDI_STATUS_SUCCESS;
21407}/*WDI_CleanCB*/
21408
21409
21410/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021411 @brief Process request helper function
Jeff Johnson295189b2012-06-20 16:38:30 -070021412
Jeff Johnsone7245742012-09-05 17:12:55 -070021413
21414 @param pWDICtx: pointer to the WLAN DAL context
21415 pEventData: pointer to the event information structure
21416
Jeff Johnson295189b2012-06-20 16:38:30 -070021417 @see
21418 @return Result of the function call
21419*/
21420WPT_INLINE WDI_Status
21421WDI_ProcessRequest
21422(
21423 WDI_ControlBlockType* pWDICtx,
21424 WDI_EventInfoType* pEventData
21425)
21426{
21427 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21428
Jeff Johnsone7245742012-09-05 17:12:55 -070021429 /*!! Skip sanity check as this is called from the FSM functionss which
Jeff Johnson295189b2012-06-20 16:38:30 -070021430 already checked these pointers*/
21431
21432 if (( pEventData->wdiRequest < WDI_MAX_UMAC_IND ) &&
21433 ( NULL != pfnReqProcTbl[pEventData->wdiRequest] ))
Jeff Johnsone7245742012-09-05 17:12:55 -070021434 {
Jeff Johnson295189b2012-06-20 16:38:30 -070021435 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080021436 "Calling request processing function for req %s (%d) %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070021437 WDI_getReqMsgString(pEventData->wdiRequest),
21438 pEventData->wdiRequest, pfnReqProcTbl[pEventData->wdiRequest]);
21439 return pfnReqProcTbl[pEventData->wdiRequest](pWDICtx, pEventData);
21440 }
21441 else
21442 {
21443 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070021444 "Operation %d is not yet implemented ",
Jeff Johnson295189b2012-06-20 16:38:30 -070021445 pEventData->wdiRequest);
21446 return WDI_STATUS_E_NOT_IMPLEMENT;
21447 }
21448}/*WDI_ProcessRequest*/
21449
21450
21451/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021452 @brief Get message helper function - it allocates memory for a
Jeff Johnson295189b2012-06-20 16:38:30 -070021453 message that is to be sent to HAL accross the bus and
Jeff Johnsone7245742012-09-05 17:12:55 -070021454 prefixes it with a send message header
21455
21456 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070021457 wdiReqType: type of the request being sent
21458 uBufferLen: message buffer len
21459 pMsgBuffer: resulting allocated buffer
21460 pusDataOffset: offset in the buffer where the caller
21461 can start copying its message data
21462 puBufferSize: the resulting buffer size (offset+buff
21463 len)
Jeff Johnsone7245742012-09-05 17:12:55 -070021464
Jeff Johnson295189b2012-06-20 16:38:30 -070021465 @see
21466 @return Result of the function call
21467*/
21468WDI_Status
21469WDI_GetMessageBuffer
Jeff Johnsone7245742012-09-05 17:12:55 -070021470(
21471 WDI_ControlBlockType* pWDICtx,
21472 WDI_RequestEnumType wdiReqType,
Jeff Johnson295189b2012-06-20 16:38:30 -070021473 wpt_uint16 usBufferLen,
Jeff Johnsone7245742012-09-05 17:12:55 -070021474 wpt_uint8** pMsgBuffer,
21475 wpt_uint16* pusDataOffset,
Jeff Johnson295189b2012-06-20 16:38:30 -070021476 wpt_uint16* pusBufferSize
21477)
21478{
21479 tHalMsgHeader halMsgHeader;
21480 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21481
Jeff Johnsone7245742012-09-05 17:12:55 -070021482 /*!! No sanity check here as we trust the called - ! check this assumption
Jeff Johnson295189b2012-06-20 16:38:30 -070021483 again*/
21484
21485 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021486 Try to allocate message buffer from PAL
Jeff Johnson295189b2012-06-20 16:38:30 -070021487 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021488 *pusBufferSize = sizeof(halMsgHeader) + usBufferLen;
Jeff Johnson295189b2012-06-20 16:38:30 -070021489 *pMsgBuffer = (wpt_uint8*)wpalMemoryAllocate(*pusBufferSize);
21490 if ( NULL == *pMsgBuffer )
21491 {
21492 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
21493 "Unable to allocate message buffer for req %s (%d)",
21494 WDI_getReqMsgString(wdiReqType),
Jeff Johnsone7245742012-09-05 17:12:55 -070021495 wdiReqType);
Jeff Johnson295189b2012-06-20 16:38:30 -070021496 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021497 return WDI_STATUS_MEM_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021498 }
21499
21500 /*-------------------------------------------------------------------------
21501 Fill in the message header
21502 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021503 halMsgHeader.msgType = WDI_2_HAL_REQ_TYPE(wdiReqType);
21504 /* Fill msgVersion */
21505#ifdef WLAN_FEATURE_11AC
21506 if (WDI_getFwWlanFeatCaps(DOT11AC))
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070021507 halMsgHeader.msgVersion = WLAN_HAL_MSG_VERSION1;
Jeff Johnsone7245742012-09-05 17:12:55 -070021508 else
21509#endif
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070021510 halMsgHeader.msgVersion = WLAN_HAL_MSG_VERSION0;
Jeff Johnson295189b2012-06-20 16:38:30 -070021511
Jeff Johnsone7245742012-09-05 17:12:55 -070021512 halMsgHeader.msgLen = sizeof(halMsgHeader) + usBufferLen;
21513 *pusDataOffset = sizeof(halMsgHeader);
21514 wpalMemoryCopy(*pMsgBuffer, &halMsgHeader, sizeof(halMsgHeader));
21515
21516 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021517}/*WDI_GetMessageBuffer*/
21518
21519
21520/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021521 @brief Send message helper function - sends a message over the
Jeff Johnson295189b2012-06-20 16:38:30 -070021522 bus using the control tranport and saves some info in
Jeff Johnsone7245742012-09-05 17:12:55 -070021523 the CB
21524
21525 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070021526 pSendBuffer: buffer to be sent
Jeff Johnsone7245742012-09-05 17:12:55 -070021527
Jeff Johnson295189b2012-06-20 16:38:30 -070021528 usSendSize size of the buffer to be sent
21529 pRspCb: response callback - save in the WDI
21530 CB
21531 pUserData: user data associated with the
21532 callback
21533 wdiExpectedResponse: the code of the response that is
21534 expected to be rx-ed for this request
Jeff Johnsone7245742012-09-05 17:12:55 -070021535
Jeff Johnson295189b2012-06-20 16:38:30 -070021536 @see
21537 @return Result of the function call
21538*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021539WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070021540WDI_SendMsg
Jeff Johnsone7245742012-09-05 17:12:55 -070021541(
21542 WDI_ControlBlockType* pWDICtx,
21543 wpt_uint8* pSendBuffer,
21544 wpt_uint32 usSendSize,
21545 void* pRspCb,
Jeff Johnson295189b2012-06-20 16:38:30 -070021546 void* pUserData,
21547 WDI_ResponseEnumType wdiExpectedResponse
21548)
21549{
Jeff Johnsond13512a2012-07-17 11:42:19 -070021550 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080021551 wpt_uint32 ret;
Jeff Johnson295189b2012-06-20 16:38:30 -070021552 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
21553
21554 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021555 Save needed info in the CB
Jeff Johnson295189b2012-06-20 16:38:30 -070021556 ------------------------------------------------------------------------*/
21557 pWDICtx->pRspCBUserData = pUserData;
Jeff Johnsone7245742012-09-05 17:12:55 -070021558 pWDICtx->pfncRspCB = pRspCb;
21559 pWDICtx->wdiExpectedResponse = wdiExpectedResponse;
Jeff Johnson295189b2012-06-20 16:38:30 -070021560
21561 /*-----------------------------------------------------------------------
21562 Call the CTS to send this message over - free message afterwards
21563 - notify transport failure
21564 Note: CTS is reponsible for freeing the message buffer.
21565 -----------------------------------------------------------------------*/
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080021566 ret = WCTS_SendMessage(pWDICtx->wctsHandle, (void*)pSendBuffer, usSendSize);
21567 if ((eWLAN_PAL_STATUS_SUCCESS != ret) &&
21568 (eWLAN_PAL_STATUS_E_RESOURCES != ret))
Jeff Johnson295189b2012-06-20 16:38:30 -070021569 {
Jeff Johnsond13512a2012-07-17 11:42:19 -070021570 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Siddharth Bhalceddd5d2014-03-21 15:00:19 +053021571 "Failed to send message with expected response %s (%d)"
21572 " over the bus - catastrophic failure",
21573 WDI_getRespMsgString(pWDICtx->wdiExpectedResponse),
21574 pWDICtx->wdiExpectedResponse);
Jeff Johnson295189b2012-06-20 16:38:30 -070021575
Jeff Johnsond13512a2012-07-17 11:42:19 -070021576 wdiStatus = WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021577 }
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080021578 else
21579 {
21580 /* even when message was placed in CTS deferred Q, we will treat it
21581 success but log this info
21582 */
21583 if (eWLAN_PAL_STATUS_E_RESOURCES == ret)
21584 {
21585 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
21586 "WDI_SendMsg: message placed in CTS deferred Q, expected "
21587 "response %s (%d)",
21588 WDI_getRespMsgString(pWDICtx->wdiExpectedResponse),
21589 pWDICtx->wdiExpectedResponse);
Gopichand Nakkala3c5b0632012-12-23 08:30:59 -080021590 WDI_ASSERT(0);
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080021591 }
21592 }
Jeff Johnson295189b2012-06-20 16:38:30 -070021593
Jeff Johnsond13512a2012-07-17 11:42:19 -070021594 /*Check if originator provided a request status callback*/
Jeff Johnson295189b2012-06-20 16:38:30 -070021595 if ( NULL != pWDICtx->wdiReqStatusCB )
21596 {
Jeff Johnsond13512a2012-07-17 11:42:19 -070021597 /*Inform originator whether request went through or not*/
21598 WDI_ReqStatusCb callback = pWDICtx->wdiReqStatusCB;
21599 void *callbackContext = pWDICtx->pReqStatusUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070021600 pWDICtx->wdiReqStatusCB = NULL;
21601 pWDICtx->pReqStatusUserData = NULL;
Jeff Johnsond13512a2012-07-17 11:42:19 -070021602 callback(wdiStatus, callbackContext);
21603
21604 /*For WDI requests which have registered a request callback,
21605 inform the WDA caller of the same via setting the return value
21606 (wdiStatus) to WDI_STATUS_PENDING. This makes sure that WDA doesnt
21607 end up repeating the functonality in the req callback for the
21608 WDI_STATUS_E_FAILURE case*/
21609 if (wdiStatus == WDI_STATUS_E_FAILURE)
21610 wdiStatus = WDI_STATUS_PENDING;
Jeff Johnson295189b2012-06-20 16:38:30 -070021611 }
21612
Jeff Johnsond13512a2012-07-17 11:42:19 -070021613 if ( wdiStatus == WDI_STATUS_SUCCESS )
21614 {
Jeff Johnson295189b2012-06-20 16:38:30 -070021615 /*Start timer for the expected response */
21616 wpalTimerStart(&pWDICtx->wptResponseTimer, WDI_RESPONSE_TIMEOUT);
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080021617
21618 /*cache current timestamp for debugging */
Gopichand Nakkala3c5b0632012-12-23 08:30:59 -080021619 pWDICtx->uTimeStampRspTmrStart = wpalGetSystemTime();
Arif Hussain6c8947a2013-11-27 13:57:14 -080021620 pWDICtx->uArchTimeStampRspTmrStart = wpalGetArchCounterTime();
Jeff Johnsond13512a2012-07-17 11:42:19 -070021621 }
21622 else
21623 {
Jeff Johnson902c9832012-12-10 14:28:09 -080021624 /*Inform upper stack layers that a transport fatal error occurred*/
Jeff Johnsond13512a2012-07-17 11:42:19 -070021625 WDI_DetectedDeviceError(pWDICtx, WDI_ERR_TRANSPORT_FAILURE);
21626 }
Jeff Johnson295189b2012-06-20 16:38:30 -070021627
Jeff Johnsond13512a2012-07-17 11:42:19 -070021628 return wdiStatus;
21629
Jeff Johnson295189b2012-06-20 16:38:30 -070021630}/*WDI_SendMsg*/
21631
21632
21633
21634/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021635 @brief Send indication helper function - sends a message over
Jeff Johnson295189b2012-06-20 16:38:30 -070021636 the bus using the control transport and saves some info
21637 in the CB
Jeff Johnsone7245742012-09-05 17:12:55 -070021638
21639 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070021640 pSendBuffer: buffer to be sent
21641 usSendSize: size of the buffer to be sent
Jeff Johnsone7245742012-09-05 17:12:55 -070021642
Jeff Johnson295189b2012-06-20 16:38:30 -070021643 @see
21644 @return Result of the function call
21645*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021646WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070021647WDI_SendIndication
Jeff Johnsone7245742012-09-05 17:12:55 -070021648(
21649 WDI_ControlBlockType* pWDICtx,
21650 wpt_uint8* pSendBuffer,
Jeff Johnson295189b2012-06-20 16:38:30 -070021651 wpt_uint32 usSendSize
21652)
21653{
21654 wpt_uint32 uStatus ;
21655 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
21656
21657 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021658 Call the CTS to send this message over
Jeff Johnson295189b2012-06-20 16:38:30 -070021659 Note: CTS is reponsible for freeing the message buffer.
21660 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021661 uStatus = WCTS_SendMessage( pWDICtx->wctsHandle,
Jeff Johnson295189b2012-06-20 16:38:30 -070021662 (void*)pSendBuffer, usSendSize );
21663
21664 /*Inform Upper MAC about the outcome of the request*/
21665 if ( NULL != pWDICtx->wdiReqStatusCB )
21666 {
21667 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
21668 "Send indication status : %d", uStatus);
21669
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080021670 /* even if CTS placed indication into its deferred Q, we treat it
21671 * as success and let CTS drain its queue as per smd interrupt to CTS
21672 */
21673 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 -070021674 pWDICtx->pReqStatusUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070021675 }
21676
21677 /*If sending of the message failed - it is considered catastrophic and
21678 indicates an error with the device*/
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080021679 if (( eWLAN_PAL_STATUS_SUCCESS != uStatus) &&
21680 ( eWLAN_PAL_STATUS_E_RESOURCES != uStatus))
21681
Jeff Johnson295189b2012-06-20 16:38:30 -070021682 {
21683 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnsone7245742012-09-05 17:12:55 -070021684 "Failed to send indication over the bus - catastrophic failure");
Jeff Johnson295189b2012-06-20 16:38:30 -070021685
21686 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_TRANSPORT_FAILURE);
21687 return WDI_STATUS_E_FAILURE;
21688 }
21689
Jeff Johnsone7245742012-09-05 17:12:55 -070021690 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021691}/*WDI_SendIndication*/
21692
21693
21694/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021695 @brief WDI_DetectedDeviceError - called internally by DAL when
21696 it has detected a failure in the device
21697
21698 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070021699 usErrorCode: error code detected by WDI or received
21700 from HAL
Jeff Johnsone7245742012-09-05 17:12:55 -070021701
Jeff Johnson295189b2012-06-20 16:38:30 -070021702 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070021703 @return None
Jeff Johnson295189b2012-06-20 16:38:30 -070021704*/
21705void
21706WDI_DetectedDeviceError
21707(
21708 WDI_ControlBlockType* pWDICtx,
21709 wpt_uint16 usErrorCode
21710)
21711{
21712 WDI_LowLevelIndType wdiInd;
21713 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
21714
21715 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
21716 "Device Error detected code: %d - transitioning to stopped state",
21717 usErrorCode);
21718
21719 wpalMutexAcquire(&pWDICtx->wptMutex);
21720
21721 WDI_STATableStop(pWDICtx);
21722
21723 WDI_ResetAssocSessions(pWDICtx);
21724
21725 /*Set the expected state transition to stopped - because the device
21726 experienced a failure*/
21727 pWDICtx->ucExpectedStateTransition = WDI_STOPPED_ST;
21728
21729 /*Transition to stopped to fail all incomming requests from this point on*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021730 WDI_STATE_TRANSITION( pWDICtx, WDI_STOPPED_ST);
Jeff Johnson295189b2012-06-20 16:38:30 -070021731
Jeff Johnsone7245742012-09-05 17:12:55 -070021732 WDI_ClearPendingRequests(pWDICtx);
Jeff Johnson295189b2012-06-20 16:38:30 -070021733
21734 /*TO DO: - there should be an attempt to reset the device here*/
21735
21736 wpalMutexRelease(&pWDICtx->wptMutex);
21737
21738 /*------------------------------------------------------------------------
21739 Notify UMAC if a handler is registered
21740 ------------------------------------------------------------------------*/
21741 if (pWDICtx->wdiLowLevelIndCB)
21742 {
Jeff Johnsone7245742012-09-05 17:12:55 -070021743 wdiInd.wdiIndicationType = WDI_FATAL_ERROR_IND;
21744 wdiInd.wdiIndicationData.usErrorCode = usErrorCode;
Jeff Johnson295189b2012-06-20 16:38:30 -070021745
21746 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData);
21747 }
21748}/*WDI_DetectedDeviceError*/
21749
21750/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021751 @brief This callback is invoked by the wpt when a timer that
Jeff Johnson295189b2012-06-20 16:38:30 -070021752 we started on send message has expire - this should
21753 never happen - it means device is stuck and cannot
Jeff Johnsone7245742012-09-05 17:12:55 -070021754 reply - trigger catastrophic failure
21755 @param
21756
Jeff Johnson295189b2012-06-20 16:38:30 -070021757 pUserData: the callback data of the user (ptr to WDI CB)
Jeff Johnsone7245742012-09-05 17:12:55 -070021758
21759 @see
21760 @return None
Jeff Johnson295189b2012-06-20 16:38:30 -070021761*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021762void
Jeff Johnson295189b2012-06-20 16:38:30 -070021763WDI_ResponseTimerCB
21764(
21765 void *pUserData
21766)
21767{
21768 WDI_ControlBlockType* pWDICtx = (WDI_ControlBlockType*)pUserData;
21769 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21770
Gopichand Nakkalae620d5a2013-04-26 05:45:57 -070021771 if (NULL == pWDICtx)
Jeff Johnson295189b2012-06-20 16:38:30 -070021772 {
Gopichand Nakkalae620d5a2013-04-26 05:45:57 -070021773 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021774 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021775 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021776 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070021777 }
21778
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080021779 /*cache current timestamp for debugging */
Gopichand Nakkala3c5b0632012-12-23 08:30:59 -080021780 pWDICtx->uTimeStampRspTmrExp = wpalGetSystemTime();
Arif Hussain6c8947a2013-11-27 13:57:14 -080021781 pWDICtx->uArchTimeStampRspTmrExp = wpalGetArchCounterTime();
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080021782
21783 /* If response timer is running at this time that means this timer
21784 * event is not for the last request but rather last-to-last request and
21785 * this timer event has come after we recevied respone for last-to-last
21786 * message
21787 */
21788 if (VOS_TIMER_STATE_RUNNING == wpalTimerGetCurStatus(&pWDICtx->wptResponseTimer))
21789 {
21790 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
21791 "WDI_ResponseTimerCB: timer in running state on timer event, "
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080021792 "ignore tmr event, timeStampTmrStart: %u, timeStampTmrExp: %u",
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080021793 pWDICtx->uTimeStampRspTmrStart, pWDICtx->uTimeStampRspTmrExp);
Arif Hussain6c8947a2013-11-27 13:57:14 -080021794 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
21795 "uArchTimeStampTmrStart: %llu seconds, "
21796 "uArchTimeStampTmrExp: %llu seconds",
21797 pWDICtx->uArchTimeStampRspTmrStart,
21798 pWDICtx->uArchTimeStampRspTmrExp);
21799
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080021800 return;
21801 }
21802
Gopichand Nakkalae620d5a2013-04-26 05:45:57 -070021803 if (WDI_MAX_RESP != pWDICtx->wdiExpectedResponse)
Jeff Johnson295189b2012-06-20 16:38:30 -070021804 {
21805
Gopichand Nakkalae620d5a2013-04-26 05:45:57 -070021806 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnson295189b2012-06-20 16:38:30 -070021807 "Timeout occurred while waiting for %s (%d) message from device "
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080021808 " - catastrophic failure, timeStampTmrStart: %u, timeStampTmrExp: %u",
Jeff Johnson295189b2012-06-20 16:38:30 -070021809 WDI_getRespMsgString(pWDICtx->wdiExpectedResponse),
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080021810 pWDICtx->wdiExpectedResponse, pWDICtx->uTimeStampRspTmrStart,
21811 pWDICtx->uTimeStampRspTmrExp);
Arif Hussain6c8947a2013-11-27 13:57:14 -080021812 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
21813 "uArchTimeStampTmrStart: %llu seconds, "
21814 "uArchTimeStampTmrExp: %llu seconds",
21815 pWDICtx->uArchTimeStampRspTmrStart,
21816 pWDICtx->uArchTimeStampRspTmrExp);
Gopichand Nakkalae620d5a2013-04-26 05:45:57 -070021817
21818 /* WDI timeout means Riva is not responding or SMD communication to Riva
21819 * is not happening. The only possible way to recover from this error
21820 * is to initiate SSR from APPS.
21821 * There is also an option to re-enable wifi, which will eventually
21822 * trigger SSR
21823 */
21824 if (gWDICb.bEnableSSR == false)
21825 {
21826 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
21827 "SSR is not enabled on WDI timeout");
21828 WDI_DetectedDeviceError(pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
21829 return;
21830 }
Madan Mohan Koyyalamudia2fc6412012-10-21 12:06:12 -070021831#ifndef WDI_RE_ENABLE_WIFI_ON_WDI_TIMEOUT
Gopichand Nakkalae620d5a2013-04-26 05:45:57 -070021832 wpalWcnssResetIntr();
Katya Nigam921bf202014-02-26 14:52:24 +053021833 if(wpalIsWDresetInProgress())
21834 {
21835 wpalDevicePanic();
21836 }
Gopichand Nakkalae620d5a2013-04-26 05:45:57 -070021837 /* if this timer fires, it means Riva did not receive the FIQ */
21838 wpalTimerStart(&pWDICtx->ssrTimer, WDI_SSR_TIMEOUT);
Madan Mohan Koyyalamudia2fc6412012-10-21 12:06:12 -070021839#else
Gopichand Nakkalae620d5a2013-04-26 05:45:57 -070021840 WDI_DetectedDeviceError(pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
21841 wpalWlanReload();
Madan Mohan Koyyalamudia2fc6412012-10-21 12:06:12 -070021842#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070021843 }
21844 else
21845 {
Gopichand Nakkalae620d5a2013-04-26 05:45:57 -070021846 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080021847 "Timeout occurred but not waiting for any response %d "
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080021848 "timeStampTmrStart: %u, timeStampTmrExp: %u",
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080021849 pWDICtx->wdiExpectedResponse, pWDICtx->uTimeStampRspTmrStart,
21850 pWDICtx->uTimeStampRspTmrExp);
Arif Hussain6c8947a2013-11-27 13:57:14 -080021851 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
21852 "uArchTimeStampTmrStart: %llu seconds, "
21853 "uArchTimeStampTmrExp: %llu seconds",
21854 pWDICtx->uArchTimeStampRspTmrStart,
21855 pWDICtx->uArchTimeStampRspTmrExp);
21856
Jeff Johnson295189b2012-06-20 16:38:30 -070021857 }
21858
21859 return;
21860
21861}/*WDI_ResponseTimerCB*/
21862
21863
21864/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021865 @brief Process response helper function
Jeff Johnson295189b2012-06-20 16:38:30 -070021866
Jeff Johnsone7245742012-09-05 17:12:55 -070021867
21868 @param pWDICtx: pointer to the WLAN DAL context
21869 pEventData: pointer to the event information structure
21870
Jeff Johnson295189b2012-06-20 16:38:30 -070021871 @see
21872 @return Result of the function call
21873*/
21874WPT_INLINE WDI_Status
21875WDI_ProcessResponse
21876(
21877 WDI_ControlBlockType* pWDICtx,
21878 WDI_EventInfoType* pEventData
21879)
21880{
21881 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21882
Jeff Johnsone7245742012-09-05 17:12:55 -070021883 /* Skip sanity check as this is called from the FSM functions which
Jeff Johnson295189b2012-06-20 16:38:30 -070021884 already checked these pointers
21885 ! - revisit this assumption */
21886 if (( pEventData->wdiResponse < WDI_MAX_RESP ) &&
21887 ( NULL != pfnRspProcTbl[pEventData->wdiResponse] ))
Jeff Johnsone7245742012-09-05 17:12:55 -070021888 {
Jeff Johnson295189b2012-06-20 16:38:30 -070021889 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080021890 "Calling response processing function for resp %s (%d) %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070021891 WDI_getRespMsgString(pEventData->wdiResponse),
21892 pEventData->wdiResponse, pfnRspProcTbl[pEventData->wdiResponse]);
21893 return pfnRspProcTbl[pEventData->wdiResponse](pWDICtx, pEventData);
21894 }
21895 else
21896 {
21897 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070021898 "Operation %d is not yet implemented ",
Jeff Johnson295189b2012-06-20 16:38:30 -070021899 pEventData->wdiResponse);
21900 return WDI_STATUS_E_NOT_IMPLEMENT;
21901 }
21902}/*WDI_ProcessResponse*/
21903
21904
21905/*=========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070021906 QUEUE SUPPORT UTILITY FUNCTIONS
Jeff Johnson295189b2012-06-20 16:38:30 -070021907=========================================================================*/
21908
21909/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021910 @brief Utility function used by the DAL Core to help queue a
21911 request that cannot be processed right away.
21912 @param
21913
Jeff Johnson295189b2012-06-20 16:38:30 -070021914 pWDICtx: - pointer to the WDI control block
21915 pEventData: - pointer to the evnt info that needs to be
Jeff Johnsone7245742012-09-05 17:12:55 -070021916 queued
21917
21918 @see
21919 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070021920*/
21921WDI_Status
21922WDI_QueuePendingReq
21923(
21924 WDI_ControlBlockType* pWDICtx,
21925 WDI_EventInfoType* pEventData
21926)
21927{
Jeff Johnsone7245742012-09-05 17:12:55 -070021928 wpt_list_node* pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070021929 WDI_EventInfoType* pEventDataQueue = wpalMemoryAllocate(sizeof(*pEventData));
Jeff Johnsone7245742012-09-05 17:12:55 -070021930 void* pEventInfo = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070021931 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21932
21933 if ( NULL == pEventDataQueue )
21934 {
21935 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070021936 "Cannot allocate memory for queueing");
Jeff Johnson295189b2012-06-20 16:38:30 -070021937 WDI_ASSERT(0);
21938 return WDI_STATUS_MEM_FAILURE;
21939 }
21940
21941 pEventDataQueue->pCBfnc = pEventData->pCBfnc;
21942 pEventDataQueue->pUserData = pEventData->pUserData;
21943 pEventDataQueue->uEventDataSize = pEventData->uEventDataSize;
21944 pEventDataQueue->wdiRequest = pEventData->wdiRequest;
Jeff Johnsone7245742012-09-05 17:12:55 -070021945 pEventDataQueue->wdiResponse = pEventData->wdiResponse;
Jeff Johnson295189b2012-06-20 16:38:30 -070021946
21947 if( pEventData->uEventDataSize != 0 && pEventData->pEventData != NULL )
21948 {
21949 pEventInfo = wpalMemoryAllocate(pEventData->uEventDataSize);
Jeff Johnsone7245742012-09-05 17:12:55 -070021950
Jeff Johnson295189b2012-06-20 16:38:30 -070021951 if ( NULL == pEventInfo )
21952 {
21953 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070021954 "Cannot allocate memory for queueing event data info");
Jeff Johnson295189b2012-06-20 16:38:30 -070021955 WDI_ASSERT(0);
21956 wpalMemoryFree(pEventDataQueue);
21957 return WDI_STATUS_MEM_FAILURE;
21958 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021959
Jeff Johnson295189b2012-06-20 16:38:30 -070021960 wpalMemoryCopy(pEventInfo, pEventData->pEventData, pEventData->uEventDataSize);
21961
21962 }
21963 pEventDataQueue->pEventData = pEventInfo;
21964
21965 /*Send wpt a pointer to the node (this is the 1st element in the event data)*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021966 pNode = (wpt_list_node*)pEventDataQueue;
Jeff Johnson295189b2012-06-20 16:38:30 -070021967
Jeff Johnsone7245742012-09-05 17:12:55 -070021968 wpal_list_insert_back(&(pWDICtx->wptPendingQueue), pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070021969
21970 return WDI_STATUS_SUCCESS;
21971}/*WDI_QueuePendingReq*/
21972
21973/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021974 @brief Callback function for serializing queued message
Jeff Johnson295189b2012-06-20 16:38:30 -070021975 processing in the control context
Jeff Johnsone7245742012-09-05 17:12:55 -070021976 @param
21977
21978 pMsg - pointer to the message
21979
21980 @see
21981 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070021982*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021983void
Jeff Johnson295189b2012-06-20 16:38:30 -070021984WDI_PALCtrlMsgCB
21985(
21986 wpt_msg *pMsg
21987)
21988{
21989 WDI_EventInfoType* pEventData = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070021990 WDI_ControlBlockType* pWDICtx = NULL;
21991 WDI_Status wdiStatus;
21992 WDI_ReqStatusCb pfnReqStatusCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070021993 void* pUserData;
21994 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21995
21996 if (( NULL == pMsg )||
21997 ( NULL == (pEventData = (WDI_EventInfoType*)pMsg->ptr)) ||
21998 ( NULL == (pWDICtx = (WDI_ControlBlockType*)pMsg->pContext )))
21999 {
22000 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070022001 "Invalid message received on serialize ctrl context API");
Jeff Johnson295189b2012-06-20 16:38:30 -070022002 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070022003 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070022004 }
22005
22006 /*Transition back to the state that we had before serialization
22007 - serialization transitions us to BUSY to stop any incomming requests
22008 ! TO DO L: possible race condition here if a request comes in between the
22009 state transition and the post function*/
22010
Jeff Johnsone7245742012-09-05 17:12:55 -070022011 WDI_STATE_TRANSITION( pWDICtx, pMsg->val);
Jeff Johnson295189b2012-06-20 16:38:30 -070022012
22013 /*-----------------------------------------------------------------------
22014 Check to see what type of event we are serializing
Jeff Johnsone7245742012-09-05 17:12:55 -070022015 - responses are never expected to come through here
Jeff Johnson295189b2012-06-20 16:38:30 -070022016 -----------------------------------------------------------------------*/
22017 switch ( pEventData->wdiRequest )
22018 {
22019
Jeff Johnsone7245742012-09-05 17:12:55 -070022020 case WDI_STOP_REQ:
Jeff Johnson295189b2012-06-20 16:38:30 -070022021 wdiStatus = WDI_PostMainEvent(&gWDICb, WDI_STOP_EVENT, pEventData);
22022 break;
22023
Jeff Johnson295189b2012-06-20 16:38:30 -070022024 case WDI_NV_DOWNLOAD_REQ:
22025 // When WDI State is WDI_STARTED_ST, send WDI request message with event type WDI_REQUEST_EVENT.
22026 // In this case, because this request is called from response process, we could call WDI_ProcessRequest() directly.
22027 if (pWDICtx->uGlobalState == WDI_STARTED_ST)
22028 {
22029 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022030 "%s: WDI_NV_DOWNLOAD_REQ called in WDI_STARTED_ST - send with WDI_REQUEST_EVENT", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070022031 wdiStatus = WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, pEventData);
22032 }
22033 else
22034 {
22035 wdiStatus = WDI_PostMainEvent(&gWDICb, WDI_START_EVENT, pEventData);
22036 }
22037
22038 break;
22039
22040 default:
22041 wdiStatus = WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, pEventData);
22042 break;
22043 }/*switch ( pEventData->wdiRequest )*/
22044
22045 if ( WDI_STATUS_SUCCESS != wdiStatus )
22046 {
22047 WDI_ExtractRequestCBFromEvent(pEventData, &pfnReqStatusCB, &pUserData);
22048
22049 if ( NULL != pfnReqStatusCB )
22050 {
22051 /*Fail the request*/
22052 pfnReqStatusCB( wdiStatus, pUserData);
22053 }
22054 }
22055
22056 /* Free data - that was allocated when queueing*/
22057 if( pEventData != NULL )
22058 {
22059 if( pEventData->pEventData != NULL )
22060 {
22061 wpalMemoryFree(pEventData->pEventData);
22062 }
22063 wpalMemoryFree(pEventData);
22064 }
22065
22066 if( pMsg != NULL )
22067 {
22068 wpalMemoryFree(pMsg);
22069 }
Jeff Johnsone7245742012-09-05 17:12:55 -070022070
Jeff Johnson295189b2012-06-20 16:38:30 -070022071}/*WDI_PALCtrlMsgCB*/
22072
22073/**
22074 @brief Utility function used by the DAL Core to help dequeue
Jeff Johnsone7245742012-09-05 17:12:55 -070022075 and schedule for execution a pending request
22076 @param
22077
Jeff Johnson295189b2012-06-20 16:38:30 -070022078 pWDICtx: - pointer to the WDI control block
22079 pEventData: - pointer to the evnt info that needs to be
Jeff Johnsone7245742012-09-05 17:12:55 -070022080 queued
22081
22082 @see
22083 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070022084*/
22085WDI_Status
22086WDI_DequeuePendingReq
22087(
22088 WDI_ControlBlockType* pWDICtx
22089)
22090{
Jeff Johnsone7245742012-09-05 17:12:55 -070022091 wpt_list_node* pNode = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070022092 WDI_EventInfoType* pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070022093 wpt_msg* palMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070022094 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
22095
Jeff Johnsone7245742012-09-05 17:12:55 -070022096 wpal_list_remove_front(&(pWDICtx->wptPendingQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070022097
22098 if ( NULL == pNode )
22099 {
22100 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -070022101 "List is empty - return");
Jeff Johnson295189b2012-06-20 16:38:30 -070022102 return WDI_STATUS_SUCCESS;
22103 }
22104
22105 /*The node actually points to the 1st element inside the Event Data struct -
22106 just cast it back to the struct*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022107 pEventData = (WDI_EventInfoType*)pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070022108
22109 /*Serialize processing in the control thread
22110 !TO DO: - check to see if these are all the messages params that need
22111 to be filled in*/
22112 palMsg = wpalMemoryAllocate(sizeof(wpt_msg));
22113
22114 if ( NULL == palMsg )
22115 {
22116 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070022117 "WDI_DequeuePendingReq: Cannot allocate memory for palMsg.");
Jeff Johnson295189b2012-06-20 16:38:30 -070022118 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070022119 return WDI_STATUS_MEM_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022120 }
Jeff Johnsone7245742012-09-05 17:12:55 -070022121 palMsg->pContext = pWDICtx;
Jeff Johnson295189b2012-06-20 16:38:30 -070022122 palMsg->callback = WDI_PALCtrlMsgCB;
22123 palMsg->ptr = pEventData;
22124
22125 /*Save the global state as we need it on the other side*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022126 palMsg->val = pWDICtx->uGlobalState;
Leo Chang0f24ca12013-12-17 13:35:00 -080022127 palMsg->type = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070022128
Jeff Johnson295189b2012-06-20 16:38:30 -070022129 /*Transition back to BUSY as we need to handle a queued request*/
22130 WDI_STATE_TRANSITION( pWDICtx, WDI_BUSY_ST);
Jeff Johnsone7245742012-09-05 17:12:55 -070022131
Jeff Johnson295189b2012-06-20 16:38:30 -070022132 wpalPostCtrlMsg(pWDICtx->pPALContext, palMsg);
22133
22134 return WDI_STATUS_PENDING;
22135}/*WDI_DequeuePendingReq*/
22136
22137
22138/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022139 @brief Utility function used by the DAL Core to help queue
Jeff Johnson295189b2012-06-20 16:38:30 -070022140 an association request that cannot be processed right
Jeff Johnsone7245742012-09-05 17:12:55 -070022141 away.- The assoc requests will be queued by BSSID
22142 @param
22143
Jeff Johnson295189b2012-06-20 16:38:30 -070022144 pWDICtx: - pointer to the WDI control block
22145 pEventData: pointer to the evnt info that needs to be queued
22146 macBSSID: bssid
Jeff Johnsone7245742012-09-05 17:12:55 -070022147
22148 @see
22149 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070022150*/
22151WDI_Status
22152WDI_QueueNewAssocRequest
22153(
22154 WDI_ControlBlockType* pWDICtx,
22155 WDI_EventInfoType* pEventData,
22156 wpt_macAddr macBSSID
22157)
22158{
Jeff Johnsone7245742012-09-05 17:12:55 -070022159 wpt_uint8 i;
22160 WDI_BSSSessionType* pSession = NULL;
22161 wpt_list_node* pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070022162 WDI_EventInfoType* pEventDataQueue;
Jeff Johnsone7245742012-09-05 17:12:55 -070022163 void* pEventInfo;
22164 WDI_NextSessionIdType* pSessionIdElement;
Jeff Johnson295189b2012-06-20 16:38:30 -070022165 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Jeff Johnson295189b2012-06-20 16:38:30 -070022166
Jeff Johnsone7245742012-09-05 17:12:55 -070022167
22168 /*------------------------------------------------------------------------
22169 Search for a session that matches the BSSID
Jeff Johnson295189b2012-06-20 16:38:30 -070022170 ------------------------------------------------------------------------*/
22171 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
22172 {
22173 if ( eWLAN_PAL_FALSE == pWDICtx->aBSSSessions[i].bInUse )
22174 {
22175 /*Found an empty session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022176 pSession = &pWDICtx->aBSSSessions[i];
22177 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070022178 }
22179 }
22180
22181 if ( i >= WDI_MAX_BSS_SESSIONS )
22182 {
22183 /*Cannot find any empty sessions*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022184 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022185 }
Jeff Johnsone7245742012-09-05 17:12:55 -070022186
Jeff Johnson295189b2012-06-20 16:38:30 -070022187 /*------------------------------------------------------------------------
22188 Fill in the BSSID for this session and set the usage flag
22189 ------------------------------------------------------------------------*/
22190 wpalMemoryCopy(pWDICtx->aBSSSessions[i].macBSSID, macBSSID, WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070022191 pWDICtx->aBSSSessions[i].bInUse = eWLAN_PAL_TRUE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022192
22193 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022194 Allocate memory for this and place it in the queue
Jeff Johnson295189b2012-06-20 16:38:30 -070022195 ------------------------------------------------------------------------*/
22196 pEventDataQueue = (WDI_EventInfoType*)wpalMemoryAllocate(sizeof(WDI_EventInfoType));
22197 if ( NULL == pEventDataQueue )
22198 {
22199 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022200 "%s: Cannot allocate memory for queue node", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070022201 WDI_ASSERT(0);
22202 return WDI_STATUS_MEM_FAILURE;
22203 }
22204
22205 pSessionIdElement = (WDI_NextSessionIdType*)wpalMemoryAllocate(sizeof(WDI_NextSessionIdType));
22206 if ( NULL == pSessionIdElement )
22207 {
22208 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022209 "%s: Cannot allocate memory for session ID", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070022210 WDI_ASSERT(0);
22211 wpalMemoryFree(pEventDataQueue);
22212 return WDI_STATUS_MEM_FAILURE;
22213 }
22214
22215 pEventInfo = wpalMemoryAllocate(pEventData->uEventDataSize);
22216 if ( NULL == pEventInfo )
22217 {
22218 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022219 "%s: Cannot allocate memory for event data info", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070022220 WDI_ASSERT(0);
22221 wpalMemoryFree(pSessionIdElement);
22222 wpalMemoryFree(pEventDataQueue);
22223 return WDI_STATUS_MEM_FAILURE;
22224 }
22225
22226 pEventDataQueue->pCBfnc = pEventData->pCBfnc;
22227 pEventDataQueue->pUserData = pEventData->pUserData;
22228 pEventDataQueue->uEventDataSize = pEventData->uEventDataSize;
22229 pEventDataQueue->wdiRequest = pEventData->wdiRequest;
Jeff Johnsone7245742012-09-05 17:12:55 -070022230 pEventDataQueue->wdiResponse = pEventData->wdiResponse;
Jeff Johnson295189b2012-06-20 16:38:30 -070022231
22232 wpalMemoryCopy(pEventInfo, pEventData->pEventData, pEventData->uEventDataSize);
22233 pEventDataQueue->pEventData = pEventInfo;
22234
22235 /*Send wpt a pointer to the node (this is the 1st element in the event data)*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022236 pNode = (wpt_list_node*)pEventDataQueue;
Jeff Johnson295189b2012-06-20 16:38:30 -070022237
22238 /*This association is currently being queued*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022239 pSession->bAssocReqQueued = eWLAN_PAL_TRUE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022240
Jeff Johnsone7245742012-09-05 17:12:55 -070022241 wpal_list_insert_back(&(pSession->wptPendingQueue), pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070022242
22243 /*We need to maintain a separate list that keeps track of the order in which
22244 the new assoc requests are being queued such that we can start processing
22245 them in the order that they had arrived*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022246 pSessionIdElement->ucIndex = i;
22247 pNode = (wpt_list_node*)pSessionIdElement;
Jeff Johnson295189b2012-06-20 16:38:30 -070022248
22249 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
22250 "Queueing up new assoc session : %d ", pSessionIdElement->ucIndex);
Jeff Johnsone7245742012-09-05 17:12:55 -070022251 wpal_list_insert_back(&pWDICtx->wptPendingAssocSessionIdQueue, pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070022252
22253 /*Return pending as this is what the status of the request is since it has
22254 been queued*/
22255 return WDI_STATUS_PENDING;
22256}/*WDI_QueueNewAssocRequest*/
22257
22258/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022259 @brief Utility function used by the DAL Core to help queue
Jeff Johnson295189b2012-06-20 16:38:30 -070022260 an association request that cannot be processed right
Jeff Johnsone7245742012-09-05 17:12:55 -070022261 away.- The assoc requests will be queued by BSSID
22262 @param
22263
Jeff Johnson295189b2012-06-20 16:38:30 -070022264 pWDICtx: - pointer to the WDI control block
22265 pSession: - session in which to queue
22266 pEventData: pointer to the event info that needs to be
22267 queued
Jeff Johnsone7245742012-09-05 17:12:55 -070022268
22269 @see
22270 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070022271*/
22272WDI_Status
22273WDI_QueueAssocRequest
22274(
22275 WDI_ControlBlockType* pWDICtx,
22276 WDI_BSSSessionType* pSession,
22277 WDI_EventInfoType* pEventData
22278)
22279{
Jeff Johnsone7245742012-09-05 17:12:55 -070022280 wpt_list_node* pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070022281 WDI_EventInfoType* pEventDataQueue;
Jeff Johnsone7245742012-09-05 17:12:55 -070022282 void* pEventInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070022283 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Jeff Johnsone7245742012-09-05 17:12:55 -070022284
22285 /*------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -070022286 Sanity check
22287 ------------------------------------------------------------------------*/
22288 if (( NULL == pSession ) || ( NULL == pWDICtx ))
22289 {
22290 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022291 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070022292
Jeff Johnsone7245742012-09-05 17:12:55 -070022293 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022294 }
22295
22296 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022297 Allocate memory for this and place it in the queue
Jeff Johnson295189b2012-06-20 16:38:30 -070022298 ------------------------------------------------------------------------*/
22299 pEventDataQueue = (WDI_EventInfoType*)wpalMemoryAllocate(sizeof(WDI_EventInfoType));
22300 if ( NULL == pEventDataQueue )
22301 {
22302 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022303 "%s: Cannot allocate memory for queueing", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070022304 WDI_ASSERT(0);
22305 return WDI_STATUS_MEM_FAILURE;
22306 }
22307
22308 pEventInfo = wpalMemoryAllocate(pEventData->uEventDataSize);
22309 if ( NULL == pEventInfo )
22310 {
22311 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
22312 "%s: Cannot allocate memory for queueing event data info",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022313 __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070022314 WDI_ASSERT(0);
22315 wpalMemoryFree(pEventDataQueue);
22316 return WDI_STATUS_MEM_FAILURE;
22317 }
22318
22319 pEventDataQueue->pCBfnc = pEventData->pCBfnc;
22320 pEventDataQueue->pUserData = pEventData->pUserData;
22321 pEventDataQueue->uEventDataSize = pEventData->uEventDataSize;
22322 pEventDataQueue->wdiRequest = pEventData->wdiRequest;
Jeff Johnsone7245742012-09-05 17:12:55 -070022323 pEventDataQueue->wdiResponse = pEventData->wdiResponse;
Jeff Johnson295189b2012-06-20 16:38:30 -070022324 pEventDataQueue->pEventData = pEventInfo;
22325
22326 wpalMemoryCopy(pEventInfo, pEventData->pEventData, pEventData->uEventDataSize);
22327
22328 /*Send wpt a pointer to the node (this is the 1st element in the event data)*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022329 pNode = (wpt_list_node*)pEventDataQueue;
Jeff Johnson295189b2012-06-20 16:38:30 -070022330
22331 /*This association is currently being queued*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022332 pSession->bAssocReqQueued = eWLAN_PAL_TRUE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022333
Jeff Johnsone7245742012-09-05 17:12:55 -070022334 wpal_list_insert_back(&(pSession->wptPendingQueue), pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070022335
22336 /*The result of this operation is pending because the request has been
22337 queued and it will be processed at a later moment in time */
22338 return WDI_STATUS_PENDING;
22339}/*WDI_QueueAssocRequest*/
22340
22341/**
22342 @brief Utility function used by the DAL Core to help dequeue
22343 an association request that was pending
22344 The request will be queued up in front of the main
22345 pending queue for imediate processing
Jeff Johnsone7245742012-09-05 17:12:55 -070022346 @param
22347
Jeff Johnson295189b2012-06-20 16:38:30 -070022348 pWDICtx: - pointer to the WDI control block
Jeff Johnsone7245742012-09-05 17:12:55 -070022349
22350
22351 @see
22352 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070022353*/
22354WDI_Status
22355WDI_DequeueAssocRequest
22356(
22357 WDI_ControlBlockType* pWDICtx
22358)
22359{
Jeff Johnsone7245742012-09-05 17:12:55 -070022360 wpt_list_node* pNode = NULL;
22361 WDI_NextSessionIdType* pSessionIdElement;
Jeff Johnson295189b2012-06-20 16:38:30 -070022362 WDI_BSSSessionType* pSession;
22363 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Jeff Johnsone7245742012-09-05 17:12:55 -070022364
22365 /*------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -070022366 Sanity check
22367 ------------------------------------------------------------------------*/
22368 if ( NULL == pWDICtx )
22369 {
22370 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022371 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070022372
Jeff Johnsone7245742012-09-05 17:12:55 -070022373 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022374 }
22375
22376 /*------------------------------------------------------------------------
22377 An association has been completed => a new association can occur
22378 Check to see if there are any pending associations ->
22379 If so , transfer all the pending requests into the busy queue for
22380 processing
22381 These requests have arrived prior to the requests in the busy queue
22382 (bc they needed to be processed in order to be placed in this queue)
22383 => they will be placed at the front of the busy queue
22384 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022385 wpal_list_remove_front(&(pWDICtx->wptPendingAssocSessionIdQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070022386
22387 if ( NULL == pNode )
22388 {
22389 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -070022390 "List is empty - return");
Jeff Johnson295189b2012-06-20 16:38:30 -070022391 return WDI_STATUS_SUCCESS;
22392 }
22393
22394 /*The node actually points to the 1st element inside the Session Id struct -
22395 just cast it back to the struct*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022396 pSessionIdElement = (WDI_NextSessionIdType*)pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070022397
22398 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
22399 "Dequeueing new assoc session : %d ", pSessionIdElement->ucIndex);
22400
22401 if ( pSessionIdElement->ucIndex < WDI_MAX_BSS_SESSIONS )
22402 {
22403 pSession = &pWDICtx->aBSSSessions[pSessionIdElement->ucIndex];
Jeff Johnsone7245742012-09-05 17:12:55 -070022404
Jeff Johnson295189b2012-06-20 16:38:30 -070022405 /*Transfer all the pending requests in this assoc queue to
Jeff Johnsone7245742012-09-05 17:12:55 -070022406 the front of the main waiting queue for subsequent execution*/
22407 wpal_list_remove_back(&(pSession->wptPendingQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070022408 while ( NULL != pNode )
22409 {
22410 /*Place it in front of the main pending list*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022411 wpal_list_insert_front( &(pWDICtx->wptPendingQueue), &pNode);
22412 wpal_list_remove_back(&(pSession->wptPendingQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070022413 }
Jeff Johnsone7245742012-09-05 17:12:55 -070022414 pSession->bAssocReqQueued = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022415 }
22416 else
22417 {
22418 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnsone7245742012-09-05 17:12:55 -070022419 "Invalid session id queued up for assoc");
Jeff Johnson295189b2012-06-20 16:38:30 -070022420 WPAL_ASSERT(0);
22421 wpalMemoryFree(pSessionIdElement);
Jeff Johnsone7245742012-09-05 17:12:55 -070022422 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022423 }
Jeff Johnsone7245742012-09-05 17:12:55 -070022424
Jeff Johnson295189b2012-06-20 16:38:30 -070022425 /*Clean this up as it is no longer needed in order to prevent memory leak*/
22426 wpalMemoryFree(pSessionIdElement);
22427 return WDI_STATUS_SUCCESS;
22428}/*WDI_DequeueAssocRequest*/
22429
22430/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022431 @brief Utility function used by the DAL Core to clear any
Jeff Johnson295189b2012-06-20 16:38:30 -070022432 pending requests - all req cb will be called with
22433 failure and the queue will be emptied.
Jeff Johnsone7245742012-09-05 17:12:55 -070022434 @param
22435
Jeff Johnson295189b2012-06-20 16:38:30 -070022436 pWDICtx: - pointer to the WDI control block
Jeff Johnsone7245742012-09-05 17:12:55 -070022437
22438 @see
22439 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070022440*/
22441WDI_Status
22442WDI_ClearPendingRequests
Jeff Johnsone7245742012-09-05 17:12:55 -070022443(
Jeff Johnson295189b2012-06-20 16:38:30 -070022444 WDI_ControlBlockType* pWDICtx
22445)
22446{
Jeff Johnsone7245742012-09-05 17:12:55 -070022447 wpt_list_node* pNode = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070022448 WDI_EventInfoType* pEventDataQueue = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070022449 WDI_ReqStatusCb pfnReqStatusCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070022450 void* pUserData;
22451 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
22452
Jeff Johnsone7245742012-09-05 17:12:55 -070022453 wpal_list_remove_front(&(pWDICtx->wptPendingQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070022454
22455 /*------------------------------------------------------------------------
22456 Go through all the requests and fail them - this will only be called
22457 when device is being stopped or an error was detected - either case the
Jeff Johnsone7245742012-09-05 17:12:55 -070022458 pending requests can no longer be sent down to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070022459 ------------------------------------------------------------------------*/
22460 while( pNode )
22461 {
22462 /*The node actually points to the 1st element inside the Event Data struct -
22463 just cast it back to the struct*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022464 pEventDataQueue = (WDI_EventInfoType*)pNode;
22465
Jeff Johnson295189b2012-06-20 16:38:30 -070022466 WDI_ExtractRequestCBFromEvent(pEventDataQueue, &pfnReqStatusCB, &pUserData);
22467 if ( NULL != pfnReqStatusCB )
22468 {
22469 /*Fail the request*/
22470 pfnReqStatusCB( WDI_STATUS_E_FAILURE, pUserData);
22471 }
22472 /* Free data - that was allocated when queueing */
22473 if ( pEventDataQueue->pEventData != NULL )
22474 {
22475 wpalMemoryFree(pEventDataQueue->pEventData);
22476 }
22477 wpalMemoryFree(pEventDataQueue);
22478
22479 if (wpal_list_remove_front(&(pWDICtx->wptPendingQueue), &pNode) != eWLAN_PAL_STATUS_SUCCESS)
22480 {
22481 break;
22482 }
Jeff Johnsone7245742012-09-05 17:12:55 -070022483 }
22484
Jeff Johnson295189b2012-06-20 16:38:30 -070022485 return WDI_STATUS_SUCCESS;
22486}/*WDI_ClearPendingRequests*/
22487
22488/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022489 @brief Helper routine used to init the BSS Sessions in the WDI control block
22490
22491
22492 @param pWDICtx: pointer to the WLAN DAL context
22493
Jeff Johnson295189b2012-06-20 16:38:30 -070022494 @see
22495*/
22496void
22497WDI_ResetAssocSessions
Jeff Johnsone7245742012-09-05 17:12:55 -070022498(
Jeff Johnson295189b2012-06-20 16:38:30 -070022499 WDI_ControlBlockType* pWDICtx
22500)
22501{
Jeff Johnsone7245742012-09-05 17:12:55 -070022502 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070022503 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
22504
22505 /*-------------------------------------------------------------------------
22506 No Sanity check
22507 -------------------------------------------------------------------------*/
22508 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
22509 {
Jeff Johnsone7245742012-09-05 17:12:55 -070022510 wpalMemoryZero( &pWDICtx->aBSSSessions[i], sizeof(WDI_BSSSessionType) );
Jeff Johnson295189b2012-06-20 16:38:30 -070022511 pWDICtx->aBSSSessions[i].wdiAssocState = WDI_ASSOC_INIT_ST;
22512 pWDICtx->aBSSSessions[i].bcastStaIdx = WDI_STA_INVALID_IDX;
22513 pWDICtx->aBSSSessions[i].ucBSSIdx = WDI_BSS_INVALID_IDX;
22514 }
22515}/*WDI_ResetAssocSessions*/
22516
22517/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022518 @brief Helper routine used to find a session based on the BSSID
22519
22520
22521 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070022522 macBSSID: BSSID of the session
Jeff Johnsone7245742012-09-05 17:12:55 -070022523 pSession: pointer to the session (if found)
22524
Jeff Johnson295189b2012-06-20 16:38:30 -070022525 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070022526 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070022527*/
22528wpt_uint8
22529WDI_FindAssocSession
Jeff Johnsone7245742012-09-05 17:12:55 -070022530(
Jeff Johnson295189b2012-06-20 16:38:30 -070022531 WDI_ControlBlockType* pWDICtx,
22532 wpt_macAddr macBSSID,
22533 WDI_BSSSessionType** ppSession
22534)
22535{
Jeff Johnsone7245742012-09-05 17:12:55 -070022536 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070022537 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
22538
22539 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022540 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070022541 -------------------------------------------------------------------------*/
22542 if ( NULL == ppSession )
22543 {
22544 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022545 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070022546 return WDI_MAX_BSS_SESSIONS;
Jeff Johnson295189b2012-06-20 16:38:30 -070022547 }
22548
Jeff Johnsone7245742012-09-05 17:12:55 -070022549 *ppSession = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070022550
Jeff Johnsone7245742012-09-05 17:12:55 -070022551 /*------------------------------------------------------------------------
22552 Search for a session that matches the BSSID
Jeff Johnson295189b2012-06-20 16:38:30 -070022553 ------------------------------------------------------------------------*/
22554 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
22555 {
Madan Mohan Koyyalamudi35287862012-10-22 14:52:46 -070022556 if ( (pWDICtx->aBSSSessions[i].bInUse == eWLAN_PAL_TRUE) &&
22557 (eWLAN_PAL_TRUE ==
22558 wpalMemoryCompare(pWDICtx->aBSSSessions[i].macBSSID, macBSSID,
22559 WDI_MAC_ADDR_LEN)) )
Jeff Johnson295189b2012-06-20 16:38:30 -070022560 {
22561 /*Found the session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022562 *ppSession = &pWDICtx->aBSSSessions[i];
Jeff Johnson295189b2012-06-20 16:38:30 -070022563 return i;
22564 }
22565 }
22566
Jeff Johnsone7245742012-09-05 17:12:55 -070022567 return i;
Jeff Johnson295189b2012-06-20 16:38:30 -070022568}/*WDI_FindAssocSession*/
22569
22570/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022571 @brief Helper routine used to find a session based on the BSSID
22572
22573
22574 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070022575 ucBSSIdx: BSS Index of the session
22576 ppSession: out pointer to the session (if found)
Jeff Johnsone7245742012-09-05 17:12:55 -070022577
Jeff Johnson295189b2012-06-20 16:38:30 -070022578 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070022579 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070022580*/
22581wpt_uint8
22582WDI_FindAssocSessionByBSSIdx
Jeff Johnsone7245742012-09-05 17:12:55 -070022583(
Jeff Johnson295189b2012-06-20 16:38:30 -070022584 WDI_ControlBlockType* pWDICtx,
22585 wpt_uint16 ucBSSIdx,
22586 WDI_BSSSessionType** ppSession
22587)
22588{
Jeff Johnsone7245742012-09-05 17:12:55 -070022589 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070022590 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
22591
22592 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022593 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070022594 -------------------------------------------------------------------------*/
22595 if ( NULL == ppSession )
22596 {
22597 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022598 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070022599 return WDI_MAX_BSS_SESSIONS;
Jeff Johnson295189b2012-06-20 16:38:30 -070022600 }
22601
Jeff Johnsone7245742012-09-05 17:12:55 -070022602 *ppSession = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070022603
Jeff Johnsone7245742012-09-05 17:12:55 -070022604 /*------------------------------------------------------------------------
22605 Search for a session that matches the BSSID
Jeff Johnson295189b2012-06-20 16:38:30 -070022606 ------------------------------------------------------------------------*/
22607 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
22608 {
22609 if ( ucBSSIdx == pWDICtx->aBSSSessions[i].ucBSSIdx )
22610 {
22611 /*Found the session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022612 *ppSession = &pWDICtx->aBSSSessions[i];
Jeff Johnson295189b2012-06-20 16:38:30 -070022613 return i;
22614 }
22615 }
22616
Jeff Johnsone7245742012-09-05 17:12:55 -070022617 return i;
Jeff Johnson295189b2012-06-20 16:38:30 -070022618}/*WDI_FindAssocSessionByBSSIdx*/
22619
22620/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022621 @brief Helper routine used to find a session based on the BSSID
22622
22623
22624 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070022625 ucBSSIdx: BSS Index of the session
22626 ppSession: out pointer to the session (if found)
Jeff Johnsone7245742012-09-05 17:12:55 -070022627
Jeff Johnson295189b2012-06-20 16:38:30 -070022628 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070022629 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070022630*/
22631wpt_uint8
22632WDI_FindAssocSessionByIdx
Jeff Johnsone7245742012-09-05 17:12:55 -070022633(
Jeff Johnson295189b2012-06-20 16:38:30 -070022634 WDI_ControlBlockType* pWDICtx,
22635 wpt_uint16 usIdx,
22636 WDI_BSSSessionType** ppSession
22637)
22638{
22639 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
22640
22641 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022642 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070022643 -------------------------------------------------------------------------*/
22644 if ( NULL == ppSession || usIdx >= WDI_MAX_BSS_SESSIONS )
22645 {
22646 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022647 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070022648 return WDI_MAX_BSS_SESSIONS;
Jeff Johnson295189b2012-06-20 16:38:30 -070022649 }
22650
22651 /*Found the session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022652 *ppSession = &pWDICtx->aBSSSessions[usIdx];
Jeff Johnson295189b2012-06-20 16:38:30 -070022653
22654 return usIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070022655
Jeff Johnson295189b2012-06-20 16:38:30 -070022656}/*WDI_FindAssocSessionByBSSIdx*/
22657
22658/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022659 @brief Helper routine used to find an empty session in the WDI
Jeff Johnson295189b2012-06-20 16:38:30 -070022660 CB
Jeff Johnsone7245742012-09-05 17:12:55 -070022661
22662
22663 @param pWDICtx: pointer to the WLAN DAL context
22664 pSession: pointer to the session (if found)
22665
Jeff Johnson295189b2012-06-20 16:38:30 -070022666 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070022667 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070022668*/
22669wpt_uint8
22670WDI_FindEmptySession
Jeff Johnsone7245742012-09-05 17:12:55 -070022671(
Jeff Johnson295189b2012-06-20 16:38:30 -070022672 WDI_ControlBlockType* pWDICtx,
22673 WDI_BSSSessionType** ppSession
22674)
22675{
Jeff Johnsone7245742012-09-05 17:12:55 -070022676 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070022677 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
22678 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022679 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070022680 -------------------------------------------------------------------------*/
22681 if ( NULL == ppSession )
22682 {
22683 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022684 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070022685 return WDI_MAX_BSS_SESSIONS;
Jeff Johnson295189b2012-06-20 16:38:30 -070022686 }
22687
Jeff Johnsone7245742012-09-05 17:12:55 -070022688 *ppSession = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070022689
Jeff Johnsone7245742012-09-05 17:12:55 -070022690 /*------------------------------------------------------------------------
22691 Search for a session that it is not in use
Jeff Johnson295189b2012-06-20 16:38:30 -070022692 ------------------------------------------------------------------------*/
22693 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
22694 {
22695 if ( ! pWDICtx->aBSSSessions[i].bInUse )
22696 {
22697 /*Found a session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022698 *ppSession = &pWDICtx->aBSSSessions[i];
Jeff Johnson295189b2012-06-20 16:38:30 -070022699 return i;
22700 }
22701 }
22702
Jeff Johnsone7245742012-09-05 17:12:55 -070022703 return i;
Jeff Johnson295189b2012-06-20 16:38:30 -070022704}/*WDI_FindEmptySession*/
22705
22706
22707/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022708 @brief Helper routine used to get the total count of active
Jeff Johnson295189b2012-06-20 16:38:30 -070022709 sessions
Jeff Johnsone7245742012-09-05 17:12:55 -070022710
22711
22712 @param pWDICtx: pointer to the WLAN DAL context
Hoonki Lee9af07cf2013-04-24 01:21:58 -070022713 macBSSID: pointer to BSSID. If NULL, get all the session.
22714 If not NULL, count ActiveSession by excluding (TRUE) or including (FALSE) skipBSSID.
22715 skipBSSID: if TRUE, get all the sessions except matching to macBSSID. If FALSE, get all session.
22716 This argument is ignored if macBSSID is NULL.
Jeff Johnson295189b2012-06-20 16:38:30 -070022717 @see
22718 @return Number of sessions in use
22719*/
22720wpt_uint8
22721WDI_GetActiveSessionsCount
Jeff Johnsone7245742012-09-05 17:12:55 -070022722(
Hoonki Lee9af07cf2013-04-24 01:21:58 -070022723 WDI_ControlBlockType* pWDICtx,
22724 wpt_macAddr macBSSID,
22725 wpt_boolean skipBSSID
Jeff Johnson295189b2012-06-20 16:38:30 -070022726)
22727{
Jeff Johnsone7245742012-09-05 17:12:55 -070022728 wpt_uint8 i, ucCount = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070022729 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022730
22731 /*------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -070022732 Count all sessions in use
22733 ------------------------------------------------------------------------*/
22734 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
22735 {
Hoonki Lee9af07cf2013-04-24 01:21:58 -070022736 if ( macBSSID && skipBSSID &&
22737 (eWLAN_PAL_TRUE ==
22738 wpalMemoryCompare(pWDICtx->aBSSSessions[i].macBSSID, macBSSID,
22739 WDI_MAC_ADDR_LEN)))
22740 {
22741 continue;
22742 }
22743 else if ( pWDICtx->aBSSSessions[i].bInUse )
22744 {
Jeff Johnson295189b2012-06-20 16:38:30 -070022745 ucCount++;
Hoonki Lee9af07cf2013-04-24 01:21:58 -070022746 }
Jeff Johnson295189b2012-06-20 16:38:30 -070022747 }
22748
Jeff Johnsone7245742012-09-05 17:12:55 -070022749 return ucCount;
Jeff Johnson295189b2012-06-20 16:38:30 -070022750}/*WDI_GetActiveSessionsCount*/
22751
22752/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022753 @brief Helper routine used to delete session in the WDI
Jeff Johnson295189b2012-06-20 16:38:30 -070022754 CB
Jeff Johnsone7245742012-09-05 17:12:55 -070022755
22756
22757 @param pWDICtx: pointer to the WLAN DAL context
22758 pSession: pointer to the session (if found)
22759
Jeff Johnson295189b2012-06-20 16:38:30 -070022760 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070022761 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070022762*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022763void
Jeff Johnson295189b2012-06-20 16:38:30 -070022764WDI_DeleteSession
Jeff Johnsone7245742012-09-05 17:12:55 -070022765(
Jeff Johnson295189b2012-06-20 16:38:30 -070022766 WDI_ControlBlockType* pWDICtx,
22767 WDI_BSSSessionType* ppSession
22768)
22769{
22770 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022771 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070022772 -------------------------------------------------------------------------*/
22773 if ( NULL == ppSession )
22774 {
22775 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022776 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070022777 return ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022778 }
22779
Jeff Johnsone7245742012-09-05 17:12:55 -070022780 /*------------------------------------------------------------------------
22781 Reset the entries int session
Jeff Johnson295189b2012-06-20 16:38:30 -070022782 ------------------------------------------------------------------------*/
22783 wpal_list_destroy(&ppSession->wptPendingQueue);
22784 wpalMemoryZero(ppSession, sizeof(*ppSession));
Jeff Johnsone7245742012-09-05 17:12:55 -070022785 ppSession->wdiAssocState = WDI_ASSOC_INIT_ST;
22786 ppSession->bInUse = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022787 ppSession->wdiBssType = WDI_INFRASTRUCTURE_MODE;
22788 wpal_list_init(&ppSession->wptPendingQueue);
22789
22790}/*WDI_DeleteSession*/
22791
22792/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022793 @brief Utility function to add the broadcast STA to the the STA table.
Jeff Johnson295189b2012-06-20 16:38:30 -070022794 The bcast STA ID is assigned by HAL and must be valid.
Jeff Johnsone7245742012-09-05 17:12:55 -070022795 @param
22796
Jeff Johnson295189b2012-06-20 16:38:30 -070022797 WDI_AddStaParams: - pointer to the WDI Add STA params
22798 usBcastStaIdx: - Broadcast STA index passed by HAL
Jeff Johnsone7245742012-09-05 17:12:55 -070022799
22800 @see
22801 @return void
Jeff Johnson295189b2012-06-20 16:38:30 -070022802*/
22803void
22804WDI_AddBcastSTAtoSTATable
22805(
22806 WDI_ControlBlockType* pWDICtx,
22807 WDI_AddStaParams * staParams,
22808 wpt_uint16 usBcastStaIdx
22809)
22810{
22811 WDI_AddStaParams wdiAddSTAParam = {0};
22812 wpt_macAddr bcastMacAddr = {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF};
22813 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
22814
22815 /*---------------------------------------------------------------------
22816 Sanity check
22817 ---------------------------------------------------------------------*/
22818 if ( NULL == staParams )
22819 {
22820 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022821 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070022822
Jeff Johnsone7245742012-09-05 17:12:55 -070022823 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070022824 }
22825
22826 wdiAddSTAParam.bcastDpuIndex = staParams->bcastDpuIndex;
22827 wdiAddSTAParam.bcastDpuSignature = staParams->bcastDpuSignature;
22828 wdiAddSTAParam.bcastMgmtDpuIndex = staParams->bcastMgmtDpuIndex;
22829 wdiAddSTAParam.bcastMgmtDpuSignature = staParams->bcastMgmtDpuSignature;
22830 wdiAddSTAParam.dpuIndex = staParams->dpuIndex;
22831 wdiAddSTAParam.dpuSig = staParams->dpuSig;
22832 wpalMemoryCopy( wdiAddSTAParam.macBSSID, staParams->macBSSID,
22833 WDI_MAC_ADDR_LEN );
22834 wpalMemoryCopy( wdiAddSTAParam.staMacAddr, bcastMacAddr, WDI_MAC_ADDR_LEN );
22835 wdiAddSTAParam.ucBSSIdx = staParams->ucBSSIdx;
22836 wdiAddSTAParam.ucHTCapable = staParams->ucHTCapable;
22837 wdiAddSTAParam.ucRmfEnabled = staParams->ucRmfEnabled;
22838 wdiAddSTAParam.ucStaType = WDI_STA_ENTRY_BCAST;
22839 wdiAddSTAParam.ucWmmEnabled = staParams->ucWmmEnabled;
22840 wdiAddSTAParam.ucSTAIdx = usBcastStaIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070022841
Jeff Johnson295189b2012-06-20 16:38:30 -070022842 (void)WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
22843}
22844
22845/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022846 @brief NV blob will be divided into fragments of size 4kb and
22847 Sent to HAL
22848
22849 @param pWDICtx: pointer to the WLAN DAL context
22850 pEventData: pointer to the event information structure
22851
Jeff Johnson295189b2012-06-20 16:38:30 -070022852 @see
22853 @return Result of the function call
22854 */
22855
22856WDI_Status WDI_SendNvBlobReq
Jeff Johnsone7245742012-09-05 17:12:55 -070022857(
Jeff Johnson295189b2012-06-20 16:38:30 -070022858 WDI_ControlBlockType* pWDICtx,
22859 WDI_EventInfoType* pEventData
22860)
22861{
22862
22863 tHalNvImgDownloadReqMsg halNvImgDownloadParam;
22864 wpt_uint8* pSendBuffer = NULL;
22865 wpt_uint16 usDataOffset = 0;
22866 wpt_uint16 usSendSize = 0;
22867 wpt_uint16 usCurrentFragmentSize =0;
22868 wpt_uint8* pSrcBuffer = NULL;
22869 WDI_NvDownloadReqParamsType* pwdiNvDownloadReqParams =NULL ;
22870 WDI_NvDownloadRspCb wdiNvDownloadRspCb;
22871
22872 wdiNvDownloadRspCb = (WDI_NvDownloadRspCb)pEventData->pCBfnc;
22873 WDI_ASSERT(NULL != wdiNvDownloadRspCb);
22874 pwdiNvDownloadReqParams = (WDI_NvDownloadReqParamsType*)pEventData->pEventData;
22875
Jeff Johnsone7245742012-09-05 17:12:55 -070022876 /* Sanity Check is done by the caller */
Jeff Johnson295189b2012-06-20 16:38:30 -070022877 pSrcBuffer =(wpt_uint8 *) pwdiNvDownloadReqParams->wdiBlobInfo.pBlobAddress;
22878
22879 /* Update the current Fragment Number */
22880 pWDICtx->wdiNvBlobInfo.usCurrentFragment += 1;
22881
22882 /*Update the HAL REQ structure */
22883 /*HAL maintaining the fragment count as 0,1,2...n where at WDI it is represented as 1,2,3.. n*/
22884 halNvImgDownloadParam.nvImageReqParams.fragNumber =
22885 pWDICtx->wdiNvBlobInfo.usCurrentFragment-1;
22886
22887 /* Divide the NV Image to size of 'FRAGMENT_SIZE' fragments and send it to HAL.
Jeff Johnsone7245742012-09-05 17:12:55 -070022888 If the size of the Image is less than 'FRAGMENT_SIZE' then in one iteration total
Jeff Johnson295189b2012-06-20 16:38:30 -070022889 image will be sent to HAL*/
22890
Jeff Johnsone7245742012-09-05 17:12:55 -070022891 if(pWDICtx->wdiNvBlobInfo.usTotalFragment
Jeff Johnson295189b2012-06-20 16:38:30 -070022892 == pWDICtx->wdiNvBlobInfo.usCurrentFragment)
Jeff Johnsone7245742012-09-05 17:12:55 -070022893 {
Jeff Johnson295189b2012-06-20 16:38:30 -070022894 /* Taking care of boundry condition */
Jeff Johnsone7245742012-09-05 17:12:55 -070022895 if( !(usCurrentFragmentSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070022896 pwdiNvDownloadReqParams->wdiBlobInfo.uBlobSize%FRAGMENT_SIZE ))
22897 usCurrentFragmentSize = FRAGMENT_SIZE;
22898
22899 /*Update the HAL REQ structure */
22900 halNvImgDownloadParam.nvImageReqParams.isLastFragment = 1;
22901 halNvImgDownloadParam.nvImageReqParams.nvImgBufferSize= usCurrentFragmentSize;
22902
22903 }
22904 else
Jeff Johnsone7245742012-09-05 17:12:55 -070022905 {
Jeff Johnson295189b2012-06-20 16:38:30 -070022906 usCurrentFragmentSize = FRAGMENT_SIZE;
22907
22908 /*Update the HAL REQ structure */
22909 halNvImgDownloadParam.nvImageReqParams.isLastFragment =0;
22910 halNvImgDownloadParam.nvImageReqParams.nvImgBufferSize = usCurrentFragmentSize;
22911 }
22912
22913 /*-----------------------------------------------------------------------
22914 Get message buffer
22915 -----------------------------------------------------------------------*/
22916 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,WDI_NV_DOWNLOAD_REQ,
22917 sizeof(halNvImgDownloadParam.nvImageReqParams)+ usCurrentFragmentSize,
22918 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070022919 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070022920 (usDataOffset + sizeof(halNvImgDownloadParam.nvImageReqParams) + usCurrentFragmentSize )))
22921 {
22922 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080022923 "Unable to get send buffer in NV Download req %p %p ",
Jeff Johnson295189b2012-06-20 16:38:30 -070022924 pEventData, pwdiNvDownloadReqParams);
22925 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070022926 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022927 }
22928
22929 /* Copying the Hal NV download REQ structure */
Jeff Johnsone7245742012-09-05 17:12:55 -070022930 wpalMemoryCopy(pSendBuffer + usDataOffset ,
Jeff Johnson295189b2012-06-20 16:38:30 -070022931 &halNvImgDownloadParam.nvImageReqParams ,sizeof(tHalNvImgDownloadReqParams));
22932
22933 /* Appending the NV image fragment */
22934 wpalMemoryCopy(pSendBuffer + usDataOffset + sizeof(tHalNvImgDownloadReqParams),
22935 (void *)(pSrcBuffer + halNvImgDownloadParam.nvImageReqParams.fragNumber * FRAGMENT_SIZE),
22936 usCurrentFragmentSize);
22937
22938 pWDICtx->wdiReqStatusCB = pwdiNvDownloadReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070022939 pWDICtx->pReqStatusUserData = pwdiNvDownloadReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070022940
Jeff Johnsone7245742012-09-05 17:12:55 -070022941 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
22942 wdiNvDownloadRspCb, pEventData->pUserData,
Jeff Johnson295189b2012-06-20 16:38:30 -070022943 WDI_NV_DOWNLOAD_RESP);
22944
22945}
Jeff Johnsone7245742012-09-05 17:12:55 -070022946/*============================================================================
22947 Helper inline functions for
Jeff Johnson295189b2012-06-20 16:38:30 -070022948 ============================================================================*/
22949/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022950 @brief Helper routine used to find a session based on the BSSID
22951 @param pContext: pointer to the WLAN DAL context
22952 @param pDPContext: pointer to the Datapath context
22953
Jeff Johnson295189b2012-06-20 16:38:30 -070022954 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070022955 @return
Jeff Johnson295189b2012-06-20 16:38:30 -070022956*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022957WPT_INLINE void
Jeff Johnson295189b2012-06-20 16:38:30 -070022958WDI_DS_AssignDatapathContext (void *pContext, void *pDPContext)
22959{
22960 WDI_ControlBlockType *pCB = (WDI_ControlBlockType *)pContext;
22961
22962 pCB->pDPContext = pDPContext;
22963 return;
22964}
22965
22966/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022967 @brief Helper routine used to find a session based on the BSSID
22968
22969
22970 @param pContext: pointer to the WLAN DAL context
22971
Jeff Johnson295189b2012-06-20 16:38:30 -070022972 @see
22973 @return pointer to Datapath context
22974*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022975WPT_INLINE void *
Jeff Johnson295189b2012-06-20 16:38:30 -070022976WDI_DS_GetDatapathContext (void *pContext)
22977{
22978 WDI_ControlBlockType *pCB = (WDI_ControlBlockType *)pContext;
22979 return pCB->pDPContext;
22980}
22981/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022982 @brief Helper routine used to find a session based on the BSSID
22983
22984
22985 @param pContext: pointer to the WLAN DAL context
22986 @param pDTDriverContext: pointer to the Transport Driver context
22987
Jeff Johnson295189b2012-06-20 16:38:30 -070022988 @see
22989 @return void
22990*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022991WPT_INLINE void
Jeff Johnson295189b2012-06-20 16:38:30 -070022992WDT_AssignTransportDriverContext (void *pContext, void *pDTDriverContext)
22993{
22994 WDI_ControlBlockType *pCB = (WDI_ControlBlockType *)pContext;
22995
22996 pCB->pDTDriverContext = pDTDriverContext;
Jeff Johnsone7245742012-09-05 17:12:55 -070022997 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070022998}
22999
23000/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023001 @brief Helper routine used to find a session based on the BSSID
23002
23003
23004 @param pWDICtx: pointer to the WLAN DAL context
23005
Jeff Johnson295189b2012-06-20 16:38:30 -070023006 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070023007 @return pointer to datapath context
Jeff Johnson295189b2012-06-20 16:38:30 -070023008*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023009WPT_INLINE void *
Jeff Johnson295189b2012-06-20 16:38:30 -070023010WDT_GetTransportDriverContext (void *pContext)
23011{
23012 WDI_ControlBlockType *pCB = (WDI_ControlBlockType *)pContext;
Jeff Johnsone7245742012-09-05 17:12:55 -070023013 return(pCB->pDTDriverContext);
Jeff Johnson295189b2012-06-20 16:38:30 -070023014}
23015
Jeff Johnsone7245742012-09-05 17:12:55 -070023016/*============================================================================
Jeff Johnson295189b2012-06-20 16:38:30 -070023017 Helper inline converters
23018 ============================================================================*/
23019/*Convert WDI driver type into HAL driver type*/
23020WPT_STATIC WPT_INLINE WDI_Status
23021WDI_HAL_2_WDI_STATUS
23022(
23023 eHalStatus halStatus
23024)
23025{
Jeff Johnsone7245742012-09-05 17:12:55 -070023026 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070023027 the chances of getting inlined*/
23028 switch( halStatus )
23029 {
23030 case eHAL_STATUS_SUCCESS:
23031 case eHAL_STATUS_ADD_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO:
23032 case eHAL_STATUS_DEL_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO:
23033 return WDI_STATUS_SUCCESS;
23034 case eHAL_STATUS_FAILURE:
23035 return WDI_STATUS_E_FAILURE;
23036 case eHAL_STATUS_FAILED_ALLOC:
Jeff Johnsone7245742012-09-05 17:12:55 -070023037 return WDI_STATUS_MEM_FAILURE;
23038 /*The rest of the HAL error codes must be kept hidden from the UMAC as
Jeff Johnson295189b2012-06-20 16:38:30 -070023039 they refer to specific internal modules of our device*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023040 default:
23041 return WDI_STATUS_DEV_INTERNAL_FAILURE;
23042 }
Jeff Johnson295189b2012-06-20 16:38:30 -070023043
Jeff Johnsone7245742012-09-05 17:12:55 -070023044 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023045}/*WDI_HAL_2_WDI_STATUS*/
23046
23047/*Convert WDI request type into HAL request type*/
23048WPT_STATIC WPT_INLINE tHalHostMsgType
23049WDI_2_HAL_REQ_TYPE
23050(
23051 WDI_RequestEnumType wdiReqType
23052)
23053{
Jeff Johnsone7245742012-09-05 17:12:55 -070023054 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070023055 the chances of getting inlined*/
23056 switch( wdiReqType )
Jeff Johnsone7245742012-09-05 17:12:55 -070023057 {
Jeff Johnson295189b2012-06-20 16:38:30 -070023058 case WDI_START_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023059 return WLAN_HAL_START_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023060 case WDI_STOP_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023061 return WLAN_HAL_STOP_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023062 case WDI_INIT_SCAN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023063 return WLAN_HAL_INIT_SCAN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023064 case WDI_START_SCAN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023065 return WLAN_HAL_START_SCAN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023066 case WDI_END_SCAN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023067 return WLAN_HAL_END_SCAN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023068 case WDI_FINISH_SCAN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023069 return WLAN_HAL_FINISH_SCAN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023070 case WDI_JOIN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023071 return WLAN_HAL_JOIN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023072 case WDI_CONFIG_BSS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023073 return WLAN_HAL_CONFIG_BSS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023074 case WDI_DEL_BSS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023075 return WLAN_HAL_DELETE_BSS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023076 case WDI_POST_ASSOC_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023077 return WLAN_HAL_POST_ASSOC_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023078 case WDI_DEL_STA_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023079 return WLAN_HAL_DELETE_STA_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023080 case WDI_SET_BSS_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023081 return WLAN_HAL_SET_BSSKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023082 case WDI_RMV_BSS_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023083 return WLAN_HAL_RMV_BSSKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023084 case WDI_SET_STA_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023085 return WLAN_HAL_SET_STAKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023086 case WDI_RMV_STA_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023087 return WLAN_HAL_RMV_STAKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023088 case WDI_SET_STA_BCAST_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023089 return WLAN_HAL_SET_BCASTKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023090 case WDI_RMV_STA_BCAST_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023091 //Some conflict in the old code - check this: return WLAN_HAL_RMV_BCASTKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023092 return WLAN_HAL_RMV_STAKEY_REQ;
23093 case WDI_ADD_TS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023094 return WLAN_HAL_ADD_TS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023095 case WDI_DEL_TS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023096 return WLAN_HAL_DEL_TS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023097 case WDI_UPD_EDCA_PRMS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023098 return WLAN_HAL_UPD_EDCA_PARAMS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023099 case WDI_ADD_BA_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023100 return WLAN_HAL_ADD_BA_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023101 case WDI_DEL_BA_REQ:
23102 return WLAN_HAL_DEL_BA_REQ;
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -080023103#ifdef FEATURE_WLAN_ESE
Jeff Johnson295189b2012-06-20 16:38:30 -070023104 case WDI_TSM_STATS_REQ:
23105 return WLAN_HAL_TSM_STATS_REQ;
23106#endif
23107 case WDI_CH_SWITCH_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023108 return WLAN_HAL_CH_SWITCH_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023109 case WDI_CONFIG_STA_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023110 return WLAN_HAL_CONFIG_STA_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023111 case WDI_SET_LINK_ST_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023112 return WLAN_HAL_SET_LINK_ST_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023113 case WDI_GET_STATS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023114 return WLAN_HAL_GET_STATS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023115 case WDI_UPDATE_CFG_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023116 return WLAN_HAL_UPDATE_CFG_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023117 case WDI_ADD_BA_SESSION_REQ:
23118 return WLAN_HAL_ADD_BA_SESSION_REQ;
23119 case WDI_TRIGGER_BA_REQ:
23120 return WLAN_HAL_TRIGGER_BA_REQ;
23121 case WDI_UPD_BCON_PRMS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023122 return WLAN_HAL_UPDATE_BEACON_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023123 case WDI_SND_BCON_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023124 return WLAN_HAL_SEND_BEACON_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023125 case WDI_UPD_PROBE_RSP_TEMPLATE_REQ:
23126 return WLAN_HAL_UPDATE_PROBE_RSP_TEMPLATE_REQ;
23127 case WDI_SET_MAX_TX_POWER_REQ:
23128 return WLAN_HAL_SET_MAX_TX_POWER_REQ;
Arif Hussaina5ebce02013-08-09 15:09:58 -070023129 case WDI_SET_MAX_TX_POWER_PER_BAND_REQ:
23130 return WLAN_HAL_SET_MAX_TX_POWER_PER_BAND_REQ;
schang86c22c42013-03-13 18:41:24 -070023131 case WDI_SET_TX_POWER_REQ:
23132 return WLAN_HAL_SET_TX_POWER_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023133 case WDI_P2P_GO_NOTICE_OF_ABSENCE_REQ:
23134 return WLAN_HAL_SET_P2P_GONOA_REQ;
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053023135#ifdef FEATURE_WLAN_TDLS
23136 case WDI_TDLS_LINK_ESTABLISH_REQ:
23137 return WLAN_HAL_TDLS_LINK_ESTABLISHED_REQ;
23138#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070023139 case WDI_ENTER_IMPS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023140 return WLAN_HAL_ENTER_IMPS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023141 case WDI_EXIT_IMPS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023142 return WLAN_HAL_EXIT_IMPS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023143 case WDI_ENTER_BMPS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023144 return WLAN_HAL_ENTER_BMPS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023145 case WDI_EXIT_BMPS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023146 return WLAN_HAL_EXIT_BMPS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023147 case WDI_ENTER_UAPSD_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023148 return WLAN_HAL_ENTER_UAPSD_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023149 case WDI_EXIT_UAPSD_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023150 return WLAN_HAL_EXIT_UAPSD_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023151 case WDI_SET_UAPSD_PARAM_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023152 return WLAN_HAL_SET_UAPSD_AC_PARAMS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023153 case WDI_UPDATE_UAPSD_PARAM_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023154 return WLAN_HAL_UPDATE_UAPSD_PARAM_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023155 case WDI_CONFIGURE_RXP_FILTER_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023156 return WLAN_HAL_CONFIGURE_RXP_FILTER_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023157 case WDI_SET_BEACON_FILTER_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023158 return WLAN_HAL_ADD_BCN_FILTER_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023159 case WDI_REM_BEACON_FILTER_REQ:
23160 return WLAN_HAL_REM_BCN_FILTER_REQ;
23161 case WDI_SET_RSSI_THRESHOLDS_REQ:
23162 return WLAN_HAL_SET_RSSI_THRESH_REQ;
23163 case WDI_HOST_OFFLOAD_REQ:
23164 return WLAN_HAL_HOST_OFFLOAD_REQ;
23165 case WDI_WOWL_ADD_BC_PTRN_REQ:
23166 return WLAN_HAL_ADD_WOWL_BCAST_PTRN;
23167 case WDI_WOWL_DEL_BC_PTRN_REQ:
23168 return WLAN_HAL_DEL_WOWL_BCAST_PTRN;
23169 case WDI_WOWL_ENTER_REQ:
23170 return WLAN_HAL_ENTER_WOWL_REQ;
23171 case WDI_WOWL_EXIT_REQ:
23172 return WLAN_HAL_EXIT_WOWL_REQ;
23173 case WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ:
23174 return WLAN_HAL_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ;
23175 case WDI_NV_DOWNLOAD_REQ:
23176 return WLAN_HAL_DOWNLOAD_NV_REQ;
23177 case WDI_FLUSH_AC_REQ:
23178 return WLAN_HAL_TL_HAL_FLUSH_AC_REQ;
23179 case WDI_BTAMP_EVENT_REQ:
23180 return WLAN_HAL_SIGNAL_BTAMP_EVENT_REQ;
23181#ifdef WLAN_FEATURE_VOWIFI_11R
23182 case WDI_AGGR_ADD_TS_REQ:
23183 return WLAN_HAL_AGGR_ADD_TS_REQ;
23184#endif /* WLAN_FEATURE_VOWIFI_11R */
Jeff Johnson295189b2012-06-20 16:38:30 -070023185 case WDI_FTM_CMD_REQ:
23186 return WLAN_HAL_PROCESS_PTT_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023187 case WDI_ADD_STA_SELF_REQ:
23188 return WLAN_HAL_ADD_STA_SELF_REQ;
23189 case WDI_DEL_STA_SELF_REQ:
23190 return WLAN_HAL_DEL_STA_SELF_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070023191#ifdef FEATURE_OEM_DATA_SUPPORT
23192 case WDI_START_OEM_DATA_REQ:
23193 return WLAN_HAL_START_OEM_DATA_REQ;
23194#endif /* FEATURE_OEM_DATA_SUPPORT */
Jeff Johnson295189b2012-06-20 16:38:30 -070023195 case WDI_HOST_RESUME_REQ:
23196 return WLAN_HAL_HOST_RESUME_REQ;
23197 case WDI_HOST_SUSPEND_IND:
23198 return WLAN_HAL_HOST_SUSPEND_IND;
Madan Mohan Koyyalamudi01cba042013-01-10 21:56:05 -080023199 case WDI_TRAFFIC_STATS_IND:
23200 return WLAN_HAL_CLASS_B_STATS_IND;
Chet Lanctot186b5732013-03-18 10:26:30 -070023201#ifdef WLAN_FEATURE_11W
23202 case WDI_EXCLUDE_UNENCRYPTED_IND:
23203 return WLAN_HAL_EXCLUDE_UNENCRYPTED_IND;
23204#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070023205 case WDI_KEEP_ALIVE_REQ:
23206 return WLAN_HAL_KEEP_ALIVE_REQ;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070023207#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070023208 case WDI_ROAM_SCAN_OFFLOAD_REQ:
23209 return WLAN_ROAM_SCAN_OFFLOAD_REQ;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070023210#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070023211#ifdef FEATURE_WLAN_SCAN_PNO
23212 case WDI_SET_PREF_NETWORK_REQ:
23213 return WLAN_HAL_SET_PREF_NETWORK_REQ;
23214 case WDI_SET_RSSI_FILTER_REQ:
23215 return WLAN_HAL_SET_RSSI_FILTER_REQ;
23216 case WDI_UPDATE_SCAN_PARAMS_REQ:
23217 return WLAN_HAL_UPDATE_SCAN_PARAM_REQ;
23218#endif // FEATURE_WLAN_SCAN_PNO
23219 case WDI_SET_TX_PER_TRACKING_REQ:
23220 return WLAN_HAL_SET_TX_PER_TRACKING_REQ;
23221#ifdef WLAN_FEATURE_PACKET_FILTERING
23222 case WDI_8023_MULTICAST_LIST_REQ:
23223 return WLAN_HAL_8023_MULTICAST_LIST_REQ;
23224 case WDI_RECEIVE_FILTER_SET_FILTER_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070023225 return WLAN_HAL_SET_PACKET_FILTER_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023226 case WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ:
23227 return WLAN_HAL_PACKET_FILTER_MATCH_COUNT_REQ;
23228 case WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ:
23229 return WLAN_HAL_CLEAR_PACKET_FILTER_REQ;
23230#endif // WLAN_FEATURE_PACKET_FILTERING
23231 case WDI_HAL_DUMP_CMD_REQ:
23232 return WLAN_HAL_DUMP_COMMAND_REQ;
23233#ifdef WLAN_FEATURE_GTK_OFFLOAD
23234 case WDI_GTK_OFFLOAD_REQ:
23235 return WLAN_HAL_GTK_OFFLOAD_REQ;
23236 case WDI_GTK_OFFLOAD_GETINFO_REQ:
23237 return WLAN_HAL_GTK_OFFLOAD_GETINFO_REQ;
23238#endif /* WLAN_FEATURE_GTK_OFFLOAD */
23239
23240 case WDI_INIT_SCAN_CON_REQ:
23241 return WLAN_HAL_INIT_SCAN_CON_REQ;
23242 case WDI_SET_POWER_PARAMS_REQ:
23243 return WLAN_HAL_SET_POWER_PARAMS_REQ;
23244 case WDI_SET_TM_LEVEL_REQ:
23245 return WLAN_HAL_SET_THERMAL_MITIGATION_REQ;
23246 case WDI_FEATURE_CAPS_EXCHANGE_REQ:
23247 return WLAN_HAL_FEATURE_CAPS_EXCHANGE_REQ;
Mohit Khanna4a70d262012-09-11 16:30:12 -070023248#ifdef WLAN_FEATURE_11AC
23249 case WDI_UPDATE_VHT_OP_MODE_REQ:
23250 return WLAN_HAL_UPDATE_VHT_OP_MODE_REQ;
23251#endif
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -080023252 case WDI_GET_ROAM_RSSI_REQ:
23253 return WLAN_HAL_GET_ROAM_RSSI_REQ;
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +053023254 case WDI_DHCP_START_IND:
23255 return WLAN_HAL_DHCP_START_IND;
23256 case WDI_DHCP_STOP_IND:
23257 return WLAN_HAL_DHCP_STOP_IND;
Leo Chang9056f462013-08-01 19:21:11 -070023258#ifdef FEATURE_WLAN_LPHB
23259 case WDI_LPHB_CFG_REQ:
23260 return WLAN_HAL_LPHB_CFG_REQ;
23261#endif /* FEATURE_WLAN_LPHB */
Yue Mab9c86f42013-08-14 15:59:08 -070023262 case WDI_ADD_PERIODIC_TX_PATTERN_IND:
23263 return WLAN_HAL_ADD_PERIODIC_TX_PTRN_IND;
23264 case WDI_DEL_PERIODIC_TX_PATTERN_IND:
23265 return WLAN_HAL_DEL_PERIODIC_TX_PTRN_IND;
23266
Rajeev79dbe4c2013-10-05 11:03:42 +053023267#ifdef FEATURE_WLAN_BATCH_SCAN
23268 case WDI_SET_BATCH_SCAN_REQ:
23269 return WLAN_HAL_BATCHSCAN_SET_REQ;
23270 case WDI_STOP_BATCH_SCAN_IND:
23271 return WLAN_HAL_BATCHSCAN_STOP_IND;
23272 case WDI_TRIGGER_BATCH_SCAN_RESULT_IND:
23273 return WLAN_HAL_BATCHSCAN_TRIGGER_RESULT_IND;
23274#endif
Chittajit Mitraf5413a42013-10-18 14:20:08 -070023275 case WDI_RATE_UPDATE_IND:
23276 return WLAN_HAL_RATE_UPDATE_IND;
Sandeep Puligillac3450eb2014-03-06 18:10:57 +053023277 case WDI_START_HT40_OBSS_SCAN_IND:
23278 return WLAN_HAL_START_HT40_OBSS_SCAN_IND;
23279 case WDI_STOP_HT40_OBSS_SCAN_IND:
23280 return WLAN_HAL_STOP_HT40_OBSS_SCAN_IND;
Manjunathappa Prakash86f78ca2014-02-10 18:09:15 -080023281 case WDI_UPDATE_CHAN_REQ:
23282 return WLAN_HAL_UPDATE_CHANNEL_LIST_REQ;
Kalikinkar dhara1e83b772014-02-06 12:59:22 -080023283 case WDI_CH_SWITCH_REQ_V1:
23284 return WLAN_HAL_CH_SWITCH_V1_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023285 default:
Jeff Johnsone7245742012-09-05 17:12:55 -070023286 return WLAN_HAL_MSG_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070023287 }
Jeff Johnsone7245742012-09-05 17:12:55 -070023288
Jeff Johnson295189b2012-06-20 16:38:30 -070023289}/*WDI_2_HAL_REQ_TYPE*/
23290
23291/*Convert WDI response type into HAL response type*/
23292WPT_STATIC WPT_INLINE WDI_ResponseEnumType
23293HAL_2_WDI_RSP_TYPE
23294(
23295 tHalHostMsgType halMsg
23296)
23297{
Jeff Johnsone7245742012-09-05 17:12:55 -070023298 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070023299 the chances of getting inlined*/
23300 switch( halMsg )
23301 {
23302 case WLAN_HAL_START_RSP:
23303 return WDI_START_RESP;
23304 case WLAN_HAL_STOP_RSP:
23305 return WDI_STOP_RESP;
23306 case WLAN_HAL_INIT_SCAN_RSP:
23307 return WDI_INIT_SCAN_RESP;
23308 case WLAN_HAL_START_SCAN_RSP:
23309 return WDI_START_SCAN_RESP;
23310 case WLAN_HAL_END_SCAN_RSP:
23311 return WDI_END_SCAN_RESP;
23312 case WLAN_HAL_FINISH_SCAN_RSP:
23313 return WDI_FINISH_SCAN_RESP;
23314 case WLAN_HAL_CONFIG_STA_RSP:
23315 return WDI_CONFIG_STA_RESP;
23316 case WLAN_HAL_DELETE_STA_RSP:
23317 return WDI_DEL_STA_RESP;
23318 case WLAN_HAL_CONFIG_BSS_RSP:
23319 return WDI_CONFIG_BSS_RESP;
23320 case WLAN_HAL_DELETE_BSS_RSP:
23321 return WDI_DEL_BSS_RESP;
23322 case WLAN_HAL_JOIN_RSP:
23323 return WDI_JOIN_RESP;
23324 case WLAN_HAL_POST_ASSOC_RSP:
23325 return WDI_POST_ASSOC_RESP;
23326 case WLAN_HAL_SET_BSSKEY_RSP:
23327 return WDI_SET_BSS_KEY_RESP;
23328 case WLAN_HAL_SET_STAKEY_RSP:
23329 return WDI_SET_STA_KEY_RESP;
23330 case WLAN_HAL_RMV_BSSKEY_RSP:
23331 return WDI_RMV_BSS_KEY_RESP;
23332 case WLAN_HAL_RMV_STAKEY_RSP:
23333 return WDI_RMV_STA_KEY_RESP;
23334 case WLAN_HAL_SET_BCASTKEY_RSP:
23335 return WDI_SET_STA_BCAST_KEY_RESP;
23336 //Some conflict in the old code - check this: case WLAN_HAL_RMV_BCASTKEY_RSP:
23337 // return WDI_RMV_STA_BCAST_KEY_RESP;
23338 case WLAN_HAL_ADD_TS_RSP:
23339 return WDI_ADD_TS_RESP;
23340 case WLAN_HAL_DEL_TS_RSP:
23341 return WDI_DEL_TS_RESP;
23342 case WLAN_HAL_UPD_EDCA_PARAMS_RSP:
23343 return WDI_UPD_EDCA_PRMS_RESP;
23344 case WLAN_HAL_ADD_BA_RSP:
23345 return WDI_ADD_BA_RESP;
23346 case WLAN_HAL_DEL_BA_RSP:
23347 return WDI_DEL_BA_RESP;
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -080023348#ifdef FEATURE_WLAN_ESE
Jeff Johnson295189b2012-06-20 16:38:30 -070023349 case WLAN_HAL_TSM_STATS_RSP:
23350 return WDI_TSM_STATS_RESP;
23351#endif
23352 case WLAN_HAL_CH_SWITCH_RSP:
23353 return WDI_CH_SWITCH_RESP;
23354 case WLAN_HAL_SET_LINK_ST_RSP:
23355 return WDI_SET_LINK_ST_RESP;
23356 case WLAN_HAL_GET_STATS_RSP:
23357 return WDI_GET_STATS_RESP;
23358 case WLAN_HAL_UPDATE_CFG_RSP:
23359 return WDI_UPDATE_CFG_RESP;
23360 case WLAN_HAL_ADD_BA_SESSION_RSP:
23361 return WDI_ADD_BA_SESSION_RESP;
23362 case WLAN_HAL_TRIGGER_BA_RSP:
23363 return WDI_TRIGGER_BA_RESP;
23364 case WLAN_HAL_UPDATE_BEACON_RSP:
23365 return WDI_UPD_BCON_PRMS_RESP;
23366 case WLAN_HAL_SEND_BEACON_RSP:
23367 return WDI_SND_BCON_RESP;
23368 case WLAN_HAL_UPDATE_PROBE_RSP_TEMPLATE_RSP:
23369 return WDI_UPD_PROBE_RSP_TEMPLATE_RESP;
23370 /*Indications*/
23371 case WLAN_HAL_RSSI_NOTIFICATION_IND:
23372 return WDI_HAL_RSSI_NOTIFICATION_IND;
23373 case WLAN_HAL_MISSED_BEACON_IND:
23374 return WDI_HAL_MISSED_BEACON_IND;
23375 case WLAN_HAL_UNKNOWN_ADDR2_FRAME_RX_IND:
23376 return WDI_HAL_UNKNOWN_ADDR2_FRAME_RX_IND;
23377 case WLAN_HAL_MIC_FAILURE_IND:
23378 return WDI_HAL_MIC_FAILURE_IND;
23379 case WLAN_HAL_FATAL_ERROR_IND:
23380 return WDI_HAL_FATAL_ERROR_IND;
23381 case WLAN_HAL_DELETE_STA_CONTEXT_IND:
23382 return WDI_HAL_DEL_STA_IND;
23383 case WLAN_HAL_COEX_IND:
23384 return WDI_HAL_COEX_IND;
23385 case WLAN_HAL_OTA_TX_COMPL_IND:
23386 return WDI_HAL_TX_COMPLETE_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070023387 case WLAN_HAL_P2P_NOA_ATTR_IND:
23388 return WDI_HAL_P2P_NOA_ATTR_IND;
Viral Modid86bde22012-12-10 13:09:21 -080023389 case WLAN_HAL_P2P_NOA_START_IND:
23390 return WDI_HAL_P2P_NOA_START_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070023391 case WLAN_HAL_TX_PER_HIT_IND:
23392 return WDI_HAL_TX_PER_HIT_IND;
23393 case WLAN_HAL_SET_MAX_TX_POWER_RSP:
23394 return WDI_SET_MAX_TX_POWER_RESP;
Arif Hussaina5ebce02013-08-09 15:09:58 -070023395 case WLAN_HAL_SET_MAX_TX_POWER_PER_BAND_RSP:
23396 return WDI_SET_MAX_TX_POWER_PER_BAND_RSP;
schang86c22c42013-03-13 18:41:24 -070023397 case WLAN_HAL_SET_TX_POWER_RSP:
23398 return WDI_SET_TX_POWER_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070023399 case WLAN_HAL_SET_P2P_GONOA_RSP:
23400 return WDI_P2P_GO_NOTICE_OF_ABSENCE_RESP;
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053023401#ifdef FEATURE_WLAN_TDLS
23402 case WLAN_HAL_TDLS_LINK_ESTABLISHED_RSP:
23403 return WDI_TDLS_LINK_ESTABLISH_REQ_RESP;
23404 case WLAN_HAL_TDLS_IND:
23405 return WDI_HAL_TDLS_IND;
23406#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070023407 case WLAN_HAL_ENTER_IMPS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070023408 return WDI_ENTER_IMPS_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070023409 case WLAN_HAL_EXIT_IMPS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070023410 return WDI_EXIT_IMPS_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070023411 case WLAN_HAL_ENTER_BMPS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070023412 return WDI_ENTER_BMPS_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070023413 case WLAN_HAL_EXIT_BMPS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070023414 return WDI_EXIT_BMPS_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070023415 case WLAN_HAL_ENTER_UAPSD_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070023416 return WDI_ENTER_UAPSD_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070023417 case WLAN_HAL_EXIT_UAPSD_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070023418 return WDI_EXIT_UAPSD_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070023419 case WLAN_HAL_SET_UAPSD_AC_PARAMS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070023420 return WDI_SET_UAPSD_PARAM_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070023421 case WLAN_HAL_UPDATE_UAPSD_PARAM_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070023422 return WDI_UPDATE_UAPSD_PARAM_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070023423 case WLAN_HAL_CONFIGURE_RXP_FILTER_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070023424 return WDI_CONFIGURE_RXP_FILTER_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070023425 case WLAN_HAL_ADD_BCN_FILTER_RSP:
23426 return WDI_SET_BEACON_FILTER_RESP;
23427 case WLAN_HAL_REM_BCN_FILTER_RSP:
23428 return WDI_REM_BEACON_FILTER_RESP;
23429 case WLAN_HAL_SET_RSSI_THRESH_RSP:
23430 return WDI_SET_RSSI_THRESHOLDS_RESP;
23431 case WLAN_HAL_HOST_OFFLOAD_RSP:
23432 return WDI_HOST_OFFLOAD_RESP;
23433 case WLAN_HAL_ADD_WOWL_BCAST_PTRN_RSP:
23434 return WDI_WOWL_ADD_BC_PTRN_RESP;
23435 case WLAN_HAL_DEL_WOWL_BCAST_PTRN_RSP:
23436 return WDI_WOWL_DEL_BC_PTRN_RESP;
23437 case WLAN_HAL_ENTER_WOWL_RSP:
23438 return WDI_WOWL_ENTER_RESP;
23439 case WLAN_HAL_EXIT_WOWL_RSP:
23440 return WDI_WOWL_EXIT_RESP;
23441 case WLAN_HAL_CONFIGURE_APPS_CPU_WAKEUP_STATE_RSP:
23442 return WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_RESP;
23443 case WLAN_HAL_DOWNLOAD_NV_RSP:
23444 return WDI_NV_DOWNLOAD_RESP;
23445 case WLAN_HAL_TL_HAL_FLUSH_AC_RSP:
23446 return WDI_FLUSH_AC_RESP;
23447 case WLAN_HAL_SIGNAL_BTAMP_EVENT_RSP:
23448 return WDI_BTAMP_EVENT_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070023449 case WLAN_HAL_PROCESS_PTT_RSP:
23450 return WDI_FTM_CMD_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070023451 case WLAN_HAL_ADD_STA_SELF_RSP:
23452 return WDI_ADD_STA_SELF_RESP;
23453case WLAN_HAL_DEL_STA_SELF_RSP:
23454 return WDI_DEL_STA_SELF_RESP;
Jeff Johnsone7245742012-09-05 17:12:55 -070023455#ifdef FEATURE_OEM_DATA_SUPPORT
23456 case WLAN_HAL_START_OEM_DATA_RSP:
23457 return WDI_START_OEM_DATA_RESP;
23458#endif /* FEATURE_OEM_DATA_SUPPORT */
Jeff Johnson295189b2012-06-20 16:38:30 -070023459 case WLAN_HAL_HOST_RESUME_RSP:
23460 return WDI_HOST_RESUME_RESP;
23461 case WLAN_HAL_KEEP_ALIVE_RSP:
23462 return WDI_KEEP_ALIVE_RESP;
23463#ifdef FEATURE_WLAN_SCAN_PNO
23464 case WLAN_HAL_SET_PREF_NETWORK_RSP:
23465 return WDI_SET_PREF_NETWORK_RESP;
23466 case WLAN_HAL_SET_RSSI_FILTER_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070023467 return WDI_SET_RSSI_FILTER_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070023468 case WLAN_HAL_UPDATE_SCAN_PARAM_RSP:
23469 return WDI_UPDATE_SCAN_PARAMS_RESP;
23470 case WLAN_HAL_PREF_NETW_FOUND_IND:
23471 return WDI_HAL_PREF_NETWORK_FOUND_IND;
23472#endif // FEATURE_WLAN_SCAN_PNO
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070023473#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070023474 case WLAN_ROAM_SCAN_OFFLOAD_RSP:
23475 return WDI_ROAM_SCAN_OFFLOAD_RESP;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070023476#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070023477 case WLAN_HAL_SET_TX_PER_TRACKING_RSP:
23478 return WDI_SET_TX_PER_TRACKING_RESP;
23479#ifdef WLAN_FEATURE_PACKET_FILTERING
23480 case WLAN_HAL_8023_MULTICAST_LIST_RSP:
23481 return WDI_8023_MULTICAST_LIST_RESP;
23482 case WLAN_HAL_SET_PACKET_FILTER_RSP:
23483 return WDI_RECEIVE_FILTER_SET_FILTER_RESP;
23484 case WLAN_HAL_PACKET_FILTER_MATCH_COUNT_RSP:
23485 return WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_RESP;
23486 case WLAN_HAL_CLEAR_PACKET_FILTER_RSP:
23487 return WDI_RECEIVE_FILTER_CLEAR_FILTER_RESP;
23488#endif // WLAN_FEATURE_PACKET_FILTERING
23489
23490 case WLAN_HAL_DUMP_COMMAND_RSP:
23491 return WDI_HAL_DUMP_CMD_RESP;
23492 case WLAN_HAL_SET_POWER_PARAMS_RSP:
23493 return WDI_SET_POWER_PARAMS_RESP;
23494#ifdef WLAN_FEATURE_VOWIFI_11R
23495 case WLAN_HAL_AGGR_ADD_TS_RSP:
23496 return WDI_AGGR_ADD_TS_RESP;
23497#endif
23498
23499#ifdef WLAN_FEATURE_GTK_OFFLOAD
23500 case WLAN_HAL_GTK_OFFLOAD_RSP:
23501 return WDI_GTK_OFFLOAD_RESP;
23502 case WLAN_HAL_GTK_OFFLOAD_GETINFO_RSP:
23503 return WDI_GTK_OFFLOAD_GETINFO_RESP;
23504#endif /* WLAN_FEATURE_GTK_OFFLOAD */
23505#ifdef WLAN_WAKEUP_EVENTS
23506 case WLAN_HAL_WAKE_REASON_IND:
23507 return WDI_HAL_WAKE_REASON_IND;
23508#endif // WLAN_WAKEUP_EVENTS
23509
23510 case WLAN_HAL_SET_THERMAL_MITIGATION_RSP:
23511 return WDI_SET_TM_LEVEL_RESP;
23512 case WLAN_HAL_FEATURE_CAPS_EXCHANGE_RSP:
23513 return WDI_FEATURE_CAPS_EXCHANGE_RESP;
Mohit Khanna4a70d262012-09-11 16:30:12 -070023514#ifdef WLAN_FEATURE_11AC
23515 case WLAN_HAL_UPDATE_VHT_OP_MODE_RSP:
23516 return WDI_UPDATE_VHT_OP_MODE_RESP;
23517#endif
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -080023518#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_ESE || defined(FEATURE_WLAN_LFR)
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -080023519 case WLAN_HAL_GET_ROAM_RSSI_RSP:
23520 return WDI_GET_ROAM_RSSI_RESP;
23521#endif
Ravi Joshid2ca7c42013-07-23 08:37:49 -070023522
Leo Chang9056f462013-08-01 19:21:11 -070023523#ifdef FEATURE_WLAN_LPHB
23524 case WLAN_HAL_LPHB_IND:
Leo Changd9df8aa2013-09-26 13:32:26 -070023525 return WDI_HAL_LPHB_IND;
Leo Chang9056f462013-08-01 19:21:11 -070023526 case WLAN_HAL_LPHB_CFG_RSP:
23527 return WDI_LPHB_CFG_RESP;
23528#endif /* FEATURE_WLAN_LPHB */
Ravi Joshid2ca7c42013-07-23 08:37:49 -070023529
23530 case WLAN_HAL_IBSS_PEER_INACTIVITY_IND:
23531 return WDI_HAL_IBSS_PEER_INACTIVITY_IND;
Yue Mab9c86f42013-08-14 15:59:08 -070023532 case WLAN_HAL_PERIODIC_TX_PTRN_FW_IND:
23533 return WDI_HAL_PERIODIC_TX_PTRN_FW_IND;
Ravi Joshid2ca7c42013-07-23 08:37:49 -070023534
Rajeev79dbe4c2013-10-05 11:03:42 +053023535#ifdef FEATURE_WLAN_BATCH_SCAN
23536 case WLAN_HAL_BATCHSCAN_SET_RSP:
23537 return WDI_SET_BATCH_SCAN_RESP;
23538 case WLAN_HAL_BATCHSCAN_RESULT_IND:
23539 return WDI_BATCHSCAN_RESULT_IND;
23540#endif // FEATURE_WLAN_BATCH_SCAN
23541
Leo Chang0b0e45a2013-12-15 15:18:55 -080023542#ifdef FEATURE_WLAN_CH_AVOID
23543 case WLAN_HAL_AVOID_FREQ_RANGE_IND:
23544 return WDI_HAL_CH_AVOID_IND;
23545#endif /* FEATURE_WLAN_CH_AVOID */
Manjunathappa Prakash86f78ca2014-02-10 18:09:15 -080023546 case WLAN_HAL_UPDATE_CHANNEL_LIST_RSP:
23547 return WDI_UPDATE_CHAN_RESP;
Leo Chang0b0e45a2013-12-15 15:18:55 -080023548
Jeff Johnson295189b2012-06-20 16:38:30 -070023549 default:
Jeff Johnsone7245742012-09-05 17:12:55 -070023550 return eDRIVER_TYPE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070023551 }
23552
23553}/*HAL_2_WDI_RSP_TYPE*/
23554
23555
23556/*Convert WDI driver type into HAL driver type*/
23557WPT_STATIC WPT_INLINE tDriverType
23558WDI_2_HAL_DRV_TYPE
23559(
23560 WDI_DriverType wdiDriverType
23561)
23562{
Jeff Johnsone7245742012-09-05 17:12:55 -070023563 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070023564 the chances of getting inlined*/
23565 switch( wdiDriverType )
23566 {
23567 case WDI_DRIVER_TYPE_PRODUCTION:
23568 return eDRIVER_TYPE_PRODUCTION;
23569 case WDI_DRIVER_TYPE_MFG:
23570 return eDRIVER_TYPE_MFG;
23571 case WDI_DRIVER_TYPE_DVT:
23572 return eDRIVER_TYPE_DVT;
23573 }
23574
Jeff Johnsone7245742012-09-05 17:12:55 -070023575 return eDRIVER_TYPE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070023576}/*WDI_2_HAL_DRV_TYPE*/
23577
23578
23579/*Convert WDI stop reason into HAL stop reason*/
23580WPT_STATIC WPT_INLINE tHalStopType
23581WDI_2_HAL_STOP_REASON
23582(
23583 WDI_StopType wdiDriverType
23584)
23585{
Jeff Johnsone7245742012-09-05 17:12:55 -070023586 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070023587 the chances of getting inlined*/
23588 switch( wdiDriverType )
23589 {
23590 case WDI_STOP_TYPE_SYS_RESET:
23591 return HAL_STOP_TYPE_SYS_RESET;
Yue Mad8cac142013-03-28 11:33:46 -070023592 case WDI_STOP_TYPE_SYS_DEEP_SLEEP:
23593 return HAL_STOP_TYPE_SYS_DEEP_SLEEP;
Jeff Johnson295189b2012-06-20 16:38:30 -070023594 case WDI_STOP_TYPE_RF_KILL:
23595 return HAL_STOP_TYPE_RF_KILL;
23596 }
23597
Jeff Johnsone7245742012-09-05 17:12:55 -070023598 return HAL_STOP_TYPE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070023599}/*WDI_2_HAL_STOP_REASON*/
23600
23601
23602/*Convert WDI scan mode type into HAL scan mode type*/
23603WPT_STATIC WPT_INLINE eHalSysMode
23604WDI_2_HAL_SCAN_MODE
23605(
23606 WDI_ScanMode wdiScanMode
23607)
23608{
Jeff Johnsone7245742012-09-05 17:12:55 -070023609 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070023610 the chances of getting inlined*/
23611 switch( wdiScanMode )
23612 {
23613 case WDI_SCAN_MODE_NORMAL:
23614 return eHAL_SYS_MODE_NORMAL;
23615 case WDI_SCAN_MODE_LEARN:
23616 return eHAL_SYS_MODE_LEARN;
23617 case WDI_SCAN_MODE_SCAN:
23618 return eHAL_SYS_MODE_SCAN;
23619 case WDI_SCAN_MODE_PROMISC:
23620 return eHAL_SYS_MODE_PROMISC;
23621 case WDI_SCAN_MODE_SUSPEND_LINK:
23622 return eHAL_SYS_MODE_SUSPEND_LINK;
Madan Mohan Koyyalamudi9b876782012-10-11 16:22:51 -070023623 case WDI_SCAN_MODE_ROAM_SCAN:
23624 return eHAL_SYS_MODE_ROAM_SCAN;
23625 case WDI_SCAN_MODE_ROAM_SUSPEND_LINK:
23626 return eHAL_SYS_MODE_ROAM_SUSPEND_LINK;
Jeff Johnson295189b2012-06-20 16:38:30 -070023627 }
23628
Jeff Johnsone7245742012-09-05 17:12:55 -070023629 return eHAL_SYS_MODE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070023630}/*WDI_2_HAL_SCAN_MODE*/
23631
23632/*Convert WDI sec ch offset into HAL sec ch offset type*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023633WPT_STATIC WPT_INLINE ePhyChanBondState
Jeff Johnson295189b2012-06-20 16:38:30 -070023634WDI_2_HAL_SEC_CH_OFFSET
23635(
23636 WDI_HTSecondaryChannelOffset wdiSecChOffset
23637)
23638{
Jeff Johnsone7245742012-09-05 17:12:55 -070023639 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070023640 the chances of getting inlined*/
23641 switch( wdiSecChOffset )
23642 {
23643 case WDI_SECONDARY_CHANNEL_OFFSET_NONE:
Jeff Johnsone7245742012-09-05 17:12:55 -070023644 return PHY_SINGLE_CHANNEL_CENTERED;
Jeff Johnson295189b2012-06-20 16:38:30 -070023645 case WDI_SECONDARY_CHANNEL_OFFSET_UP:
Jeff Johnsone7245742012-09-05 17:12:55 -070023646 return PHY_DOUBLE_CHANNEL_LOW_PRIMARY;
Jeff Johnson295189b2012-06-20 16:38:30 -070023647 case WDI_SECONDARY_CHANNEL_OFFSET_DOWN:
Jeff Johnsone7245742012-09-05 17:12:55 -070023648 return PHY_DOUBLE_CHANNEL_HIGH_PRIMARY;
23649#ifdef WLAN_FEATURE_11AC
23650 case WDI_CHANNEL_20MHZ_LOW_40MHZ_CENTERED:
23651 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_CENTERED;
23652 case WDI_CHANNEL_20MHZ_CENTERED_40MHZ_CENTERED:
23653 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_CENTERED;
23654 case WDI_CHANNEL_20MHZ_HIGH_40MHZ_CENTERED:
23655 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_CENTERED;
23656 case WDI_CHANNEL_20MHZ_LOW_40MHZ_LOW:
23657 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_LOW;
23658 case WDI_CHANNEL_20MHZ_HIGH_40MHZ_LOW:
23659 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_LOW;
23660 case WDI_CHANNEL_20MHZ_LOW_40MHZ_HIGH:
23661 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_HIGH;
23662 case WDI_CHANNEL_20MHZ_HIGH_40MHZ_HIGH:
23663 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_HIGH;
23664#endif
23665 default:
23666 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070023667 }
23668
Jeff Johnsone7245742012-09-05 17:12:55 -070023669 return PHY_CHANNEL_BONDING_STATE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070023670}/*WDI_2_HAL_SEC_CH_OFFSET*/
23671
23672/*Convert WDI BSS type into HAL BSS type*/
23673WPT_STATIC WPT_INLINE tSirBssType
23674WDI_2_HAL_BSS_TYPE
23675(
23676 WDI_BssType wdiBSSType
23677)
23678{
Jeff Johnsone7245742012-09-05 17:12:55 -070023679 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070023680 the chances of getting inlined*/
23681 switch( wdiBSSType )
23682 {
23683 case WDI_INFRASTRUCTURE_MODE:
23684 return eSIR_INFRASTRUCTURE_MODE;
23685 case WDI_INFRA_AP_MODE:
23686 return eSIR_INFRA_AP_MODE;
23687 case WDI_IBSS_MODE:
23688 return eSIR_IBSS_MODE;
23689 case WDI_BTAMP_STA_MODE:
23690 return eSIR_BTAMP_STA_MODE;
23691 case WDI_BTAMP_AP_MODE:
Jeff Johnsone7245742012-09-05 17:12:55 -070023692 return eSIR_BTAMP_AP_MODE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023693 case WDI_BSS_AUTO_MODE:
23694 return eSIR_AUTO_MODE;
23695 }
23696
Jeff Johnsone7245742012-09-05 17:12:55 -070023697 return eSIR_DONOT_USE_BSS_TYPE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023698}/*WDI_2_HAL_BSS_TYPE*/
23699
23700/*Convert WDI NW type into HAL NW type*/
23701WPT_STATIC WPT_INLINE tSirNwType
23702WDI_2_HAL_NW_TYPE
23703(
23704 WDI_NwType wdiNWType
23705)
23706{
Jeff Johnsone7245742012-09-05 17:12:55 -070023707 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070023708 the chances of getting inlined*/
23709 switch( wdiNWType )
23710 {
23711 case WDI_11A_NW_TYPE:
23712 return eSIR_11A_NW_TYPE;
23713 case WDI_11B_NW_TYPE:
23714 return eSIR_11B_NW_TYPE;
23715 case WDI_11G_NW_TYPE:
23716 return eSIR_11G_NW_TYPE;
23717 case WDI_11N_NW_TYPE:
23718 return eSIR_11N_NW_TYPE;
23719 }
23720
Jeff Johnsone7245742012-09-05 17:12:55 -070023721 return eSIR_DONOT_USE_NW_TYPE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023722}/*WDI_2_HAL_NW_TYPE*/
23723
23724/*Convert WDI chanel bonding type into HAL cb type*/
23725WPT_STATIC WPT_INLINE ePhyChanBondState
23726WDI_2_HAL_CB_STATE
23727(
23728 WDI_PhyChanBondState wdiCbState
23729)
23730{
Jeff Johnsone7245742012-09-05 17:12:55 -070023731 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070023732 the chances of getting inlined*/
23733 switch ( wdiCbState )
23734 {
23735 case WDI_PHY_SINGLE_CHANNEL_CENTERED:
23736 return PHY_SINGLE_CHANNEL_CENTERED;
23737 case WDI_PHY_DOUBLE_CHANNEL_LOW_PRIMARY:
23738 return PHY_DOUBLE_CHANNEL_LOW_PRIMARY;
23739 case WDI_PHY_DOUBLE_CHANNEL_CENTERED:
23740 return PHY_DOUBLE_CHANNEL_CENTERED;
23741 case WDI_PHY_DOUBLE_CHANNEL_HIGH_PRIMARY:
23742 return PHY_DOUBLE_CHANNEL_HIGH_PRIMARY;
Jeff Johnsone7245742012-09-05 17:12:55 -070023743#ifdef WLAN_FEATURE_11AC
23744 case WDI_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_CENTERED:
23745 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_CENTERED;
23746 case WDI_QUADRUPLE_CHANNEL_20MHZ_CENTERED_40MHZ_CENTERED:
23747 return PHY_QUADRUPLE_CHANNEL_20MHZ_CENTERED_40MHZ_CENTERED;
23748 case WDI_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_CENTERED:
23749 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_CENTERED;
23750 case WDI_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_LOW:
23751 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_LOW;
23752 case WDI_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_LOW:
23753 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_LOW;
23754 case WDI_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_HIGH:
23755 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_HIGH;
23756 case WDI_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_HIGH:
23757 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_HIGH;
23758#endif
23759 case WDI_MAX_CB_STATE:
23760 default:
23761 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070023762 }
Jeff Johnsone7245742012-09-05 17:12:55 -070023763
Jeff Johnson295189b2012-06-20 16:38:30 -070023764 return PHY_CHANNEL_BONDING_STATE_MAX;
23765}/*WDI_2_HAL_CB_STATE*/
23766
23767/*Convert WDI chanel bonding type into HAL cb type*/
23768WPT_STATIC WPT_INLINE tSirMacHTOperatingMode
23769WDI_2_HAL_HT_OPER_MODE
23770(
23771 WDI_HTOperatingMode wdiHTOperMode
23772)
23773{
Jeff Johnsone7245742012-09-05 17:12:55 -070023774 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070023775 the chances of getting inlined*/
23776 switch ( wdiHTOperMode )
23777 {
23778 case WDI_HT_OP_MODE_PURE:
23779 return eSIR_HT_OP_MODE_PURE;
23780 case WDI_HT_OP_MODE_OVERLAP_LEGACY:
23781 return eSIR_HT_OP_MODE_OVERLAP_LEGACY;
23782 case WDI_HT_OP_MODE_NO_LEGACY_20MHZ_HT:
23783 return eSIR_HT_OP_MODE_NO_LEGACY_20MHZ_HT;
23784 case WDI_HT_OP_MODE_MIXED:
23785 return eSIR_HT_OP_MODE_MIXED;
23786 }
Jeff Johnsone7245742012-09-05 17:12:55 -070023787
Jeff Johnson295189b2012-06-20 16:38:30 -070023788 return eSIR_HT_OP_MODE_MAX;
23789}/*WDI_2_HAL_HT_OPER_MODE*/
23790
23791/*Convert WDI mimo PS type into HAL mimo PS type*/
23792WPT_STATIC WPT_INLINE tSirMacHTMIMOPowerSaveState
23793WDI_2_HAL_MIMO_PS
23794(
23795 WDI_HTMIMOPowerSaveState wdiHTOperMode
23796)
23797{
Jeff Johnsone7245742012-09-05 17:12:55 -070023798 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070023799 the chances of getting inlined*/
23800 switch ( wdiHTOperMode )
23801 {
23802 case WDI_HT_MIMO_PS_STATIC:
23803 return eSIR_HT_MIMO_PS_STATIC;
23804 case WDI_HT_MIMO_PS_DYNAMIC:
23805 return eSIR_HT_MIMO_PS_DYNAMIC;
23806 case WDI_HT_MIMO_PS_NA:
23807 return eSIR_HT_MIMO_PS_NA;
23808 case WDI_HT_MIMO_PS_NO_LIMIT:
23809 return eSIR_HT_MIMO_PS_NO_LIMIT;
23810 }
Jeff Johnsone7245742012-09-05 17:12:55 -070023811
Jeff Johnson295189b2012-06-20 16:38:30 -070023812 return eSIR_HT_MIMO_PS_MAX;
23813}/*WDI_2_HAL_MIMO_PS*/
23814
23815/*Convert WDI ENC type into HAL ENC type*/
23816WPT_STATIC WPT_INLINE tAniEdType
23817WDI_2_HAL_ENC_TYPE
23818(
23819 WDI_EncryptType wdiEncType
23820)
23821{
Jeff Johnsone7245742012-09-05 17:12:55 -070023822 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070023823 the chances of getting inlined*/
23824 switch ( wdiEncType )
23825 {
23826 case WDI_ENCR_NONE:
23827 return eSIR_ED_NONE;
23828
23829 case WDI_ENCR_WEP40:
23830 return eSIR_ED_WEP40;
23831
23832 case WDI_ENCR_WEP104:
23833 return eSIR_ED_WEP104;
23834
23835 case WDI_ENCR_TKIP:
23836 return eSIR_ED_TKIP;
23837
23838 case WDI_ENCR_CCMP:
23839 return eSIR_ED_CCMP;
23840
23841 case WDI_ENCR_AES_128_CMAC:
23842 return eSIR_ED_AES_128_CMAC;
23843#if defined(FEATURE_WLAN_WAPI)
23844 case WDI_ENCR_WPI:
23845 return eSIR_ED_WPI;
23846#endif
23847 default:
23848 return eSIR_ED_NOT_IMPLEMENTED;
23849 }
23850
23851}/*WDI_2_HAL_ENC_TYPE*/
23852
23853/*Convert WDI WEP type into HAL WEP type*/
23854WPT_STATIC WPT_INLINE tAniWepType
23855WDI_2_HAL_WEP_TYPE
23856(
23857 WDI_WepType wdiWEPType
23858)
23859{
Jeff Johnsone7245742012-09-05 17:12:55 -070023860 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070023861 the chances of getting inlined*/
23862 switch ( wdiWEPType )
23863 {
23864 case WDI_WEP_STATIC:
23865 return eSIR_WEP_STATIC;
23866
23867 case WDI_WEP_DYNAMIC:
23868 return eSIR_WEP_DYNAMIC;
23869 }
Jeff Johnsone7245742012-09-05 17:12:55 -070023870
Jeff Johnson295189b2012-06-20 16:38:30 -070023871 return eSIR_WEP_MAX;
23872}/*WDI_2_HAL_WEP_TYPE*/
23873
23874WPT_STATIC WPT_INLINE tSirLinkState
23875WDI_2_HAL_LINK_STATE
23876(
23877 WDI_LinkStateType wdiLinkState
23878)
23879{
Jeff Johnsone7245742012-09-05 17:12:55 -070023880 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070023881 the chances of getting inlined*/
23882 switch ( wdiLinkState )
23883 {
23884 case WDI_LINK_IDLE_STATE:
23885 return eSIR_LINK_IDLE_STATE;
23886
23887 case WDI_LINK_PREASSOC_STATE:
23888 return eSIR_LINK_PREASSOC_STATE;
23889
23890 case WDI_LINK_POSTASSOC_STATE:
23891 return eSIR_LINK_POSTASSOC_STATE;
23892
23893 case WDI_LINK_AP_STATE:
23894 return eSIR_LINK_AP_STATE;
23895
23896 case WDI_LINK_IBSS_STATE:
23897 return eSIR_LINK_IBSS_STATE;
23898
23899 case WDI_LINK_BTAMP_PREASSOC_STATE:
23900 return eSIR_LINK_BTAMP_PREASSOC_STATE;
23901
23902 case WDI_LINK_BTAMP_POSTASSOC_STATE:
23903 return eSIR_LINK_BTAMP_POSTASSOC_STATE;
23904
23905 case WDI_LINK_BTAMP_AP_STATE:
23906 return eSIR_LINK_BTAMP_AP_STATE;
23907
23908 case WDI_LINK_BTAMP_STA_STATE:
23909 return eSIR_LINK_BTAMP_STA_STATE;
23910
23911 case WDI_LINK_LEARN_STATE:
23912 return eSIR_LINK_LEARN_STATE;
23913
23914 case WDI_LINK_SCAN_STATE:
23915 return eSIR_LINK_SCAN_STATE;
23916
23917 case WDI_LINK_FINISH_SCAN_STATE:
23918 return eSIR_LINK_FINISH_SCAN_STATE;
23919
23920 case WDI_LINK_INIT_CAL_STATE:
23921 return eSIR_LINK_INIT_CAL_STATE;
23922
23923 case WDI_LINK_FINISH_CAL_STATE:
23924 return eSIR_LINK_FINISH_CAL_STATE;
23925
Jeff Johnson295189b2012-06-20 16:38:30 -070023926 case WDI_LINK_LISTEN_STATE:
23927 return eSIR_LINK_LISTEN_STATE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023928
Gopichand Nakkala924e4552013-05-08 19:18:14 +053023929 case WDI_LINK_SEND_ACTION_STATE:
23930 return eSIR_LINK_SEND_ACTION_STATE;
23931
Jeff Johnson295189b2012-06-20 16:38:30 -070023932 default:
23933 return eSIR_LINK_MAX;
Jeff Johnsone7245742012-09-05 17:12:55 -070023934 }
Jeff Johnson295189b2012-06-20 16:38:30 -070023935}
23936
Jeff Johnsone7245742012-09-05 17:12:55 -070023937/*Translate a STA Context from WDI into HAL*/
23938WPT_STATIC WPT_INLINE
Jeff Johnson295189b2012-06-20 16:38:30 -070023939void
23940WDI_CopyWDIStaCtxToHALStaCtx
Jeff Johnsone7245742012-09-05 17:12:55 -070023941(
Jeff Johnson295189b2012-06-20 16:38:30 -070023942 tConfigStaParams* phalConfigSta,
23943 WDI_ConfigStaReqInfoType* pwdiConfigSta
23944)
23945{
23946 wpt_uint8 i;
Jeff Johnsone7245742012-09-05 17:12:55 -070023947#ifdef WLAN_FEATURE_11AC
23948 /* Get the Version 1 Handler */
23949 tConfigStaParams_V1* phalConfigSta_V1 = NULL;
23950 if (WDI_getFwWlanFeatCaps(DOT11AC))
23951 {
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070023952 phalConfigSta_V1 = (tConfigStaParams_V1*)phalConfigSta;
Jeff Johnsone7245742012-09-05 17:12:55 -070023953 }
23954#endif
23955 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070023956 the chances of getting inlined*/
23957
Jeff Johnsone7245742012-09-05 17:12:55 -070023958 wpalMemoryCopy(phalConfigSta->bssId,
23959 pwdiConfigSta->macBSSID, WDI_MAC_ADDR_LEN);
23960
23961 wpalMemoryCopy(phalConfigSta->staMac,
23962 pwdiConfigSta->macSTA, WDI_MAC_ADDR_LEN);
Jeff Johnson295189b2012-06-20 16:38:30 -070023963
23964 phalConfigSta->assocId = pwdiConfigSta->usAssocId;
23965 phalConfigSta->staType = pwdiConfigSta->wdiSTAType;
23966 phalConfigSta->shortPreambleSupported = pwdiConfigSta->ucShortPreambleSupported;
23967 phalConfigSta->listenInterval = pwdiConfigSta->usListenInterval;
23968 phalConfigSta->wmmEnabled = pwdiConfigSta->ucWMMEnabled;
23969 phalConfigSta->htCapable = pwdiConfigSta->ucHTCapable;
23970 phalConfigSta->txChannelWidthSet = pwdiConfigSta->ucTXChannelWidthSet;
23971 phalConfigSta->rifsMode = pwdiConfigSta->ucRIFSMode;
23972 phalConfigSta->lsigTxopProtection = pwdiConfigSta->ucLSIGTxopProtection;
23973 phalConfigSta->maxAmpduSize = pwdiConfigSta->ucMaxAmpduSize;
23974 phalConfigSta->maxAmpduDensity = pwdiConfigSta->ucMaxAmpduDensity;
23975 phalConfigSta->maxAmsduSize = pwdiConfigSta->ucMaxAmsduSize;
23976 phalConfigSta->fShortGI40Mhz = pwdiConfigSta->ucShortGI40Mhz;
23977 phalConfigSta->fShortGI20Mhz = pwdiConfigSta->ucShortGI20Mhz;
23978 phalConfigSta->rmfEnabled = pwdiConfigSta->ucRMFEnabled;
23979 phalConfigSta->action = pwdiConfigSta->wdiAction;
23980 phalConfigSta->uAPSD = pwdiConfigSta->ucAPSD;
23981 phalConfigSta->maxSPLen = pwdiConfigSta->ucMaxSPLen;
23982 phalConfigSta->greenFieldCapable = pwdiConfigSta->ucGreenFieldCapable;
23983 phalConfigSta->delayedBASupport = pwdiConfigSta->ucDelayedBASupport;
23984 phalConfigSta->us32MaxAmpduDuration = pwdiConfigSta->us32MaxAmpduDuratio;
23985 phalConfigSta->fDsssCckMode40Mhz = pwdiConfigSta->ucDsssCckMode40Mhz;
23986 phalConfigSta->encryptType = pwdiConfigSta->ucEncryptType;
Jeff Johnsone7245742012-09-05 17:12:55 -070023987
Jeff Johnson295189b2012-06-20 16:38:30 -070023988 phalConfigSta->mimoPS = WDI_2_HAL_MIMO_PS(pwdiConfigSta->wdiMIMOPS);
23989
Jeff Johnsone7245742012-09-05 17:12:55 -070023990 phalConfigSta->supportedRates.opRateMode =
Jeff Johnson295189b2012-06-20 16:38:30 -070023991 pwdiConfigSta->wdiSupportedRates.opRateMode;
23992 for(i = 0; i < SIR_NUM_11B_RATES; i ++)
23993 {
Jeff Johnsone7245742012-09-05 17:12:55 -070023994 phalConfigSta->supportedRates.llbRates[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -070023995 pwdiConfigSta->wdiSupportedRates.llbRates[i];
23996 }
23997 for(i = 0; i < SIR_NUM_11A_RATES; i ++)
23998 {
Jeff Johnsone7245742012-09-05 17:12:55 -070023999 phalConfigSta->supportedRates.llaRates[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -070024000 pwdiConfigSta->wdiSupportedRates.llaRates[i];
24001 }
24002 for(i = 0; i < SIR_NUM_POLARIS_RATES; i ++)
24003 {
24004 phalConfigSta->supportedRates.aniLegacyRates[i] =
24005 pwdiConfigSta->wdiSupportedRates.aLegacyRates[i];
24006 }
Jeff Johnsone7245742012-09-05 17:12:55 -070024007 phalConfigSta->supportedRates.aniEnhancedRateBitmap =
Jeff Johnson295189b2012-06-20 16:38:30 -070024008 pwdiConfigSta->wdiSupportedRates.uEnhancedRateBitmap;
24009 for(i = 0; i < SIR_MAC_MAX_SUPPORTED_MCS_SET; i ++)
24010 {
Jeff Johnsone7245742012-09-05 17:12:55 -070024011 phalConfigSta->supportedRates.supportedMCSSet[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -070024012 pwdiConfigSta->wdiSupportedRates.aSupportedMCSSet[i];
24013 }
24014 phalConfigSta->supportedRates.rxHighestDataRate =
24015 pwdiConfigSta->wdiSupportedRates.aRxHighestDataRate;
24016
Jeff Johnsone7245742012-09-05 17:12:55 -070024017#ifdef WLAN_FEATURE_11AC
24018 if(phalConfigSta_V1 != NULL)
24019 {
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070024020 phalConfigSta_V1->supportedRates.vhtRxMCSMap = pwdiConfigSta->wdiSupportedRates.vhtRxMCSMap;
24021 phalConfigSta_V1->supportedRates.vhtRxHighestDataRate = pwdiConfigSta->wdiSupportedRates.vhtRxHighestDataRate;
24022 phalConfigSta_V1->supportedRates.vhtTxMCSMap = pwdiConfigSta->wdiSupportedRates.vhtTxMCSMap;
24023 phalConfigSta_V1->supportedRates.vhtTxHighestDataRate = pwdiConfigSta->wdiSupportedRates.vhtTxHighestDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070024024 }
24025#endif
24026
Jeff Johnson295189b2012-06-20 16:38:30 -070024027 phalConfigSta->p2pCapableSta = pwdiConfigSta->ucP2pCapableSta ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024028
Jeff Johnsone7245742012-09-05 17:12:55 -070024029#ifdef WLAN_FEATURE_11AC
24030 if(phalConfigSta_V1 != NULL)
24031 {
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070024032 phalConfigSta_V1->vhtCapable = pwdiConfigSta->ucVhtCapableSta;
24033 phalConfigSta_V1->vhtTxChannelWidthSet = pwdiConfigSta->ucVhtTxChannelWidthSet;
Shailender Karmuchi08f87c22013-01-17 12:51:24 -080024034 phalConfigSta_V1->vhtTxBFEnabled = pwdiConfigSta->ucVhtTxBFEnabled;
Gopichand Nakkalab2d2c312013-01-04 11:41:02 -080024035 phalConfigSta_V1->htLdpcEnabled = pwdiConfigSta->ucHtLdpcEnabled;
24036 phalConfigSta_V1->vhtLdpcEnabled = pwdiConfigSta->ucVhtLdpcEnabled;
24037
Jeff Johnsone7245742012-09-05 17:12:55 -070024038 }
24039#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070024040}/*WDI_CopyWDIStaCtxToHALStaCtx*/;
Jeff Johnsone7245742012-09-05 17:12:55 -070024041
24042/*Translate a Rate set info from WDI into HAL*/
24043WPT_STATIC WPT_INLINE void
Jeff Johnson295189b2012-06-20 16:38:30 -070024044WDI_CopyWDIRateSetToHALRateSet
Jeff Johnsone7245742012-09-05 17:12:55 -070024045(
Jeff Johnson295189b2012-06-20 16:38:30 -070024046 tSirMacRateSet* pHalRateSet,
24047 WDI_RateSet* pwdiRateSet
24048)
24049{
Jeff Johnsone7245742012-09-05 17:12:55 -070024050 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070024051 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
24052
24053 pHalRateSet->numRates = ( pwdiRateSet->ucNumRates <= SIR_MAC_RATESET_EID_MAX )?
24054 pwdiRateSet->ucNumRates:SIR_MAC_RATESET_EID_MAX;
24055
24056 for ( i = 0; i < pHalRateSet->numRates; i++ )
24057 {
24058 pHalRateSet->rate[i] = pwdiRateSet->aRates[i];
24059 }
Jeff Johnsone7245742012-09-05 17:12:55 -070024060
Jeff Johnson295189b2012-06-20 16:38:30 -070024061}/*WDI_CopyWDIRateSetToHALRateSet*/
24062
24063
24064/*Translate an EDCA Parameter Record from WDI into HAL*/
24065WPT_STATIC WPT_INLINE void
24066WDI_CopyWDIEDCAParamsToHALEDCAParams
Jeff Johnsone7245742012-09-05 17:12:55 -070024067(
Jeff Johnson295189b2012-06-20 16:38:30 -070024068 tSirMacEdcaParamRecord* phalEdcaParam,
24069 WDI_EdcaParamRecord* pWDIEdcaParam
24070)
24071{
Jeff Johnsone7245742012-09-05 17:12:55 -070024072 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070024073 the chances of getting inlined*/
24074
24075 phalEdcaParam->aci.rsvd = pWDIEdcaParam->wdiACI.rsvd;
24076 phalEdcaParam->aci.aci = pWDIEdcaParam->wdiACI.aci;
24077 phalEdcaParam->aci.acm = pWDIEdcaParam->wdiACI.acm;
24078 phalEdcaParam->aci.aifsn = pWDIEdcaParam->wdiACI.aifsn;
24079
24080 phalEdcaParam->cw.max = pWDIEdcaParam->wdiCW.max;
24081 phalEdcaParam->cw.min = pWDIEdcaParam->wdiCW.min;
24082 phalEdcaParam->txoplimit = pWDIEdcaParam->usTXOPLimit;
24083}/*WDI_CopyWDIEDCAParamsToHALEDCAParams*/
24084
24085
24086/*Copy a management frame header from WDI fmt into HAL fmt*/
24087WPT_STATIC WPT_INLINE void
24088WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr
24089(
24090 tSirMacMgmtHdr* pmacMgmtHdr,
24091 WDI_MacMgmtHdr* pwdiMacMgmtHdr
24092)
24093{
24094 pmacMgmtHdr->fc.protVer = pwdiMacMgmtHdr->fc.protVer;
24095 pmacMgmtHdr->fc.type = pwdiMacMgmtHdr->fc.type;
24096 pmacMgmtHdr->fc.subType = pwdiMacMgmtHdr->fc.subType;
24097 pmacMgmtHdr->fc.toDS = pwdiMacMgmtHdr->fc.toDS;
24098 pmacMgmtHdr->fc.fromDS = pwdiMacMgmtHdr->fc.fromDS;
24099 pmacMgmtHdr->fc.moreFrag = pwdiMacMgmtHdr->fc.moreFrag;
24100 pmacMgmtHdr->fc.retry = pwdiMacMgmtHdr->fc.retry;
24101 pmacMgmtHdr->fc.powerMgmt = pwdiMacMgmtHdr->fc.powerMgmt;
24102 pmacMgmtHdr->fc.moreData = pwdiMacMgmtHdr->fc.moreData;
24103 pmacMgmtHdr->fc.wep = pwdiMacMgmtHdr->fc.wep;
24104 pmacMgmtHdr->fc.order = pwdiMacMgmtHdr->fc.order;
24105
24106 pmacMgmtHdr->durationLo = pwdiMacMgmtHdr->durationLo;
24107 pmacMgmtHdr->durationHi = pwdiMacMgmtHdr->durationHi;
24108
Jeff Johnsone7245742012-09-05 17:12:55 -070024109 wpalMemoryCopy(pmacMgmtHdr->da,
Jeff Johnson295189b2012-06-20 16:38:30 -070024110 pwdiMacMgmtHdr->da, 6);
Jeff Johnsone7245742012-09-05 17:12:55 -070024111 wpalMemoryCopy(pmacMgmtHdr->sa,
Jeff Johnson295189b2012-06-20 16:38:30 -070024112 pwdiMacMgmtHdr->sa, 6);
Jeff Johnsone7245742012-09-05 17:12:55 -070024113 wpalMemoryCopy(pmacMgmtHdr->bssId,
Jeff Johnson295189b2012-06-20 16:38:30 -070024114 pwdiMacMgmtHdr->bssId, 6);
24115
24116 pmacMgmtHdr->seqControl.fragNum = pwdiMacMgmtHdr->seqControl.fragNum;
24117 pmacMgmtHdr->seqControl.seqNumLo = pwdiMacMgmtHdr->seqControl.seqNumLo;
24118 pmacMgmtHdr->seqControl.seqNumHi = pwdiMacMgmtHdr->seqControl.seqNumHi;
24119
24120}/*WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr*/
24121
24122
24123/*Copy config bss parameters from WDI fmt into HAL fmt*/
24124WPT_STATIC WPT_INLINE void
24125WDI_CopyWDIConfigBSSToHALConfigBSS
24126(
24127 tConfigBssParams* phalConfigBSS,
24128 WDI_ConfigBSSReqInfoType* pwdiConfigBSS
24129)
24130{
24131
24132 wpt_uint8 keyIndex = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070024133#ifdef WLAN_FEATURE_11AC
24134 /* Get the Version 1 Handler */
24135 tConfigBssParams_V1* phalConfigBSS_V1 = NULL;
24136 if (WDI_getFwWlanFeatCaps(DOT11AC))
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070024137 phalConfigBSS_V1 = (tConfigBssParams_V1*)phalConfigBSS;
Jeff Johnsone7245742012-09-05 17:12:55 -070024138#endif
24139
Jeff Johnson295189b2012-06-20 16:38:30 -070024140 wpalMemoryCopy( phalConfigBSS->bssId,
24141 pwdiConfigBSS->macBSSID,
24142 WDI_MAC_ADDR_LEN);
24143
24144#ifdef HAL_SELF_STA_PER_BSS
24145 wpalMemoryCopy( phalConfigBSS->selfMacAddr,
24146 pwdiConfigBSS->macSelfAddr,
24147 WDI_MAC_ADDR_LEN);
24148#endif
24149
24150 phalConfigBSS->bssType = WDI_2_HAL_BSS_TYPE(pwdiConfigBSS->wdiBSSType);
24151
24152 phalConfigBSS->operMode = pwdiConfigBSS->ucOperMode;
24153 phalConfigBSS->nwType = WDI_2_HAL_NW_TYPE(pwdiConfigBSS->wdiNWType);
24154
Jeff Johnsone7245742012-09-05 17:12:55 -070024155 phalConfigBSS->shortSlotTimeSupported =
Jeff Johnson295189b2012-06-20 16:38:30 -070024156 pwdiConfigBSS->ucShortSlotTimeSupported;
24157 phalConfigBSS->llaCoexist = pwdiConfigBSS->ucllaCoexist;
24158 phalConfigBSS->llbCoexist = pwdiConfigBSS->ucllbCoexist;
24159 phalConfigBSS->llgCoexist = pwdiConfigBSS->ucllgCoexist;
24160 phalConfigBSS->ht20Coexist = pwdiConfigBSS->ucHT20Coexist;
24161 phalConfigBSS->llnNonGFCoexist = pwdiConfigBSS->ucllnNonGFCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070024162 phalConfigBSS->fLsigTXOPProtectionFullSupport =
Jeff Johnson295189b2012-06-20 16:38:30 -070024163 pwdiConfigBSS->ucTXOPProtectionFullSupport;
24164 phalConfigBSS->fRIFSMode = pwdiConfigBSS->ucRIFSMode;
24165 phalConfigBSS->beaconInterval = pwdiConfigBSS->usBeaconInterval;
24166 phalConfigBSS->dtimPeriod = pwdiConfigBSS->ucDTIMPeriod;
24167 phalConfigBSS->txChannelWidthSet = pwdiConfigBSS->ucTXChannelWidthSet;
24168 phalConfigBSS->currentOperChannel = pwdiConfigBSS->ucCurrentOperChannel;
24169 phalConfigBSS->currentExtChannel = pwdiConfigBSS->ucCurrentExtChannel;
24170 phalConfigBSS->action = pwdiConfigBSS->wdiAction;
24171 phalConfigBSS->htCapable = pwdiConfigBSS->ucHTCapable;
24172 phalConfigBSS->obssProtEnabled = pwdiConfigBSS->ucObssProtEnabled;
24173 phalConfigBSS->rmfEnabled = pwdiConfigBSS->ucRMFEnabled;
24174
Jeff Johnsone7245742012-09-05 17:12:55 -070024175 phalConfigBSS->htOperMode =
24176 WDI_2_HAL_HT_OPER_MODE(pwdiConfigBSS->wdiHTOperMod);
Jeff Johnson295189b2012-06-20 16:38:30 -070024177
24178 phalConfigBSS->dualCTSProtection = pwdiConfigBSS->ucDualCTSProtection;
24179 phalConfigBSS->ucMaxProbeRespRetryLimit = pwdiConfigBSS->ucMaxProbeRespRetryLimit;
24180 phalConfigBSS->bHiddenSSIDEn = pwdiConfigBSS->bHiddenSSIDEn;
24181 phalConfigBSS->bProxyProbeRespEn = pwdiConfigBSS->bProxyProbeRespEn;
24182
24183#ifdef WLAN_FEATURE_VOWIFI
24184 phalConfigBSS->maxTxPower = pwdiConfigBSS->cMaxTxPower;
24185#endif
24186
24187 /*! Used 32 as magic number because that is how the ssid is declared inside the
24188 hal header - hal needs a macro for it */
Jeff Johnsone7245742012-09-05 17:12:55 -070024189 phalConfigBSS->ssId.length =
Jeff Johnson295189b2012-06-20 16:38:30 -070024190 (pwdiConfigBSS->wdiSSID.ucLength <= 32)?
24191 pwdiConfigBSS->wdiSSID.ucLength : 32;
24192 wpalMemoryCopy(phalConfigBSS->ssId.ssId,
Jeff Johnsone7245742012-09-05 17:12:55 -070024193 pwdiConfigBSS->wdiSSID.sSSID,
24194 phalConfigBSS->ssId.length);
Jeff Johnson295189b2012-06-20 16:38:30 -070024195
24196 WDI_CopyWDIStaCtxToHALStaCtx( &phalConfigBSS->staContext,
24197 &pwdiConfigBSS->wdiSTAContext);
Jeff Johnsone7245742012-09-05 17:12:55 -070024198
Jeff Johnson295189b2012-06-20 16:38:30 -070024199 WDI_CopyWDIRateSetToHALRateSet( &phalConfigBSS->rateSet,
24200 &pwdiConfigBSS->wdiRateSet);
24201
24202 phalConfigBSS->edcaParamsValid = pwdiConfigBSS->ucEDCAParamsValid;
24203
24204 if(phalConfigBSS->edcaParamsValid)
24205 {
24206 WDI_CopyWDIEDCAParamsToHALEDCAParams( &phalConfigBSS->acbe,
24207 &pwdiConfigBSS->wdiBEEDCAParams);
24208 WDI_CopyWDIEDCAParamsToHALEDCAParams( &phalConfigBSS->acbk,
24209 &pwdiConfigBSS->wdiBKEDCAParams);
24210 WDI_CopyWDIEDCAParamsToHALEDCAParams( &phalConfigBSS->acvi,
24211 &pwdiConfigBSS->wdiVIEDCAParams);
24212 WDI_CopyWDIEDCAParamsToHALEDCAParams( &phalConfigBSS->acvo,
24213 &pwdiConfigBSS->wdiVOEDCAParams);
24214 }
24215
Jeff Johnsone7245742012-09-05 17:12:55 -070024216 phalConfigBSS->halPersona = pwdiConfigBSS->ucPersona;
Jeff Johnson295189b2012-06-20 16:38:30 -070024217
24218 phalConfigBSS->bSpectrumMgtEnable = pwdiConfigBSS->bSpectrumMgtEn;
24219
24220#ifdef WLAN_FEATURE_VOWIFI_11R
24221
Jeff Johnsone7245742012-09-05 17:12:55 -070024222 phalConfigBSS->extSetStaKeyParamValid =
Jeff Johnson295189b2012-06-20 16:38:30 -070024223 pwdiConfigBSS->bExtSetStaKeyParamValid;
Jeff Johnsone7245742012-09-05 17:12:55 -070024224
Jeff Johnson295189b2012-06-20 16:38:30 -070024225 if( phalConfigBSS->extSetStaKeyParamValid )
24226 {
24227 /*-----------------------------------------------------------------------
24228 Copy the STA Key parameters into the HAL message
24229 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024230 phalConfigBSS->extSetStaKeyParam.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -070024231 WDI_2_HAL_ENC_TYPE (pwdiConfigBSS->wdiExtSetKeyParam.wdiEncType);
24232
Jeff Johnsone7245742012-09-05 17:12:55 -070024233 phalConfigBSS->extSetStaKeyParam.wepType =
Jeff Johnson295189b2012-06-20 16:38:30 -070024234 WDI_2_HAL_WEP_TYPE (pwdiConfigBSS->wdiExtSetKeyParam.wdiWEPType );
24235
24236 phalConfigBSS->extSetStaKeyParam.staIdx = pwdiConfigBSS->wdiExtSetKeyParam.ucSTAIdx;
24237
24238 phalConfigBSS->extSetStaKeyParam.defWEPIdx = pwdiConfigBSS->wdiExtSetKeyParam.ucDefWEPIdx;
24239
24240 phalConfigBSS->extSetStaKeyParam.singleTidRc = pwdiConfigBSS->wdiExtSetKeyParam.ucSingleTidRc;
24241
Jeff Johnson295189b2012-06-20 16:38:30 -070024242 for(keyIndex = 0; keyIndex < pwdiConfigBSS->wdiExtSetKeyParam.ucNumKeys ;
24243 keyIndex++)
24244 {
Jeff Johnsone7245742012-09-05 17:12:55 -070024245 phalConfigBSS->extSetStaKeyParam.key[keyIndex].keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -070024246 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].keyId;
24247 phalConfigBSS->extSetStaKeyParam.key[keyIndex].unicast =
24248 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].unicast;
24249 phalConfigBSS->extSetStaKeyParam.key[keyIndex].keyDirection =
24250 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].keyDirection;
24251 wpalMemoryCopy(phalConfigBSS->extSetStaKeyParam.key[keyIndex].keyRsc,
Jeff Johnsone7245742012-09-05 17:12:55 -070024252 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].keyRsc,
Jeff Johnson295189b2012-06-20 16:38:30 -070024253 WDI_MAX_KEY_RSC_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070024254 phalConfigBSS->extSetStaKeyParam.key[keyIndex].paeRole =
Jeff Johnson295189b2012-06-20 16:38:30 -070024255 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].paeRole;
Jeff Johnsone7245742012-09-05 17:12:55 -070024256 phalConfigBSS->extSetStaKeyParam.key[keyIndex].keyLength =
Jeff Johnson295189b2012-06-20 16:38:30 -070024257 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].keyLength;
24258 wpalMemoryCopy(phalConfigBSS->extSetStaKeyParam.key[keyIndex].key,
Jeff Johnsone7245742012-09-05 17:12:55 -070024259 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].key,
Jeff Johnson295189b2012-06-20 16:38:30 -070024260 WDI_MAX_KEY_LENGTH);
24261 }
Jeff Johnson295189b2012-06-20 16:38:30 -070024262 }
24263 else/* phalConfigBSS->extSetStaKeyParamValid is not set */
24264 {
Jeff Johnsone7245742012-09-05 17:12:55 -070024265 wpalMemoryZero( &phalConfigBSS->extSetStaKeyParam,
Jeff Johnson295189b2012-06-20 16:38:30 -070024266 sizeof(phalConfigBSS->extSetStaKeyParam) );
24267 }
24268
24269#endif /*WLAN_FEATURE_VOWIFI_11R*/
24270
Jeff Johnsone7245742012-09-05 17:12:55 -070024271#ifdef WLAN_FEATURE_11AC
24272 if(phalConfigBSS_V1 != NULL)
24273 {
24274 phalConfigBSS_V1->vhtCapable = pwdiConfigBSS->ucVhtCapableSta;
24275 phalConfigBSS_V1->vhtTxChannelWidthSet = pwdiConfigBSS->ucVhtTxChannelWidthSet;
24276 }
24277#endif
24278
Jeff Johnson295189b2012-06-20 16:38:30 -070024279}/*WDI_CopyWDIConfigBSSToHALConfigBSS*/
24280
24281
Jeff Johnsone7245742012-09-05 17:12:55 -070024282/*Extract the request CB function and user data from a request structure
Jeff Johnson295189b2012-06-20 16:38:30 -070024283 pointed to by user data */
24284WPT_STATIC WPT_INLINE void
24285WDI_ExtractRequestCBFromEvent
24286(
24287 WDI_EventInfoType* pEvent,
Jeff Johnsone7245742012-09-05 17:12:55 -070024288 WDI_ReqStatusCb* ppfnReqCB,
Jeff Johnson295189b2012-06-20 16:38:30 -070024289 void** ppUserData
24290)
24291{
24292 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
24293 switch ( pEvent->wdiRequest )
24294 {
24295 case WDI_START_REQ:
24296 *ppfnReqCB = ((WDI_StartReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24297 *ppUserData = ((WDI_StartReqParamsType*)pEvent->pEventData)->pUserData;
24298 break;
24299 case WDI_STOP_REQ:
24300 *ppfnReqCB = ((WDI_StopReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24301 *ppUserData = ((WDI_StopReqParamsType*)pEvent->pEventData)->pUserData;
24302 break;
24303 case WDI_INIT_SCAN_REQ:
24304 *ppfnReqCB = ((WDI_InitScanReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24305 *ppUserData = ((WDI_InitScanReqParamsType*)pEvent->pEventData)->pUserData;
24306 break;
24307 case WDI_START_SCAN_REQ:
24308 *ppfnReqCB = ((WDI_StartScanReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24309 *ppUserData = ((WDI_StartScanReqParamsType*)pEvent->pEventData)->pUserData;
24310 break;
24311 case WDI_END_SCAN_REQ:
24312 *ppfnReqCB = ((WDI_EndScanReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24313 *ppUserData = ((WDI_EndScanReqParamsType*)pEvent->pEventData)->pUserData;
24314 break;
24315 case WDI_FINISH_SCAN_REQ:
24316 *ppfnReqCB = ((WDI_FinishScanReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24317 *ppUserData = ((WDI_FinishScanReqParamsType*)pEvent->pEventData)->pUserData;
24318 break;
24319 case WDI_JOIN_REQ:
24320 *ppfnReqCB = ((WDI_JoinReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24321 *ppUserData = ((WDI_JoinReqParamsType*)pEvent->pEventData)->pUserData;
24322 break;
24323 case WDI_CONFIG_BSS_REQ:
24324 *ppfnReqCB = ((WDI_ConfigBSSReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24325 *ppUserData = ((WDI_ConfigBSSReqParamsType*)pEvent->pEventData)->pUserData;
24326 break;
24327 case WDI_DEL_BSS_REQ:
24328 *ppfnReqCB = ((WDI_DelBSSReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24329 *ppUserData = ((WDI_DelBSSReqParamsType*)pEvent->pEventData)->pUserData;
24330 break;
24331 case WDI_POST_ASSOC_REQ:
24332 *ppfnReqCB = ((WDI_PostAssocReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24333 *ppUserData = ((WDI_PostAssocReqParamsType*)pEvent->pEventData)->pUserData;
24334 break;
24335 case WDI_DEL_STA_REQ:
24336 *ppfnReqCB = ((WDI_DelSTAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24337 *ppUserData = ((WDI_DelSTAReqParamsType*)pEvent->pEventData)->pUserData;
24338 break;
24339 case WDI_DEL_STA_SELF_REQ:
24340 *ppfnReqCB = ((WDI_DelSTASelfReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24341 *ppUserData = ((WDI_DelSTASelfReqParamsType*)pEvent->pEventData)->pUserData;
24342 break;
24343
24344 case WDI_SET_BSS_KEY_REQ:
24345 *ppfnReqCB = ((WDI_SetBSSKeyReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24346 *ppUserData = ((WDI_SetBSSKeyReqParamsType*)pEvent->pEventData)->pUserData;
24347 break;
24348 case WDI_RMV_BSS_KEY_REQ:
24349 *ppfnReqCB = ((WDI_RemoveBSSKeyReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24350 *ppUserData = ((WDI_RemoveBSSKeyReqParamsType*)pEvent->pEventData)->pUserData;
24351 break;
24352 case WDI_SET_STA_KEY_REQ:
24353 *ppfnReqCB = ((WDI_SetSTAKeyReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24354 *ppUserData = ((WDI_SetSTAKeyReqParamsType*)pEvent->pEventData)->pUserData;
24355 break;
24356 case WDI_RMV_STA_KEY_REQ:
24357 *ppfnReqCB = ((WDI_RemoveSTAKeyReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24358 *ppUserData = ((WDI_RemoveSTAKeyReqParamsType*)pEvent->pEventData)->pUserData;
24359 break;
24360 case WDI_ADD_TS_REQ:
24361 *ppfnReqCB = ((WDI_AddTSReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24362 *ppUserData = ((WDI_AddTSReqParamsType*)pEvent->pEventData)->pUserData;
24363 break;
24364 case WDI_DEL_TS_REQ:
24365 *ppfnReqCB = ((WDI_DelTSReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24366 *ppUserData = ((WDI_DelTSReqParamsType*)pEvent->pEventData)->pUserData;
24367 break;
24368 case WDI_UPD_EDCA_PRMS_REQ:
24369 *ppfnReqCB = ((WDI_UpdateEDCAParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24370 *ppUserData = ((WDI_UpdateEDCAParamsType*)pEvent->pEventData)->pUserData;
24371 break;
24372 case WDI_ADD_BA_SESSION_REQ:
24373 *ppfnReqCB = ((WDI_AddBASessionReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24374 *ppUserData = ((WDI_AddBASessionReqParamsType*)pEvent->pEventData)->pUserData;
24375 break;
24376 case WDI_DEL_BA_REQ:
24377 *ppfnReqCB = ((WDI_DelBAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24378 *ppUserData = ((WDI_DelBAReqParamsType*)pEvent->pEventData)->pUserData;
24379 break;
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -080024380#ifdef FEATURE_WLAN_ESE
Jeff Johnson295189b2012-06-20 16:38:30 -070024381 case WDI_TSM_STATS_REQ:
24382 *ppfnReqCB = ((WDI_TSMStatsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24383 *ppUserData = ((WDI_TSMStatsReqParamsType*)pEvent->pEventData)->pUserData;
24384 break;
24385#endif
24386 case WDI_CH_SWITCH_REQ:
24387 *ppfnReqCB = ((WDI_SwitchChReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24388 *ppUserData = ((WDI_SwitchChReqParamsType*)pEvent->pEventData)->pUserData;
24389 break;
Kalikinkar dhara1e83b772014-02-06 12:59:22 -080024390 case WDI_CH_SWITCH_REQ_V1:
24391 *ppfnReqCB = ((WDI_SwitchChReqParamsType_V1*)pEvent->pEventData)->wdiReqStatusCB;
24392 *ppUserData = ((WDI_SwitchChReqParamsType_V1*)pEvent->pEventData)->pUserData;
24393 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070024394 case WDI_CONFIG_STA_REQ:
24395 *ppfnReqCB = ((WDI_ConfigSTAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24396 *ppUserData = ((WDI_ConfigSTAReqParamsType*)pEvent->pEventData)->pUserData;
24397 break;
24398 case WDI_SET_LINK_ST_REQ:
24399 *ppfnReqCB = ((WDI_SetLinkReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24400 *ppUserData = ((WDI_SetLinkReqParamsType*)pEvent->pEventData)->pUserData;
24401 break;
24402 case WDI_GET_STATS_REQ:
24403 *ppfnReqCB = ((WDI_GetStatsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24404 *ppUserData = ((WDI_GetStatsReqParamsType*)pEvent->pEventData)->pUserData;
24405 break;
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -080024406#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_ESE || defined(FEATURE_WLAN_LFR)
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -080024407 case WDI_GET_ROAM_RSSI_REQ:
24408 *ppfnReqCB = ((WDI_GetRoamRssiReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24409 *ppUserData = ((WDI_GetRoamRssiReqParamsType*)pEvent->pEventData)->pUserData;
24410 break;
24411#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070024412 case WDI_UPDATE_CFG_REQ:
24413 *ppfnReqCB = ((WDI_UpdateCfgReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24414 *ppUserData = ((WDI_UpdateCfgReqParamsType*)pEvent->pEventData)->pUserData;
24415 break;
24416 case WDI_ADD_BA_REQ:
24417 *ppfnReqCB = ((WDI_AddBAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24418 *ppUserData = ((WDI_AddBAReqParamsType*)pEvent->pEventData)->pUserData;
24419 break;
24420 case WDI_TRIGGER_BA_REQ:
24421 *ppfnReqCB = ((WDI_TriggerBAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24422 *ppUserData = ((WDI_TriggerBAReqParamsType*)pEvent->pEventData)->pUserData;
24423 break;
24424 case WDI_UPD_BCON_PRMS_REQ:
24425 *ppfnReqCB = ((WDI_UpdateBeaconParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24426 *ppUserData = ((WDI_UpdateBeaconParamsType*)pEvent->pEventData)->pUserData;
24427 break;
24428 case WDI_SND_BCON_REQ:
24429 *ppfnReqCB = ((WDI_SendBeaconParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24430 *ppUserData = ((WDI_SendBeaconParamsType*)pEvent->pEventData)->pUserData;
24431 break;
24432 case WDI_ENTER_BMPS_REQ:
24433 *ppfnReqCB = ((WDI_EnterBmpsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24434 *ppUserData = ((WDI_EnterBmpsReqParamsType*)pEvent->pEventData)->pUserData;
24435 break;
24436 case WDI_EXIT_BMPS_REQ:
24437 *ppfnReqCB = ((WDI_ExitBmpsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24438 *ppUserData = ((WDI_ExitBmpsReqParamsType*)pEvent->pEventData)->pUserData;
24439 break;
Mihir Shetea4306052014-03-25 00:02:54 +053024440 case WDI_ENTER_IMPS_REQ:
24441 *ppfnReqCB = ((WDI_EnterImpsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24442 *ppUserData = ((WDI_EnterImpsReqParamsType*)pEvent->pEventData)->pUserData;
24443 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070024444 case WDI_ENTER_UAPSD_REQ:
24445 *ppfnReqCB = ((WDI_EnterUapsdReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24446 *ppUserData = ((WDI_EnterUapsdReqParamsType*)pEvent->pEventData)->pUserData;
24447 break;
Yue Ma7f44bbe2013-04-12 11:47:39 -070024448 case WDI_EXIT_UAPSD_REQ:
24449 *ppfnReqCB = ((WDI_ExitUapsdReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24450 *ppUserData = ((WDI_ExitUapsdReqParamsType*)pEvent->pEventData)->pUserData;
24451 break;
24452 case WDI_SET_UAPSD_PARAM_REQ:
24453 *ppfnReqCB = ((WDI_SetUapsdAcParamsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24454 *ppUserData = ((WDI_SetUapsdAcParamsReqParamsType*)pEvent->pEventData)->pUserData;
24455 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070024456 case WDI_UPDATE_UAPSD_PARAM_REQ:
24457 *ppfnReqCB = ((WDI_UpdateUapsdReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24458 *ppUserData = ((WDI_UpdateUapsdReqParamsType*)pEvent->pEventData)->pUserData;
24459 break;
24460 case WDI_CONFIGURE_RXP_FILTER_REQ:
24461 *ppfnReqCB = ((WDI_ConfigureRxpFilterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24462 *ppUserData = ((WDI_ConfigureRxpFilterReqParamsType*)pEvent->pEventData)->pUserData;
24463 break;
24464 case WDI_SET_BEACON_FILTER_REQ:
24465 *ppfnReqCB = ((WDI_BeaconFilterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24466 *ppUserData = ((WDI_BeaconFilterReqParamsType*)pEvent->pEventData)->pUserData;
24467 break;
24468 case WDI_REM_BEACON_FILTER_REQ:
24469 *ppfnReqCB = ((WDI_RemBeaconFilterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24470 *ppUserData = ((WDI_RemBeaconFilterReqParamsType*)pEvent->pEventData)->pUserData;
Jeff Johnsone7245742012-09-05 17:12:55 -070024471 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070024472 case WDI_SET_RSSI_THRESHOLDS_REQ:
24473 *ppfnReqCB = ((WDI_SetRSSIThresholdsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24474 *ppUserData = ((WDI_SetRSSIThresholdsReqParamsType*)pEvent->pEventData)->pUserData;
24475 break;
24476 case WDI_HOST_OFFLOAD_REQ:
24477 *ppfnReqCB = ((WDI_HostOffloadReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24478 *ppUserData = ((WDI_HostOffloadReqParamsType*)pEvent->pEventData)->pUserData;
24479 break;
24480 case WDI_WOWL_ADD_BC_PTRN_REQ:
24481 *ppfnReqCB = ((WDI_WowlAddBcPtrnReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24482 *ppUserData = ((WDI_WowlAddBcPtrnReqParamsType*)pEvent->pEventData)->pUserData;
24483 break;
24484 case WDI_WOWL_DEL_BC_PTRN_REQ:
24485 *ppfnReqCB = ((WDI_WowlDelBcPtrnReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24486 *ppUserData = ((WDI_WowlDelBcPtrnReqParamsType*)pEvent->pEventData)->pUserData;
24487 break;
24488 case WDI_WOWL_ENTER_REQ:
24489 *ppfnReqCB = ((WDI_WowlEnterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24490 *ppUserData = ((WDI_WowlEnterReqParamsType*)pEvent->pEventData)->pUserData;
24491 break;
Yue Ma7f44bbe2013-04-12 11:47:39 -070024492 case WDI_WOWL_EXIT_REQ:
24493 *ppfnReqCB = ((WDI_WowlExitReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24494 *ppUserData = ((WDI_WowlExitReqParamsType*)pEvent->pEventData)->pUserData;
24495 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070024496 case WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ:
24497 *ppfnReqCB = ((WDI_ConfigureAppsCpuWakeupStateReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24498 *ppUserData = ((WDI_ConfigureAppsCpuWakeupStateReqParamsType*)pEvent->pEventData)->pUserData;
24499 break;
24500 case WDI_FLUSH_AC_REQ:
24501 *ppfnReqCB = ((WDI_FlushAcReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24502 *ppUserData = ((WDI_FlushAcReqParamsType*)pEvent->pEventData)->pUserData;
24503 break;
24504 case WDI_BTAMP_EVENT_REQ:
24505 *ppfnReqCB = ((WDI_BtAmpEventParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24506 *ppUserData = ((WDI_BtAmpEventParamsType*)pEvent->pEventData)->pUserData;
24507 break;
24508 case WDI_KEEP_ALIVE_REQ:
24509 *ppfnReqCB = ((WDI_KeepAliveReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24510 *ppUserData = ((WDI_KeepAliveReqParamsType*)pEvent->pEventData)->pUserData;
24511 break;
Yue Ma7f44bbe2013-04-12 11:47:39 -070024512#if defined FEATURE_WLAN_SCAN_PNO
24513 case WDI_SET_PREF_NETWORK_REQ:
24514 *ppfnReqCB = ((WDI_PNOScanReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24515 *ppUserData = ((WDI_PNOScanReqParamsType*)pEvent->pEventData)->pUserData;
24516 break;
24517 case WDI_SET_RSSI_FILTER_REQ:
24518 *ppfnReqCB = ((WDI_SetRssiFilterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24519 *ppUserData = ((WDI_SetRssiFilterReqParamsType*)pEvent->pEventData)->pUserData;
24520 break;
24521 case WDI_UPDATE_SCAN_PARAMS_REQ:
24522 *ppfnReqCB = ((WDI_UpdateScanParamsInfoType*)pEvent->pEventData)->wdiReqStatusCB;
24523 *ppUserData = ((WDI_UpdateScanParamsInfoType*)pEvent->pEventData)->pUserData;
24524 break;
24525#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070024526 case WDI_SET_TX_PER_TRACKING_REQ:
24527 *ppfnReqCB = ((WDI_SetTxPerTrackingReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24528 *ppUserData = ((WDI_SetTxPerTrackingReqParamsType*)pEvent->pEventData)->pUserData;
Tushnim Bhattacharyya4858ab62013-03-08 10:15:42 -080024529 break;
Yue Ma7f44bbe2013-04-12 11:47:39 -070024530#if defined WLAN_FEATURE_PACKET_FILTERING
24531 case WDI_8023_MULTICAST_LIST_REQ:
24532 *ppfnReqCB = ((WDI_RcvFltPktSetMcListReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24533 *ppUserData = ((WDI_RcvFltPktSetMcListReqParamsType*)pEvent->pEventData)->pUserData;
24534 break;
Tushnim Bhattacharyya4858ab62013-03-08 10:15:42 -080024535 case WDI_RECEIVE_FILTER_SET_FILTER_REQ:
24536 *ppfnReqCB = ((WDI_SetRcvPktFilterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24537 *ppUserData = ((WDI_SetRcvPktFilterReqParamsType*)pEvent->pEventData)->pUserData;
24538 break;
24539 case WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ:
24540 *ppfnReqCB = ((WDI_RcvFltPktMatchCntReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24541 *ppUserData = ((WDI_RcvFltPktMatchCntReqParamsType*)pEvent->pEventData)->pUserData;
24542 break;
24543 case WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ:
24544 *ppfnReqCB = ((WDI_RcvFltPktClearReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24545 *ppUserData = ((WDI_RcvFltPktClearReqParamsType*)pEvent->pEventData)->pUserData;
24546 break;
Yue Ma7f44bbe2013-04-12 11:47:39 -070024547#endif
24548 case WDI_SET_POWER_PARAMS_REQ:
24549 *ppfnReqCB = ((WDI_SetPowerParamsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
24550 *ppUserData = ((WDI_SetPowerParamsReqParamsType*)pEvent->pEventData)->pUserData;
24551 break;
24552#if defined WLAN_FEATURE_GTK_OFFLOAD
24553 case WDI_GTK_OFFLOAD_REQ:
24554 *ppfnReqCB = ((WDI_GtkOffloadReqMsg*)pEvent->pEventData)->wdiReqStatusCB;
24555 *ppUserData = ((WDI_GtkOffloadReqMsg*)pEvent->pEventData)->pUserData;
24556 break;
24557 case WDI_GTK_OFFLOAD_GETINFO_REQ:
24558 *ppfnReqCB = ((WDI_GtkOffloadGetInfoReqMsg*)pEvent->pEventData)->wdiReqStatusCB;
24559 *ppUserData = ((WDI_GtkOffloadGetInfoReqMsg*)pEvent->pEventData)->pUserData;
24560 break;
24561#endif
Tushnim Bhattacharyya4858ab62013-03-08 10:15:42 -080024562
Jeff Johnson295189b2012-06-20 16:38:30 -070024563 default:
24564 *ppfnReqCB = NULL;
24565 *ppUserData = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070024566 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070024567 }
24568}/*WDI_ExtractRequestCBFromEvent*/
24569
24570
24571/**
Jeff Johnsone7245742012-09-05 17:12:55 -070024572 @brief WDI_IsHwFrameTxTranslationCapable checks to see if HW
Jeff Johnson295189b2012-06-20 16:38:30 -070024573 frame xtl is enabled for a particular STA.
24574
24575 WDI_PostAssocReq must have been called.
24576
Jeff Johnsone7245742012-09-05 17:12:55 -070024577 @param uSTAIdx: STA index
24578
Jeff Johnson295189b2012-06-20 16:38:30 -070024579 @see WDI_PostAssocReq
24580 @return Result of the function call
24581*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024582wpt_boolean
Jeff Johnson295189b2012-06-20 16:38:30 -070024583WDI_IsHwFrameTxTranslationCapable
24584(
24585 wpt_uint8 uSTAIdx
24586)
24587{
Jeff Johnsone7245742012-09-05 17:12:55 -070024588 /*!! FIX ME - this must eventually be per station - for now just feedback
Jeff Johnson295189b2012-06-20 16:38:30 -070024589 uma value*/
24590 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024591 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070024592 ------------------------------------------------------------------------*/
24593 if ( eWLAN_PAL_FALSE == gWDIInitialized )
24594 {
24595 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
24596 "WDI API call before module is initialized - Fail request");
24597
Jeff Johnsone7245742012-09-05 17:12:55 -070024598 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070024599 }
24600
Gopichand Nakkala976e3252013-01-03 15:45:56 -080024601#ifdef WLAN_SOFTAP_VSTA_FEATURE
24602 if (IS_VSTA_IDX(uSTAIdx))
24603 {
24604 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
24605 "STA %d is a Virtual STA, "
24606 "HW frame translation disabled", uSTAIdx);
24607 return eWLAN_PAL_FALSE;
24608 }
24609#endif
Jeff Johnsone7245742012-09-05 17:12:55 -070024610
Jeff Johnson295189b2012-06-20 16:38:30 -070024611 return gWDICb.bFrameTransEnabled;
24612}/*WDI_IsHwFrameTxTranslationCapable*/
24613
24614#ifdef FEATURE_WLAN_SCAN_PNO
24615/**
24616 @brief WDI_SetPreferredNetworkList
24617
Jeff Johnsone7245742012-09-05 17:12:55 -070024618 @param pwdiPNOScanReqParams: the Set PNO as specified
Jeff Johnson295189b2012-06-20 16:38:30 -070024619 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -070024620
Jeff Johnson295189b2012-06-20 16:38:30 -070024621 wdiPNOScanCb: callback for passing back the response
24622 of the Set PNO operation received from the
24623 device
Jeff Johnsone7245742012-09-05 17:12:55 -070024624
Jeff Johnson295189b2012-06-20 16:38:30 -070024625 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -070024626 callback
24627
Jeff Johnson295189b2012-06-20 16:38:30 -070024628 @return Result of the function call
24629*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024630WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070024631WDI_SetPreferredNetworkReq
24632(
24633 WDI_PNOScanReqParamsType* pwdiPNOScanReqParams,
24634 WDI_PNOScanCb wdiPNOScanCb,
24635 void* pUserData
24636)
24637{
24638 WDI_EventInfoType wdiEventData = {{0}};
24639 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
24640
24641 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024642 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070024643 ------------------------------------------------------------------------*/
24644 if ( eWLAN_PAL_FALSE == gWDIInitialized )
24645 {
24646 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
24647 "WDI API call before module is initialized - Fail request");
24648
Jeff Johnsone7245742012-09-05 17:12:55 -070024649 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070024650 }
24651
Vinay Krishna Erannaf0e523b2014-03-01 21:00:16 +053024652 /*----------------------------------------------------------------------
24653 Avoid Enable PNO during any active session or an ongoing session
24654 ----------------------------------------------------------------------*/
24655 if ( (pwdiPNOScanReqParams->wdiPNOScanInfo.bEnable &&
24656 WDI_GetActiveSessionsCount(&gWDICb, NULL, eWLAN_PAL_FALSE)) )
24657 {
24658 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
24659 "%s:(Active/Ongoing Session) - Fail request", __func__);
24660
24661 return WDI_STATUS_E_NOT_ALLOWED;
24662 }
24663
Jeff Johnson295189b2012-06-20 16:38:30 -070024664 /*------------------------------------------------------------------------
24665 Fill in Event data and post to the Main FSM
24666 ------------------------------------------------------------------------*/
24667 wdiEventData.wdiRequest = WDI_SET_PREF_NETWORK_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070024668 wdiEventData.pEventData = pwdiPNOScanReqParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070024669 wdiEventData.uEventDataSize = sizeof(*pwdiPNOScanReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -070024670 wdiEventData.pCBfnc = wdiPNOScanCb;
Jeff Johnson295189b2012-06-20 16:38:30 -070024671 wdiEventData.pUserData = pUserData;
24672
24673 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
24674}
24675
24676
24677/**
24678 @brief WDI_SetRssiFilterReq
24679
Jeff Johnsone7245742012-09-05 17:12:55 -070024680 @param pwdiRssiFilterReqParams: the Set RSSI Filter as
Jeff Johnson295189b2012-06-20 16:38:30 -070024681 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -070024682
Jeff Johnson295189b2012-06-20 16:38:30 -070024683 wdiRssiFilterCb: callback for passing back the response
24684 of the Set RSSI Filter operation received from the
24685 device
Jeff Johnsone7245742012-09-05 17:12:55 -070024686
Jeff Johnson295189b2012-06-20 16:38:30 -070024687 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -070024688 callback
24689
Jeff Johnson295189b2012-06-20 16:38:30 -070024690 @return Result of the function call
24691*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024692WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070024693WDI_SetRssiFilterReq
24694(
24695 WDI_SetRssiFilterReqParamsType* pwdiRssiFilterReqParams,
24696 WDI_RssiFilterCb wdiRssiFilterCb,
24697 void* pUserData
24698)
24699{
24700 WDI_EventInfoType wdiEventData = {{0}};
24701 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
24702
24703 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024704 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070024705 ------------------------------------------------------------------------*/
24706 if ( eWLAN_PAL_FALSE == gWDIInitialized )
24707 {
24708 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
24709 "WDI API call before module is initialized - Fail request");
24710
Jeff Johnsone7245742012-09-05 17:12:55 -070024711 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070024712 }
24713
24714 /*------------------------------------------------------------------------
24715 Fill in Event data and post to the Main FSM
24716 ------------------------------------------------------------------------*/
24717 wdiEventData.wdiRequest = WDI_SET_RSSI_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070024718 wdiEventData.pEventData = pwdiRssiFilterReqParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070024719 wdiEventData.uEventDataSize = sizeof(*pwdiRssiFilterReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -070024720 wdiEventData.pCBfnc = wdiRssiFilterCb;
Jeff Johnson295189b2012-06-20 16:38:30 -070024721 wdiEventData.pUserData = pUserData;
24722
24723 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
24724}/*WDI_SetRssiFilterReq*/
24725
24726/**
24727 @brief WDI_UpdateScanParamsReq
24728
Jeff Johnsone7245742012-09-05 17:12:55 -070024729 @param pwdiUpdateScanParamsInfoType: the Update Scan Params as specified
Jeff Johnson295189b2012-06-20 16:38:30 -070024730 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -070024731
Jeff Johnson295189b2012-06-20 16:38:30 -070024732 wdiUpdateScanParamsCb: callback for passing back the response
24733 of the Set PNO operation received from the
24734 device
Jeff Johnsone7245742012-09-05 17:12:55 -070024735
Jeff Johnson295189b2012-06-20 16:38:30 -070024736 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -070024737 callback
24738
Jeff Johnson295189b2012-06-20 16:38:30 -070024739 @return Result of the function call
24740*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024741WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070024742WDI_UpdateScanParamsReq
24743(
24744 WDI_UpdateScanParamsInfoType* pwdiUpdateScanParamsInfoType,
24745 WDI_UpdateScanParamsCb wdiUpdateScanParamsCb,
24746 void* pUserData
24747)
24748{
24749 WDI_EventInfoType wdiEventData = {{0}};
24750 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
24751
24752 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024753 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070024754 ------------------------------------------------------------------------*/
24755 if ( eWLAN_PAL_FALSE == gWDIInitialized )
24756 {
24757 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
24758 "WDI API call before module is initialized - Fail request");
24759
Jeff Johnsone7245742012-09-05 17:12:55 -070024760 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070024761 }
24762
24763 /*------------------------------------------------------------------------
24764 Fill in Event data and post to the Main FSM
24765 ------------------------------------------------------------------------*/
24766 wdiEventData.wdiRequest = WDI_UPDATE_SCAN_PARAMS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070024767 wdiEventData.pEventData = pwdiUpdateScanParamsInfoType;
Jeff Johnson295189b2012-06-20 16:38:30 -070024768 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateScanParamsInfoType);
Jeff Johnsone7245742012-09-05 17:12:55 -070024769 wdiEventData.pCBfnc = wdiUpdateScanParamsCb;
Jeff Johnson295189b2012-06-20 16:38:30 -070024770 wdiEventData.pUserData = pUserData;
24771
24772 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
24773}
24774
24775/**
Jeff Johnsone7245742012-09-05 17:12:55 -070024776 @brief Helper function to pack Set Preferred Network List
Jeff Johnson295189b2012-06-20 16:38:30 -070024777 Request parameters
Jeff Johnsone7245742012-09-05 17:12:55 -070024778
24779 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070024780 pwdiPNOScanReqParams: pointer to the info received
24781 from upper layers
24782 ppSendBuffer, pSize - out pointers of the packed buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070024783 and its size
24784
Jeff Johnson295189b2012-06-20 16:38:30 -070024785 @return Result of the function call
24786*/
24787
24788WDI_Status
24789WDI_PackPreferredNetworkList
24790(
24791 WDI_ControlBlockType* pWDICtx,
24792 WDI_PNOScanReqParamsType* pwdiPNOScanReqParams,
24793 wpt_uint8** ppSendBuffer,
24794 wpt_uint16* pSize
24795)
24796{
Jeff Johnsone7245742012-09-05 17:12:55 -070024797 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070024798 wpt_uint16 usDataOffset = 0;
24799 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024800 tpPrefNetwListParams pPrefNetwListParams = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070024801 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070024802 /*-----------------------------------------------------------------------
24803 Get message buffer
24804 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024805 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_PREF_NETWORK_REQ,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024806 sizeof(tPrefNetwListParams),
Jeff Johnson295189b2012-06-20 16:38:30 -070024807 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024808 ( usSendSize < (usDataOffset + sizeof(tPrefNetwListParams) )))
Jeff Johnson295189b2012-06-20 16:38:30 -070024809 {
24810 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080024811 "Unable to get send buffer in Set PNO req %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070024812 pwdiPNOScanReqParams);
24813 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070024814 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024815 }
24816
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024817 pPrefNetwListParams = (tpPrefNetwListParams)(pSendBuffer + usDataOffset);
24818
Jeff Johnson295189b2012-06-20 16:38:30 -070024819 /*-------------------------------------------------------------------------
24820 Fill prefNetwListParams from pwdiPNOScanReqParams->wdiPNOScanInfo
24821 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024822 pPrefNetwListParams->enable =
Jeff Johnson295189b2012-06-20 16:38:30 -070024823 pwdiPNOScanReqParams->wdiPNOScanInfo.bEnable;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024824 pPrefNetwListParams->modePNO =
Jeff Johnson295189b2012-06-20 16:38:30 -070024825 pwdiPNOScanReqParams->wdiPNOScanInfo.wdiModePNO;
24826
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024827 pPrefNetwListParams->ucNetworksCount =
Jeff Johnsone7245742012-09-05 17:12:55 -070024828 (pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount <
Jeff Johnson295189b2012-06-20 16:38:30 -070024829 WLAN_HAL_PNO_MAX_SUPP_NETWORKS)?
Jeff Johnsone7245742012-09-05 17:12:55 -070024830 pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount :
Jeff Johnson295189b2012-06-20 16:38:30 -070024831 WLAN_HAL_PNO_MAX_SUPP_NETWORKS;
24832
24833 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070024834 "WDI SET PNO: Enable %d, Mode %d, Netw Count %d",
Jeff Johnson295189b2012-06-20 16:38:30 -070024835 pwdiPNOScanReqParams->wdiPNOScanInfo.bEnable,
24836 pwdiPNOScanReqParams->wdiPNOScanInfo.wdiModePNO,
24837 pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount);
24838
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024839 for ( i = 0; i < pPrefNetwListParams->ucNetworksCount; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070024840 {
24841 /*SSID of the BSS*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024842 pPrefNetwListParams->aNetworks[i].ssId.length
Jeff Johnson295189b2012-06-20 16:38:30 -070024843 = pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ssId.ucLength;
24844
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024845 wpalMemoryCopy( pPrefNetwListParams->aNetworks[i].ssId.ssId,
Jeff Johnson295189b2012-06-20 16:38:30 -070024846 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ssId.sSSID,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024847 pPrefNetwListParams->aNetworks[i].ssId.length);
Jeff Johnson295189b2012-06-20 16:38:30 -070024848
24849 /*Authentication type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024850 pPrefNetwListParams->aNetworks[i].authentication =
Jeff Johnsone7245742012-09-05 17:12:55 -070024851 (tAuthType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiAuth;
Jeff Johnson295189b2012-06-20 16:38:30 -070024852
24853 /*Encryption type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024854 pPrefNetwListParams->aNetworks[i].encryption =
Jeff Johnsone7245742012-09-05 17:12:55 -070024855 (tEdType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiEncryption;
Jeff Johnson295189b2012-06-20 16:38:30 -070024856
Jeff Johnsone7245742012-09-05 17:12:55 -070024857 /*Indicate the channel on which the Network can be found
Jeff Johnson295189b2012-06-20 16:38:30 -070024858 0 - if all channels */
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024859 pPrefNetwListParams->aNetworks[i].ucChannelCount =
Madan Mohan Koyyalamudia208d102012-10-15 15:18:18 -070024860 (pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ucChannelCount <
24861 WLAN_HAL_PNO_MAX_NETW_CHANNELS)?
24862 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ucChannelCount :
24863 WLAN_HAL_PNO_MAX_NETW_CHANNELS;
Jeff Johnson295189b2012-06-20 16:38:30 -070024864
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024865 wpalMemoryCopy(pPrefNetwListParams->aNetworks[i].aChannels,
Jeff Johnson295189b2012-06-20 16:38:30 -070024866 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].aChannels,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024867 pPrefNetwListParams->aNetworks[i].ucChannelCount);
Jeff Johnson295189b2012-06-20 16:38:30 -070024868
24869 /*Indicates the RSSI threshold for the network to be considered*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024870 pPrefNetwListParams->aNetworks[i].rssiThreshold =
Jeff Johnson295189b2012-06-20 16:38:30 -070024871 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].rssiThreshold;
24872
24873 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070024874 "WDI SET PNO: SSID %d %s",
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024875 pPrefNetwListParams->aNetworks[i].ssId.length,
24876 pPrefNetwListParams->aNetworks[i].ssId.ssId);
Jeff Johnson295189b2012-06-20 16:38:30 -070024877 }
24878
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024879 pPrefNetwListParams->scanTimers.ucScanTimersCount =
Jeff Johnsone7245742012-09-05 17:12:55 -070024880 (pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.ucScanTimersCount <
Jeff Johnson295189b2012-06-20 16:38:30 -070024881 WLAN_HAL_PNO_MAX_SCAN_TIMERS)?
24882 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.ucScanTimersCount :
24883 WLAN_HAL_PNO_MAX_SCAN_TIMERS;
24884
24885 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070024886 "WDI SET PNO: Scan timers count %d 24G P %d 5G Probe %d",
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024887 pPrefNetwListParams->scanTimers.ucScanTimersCount,
Jeff Johnson295189b2012-06-20 16:38:30 -070024888 pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize,
24889 pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize);
24890
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024891 for ( i = 0; i < pPrefNetwListParams->scanTimers.ucScanTimersCount; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070024892 {
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024893 pPrefNetwListParams->scanTimers.aTimerValues[i].uTimerValue =
Jeff Johnson295189b2012-06-20 16:38:30 -070024894 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.aTimerValues[i].uTimerValue;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024895 pPrefNetwListParams->scanTimers.aTimerValues[i].uTimerRepeat =
Jeff Johnson295189b2012-06-20 16:38:30 -070024896 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.aTimerValues[i].uTimerRepeat;
24897 }
24898
24899 /*Copy the probe template*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024900 pPrefNetwListParams->us24GProbeSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070024901 (pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize<
24902 WLAN_HAL_PNO_MAX_PROBE_SIZE)?
24903 pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize:
Jeff Johnsone7245742012-09-05 17:12:55 -070024904 WLAN_HAL_PNO_MAX_PROBE_SIZE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024905
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024906 wpalMemoryCopy(pPrefNetwListParams->a24GProbeTemplate,
Jeff Johnsone7245742012-09-05 17:12:55 -070024907 pwdiPNOScanReqParams->wdiPNOScanInfo.a24GProbeTemplate,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024908 pPrefNetwListParams->us24GProbeSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070024909
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024910 pPrefNetwListParams->us5GProbeSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070024911 (pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize <
24912 WLAN_HAL_PNO_MAX_PROBE_SIZE)?
24913 pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize:
Jeff Johnsone7245742012-09-05 17:12:55 -070024914 WLAN_HAL_PNO_MAX_PROBE_SIZE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024915
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024916 wpalMemoryCopy(pPrefNetwListParams->a5GProbeTemplate,
Jeff Johnsone7245742012-09-05 17:12:55 -070024917 pwdiPNOScanReqParams->wdiPNOScanInfo.a5GProbeTemplate,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024918 pPrefNetwListParams->us5GProbeSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070024919
24920 /*Set the output values*/
24921 *ppSendBuffer = pSendBuffer;
Jeff Johnsone7245742012-09-05 17:12:55 -070024922 *pSize = usSendSize;
Jeff Johnson295189b2012-06-20 16:38:30 -070024923
24924 return WDI_STATUS_SUCCESS;
24925}/*WDI_PackPreferredNetworkList*/
24926
24927/**
Jeff Johnsone7245742012-09-05 17:12:55 -070024928 @brief Helper function to pack Set Preferred Network List
Jeff Johnson295189b2012-06-20 16:38:30 -070024929 Request parameters
Jeff Johnsone7245742012-09-05 17:12:55 -070024930
24931 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070024932 pwdiPNOScanReqParams: pointer to the info received
24933 from upper layers
24934 ppSendBuffer, pSize - out pointers of the packed buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070024935 and its size
24936
Jeff Johnson295189b2012-06-20 16:38:30 -070024937 @return Result of the function call
24938*/
24939
24940WDI_Status
24941WDI_PackPreferredNetworkListNew
24942(
24943 WDI_ControlBlockType* pWDICtx,
24944 WDI_PNOScanReqParamsType* pwdiPNOScanReqParams,
24945 wpt_uint8** ppSendBuffer,
24946 wpt_uint16* pSize
24947)
24948{
Jeff Johnsone7245742012-09-05 17:12:55 -070024949 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070024950 wpt_uint16 usDataOffset = 0;
24951 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024952 tpPrefNetwListParamsNew pPrefNetwListParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070024953 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070024954
24955 /*-----------------------------------------------------------------------
24956 Get message buffer
24957 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024958 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_PREF_NETWORK_REQ,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024959 sizeof(tPrefNetwListParamsNew),
Jeff Johnson295189b2012-06-20 16:38:30 -070024960 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024961 ( usSendSize < (usDataOffset + sizeof(tPrefNetwListParamsNew) )))
Jeff Johnson295189b2012-06-20 16:38:30 -070024962 {
24963 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080024964 "Unable to get send buffer in Set PNO req %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070024965 pwdiPNOScanReqParams);
24966 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070024967 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024968 }
24969
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024970 pPrefNetwListParams = (tpPrefNetwListParamsNew)(pSendBuffer + usDataOffset);
24971
Jeff Johnson295189b2012-06-20 16:38:30 -070024972 /*-------------------------------------------------------------------------
24973 Fill prefNetwListParams from pwdiPNOScanReqParams->wdiPNOScanInfo
24974 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024975 pPrefNetwListParams->enable =
Jeff Johnson295189b2012-06-20 16:38:30 -070024976 pwdiPNOScanReqParams->wdiPNOScanInfo.bEnable;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024977 pPrefNetwListParams->modePNO =
Jeff Johnson295189b2012-06-20 16:38:30 -070024978 pwdiPNOScanReqParams->wdiPNOScanInfo.wdiModePNO;
24979
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024980 pPrefNetwListParams->ucNetworksCount =
Jeff Johnsone7245742012-09-05 17:12:55 -070024981 (pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount <
Jeff Johnson295189b2012-06-20 16:38:30 -070024982 WLAN_HAL_PNO_MAX_SUPP_NETWORKS)?
Jeff Johnsone7245742012-09-05 17:12:55 -070024983 pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount :
Jeff Johnson295189b2012-06-20 16:38:30 -070024984 WLAN_HAL_PNO_MAX_SUPP_NETWORKS;
24985
24986 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070024987 "WDI SET PNO: Enable %d, Mode %d, Netw Count %d",
Jeff Johnson295189b2012-06-20 16:38:30 -070024988 pwdiPNOScanReqParams->wdiPNOScanInfo.bEnable,
24989 pwdiPNOScanReqParams->wdiPNOScanInfo.wdiModePNO,
24990 pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount);
24991
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024992 for ( i = 0; i < pPrefNetwListParams->ucNetworksCount; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070024993 {
24994 /*SSID of the BSS*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024995 pPrefNetwListParams->aNetworks[i].ssId.length
Jeff Johnson295189b2012-06-20 16:38:30 -070024996 = pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ssId.ucLength;
24997
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024998 wpalMemoryCopy( pPrefNetwListParams->aNetworks[i].ssId.ssId,
Jeff Johnson295189b2012-06-20 16:38:30 -070024999 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ssId.sSSID,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025000 pPrefNetwListParams->aNetworks[i].ssId.length);
Jeff Johnson295189b2012-06-20 16:38:30 -070025001
25002 /*Authentication type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025003 pPrefNetwListParams->aNetworks[i].authentication =
Jeff Johnsone7245742012-09-05 17:12:55 -070025004 (tAuthType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiAuth;
Jeff Johnson295189b2012-06-20 16:38:30 -070025005
25006 /*Encryption type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025007 pPrefNetwListParams->aNetworks[i].encryption =
Jeff Johnsone7245742012-09-05 17:12:55 -070025008 (tEdType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiEncryption;
Jeff Johnson295189b2012-06-20 16:38:30 -070025009
25010 /*SSID bcast type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025011 pPrefNetwListParams->aNetworks[i].bcastNetworkType =
Jeff Johnsone7245742012-09-05 17:12:55 -070025012 (tSSIDBcastType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiBcastNetworkType;
Jeff Johnson295189b2012-06-20 16:38:30 -070025013
Jeff Johnsone7245742012-09-05 17:12:55 -070025014 /*Indicate the channel on which the Network can be found
Jeff Johnson295189b2012-06-20 16:38:30 -070025015 0 - if all channels */
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025016 pPrefNetwListParams->aNetworks[i].ucChannelCount =
Jeff Johnson295189b2012-06-20 16:38:30 -070025017 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ucChannelCount;
25018
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025019 wpalMemoryCopy(pPrefNetwListParams->aNetworks[i].aChannels,
Jeff Johnson295189b2012-06-20 16:38:30 -070025020 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].aChannels,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025021 pPrefNetwListParams->aNetworks[i].ucChannelCount);
Jeff Johnson295189b2012-06-20 16:38:30 -070025022
25023 /*Indicates the RSSI threshold for the network to be considered*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025024 pPrefNetwListParams->aNetworks[i].rssiThreshold =
Jeff Johnson295189b2012-06-20 16:38:30 -070025025 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].rssiThreshold;
25026
25027 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070025028 "WDI SET PNO: SSID %d %s",
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025029 pPrefNetwListParams->aNetworks[i].ssId.length,
25030 pPrefNetwListParams->aNetworks[i].ssId.ssId);
Jeff Johnson295189b2012-06-20 16:38:30 -070025031 }
25032
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025033 pPrefNetwListParams->scanTimers.ucScanTimersCount =
Jeff Johnsone7245742012-09-05 17:12:55 -070025034 (pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.ucScanTimersCount <
Jeff Johnson295189b2012-06-20 16:38:30 -070025035 WLAN_HAL_PNO_MAX_SCAN_TIMERS)?
25036 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.ucScanTimersCount :
25037 WLAN_HAL_PNO_MAX_SCAN_TIMERS;
25038
25039 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070025040 "WDI SET PNO: Scan timers count %d 24G P %d 5G Probe %d",
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025041 pPrefNetwListParams->scanTimers.ucScanTimersCount,
Jeff Johnson295189b2012-06-20 16:38:30 -070025042 pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize,
25043 pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize);
25044
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025045 for ( i = 0; i < pPrefNetwListParams->scanTimers.ucScanTimersCount; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070025046 {
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025047 pPrefNetwListParams->scanTimers.aTimerValues[i].uTimerValue =
Jeff Johnson295189b2012-06-20 16:38:30 -070025048 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.aTimerValues[i].uTimerValue;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025049 pPrefNetwListParams->scanTimers.aTimerValues[i].uTimerRepeat =
Jeff Johnson295189b2012-06-20 16:38:30 -070025050 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.aTimerValues[i].uTimerRepeat;
25051 }
25052
25053 /*Copy the probe template*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025054 pPrefNetwListParams->us24GProbeSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070025055 (pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize<
25056 WLAN_HAL_PNO_MAX_PROBE_SIZE)?
25057 pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize:
Jeff Johnsone7245742012-09-05 17:12:55 -070025058 WLAN_HAL_PNO_MAX_PROBE_SIZE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025059
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025060 wpalMemoryCopy(pPrefNetwListParams->a24GProbeTemplate,
Jeff Johnsone7245742012-09-05 17:12:55 -070025061 pwdiPNOScanReqParams->wdiPNOScanInfo.a24GProbeTemplate,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025062 pPrefNetwListParams->us24GProbeSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070025063
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025064 pPrefNetwListParams->us5GProbeSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070025065 (pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize <
25066 WLAN_HAL_PNO_MAX_PROBE_SIZE)?
25067 pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize:
Jeff Johnsone7245742012-09-05 17:12:55 -070025068 WLAN_HAL_PNO_MAX_PROBE_SIZE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025069
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025070 wpalMemoryCopy(pPrefNetwListParams->a5GProbeTemplate,
Jeff Johnsone7245742012-09-05 17:12:55 -070025071 pwdiPNOScanReqParams->wdiPNOScanInfo.a5GProbeTemplate,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025072 pPrefNetwListParams->us5GProbeSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070025073
Jeff Johnson295189b2012-06-20 16:38:30 -070025074
25075 /*Set the output values*/
25076 *ppSendBuffer = pSendBuffer;
Jeff Johnsone7245742012-09-05 17:12:55 -070025077 *pSize = usSendSize;
Jeff Johnson295189b2012-06-20 16:38:30 -070025078
25079 return WDI_STATUS_SUCCESS;
25080}/*WDI_PackPreferredNetworkListNew*/
25081
25082/**
25083 @brief Process Set Preferred Network List Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070025084
25085 @param pWDICtx: pointer to the WLAN DAL context
25086 pEventData: pointer to the event information structure
25087
Jeff Johnson295189b2012-06-20 16:38:30 -070025088 @return Result of the function call
25089*/
25090WDI_Status
25091WDI_ProcessSetPreferredNetworkReq
Jeff Johnsone7245742012-09-05 17:12:55 -070025092(
Jeff Johnson295189b2012-06-20 16:38:30 -070025093 WDI_ControlBlockType* pWDICtx,
25094 WDI_EventInfoType* pEventData
25095)
25096{
25097 WDI_PNOScanReqParamsType* pwdiPNOScanReqParams = NULL;
25098 WDI_PNOScanCb wdiPNOScanCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070025099 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070025100 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070025101 WDI_Status wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070025102
25103 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025104 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070025105 -------------------------------------------------------------------------*/
25106 if (( NULL == pEventData ) ||
25107 ( NULL == (pwdiPNOScanReqParams = (WDI_PNOScanReqParamsType*)pEventData->pEventData)) ||
25108 ( NULL == (wdiPNOScanCb = (WDI_PNOScanCb)pEventData->pCBfnc)))
25109 {
25110 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025111 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025112 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070025113 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025114 }
25115
25116 /*-------------------------------------------------------------------------
25117 Pack the PNO request structure based on version
25118 -------------------------------------------------------------------------*/
25119 if ( pWDICtx->wdiPNOVersion > 0 )
25120 {
25121 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025122 "%s: PNO new version %d ", __func__,
Jeff Johnson295189b2012-06-20 16:38:30 -070025123 pWDICtx->wdiPNOVersion);
25124
25125 wdiStatus = WDI_PackPreferredNetworkListNew( pWDICtx, pwdiPNOScanReqParams,
25126 &pSendBuffer, &usSendSize);
25127 }
25128 else
25129 {
25130 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025131 "%s: PNO old version %d ", __func__,
Jeff Johnson295189b2012-06-20 16:38:30 -070025132 pWDICtx->wdiPNOVersion);
25133
25134 wdiStatus = WDI_PackPreferredNetworkList( pWDICtx, pwdiPNOScanReqParams,
25135 &pSendBuffer, &usSendSize);
25136 }
25137
25138 if (( WDI_STATUS_SUCCESS != wdiStatus )||
25139 ( NULL == pSendBuffer )||( 0 == usSendSize ))
25140 {
25141 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025142 "%s: failed to pack request parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025143 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070025144 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070025145 }
25146
25147 pWDICtx->wdiReqStatusCB = pwdiPNOScanReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070025148 pWDICtx->pReqStatusUserData = pwdiPNOScanReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070025149
25150 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025151 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070025152 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025153 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
25154 wdiPNOScanCb, pEventData->pUserData, WDI_SET_PREF_NETWORK_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070025155}
25156
25157/**
25158 @brief Process Set RSSI Filter Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070025159
25160 @param pWDICtx: pointer to the WLAN DAL context
25161 pEventData: pointer to the event information structure
25162
Jeff Johnson295189b2012-06-20 16:38:30 -070025163 @see
25164 @return Result of the function call
25165*/
25166WDI_Status
25167WDI_ProcessSetRssiFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070025168(
Jeff Johnson295189b2012-06-20 16:38:30 -070025169 WDI_ControlBlockType* pWDICtx,
25170 WDI_EventInfoType* pEventData
25171)
25172{
25173 WDI_SetRssiFilterReqParamsType* pwdiRssiFilterReqParams = NULL;
25174 WDI_RssiFilterCb wdiRssiFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070025175 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070025176 wpt_uint16 usDataOffset = 0;
25177 wpt_uint16 usSendSize = 0;
25178 wpt_uint8 ucRssiThreshold;
25179
25180 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025181 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070025182 -------------------------------------------------------------------------*/
25183 if (( NULL == pEventData ) ||
25184 ( NULL == (pwdiRssiFilterReqParams = (WDI_SetRssiFilterReqParamsType*)pEventData->pEventData)) ||
25185 ( NULL == (wdiRssiFilterCb = (WDI_RssiFilterCb)pEventData->pCBfnc)))
25186 {
25187 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025188 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025189 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070025190 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025191 }
25192
25193 /*-----------------------------------------------------------------------
25194 Get message buffer
25195 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025196 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_PREF_NETWORK_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070025197 sizeof(ucRssiThreshold),
25198 &pSendBuffer, &usDataOffset, &usSendSize))||
25199 ( usSendSize < (usDataOffset + sizeof(ucRssiThreshold) )))
25200 {
25201 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080025202 "Unable to get send buffer in Set PNO req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070025203 pEventData, pwdiRssiFilterReqParams, wdiRssiFilterCb);
25204 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070025205 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025206 }
25207
25208 ucRssiThreshold = pwdiRssiFilterReqParams->rssiThreshold;
25209
Jeff Johnsone7245742012-09-05 17:12:55 -070025210 wpalMemoryCopy( pSendBuffer+usDataOffset,
25211 &ucRssiThreshold,
25212 sizeof(ucRssiThreshold));
Jeff Johnson295189b2012-06-20 16:38:30 -070025213
25214 pWDICtx->wdiReqStatusCB = pwdiRssiFilterReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070025215 pWDICtx->pReqStatusUserData = pwdiRssiFilterReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070025216
25217 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025218 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070025219 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025220 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
25221 wdiRssiFilterCb, pEventData->pUserData, WDI_SET_RSSI_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070025222}
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025223#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
25224/**
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025225 @brief WDI_RoamScanOffloadReq
Jeff Johnson295189b2012-06-20 16:38:30 -070025226
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025227 @param pwdiRoamScanOffloadReqParams: the LookupReq as specified
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025228 by the Device Interface
25229
25230 wdiRoamOffloadScancb: callback for passing back the response
25231 of the Roam Candidate Lookup Req operation received from the
25232 device
25233
25234 pUserData: user data will be passed back with the
25235 callback
25236 @return Result of the function call
25237*/
25238WDI_Status
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025239WDI_RoamScanOffloadReq
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025240(
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025241 WDI_RoamScanOffloadReqParamsType* pwdiRoamScanOffloadReqParams,
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025242 WDI_RoamOffloadScanCb wdiRoamOffloadScancb,
25243 void* pUserData
25244)
25245{
25246 WDI_EventInfoType wdiEventData = {{0}};
25247 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25248
25249 /*------------------------------------------------------------------------
25250 Sanity Check
25251 ------------------------------------------------------------------------*/
25252 if ( eWLAN_PAL_FALSE == gWDIInitialized )
25253 {
25254 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25255 "WDI API call before module is initialized - Fail request");
25256
25257 return WDI_STATUS_E_NOT_ALLOWED;
25258 }
25259
25260 /*------------------------------------------------------------------------
25261 Fill in Event data and post to the Main FSM
25262 ------------------------------------------------------------------------*/
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025263 wdiEventData.wdiRequest = WDI_ROAM_SCAN_OFFLOAD_REQ;
25264 wdiEventData.pEventData = pwdiRoamScanOffloadReqParams;
25265 wdiEventData.uEventDataSize = sizeof(*pwdiRoamScanOffloadReqParams);
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025266 wdiEventData.pCBfnc = wdiRoamOffloadScancb;
25267 wdiEventData.pUserData = pUserData;
25268
25269 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
25270}
25271
25272void
25273WDI_wdiEdTypeEncToEdTypeEnc(tEdType *EdType, WDI_EdType wdiEdType)
25274{
25275 switch (wdiEdType)
25276 {
25277 case WDI_ED_NONE:
25278 *EdType = eED_NONE;
25279 break;
25280 case WDI_ED_WEP40:
25281 case WDI_ED_WEP104:
25282 *EdType = eED_WEP;
25283 break;
25284 case WDI_ED_TKIP:
25285 *EdType = eED_TKIP;
25286 break;
25287 case WDI_ED_CCMP:
25288#ifdef WLAN_FEATURE_11W
25289 case WDI_ED_AES_128_CMAC:
25290#endif
25291 *EdType = eED_CCMP;
25292 break;
25293#ifdef FEATURE_WLAN_WAPI
25294 case WDI_ED_WPI:
25295 *EdType = eED_WPI;
25296 break;
25297#endif
25298 case WDI_ED_ANY:
25299 *EdType = eED_ANY;
25300 break;
25301
25302 default:
25303 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
25304 "%s: Unknown Encryption Type", __func__);
25305 break;
25306 }
25307}
25308
25309/**
25310 @brief Helper function to pack Start Roam Candidate Lookup
25311 Request parameters
25312
25313 @param pWDICtx: pointer to the WLAN DAL context
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025314 pwdiRoamScanOffloadReqParams: pointer to the info received
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025315 from upper layers
25316 ppSendBuffer, pSize - out pointers of the packed buffer
25317 and its size
25318
25319 @return Result of the function call
25320*/
25321
25322WDI_Status
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025323WDI_PackRoamScanOffloadParams
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025324(
25325 WDI_ControlBlockType* pWDICtx,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025326 WDI_RoamScanOffloadReqParamsType* pwdiRoamScanOffloadReqParams,
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025327 wpt_uint8** ppSendBuffer,
25328 wpt_uint16* pSize
25329)
25330{
25331 wpt_uint8* pSendBuffer = NULL;
25332 wpt_uint16 usDataOffset = 0;
25333 wpt_uint16 usSendSize = 0;
25334 tpRoamCandidateListParams pRoamCandidateListParams = NULL;
25335 wpt_uint8 i;
25336 /*-----------------------------------------------------------------------
25337 Get message buffer
25338 -----------------------------------------------------------------------*/
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025339 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ROAM_SCAN_OFFLOAD_REQ,
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025340 sizeof(tRoamCandidateListParams),
25341 &pSendBuffer, &usDataOffset, &usSendSize))||
Varun Reddy Yeturu83952072013-06-03 11:31:52 -070025342 ( usSendSize < (usDataOffset + sizeof(tRoamCandidateListParams) )))
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025343 {
25344 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080025345 "Unable to get send buffer in Start Roam Candidate Lookup Req %p",
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025346 pwdiRoamScanOffloadReqParams);
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025347 WDI_ASSERT(0);
25348 return WDI_STATUS_E_FAILURE;
25349 }
25350 pRoamCandidateListParams = (tpRoamCandidateListParams)(pSendBuffer + usDataOffset);
Varun Reddy Yeturu83952072013-06-03 11:31:52 -070025351 wpalMemoryZero(pRoamCandidateListParams, sizeof(tRoamCandidateListParams));
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025352 pRoamCandidateListParams->RoamScanOffloadEnabled = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.RoamScanOffloadEnabled;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025353 wpalMemoryCopy(pRoamCandidateListParams->ConnectedNetwork.currAPbssid,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025354 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.currAPbssid,
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025355 HAL_MAC_ADDR_LEN);
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025356 pRoamCandidateListParams->ConnectedNetwork.authentication = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.authentication;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025357 WDI_wdiEdTypeEncToEdTypeEnc(&pRoamCandidateListParams->ConnectedNetwork.encryption,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025358 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.encryption);
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025359 WDI_wdiEdTypeEncToEdTypeEnc(&pRoamCandidateListParams->ConnectedNetwork.mcencryption,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025360 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.mcencryption);
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025361
25362 pRoamCandidateListParams->ConnectedNetwork.ssId.length
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025363 = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.ssId.ucLength;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025364 wpalMemoryCopy( pRoamCandidateListParams->ConnectedNetwork.ssId.ssId,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025365 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.ssId.sSSID,
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025366 pRoamCandidateListParams->ConnectedNetwork.ssId.length);
25367 wpalMemoryCopy(pRoamCandidateListParams->ConnectedNetwork.ChannelCache,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025368 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.ChannelCache,
25369 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.ChannelCount );
25370 pRoamCandidateListParams->ConnectedNetwork.ChannelCount = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.ChannelCount;
25371 pRoamCandidateListParams->ChannelCacheType = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ChannelCacheType ;
25372 pRoamCandidateListParams->LookupThreshold = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.LookupThreshold;
Varun Reddy Yeturu6c5e25c2014-01-09 21:55:37 -080025373 pRoamCandidateListParams->RxSensitivityThreshold = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.RxSensitivityThreshold;
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025374 pRoamCandidateListParams->RoamRssiDiff = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.RoamRssiDiff ;
Sameer Thalappil4ae66ec2013-11-05 14:17:35 -080025375 pRoamCandidateListParams->MAWCEnabled = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.MAWCEnabled ;
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025376 pRoamCandidateListParams->Command = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.Command ;
25377 pRoamCandidateListParams->StartScanReason = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.StartScanReason ;
25378 pRoamCandidateListParams->NeighborScanTimerPeriod = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.NeighborScanTimerPeriod ;
25379 pRoamCandidateListParams->NeighborRoamScanRefreshPeriod = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.NeighborRoamScanRefreshPeriod ;
25380 pRoamCandidateListParams->NeighborScanChannelMinTime = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.NeighborScanChannelMinTime ;
25381 pRoamCandidateListParams->NeighborScanChannelMaxTime = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.NeighborScanChannelMaxTime ;
25382 pRoamCandidateListParams->EmptyRefreshScanPeriod = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.EmptyRefreshScanPeriod ;
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -080025383 pRoamCandidateListParams->IsESEEnabled = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.IsESEEnabled ;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025384 wpalMemoryCopy(pRoamCandidateListParams->ValidChannelList,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025385 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ValidChannelList,
25386 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ValidChannelCount);
25387 pRoamCandidateListParams->ValidChannelCount = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ValidChannelCount;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025388
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025389 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO_HIGH,
25390 "Values are ssid = %s, RoamOffloadScan=%d,Command=%d,"
25391 "StartScanReason=%d,NeighborScanTimerPeriod=%d,"
25392 "NeighborRoamScanRefreshPeriod=%d,NeighborScanChannelMinTime=%d,"
25393 "NeighborScanChannelMaxTime = %d,EmptyRefreshScanPeriod=%d,"
25394 "mdiePresent=%d,MDID=%d, auth=%d, uce=%d, mce=%d, nProbes=%d,"
Arif Hussain9a5d5382013-11-17 22:05:35 -080025395 "HomeAwayTime=%d",
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025396 pRoamCandidateListParams->ConnectedNetwork.ssId.ssId,
25397 pRoamCandidateListParams->RoamScanOffloadEnabled,
25398 pRoamCandidateListParams->Command,
25399 pRoamCandidateListParams->StartScanReason,
25400 pRoamCandidateListParams->NeighborScanTimerPeriod,
25401 pRoamCandidateListParams->NeighborRoamScanRefreshPeriod,
25402 pRoamCandidateListParams->NeighborScanChannelMinTime,
25403 pRoamCandidateListParams->NeighborScanChannelMaxTime,
25404 pRoamCandidateListParams->EmptyRefreshScanPeriod,
25405 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.MDID.mdiePresent,
25406 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.MDID.mobilityDomain,
25407 pRoamCandidateListParams->ConnectedNetwork.authentication,
25408 pRoamCandidateListParams->ConnectedNetwork.encryption,
25409 pRoamCandidateListParams->ConnectedNetwork.mcencryption,
25410 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.nProbes,
25411 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.HomeAwayTime);
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025412 pRoamCandidateListParams->us24GProbeSize =
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025413 (pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.us24GProbeSize<
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025414 WLAN_HAL_ROAM_SCAN_MAX_PROBE_SIZE)?
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025415 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.us24GProbeSize:
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025416 WLAN_HAL_ROAM_SCAN_MAX_PROBE_SIZE;
25417 wpalMemoryCopy(pRoamCandidateListParams->a24GProbeTemplate,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025418 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.a24GProbeTemplate,
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025419 pRoamCandidateListParams->us24GProbeSize);
25420 pRoamCandidateListParams->us5GProbeSize =
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025421 (pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.us5GProbeSize<
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025422 WLAN_HAL_ROAM_SCAN_MAX_PROBE_SIZE)?
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025423 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.us5GProbeSize:
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025424 WLAN_HAL_ROAM_SCAN_MAX_PROBE_SIZE;
25425 wpalMemoryCopy(pRoamCandidateListParams->a5GProbeTemplate,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025426 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.a5GProbeTemplate,
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025427 pRoamCandidateListParams->us5GProbeSize);
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025428 pRoamCandidateListParams->MDID.mdiePresent = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.MDID.mdiePresent;
25429 pRoamCandidateListParams->MDID.mobilityDomain = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.MDID.mobilityDomain;
25430 pRoamCandidateListParams->nProbes =
25431 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.nProbes;
25432 pRoamCandidateListParams->HomeAwayTime =
25433 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.HomeAwayTime;
25434 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO_HIGH,"Valid Channel List");
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025435 for (i=0; i<pRoamCandidateListParams->ValidChannelCount ; i++)
25436 {
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025437 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO_HIGH,"%d", pRoamCandidateListParams->ValidChannelList[i]);
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025438 }
25439
25440
25441 /*Set the output values*/
25442 *ppSendBuffer = pSendBuffer;
25443 *pSize = usSendSize;
25444 return WDI_STATUS_SUCCESS;
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025445}/*WDI_PackRoamScanOffloadParams*/
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025446
25447/**
25448 @brief Process Start Roam Candidate Lookup Request function
25449
25450 @param pWDICtx: pointer to the WLAN DAL context
25451 pEventData: pointer to the event information structure
25452
25453 @return Result of the function call
25454*/
25455WDI_Status
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025456WDI_ProcessRoamScanOffloadReq
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025457(
25458 WDI_ControlBlockType* pWDICtx,
25459 WDI_EventInfoType* pEventData
25460)
25461{
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025462 WDI_RoamScanOffloadReqParamsType* pwdiRoamScanOffloadReqParams = NULL;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025463 WDI_RoamOffloadScanCb wdiRoamOffloadScancb = NULL;
25464 wpt_uint8* pSendBuffer = NULL;
25465 wpt_uint16 usSendSize = 0;
25466 WDI_Status wdiStatus;
25467 /*-------------------------------------------------------------------------
25468 Sanity check
25469 -------------------------------------------------------------------------*/
25470 if (( NULL == pEventData ) ||
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025471 ( NULL == (pwdiRoamScanOffloadReqParams = (WDI_RoamScanOffloadReqParamsType*)pEventData->pEventData)) ||
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025472 ( NULL == (wdiRoamOffloadScancb = (WDI_RoamOffloadScanCb)pEventData->pCBfnc)))
25473 {
25474 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
25475 "%s: Invalid parameters", __func__);
25476 WDI_ASSERT(0);
25477 return WDI_STATUS_E_FAILURE;
25478 }
25479
25480 /*-------------------------------------------------------------------------
25481 Pack the Start Roam Candidate Lookup request structure based on version
25482 -------------------------------------------------------------------------*/
25483 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
25484 "%s: Packing Roam Candidate Lookup request ", __func__);
25485
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025486 wdiStatus = WDI_PackRoamScanOffloadParams( pWDICtx, pwdiRoamScanOffloadReqParams,
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025487 &pSendBuffer, &usSendSize);
25488
25489 if (( WDI_STATUS_SUCCESS != wdiStatus )||
25490 ( NULL == pSendBuffer )||( 0 == usSendSize ))
25491 {
25492 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
25493 "%s: failed to pack request parameters", __func__);
25494 WDI_ASSERT(0);
25495 return wdiStatus;
25496 }
25497
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025498 pWDICtx->wdiReqStatusCB = pwdiRoamScanOffloadReqParams->wdiReqStatusCB;
25499 pWDICtx->pReqStatusUserData = pwdiRoamScanOffloadReqParams->pUserData;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025500
25501 /*-------------------------------------------------------------------------
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025502 Send WDI_ROAM_SCAN_OFFLOAD_REQ to HAL
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025503 -------------------------------------------------------------------------*/
25504 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025505 wdiRoamOffloadScancb, pEventData->pUserData, WDI_ROAM_SCAN_OFFLOAD_RESP);
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025506}
25507
25508/**
25509 @brief Process Start Roam Candidate Lookup Rsp function (called when a
25510 response is being received over the bus from HAL)
25511
25512 @param pWDICtx: pointer to the WLAN DAL context
25513 pEventData: pointer to the event information structure
25514
25515 @see
25516 @return Result of the function call
25517*/
25518WDI_Status
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025519WDI_ProcessRoamScanOffloadRsp
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025520(
25521 WDI_ControlBlockType* pWDICtx,
25522 WDI_EventInfoType* pEventData
25523)
25524{
25525 WDI_Status wdiStatus;
25526 eHalStatus halStatus;
25527 WDI_RoamOffloadScanCb wdiRoamOffloadScancb = NULL;
25528
25529 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25530
25531 /*-------------------------------------------------------------------------
25532 Sanity check
25533 -------------------------------------------------------------------------*/
25534 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
25535 ( NULL == pEventData->pEventData ))
25536 {
25537 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
25538 "%s: Invalid parameters", __func__);
25539 WDI_ASSERT(0);
25540 return WDI_STATUS_E_FAILURE;
25541 }
25542
25543 wdiRoamOffloadScancb = (WDI_RoamOffloadScanCb)pWDICtx->pfncRspCB;
25544
25545 /*-------------------------------------------------------------------------
25546 Extract response and send it to UMAC
25547 -------------------------------------------------------------------------*/
25548 halStatus = *((eHalStatus*)pEventData->pEventData);
25549 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
25550
25551 /*Notify UMAC*/
25552 wdiRoamOffloadScancb(wdiStatus, pWDICtx->pRspCBUserData);
25553
25554 return WDI_STATUS_SUCCESS;
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025555}/* WDI_ProcessRoamScanOffloadRsp */
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025556#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070025557
25558/**
25559 @brief Process Update Scan Params function
Jeff Johnsone7245742012-09-05 17:12:55 -070025560
25561 @param pWDICtx: pointer to the WLAN DAL context
25562 pEventData: pointer to the event information structure
25563
Jeff Johnson295189b2012-06-20 16:38:30 -070025564 @see
25565 @return Result of the function call
25566*/
25567WDI_Status
Pratik Bhalgatd4404592012-11-22 17:49:14 +053025568WDI_PackUpdateScanParamsReq
25569(
25570 WDI_ControlBlockType* pWDICtx,
25571 WDI_UpdateScanParamsInfoType* pwdiUpdateScanParams,
25572 wpt_uint8** ppSendBuffer,
25573 wpt_uint16* pSize
25574)
25575{
25576 wpt_uint8* pSendBuffer = NULL;
25577 wpt_uint16 usDataOffset = 0;
25578 wpt_uint16 usSendSize = 0;
25579 tUpdateScanParams updateScanParams = {0};
25580
25581
Varun Reddy Yeturuf68abd62013-02-11 14:05:06 -080025582 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Pratik Bhalgatd4404592012-11-22 17:49:14 +053025583 "Begin WDI Update Scan Parameters Old Style Params");
25584 /*-----------------------------------------------------------------------
25585 Get message buffer
25586 -----------------------------------------------------------------------*/
25587 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_SCAN_PARAMS_REQ,
25588 sizeof(updateScanParams),
25589 &pSendBuffer, &usDataOffset, &usSendSize))||
25590 ( usSendSize < (usDataOffset + sizeof(updateScanParams) )))
25591 {
25592 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080025593 "Unable to get send buffer in Update Scan Params req %p",
Pratik Bhalgatd4404592012-11-22 17:49:14 +053025594 pwdiUpdateScanParams);
25595 WDI_ASSERT(0);
25596 return WDI_STATUS_E_FAILURE;
25597 }
25598
25599 //
25600 // Fill updateScanParams from pwdiUpdateScanParams->wdiUpdateScanParamsInfo
25601 //
25602
25603 updateScanParams.b11dEnabled = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.b11dEnabled;
25604 updateScanParams.b11dResolved = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.b11dResolved;
25605
25606 updateScanParams.ucChannelCount =
25607 (pwdiUpdateScanParams->wdiUpdateScanParamsInfo.ucChannelCount <
25608 WLAN_HAL_PNO_MAX_NETW_CHANNELS)?
25609 pwdiUpdateScanParams->wdiUpdateScanParamsInfo.ucChannelCount :
25610 WLAN_HAL_PNO_MAX_NETW_CHANNELS;
25611
25612 wpalMemoryCopy( updateScanParams.aChannels,
25613 pwdiUpdateScanParams->wdiUpdateScanParamsInfo.aChannels,
25614 updateScanParams.ucChannelCount);
25615
25616
25617 updateScanParams.usActiveMinChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usActiveMinChTime;
25618 updateScanParams.usActiveMaxChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usActiveMaxChTime;
25619 updateScanParams.usPassiveMinChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usPassiveMinChTime;
25620 updateScanParams.usPassiveMaxChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usPassiveMaxChTime;
25621 updateScanParams.cbState = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.cbState;
25622
25623 wpalMemoryCopy( pSendBuffer+usDataOffset,
25624 &updateScanParams,
25625 sizeof(updateScanParams));
25626
25627 pWDICtx->wdiReqStatusCB = pwdiUpdateScanParams->wdiReqStatusCB;
25628 pWDICtx->pReqStatusUserData = pwdiUpdateScanParams->pUserData;
25629
Varun Reddy Yeturuf68abd62013-02-11 14:05:06 -080025630 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Pratik Bhalgatd4404592012-11-22 17:49:14 +053025631 "End Update Scan Parameters Old Style");
25632
25633 /*Set the output values*/
25634 *ppSendBuffer = pSendBuffer;
25635 *pSize = usSendSize;
25636
25637 return WDI_STATUS_SUCCESS;
25638}
25639
25640/**
25641 @brief Process Update Scan Params function
25642
25643 @param pWDICtx: pointer to the WLAN DAL context
25644 pEventData: pointer to the event information structure
25645
25646 @see
25647 @return Result of the function call
25648*/
25649WDI_Status
25650WDI_PackUpdateScanParamsReqEx
25651(
25652 WDI_ControlBlockType* pWDICtx,
25653 WDI_UpdateScanParamsInfoType* pwdiUpdateScanParams,
25654 wpt_uint8** ppSendBuffer,
25655 wpt_uint16* pSize
25656)
25657{
25658 wpt_uint8* pSendBuffer = NULL;
25659 wpt_uint16 usDataOffset = 0;
25660 wpt_uint16 usSendSize = 0;
25661 tUpdateScanParamsEx updateScanParams = {0};
25662
25663
Pratik Bhalgatd4404592012-11-22 17:49:14 +053025664 /*-----------------------------------------------------------------------
25665 Get message buffer
25666 -----------------------------------------------------------------------*/
25667 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_SCAN_PARAMS_REQ,
25668 sizeof(updateScanParams),
25669 &pSendBuffer, &usDataOffset, &usSendSize))||
25670 ( usSendSize < (usDataOffset + sizeof(updateScanParams) )))
25671 {
25672 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080025673 "Unable to get send buffer in Update Scan Params Ex req %p",
Pratik Bhalgatd4404592012-11-22 17:49:14 +053025674 pwdiUpdateScanParams);
25675 WDI_ASSERT(0);
25676 return WDI_STATUS_E_FAILURE;
25677 }
25678
25679 //
25680 // Fill updateScanParams from pwdiUpdateScanParams->wdiUpdateScanParamsInfo
25681 //
25682
25683 updateScanParams.b11dEnabled = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.b11dEnabled;
25684 updateScanParams.b11dResolved = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.b11dResolved;
25685
25686 updateScanParams.ucChannelCount =
25687 (pwdiUpdateScanParams->wdiUpdateScanParamsInfo.ucChannelCount <
25688 WLAN_HAL_PNO_MAX_NETW_CHANNELS_EX)?
25689 pwdiUpdateScanParams->wdiUpdateScanParamsInfo.ucChannelCount :
25690 WLAN_HAL_PNO_MAX_NETW_CHANNELS_EX;
25691
25692 wpalMemoryCopy( updateScanParams.aChannels,
25693 pwdiUpdateScanParams->wdiUpdateScanParamsInfo.aChannels,
25694 updateScanParams.ucChannelCount);
25695
25696
25697 updateScanParams.usActiveMinChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usActiveMinChTime;
25698 updateScanParams.usActiveMaxChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usActiveMaxChTime;
25699 updateScanParams.usPassiveMinChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usPassiveMinChTime;
25700 updateScanParams.usPassiveMaxChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usPassiveMaxChTime;
25701 updateScanParams.cbState = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.cbState;
25702
25703 wpalMemoryCopy( pSendBuffer+usDataOffset,
25704 &updateScanParams,
25705 sizeof(updateScanParams));
25706
25707 pWDICtx->wdiReqStatusCB = pwdiUpdateScanParams->wdiReqStatusCB;
25708 pWDICtx->pReqStatusUserData = pwdiUpdateScanParams->pUserData;
25709
Pratik Bhalgatd4404592012-11-22 17:49:14 +053025710 /*Set the output values*/
25711 *ppSendBuffer = pSendBuffer;
25712 *pSize = usSendSize;
25713
25714 return WDI_STATUS_SUCCESS;
25715}
25716
25717/**
25718 @brief Process Update Scan Params function
25719
25720 @param pWDICtx: pointer to the WLAN DAL context
25721 pEventData: pointer to the event information structure
25722
25723 @see
25724 @return Result of the function call
25725*/
25726WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070025727WDI_ProcessUpdateScanParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070025728(
Jeff Johnson295189b2012-06-20 16:38:30 -070025729 WDI_ControlBlockType* pWDICtx,
25730 WDI_EventInfoType* pEventData
25731)
25732{
25733 WDI_UpdateScanParamsInfoType* pwdiUpdateScanParams = NULL;
25734 WDI_UpdateScanParamsCb wdiUpdateScanParamsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070025735 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070025736 wpt_uint16 usSendSize = 0;
Pullela Naga Venkata Sai Ravaliab91c6b2012-12-27 17:31:42 -080025737 WDI_Status wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070025738
25739 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025740 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070025741 -------------------------------------------------------------------------*/
25742 if (( NULL == pEventData ) ||
25743 ( NULL == (pwdiUpdateScanParams = (WDI_UpdateScanParamsInfoType*)pEventData->pEventData)) ||
25744 ( NULL == (wdiUpdateScanParamsCb = (WDI_UpdateScanParamsCb)pEventData->pCBfnc)))
25745 {
25746 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025747 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025748 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070025749 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025750 }
25751
25752 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
25753 "Begin WDI Update Scan Parameters");
Jeff Johnson295189b2012-06-20 16:38:30 -070025754
25755 //
25756 // Fill updateScanParams from pwdiUpdateScanParams->wdiUpdateScanParamsInfo
25757 //
Pratik Bhalgatd4404592012-11-22 17:49:14 +053025758 if ( pWDICtx->wlanVersion.revision < 1 )
25759 {
Pullela Naga Venkata Sai Ravaliab91c6b2012-12-27 17:31:42 -080025760 wdiStatus = WDI_PackUpdateScanParamsReq( pWDICtx, pwdiUpdateScanParams,
Pratik Bhalgatd4404592012-11-22 17:49:14 +053025761 &pSendBuffer, &usSendSize);
25762 }
25763 else
25764 {
Pullela Naga Venkata Sai Ravaliab91c6b2012-12-27 17:31:42 -080025765 wdiStatus = WDI_PackUpdateScanParamsReqEx( pWDICtx, pwdiUpdateScanParams,
25766 &pSendBuffer, &usSendSize);
25767 }
25768
25769 if(WDI_STATUS_SUCCESS != wdiStatus)
25770 {
25771 //memory allocation failed
25772 return WDI_STATUS_E_FAILURE;
Pratik Bhalgatd4404592012-11-22 17:49:14 +053025773 }
Jeff Johnson295189b2012-06-20 16:38:30 -070025774
Jeff Johnson295189b2012-06-20 16:38:30 -070025775 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025776 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070025777 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025778 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Pratik Bhalgatd4404592012-11-22 17:49:14 +053025779 wdiUpdateScanParamsCb, pEventData->pUserData,
25780 WDI_UPDATE_SCAN_PARAMS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070025781}
25782
25783/**
Manjunathappa Prakash86f78ca2014-02-10 18:09:15 -080025784 @brief Process Update Channel Params function
25785
25786 @param pWDICtx: pointer to the WLAN DAL context
25787 pEventData: pointer to the event information structure
25788
25789 @see
25790 @return Result of the function call
25791*/
25792WDI_Status
25793WDI_ProcessUpdateChannelParamsReq
25794(
25795 WDI_ControlBlockType* pWDICtx,
25796 WDI_EventInfoType* pEventData
25797)
25798{
25799 WDI_UpdateChReqParamsType *pwdiUpdateChanListParams = NULL;
25800 WDI_UpdateChannelRspCb wdiUpdateChanParamsCb = NULL;
25801 wpt_uint8* pSendBuffer = NULL;
25802 wpt_uint16 usDataOffset = 0;
25803 wpt_uint16 usSendSize = 0;
25804 tUpdateChannelReqType *updateChannelParams;
25805 wpt_uint32 usUpdateChanParamSize;
25806 wpt_uint8 num_channels = 0;
25807
25808 /*-------------------------------------------------------------------------
25809 Sanity check
25810 -------------------------------------------------------------------------*/
25811 if (( NULL == pEventData ) ||
25812 ( NULL == (pwdiUpdateChanListParams = (WDI_UpdateChReqParamsType*)pEventData->pEventData)) ||
25813 ( NULL == (wdiUpdateChanParamsCb = (WDI_UpdateChannelRspCb)pEventData->pCBfnc)))
25814 {
25815 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
25816 "%s: Invalid parameters", __func__);
25817 WDI_ASSERT(0);
25818 return WDI_STATUS_E_FAILURE;
25819 }
25820 num_channels = pwdiUpdateChanListParams->wdiUpdateChanParams.numchan;
25821 usUpdateChanParamSize = (sizeof(tUpdateChannelReqType) -
25822 ((WLAN_HAL_ROAM_SCAN_MAX_CHANNELS - num_channels) *
25823 sizeof(tUpdateChannelParam)));
25824
25825 /*-----------------------------------------------------------------------
25826 Get message buffer
25827 -----------------------------------------------------------------------*/
25828 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
25829 WDI_UPDATE_CHAN_REQ, usUpdateChanParamSize,
25830 &pSendBuffer, &usDataOffset, &usSendSize))||
25831 ( usSendSize < (usDataOffset + usUpdateChanParamSize)))
25832 {
25833 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
25834 "Unable to get send buffer in Update Channel Params req %p",
25835 pwdiUpdateChanListParams);
25836 WDI_ASSERT(0);
25837 return WDI_STATUS_E_FAILURE;
25838 }
25839 updateChannelParams = (tUpdateChannelReqType *)(pSendBuffer + usDataOffset);
25840
25841 updateChannelParams->numChan = num_channels;
25842 wpalMemoryCopy(&updateChannelParams->chanParam,
25843 pwdiUpdateChanListParams->wdiUpdateChanParams.pchanParam,
25844 sizeof(WDI_UpdateChannelReqinfoType) * num_channels);
25845
25846 pWDICtx->wdiReqStatusCB = pwdiUpdateChanListParams->wdiReqStatusCB;
25847 pWDICtx->pReqStatusUserData = pwdiUpdateChanListParams->pUserData;
25848
25849 /*-------------------------------------------------------------------------
25850 Send Update channel request to fw
25851 -------------------------------------------------------------------------*/
25852 return WDI_SendMsg(pWDICtx, pSendBuffer, usSendSize,
25853 wdiUpdateChanParamsCb, pEventData->pUserData,
25854 WDI_UPDATE_CHAN_RESP);
25855}
25856
25857/**
Jeff Johnson295189b2012-06-20 16:38:30 -070025858 @brief Process Preferred Network Found Indication function
Jeff Johnsone7245742012-09-05 17:12:55 -070025859
25860 @param pWDICtx: pointer to the WLAN DAL context
25861 pEventData: pointer to the event information structure
25862
Jeff Johnson295189b2012-06-20 16:38:30 -070025863 @see
25864 @return Result of the function call
25865*/
25866WDI_Status
25867WDI_ProcessPrefNetworkFoundInd
Jeff Johnsone7245742012-09-05 17:12:55 -070025868(
Jeff Johnson295189b2012-06-20 16:38:30 -070025869 WDI_ControlBlockType* pWDICtx,
25870 WDI_EventInfoType* pEventData
25871)
25872{
Srikant Kuppa066904f2013-05-07 13:56:02 -070025873 WDI_LowLevelIndType wdiInd;
25874 tpPrefNetwFoundParams pNetwFoundParams;
25875 wpt_uint32 msgsize;
Jeff Johnson295189b2012-06-20 16:38:30 -070025876
25877
25878 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025879 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070025880 -------------------------------------------------------------------------*/
25881 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
25882 ( NULL == pEventData->pEventData ))
25883 {
25884 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025885 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025886 WDI_ASSERT( 0 );
Jeff Johnsone7245742012-09-05 17:12:55 -070025887 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025888 }
25889
25890 /*-------------------------------------------------------------------------
25891 Extract indication and send it to UMAC
25892 -------------------------------------------------------------------------*/
Srikant Kuppa066904f2013-05-07 13:56:02 -070025893 pNetwFoundParams = (tpPrefNetwFoundParams)(pEventData->pEventData);
25894
25895 msgsize = sizeof(tPrefNetwFoundParams) + pNetwFoundParams->frameLength;
25896 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.pData =
25897 (wpt_uint8 *)wpalMemoryAllocate(msgsize);
25898
25899 if (NULL == wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.pData)
25900 {
25901 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25902 "%s: fail to allocate memory", __func__);
25903 return WDI_STATUS_MEM_FAILURE;
25904 }
25905
25906 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.ucLength =
25907 (pNetwFoundParams->ssId.length < 32 )?
25908 pNetwFoundParams->ssId.length : 32;
25909 wpalMemoryCopy( wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.sSSID,
25910 pNetwFoundParams->ssId.ssId,
25911 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.ucLength);
25912 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.rssi = pNetwFoundParams->rssi;
25913 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.frameLength =
25914 pNetwFoundParams->frameLength;
25915 wpalMemoryCopy( wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.pData,
25916 (wpt_uint8 *)pEventData->pEventData + sizeof(tPrefNetwFoundParams),
25917 pNetwFoundParams->frameLength);
Jeff Johnson295189b2012-06-20 16:38:30 -070025918
25919 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025920 wdiInd.wdiIndicationType = WDI_PREF_NETWORK_FOUND_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070025921
Jeff Johnson295189b2012-06-20 16:38:30 -070025922 // DEBUG
25923 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Wilson Yang56002a22013-08-28 17:55:56 -070025924 "[PNO WDI] PREF_NETWORK_FOUND_IND Type (%x) data (SSID=%.*s, LENGTH=%u, RSSI=%u)",
Jeff Johnson295189b2012-06-20 16:38:30 -070025925 wdiInd.wdiIndicationType,
Wilson Yang56002a22013-08-28 17:55:56 -070025926 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.ucLength,
Jeff Johnson295189b2012-06-20 16:38:30 -070025927 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.sSSID,
Wilson Yang56002a22013-08-28 17:55:56 -070025928 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.ucLength,
Jeff Johnson295189b2012-06-20 16:38:30 -070025929 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.rssi );
25930
ltimariub77f24b2013-01-24 18:54:33 -080025931 if ( pWDICtx->wdiLowLevelIndCB )
25932 {
25933 /*Notify UMAC*/
25934 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
25935 }
Jeff Johnsone7245742012-09-05 17:12:55 -070025936
25937 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070025938}
25939
25940/**
25941 @brief Process PNO Rsp function (called when a
25942 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070025943
25944 @param pWDICtx: pointer to the WLAN DAL context
25945 pEventData: pointer to the event information structure
25946
Jeff Johnson295189b2012-06-20 16:38:30 -070025947 @see
25948 @return Result of the function call
25949*/
25950WDI_Status
25951WDI_ProcessSetPreferredNetworkRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070025952(
Jeff Johnson295189b2012-06-20 16:38:30 -070025953 WDI_ControlBlockType* pWDICtx,
25954 WDI_EventInfoType* pEventData
25955)
25956{
25957 WDI_Status wdiStatus;
25958 eHalStatus halStatus;
25959 WDI_PNOScanCb wdiPNOScanCb = NULL;
25960 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25961
25962 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025963 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070025964 -------------------------------------------------------------------------*/
25965 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
25966 ( NULL == pEventData->pEventData ))
25967 {
25968 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025969 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025970 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070025971 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025972 }
25973
25974
Jeff Johnsone7245742012-09-05 17:12:55 -070025975 wdiPNOScanCb = (WDI_PNOScanCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070025976
25977 /*-------------------------------------------------------------------------
25978 Extract response and send it to UMAC
25979 -------------------------------------------------------------------------*/
25980 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070025981 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070025982
25983 /*Notify UMAC*/
25984 wdiPNOScanCb(wdiStatus, pWDICtx->pRspCBUserData);
25985
Jeff Johnsone7245742012-09-05 17:12:55 -070025986 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070025987}/*WDI_ProcessSetPreferredNetworkRsp*/
25988
25989/**
25990 @brief Process RSSI Filter Rsp function (called when a
25991 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070025992
25993 @param pWDICtx: pointer to the WLAN DAL context
25994 pEventData: pointer to the event information structure
25995
Jeff Johnson295189b2012-06-20 16:38:30 -070025996 @see
25997 @return Result of the function call
25998*/
25999WDI_Status
26000WDI_ProcessSetRssiFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070026001(
Jeff Johnson295189b2012-06-20 16:38:30 -070026002 WDI_ControlBlockType* pWDICtx,
26003 WDI_EventInfoType* pEventData
26004)
26005{
26006 WDI_Status wdiStatus;
26007 eHalStatus halStatus;
26008 WDI_RssiFilterCb wdiRssiFilterCb;
26009 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26010
26011 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026012 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070026013 -------------------------------------------------------------------------*/
26014 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
26015 ( NULL == pEventData->pEventData ))
26016 {
26017 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026018 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026019 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026020 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026021 }
26022
Jeff Johnsone7245742012-09-05 17:12:55 -070026023 wdiRssiFilterCb = (WDI_RssiFilterCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070026024
26025 /*-------------------------------------------------------------------------
26026 Extract response and send it to UMAC
26027 -------------------------------------------------------------------------*/
26028 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070026029 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070026030
26031 /*Notify UMAC*/
26032 wdiRssiFilterCb(wdiStatus, pWDICtx->pRspCBUserData);
26033
Jeff Johnsone7245742012-09-05 17:12:55 -070026034 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070026035}/*WDI_ProcessSetRssiFilterRsp*/
26036
26037/**
26038 @brief Process Update Scan Params Rsp function (called when a
26039 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070026040
26041 @param pWDICtx: pointer to the WLAN DAL context
26042 pEventData: pointer to the event information structure
26043
Jeff Johnson295189b2012-06-20 16:38:30 -070026044 @see
26045 @return Result of the function call
26046*/
26047WDI_Status
26048WDI_ProcessUpdateScanParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070026049(
Jeff Johnson295189b2012-06-20 16:38:30 -070026050 WDI_ControlBlockType* pWDICtx,
26051 WDI_EventInfoType* pEventData
26052)
26053{
26054 WDI_Status wdiStatus;
Jeff Johnsone7245742012-09-05 17:12:55 -070026055 tUpdateScanParamsResp halUpdScanParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070026056 WDI_UpdateScanParamsCb wdiUpdateScanParamsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070026057 wpt_uint32 uStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070026058 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26059
26060 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026061 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070026062 -------------------------------------------------------------------------*/
26063 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
26064 ( NULL == pEventData->pEventData ))
26065 {
26066 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026067 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026068 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026069 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026070 }
26071
26072 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080026073 "%s: Process UPD scan params ptr : %p",
26074 __func__, pEventData->pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070026075
Jeff Johnsone7245742012-09-05 17:12:55 -070026076 wdiUpdateScanParamsCb = (WDI_UpdateScanParamsCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070026077
26078 /*-------------------------------------------------------------------------
26079 Extract response and send it to UMAC
26080 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070026081 wpalMemoryCopy( (void *)&halUpdScanParams.status,
26082 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070026083 sizeof(halUpdScanParams.status));
26084
26085 uStatus = halUpdScanParams.status;
26086
26087 /*Extract PNO version - 1st bit of the status */
Jeff Johnsone7245742012-09-05 17:12:55 -070026088 pWDICtx->wdiPNOVersion = (uStatus & WDI_PNO_VERSION_MASK)? 1:0;
Jeff Johnson295189b2012-06-20 16:38:30 -070026089
26090 /*Remove version bit*/
Jeff Johnsone7245742012-09-05 17:12:55 -070026091 uStatus = uStatus & ( ~(WDI_PNO_VERSION_MASK));
Jeff Johnson295189b2012-06-20 16:38:30 -070026092
Jeff Johnsone7245742012-09-05 17:12:55 -070026093 wdiStatus = WDI_HAL_2_WDI_STATUS(uStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070026094
26095 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070026096 "UPD Scan Parameters rsp with status: %d",
Jeff Johnson295189b2012-06-20 16:38:30 -070026097 halUpdScanParams.status);
26098
26099 /*Notify UMAC*/
26100 wdiUpdateScanParamsCb(wdiStatus, pWDICtx->pRspCBUserData);
26101
Jeff Johnsone7245742012-09-05 17:12:55 -070026102 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070026103}
26104#endif // FEATURE_WLAN_SCAN_PNO
26105
26106#ifdef WLAN_FEATURE_PACKET_FILTERING
Jeff Johnsone7245742012-09-05 17:12:55 -070026107WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070026108WDI_8023MulticastListReq
26109(
26110 WDI_RcvFltPktSetMcListReqParamsType* pwdiRcvFltPktSetMcListReqInfo,
26111 WDI_8023MulticastListCb wdi8023MulticastListCallback,
26112 void* pUserData
26113)
26114{
26115 WDI_EventInfoType wdiEventData;
26116 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26117
26118 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026119 "%s", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026120
26121 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026122 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070026123 ------------------------------------------------------------------------*/
26124 if ( eWLAN_PAL_FALSE == gWDIInitialized )
26125 {
26126 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
26127 "WDI API call before module is initialized - Fail request");
26128
Jeff Johnsone7245742012-09-05 17:12:55 -070026129 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070026130 }
26131
26132 /*------------------------------------------------------------------------
26133 Fill in Event data and post to the Main FSM
26134 ------------------------------------------------------------------------*/
26135 wdiEventData.wdiRequest = WDI_8023_MULTICAST_LIST_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070026136 wdiEventData.pEventData = pwdiRcvFltPktSetMcListReqInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070026137 wdiEventData.uEventDataSize = sizeof(*pwdiRcvFltPktSetMcListReqInfo);
Jeff Johnsone7245742012-09-05 17:12:55 -070026138 wdiEventData.pCBfnc = wdi8023MulticastListCallback;
Jeff Johnson295189b2012-06-20 16:38:30 -070026139 wdiEventData.pUserData = pUserData;
26140
26141 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
26142}
26143
Jeff Johnsone7245742012-09-05 17:12:55 -070026144WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070026145WDI_ReceiveFilterSetFilterReq
26146(
26147 WDI_SetRcvPktFilterReqParamsType* pwdiSetRcvPktFilterReqInfo,
26148 WDI_ReceiveFilterSetFilterCb wdiReceiveFilterSetFilterCallback,
26149 void* pUserData
26150)
26151{
26152 WDI_EventInfoType wdiEventData;
26153 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26154
26155 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026156 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026157
26158 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026159 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070026160 ------------------------------------------------------------------------*/
26161 if ( eWLAN_PAL_FALSE == gWDIInitialized )
26162 {
26163 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
26164 "WDI API call before module is initialized - Fail request");
26165
Jeff Johnsone7245742012-09-05 17:12:55 -070026166 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070026167 }
26168
26169 /*------------------------------------------------------------------------
26170 Fill in Event data and post to the Main FSM
26171 ------------------------------------------------------------------------*/
26172 wdiEventData.wdiRequest = WDI_RECEIVE_FILTER_SET_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070026173 wdiEventData.pEventData = pwdiSetRcvPktFilterReqInfo;
26174 wdiEventData.uEventDataSize = sizeof(*pwdiSetRcvPktFilterReqInfo) +
Yue Ma13cf95c2013-03-18 18:05:27 -070026175 (pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams - 1)
26176 * sizeof(WDI_RcvPktFilterFieldParams);
Jeff Johnsone7245742012-09-05 17:12:55 -070026177 wdiEventData.pCBfnc = wdiReceiveFilterSetFilterCallback;
Jeff Johnson295189b2012-06-20 16:38:30 -070026178 wdiEventData.pUserData = pUserData;
26179
26180
26181 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
26182}
26183
Jeff Johnsone7245742012-09-05 17:12:55 -070026184WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070026185WDI_FilterMatchCountReq
26186(
26187 WDI_RcvFltPktMatchCntReqParamsType* pwdiRcvFltPktMatchCntReqInfo,
26188 WDI_FilterMatchCountCb wdiFilterMatchCountCallback,
26189 void* pUserData
26190)
26191{
26192 WDI_EventInfoType wdiEventData;
26193 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26194
26195 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026196 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026197
26198 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026199 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070026200 ------------------------------------------------------------------------*/
26201 if ( eWLAN_PAL_FALSE == gWDIInitialized )
26202 {
26203 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
26204 "WDI API call before module is initialized - Fail request");
26205
Jeff Johnsone7245742012-09-05 17:12:55 -070026206 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070026207 }
26208
26209 /*------------------------------------------------------------------------
26210 Fill in Event data and post to the Main FSM
26211 ------------------------------------------------------------------------*/
26212 wdiEventData.wdiRequest = WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070026213 wdiEventData.pEventData = pwdiRcvFltPktMatchCntReqInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070026214 wdiEventData.uEventDataSize = sizeof(*pwdiRcvFltPktMatchCntReqInfo);
Jeff Johnsone7245742012-09-05 17:12:55 -070026215 wdiEventData.pCBfnc = wdiFilterMatchCountCallback;
Jeff Johnson295189b2012-06-20 16:38:30 -070026216 wdiEventData.pUserData = pUserData;
26217
26218
26219 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
26220}
26221
Jeff Johnsone7245742012-09-05 17:12:55 -070026222WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070026223WDI_ReceiveFilterClearFilterReq
26224(
26225 WDI_RcvFltPktClearReqParamsType* pwdiRcvFltPktClearReqInfo,
26226 WDI_ReceiveFilterClearFilterCb wdiReceiveFilterClearFilterCallback,
26227 void* pUserData
26228)
26229{
26230 WDI_EventInfoType wdiEventData;
26231 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26232
26233 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026234 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026235
26236 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026237 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070026238 ------------------------------------------------------------------------*/
26239 if ( eWLAN_PAL_FALSE == gWDIInitialized )
26240 {
26241 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
26242 "WDI API call before module is initialized - Fail request");
26243
Jeff Johnsone7245742012-09-05 17:12:55 -070026244 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070026245 }
26246
26247 /*------------------------------------------------------------------------
26248 Fill in Event data and post to the Main FSM
26249 ------------------------------------------------------------------------*/
26250 wdiEventData.wdiRequest = WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070026251 wdiEventData.pEventData = pwdiRcvFltPktClearReqInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070026252 wdiEventData.uEventDataSize = sizeof(*pwdiRcvFltPktClearReqInfo);
Jeff Johnsone7245742012-09-05 17:12:55 -070026253 wdiEventData.pCBfnc = wdiReceiveFilterClearFilterCallback;
Jeff Johnson295189b2012-06-20 16:38:30 -070026254 wdiEventData.pUserData = pUserData;
26255
26256
26257 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
26258}
26259
26260/**
26261 @brief Process 8023 Multicast List Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070026262
26263 @param pWDICtx: pointer to the WLAN DAL context
26264 pEventData: pointer to the event information structure
26265
Jeff Johnson295189b2012-06-20 16:38:30 -070026266 @see
26267 @return Result of the function call
26268*/
26269WDI_Status
26270WDI_Process8023MulticastListReq
Jeff Johnsone7245742012-09-05 17:12:55 -070026271(
Jeff Johnson295189b2012-06-20 16:38:30 -070026272 WDI_ControlBlockType* pWDICtx,
26273 WDI_EventInfoType* pEventData
26274)
26275{
26276 WDI_RcvFltPktSetMcListReqParamsType* pwdiFltPktSetMcListReqParamsType = NULL;
26277 WDI_8023MulticastListCb wdi8023MulticastListCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070026278 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070026279 wpt_uint16 usDataOffset = 0;
26280 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026281 tpHalRcvFltMcAddrListType pRcvFltMcAddrListType;
Jeff Johnson295189b2012-06-20 16:38:30 -070026282 wpt_uint8 i;
Jeff Johnsone7245742012-09-05 17:12:55 -070026283 wpt_uint8 ucCurrentBSSSesIdx = 0;
26284 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070026285
26286 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026287 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026288
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026289 pRcvFltMcAddrListType = wpalMemoryAllocate(sizeof(tHalRcvFltMcAddrListType)) ;
26290 if( NULL == pRcvFltMcAddrListType )
26291 {
26292 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
26293 "Failed to alloc in WDI_Process8023MulticastListReq");
26294 return WDI_STATUS_E_FAILURE;
26295 }
26296
Jeff Johnson295189b2012-06-20 16:38:30 -070026297 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026298 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070026299 -------------------------------------------------------------------------*/
26300 if (( NULL == pEventData ) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070026301 ( NULL == (pwdiFltPktSetMcListReqParamsType =
Jeff Johnson295189b2012-06-20 16:38:30 -070026302 (WDI_RcvFltPktSetMcListReqParamsType*)pEventData->pEventData)) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070026303 ( NULL == (wdi8023MulticastListCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070026304 (WDI_8023MulticastListCb)pEventData->pCBfnc)))
26305 {
26306 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026307 "%s: Invalid parameters", __func__);
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026308 wpalMemoryFree(pRcvFltMcAddrListType);
Jeff Johnson295189b2012-06-20 16:38:30 -070026309 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026310 return WDI_STATUS_E_FAILURE;
26311 }
26312
26313 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
26314 pwdiFltPktSetMcListReqParamsType->mcAddrList.bssId,
26315 &pBSSSes);
26316 if ( NULL == pBSSSes )
26317 {
26318 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026319 " %s : Association for this BSSID does not exist",__func__);
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026320 wpalMemoryFree(pRcvFltMcAddrListType);
Jeff Johnsone7245742012-09-05 17:12:55 -070026321 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026322 }
26323
26324 /*-----------------------------------------------------------------------
26325 Get message buffer
26326 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070026327 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
26328 WDI_8023_MULTICAST_LIST_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070026329 sizeof(tHalRcvFltMcAddrListType),
26330 &pSendBuffer, &usDataOffset, &usSendSize))||
26331 ( usSendSize < (usDataOffset + sizeof(tHalRcvFltMcAddrListType))))
26332 {
26333 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
26334 "Unable to get send buffer in "
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080026335 "WDI_Process8023MulticastListReq() %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070026336 pEventData, pwdiFltPktSetMcListReqParamsType,
26337 wdi8023MulticastListCb);
Yue Mad8cac142013-03-28 11:33:46 -070026338 wpalMemoryFree(pRcvFltMcAddrListType);
Jeff Johnson295189b2012-06-20 16:38:30 -070026339 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026340 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026341 }
26342
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026343 pRcvFltMcAddrListType->cMulticastAddr =
Jeff Johnsone7245742012-09-05 17:12:55 -070026344 pwdiFltPktSetMcListReqParamsType->mcAddrList.ulMulticastAddrCnt;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026345 for( i = 0; i < pRcvFltMcAddrListType->cMulticastAddr; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070026346 {
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026347 wpalMemoryCopy(pRcvFltMcAddrListType->multicastAddr[i],
Jeff Johnson295189b2012-06-20 16:38:30 -070026348 pwdiFltPktSetMcListReqParamsType->mcAddrList.multicastAddr[i],
26349 sizeof(tSirMacAddr));
26350 }
26351
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026352 pRcvFltMcAddrListType->bssIdx = pBSSSes->ucBSSIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070026353 wpalMemoryCopy( pSendBuffer+usDataOffset,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026354 pRcvFltMcAddrListType,
26355 sizeof(tHalRcvFltMcAddrListType));
Jeff Johnson295189b2012-06-20 16:38:30 -070026356
26357 pWDICtx->wdiReqStatusCB = pwdiFltPktSetMcListReqParamsType->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070026358 pWDICtx->pReqStatusUserData = pwdiFltPktSetMcListReqParamsType->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070026359
26360
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026361 wpalMemoryFree(pRcvFltMcAddrListType);
Jeff Johnson295189b2012-06-20 16:38:30 -070026362 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026363 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070026364 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070026365 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070026366 wdi8023MulticastListCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -070026367 WDI_8023_MULTICAST_LIST_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070026368}
26369
26370/**
26371 @brief Process Receive Filter Set Filter Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070026372
26373 @param pWDICtx: pointer to the WLAN DAL context
26374 pEventData: pointer to the event information structure
26375
Jeff Johnson295189b2012-06-20 16:38:30 -070026376 @see
26377 @return Result of the function call
26378*/
26379WDI_Status
26380WDI_ProcessReceiveFilterSetFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070026381(
Jeff Johnson295189b2012-06-20 16:38:30 -070026382 WDI_ControlBlockType* pWDICtx,
26383 WDI_EventInfoType* pEventData
26384)
26385{
26386 WDI_SetRcvPktFilterReqParamsType* pwdiSetRcvPktFilterReqInfo = NULL;
26387 WDI_ReceiveFilterSetFilterCb wdiReceiveFilterSetFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070026388 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070026389 wpt_uint16 usDataOffset = 0;
26390 wpt_uint16 usSendSize = 0;
26391 wpt_uint32 usRcvPktFilterCfgSize;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026392 tHalRcvPktFilterCfgType *pRcvPktFilterCfg = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070026393 wpt_uint8 i;
Jeff Johnsone7245742012-09-05 17:12:55 -070026394 wpt_uint8 ucCurrentBSSSesIdx = 0;
26395 WDI_BSSSessionType* pBSSSes = NULL;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026396 tHalSessionizedRcvPktFilterCfgType *pSessRcvPktFilterCfg = NULL;
26397 wpt_uint32 usSessRcvPktFilterCfgSize;
Jeff Johnson295189b2012-06-20 16:38:30 -070026398
26399 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026400 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026401
26402 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026403 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070026404 -------------------------------------------------------------------------*/
26405 if (( NULL == pEventData ) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070026406 ( NULL == (pwdiSetRcvPktFilterReqInfo =
Jeff Johnson295189b2012-06-20 16:38:30 -070026407 (WDI_SetRcvPktFilterReqParamsType*)pEventData->pEventData)) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070026408 ( NULL == (wdiReceiveFilterSetFilterCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070026409 (WDI_ReceiveFilterSetFilterCb)pEventData->pCBfnc)))
26410 {
26411 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026412 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026413 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026414 return WDI_STATUS_E_FAILURE;
26415 }
26416
26417 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
26418 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.bssId,
26419 &pBSSSes);
26420 if ( NULL == pBSSSes )
26421 {
26422 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026423 " %s : Association for this BSSID does not exist",__func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070026424 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026425 }
26426
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026427 if( WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION) )
26428 {
Jeff Johnson295189b2012-06-20 16:38:30 -070026429
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026430 usSessRcvPktFilterCfgSize = sizeof(tHalSessionizedRcvPktFilterCfgType) +
26431 ((pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams - 1)
26432 * sizeof(tHalSessionizedRcvPktFilterCfgType));
26433
26434 pSessRcvPktFilterCfg = (tHalSessionizedRcvPktFilterCfgType *)wpalMemoryAllocate(
26435 usSessRcvPktFilterCfgSize);
26436
26437 if(NULL == pSessRcvPktFilterCfg)
26438 {
26439 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
26440 "%s: Failed to allocate memory for "
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080026441 "tHalRcvPktFilterCfgType: %p %p %p ",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026442 __func__, pWDICtx, pEventData, pEventData->pEventData);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026443 WDI_ASSERT(0);
26444 return WDI_STATUS_E_FAILURE;
26445 }
26446
26447 wpalMemoryZero(pSessRcvPktFilterCfg, usSessRcvPktFilterCfgSize);
26448
26449 /*-----------------------------------------------------------------------
26450 Get message buffer
26451 -----------------------------------------------------------------------*/
26452
26453 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_RECEIVE_FILTER_SET_FILTER_REQ,
26454 usSessRcvPktFilterCfgSize,
26455 &pSendBuffer, &usDataOffset, &usSendSize))||
26456 ( usSendSize < (usDataOffset + usSessRcvPktFilterCfgSize)))
26457 {
26458 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
26459 "Unable to get send buffer in "
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080026460 "WDI_ProcessReceiveFilterSetFilterReq() %p %p %p",
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026461 pEventData, pwdiSetRcvPktFilterReqInfo,
26462 wdiReceiveFilterSetFilterCb);
26463 WDI_ASSERT(0);
26464 wpalMemoryFree(pSessRcvPktFilterCfg);
26465 return WDI_STATUS_E_FAILURE;
26466 }
26467
26468 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080026469 "UsData Off %d UsSend %d cfg %p",usDataOffset,
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026470 usSendSize,pSessRcvPktFilterCfg);
26471
26472 pSessRcvPktFilterCfg->filterId = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.filterId;
26473 pSessRcvPktFilterCfg->filterType = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.filterType;
26474 pSessRcvPktFilterCfg->numParams = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams;
26475 pSessRcvPktFilterCfg->coleasceTime = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.coalesceTime;
26476
26477 pSessRcvPktFilterCfg->bssIdx = pBSSSes->ucBSSIdx;
26478
26479 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
26480 "Out: FID %d FT %d",pSessRcvPktFilterCfg->filterId,
26481 pSessRcvPktFilterCfg->filterType);
26482 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
26483 "NParams %d CT %d",pSessRcvPktFilterCfg->numParams,
26484 pSessRcvPktFilterCfg->coleasceTime);
26485
26486 for ( i = 0; i < pSessRcvPktFilterCfg->numParams; i++ )
26487 {
26488 pSessRcvPktFilterCfg->paramsData[i].protocolLayer =
26489 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].protocolLayer;
26490 pSessRcvPktFilterCfg->paramsData[i].cmpFlag =
26491 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].cmpFlag;
26492 pSessRcvPktFilterCfg->paramsData[i].dataOffset =
26493 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataOffset;
26494 pSessRcvPktFilterCfg->paramsData[i].dataLength =
26495 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataLength;
26496
26497 wpalMemoryCopy(&pSessRcvPktFilterCfg->paramsData[i].compareData,
26498 &pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].compareData,
26499 8);
26500 wpalMemoryCopy(&pSessRcvPktFilterCfg->paramsData[i].dataMask,
26501 &pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataMask,
26502 8);
26503
26504 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Arif Hussain9a5d5382013-11-17 22:05:35 -080026505 "Out:Proto %d Comp Flag %d",
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026506 pSessRcvPktFilterCfg->paramsData[i].protocolLayer,
26507 pSessRcvPktFilterCfg->paramsData[i].cmpFlag);
26508
26509 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Arif Hussain9a5d5382013-11-17 22:05:35 -080026510 "Data Offset %d Data Len %d",
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026511 pSessRcvPktFilterCfg->paramsData[i].dataOffset,
26512 pSessRcvPktFilterCfg->paramsData[i].dataLength);
26513
26514 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Arif Hussain9a5d5382013-11-17 22:05:35 -080026515 "CData: %d:%d:%d:%d:%d:%d",
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026516 pSessRcvPktFilterCfg->paramsData[i].compareData[0],
26517 pSessRcvPktFilterCfg->paramsData[i].compareData[1],
26518 pSessRcvPktFilterCfg->paramsData[i].compareData[2],
26519 pSessRcvPktFilterCfg->paramsData[i].compareData[3],
26520 pSessRcvPktFilterCfg->paramsData[i].compareData[4],
26521 pSessRcvPktFilterCfg->paramsData[i].compareData[5]);
26522
26523 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Arif Hussain9a5d5382013-11-17 22:05:35 -080026524 "MData: %d:%d:%d:%d:%d:%d",
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026525 pSessRcvPktFilterCfg->paramsData[i].dataMask[0],
26526 pSessRcvPktFilterCfg->paramsData[i].dataMask[1],
26527 pSessRcvPktFilterCfg->paramsData[i].dataMask[2],
26528 pSessRcvPktFilterCfg->paramsData[i].dataMask[3],
26529 pSessRcvPktFilterCfg->paramsData[i].dataMask[4],
26530 pSessRcvPktFilterCfg->paramsData[i].dataMask[5]);
26531 }
26532
26533 wpalMemoryCopy( pSendBuffer+usDataOffset,
26534 pSessRcvPktFilterCfg,
26535 usSessRcvPktFilterCfgSize);
26536
26537
26538 pWDICtx->wdiReqStatusCB = pwdiSetRcvPktFilterReqInfo->wdiReqStatusCB;
26539 pWDICtx->pReqStatusUserData = pwdiSetRcvPktFilterReqInfo->pUserData;
26540
26541 wpalMemoryFree(pSessRcvPktFilterCfg);
26542
26543 }
26544 /*If SLM_SESSIONIZATION is not supported then do this */
26545 else
26546 {
26547 usRcvPktFilterCfgSize = sizeof(tHalRcvPktFilterCfgType) +
26548 ((pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams - 1)
26549 * sizeof(tHalRcvPktFilterParams));
26550
26551 pRcvPktFilterCfg = (tHalRcvPktFilterCfgType *)wpalMemoryAllocate(
Jeff Johnson295189b2012-06-20 16:38:30 -070026552 usRcvPktFilterCfgSize);
26553
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026554 if(NULL == pRcvPktFilterCfg)
26555 {
26556 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
26557 "%s: Failed to allocate memory for "
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080026558 "tHalRcvPktFilterCfgType: %p %p %p ",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026559 __func__, pWDICtx, pEventData, pEventData->pEventData);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026560 WDI_ASSERT(0);
26561 return WDI_STATUS_E_FAILURE;
26562 }
Jeff Johnson295189b2012-06-20 16:38:30 -070026563
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026564 wpalMemoryZero(pRcvPktFilterCfg, usRcvPktFilterCfgSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070026565
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026566 /*-----------------------------------------------------------------------
26567 Get message buffer
26568 -----------------------------------------------------------------------*/
26569 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_RECEIVE_FILTER_SET_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070026570 usRcvPktFilterCfgSize,
26571 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026572 ( usSendSize < (usDataOffset + usRcvPktFilterCfgSize)))
26573 {
26574 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson295189b2012-06-20 16:38:30 -070026575 "Unable to get send buffer in "
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080026576 "WDI_ProcessReceiveFilterSetFilterReq() %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070026577 pEventData, pwdiSetRcvPktFilterReqInfo,
26578 wdiReceiveFilterSetFilterCb);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026579 WDI_ASSERT(0);
26580 wpalMemoryFree(pRcvPktFilterCfg);
26581 return WDI_STATUS_E_FAILURE;
26582 }
Jeff Johnson295189b2012-06-20 16:38:30 -070026583
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026584 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070026585 "UsData Off %d UsSend %d cfg %d",usDataOffset,
Jeff Johnson295189b2012-06-20 16:38:30 -070026586 usSendSize,usRcvPktFilterCfgSize);
26587
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026588 pRcvPktFilterCfg->filterId = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.filterId;
26589 pRcvPktFilterCfg->filterType = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.filterType;
26590 pRcvPktFilterCfg->numParams = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams;
26591 pRcvPktFilterCfg->coalesceTime = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.coalesceTime;
Jeff Johnson295189b2012-06-20 16:38:30 -070026592
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026593 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070026594 "Out: FID %d FT %d",pRcvPktFilterCfg->filterId,
Jeff Johnson295189b2012-06-20 16:38:30 -070026595 pRcvPktFilterCfg->filterType);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026596 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnson295189b2012-06-20 16:38:30 -070026597 "NParams %d CT %d",pRcvPktFilterCfg->numParams,
Jeff Johnsone7245742012-09-05 17:12:55 -070026598 pRcvPktFilterCfg->coalesceTime);
Jeff Johnson295189b2012-06-20 16:38:30 -070026599
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026600 for ( i = 0; i < pRcvPktFilterCfg->numParams; i++ )
26601 {
26602 pRcvPktFilterCfg->paramsData[i].protocolLayer =
26603 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].protocolLayer;
26604 pRcvPktFilterCfg->paramsData[i].cmpFlag =
26605 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].cmpFlag;
26606 pRcvPktFilterCfg->paramsData[i].dataOffset =
26607 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataOffset;
26608 pRcvPktFilterCfg->paramsData[i].dataLength =
26609 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataLength;
Jeff Johnson295189b2012-06-20 16:38:30 -070026610
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026611 wpalMemoryCopy(&pRcvPktFilterCfg->paramsData[i].compareData,
Jeff Johnson295189b2012-06-20 16:38:30 -070026612 &pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].compareData,
26613 8);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026614 wpalMemoryCopy(&pRcvPktFilterCfg->paramsData[i].dataMask,
Jeff Johnson295189b2012-06-20 16:38:30 -070026615 &pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataMask,
26616 8);
26617
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026618 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Arif Hussain9a5d5382013-11-17 22:05:35 -080026619 "Out:Proto %d Comp Flag %d",
Jeff Johnsone7245742012-09-05 17:12:55 -070026620 pRcvPktFilterCfg->paramsData[i].protocolLayer,
Jeff Johnson295189b2012-06-20 16:38:30 -070026621 pRcvPktFilterCfg->paramsData[i].cmpFlag);
26622
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026623 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Arif Hussain9a5d5382013-11-17 22:05:35 -080026624 "Data Offset %d Data Len %d",
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026625 pRcvPktFilterCfg->paramsData[i].dataOffset,
26626 pRcvPktFilterCfg->paramsData[i].dataLength);
Jeff Johnson295189b2012-06-20 16:38:30 -070026627
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026628 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Arif Hussain9a5d5382013-11-17 22:05:35 -080026629 "CData: %d:%d:%d:%d:%d:%d",
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026630 pRcvPktFilterCfg->paramsData[i].compareData[0],
26631 pRcvPktFilterCfg->paramsData[i].compareData[1],
26632 pRcvPktFilterCfg->paramsData[i].compareData[2],
26633 pRcvPktFilterCfg->paramsData[i].compareData[3],
26634 pRcvPktFilterCfg->paramsData[i].compareData[4],
26635 pRcvPktFilterCfg->paramsData[i].compareData[5]);
Jeff Johnson295189b2012-06-20 16:38:30 -070026636
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026637 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Arif Hussain9a5d5382013-11-17 22:05:35 -080026638 "MData: %d:%d:%d:%d:%d:%d",
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026639 pRcvPktFilterCfg->paramsData[i].dataMask[0],
26640 pRcvPktFilterCfg->paramsData[i].dataMask[1],
26641 pRcvPktFilterCfg->paramsData[i].dataMask[2],
26642 pRcvPktFilterCfg->paramsData[i].dataMask[3],
26643 pRcvPktFilterCfg->paramsData[i].dataMask[4],
26644 pRcvPktFilterCfg->paramsData[i].dataMask[5]);
26645 }
Jeff Johnson295189b2012-06-20 16:38:30 -070026646
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026647 wpalMemoryCopy( pSendBuffer+usDataOffset,
Jeff Johnsone7245742012-09-05 17:12:55 -070026648 pRcvPktFilterCfg,
26649 usRcvPktFilterCfgSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070026650
26651
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026652 pWDICtx->wdiReqStatusCB = pwdiSetRcvPktFilterReqInfo->wdiReqStatusCB;
26653 pWDICtx->pReqStatusUserData = pwdiSetRcvPktFilterReqInfo->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070026654
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026655 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026656 "%s",__func__);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026657 wpalMemoryFree(pRcvPktFilterCfg);
26658 }
Jeff Johnson295189b2012-06-20 16:38:30 -070026659 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026660 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070026661 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070026662 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070026663 wdiReceiveFilterSetFilterCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -070026664 WDI_RECEIVE_FILTER_SET_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070026665}
26666
26667/**
26668 @brief Process Packet Filter Match Count Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070026669
26670 @param pWDICtx: pointer to the WLAN DAL context
26671 pEventData: pointer to the event information structure
26672
Jeff Johnson295189b2012-06-20 16:38:30 -070026673 @see
26674 @return Result of the function call
26675*/
26676WDI_Status
26677WDI_ProcessFilterMatchCountReq
Jeff Johnsone7245742012-09-05 17:12:55 -070026678(
Jeff Johnson295189b2012-06-20 16:38:30 -070026679 WDI_ControlBlockType* pWDICtx,
26680 WDI_EventInfoType* pEventData
26681)
26682{
26683 WDI_RcvFltPktMatchCntReqParamsType* pwdiRcvFltPktMatchCntReqParamsType =
26684 NULL;
26685 WDI_FilterMatchCountCb wdiFilterMatchCountCb =
26686 NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070026687 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070026688 wpt_uint16 usDataOffset = 0;
26689 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026690 tHalRcvFltPktMatchCntReqParams rcvFltPktMatchCntReqParam = {0};
26691 wpt_uint8 ucCurrentBSSSesIdx = 0;
26692 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070026693
26694 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026695 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026696
26697 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026698 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070026699 -------------------------------------------------------------------------*/
26700 if (( NULL == pEventData ) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070026701 ( NULL == (pwdiRcvFltPktMatchCntReqParamsType =
Jeff Johnson295189b2012-06-20 16:38:30 -070026702 (WDI_RcvFltPktMatchCntReqParamsType*)pEventData->pEventData)) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070026703 ( NULL == (wdiFilterMatchCountCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070026704 (WDI_FilterMatchCountCb)pEventData->pCBfnc)))
26705 {
26706 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026707 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026708 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026709 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026710 }
26711
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026712 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
26713 pwdiRcvFltPktMatchCntReqParamsType->bssId,
26714 &pBSSSes);
26715 if ( NULL == pBSSSes )
26716 {
26717 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026718 " %s : Association for this BSSID does not exist",__func__);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026719 return WDI_STATUS_E_FAILURE;
26720 }
26721
Jeff Johnson295189b2012-06-20 16:38:30 -070026722 /*-----------------------------------------------------------------------
26723 Get message buffer
26724 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070026725 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
26726 WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ,
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026727 sizeof(tHalRcvFltPktMatchCntReqParams),
Jeff Johnson295189b2012-06-20 16:38:30 -070026728 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026729 ( usSendSize < (usDataOffset + sizeof(tHalRcvFltPktMatchCntReqParams))))
Jeff Johnson295189b2012-06-20 16:38:30 -070026730 {
26731 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
26732 "Unable to get send buffer in "
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080026733 "WDI_ProcessFilterMatchCountReq() %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070026734 pEventData, pwdiRcvFltPktMatchCntReqParamsType,
26735 wdiFilterMatchCountCb);
26736 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026737 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026738 }
26739
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026740 rcvFltPktMatchCntReqParam.bssIdx = pBSSSes->ucBSSIdx;
26741 wpalMemoryCopy( pSendBuffer+usDataOffset,
26742 &rcvFltPktMatchCntReqParam,
26743 sizeof(rcvFltPktMatchCntReqParam));
26744
Jeff Johnson295189b2012-06-20 16:38:30 -070026745 //
26746 // Don't need to fill send buffer other than header
26747 //
26748 pWDICtx->wdiReqStatusCB = pwdiRcvFltPktMatchCntReqParamsType->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070026749 pWDICtx->pReqStatusUserData = pwdiRcvFltPktMatchCntReqParamsType->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070026750
26751
26752 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026753 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070026754 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070026755 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
26756 wdiFilterMatchCountCb,
26757 pEventData->pUserData,
26758 WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070026759}
26760
26761/**
26762 @brief Process Receive Filter Clear Filter Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070026763
26764 @param pWDICtx: pointer to the WLAN DAL context
26765 pEventData: pointer to the event information structure
26766
Jeff Johnson295189b2012-06-20 16:38:30 -070026767 @see
26768 @return Result of the function call
26769*/
26770WDI_Status
26771WDI_ProcessReceiveFilterClearFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070026772(
Jeff Johnson295189b2012-06-20 16:38:30 -070026773 WDI_ControlBlockType* pWDICtx,
26774 WDI_EventInfoType* pEventData
26775)
Jeff Johnsone7245742012-09-05 17:12:55 -070026776{
Jeff Johnson295189b2012-06-20 16:38:30 -070026777 WDI_RcvFltPktClearReqParamsType* pwdiRcvFltPktClearReqParamsType = NULL;
26778 WDI_ReceiveFilterClearFilterCb wdiRcvFltPktClearFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070026779 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070026780 wpt_uint16 usDataOffset = 0;
26781 wpt_uint16 usSendSize = 0;
26782 tHalRcvFltPktClearParam rcvFltPktClearParam;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026783 wpt_uint8 ucCurrentSessionId = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070026784 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070026785
26786 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026787 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026788
26789 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026790 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070026791 -------------------------------------------------------------------------*/
26792 if (( NULL == pEventData ) ||
26793 ( NULL == (pwdiRcvFltPktClearReqParamsType =
26794 (WDI_RcvFltPktClearReqParamsType*)pEventData->pEventData)) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070026795 ( NULL == (wdiRcvFltPktClearFilterCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070026796 (WDI_ReceiveFilterClearFilterCb)pEventData->pCBfnc)))
26797 {
26798 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026799 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026800 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026801 return WDI_STATUS_E_FAILURE;
26802 }
26803
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026804 ucCurrentSessionId = WDI_FindAssocSession( pWDICtx,
Jeff Johnsone7245742012-09-05 17:12:55 -070026805 pwdiRcvFltPktClearReqParamsType->filterClearParam.bssId,
26806 &pBSSSes);
26807 if ( NULL == pBSSSes )
26808 {
26809 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026810 " %s : Association for this BSSID does not exist",__func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070026811 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026812 }
26813
26814 /*-----------------------------------------------------------------------
26815 Get message buffer
26816 -----------------------------------------------------------------------*/
26817 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
Jeff Johnsone7245742012-09-05 17:12:55 -070026818 WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070026819 sizeof(tHalRcvFltPktClearParam),
26820 &pSendBuffer, &usDataOffset, &usSendSize))||
26821 ( usSendSize < (usDataOffset + sizeof(tHalRcvFltPktClearParam))))
26822 {
26823 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
26824 "Unable to get send buffer in "
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080026825 "WDI_ProcessReceiveFilterClearFilterReq() %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070026826 pEventData, pwdiRcvFltPktClearReqParamsType,
26827 wdiRcvFltPktClearFilterCb);
26828 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026829 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026830 }
26831
26832
26833 rcvFltPktClearParam.status = pwdiRcvFltPktClearReqParamsType->
Jeff Johnsone7245742012-09-05 17:12:55 -070026834 filterClearParam.status;
Jeff Johnson295189b2012-06-20 16:38:30 -070026835 rcvFltPktClearParam.filterId = pwdiRcvFltPktClearReqParamsType->
Jeff Johnsone7245742012-09-05 17:12:55 -070026836 filterClearParam.filterId;
Jeff Johnson295189b2012-06-20 16:38:30 -070026837
Jeff Johnsone7245742012-09-05 17:12:55 -070026838 rcvFltPktClearParam.bssIdx = pBSSSes->ucBSSIdx;
26839 wpalMemoryCopy( pSendBuffer+usDataOffset,
26840 &rcvFltPktClearParam,
26841 sizeof(rcvFltPktClearParam));
Jeff Johnson295189b2012-06-20 16:38:30 -070026842
26843 pWDICtx->wdiReqStatusCB = pwdiRcvFltPktClearReqParamsType->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070026844 pWDICtx->pReqStatusUserData = pwdiRcvFltPktClearReqParamsType->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070026845
26846
26847 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026848 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070026849 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070026850 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070026851 wdiRcvFltPktClearFilterCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -070026852 WDI_RECEIVE_FILTER_CLEAR_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070026853}
26854
26855/**
26856 @brief Process 8023 Multicast List Response function
Jeff Johnsone7245742012-09-05 17:12:55 -070026857
26858 @param pWDICtx: pointer to the WLAN DAL context
26859 pEventData: pointer to the event information structure
26860
Jeff Johnson295189b2012-06-20 16:38:30 -070026861 @see
26862 @return Result of the function call
26863*/
26864WDI_Status
26865WDI_Process8023MulticastListRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070026866(
Jeff Johnson295189b2012-06-20 16:38:30 -070026867 WDI_ControlBlockType* pWDICtx,
26868 WDI_EventInfoType* pEventData
26869)
26870{
Jeff Johnson295189b2012-06-20 16:38:30 -070026871 eHalStatus halStatus;
26872 WDI_8023MulticastListCb wdi8023MulticastListCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026873 tHalRcvFltPktSetMcListRspType halRcvFltPktSetMcListRsp;
26874 WDI_RcvFltPktSetMcListRspParamsType wdiRcvFltPktSetMcListRspInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070026875 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26876
26877 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026878 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026879
26880 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026881 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070026882 -------------------------------------------------------------------------*/
26883 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
26884 ( NULL == pEventData->pEventData ))
26885 {
26886 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026887 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026888 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026889 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026890 }
26891
Jeff Johnsone7245742012-09-05 17:12:55 -070026892 wdi8023MulticastListCb = (WDI_8023MulticastListCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070026893
26894 /*-------------------------------------------------------------------------
26895 Extract response and send it to UMAC
26896 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026897 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
26898 {
26899 wpalMemoryCopy( &halRcvFltPktSetMcListRsp,
26900 pEventData->pEventData,
26901 sizeof(halRcvFltPktSetMcListRsp));
26902
26903 wdiRcvFltPktSetMcListRspInfo.wdiStatus =
26904 WDI_HAL_2_WDI_STATUS(halRcvFltPktSetMcListRsp.status);
26905 wdiRcvFltPktSetMcListRspInfo.bssIdx =
26906 halRcvFltPktSetMcListRsp.bssIdx;
26907 }
26908 else
26909 {
26910 halStatus = *((eHalStatus*)pEventData->pEventData);
26911 wdiRcvFltPktSetMcListRspInfo.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
26912 }
Jeff Johnson295189b2012-06-20 16:38:30 -070026913
26914 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026915 wdi8023MulticastListCb(&wdiRcvFltPktSetMcListRspInfo, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070026916
Jeff Johnsone7245742012-09-05 17:12:55 -070026917 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070026918}
26919
26920/**
26921 @brief Process Set Rsp function (called when a
26922 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070026923
26924 @param pWDICtx: pointer to the WLAN DAL context
26925 pEventData: pointer to the event information structure
26926
Jeff Johnson295189b2012-06-20 16:38:30 -070026927 @see
26928 @return Result of the function call
26929*/
26930WDI_Status
26931WDI_ProcessReceiveFilterSetFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070026932(
Jeff Johnson295189b2012-06-20 16:38:30 -070026933 WDI_ControlBlockType* pWDICtx,
26934 WDI_EventInfoType* pEventData
26935)
26936{
Jeff Johnson295189b2012-06-20 16:38:30 -070026937 eHalStatus halStatus;
26938 WDI_ReceiveFilterSetFilterCb wdiReceiveFilterSetFilterCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026939 tHalSetPktFilterRspParams halSetPktFilterRspParams;
26940 WDI_SetRcvPktFilterRspParamsType wdiSetRcvPktFilterRspInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070026941 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26942
26943 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026944 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026945
26946 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026947 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070026948 -------------------------------------------------------------------------*/
26949 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
26950 ( NULL == pEventData->pEventData ))
26951 {
26952 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026953 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026954 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026955 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026956 }
26957
26958 wdiReceiveFilterSetFilterCb = (WDI_ReceiveFilterSetFilterCb)pWDICtx->
Jeff Johnsone7245742012-09-05 17:12:55 -070026959 pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070026960
26961 /*-------------------------------------------------------------------------
26962 Extract response and send it to UMAC
26963 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026964 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
26965 {
26966 wpalMemoryCopy( &halSetPktFilterRspParams,
26967 pEventData->pEventData,
26968 sizeof(halSetPktFilterRspParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070026969
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026970 wdiSetRcvPktFilterRspInfo.bssIdx = halSetPktFilterRspParams.bssIdx;
26971 wdiSetRcvPktFilterRspInfo.wdiStatus = WDI_HAL_2_WDI_STATUS(halSetPktFilterRspParams.status);
26972 }
26973 else
26974 {
26975 halStatus = *((eHalStatus*)pEventData->pEventData);
26976 wdiSetRcvPktFilterRspInfo.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
26977 }
Jeff Johnson295189b2012-06-20 16:38:30 -070026978 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026979 wdiReceiveFilterSetFilterCb(&wdiSetRcvPktFilterRspInfo, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070026980
Jeff Johnsone7245742012-09-05 17:12:55 -070026981 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070026982}
26983
26984/**
26985 @brief Process Packet Filter Match Count Response function
Jeff Johnsone7245742012-09-05 17:12:55 -070026986
26987 @param pWDICtx: pointer to the WLAN DAL context
26988 pEventData: pointer to the event information structure
26989
Jeff Johnson295189b2012-06-20 16:38:30 -070026990 @see
26991 @return Result of the function call
26992*/
26993WDI_Status
26994WDI_ProcessFilterMatchCountRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070026995(
Jeff Johnson295189b2012-06-20 16:38:30 -070026996 WDI_ControlBlockType* pWDICtx,
26997 WDI_EventInfoType* pEventData
26998)
26999{
Jeff Johnson295189b2012-06-20 16:38:30 -070027000 eHalStatus halStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070027001 WDI_FilterMatchCountCb wdiFilterMatchCountCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027002 tHalRcvFltPktMatchRspParams halRcvFltrPktMatachRsp;
27003 WDI_RcvFltPktMatchCntRspParamsType wdiRcvFltPktMatchRspParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070027004
27005 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27006
27007 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027008 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027009
27010 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027011 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070027012 -------------------------------------------------------------------------*/
27013 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
27014 ( NULL == pEventData->pEventData ))
27015 {
27016 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027017 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027018 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070027019 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070027020 }
27021
Jeff Johnsone7245742012-09-05 17:12:55 -070027022 wdiFilterMatchCountCb = (WDI_FilterMatchCountCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070027023
27024 /*-------------------------------------------------------------------------
27025 Extract response and send it to UMAC
27026 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027027 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
27028 {
27029 wpalMemoryCopy( &halRcvFltrPktMatachRsp,
27030 pEventData->pEventData,
27031 sizeof(halRcvFltrPktMatachRsp));
27032
27033 wdiRcvFltPktMatchRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halRcvFltrPktMatachRsp.status);
27034 wdiRcvFltPktMatchRspParams.bssIdx = halRcvFltrPktMatachRsp.bssIdx;
27035 }
27036 else
27037 {
27038 halStatus = *((eHalStatus*)pEventData->pEventData);
27039 wdiRcvFltPktMatchRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
27040 }
Jeff Johnson295189b2012-06-20 16:38:30 -070027041
27042 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027043 wdiFilterMatchCountCb(&wdiRcvFltPktMatchRspParams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070027044
Jeff Johnsone7245742012-09-05 17:12:55 -070027045 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070027046}
27047
27048/**
27049 @brief Process Receive Filter Clear Filter Response function
Jeff Johnsone7245742012-09-05 17:12:55 -070027050
27051 @param pWDICtx: pointer to the WLAN DAL context
27052 pEventData: pointer to the event information structure
27053
Jeff Johnson295189b2012-06-20 16:38:30 -070027054 @see
27055 @return Result of the function call
27056*/
27057WDI_Status
27058WDI_ProcessReceiveFilterClearFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070027059(
Jeff Johnson295189b2012-06-20 16:38:30 -070027060 WDI_ControlBlockType* pWDICtx,
27061 WDI_EventInfoType* pEventData
27062)
27063{
Jeff Johnson295189b2012-06-20 16:38:30 -070027064 eHalStatus halStatus;
27065 WDI_ReceiveFilterClearFilterCb wdiReceiveFilterClearFilterCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027066 tHalRcvFltPktClearParam halRcvFltPktClearRspMsg;
27067 WDI_RcvFltPktClearRspParamsType wdiRcvFltPktClearRspParamsType;
Jeff Johnson295189b2012-06-20 16:38:30 -070027068 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27069
27070 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027071 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027072
27073 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027074 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070027075 -------------------------------------------------------------------------*/
27076 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
27077 ( NULL == pEventData->pEventData ))
27078 {
27079 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027080 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027081 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070027082 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070027083 }
27084
27085 wdiReceiveFilterClearFilterCb = (WDI_ReceiveFilterClearFilterCb)pWDICtx->
Jeff Johnsone7245742012-09-05 17:12:55 -070027086 pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070027087
27088 /*-------------------------------------------------------------------------
27089 Extract response and send it to UMAC
27090 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027091 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
27092 {
27093 wpalMemoryCopy( &halRcvFltPktClearRspMsg,
27094 pEventData->pEventData,
27095 sizeof(halRcvFltPktClearRspMsg));
27096
27097 wdiRcvFltPktClearRspParamsType.wdiStatus =
27098 WDI_HAL_2_WDI_STATUS(halRcvFltPktClearRspMsg.status);
27099 wdiRcvFltPktClearRspParamsType.bssIdx =
27100 halRcvFltPktClearRspMsg.bssIdx;
27101 }
27102 else
27103 {
27104 halStatus = *((eHalStatus*)pEventData->pEventData);
27105 wdiRcvFltPktClearRspParamsType.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
27106 }
Jeff Johnson295189b2012-06-20 16:38:30 -070027107
27108 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027109 wdiReceiveFilterClearFilterCb(&wdiRcvFltPktClearRspParamsType, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070027110
Jeff Johnsone7245742012-09-05 17:12:55 -070027111 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070027112}
27113#endif // WLAN_FEATURE_PACKET_FILTERING
27114
27115/**
27116 @brief Process Shutdown Rsp function
27117 There is no shutdown response comming from HAL
27118 - function just kept for simmetry
Jeff Johnsone7245742012-09-05 17:12:55 -070027119
Jeff Johnson295189b2012-06-20 16:38:30 -070027120 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnsone7245742012-09-05 17:12:55 -070027121 pEventData: pointer to the event information structure
Jeff Johnson295189b2012-06-20 16:38:30 -070027122
27123 @see
27124 @return Result of the function call
27125*/
27126WDI_Status
27127WDI_ProcessShutdownRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070027128(
Jeff Johnson295189b2012-06-20 16:38:30 -070027129 WDI_ControlBlockType* pWDICtx,
27130 WDI_EventInfoType* pEventData
27131)
27132{
27133 /*There is no shutdown response comming from HAL - function just kept for
27134 simmetry */
27135 WDI_ASSERT(0);
27136 return WDI_STATUS_SUCCESS;
27137}/*WDI_ProcessShutdownRsp*/
27138
27139/**
27140 @brief WDI_SetPowerParamsReq
27141
Jeff Johnsone7245742012-09-05 17:12:55 -070027142 @param pwdiPowerParamsReqParams: the Set Power Params as
Jeff Johnson295189b2012-06-20 16:38:30 -070027143 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -070027144
Jeff Johnson295189b2012-06-20 16:38:30 -070027145 wdiPowerParamsCb: callback for passing back the response
27146 of the Set Power Params operation received from the
27147 device
Jeff Johnsone7245742012-09-05 17:12:55 -070027148
Jeff Johnson295189b2012-06-20 16:38:30 -070027149 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -070027150 callback
27151
Jeff Johnson295189b2012-06-20 16:38:30 -070027152 @return Result of the function call
27153*/
Jeff Johnsone7245742012-09-05 17:12:55 -070027154WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070027155WDI_SetPowerParamsReq
27156(
27157 WDI_SetPowerParamsReqParamsType* pwdiPowerParamsReqParams,
27158 WDI_SetPowerParamsCb wdiPowerParamsCb,
27159 void* pUserData
27160)
27161{
27162 WDI_EventInfoType wdiEventData;
27163 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27164
27165 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027166 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070027167 ------------------------------------------------------------------------*/
27168 if ( eWLAN_PAL_FALSE == gWDIInitialized )
27169 {
27170 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
27171 "WDI API call before module is initialized - Fail request");
27172
Jeff Johnsone7245742012-09-05 17:12:55 -070027173 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070027174 }
27175
27176 /*------------------------------------------------------------------------
27177 Fill in Event data and post to the Main FSM
27178 ------------------------------------------------------------------------*/
27179 wdiEventData.wdiRequest = WDI_SET_POWER_PARAMS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070027180 wdiEventData.pEventData = pwdiPowerParamsReqParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070027181 wdiEventData.uEventDataSize = sizeof(*pwdiPowerParamsReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -070027182 wdiEventData.pCBfnc = wdiPowerParamsCb;
Jeff Johnson295189b2012-06-20 16:38:30 -070027183 wdiEventData.pUserData = pUserData;
27184
27185 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
27186}/*WDI_SetPowerParamsReq*/
27187
27188/**
27189 @brief Process Set Power Params Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070027190
27191 @param pWDICtx: pointer to the WLAN DAL context
27192 pEventData: pointer to the event information structure
27193
Jeff Johnson295189b2012-06-20 16:38:30 -070027194 @see
27195 @return Result of the function call
27196*/
27197WDI_Status
27198WDI_ProcessSetPowerParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070027199(
Jeff Johnson295189b2012-06-20 16:38:30 -070027200 WDI_ControlBlockType* pWDICtx,
27201 WDI_EventInfoType* pEventData
27202)
27203{
27204 WDI_SetPowerParamsReqParamsType* pwdiPowerParamsReqParams = NULL;
27205 WDI_SetPowerParamsCb wdiPowerParamsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070027206 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070027207 wpt_uint16 usDataOffset = 0;
27208 wpt_uint16 usSendSize = 0;
27209 tSetPowerParamsType powerParams;
27210
27211 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027212 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070027213 -------------------------------------------------------------------------*/
27214 if (( NULL == pEventData ) ||
27215 ( NULL == (pwdiPowerParamsReqParams = (WDI_SetPowerParamsReqParamsType*)pEventData->pEventData)) ||
27216 ( NULL == (wdiPowerParamsCb = (WDI_SetPowerParamsCb)pEventData->pCBfnc)))
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
27224 /*-----------------------------------------------------------------------
27225 Get message buffer
27226 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070027227 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_POWER_PARAMS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070027228 sizeof(powerParams),
27229 &pSendBuffer, &usDataOffset, &usSendSize))||
27230 ( usSendSize < (usDataOffset + sizeof(powerParams) )))
27231 {
27232 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080027233 "Unable to get send buffer in Set PNO req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070027234 pEventData, pwdiPowerParamsReqParams, wdiPowerParamsCb);
27235 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070027236 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070027237 }
27238
27239 /* Ignore DTIM */
Jeff Johnsone7245742012-09-05 17:12:55 -070027240 powerParams.uIgnoreDTIM =
Jeff Johnson295189b2012-06-20 16:38:30 -070027241 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uIgnoreDTIM;
27242
27243 /*DTIM Period*/
Jeff Johnsone7245742012-09-05 17:12:55 -070027244 powerParams.uDTIMPeriod =
Jeff Johnson295189b2012-06-20 16:38:30 -070027245 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uDTIMPeriod;
27246
27247 /* Listen Interval */
Jeff Johnsone7245742012-09-05 17:12:55 -070027248 powerParams.uListenInterval=
Jeff Johnson295189b2012-06-20 16:38:30 -070027249 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uListenInterval;
27250
27251 /* Broadcast Multicas Filter */
Jeff Johnsone7245742012-09-05 17:12:55 -070027252 powerParams.uBcastMcastFilter =
Jeff Johnson295189b2012-06-20 16:38:30 -070027253 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uBcastMcastFilter;
27254
27255 /* Beacon Early Termination */
Jeff Johnsone7245742012-09-05 17:12:55 -070027256 powerParams.uEnableBET =
Jeff Johnson295189b2012-06-20 16:38:30 -070027257 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uEnableBET;
27258
27259 /* Beacon Early Termination Interval */
Jeff Johnsone7245742012-09-05 17:12:55 -070027260 powerParams.uBETInterval =
27261 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uBETInterval;
Jeff Johnson295189b2012-06-20 16:38:30 -070027262
Yue Mac24062f2013-05-13 17:01:29 -070027263 /* MAX LI for modulated DTIM */
27264 powerParams.uMaxLIModulatedDTIM =
27265 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uMaxLIModulatedDTIM;
Jeff Johnsone7245742012-09-05 17:12:55 -070027266
27267 wpalMemoryCopy( pSendBuffer+usDataOffset,
27268 &powerParams,
27269 sizeof(powerParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070027270
27271 pWDICtx->wdiReqStatusCB = pwdiPowerParamsReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070027272 pWDICtx->pReqStatusUserData = pwdiPowerParamsReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070027273
27274 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027275 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070027276 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070027277 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
27278 wdiPowerParamsCb, pEventData->pUserData, WDI_SET_POWER_PARAMS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070027279}
27280
27281/**
27282 @brief Process Power Params Rsp function (called when a
27283 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070027284
27285 @param pWDICtx: pointer to the WLAN DAL context
27286 pEventData: pointer to the event information structure
27287
Jeff Johnson295189b2012-06-20 16:38:30 -070027288 @see
27289 @return Result of the function call
27290*/
27291WDI_Status
27292WDI_ProcessSetPowerParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070027293(
Jeff Johnson295189b2012-06-20 16:38:30 -070027294 WDI_ControlBlockType* pWDICtx,
27295 WDI_EventInfoType* pEventData
27296)
27297{
27298 WDI_Status wdiStatus;
27299 eHalStatus halStatus;
27300 WDI_SetPowerParamsCb wdiPowerParamsCb;
27301 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27302
27303 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027304 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070027305 -------------------------------------------------------------------------*/
27306 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
27307 ( NULL == pEventData->pEventData ))
27308 {
27309 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027310 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027311 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070027312 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070027313 }
27314
Jeff Johnsone7245742012-09-05 17:12:55 -070027315 wdiPowerParamsCb = (WDI_SetPowerParamsCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070027316
27317 /*-------------------------------------------------------------------------
27318 Extract response and send it to UMAC
27319 -------------------------------------------------------------------------*/
27320 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070027321 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070027322
27323 /*Notify UMAC*/
27324 wdiPowerParamsCb(wdiStatus, pWDICtx->pRspCBUserData);
27325
Jeff Johnsone7245742012-09-05 17:12:55 -070027326 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070027327}/*WDI_ProcessSetPowerParamsRsp*/
27328
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +053027329/**
27330 @brief WDI_dhcpStartInd
27331 Host will send an event to the FW when DHCP is initiated
27332
27333 @param
27334 WDI_DHCPInd: DHCP Indication
27335 @see
27336 @return Result of the function call
27337*/
27338WDI_Status
27339WDI_dhcpStartInd
27340(
27341 WDI_DHCPInd *wdiDHCPInd
27342)
27343{
27344 WDI_EventInfoType wdiEventData;
27345
27346 /*------------------------------------------------------------------------
27347 Sanity Check
27348 ------------------------------------------------------------------------*/
27349 if ( eWLAN_PAL_FALSE == gWDIInitialized )
27350 {
27351 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
27352 "WDI API call before module is initialized - Fail request");
27353
27354 return WDI_STATUS_E_NOT_ALLOWED;
27355 }
27356
27357 wdiEventData.wdiRequest = WDI_DHCP_START_IND;
27358 wdiEventData.pEventData = wdiDHCPInd;
c_hpothu0b0cab72014-02-13 21:52:40 +053027359 wdiEventData.uEventDataSize = sizeof(WDI_DHCPInd);
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +053027360 wdiEventData.pCBfnc = NULL;
27361 wdiEventData.pUserData = NULL;
27362
27363 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
27364}
27365
27366
27367/**
27368 @brief WDI_dhcpStopInd
27369 Host will send an event to the FW when DHCP is completed
27370
27371 @param
27372 WDI_DHCPInd: DHCP Indication
27373 @see
27374 @return Result of the function call
27375*/
27376WDI_Status
27377WDI_dhcpStopInd
27378(
27379 WDI_DHCPInd *wdiDHCPInd
27380)
27381{
27382 WDI_EventInfoType wdiEventData;
27383
27384 /*------------------------------------------------------------------------
27385 Sanity Check
27386 ------------------------------------------------------------------------*/
27387 if ( eWLAN_PAL_FALSE == gWDIInitialized )
27388 {
27389 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
27390 "WDI API call before module is initialized - Fail request");
27391
27392 return WDI_STATUS_E_NOT_ALLOWED;
27393 }
27394
27395 wdiEventData.wdiRequest = WDI_DHCP_STOP_IND;
27396 wdiEventData.pEventData = wdiDHCPInd;
c_hpothu0b0cab72014-02-13 21:52:40 +053027397 wdiEventData.uEventDataSize = sizeof(WDI_DHCPInd);
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +053027398 wdiEventData.pCBfnc = NULL;
27399 wdiEventData.pUserData = NULL;
27400
27401 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
27402}
27403
27404
27405/**
27406 @brief Process DHCP Start Indication message and post it to HAL
27407
27408 @param pWDICtx: pointer to the WLAN DAL context
27409 pEventData: pointer to the event information structure
27410
27411 @see
27412 @return Result of the function call
27413*/
27414WDI_Status
27415WDI_ProcessDHCPStartInd
27416(
27417 WDI_ControlBlockType* pWDICtx,
27418 WDI_EventInfoType* pEventData
27419)
27420{
27421 wpt_uint8* pSendBuffer = NULL;
27422 wpt_uint16 usDataOffset = 0;
27423 wpt_uint16 usSendSize = 0;
27424 wpt_uint16 usLen = 0;
27425 WDI_DHCPInd* pwdiDHCPInd = NULL;
27426 tDHCPInfo* pDHCPInfo;
Sandeep Puligillaee789512014-02-13 19:14:52 +053027427 WDI_Status wdiStatus;
27428
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +053027429
27430 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27431
27432 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
27433 "%s", __func__);
27434
27435 /*-------------------------------------------------------------------------
27436 Sanity check
27437 -------------------------------------------------------------------------*/
27438 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
27439 {
27440 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
27441 "%s: Invalid parameters", __func__);
27442 WDI_ASSERT(0);
27443 return WDI_STATUS_E_FAILURE;
27444 }
27445 pwdiDHCPInd = (WDI_DHCPInd*)pEventData->pEventData;
27446 /*-----------------------------------------------------------------------
27447 Get message buffer
27448 -----------------------------------------------------------------------*/
27449
27450 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
27451 WDI_DHCP_START_IND,
27452 sizeof(tDHCPInfo),
27453 &pSendBuffer, &usDataOffset, &usSendSize))||
27454 ( usSendSize < (usDataOffset + usLen )))
27455 {
27456 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
27457 "Unable to get send buffer in DHCP Start req %p ",
27458 pEventData);
27459 WDI_ASSERT(0);
27460 return WDI_STATUS_E_FAILURE;
27461 }
27462
Sandeep Puligillaee789512014-02-13 19:14:52 +053027463 pDHCPInfo = (tDHCPInfo*)(pSendBuffer+usDataOffset);
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +053027464 pDHCPInfo->device_mode = pwdiDHCPInd->device_mode;
27465 wpalMemoryCopy(pDHCPInfo->macAddr, pwdiDHCPInd->macAddr,
27466 WDI_MAC_ADDR_LEN);
27467
27468 pWDICtx->pReqStatusUserData = NULL;
27469 pWDICtx->pfncRspCB = NULL;
27470
27471 /*-------------------------------------------------------------------------
27472 Send DHCP Start Indication to HAL
27473 -------------------------------------------------------------------------*/
Sandeep Puligillaee789512014-02-13 19:14:52 +053027474 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
27475 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus:WDI_STATUS_SUCCESS_SYNC;
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +053027476}/*WDI_ProcessDHCPStartInd*/
27477
27478/**
27479 @brief Process DHCP Stop indication message and post it to HAL
27480
27481 @param pWDICtx: pointer to the WLAN DAL context
27482 pEventData: pointer to the event information structure
27483
27484 @see
27485 @return Result of the function call
27486*/
27487WDI_Status
27488WDI_ProcessDHCPStopInd
27489(
27490 WDI_ControlBlockType* pWDICtx,
27491 WDI_EventInfoType* pEventData
27492)
27493{
27494 wpt_uint8* pSendBuffer = NULL;
27495 wpt_uint16 usDataOffset = 0;
27496 wpt_uint16 usSendSize = 0;
27497 wpt_uint16 usLen = 0;
27498 WDI_DHCPInd* pwdiDHCPInd = NULL;
27499 tDHCPInfo* pDHCPInfo;
Sandeep Puligillaee789512014-02-13 19:14:52 +053027500 WDI_Status wdiStatus;
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +053027501
27502 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27503
27504 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
27505 "%s", __func__);
27506
27507 /*-------------------------------------------------------------------------
27508 Sanity check
27509 -------------------------------------------------------------------------*/
27510
27511 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
27512 {
27513 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
27514 "%s: Invalid parameters", __func__);
27515 WDI_ASSERT(0);
27516 return WDI_STATUS_E_FAILURE;
27517 }
27518 pwdiDHCPInd = (WDI_DHCPInd*)pEventData->pEventData;
27519 /*-----------------------------------------------------------------------
27520 Get message buffer
27521 -----------------------------------------------------------------------*/
27522
27523 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
27524 WDI_DHCP_STOP_IND,
27525 sizeof(tDHCPInfo),
27526 &pSendBuffer, &usDataOffset, &usSendSize))||
27527 ( usSendSize < (usDataOffset + usLen )))
27528 {
27529 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
27530 "Unable to get send buffer in DHCP Start req %p ",
27531 pEventData);
27532 WDI_ASSERT(0);
27533 return WDI_STATUS_E_FAILURE;
27534 }
27535
Sandeep Puligillaee789512014-02-13 19:14:52 +053027536 pDHCPInfo = (tDHCPInfo*)(pSendBuffer+usDataOffset);
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +053027537 pDHCPInfo->device_mode = pwdiDHCPInd->device_mode;
27538 wpalMemoryCopy(pDHCPInfo->macAddr, pwdiDHCPInd->macAddr,
27539 WDI_MAC_ADDR_LEN);
27540
27541 pWDICtx->pReqStatusUserData = NULL;
27542 pWDICtx->pfncRspCB = NULL;
27543 /*-------------------------------------------------------------------------
27544 Send DHCP Stop indication to HAL
27545 -------------------------------------------------------------------------*/
Sandeep Puligillaee789512014-02-13 19:14:52 +053027546 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
27547 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus:WDI_STATUS_SUCCESS_SYNC;
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +053027548
27549}/*WDI_ProcessDHCPStopInd*/
27550
27551
Jeff Johnson295189b2012-06-20 16:38:30 -070027552#ifdef WLAN_FEATURE_GTK_OFFLOAD
27553/**
27554 @brief WDI_GTKOffloadReq will be called when the upper MAC
27555 wants to set GTK Rekey Counter while in power save. Upon
27556 the call of this API the WLAN DAL will pack and send a
27557 HAL GTK offload request message to the lower RIVA
27558 sub-system if DAL is in state STARTED.
27559
27560 In state BUSY this request will be queued. Request won't
27561 be allowed in any other state.
27562
27563 WDI_PostAssocReq must have been called.
27564
27565 @param pwdiGtkOffloadParams: the GTK offload as specified
27566 by the Device Interface
27567
27568 wdiGtkOffloadCb: callback for passing back the response
27569 of the GTK offload operation received from the device
27570
27571 pUserData: user data will be passed back with the
27572 callback
27573
27574 @see WDI_PostAssocReq
27575 @return Result of the function call
27576*/
27577WDI_Status
27578WDI_GTKOffloadReq
27579(
27580 WDI_GtkOffloadReqMsg* pwdiGtkOffloadReqMsg,
27581 WDI_GtkOffloadCb wdiGtkOffloadCb,
27582 void* pUserData
27583)
27584{
Gopichand Nakkala870cbae2013-03-15 21:16:09 +053027585 WDI_EventInfoType wdiEventData;
Jeff Johnson295189b2012-06-20 16:38:30 -070027586 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27587
27588 /*------------------------------------------------------------------------
27589 Sanity Check
27590 ------------------------------------------------------------------------*/
27591 if ( eWLAN_PAL_FALSE == gWDIInitialized )
27592 {
27593 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
27594 "WDI API call before module is initialized - Fail request");
27595
27596 return WDI_STATUS_E_NOT_ALLOWED;
27597 }
27598
27599 /*------------------------------------------------------------------------
27600 Fill in Event data and post to the Main FSM
27601 ------------------------------------------------------------------------*/
27602 wdiEventData.wdiRequest = WDI_GTK_OFFLOAD_REQ;
27603 wdiEventData.pEventData = pwdiGtkOffloadReqMsg;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -070027604 wdiEventData.uEventDataSize = sizeof(*pwdiGtkOffloadReqMsg);
Jeff Johnson295189b2012-06-20 16:38:30 -070027605 wdiEventData.pCBfnc = wdiGtkOffloadCb;
27606 wdiEventData.pUserData = pUserData;
27607
27608 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
27609}
27610
27611
27612/**
27613 @brief WDI_GTKOffloadGetInfoReq will be called when the upper
27614 MAC wants to get GTK Rekey Counter while in power save.
27615 Upon the call of this API the WLAN DAL will pack and
27616 send a HAL GTK offload request message to the lower RIVA
27617 sub-system if DAL is in state STARTED.
27618
27619 In state BUSY this request will be queued. Request won't
27620 be allowed in any other state.
27621
27622 WDI_PostAssocReq must have been called.
27623
27624 @param pwdiGtkOffloadGetInfoReqMsg: the GTK Offload
27625 Information Message as specified by the
27626 Device Interface
27627
27628 wdiGtkOffloadGetInfoCb: callback for passing back the
27629 response of the GTK offload operation received from the
27630 device
27631
27632 pUserData: user data will be passed back with the
27633 callback
27634
27635 @see WDI_PostAssocReq
27636 @return Result of the function call
27637*/
27638WDI_Status
27639WDI_GTKOffloadGetInfoReq
27640(
27641 WDI_GtkOffloadGetInfoReqMsg* pwdiGtkOffloadGetInfoReqMsg,
27642 WDI_GtkOffloadGetInfoCb wdiGtkOffloadGetInfoCb,
27643 void* pUserData
27644)
27645{
Gopichand Nakkala870cbae2013-03-15 21:16:09 +053027646 WDI_EventInfoType wdiEventData;
Jeff Johnson295189b2012-06-20 16:38:30 -070027647 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27648
27649 /*------------------------------------------------------------------------
27650 Sanity Check
27651 ------------------------------------------------------------------------*/
27652 if ( eWLAN_PAL_FALSE == gWDIInitialized )
27653 {
27654 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
27655 "WDI API call before module is initialized - Fail request");
27656
27657 return WDI_STATUS_E_NOT_ALLOWED;
27658 }
27659
27660 /*------------------------------------------------------------------------
27661 Fill in Event data and post to the Main FSM
27662 ------------------------------------------------------------------------*/
27663 wdiEventData.wdiRequest = WDI_GTK_OFFLOAD_GETINFO_REQ;
27664 wdiEventData.pEventData = pwdiGtkOffloadGetInfoReqMsg;
27665 wdiEventData.uEventDataSize = sizeof(*pwdiGtkOffloadGetInfoReqMsg);
27666 wdiEventData.pCBfnc = wdiGtkOffloadGetInfoCb;
27667 wdiEventData.pUserData = pUserData;
27668
27669 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
27670}
27671
27672
27673/**
27674 @brief Process set GTK Offload Request function
27675
27676 @param pWDICtx: pointer to the WLAN DAL context
27677 pEventData: pointer to the event information structure
27678
27679 @see
27680 @return Result of the function call
27681*/
27682WDI_Status
27683WDI_ProcessGTKOffloadReq
27684(
27685 WDI_ControlBlockType* pWDICtx,
27686 WDI_EventInfoType* pEventData
27687)
27688{
27689 WDI_GtkOffloadReqMsg* pwdiGtkOffloadReqMsg = NULL;
27690 WDI_GtkOffloadCb wdiGtkOffloadCb = NULL;
27691 wpt_uint8* pSendBuffer = NULL;
27692 wpt_uint16 usDataOffset = 0;
27693 wpt_uint16 usSendSize = 0;
27694 tHalGtkOffloadReqParams gtkOffloadReqParams = {0};
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027695 wpt_uint8 ucCurrentSessionId = 0;
27696 WDI_BSSSessionType* pBSSSes = NULL;
27697
Jeff Johnson295189b2012-06-20 16:38:30 -070027698 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27699
27700 /*-------------------------------------------------------------------------
27701 Sanity check
27702 -------------------------------------------------------------------------*/
27703 if (( NULL == pEventData ) ||
27704 ( NULL == (pwdiGtkOffloadReqMsg = (WDI_GtkOffloadReqMsg*)pEventData->pEventData)) ||
27705 ( NULL == (wdiGtkOffloadCb = (WDI_GtkOffloadCb)pEventData->pCBfnc)))
27706 {
27707 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027708 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027709 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080027710 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070027711 }
27712
27713 /*-----------------------------------------------------------------------
27714 Get message buffer
27715 -----------------------------------------------------------------------*/
27716 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_GTK_OFFLOAD_REQ,
27717 sizeof(gtkOffloadReqParams),
27718 &pSendBuffer, &usDataOffset, &usSendSize))||
27719 ( usSendSize < (usDataOffset + sizeof(gtkOffloadReqParams) )))
27720 {
27721 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080027722 "Unable to get send buffer in GTK offload req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070027723 pEventData, pwdiGtkOffloadReqMsg, wdiGtkOffloadCb);
27724 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080027725 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070027726 }
27727
27728 //
27729 // Fill gtkOffloadReqParams from pwdiGtkOffloadReqMsg->gtkOffloadReqParams
27730 //
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027731 ucCurrentSessionId = WDI_FindAssocSession( pWDICtx,
27732 pwdiGtkOffloadReqMsg->gtkOffloadReqParams.bssId,
27733 &pBSSSes);
27734 if ( NULL == pBSSSes )
27735 {
27736 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027737 " %s : Association for this BSSID does not exist", __func__);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080027738 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027739 }
27740
27741 gtkOffloadReqParams.bssIdx = pBSSSes->ucBSSIdx;
27742
Jeff Johnson295189b2012-06-20 16:38:30 -070027743 gtkOffloadReqParams.ulFlags = pwdiGtkOffloadReqMsg->gtkOffloadReqParams.ulFlags;
27744 // Copy KCK
27745 wpalMemoryCopy(&(gtkOffloadReqParams.aKCK[0]), &(pwdiGtkOffloadReqMsg->gtkOffloadReqParams.aKCK[0]), 16);
27746 // Copy KEK
27747 wpalMemoryCopy(&(gtkOffloadReqParams.aKEK[0]), &(pwdiGtkOffloadReqMsg->gtkOffloadReqParams.aKEK[0]), 16);
27748 // Copy KeyReplayCounter
27749 wpalMemoryCopy(&(gtkOffloadReqParams.ullKeyReplayCounter), &(pwdiGtkOffloadReqMsg->gtkOffloadReqParams.ullKeyReplayCounter), sizeof(v_U64_t));
27750
27751 wpalMemoryCopy( pSendBuffer+usDataOffset,
27752 &gtkOffloadReqParams,
27753 sizeof(gtkOffloadReqParams));
27754
27755 pWDICtx->wdiReqStatusCB = pwdiGtkOffloadReqMsg->wdiReqStatusCB;
27756 pWDICtx->pReqStatusUserData = pwdiGtkOffloadReqMsg->pUserData;
27757
27758 /*-------------------------------------------------------------------------
27759 Send Get STA Request to HAL
27760 -------------------------------------------------------------------------*/
27761 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
27762 wdiGtkOffloadCb, pEventData->pUserData, WDI_GTK_OFFLOAD_RESP);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080027763
27764fail:
27765 // Release the message buffer so we don't leak
27766 wpalMemoryFree(pSendBuffer);
27767
27768failRequest:
27769 //WDA should have failure check to avoid the memory leak
27770 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070027771}
27772
27773
27774/**
27775 @brief Process GTK Offload Get Information Request function
27776
27777 @param pWDICtx: pointer to the WLAN DAL context
27778 pEventData: pointer to the event information structure
27779
27780 @see
27781 @return Result of the function call
27782*/
27783WDI_Status
27784WDI_ProcessGTKOffloadGetInfoReq
27785(
27786 WDI_ControlBlockType* pWDICtx,
27787 WDI_EventInfoType* pEventData
27788)
27789{
27790 WDI_GtkOffloadGetInfoReqMsg* pwdiGtkOffloadGetInfoReqMsg = NULL;
27791 WDI_GtkOffloadGetInfoCb wdiGtkOffloadGetInfoCb = NULL;
27792 wpt_uint8* pSendBuffer = NULL;
27793 wpt_uint16 usDataOffset = 0;
27794 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027795 tHalGtkOffloadGetInfoReqParams halGtkOffloadGetInfoReqParams;
27796 wpt_uint8 ucCurrentSessionId = 0;
27797 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070027798
27799 /*-------------------------------------------------------------------------
27800 Sanity check
27801 -------------------------------------------------------------------------*/
27802 if (( NULL == pEventData ) ||
27803 ( NULL == (pwdiGtkOffloadGetInfoReqMsg = (WDI_GtkOffloadGetInfoReqMsg*)pEventData->pEventData)) ||
27804 ( NULL == (wdiGtkOffloadGetInfoCb = (WDI_GtkOffloadGetInfoCb)pEventData->pCBfnc)))
27805 {
27806 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027807 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027808 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080027809 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070027810 }
27811
27812 /*-----------------------------------------------------------------------
27813 Get message buffer
27814 -----------------------------------------------------------------------*/
27815 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_GTK_OFFLOAD_GETINFO_REQ,
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027816 sizeof(halGtkOffloadGetInfoReqParams),
Jeff Johnson295189b2012-06-20 16:38:30 -070027817 &pSendBuffer, &usDataOffset, &usSendSize))||
Gopichand Nakkala870cbae2013-03-15 21:16:09 +053027818 ( usSendSize < ( usDataOffset + sizeof(halGtkOffloadGetInfoReqParams))))
Jeff Johnson295189b2012-06-20 16:38:30 -070027819 {
27820 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080027821 "Unable to get send buffer in WDI_ProcessGTKOffloadGetInfoReq() %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070027822 pEventData, pwdiGtkOffloadGetInfoReqMsg, wdiGtkOffloadGetInfoCb);
27823 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080027824 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070027825 }
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027826 ucCurrentSessionId = WDI_FindAssocSession( pWDICtx,
27827 pwdiGtkOffloadGetInfoReqMsg->WDI_GtkOffloadGetInfoReqParams.bssId,
27828 &pBSSSes);
27829 if ( NULL == pBSSSes )
27830 {
27831 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027832 " %s : Association for this BSSID does not exist",__func__);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080027833 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027834 }
27835 halGtkOffloadGetInfoReqParams.bssIdx = pBSSSes->ucBSSIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070027836
27837 //
27838 // Don't need to fill send buffer other than header
27839 //
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027840 wpalMemoryCopy( pSendBuffer+usDataOffset,
27841 &halGtkOffloadGetInfoReqParams,
27842 sizeof(halGtkOffloadGetInfoReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070027843
27844 pWDICtx->wdiReqStatusCB = pwdiGtkOffloadGetInfoReqMsg->wdiReqStatusCB;
27845 pWDICtx->pReqStatusUserData = pwdiGtkOffloadGetInfoReqMsg->pUserData;
27846
27847 /*-------------------------------------------------------------------------
27848 Send Get STA Request to HAL
27849 -------------------------------------------------------------------------*/
27850 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
27851 wdiGtkOffloadGetInfoCb, pEventData->pUserData, WDI_GTK_OFFLOAD_GETINFO_RESP);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080027852fail:
27853 // Release the message buffer so we don't leak
27854 wpalMemoryFree(pSendBuffer);
27855
27856failRequest:
27857 //WDA should have failure check to avoid the memory leak
27858 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070027859}
27860
27861/**
27862 @brief Process host offload Rsp function (called when a
27863 response is being received over the bus from HAL)
27864
27865 @param pWDICtx: pointer to the WLAN DAL context
27866 pEventData: pointer to the event information structure
27867
27868 @see
27869 @return Result of the function call
27870*/
27871WDI_Status
27872WDI_ProcessGtkOffloadRsp
27873(
27874 WDI_ControlBlockType* pWDICtx,
27875 WDI_EventInfoType* pEventData
27876)
27877{
Jeff Johnson295189b2012-06-20 16:38:30 -070027878 eHalStatus halStatus;
27879 WDI_GtkOffloadCb wdiGtkOffloadCb = NULL;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027880 tHalGtkOffloadRspParams halGtkOffloadRspParams;
27881 WDI_GtkOffloadRspParams wdiGtkOffloadRsparams;
Jeff Johnson295189b2012-06-20 16:38:30 -070027882
27883 /*-------------------------------------------------------------------------
27884 Sanity check
27885 -------------------------------------------------------------------------*/
27886 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
27887 ( NULL == pEventData->pEventData))
27888 {
27889 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027890 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027891 WDI_ASSERT(0);
27892 return WDI_STATUS_E_FAILURE;
27893 }
27894
Wilson Yang00256342013-10-10 23:13:38 -070027895 wdiGtkOffloadCb = (WDI_GtkOffloadCb)pWDICtx->pfncRspCB;
27896
Jeff Johnson295189b2012-06-20 16:38:30 -070027897 /*-------------------------------------------------------------------------
27898 Extract response and send it to UMAC
27899 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027900 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
27901 {
27902 wpalMemoryCopy( &halGtkOffloadRspParams,
27903 pEventData->pEventData,
27904 sizeof(halGtkOffloadRspParams));
27905
27906 wdiGtkOffloadRsparams.ulStatus =
Gopichand Nakkala870cbae2013-03-15 21:16:09 +053027907 WDI_HAL_2_WDI_STATUS(halGtkOffloadRspParams.ulStatus);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027908 wdiGtkOffloadRsparams.bssIdx =
27909 halGtkOffloadRspParams.bssIdx;
27910 }
27911 else
27912 {
27913 halStatus = *((eHalStatus*)pEventData->pEventData);
27914 wdiGtkOffloadRsparams.ulStatus = WDI_HAL_2_WDI_STATUS(halStatus);
27915 }
Jeff Johnson295189b2012-06-20 16:38:30 -070027916
27917 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027918 wdiGtkOffloadCb( &wdiGtkOffloadRsparams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070027919
27920 return WDI_STATUS_SUCCESS;
27921}
27922
27923/**
27924 @brief Process GTK Offload Get Information Response function
27925
27926 @param pWDICtx: pointer to the WLAN DAL context
27927 pEventData: pointer to the event information structure
27928
27929 @see
27930 @return Result of the function call
27931*/
27932WDI_Status
27933WDI_ProcessGTKOffloadGetInfoRsp
27934(
27935 WDI_ControlBlockType* pWDICtx,
27936 WDI_EventInfoType* pEventData
27937)
27938{
Jeff Johnson295189b2012-06-20 16:38:30 -070027939 eHalStatus halStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070027940 WDI_GtkOffloadGetInfoCb wdiGtkOffloadGetInfoCb = NULL;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027941 tHalGtkOffloadGetInfoRspParams halGtkOffloadGetInfoRspParams;
27942 WDI_GtkOffloadGetInfoRspParams wdiGtkOffloadGetInfoRsparams;
Gopichand Nakkala870cbae2013-03-15 21:16:09 +053027943 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070027944
Jeff Johnson295189b2012-06-20 16:38:30 -070027945
27946 /*-------------------------------------------------------------------------
27947 Sanity check
27948 -------------------------------------------------------------------------*/
27949 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
27950 ( NULL == pEventData->pEventData ))
27951 {
27952 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027953 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027954 WDI_ASSERT(0);
27955 return WDI_STATUS_E_FAILURE;
27956 }
27957
Wilson Yang00256342013-10-10 23:13:38 -070027958 wdiGtkOffloadGetInfoCb = (WDI_GtkOffloadGetInfoCb)pWDICtx->pfncRspCB;
27959
27960 /*-------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -070027961 Extract response and send it to UMAC
27962 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027963 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
27964 {
27965 wpalMemoryCopy( &halGtkOffloadGetInfoRspParams,
27966 pEventData->pEventData,
27967 sizeof(halGtkOffloadGetInfoRspParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070027968
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027969 wdiGtkOffloadGetInfoRsparams.ulStatus =
Gopichand Nakkala870cbae2013-03-15 21:16:09 +053027970 WDI_HAL_2_WDI_STATUS(halGtkOffloadGetInfoRspParams.ulStatus);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027971 wdiGtkOffloadGetInfoRsparams.ullKeyReplayCounter =
27972 halGtkOffloadGetInfoRspParams.ullKeyReplayCounter;
27973 wdiGtkOffloadGetInfoRsparams.ulTotalRekeyCount =
27974 halGtkOffloadGetInfoRspParams.ulTotalRekeyCount;
27975 wdiGtkOffloadGetInfoRsparams.ulGTKRekeyCount =
27976 halGtkOffloadGetInfoRspParams.ulGTKRekeyCount;
27977 wdiGtkOffloadGetInfoRsparams.ulIGTKRekeyCount =
27978 halGtkOffloadGetInfoRspParams.ulIGTKRekeyCount;
Gopichand Nakkala870cbae2013-03-15 21:16:09 +053027979
27980 wpalMutexAcquire(&pWDICtx->wptMutex);
27981 WDI_FindAssocSessionByBSSIdx(pWDICtx, halGtkOffloadGetInfoRspParams.bssIdx,
27982 &pBSSSes);
27983
27984 if ( NULL == pBSSSes )
27985 {
27986 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
27987 "Association sequence for this BSS does not exist or "
27988 "association no longer in progress - mysterious HAL response");
27989 wpalMutexRelease(&pWDICtx->wptMutex);
27990 return WDI_STATUS_E_NOT_ALLOWED;
27991 }
27992
27993 wpalMemoryCopy(wdiGtkOffloadGetInfoRsparams.bssId, pBSSSes->macBSSID,
27994 sizeof (wpt_macAddr));
27995 wpalMutexRelease(&pWDICtx->wptMutex);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027996 }
27997 else
27998 {
27999 halStatus = *((eHalStatus*)pEventData->pEventData);
28000 wdiGtkOffloadGetInfoRsparams.ulStatus = WDI_HAL_2_WDI_STATUS(halStatus);
28001 }
Jeff Johnson295189b2012-06-20 16:38:30 -070028002 /*Notify UMAC*/
28003 //wdiUpdateScanParamsCb(wdiStatus, pWDICtx->pRspCBUserData);
28004 //wdiReceiveFilterClearFilterCb(wdiStatus, pWDICtx->pRspCBUserData);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028005 wdiGtkOffloadGetInfoCb(&wdiGtkOffloadGetInfoRsparams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070028006
28007 return WDI_STATUS_SUCCESS;
28008}
28009#endif // WLAN_FEATURE_GTK_OFFLOAD
28010
28011#ifdef WLAN_WAKEUP_EVENTS
28012WDI_Status
28013WDI_ProcessWakeReasonInd
28014(
28015 WDI_ControlBlockType* pWDICtx,
28016 WDI_EventInfoType* pEventData
28017)
28018{
28019 WDI_LowLevelIndType *pWdiInd;
28020 tpWakeReasonParams pWakeReasonParams;
28021 wpt_uint32 allocSize = 0;
28022
28023 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028024 "+%s", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028025
28026 /*-------------------------------------------------------------------------
28027 Sanity check
28028 -------------------------------------------------------------------------*/
28029 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
28030 ( NULL == pEventData->pEventData ))
28031 {
28032 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028033 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028034 WDI_ASSERT( 0 );
28035 return WDI_STATUS_E_FAILURE;
28036 }
28037
28038 /*-------------------------------------------------------------------------
28039 Extract indication and send it to UMAC
28040 -------------------------------------------------------------------------*/
28041 pWakeReasonParams = (tpWakeReasonParams)(pEventData->pEventData);
28042
28043 allocSize = sizeof(WDI_LowLevelIndType) + (pWakeReasonParams->ulStoredDataLen - 1);
28044
28045 //Allocate memory for WDI_WakeReasonIndType structure
28046 pWdiInd = wpalMemoryAllocate(allocSize) ;
28047
28048 if(NULL == pWdiInd)
28049 {
28050 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080028051 "%s: Failed to allocate memory for WDI_WakeReasonIndType: %p %p %p ",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028052 __func__, pWDICtx, pEventData, pEventData->pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070028053 WDI_ASSERT(0);
28054 return WDI_STATUS_E_FAILURE;
28055 }
28056
28057 wpalMemoryZero(pWdiInd, allocSize);
28058
28059 /* Fill in the indication parameters*/
28060 // Fill wdiInd.wdiIndicationData.wakeReasonInd structure from wakeReasonInd.wakeReasonParams
28061 pWdiInd->wdiIndicationType = WDI_WAKE_REASON_IND;
28062 pWdiInd->wdiIndicationData.wdiWakeReasonInd.ulReason = pWakeReasonParams->ulReason;
28063 pWdiInd->wdiIndicationData.wdiWakeReasonInd.ulReasonArg = pWakeReasonParams->ulReasonArg;
28064 pWdiInd->wdiIndicationData.wdiWakeReasonInd.ulStoredDataLen = pWakeReasonParams->ulStoredDataLen;
28065 pWdiInd->wdiIndicationData.wdiWakeReasonInd.ulActualDataLen = pWakeReasonParams->ulActualDataLen;
28066 wpalMemoryCopy( (void *)&(pWdiInd->wdiIndicationData.wdiWakeReasonInd.aDataStart[0]),
28067 &(pWakeReasonParams->aDataStart[0]),
28068 pWakeReasonParams->ulStoredDataLen);
28069
ltimariub77f24b2013-01-24 18:54:33 -080028070
28071 if ( pWDICtx->wdiLowLevelIndCB )
28072 {
28073 /*Notify UMAC*/
28074 pWDICtx->wdiLowLevelIndCB( pWdiInd, pWDICtx->pIndUserData );
28075 }
Jeff Johnson295189b2012-06-20 16:38:30 -070028076
28077 //Free memory allocated for WDI_WakeReasonIndType structure
28078 wpalMemoryFree(pWdiInd);
28079
28080 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028081 "-%s", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028082
28083 return WDI_STATUS_SUCCESS;
28084}
28085#endif // WLAN_WAKEUP_EVENTS
28086
28087void WDI_GetWcnssCompiledApiVersion
28088(
28089 WDI_WlanVersionType *pWcnssApiVersion
28090)
28091{
28092 pWcnssApiVersion->major = WLAN_HAL_VER_MAJOR;
28093 pWcnssApiVersion->minor = WLAN_HAL_VER_MINOR;
28094 pWcnssApiVersion->version = WLAN_HAL_VER_VERSION;
28095 pWcnssApiVersion->revision = WLAN_HAL_VER_REVISION;
28096}
28097
28098/**
28099 @brief Process Set TM Level Rsp function (called when a
28100 response is being received over the bus from HAL)
28101
28102 @param pWDICtx: pointer to the WLAN DAL context
28103 pEventData: pointer to the event information structure
28104
28105 @see
28106 @return Result of the function call
28107*/
28108WDI_Status
28109WDI_ProcessSetTmLevelRsp
28110(
28111 WDI_ControlBlockType* pWDICtx,
28112 WDI_EventInfoType* pEventData
28113)
28114{
28115 WDI_Status wdiStatus;
28116 eHalStatus halStatus;
28117 WDI_SetTmLevelCb wdiSetTmLevelCb;
28118 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28119
28120 /*-------------------------------------------------------------------------
28121 Sanity check
28122 -------------------------------------------------------------------------*/
28123 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
28124 ( NULL == pEventData->pEventData ))
28125 {
28126 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028127 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028128 WDI_ASSERT(0);
28129 return WDI_STATUS_E_FAILURE;
28130 }
28131
28132 wdiSetTmLevelCb = (WDI_SetPowerParamsCb)pWDICtx->pfncRspCB;
28133
28134 /*-------------------------------------------------------------------------
28135 Extract response and send it to UMAC
28136 -------------------------------------------------------------------------*/
28137 halStatus = *((eHalStatus*)pEventData->pEventData);
28138 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
28139
28140 /*Notify UMAC*/
28141 wdiSetTmLevelCb(wdiStatus, pWDICtx->pRspCBUserData);
28142
28143 return WDI_STATUS_SUCCESS;
28144}/*WDI_ProcessSetTmLevelRsp*/
28145
28146/**
28147 @brief Process Set Thermal Mitigation level Changed request
28148
28149 @param pWDICtx: pointer to the WLAN DAL context
28150 pEventData: pointer to the event information structure
28151
28152 @see
28153 @return Result of the function call
28154*/
28155WDI_Status
28156WDI_ProcessSetTmLevelReq
28157(
28158 WDI_ControlBlockType* pWDICtx,
28159 WDI_EventInfoType* pEventData
28160)
28161{
28162 WDI_SetTmLevelReqType *pwdiSetTmLevelReq = NULL;
28163 WDI_SetTmLevelCb wdiSetTmLevelCb = NULL;
28164 wpt_uint8* pSendBuffer = NULL;
28165 wpt_uint16 usDataOffset = 0;
28166 wpt_uint16 usSendSize = 0;
28167 tSetThermalMitgationType halTmMsg;
28168
28169 /*-------------------------------------------------------------------------
28170 Sanity check
28171 -------------------------------------------------------------------------*/
28172 if (( NULL == pEventData ) ||
28173 ( NULL == (pwdiSetTmLevelReq = (WDI_SetTmLevelReqType*)pEventData->pEventData)) ||
28174 ( NULL == (wdiSetTmLevelCb = (WDI_SetTmLevelCb)pEventData->pCBfnc)))
28175 {
28176 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028177 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028178 WDI_ASSERT(0);
28179 return WDI_STATUS_E_FAILURE;
28180 }
28181
28182 /*-----------------------------------------------------------------------
28183 Get message buffer
28184 -----------------------------------------------------------------------*/
28185 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_TM_LEVEL_REQ,
28186 sizeof(halTmMsg),
28187 &pSendBuffer, &usDataOffset, &usSendSize))||
28188 ( usSendSize < (usDataOffset + sizeof(halTmMsg) )))
28189 {
28190 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080028191 "Unable to get send buffer in Set PNO req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070028192 pEventData, pwdiSetTmLevelReq, wdiSetTmLevelCb);
28193 WDI_ASSERT(0);
28194 return WDI_STATUS_E_FAILURE;
28195 }
28196
28197 halTmMsg.thermalMitMode = pwdiSetTmLevelReq->tmMode;
28198 halTmMsg.thermalMitLevel = pwdiSetTmLevelReq->tmLevel;
28199
28200 wpalMemoryCopy( pSendBuffer+usDataOffset,
28201 &halTmMsg,
28202 sizeof(halTmMsg));
28203
28204 pWDICtx->pReqStatusUserData = pwdiSetTmLevelReq->pUserData;
28205 pWDICtx->pfncRspCB = NULL;
28206 /*-------------------------------------------------------------------------
28207 Send Get STA Request to HAL
28208 -------------------------------------------------------------------------*/
28209 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
28210 wdiSetTmLevelCb, pEventData->pUserData, WDI_SET_TM_LEVEL_RESP);
28211}
28212
28213/* Fill the value from the global features enabled array to the global capabilities
28214 * bitmap struct
28215 */
28216static void
28217FillAllFeatureCaps(tWlanFeatCaps *fCaps, placeHolderInCapBitmap *enabledFeat, wpt_int8 len)
28218{
28219 wpt_int8 i;
28220 for (i=0; i<len; i++)
28221 {
28222 setFeatCaps(fCaps, enabledFeat[i]);
28223 }
28224}
28225
28226/**
28227 @brief WDI_featureCapsExchangeReq
28228 Post feature capability bitmap exchange event.
28229 Host will send its own capability to FW in this req and
28230 expect FW to send its capability back as a bitmap in Response
28231
28232 @param
28233
28234 wdiFeatureCapsExchangeCb: callback called on getting the response.
28235 It is kept to mantain similarity between WDI reqs and if needed, can
28236 be used in future. Currently, It is set to NULL
28237
28238 pUserData: user data will be passed back with the
28239 callback
28240
28241 @see
28242 @return Result of the function call
28243*/
28244WDI_Status
28245WDI_featureCapsExchangeReq
28246(
28247 WDI_featureCapsExchangeCb wdiFeatureCapsExchangeCb,
28248 void* pUserData
28249)
28250{
28251 WDI_EventInfoType wdiEventData;
28252 wpt_int32 fCapsStructSize;
28253
28254 /*------------------------------------------------------------------------
28255 Sanity Check
28256 ------------------------------------------------------------------------*/
28257 if ( eWLAN_PAL_FALSE == gWDIInitialized )
28258 {
28259 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
28260 "WDI API call before module is initialized - Fail request");
28261
28262 return WDI_STATUS_E_NOT_ALLOWED;
28263 }
28264
28265 /* Allocate memory separately for global variable carrying FW caps */
28266 fCapsStructSize = sizeof(tWlanFeatCaps);
28267 gpHostWlanFeatCaps = wpalMemoryAllocate(fCapsStructSize);
28268 if ( NULL == gpHostWlanFeatCaps )
28269 {
28270 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Arif Hussain9a5d5382013-11-17 22:05:35 -080028271 "Cannot allocate memory for host capability info");
Jeff Johnson295189b2012-06-20 16:38:30 -070028272 WDI_ASSERT(0);
28273 return WDI_STATUS_MEM_FAILURE;
28274 }
28275
28276 wpalMemoryZero(gpHostWlanFeatCaps, fCapsStructSize);
28277
28278 /*------------------------------------------------------------------------
28279 Fill in Event data and post to the Main FSM
28280 ------------------------------------------------------------------------*/
28281 FillAllFeatureCaps(gpHostWlanFeatCaps, supportEnabledFeatures,
28282 (sizeof(supportEnabledFeatures)/sizeof(supportEnabledFeatures[0])));
Madan Mohan Koyyalamudif8d3b3f2013-07-30 19:10:54 +053028283 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Arif Hussain9a5d5382013-11-17 22:05:35 -080028284 "Host caps %x %x %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -070028285 gpHostWlanFeatCaps->featCaps[0],
28286 gpHostWlanFeatCaps->featCaps[1],
28287 gpHostWlanFeatCaps->featCaps[2],
28288 gpHostWlanFeatCaps->featCaps[3]
28289 );
Madan Mohan Koyyalamudif8d3b3f2013-07-30 19:10:54 +053028290 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR, "Host Capability");
28291 WDI_TraceHostFWCapabilities(gpHostWlanFeatCaps->featCaps);
Jeff Johnson295189b2012-06-20 16:38:30 -070028292 wdiEventData.wdiRequest = WDI_FEATURE_CAPS_EXCHANGE_REQ;
28293 wdiEventData.pEventData = gpHostWlanFeatCaps;
28294 wdiEventData.uEventDataSize = fCapsStructSize;
28295 wdiEventData.pCBfnc = wdiFeatureCapsExchangeCb;
28296 wdiEventData.pUserData = pUserData;
28297
28298 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
28299}
28300
28301/**
Yathish9f22e662012-12-10 14:21:35 -080028302 @brief Disable Active mode offload in Host
28303
28304 @param void
28305 @see
28306 @return void
28307*/
28308void
28309WDI_disableCapablityFeature(wpt_uint8 feature_index)
28310{
28311 supportEnabledFeatures[feature_index] = 0;
28312 return;
28313}
28314
28315/**
Jeff Johnson295189b2012-06-20 16:38:30 -070028316 @brief Process Host-FW Capability Exchange Request function
28317
28318 @param pWDICtx: pointer to the WLAN DAL context
28319 pEventData: pointer to the event information structure
28320
28321 @see
28322 @return Result of the function call
28323*/
28324WDI_Status
28325WDI_ProcessFeatureCapsExchangeReq
28326(
28327 WDI_ControlBlockType* pWDICtx,
28328 WDI_EventInfoType* pEventData
28329)
28330{
28331 wpt_uint8* pSendBuffer = NULL;
28332 wpt_uint16 usDataOffset = 0;
28333 wpt_uint16 usSendSize = 0;
28334 wpt_uint16 usLen = 0;
28335
28336 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28337
28338 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028339 "%s", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028340
28341 /*-------------------------------------------------------------------------
28342 Sanity check
28343 -------------------------------------------------------------------------*/
28344 /* Call back function is NULL since not required for cap exchange req */
28345 if (( NULL == pEventData ) ||
28346 ( NULL == (tWlanFeatCaps *)pEventData->pEventData))
28347 {
28348 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028349 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028350 WDI_ASSERT(0);
28351 return WDI_STATUS_E_FAILURE;
28352 }
28353
28354 /*-----------------------------------------------------------------------
28355 Get message buffer
28356 -----------------------------------------------------------------------*/
28357 usLen = sizeof(tWlanFeatCaps);
28358
28359 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
28360 WDI_FEATURE_CAPS_EXCHANGE_REQ,
28361 usLen,
28362 &pSendBuffer, &usDataOffset, &usSendSize))||
28363 ( usSendSize < (usDataOffset + usLen )))
28364 {
28365 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080028366 "Unable to get send buffer in feat caps exchange req %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070028367 pEventData, (tWlanFeatCaps *)pEventData->pEventData);
28368 WDI_ASSERT(0);
28369 return WDI_STATUS_E_FAILURE;
28370 }
28371
28372 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Arif Hussain9a5d5382013-11-17 22:05:35 -080028373 "Host Caps - %x %x %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -070028374 ((tWlanFeatCaps *)pEventData->pEventData)->featCaps[0],
28375 ((tWlanFeatCaps *)pEventData->pEventData)->featCaps[1],
28376 ((tWlanFeatCaps *)pEventData->pEventData)->featCaps[2],
28377 ((tWlanFeatCaps *)pEventData->pEventData)->featCaps[3]
28378 );
28379
28380 /* Copy host caps after the offset in the send buffer */
28381 wpalMemoryCopy( pSendBuffer+usDataOffset,
28382 (tWlanFeatCaps *)pEventData->pEventData,
28383 usLen);
28384
28385 /*-------------------------------------------------------------------------
28386 Send Start Request to HAL
28387 -------------------------------------------------------------------------*/
28388 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
28389 (WDI_StartRspCb)pEventData->pCBfnc,
28390 pEventData->pUserData, WDI_FEATURE_CAPS_EXCHANGE_RESP);
28391
28392}/*WDI_ProcessFeatureCapsExchangeReq*/
28393
28394/**
28395 @brief Process Host-FW Capability Exchange Response function
28396
28397 @param pWDICtx: pointer to the WLAN DAL context
28398 pEventData: pointer to the event information structure
28399
28400 @see
28401 @return Result of the function call
28402*/
28403WDI_Status
28404WDI_ProcessFeatureCapsExchangeRsp
28405(
28406 WDI_ControlBlockType* pWDICtx,
28407 WDI_EventInfoType* pEventData
28408)
28409{
28410 WDI_featureCapsExchangeCb wdiFeatureCapsExchangeCb;
28411 wpt_int32 fCapsStructSize;
28412 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28413
28414 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028415 "%s", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028416
28417 /*-------------------------------------------------------------------------
28418 Sanity check
28419 -------------------------------------------------------------------------*/
28420 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
28421 ( NULL == pEventData->pEventData ))
28422 {
28423 /* It will go here when riva is old (doesn't understand this msg) and host is new */
28424 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028425 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028426 WDI_ASSERT(0);
28427 return WDI_STATUS_E_FAILURE;
28428 }
28429
28430 /* Allocate memory separately for global variable carrying FW caps */
28431 fCapsStructSize = sizeof(tWlanFeatCaps);
28432 gpFwWlanFeatCaps = wpalMemoryAllocate(fCapsStructSize);
28433 if ( NULL == gpFwWlanFeatCaps )
28434 {
28435 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Arif Hussain9a5d5382013-11-17 22:05:35 -080028436 "Cannot allocate memory for host capability info");
Jeff Johnson295189b2012-06-20 16:38:30 -070028437 WDI_ASSERT(0);
28438 return WDI_STATUS_MEM_FAILURE;
28439 }
28440
28441 /*-------------------------------------------------------------------------
28442 Unpack HAL Response Message - the header was already extracted by the
28443 main Response Handling procedure
28444 -------------------------------------------------------------------------*/
28445 /*-------------------------------------------------------------------------
28446 Extract response and send it to UMAC
28447 -------------------------------------------------------------------------*/
28448
28449 wpalMemoryCopy(gpFwWlanFeatCaps,(tWlanFeatCaps *) pEventData -> pEventData,
28450 fCapsStructSize);
Madan Mohan Koyyalamudif8d3b3f2013-07-30 19:10:54 +053028451 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Arif Hussain9a5d5382013-11-17 22:05:35 -080028452 "FW caps %x %x %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -070028453 gpFwWlanFeatCaps->featCaps[0],
28454 gpFwWlanFeatCaps->featCaps[1],
28455 gpFwWlanFeatCaps->featCaps[2],
28456 gpFwWlanFeatCaps->featCaps[3]
Madan Mohan Koyyalamudif8d3b3f2013-07-30 19:10:54 +053028457 );
28458 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR, "Firmware Capability");
28459 WDI_TraceHostFWCapabilities(gpFwWlanFeatCaps->featCaps);
Jeff Johnson295189b2012-06-20 16:38:30 -070028460 wdiFeatureCapsExchangeCb = (WDI_featureCapsExchangeCb) pWDICtx -> pfncRspCB;
28461
28462 /*Notify UMAC - there is no callback right now but can be used in future if reqd */
28463 if (wdiFeatureCapsExchangeCb != NULL)
28464 wdiFeatureCapsExchangeCb(NULL, NULL);
28465
28466 return WDI_STATUS_SUCCESS;
28467}
28468
Mohit Khanna4a70d262012-09-11 16:30:12 -070028469#ifdef WLAN_FEATURE_11AC
28470WDI_Status
28471WDI_ProcessUpdateVHTOpModeRsp
28472(
28473 WDI_ControlBlockType* pWDICtx,
28474 WDI_EventInfoType* pEventData
28475)
28476{
28477 WDI_UpdateVHTOpModeCb wdiVHTOpModeCb = NULL;
28478 WDI_Status wdiStatus;
28479 eHalStatus halStatus;
28480
28481 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28482
28483 /*-------------------------------------------------------------------------
28484 Sanity check
28485 -------------------------------------------------------------------------*/
28486 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
28487 ( NULL == pEventData->pEventData))
28488 {
28489 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028490 "%s: Invalid parameters", __func__);
Mohit Khanna4a70d262012-09-11 16:30:12 -070028491 WDI_ASSERT(0);
28492 return WDI_STATUS_E_FAILURE;
28493 }
28494 wdiVHTOpModeCb = (WDI_UpdateVHTOpModeCb)pEventData->pCBfnc;
28495
28496 /*-------------------------------------------------------------------------
28497 Extract response and send it to UMAC
28498 -------------------------------------------------------------------------*/
28499 halStatus = *((eHalStatus*)pEventData->pEventData);
28500 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
28501
28502 /*Notify UMAC*/
28503 wdiVHTOpModeCb( wdiStatus, pEventData->pUserData);
28504
28505 return WDI_STATUS_SUCCESS;
28506}
28507#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070028508/**
28509 @brief WDI_getHostWlanFeatCaps
28510 WDI API that returns whether the feature passed to it as enum value in
28511 "placeHolderInCapBitmap" is supported by Host or not. It uses WDI global
28512 variable storing host capability bitmap to find this. This can be used by
28513 other moduels to decide certain things like call different APIs based on
28514 whether a particular feature is supported.
28515
28516 @param
28517
28518 feat_enum_value: enum value for the feature as in placeHolderInCapBitmap in wlan_hal_msg.h.
28519
28520 @see
28521 @return
28522 0 - if the feature is NOT supported in host
28523 any non-zero value - if the feature is SUPPORTED in host.
28524*/
28525wpt_uint8 WDI_getHostWlanFeatCaps(wpt_uint8 feat_enum_value)
28526{
28527 wpt_uint8 featSupported = 0;
28528 if (gpHostWlanFeatCaps != NULL)
28529 {
28530 getFeatCaps(gpHostWlanFeatCaps, feat_enum_value, featSupported);
28531 }
28532 else
28533 {
Madan Mohan Koyyalamudi8b7f1e62012-10-05 14:56:51 -070028534 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi8bdd3112012-09-24 13:55:14 -070028535 "Caps exchange feature NOT supported. Return NOT SUPPORTED for %u feature", feat_enum_value);
Jeff Johnson295189b2012-06-20 16:38:30 -070028536 }
28537 return featSupported;
28538}
28539
28540/**
28541 @brief WDI_getFwWlanFeatCaps
28542 WDI API that returns whether the feature passed to it as enum value in
28543 "placeHolderInCapBitmap" is supported by FW or not. It uses WDI global
28544 variable storing host capability bitmap to find this. This can be used by
28545 other moduels to decide certain things like call different APIs based on
28546 whether a particular feature is supported.
28547
28548 @param
28549
28550 feat_enum_value: enum value for the feature as in placeHolderInCapBitmap
28551 in wlan_hal_msg.h.
28552
28553 @see
28554 @return
28555 0 - if the feature is NOT supported in FW
28556 any non-zero value - if the feature is SUPPORTED in FW.
28557*/
28558wpt_uint8 WDI_getFwWlanFeatCaps(wpt_uint8 feat_enum_value)
28559{
28560 wpt_uint8 featSupported = 0;
28561 if (gpFwWlanFeatCaps != NULL)
28562 {
28563 getFeatCaps(gpFwWlanFeatCaps, feat_enum_value, featSupported);
28564 }
28565 else
28566 {
Madan Mohan Koyyalamudi8b7f1e62012-10-05 14:56:51 -070028567 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi8bdd3112012-09-24 13:55:14 -070028568 "Caps exchange feature NOT supported. Return NOT SUPPORTED for %u feature", feat_enum_value);
Jeff Johnson295189b2012-06-20 16:38:30 -070028569 }
28570 return featSupported;
28571}
Mohit Khanna4a70d262012-09-11 16:30:12 -070028572
28573#ifdef WLAN_FEATURE_11AC
28574WDI_Status
28575WDI_ProcessUpdateVHTOpModeReq
28576(
28577 WDI_ControlBlockType* pWDICtx,
28578 WDI_EventInfoType* pEventData
28579)
28580{
28581 WDI_UpdateVHTOpMode* pwdiVHTOpModeParams = NULL;
28582 WDI_UpdateVHTOpModeCb wdiVHTOpModeCb = NULL;
28583 wpt_uint8* pSendBuffer = NULL;
28584 wpt_uint16 usDataOffset = 0;
28585 wpt_uint16 usSendSize = 0;
28586
28587 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28588
28589 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028590 "%s", __func__);
Mohit Khanna4a70d262012-09-11 16:30:12 -070028591
28592 /*-------------------------------------------------------------------------
28593 Sanity check
28594 -------------------------------------------------------------------------*/
28595 if (( NULL == pEventData ) ||
28596 ( NULL == (pwdiVHTOpModeParams = (WDI_UpdateVHTOpMode*)pEventData->pEventData)) ||
28597 ( NULL == (wdiVHTOpModeCb = (WDI_UpdateVHTOpModeCb)pEventData->pCBfnc)))
28598 {
28599 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028600 "%s: Invalid parameters", __func__);
Mohit Khanna4a70d262012-09-11 16:30:12 -070028601 WDI_ASSERT(0);
28602 return WDI_STATUS_E_FAILURE;
28603 }
28604
28605 /*-----------------------------------------------------------------------
28606 Get message buffer
28607 -----------------------------------------------------------------------*/
28608 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_VHT_OP_MODE_REQ,
28609 sizeof(WDI_UpdateVHTOpMode),
28610 &pSendBuffer, &usDataOffset, &usSendSize))||
28611 ( usSendSize < (usDataOffset + sizeof(WDI_UpdateVHTOpMode) )))
28612 {
28613 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
28614 "Unable to get send buffer in update vht opMode req");
28615 WDI_ASSERT(0);
28616 return WDI_STATUS_E_FAILURE;
28617 }
28618
28619 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Arif Hussain9a5d5382013-11-17 22:05:35 -080028620 "pwdiVHTOpModeParams->opMode=%d, pwdiVHTOpModeParams->staId=%d", pwdiVHTOpModeParams->opMode, pwdiVHTOpModeParams->staId);
Mohit Khanna4a70d262012-09-11 16:30:12 -070028621
28622 wpalMemoryCopy( pSendBuffer+usDataOffset, pwdiVHTOpModeParams,
28623 sizeof(WDI_UpdateVHTOpMode));
28624
28625 /*-------------------------------------------------------------------------
28626 Send Start Request to HAL
28627 -------------------------------------------------------------------------*/
28628 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
28629 wdiVHTOpModeCb,
28630 pEventData->pUserData, WDI_UPDATE_VHT_OP_MODE_RESP);
28631
28632}
28633
28634WDI_Status
28635WDI_UpdateVHTOpModeReq
28636(
28637 WDI_UpdateVHTOpMode *pData,
28638 WDI_UpdateVHTOpModeCb wdiUpdateVHTOpModeCb,
28639 void* pUserData
28640)
28641{
28642 WDI_EventInfoType wdiEventData;
28643
28644 /*------------------------------------------------------------------------
28645 Sanity Check
28646 ------------------------------------------------------------------------*/
28647 if ( eWLAN_PAL_FALSE == gWDIInitialized )
28648 {
28649 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
28650 "WDI API call before module is initialized - Fail request");
28651
28652 return WDI_STATUS_E_NOT_ALLOWED;
28653 }
28654
28655 /*------------------------------------------------------------------------
28656 Fill in Event data and post to the Main FSM
28657 ------------------------------------------------------------------------*/
28658 wdiEventData.wdiRequest = WDI_UPDATE_VHT_OP_MODE_REQ;
28659 wdiEventData.pEventData = pData;
28660 wdiEventData.uEventDataSize = sizeof(WDI_UpdateVHTOpMode);
28661 wdiEventData.pCBfnc = wdiUpdateVHTOpModeCb;
28662 wdiEventData.pUserData = pUserData;
28663
28664 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Arif Hussain9a5d5382013-11-17 22:05:35 -080028665 "pData->opMode=%d, pData->staId=%d", pData->opMode, pData->staId);
Mohit Khanna4a70d262012-09-11 16:30:12 -070028666
28667 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
28668
28669}
28670#endif
Madan Mohan Koyyalamudi8cb53982012-09-28 14:34:47 -070028671
28672/**
28673 @brief WDI_TransportChannelDebug -
28674 Display DXE Channel debugging information
28675 User may request to display DXE channel snapshot
28676 Or if host driver detects any abnormal stcuk may display
Madan Mohan Koyyalamudi8b7f1e62012-10-05 14:56:51 -070028677
Jeff Johnsonb88db982012-12-10 13:34:59 -080028678 @param displaySnapshot : Display DXE snapshot option
Mihir Shete40a55652014-03-02 14:14:47 +053028679 @param debugFlags : Enable stall detect features
28680 defined by WPAL_DeviceDebugFlags
28681 These features may effect
28682 data performance.
Madan Mohan Koyyalamudi8cb53982012-09-28 14:34:47 -070028683 @see
28684 @return none
28685*/
28686void WDI_TransportChannelDebug
28687(
28688 wpt_boolean displaySnapshot,
Mihir Shete40a55652014-03-02 14:14:47 +053028689 wpt_uint8 debugFlags
Madan Mohan Koyyalamudi8cb53982012-09-28 14:34:47 -070028690)
28691{
Mihir Shete40a55652014-03-02 14:14:47 +053028692 WDTS_ChannelDebug(displaySnapshot, debugFlags);
Madan Mohan Koyyalamudi8cb53982012-09-28 14:34:47 -070028693 return;
Madan Mohan Koyyalamudi3352adb2012-09-28 14:57:24 -070028694}
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -070028695/**
28696 @brief WDI_SsrTimerCB
28697 Callback function for SSR timer, if this is called then the graceful
28698 shutdown for Riva did not happen.
28699
28700 @param pUserData : user data to timer
28701
28702 @see
28703 @return none
28704*/
28705void
28706WDI_SsrTimerCB
28707(
28708 void *pUserData
28709)
28710{
28711 WDI_ControlBlockType* pWDICtx = (WDI_ControlBlockType*)pUserData;
28712 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28713
28714 if (NULL == pWDICtx )
28715 {
28716 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028717 "%s: Invalid parameters", __func__);
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -070028718 WDI_ASSERT(0);
28719 return;
28720 }
28721 wpalRivaSubystemRestart();
28722
28723 return;
28724
28725}/*WDI_SsrTimerCB*/
Gopichand Nakkalae620d5a2013-04-26 05:45:57 -070028726
28727/**
28728 @brief WDI_SetEnableSSR -
28729 This API is called to enable/disable SSR on WDI timeout.
28730
28731 @param enableSSR : enable/disable SSR
28732
28733 @see
28734 @return none
28735*/
28736void WDI_SetEnableSSR(wpt_boolean enableSSR)
28737{
28738 gWDICb.bEnableSSR = enableSSR;
28739}
Leo Chang9056f462013-08-01 19:21:11 -070028740
28741
28742#ifdef FEATURE_WLAN_LPHB
28743/**
Leo Changd9df8aa2013-09-26 13:32:26 -070028744 @brief WDI_ProcessLphbInd -
Leo Chang9056f462013-08-01 19:21:11 -070028745 This function will be invoked when FW detects low power
28746 heart beat failure
28747
28748 @param pWDICtx : wdi context
28749 pEventData : indication data
Leo Chang9056f462013-08-01 19:21:11 -070028750 @see
28751 @return Result of the function call
28752*/
28753WDI_Status
Leo Changd9df8aa2013-09-26 13:32:26 -070028754WDI_ProcessLphbInd
Leo Chang9056f462013-08-01 19:21:11 -070028755(
28756 WDI_ControlBlockType* pWDICtx,
28757 WDI_EventInfoType* pEventData
28758)
28759{
28760 WDI_LowLevelIndType wdiInd;
Leo Changd9df8aa2013-09-26 13:32:26 -070028761 tHalLowPowerHeartBeatIndParam lphbIndicationParam;
Leo Chang9056f462013-08-01 19:21:11 -070028762 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28763
28764 /*-------------------------------------------------------------------------
28765 Sanity check
28766 -------------------------------------------------------------------------*/
28767 if ((NULL == pWDICtx) || (NULL == pEventData) ||
28768 (NULL == pEventData->pEventData))
28769 {
28770 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
28771 "%s: Invalid parameters", __func__);
28772 WDI_ASSERT(0);
28773 return WDI_STATUS_E_FAILURE;
28774 }
28775
28776 /*-------------------------------------------------------------------------
28777 Extract indication and send it to UMAC
28778 -------------------------------------------------------------------------*/
Leo Changd9df8aa2013-09-26 13:32:26 -070028779 wpalMemoryCopy(&lphbIndicationParam,
28780 pEventData->pEventData,
28781 sizeof(tHalLowPowerHeartBeatIndParam));
Leo Chang9056f462013-08-01 19:21:11 -070028782
Leo Changd9df8aa2013-09-26 13:32:26 -070028783 wdiInd.wdiIndicationType = WDI_LPHB_IND;
Leo Chang9056f462013-08-01 19:21:11 -070028784 wdiInd.wdiIndicationData.wdiLPHBTimeoutInd.bssIdx =
Leo Changd9df8aa2013-09-26 13:32:26 -070028785 lphbIndicationParam.bssIdx;
Leo Chang9056f462013-08-01 19:21:11 -070028786 wdiInd.wdiIndicationData.wdiLPHBTimeoutInd.sessionIdx =
Leo Changd9df8aa2013-09-26 13:32:26 -070028787 lphbIndicationParam.sessionIdx;
Leo Chang9056f462013-08-01 19:21:11 -070028788 wdiInd.wdiIndicationData.wdiLPHBTimeoutInd.protocolType =
Leo Changd9df8aa2013-09-26 13:32:26 -070028789 lphbIndicationParam.protocolType;
Leo Chang9056f462013-08-01 19:21:11 -070028790 wdiInd.wdiIndicationData.wdiLPHBTimeoutInd.eventReason =
Leo Changd9df8aa2013-09-26 13:32:26 -070028791 lphbIndicationParam.eventReason;
Leo Chang9056f462013-08-01 19:21:11 -070028792 /*Notify UMAC*/
28793 if (pWDICtx->wdiLowLevelIndCB)
28794 {
28795 pWDICtx->wdiLowLevelIndCB(&wdiInd, pWDICtx->pIndUserData);
28796 }
28797
28798 return WDI_STATUS_SUCCESS;
28799}
28800
28801/**
28802 @brief WDI_ProcessLphbCfgRsp -
28803 LPHB configuration response from FW
28804
28805 @param pWDICtx : wdi context
28806 pEventData : indication data
28807
28808 @see
28809 @return Result of the function call
28810*/
28811WDI_Status WDI_ProcessLphbCfgRsp
28812(
28813 WDI_ControlBlockType* pWDICtx,
28814 WDI_EventInfoType* pEventData
28815)
28816{
28817 WDI_Status wdiStatus;
28818 eHalStatus halStatus;
28819 WDI_LphbCfgCb wdiLphbCfgCb;
28820 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28821
28822 /*-------------------------------------------------------------------------
28823 Sanity check
28824 -------------------------------------------------------------------------*/
28825 if ((NULL == pWDICtx) || (NULL == pEventData) ||
28826 (NULL == pEventData->pEventData))
28827 {
28828 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
28829 "%s: Invalid parameters", __func__);
28830 WDI_ASSERT(0);
28831 return WDI_STATUS_E_FAILURE;
28832 }
28833
28834 wdiLphbCfgCb = (WDI_LphbCfgCb)pWDICtx->pfncRspCB;
28835
28836 /*-------------------------------------------------------------------------
28837 Extract response and send it to UMAC
28838 -------------------------------------------------------------------------*/
28839 halStatus = *((eHalStatus*)pEventData->pEventData);
28840 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
28841
28842 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
28843 "LPHB Cfg Rsp Return status %d", wdiStatus);
28844 /*Notify UMAC*/
28845 if (NULL != wdiLphbCfgCb)
28846 {
28847 wdiLphbCfgCb(wdiStatus, pWDICtx->pRspCBUserData);
28848 }
28849
28850 return WDI_STATUS_SUCCESS;
28851}
28852
28853/**
28854 @brief WDI_ProcessLPHBConfReq -
28855 LPHB configuration request to FW
28856
28857 @param pWDICtx : wdi context
28858 pEventData : indication data
28859
28860 @see
28861 @return none
28862*/
28863WDI_Status WDI_ProcessLPHBConfReq
28864(
28865 WDI_ControlBlockType* pWDICtx,
28866 WDI_EventInfoType* pEventData
28867)
28868{
28869 WDI_LPHBReq *pLphbReqParams;
28870 WDI_Status wdiStatus;
28871 wpt_uint8* pSendBuffer = NULL;
28872 wpt_uint16 usDataOffset = 0;
28873 wpt_uint16 usSendSize = 0;
28874 tHalLowPowerHeartBeatReq *halLphbReqRarams;
28875 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28876
28877 /*-------------------------------------------------------------------------
28878 Sanity check
28879 -------------------------------------------------------------------------*/
28880 if ((NULL == pEventData) || (NULL == pEventData->pEventData))
28881 {
28882 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
28883 "%s: Invalid parameters in Suspend ind",__func__);
28884 WDI_ASSERT(0);
28885 return WDI_STATUS_E_FAILURE;
28886 }
28887
28888 pLphbReqParams = (WDI_LPHBReq *)pEventData->pEventData;
28889
28890 /*-----------------------------------------------------------------------
28891 Get message buffer
28892 -----------------------------------------------------------------------*/
28893 if ((WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(pWDICtx,
28894 WDI_LPHB_CFG_REQ,
28895 sizeof(tHalLowPowerHeartBeatReqMsg),
28896 &pSendBuffer, &usDataOffset, &usSendSize))||
28897 (usSendSize < (usDataOffset + sizeof(tHalLowPowerHeartBeatReqMsg))))
28898 {
28899 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
28900 "Unable to get send buffer in LPHB Ind ");
28901 WDI_ASSERT(0);
28902 return WDI_STATUS_E_FAILURE;
28903 }
28904
28905 halLphbReqRarams = (tHalLowPowerHeartBeatReq *)(pSendBuffer + usDataOffset);
28906 wpalMemoryZero(halLphbReqRarams, sizeof(tHalLowPowerHeartBeatReq));
28907
28908 halLphbReqRarams->lowPowerHeartBeatCmdType =
28909 (tANI_U16)(++pLphbReqParams->cmd);
28910 switch ((tANI_U16)pLphbReqParams->cmd)
28911 {
28912 case WDI_LPHB_SET_EN_PARAMS_INDID:
28913 halLphbReqRarams->sessionIdx =
28914 pLphbReqParams->params.lphbEnableReq.session;
28915 halLphbReqRarams->options.control.heartBeatEnable =
28916 pLphbReqParams->params.lphbEnableReq.enable;
28917 halLphbReqRarams->options.control.heartBeatType =
28918 pLphbReqParams->params.lphbEnableReq.item;
28919 break;
28920
28921 case WDI_LPHB_SET_TCP_PARAMS_INDID:
28922 halLphbReqRarams->sessionIdx =
28923 pLphbReqParams->params.lphbTcpParamReq.session;
28924 halLphbReqRarams->options.tcpParams.timeOutSec =
28925 pLphbReqParams->params.lphbTcpParamReq.timeout;
28926 wpalMemoryCopy(&halLphbReqRarams->options.tcpParams.hostIpv4Addr,
28927 &pLphbReqParams->params.lphbTcpParamReq.dev_ip,
28928 sizeof(v_U32_t));
28929 wpalMemoryCopy(&halLphbReqRarams->options.tcpParams.destIpv4Addr,
28930 &pLphbReqParams->params.lphbTcpParamReq.srv_ip,
28931 sizeof(v_U32_t));
28932
28933 wpalMemoryCopy(halLphbReqRarams->options.tcpParams.gatewayMacAddr,
28934 pLphbReqParams->params.lphbTcpParamReq.gateway_mac,
28935 WDI_MAC_ADDR_LEN);
28936
28937 halLphbReqRarams->options.tcpParams.hostPort =
28938 pLphbReqParams->params.lphbTcpParamReq.src_port;
28939 halLphbReqRarams->options.tcpParams.destPort =
28940 pLphbReqParams->params.lphbTcpParamReq.dst_port;
Leo Changd9df8aa2013-09-26 13:32:26 -070028941 halLphbReqRarams->options.tcpParams.timePeriodSec =
28942 pLphbReqParams->params.lphbTcpParamReq.timePeriodSec;
28943 halLphbReqRarams->options.tcpParams.tcpSn =
28944 pLphbReqParams->params.lphbTcpParamReq.tcpSn;
Leo Chang9056f462013-08-01 19:21:11 -070028945 break;
28946
28947 case WDI_LPHB_SET_TCP_PKT_FILTER_INDID:
28948 halLphbReqRarams->sessionIdx =
28949 pLphbReqParams->params.lphbTcpFilterReq.session;
28950 halLphbReqRarams->options.tcpUdpFilter.offset =
28951 pLphbReqParams->params.lphbTcpFilterReq.offset;
28952 halLphbReqRarams->options.tcpUdpFilter.filterLength =
28953 pLphbReqParams->params.lphbTcpFilterReq.length;
28954 wpalMemoryCopy(halLphbReqRarams->options.tcpUdpFilter.filter,
28955 pLphbReqParams->params.lphbTcpFilterReq.filter,
28956 WDI_LPHB_FILTER_LEN);
28957 break;
28958
28959 case WDI_LPHB_SET_UDP_PARAMS_INDID:
28960 halLphbReqRarams->sessionIdx =
28961 pLphbReqParams->params.lphbUdpParamReq.session;
28962 halLphbReqRarams->options.udpParams.timeOutSec =
28963 pLphbReqParams->params.lphbUdpParamReq.timeout;
28964 halLphbReqRarams->options.udpParams.timePeriodSec =
28965 pLphbReqParams->params.lphbUdpParamReq.interval;
28966 wpalMemoryCopy(&halLphbReqRarams->options.udpParams.hostIpv4Addr,
28967 &pLphbReqParams->params.lphbUdpParamReq.dev_ip,
28968 sizeof(v_U32_t));
28969 wpalMemoryCopy(&halLphbReqRarams->options.udpParams.destIpv4Addr,
28970 &pLphbReqParams->params.lphbUdpParamReq.srv_ip,
28971 sizeof(v_U32_t));
28972
28973 wpalMemoryCopy(halLphbReqRarams->options.udpParams.gatewayMacAddr,
28974 pLphbReqParams->params.lphbUdpParamReq.gateway_mac,
28975 WDI_MAC_ADDR_LEN);
28976
28977 halLphbReqRarams->options.udpParams.hostPort =
28978 pLphbReqParams->params.lphbUdpParamReq.src_port;
28979 halLphbReqRarams->options.udpParams.destPort =
28980 pLphbReqParams->params.lphbUdpParamReq.dst_port;
28981 break;
28982
28983 case WDI_LPHB_SET_UDP_PKT_FILTER_INDID:
28984 halLphbReqRarams->sessionIdx =
28985 pLphbReqParams->params.lphbUdpFilterReq.session;
28986 halLphbReqRarams->options.tcpUdpFilter.offset =
28987 pLphbReqParams->params.lphbUdpFilterReq.offset;
28988 halLphbReqRarams->options.tcpUdpFilter.filterLength =
28989 pLphbReqParams->params.lphbUdpFilterReq.length;
28990 wpalMemoryCopy(halLphbReqRarams->options.tcpUdpFilter.filter,
28991 pLphbReqParams->params.lphbUdpFilterReq.filter,
28992 WDI_LPHB_FILTER_LEN);
28993 break;
28994
28995 case WDI_LPHB_SET_NETWORK_INFO_INDID:
28996 /* NA */
28997 break;
28998
28999 default:
29000 break;
29001 }
29002
29003 /*-------------------------------------------------------------------------
29004 Send Suspend Request to HAL
29005 -------------------------------------------------------------------------*/
29006 pWDICtx->pfncRspCB = pEventData->pCBfnc;
29007 pWDICtx->pReqStatusUserData = pEventData->pUserData;
29008
29009 wdiStatus = WDI_SendMsg(pWDICtx, pSendBuffer,
29010 usSendSize, pWDICtx->pfncRspCB,
29011 pWDICtx->pReqStatusUserData,
29012 WDI_LPHB_CFG_RESP);
29013
29014 return wdiStatus;
29015}
29016
29017/**
29018 @brief WDI_LPHBConfReq -
29019 LPHB configuration request API
29020
29021 @param lphbconfParam : configuration parameter
29022 usrData : client context
29023 lphbCfgCb : callback function pointer
29024
29025 @see
29026 @return Success or fail status code
29027*/
29028WDI_Status WDI_LPHBConfReq(void *lphbconfParam,
29029 void *usrData, WDI_LphbCfgCb lphbCfgCb)
29030{
29031 WDI_EventInfoType wdiEventData;
29032
29033 /*------------------------------------------------------------------------
29034 Sanity Check
29035 ------------------------------------------------------------------------*/
29036 if (eWLAN_PAL_FALSE == gWDIInitialized)
29037 {
29038 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
29039 "WDI API call before module is initialized - Fail request");
29040
29041 return WDI_STATUS_E_NOT_ALLOWED;
29042 }
29043
29044 /*------------------------------------------------------------------------
29045 Fill in Event data and post to the Main FSM
29046 ------------------------------------------------------------------------*/
29047 wdiEventData.wdiRequest = WDI_LPHB_CFG_REQ;
29048 wdiEventData.pEventData = lphbconfParam;
29049 wdiEventData.uEventDataSize = sizeof(WDI_LPHBReq);
29050 wdiEventData.pCBfnc = lphbCfgCb;
29051 wdiEventData.pUserData = usrData;
29052
29053 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
29054}
29055#endif /* FEATURE_WLAN_LPHB */
29056
Ravi Joshid2ca7c42013-07-23 08:37:49 -070029057/**
29058 @brief WDI_ProcessIbssPeerInactivityInd
29059 Process peer inactivity indication coming from HAL
29060
29061 @param pWDICtx: pointer to the WLAN DAL context
29062 pEventData: pointer to the event information structure
29063 @see
29064 @return Result of the function call
29065*/
29066WDI_Status
29067WDI_ProcessIbssPeerInactivityInd
29068(
29069 WDI_ControlBlockType* pWDICtx,
29070 WDI_EventInfoType* pEventData
29071)
29072{
29073 WDI_LowLevelIndType wdiInd;
29074 tIbssPeerInactivityIndMsg halIbssIndMsg;
29075
29076 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
29077
29078 /*-------------------------------------------------------------------------
29079 Sanity check
29080 -------------------------------------------------------------------------*/
29081 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
29082 ( NULL == pEventData->pEventData ))
29083 {
29084 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
29085 "%s: Invalid parameters", __func__);
29086 WDI_ASSERT( 0 );
29087 return WDI_STATUS_E_FAILURE;
29088 }
29089
29090 /*-------------------------------------------------------------------------
29091 Extract indication and send it to UMAC
29092 -------------------------------------------------------------------------*/
29093 wpalMemoryCopy( &halIbssIndMsg.ibssPeerInactivityIndParams,
29094 pEventData->pEventData,
29095 sizeof(halIbssIndMsg.ibssPeerInactivityIndParams) );
29096
29097 /*Fill in the indication parameters*/
29098 wdiInd.wdiIndicationType = WDI_IBSS_PEER_INACTIVITY_IND;
29099
29100 wdiInd.wdiIndicationData.wdiIbssPeerInactivityInd.bssIdx
29101 = halIbssIndMsg.ibssPeerInactivityIndParams.bssIdx;
29102
29103 wdiInd.wdiIndicationData.wdiIbssPeerInactivityInd.staIdx
29104 = halIbssIndMsg.ibssPeerInactivityIndParams.staIdx;
29105
29106 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiIbssPeerInactivityInd.staMacAddr,
29107 halIbssIndMsg.ibssPeerInactivityIndParams.staAddr,
29108 sizeof(tSirMacAddr));
29109
29110 /*Notify UMAC*/
29111 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
29112
29113 return WDI_STATUS_SUCCESS;
29114
29115} /*WDI_ProcessIbssPeerInactivityInd*/
Rajeev79dbe4c2013-10-05 11:03:42 +053029116
Chittajit Mitraf5413a42013-10-18 14:20:08 -070029117/**
29118*@brief WDI_RateUpdateInd will be called when the upper MAC
29119 requests the device to set rates.
Rajeev79dbe4c2013-10-05 11:03:42 +053029120
Chittajit Mitraf5413a42013-10-18 14:20:08 -070029121
29122 @param wdiRateUpdateIndParams:
29123
29124
29125 @see
29126 @return Result of the function call
29127*/
29128WDI_Status
29129WDI_RateUpdateInd
29130(
29131 WDI_RateUpdateIndParams *wdiRateUpdateIndParams
29132)
29133{
29134 WDI_EventInfoType wdiEventData;
29135 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
29136
29137 /*------------------------------------------------------------------------
29138 Sanity Check
29139 ------------------------------------------------------------------------*/
29140 if ( eWLAN_PAL_FALSE == gWDIInitialized )
29141 {
29142 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
29143 "WDI API call before module is initialized - Fail request");
29144
29145 return WDI_STATUS_E_NOT_ALLOWED;
29146 }
29147
29148 /*------------------------------------------------------------------------
29149 Fill in Event data and post to the Main FSM
29150 ------------------------------------------------------------------------*/
29151 wdiEventData.wdiRequest = WDI_RATE_UPDATE_IND;
29152 wdiEventData.pEventData = wdiRateUpdateIndParams;
29153 wdiEventData.uEventDataSize = sizeof(WDI_RateUpdateIndParams);
29154 wdiEventData.pCBfnc = NULL;
29155 wdiEventData.pUserData = NULL;
29156
29157 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
29158
29159}/* WDI_RateUpdateInd */
29160
29161/**
29162 @brief Process Rate Update Indication and post it to HAL
29163
29164 @param pWDICtx: pointer to the WLAN DAL context
29165 pEventData: pointer to the event information structure
29166
29167 @see
29168 @return Result of the function call
29169*/
29170WDI_Status
29171WDI_ProcessRateUpdateInd
29172(
29173 WDI_ControlBlockType* pWDICtx,
29174 WDI_EventInfoType* pEventData
29175)
29176{
29177 wpt_uint8* pSendBuffer = NULL;
29178 wpt_uint16 usDataOffset = 0;
29179 wpt_uint16 usSendSize = 0;
29180 WDI_RateUpdateIndParams *pwdiRateUpdateInd = NULL;
29181 tHalRateUpdateInd *pRateUpdateInd;
29182 WDI_Status wdiStatus;
29183
29184 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
29185
29186 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
29187 "%s", __func__);
29188
29189 /*-------------------------------------------------------------------------
29190 Sanity check
29191 -------------------------------------------------------------------------*/
29192 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
29193 {
29194 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
29195 "%s: Invalid parameters", __func__);
29196 WDI_ASSERT(0);
29197 return WDI_STATUS_E_FAILURE;
29198 }
29199 pwdiRateUpdateInd = (WDI_RateUpdateIndParams *)pEventData->pEventData;
29200 /*-----------------------------------------------------------------------
29201 Get message buffer
29202 -----------------------------------------------------------------------*/
29203
29204 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
29205 WDI_RATE_UPDATE_IND,
29206 sizeof(tHalRateUpdateParams),
29207 &pSendBuffer, &usDataOffset, &usSendSize))||
29208 ( usSendSize < (usDataOffset +
29209 sizeof(tHalRateUpdateParams) )))
29210 {
29211 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
29212 "Unable to get send buffer in Rate Update Indication %p ",
29213 pEventData);
29214 WDI_ASSERT(0);
29215 return WDI_STATUS_E_FAILURE;
29216 }
29217
29218 pRateUpdateInd = (tHalRateUpdateInd *)pSendBuffer;
29219
29220 /* Copy the bssid */
29221 wpalMemoryCopy(pRateUpdateInd->halRateUpdateParams.bssid,
29222 pwdiRateUpdateInd->bssid, WDI_MAC_ADDR_LEN);
29223
29224 /* Copy the tx flags */
29225 pRateUpdateInd->halRateUpdateParams.ucastDataRateTxFlag =
29226 pwdiRateUpdateInd->ucastDataRateTxFlag;
29227 pRateUpdateInd->halRateUpdateParams.reliableMcastDataRateTxFlag =
29228 pwdiRateUpdateInd->reliableMcastDataRateTxFlag;
29229 pRateUpdateInd->halRateUpdateParams.mcastDataRate24GHzTxFlag =
29230 pwdiRateUpdateInd->mcastDataRate24GHzTxFlag;
29231 pRateUpdateInd->halRateUpdateParams.mcastDataRate5GHzTxFlag =
29232 pwdiRateUpdateInd->mcastDataRate5GHzTxFlag;
29233
29234 /* Copy the tx rates */
29235 pRateUpdateInd->halRateUpdateParams.ucastDataRate =
29236 pwdiRateUpdateInd->ucastDataRate;
29237 pRateUpdateInd->halRateUpdateParams.reliableMcastDataRate =
29238 pwdiRateUpdateInd->reliableMcastDataRate;
29239 pRateUpdateInd->halRateUpdateParams.mcastDataRate24GHz =
29240 pwdiRateUpdateInd->mcastDataRate24GHz;
29241 pRateUpdateInd->halRateUpdateParams.mcastDataRate5GHz =
29242 pwdiRateUpdateInd->mcastDataRate5GHz;
29243
29244 /*-------------------------------------------------------------------------
29245 Send Rate Update Indication to HAL
29246 -------------------------------------------------------------------------*/
29247 pWDICtx->wdiReqStatusCB = pwdiRateUpdateInd->wdiReqStatusCB;
29248 pWDICtx->pReqStatusUserData = pwdiRateUpdateInd->pUserData;
29249
29250 wdiStatus = WDI_SendIndication(pWDICtx, pSendBuffer, usSendSize);
29251
29252 return (wdiStatus != WDI_STATUS_SUCCESS) ?
29253 wdiStatus : WDI_STATUS_SUCCESS_SYNC;
29254
29255} /* WDI_ProcessRateUpdateInd */
29256
29257#ifdef FEATURE_WLAN_BATCH_SCAN
Rajeev79dbe4c2013-10-05 11:03:42 +053029258/**
29259 @brief Process stop batch indication from WDA
29260
29261 @param pWDICtx: pointer to the WLAN DAL context
29262 pEventData: pointer to the event information structure
29263
29264 @see
29265 @return Result of the function call
29266*/
29267WDI_Status
29268WDI_ProcessStopBatchScanInd
29269(
29270 WDI_ControlBlockType* pWDICtx,
29271 WDI_EventInfoType* pEventData
29272)
29273{
29274 wpt_uint8* pSendBuffer = NULL;
29275 wpt_uint16 usDataOffset = 0;
29276 wpt_uint16 usSendSize = 0;
29277 WDI_Status wdiStatus;
29278 tHalBatchScanStopIndParam *pHalInd = NULL;
29279 WDI_StopBatchScanIndType *pWdiInd = NULL;
29280
29281
29282 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
29283
29284 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
29285 "%s", __func__);
29286
29287 /*-------------------------------------------------------------------------
29288 Sanity check
29289 -------------------------------------------------------------------------*/
29290
29291 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
29292 {
29293 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
29294 "%s: Invalid parameters", __func__);
29295 WDI_ASSERT(0);
29296 return WDI_STATUS_E_FAILURE;
29297 }
29298 pWdiInd = (WDI_StopBatchScanIndType *)pEventData->pEventData;
29299 /*-----------------------------------------------------------------------
29300 Get message buffer
29301 -----------------------------------------------------------------------*/
29302
29303 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
29304 WDI_STOP_BATCH_SCAN_IND,
29305 sizeof(tHalBatchScanStopIndParam),
29306 &pSendBuffer, &usDataOffset, &usSendSize))||
29307 ( usSendSize < (usDataOffset + sizeof(tHalBatchScanStopIndParam))))
29308 {
29309 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
29310 "Unable to get send buffer in stop batch scan ind %p ",
29311 pEventData);
29312 WDI_ASSERT(0);
29313 return WDI_STATUS_E_FAILURE;
29314 }
29315
29316 pHalInd = (tHalBatchScanStopIndParam *)(pSendBuffer + usDataOffset);
29317 pHalInd->param = pWdiInd->param;
29318
29319 pWDICtx->pReqStatusUserData = NULL;
29320 pWDICtx->pfncRspCB = NULL;
29321 /*-------------------------------------------------------------------------
29322 Send Stop batch scan indication to HAL
29323 -------------------------------------------------------------------------*/
29324 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
29325 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus:WDI_STATUS_SUCCESS_SYNC;
29326}
29327
29328/**
29329 @brief This API is called to trigger batch scan results from FW
29330
29331 @param pWDICtx: pointer to the WLAN DAL context
29332 pEventData: pointer to the event information structure
29333
29334 @see
29335 @return Result of the function call
29336*/
29337WDI_Status
29338WDI_ProcessTriggerBatchScanResultInd
29339(
29340 WDI_ControlBlockType* pWDICtx,
29341 WDI_EventInfoType* pEventData
29342)
29343{
29344 WDI_Status wdiStatus;
29345 wpt_uint8* pSendBuffer = NULL;
29346 wpt_uint16 usDataOffset = 0;
29347 wpt_uint16 usSendSize = 0;
29348 tHalBatchScanTriggerResultParam *pHalInd = NULL;
29349 WDI_TriggerBatchScanResultIndType *pWdiInd = NULL;
29350
29351
29352 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
29353
29354 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
29355 "%s", __func__);
29356
29357 /*-------------------------------------------------------------------------
29358 Sanity check
29359 -------------------------------------------------------------------------*/
29360
29361 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
29362 {
29363 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
29364 "%s: Invalid parameters", __func__);
29365 WDI_ASSERT(0);
29366 return WDI_STATUS_E_FAILURE;
29367 }
29368 pWdiInd = (WDI_TriggerBatchScanResultIndType *)pEventData->pEventData;
29369 /*-----------------------------------------------------------------------
29370 Get message buffer
29371 -----------------------------------------------------------------------*/
29372
29373 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
29374 WDI_TRIGGER_BATCH_SCAN_RESULT_IND,
29375 sizeof(tHalBatchScanTriggerResultParam),
29376 &pSendBuffer, &usDataOffset, &usSendSize))||
29377 ( usSendSize < (usDataOffset + sizeof(tHalBatchScanTriggerResultParam))))
29378 {
29379 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
29380 "Unable to get send buffer in stop batch scan ind %p ",
29381 pEventData);
29382 WDI_ASSERT(0);
29383 return WDI_STATUS_E_FAILURE;
29384 }
29385
29386 pHalInd = (tHalBatchScanTriggerResultParam *)(pSendBuffer + usDataOffset);
29387 pHalInd->param = pWdiInd->param;
29388
29389 pWDICtx->pReqStatusUserData = NULL;
29390 pWDICtx->pfncRspCB = NULL;
29391 /*-------------------------------------------------------------------------
29392 Send trigger batch scan result indication to HAL
29393 -------------------------------------------------------------------------*/
29394 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
29395 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus:WDI_STATUS_SUCCESS_SYNC;
29396}
29397
29398
29399/**
29400 @brief Process set batch scan response from FW
29401
29402 @param pWDICtx: pointer to the WLAN DAL context
29403 pEventData: pointer to the event information structure
29404
29405 @see
29406 @return Result of the function call
29407*/
29408WDI_Status
29409WDI_ProcessSetBatchScanRsp
29410(
29411 WDI_ControlBlockType* pWDICtx,
29412 WDI_EventInfoType* pEventData
29413)
29414{
29415 WDI_SetBatchScanCb wdiSetBatchScanCb;
29416 WDI_SetBatchScanRspType *pSetBatchScanRsp;
29417
29418 tHalBatchScanSetRspParam *pHalSetBatchScanRsp;
29419 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
29420
29421 /*sanity check*/
29422 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
29423 ( NULL == pEventData->pEventData))
29424 {
29425 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
29426 "%s: Invalid parameters", __func__);
29427 WDI_ASSERT(0);
29428 return WDI_STATUS_E_FAILURE;
29429 }
29430
29431 wdiSetBatchScanCb = (WDI_SetBatchScanCb)pWDICtx->pfncRspCB;
29432 if ( NULL == wdiSetBatchScanCb)
29433 {
29434 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
29435 "%s: call back function is NULL", __func__);
29436 WDI_ASSERT(0);
29437 return WDI_STATUS_E_FAILURE;
29438 }
29439
29440 pSetBatchScanRsp = wpalMemoryAllocate(sizeof(WDI_SetBatchScanRspType));
29441
29442 if (NULL == pSetBatchScanRsp)
29443 {
29444 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080029445 "Failed to allocate memory in set batch scan response %p %p %p ",
Rajeev79dbe4c2013-10-05 11:03:42 +053029446 pWDICtx, pEventData, pEventData->pEventData);
29447 WDI_ASSERT(0);
29448 return WDI_STATUS_E_FAILURE;
29449 }
29450
29451 /*extract response and send it to UMAC*/
29452 pHalSetBatchScanRsp = (tHalBatchScanSetRspParam *)pEventData->pEventData;
29453
29454 pSetBatchScanRsp->nScansToBatch = pHalSetBatchScanRsp->supportedMscan;
29455
29456 /*Notify UMAC*/
29457 wdiSetBatchScanCb(pSetBatchScanRsp, pWDICtx->pRspCBUserData);
29458
29459 wpalMemoryFree(pSetBatchScanRsp);
29460
29461 return WDI_STATUS_SUCCESS;
29462}/*WDI_ProcessSetBatchScanRsp*/
29463
29464/**
29465 @brief Process batch scan result indication from FW
29466
29467 @param pWDICtx: pointer to the WLAN DAL context
29468 pEventData: pointer to the event information structure
29469
29470 @see
29471 @return Result of the function call
29472*/
29473WDI_Status
29474WDI_ProcessBatchScanResultInd
29475(
29476 WDI_ControlBlockType* pWDICtx,
29477 WDI_EventInfoType* pEventData
29478)
29479{
29480 void *pBatchScanResultInd;
29481 WDI_LowLevelIndType wdiInd;
29482 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
29483
29484 /*sanity check*/
29485 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
29486 ( NULL == pEventData->pEventData))
29487 {
29488 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
29489 "%s: Invalid parameters", __func__);
29490 WDI_ASSERT(0);
29491 return WDI_STATUS_E_FAILURE;
29492 }
29493
29494 /*extract response and send it to UMAC*/
29495 pBatchScanResultInd = (void *)pEventData->pEventData;
29496
29497 /*Fill in the indication parameters*/
29498 wdiInd.wdiIndicationType = WDI_BATCH_SCAN_RESULT_IND;
29499
29500 wdiInd.wdiIndicationData.pBatchScanResult = pBatchScanResultInd;
29501
29502 /*Notify UMAC*/
29503 if (pWDICtx->wdiLowLevelIndCB)
29504 {
29505 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
29506 }
29507 else
29508 {
29509 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
29510 "%s: WDILowLevelIndCb is null", __func__);
29511 WDI_ASSERT(0);
29512 return WDI_STATUS_E_FAILURE;
29513 }
29514
29515 return WDI_STATUS_SUCCESS;
29516} /*End of WDI_ProcessBatchScanResultInd*/
29517
29518/**
29519 @brief WDI_ProcessSetBatchScanReq -
29520 Set batch scan request to FW
29521
29522 @param pWDICtx : wdi context
29523 pEventData : indication data
29524
29525 @see
29526 @return none
29527*/
29528WDI_Status WDI_ProcessSetBatchScanReq
29529(
29530 WDI_ControlBlockType* pWDICtx,
29531 WDI_EventInfoType* pEventData
29532)
29533{
29534 WDI_SetBatchScanReqType *pWdiReq;
29535 WDI_Status wdiStatus;
29536 wpt_uint8* pSendBuffer = NULL;
29537 wpt_uint16 usDataOffset = 0;
29538 wpt_uint16 usSendSize = 0;
29539 tHalBatchScanSetParams *pHalReq;
29540 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
29541
29542 /*sanity check*/
29543 if ((NULL == pEventData) || (NULL == pEventData->pEventData))
29544 {
29545 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
29546 "%s: Invalid parameters in set batch scan request", __func__);
29547 WDI_ASSERT(0);
29548 return WDI_STATUS_E_FAILURE;
29549 }
29550
29551
29552 pWdiReq = (WDI_SetBatchScanReqType *)pEventData->pEventData;
29553
29554
29555 /*get message buffer*/
29556 if ((WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(pWDICtx,
29557 WDI_SET_BATCH_SCAN_REQ,
29558 sizeof(tHalBatchScanSetParams),
29559 &pSendBuffer, &usDataOffset, &usSendSize))||
29560 (usSendSize < (usDataOffset + sizeof(tHalBatchScanSetParams))))
29561 {
29562 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
29563 "Unable to get send buffer for SET_BATCH_SCAN_REQ ");
29564 WDI_ASSERT(0);
29565 return WDI_STATUS_E_FAILURE;
29566 }
29567
29568 pHalReq = (tHalBatchScanSetParams *)(pSendBuffer + usDataOffset);
29569
29570 pHalReq->rtt = pWdiReq->rtt;
29571 pHalReq->rfBand = pWdiReq->rfBand;
29572 pHalReq->bestNetworks = pWdiReq->bestNetwork;
29573 pHalReq->scanInterval = pWdiReq->scanFrequency;
29574 pHalReq->numScan2Batch = pWdiReq->numberOfScansToBatch;
29575
29576 /*send set batch scan request to fw*/
29577 pWDICtx->pfncRspCB = pEventData->pCBfnc;
29578 pWDICtx->pReqStatusUserData = pEventData->pUserData;
29579
29580 wdiStatus = WDI_SendMsg(pWDICtx, pSendBuffer,
29581 usSendSize, pWDICtx->pfncRspCB,
29582 pWDICtx->pReqStatusUserData,
29583 WDI_SET_BATCH_SCAN_RESP);
29584
29585 return wdiStatus;
29586}
29587
29588/**
29589 @brief WDI_SetBatchScanReq
29590 This API is called to set batch scan request in FW
29591
29592 @param pBatchScanReqParam : pointer to set batch scan re param
29593 usrData : Client context
29594 setBatchScanRspCb : set batch scan resp callback
29595 @see
29596 @return SUCCESS or FAIL
29597*/
29598WDI_Status WDI_SetBatchScanReq
29599(
29600 void *pBatchScanReqParam,
29601 void *usrData,
29602 WDI_SetBatchScanCb setBatchScanRspCb
29603)
29604{
29605 WDI_EventInfoType wdiEventData;
29606
29607 /*sanity check*/
29608 if (eWLAN_PAL_FALSE == gWDIInitialized)
29609 {
29610 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
29611 "WDI API call before module is initialized - Fail request");
29612
29613 return WDI_STATUS_E_NOT_ALLOWED;
29614 }
29615
29616 /* fill in event data and post to the main FSM */
29617 wdiEventData.wdiRequest = WDI_SET_BATCH_SCAN_REQ;
29618 wdiEventData.pEventData = pBatchScanReqParam;
29619 wdiEventData.uEventDataSize = sizeof(WDI_SetBatchScanReqType);
29620 wdiEventData.pCBfnc = setBatchScanRspCb;
29621 wdiEventData.pUserData = usrData;
29622
29623 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
29624}
29625
29626/**
29627 @brief WDI_StopbatchScanInd: Send stop batch scan indication to FW
29628
29629 @param None
29630
29631 @see
29632
29633 @return Status of the request
29634*/
29635WDI_Status
29636WDI_StopBatchScanInd(WDI_StopBatchScanIndType *pWdiReq)
29637{
29638 WDI_EventInfoType wdiEventData;
29639
29640 /*-------------------------------------------------------------------------
29641 Sanity Check
29642 ------------------------------------------------------------------------*/
29643 if (eWLAN_PAL_FALSE == gWDIInitialized)
29644 {
29645 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
29646 "WDI API call before module is initialized - Fail request!");
29647
29648 return WDI_STATUS_E_NOT_ALLOWED;
29649 }
29650
29651 /*-------------------------------------------------------------------------
29652 Fill in Event data and post to the Main FSM
29653 ------------------------------------------------------------------------*/
29654 wdiEventData.wdiRequest = WDI_STOP_BATCH_SCAN_IND;
29655 wdiEventData.pEventData = pWdiReq;
29656 wdiEventData.uEventDataSize = sizeof(WDI_StopBatchScanIndType);
29657 wdiEventData.pCBfnc = NULL;
29658 wdiEventData.pUserData = NULL;
29659
29660 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
29661}
29662
29663/**
29664 @brief WDI_TriggerBatchScanResultInd
29665 This API is called to pull batch scan result from FW
29666
29667 @param pWdiReq : pointer to get batch scan ind param
29668 @see
29669 @return SUCCESS or FAIL
29670*/
29671WDI_Status WDI_TriggerBatchScanResultInd
29672(
29673 WDI_TriggerBatchScanResultIndType *pWdiReq
29674)
29675{
29676 WDI_EventInfoType wdiEventData;
29677 /*-------------------------------------------------------------------------
29678 Sanity Check
29679 ------------------------------------------------------------------------*/
29680 if (eWLAN_PAL_FALSE == gWDIInitialized)
29681 {
29682 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
29683 "WDI API call before module is initialized - Fail request!");
29684
29685 return WDI_STATUS_E_NOT_ALLOWED;
29686 }
29687
29688 /*-------------------------------------------------------------------------
29689 Fill in Event data and post to the Main FSM
29690 ------------------------------------------------------------------------*/
29691 wdiEventData.wdiRequest = WDI_TRIGGER_BATCH_SCAN_RESULT_IND;
29692 wdiEventData.pEventData = pWdiReq;
29693 wdiEventData.uEventDataSize = sizeof(WDI_TriggerBatchScanResultIndType);
29694 wdiEventData.pCBfnc = NULL;
29695 wdiEventData.pUserData = NULL;
29696
29697 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
29698}
Rajeev79dbe4c2013-10-05 11:03:42 +053029699#endif /*FEATURE_WLAN_BATCH_SCAN*/
Leo Chang0b0e45a2013-12-15 15:18:55 -080029700
Manjunathappa Prakash86f78ca2014-02-10 18:09:15 -080029701/**
29702 @brief Process Update Channel Rsp function (called when a response is
29703 being received over the bus from HAL)
29704
29705 @param pWDICtx: pointer to the WLAN DAL context
29706 pEventData: pointer to the event information structure
29707
29708 @see
29709 @return Result of the function call
29710*/
29711WDI_Status
29712WDI_ProcessUpdateChanRsp
29713(
29714 WDI_ControlBlockType* pWDICtx,
29715 WDI_EventInfoType* pEventData
29716)
29717{
29718 WDI_Status wdiStatus;
29719 eHalStatus halStatus;
29720 WDI_UpdateChannelRspCb wdiUpdateChanRspCb;
29721 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
29722
29723 /*-------------------------------------------------------------------------
29724 Sanity check
29725 -------------------------------------------------------------------------*/
29726 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
29727 ( NULL == pEventData->pEventData))
29728 {
29729 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
29730 "%s: Invalid parameters", __func__);
29731 WDI_ASSERT(0);
29732 return WDI_STATUS_E_FAILURE;
29733 }
29734
29735 wdiUpdateChanRspCb = (WDI_UpdateChannelRspCb)pWDICtx->pfncRspCB;
29736
29737 /*-------------------------------------------------------------------------
29738 Extract response and send it to UMAC
29739 -------------------------------------------------------------------------*/
29740 halStatus = *((eHalStatus*)pEventData->pEventData);
29741 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
29742
29743 wdiUpdateChanRspCb( wdiStatus, pWDICtx->pRspCBUserData);
29744
29745 return WDI_STATUS_SUCCESS;
29746}/*WDI_ProcessUpdateChanRsp*/
29747
Leo Chang0b0e45a2013-12-15 15:18:55 -080029748#ifdef FEATURE_WLAN_CH_AVOID
29749/**
29750 @brief v -WDI_ProcessChAvoidInd
29751
29752
29753 @param pWDICtx : wdi context
29754 pEventData : indication data
29755 @see
29756 @return Result of the function call
29757*/
29758WDI_Status
29759WDI_ProcessChAvoidInd
29760(
29761 WDI_ControlBlockType* pWDICtx,
29762 WDI_EventInfoType* pEventData
29763)
29764{
29765 WDI_LowLevelIndType wdiInd;
29766 tHalAvoidFreqRangeIndParams chAvoidIndicationParam;
29767 wpt_uint16 rangeLoop;
29768 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
29769
29770 /*-------------------------------------------------------------------------
29771 Sanity check
29772 -------------------------------------------------------------------------*/
29773 if ((NULL == pWDICtx) || (NULL == pEventData) ||
29774 (NULL == pEventData->pEventData))
29775 {
29776 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
29777 "%s: Invalid parameters", __func__);
29778 WDI_ASSERT(0);
29779 return WDI_STATUS_E_FAILURE;
29780 }
29781
29782 /*-------------------------------------------------------------------------
29783 Extract indication and send it to UMAC
29784 -------------------------------------------------------------------------*/
29785 wpalMemoryCopy(&chAvoidIndicationParam,
29786 pEventData->pEventData,
29787 sizeof(tHalAvoidFreqRangeIndParams));
29788
29789 wdiInd.wdiIndicationType = WDI_CH_AVOID_IND;
29790 wdiInd.wdiIndicationData.wdiChAvoidInd.avoidRangeCount =
29791 chAvoidIndicationParam.avoidCnt;
29792 wpalMemoryCopy((void *)wdiInd.wdiIndicationData.wdiChAvoidInd.avoidFreqRange,
29793 (void *)chAvoidIndicationParam.avoidRange,
29794 wdiInd.wdiIndicationData.wdiChAvoidInd.avoidRangeCount *
29795 sizeof(WDI_ChAvoidFreqType));
29796 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
29797 "%s: band count %d", __func__,
29798 wdiInd.wdiIndicationData.wdiChAvoidInd.avoidRangeCount);
29799 for (rangeLoop = 0; rangeLoop < chAvoidIndicationParam.avoidCnt; rangeLoop++)
29800 {
29801 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
29802 "%s: srart freq %d, end freq %d", __func__,
29803 wdiInd.wdiIndicationData.wdiChAvoidInd.avoidFreqRange[rangeLoop].startFreq,
29804 wdiInd.wdiIndicationData.wdiChAvoidInd.avoidFreqRange[rangeLoop].endFreq);
29805 }
29806
29807 /*Notify UMAC*/
29808 if (pWDICtx->wdiLowLevelIndCB)
29809 {
29810 pWDICtx->wdiLowLevelIndCB(&wdiInd, pWDICtx->pIndUserData);
29811 }
29812
29813 return WDI_STATUS_SUCCESS;
29814}
29815#endif /* FEATURE_WLAN_CH_AVOID */
29816
Sandeep Puligilla8b8b74b2014-02-10 16:39:05 +053029817/**
29818 @brief Process OBSS Start scan result indication
29819
29820 @param pWDICtx: pointer to the WLAN DAL context
29821 pEventData: pointer to the event information structure
29822
29823 @see
29824 @return Result of the function call
29825*/
29826WDI_Status
29827WDI_ProcessHT40OBSSScanInd
29828(
29829 WDI_ControlBlockType* pWDICtx,
29830 WDI_EventInfoType* pEventData
29831)
29832{
29833 wpt_uint8* pSendBuffer = NULL;
29834 wpt_uint16 usDataOffset = 0;
29835 wpt_uint16 usSendSize = 0;
29836 wpt_uint16 usLen = 0;
29837 WDI_HT40ObssScanIndType *pwdiHT40OBSSScanInd = NULL;
29838 WDI_HT40ObssScanParamsType *pwdiHT40OBSSScanParams = NULL;
29839 tHT40ObssScanIndType* pHT40ObssScanInd = NULL;
29840 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
29841
29842 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
29843
29844 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
29845 "%s", __func__);
29846
29847 /*-------------------------------------------------------------------------
29848 Sanity check
29849 -------------------------------------------------------------------------*/
29850 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
29851 {
29852 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
29853 "%s: Invalid parameters", __func__);
29854 WDI_ASSERT(0);
29855 return WDI_STATUS_E_FAILURE;
29856 }
29857 pwdiHT40OBSSScanParams = (WDI_HT40ObssScanParamsType*)pEventData->pEventData;
29858
29859 pwdiHT40OBSSScanInd = &pwdiHT40OBSSScanParams->wdiHT40ObssScanParam;
29860 /*-----------------------------------------------------------------------
29861 Get message buffer
29862 -----------------------------------------------------------------------*/
29863
29864 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
29865 WDI_START_HT40_OBSS_SCAN_IND,
29866 sizeof(tHT40ObssScanIndType),
29867 &pSendBuffer, &usDataOffset, &usSendSize))||
29868 ( usSendSize < (usDataOffset + usLen )))
29869 {
29870 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
29871 "Unable to get send buffer in HT40 OBSS Start req %p ",
29872 pEventData);
29873 WDI_ASSERT(0);
29874 return WDI_STATUS_E_FAILURE;
29875 }
29876 pHT40ObssScanInd = (tHT40ObssScanIndType*)(pSendBuffer+usDataOffset);
29877 pHT40ObssScanInd->cmdType = pwdiHT40OBSSScanInd->cmdType;
29878 pHT40ObssScanInd->scanType = pwdiHT40OBSSScanInd->scanType;
29879 pHT40ObssScanInd->OBSSScanPassiveDwellTime =
29880 pwdiHT40OBSSScanInd->OBSSScanPassiveDwellTime;
29881 pHT40ObssScanInd->OBSSScanActiveDwellTime =
29882 pwdiHT40OBSSScanInd->OBSSScanActiveDwellTime;
29883 pHT40ObssScanInd->BSSChannelWidthTriggerScanInterval =
29884 pwdiHT40OBSSScanInd->BSSChannelWidthTriggerScanInterval;
29885 pHT40ObssScanInd->OBSSScanPassiveTotalPerChannel =
29886 pwdiHT40OBSSScanInd->OBSSScanPassiveTotalPerChannel;
29887 pHT40ObssScanInd->OBSSScanActiveTotalPerChannel =
29888 pwdiHT40OBSSScanInd->OBSSScanActiveTotalPerChannel;
29889 pHT40ObssScanInd->BSSWidthChannelTransitionDelayFactor =
29890 pwdiHT40OBSSScanInd->BSSWidthChannelTransitionDelayFactor;
29891 pHT40ObssScanInd->OBSSScanActivityThreshold =
29892 pwdiHT40OBSSScanInd->OBSSScanActivityThreshold;
29893 pHT40ObssScanInd->selfStaIdx =
29894 pwdiHT40OBSSScanInd->selfStaIdx;
29895 pHT40ObssScanInd->bssIdx =
29896 pwdiHT40OBSSScanInd->bssIdx;
29897 pHT40ObssScanInd->fortyMHZIntolerent =
29898 pwdiHT40OBSSScanInd->fortyMHZIntolerent;
29899 pHT40ObssScanInd->channelCount =
29900 pwdiHT40OBSSScanInd->channelCount;
29901
29902 wpalMemoryCopy(pHT40ObssScanInd->channels, pwdiHT40OBSSScanInd->channels,
29903 WDI_ROAM_SCAN_MAX_CHANNELS);
29904 pHT40ObssScanInd->ieFieldLen =
29905 pwdiHT40OBSSScanInd->ieFieldLen;
29906
29907 wpalMemoryCopy(pHT40ObssScanInd->ieField, pwdiHT40OBSSScanInd->ieField,
29908 WDI_ROAM_SCAN_MAX_PROBE_SIZE);
29909 pWDICtx->pReqStatusUserData = NULL;
29910 pWDICtx->pfncRspCB = NULL;
29911
29912 pWDICtx->wdiReqStatusCB = pwdiHT40OBSSScanParams->wdiReqStatusCB;
29913 pWDICtx->pReqStatusUserData = pwdiHT40OBSSScanParams->pUserData;
29914
29915 /*-------------------------------------------------------------------------
29916 Send OBSS Start Indication to HAL
29917 -------------------------------------------------------------------------*/
29918 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
29919 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus:WDI_STATUS_SUCCESS_SYNC;
29920
29921} /*End of WDI_ProcessHT40OBSSStartScanInd*/
29922
29923
29924/**
29925 @brief wdi_HT40OBSSScanInd
29926 This API is called to start OBSS scan
29927
29928 @param pWdiReq : pointer to get ind param
29929 @see
29930 @return SUCCESS or FAIL
29931*/
29932WDI_Status WDI_HT40OBSSScanInd
29933(
29934 WDI_HT40ObssScanParamsType *pWdiReq
29935)
29936{
29937 WDI_EventInfoType wdiEventData;
29938
29939 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
29940 "%s", __func__);
29941 /*-------------------------------------------------------------------------
29942 Sanity Check
29943 ------------------------------------------------------------------------*/
29944 if (eWLAN_PAL_FALSE == gWDIInitialized)
29945 {
29946 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
29947 "WDI API call before module is initialized - Fail request!");
29948
29949 return WDI_STATUS_E_NOT_ALLOWED;
29950 }
29951
29952 /*-------------------------------------------------------------------------
29953 Fill in Event data and post to the Main FSM
29954 ------------------------------------------------------------------------*/
29955 wdiEventData.wdiRequest = WDI_START_HT40_OBSS_SCAN_IND;
29956 wdiEventData.pEventData = pWdiReq;
29957 wdiEventData.uEventDataSize = sizeof(WDI_HT40ObssScanParamsType);
29958 wdiEventData.pCBfnc = NULL;
29959 wdiEventData.pUserData = NULL;
29960
29961
29962 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
29963}
29964
29965/**
29966 @brief Process OBSS Stop scan result
29967
29968 @param pWDICtx: pointer to the WLAN DAL context
29969 pEventData: pointer to the event information structure
29970
29971 @see
29972 @return Result of the function call
29973*/
29974WDI_Status
29975WDI_ProcessHT40OBSSStopScanInd
29976(
29977 WDI_ControlBlockType* pWDICtx,
29978 WDI_EventInfoType* pEventData
29979)
29980{
29981 wpt_uint8* pSendBuffer = NULL;
29982 wpt_uint16 usDataOffset = 0;
29983 wpt_uint16 usSendSize = 0;
29984 wpt_uint16 usLen = 0;
29985 wpt_uint8 *wdiBssIdx = 0;
29986 tANI_U8 *bssIdx = 0;
29987 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
29988
29989 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
29990
29991 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
29992 "%s", __func__);
29993
29994 /*-------------------------------------------------------------------------
29995 Sanity check
29996 -------------------------------------------------------------------------*/
29997 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
29998 {
29999 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
30000 "%s: Invalid parameters", __func__);
30001 WDI_ASSERT(0);
30002 return WDI_STATUS_E_FAILURE;
30003 }
30004 bssIdx = (wpt_uint8*)pEventData->pEventData;
30005 /*-----------------------------------------------------------------------
30006 Get message buffer
30007 -----------------------------------------------------------------------*/
30008
30009 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
30010 WDI_STOP_HT40_OBSS_SCAN_IND,
30011 sizeof(tANI_U8),
30012 &pSendBuffer, &usDataOffset, &usSendSize))||
30013 ( usSendSize < (usDataOffset + usLen )))
30014 {
30015 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
30016 "Unable to get send buffer in HT40 OBSS Start req %p ",
30017 pEventData);
30018 WDI_ASSERT(0);
30019 return WDI_STATUS_E_FAILURE;
30020 }
30021
30022 bssIdx = (tANI_U8*)pSendBuffer+usDataOffset;
30023 bssIdx = wdiBssIdx;
30024
30025 pWDICtx->pReqStatusUserData = NULL;
30026 pWDICtx->pfncRspCB = NULL;
30027
30028 /*-------------------------------------------------------------------------
30029 Send DHCP Start Indication to HAL
30030 -------------------------------------------------------------------------*/
30031 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
30032 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus:WDI_STATUS_SUCCESS_SYNC;
30033} /*End of WDI_ProcessHT40OBSSStopScanInd*/
30034
30035/**
30036 @brief WDI_HT40OBSSStopScanInd
30037 This API is called to start OBSS scan
30038 @param pWdiReq : pointer to get ind param
30039 @see
30040 @return SUCCESS or FAIL
30041*/
30042WDI_Status WDI_HT40OBSSStopScanInd
30043(
30044 wpt_uint8 bssIdx
30045)
30046{
30047 WDI_EventInfoType wdiEventData;
30048
30049 /*-------------------------------------------------------------------------
30050 Sanity Check
30051 ------------------------------------------------------------------------*/
30052 if (eWLAN_PAL_FALSE == gWDIInitialized)
30053 {
30054 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
30055 "WDI API call before module is initialized - Fail request!");
30056
30057 return WDI_STATUS_E_NOT_ALLOWED;
30058 }
30059
30060 /*-------------------------------------------------------------------------
30061 Fill in Event data and post to the Main FSM
30062 ------------------------------------------------------------------------*/
30063 wdiEventData.wdiRequest = WDI_STOP_HT40_OBSS_SCAN_IND;
30064 wdiEventData.pEventData = &bssIdx;
30065 wdiEventData.uEventDataSize = sizeof(wpt_uint8);
30066 wdiEventData.pCBfnc = NULL;
30067 wdiEventData.pUserData = NULL;
30068
30069 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
30070}
30071